Merge remote-tracking branch 'origin/main'

This commit is contained in:
@jyuhsin
2025-07-02 20:03:27 +08:00
17 changed files with 85 additions and 44 deletions
@@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.zhgh.dayofficework.article.models.Article;
import com.budwk.app.zhgh.dayofficework.article.service.ArticleAnalysisService; import com.budwk.app.zhgh.dayofficework.article.service.ArticleAnalysisService;
import com.budwk.app.zhgh.dayofficework.article.service.ArticleService; import com.budwk.app.zhgh.dayofficework.article.service.ArticleService;
import com.budwk.app.zhgh.dayofficework.article.vo.ArticleAnalysisOverviewVO; import com.budwk.app.zhgh.dayofficework.article.vo.ArticleAnalysisOverviewVO;
@@ -94,7 +94,7 @@ public class ArticleBranchUnionApprovalController {
cnd.and(Cnd.likeEX("info.title",pageForm.getTitle())); cnd.and(Cnd.likeEX("info.title",pageForm.getTitle()));
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){ if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.desc("info.createdAt"); cnd.desc("info.submitTime");
}else{ }else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
@@ -93,7 +93,7 @@ public class ArticleClubApprovalController {
cnd.and(Cnd.likeEX("info.title",pageForm.getTitle())); cnd.and(Cnd.likeEX("info.title",pageForm.getTitle()));
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){ if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.desc("info.createdAt"); cnd.desc("info.submitTime");
}else{ }else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
@@ -97,9 +97,12 @@ public class ArticleExamineController {
cnd.andEX("YEAR(info.submitTime)", "=", pageForm.getYear()); cnd.andEX("YEAR(info.submitTime)", "=", pageForm.getYear());
cnd.and(Cnd.likeEX("info.title", pageForm.getTitle())); cnd.and(Cnd.likeEX("info.title", pageForm.getTitle()));
cnd.andEX("info.unionId","=",pageForm.getUnionId());
cnd.andEX("info.unitId","=",pageForm.getUnitId());
cnd.andEX("info.origin","=",pageForm.getOrigin());
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){ if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.desc("info.createdAt"); cnd.desc("info.submitTime");
}else{ }else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
@@ -97,9 +97,12 @@ public class ArticleFirstExamineController {
cnd.andEX("YEAR(info.submitTime)", "=", pageForm.getYear()); cnd.andEX("YEAR(info.submitTime)", "=", pageForm.getYear());
cnd.and(Cnd.likeEX("info.title", pageForm.getTitle())); cnd.and(Cnd.likeEX("info.title", pageForm.getTitle()));
cnd.andEX("info.unionId","=",pageForm.getUnionId());
cnd.andEX("info.origin","=",pageForm.getOrigin());
cnd.andEX("info.unitId","=",pageForm.getUnitId());
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){ if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.desc("info.createdAt"); cnd.desc("info.submitTime");
}else{ }else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
@@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.bpm.service.BpmService; import com.budwk.app.bpm.service.BpmService;
import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.AuthUtil;
@@ -76,6 +75,7 @@ public class ArticleMineController {
cnd.andEX("YEAR(info.submitTime)","=",pageForm.getYear()); cnd.andEX("YEAR(info.submitTime)","=",pageForm.getYear());
cnd.and(Cnd.likeEX("info.title",pageForm.getTitle())); cnd.and(Cnd.likeEX("info.title",pageForm.getTitle()));
cnd.desc("info.submitTime");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination<ArticleInfoPageVO> pageVO = articleService.listPageVO(pageForm, sql, ArticleInfoPageVO.class); Pagination<ArticleInfoPageVO> pageVO = articleService.listPageVO(pageForm, sql, ArticleInfoPageVO.class);
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.page.Pagination; import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.zhgh.dayofficework.article.param.ArticleInfoPageParam; import com.budwk.app.zhgh.dayofficework.article.param.ArticleInfoPageParam;
import com.budwk.app.zhgh.dayofficework.article.service.ArticleService; import com.budwk.app.zhgh.dayofficework.article.service.ArticleService;
import com.budwk.app.zhgh.dayofficework.article.vo.ArticleInfoPageVO; import com.budwk.app.zhgh.dayofficework.article.vo.ArticleInfoPageVO;
@@ -62,8 +63,14 @@ public class ArticleQueryController {
cnd.andEX("info.unionId", "=", pageForm.getUnionId()); cnd.andEX("info.unionId", "=", pageForm.getUnionId());
cnd.andEX("info.unitId", "=", pageForm.getUnitId()); cnd.andEX("info.unitId", "=", pageForm.getUnitId());
cnd.andEX("info.clubId", "=", pageForm.getClubId()); cnd.andEX("info.clubId", "=", pageForm.getClubId());
cnd.andEX("info.mode", "=", pageForm.getMode()); cnd.andEX("info.origin","=",pageForm.getOrigin());
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.desc("info.submitTime"); cnd.desc("info.submitTime");
}else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
}
cnd.groupBy("info.id"); cnd.groupBy("info.id");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination<ArticleInfoPageVO> pageVO = articleService.listPageVO(pageForm, sql, ArticleInfoPageVO.class); Pagination<ArticleInfoPageVO> pageVO = articleService.listPageVO(pageForm, sql, ArticleInfoPageVO.class);
@@ -9,7 +9,6 @@ import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.PageUtil; import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum; import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum;
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
import com.budwk.app.bpm.param.BpmTaskApprovalParam; import com.budwk.app.bpm.param.BpmTaskApprovalParam;
import com.budwk.app.bpm.service.BpmService; import com.budwk.app.bpm.service.BpmService;
import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.AuthUtil;
@@ -93,11 +92,11 @@ public class ArticleSchoolUnionApprovalController {
cnd.andEX("YEAR(info.submitTime)","=",pageForm.getYear()); cnd.andEX("YEAR(info.submitTime)","=",pageForm.getYear());
cnd.and(Cnd.likeEX("info.title",pageForm.getTitle())); cnd.and(Cnd.likeEX("info.title",pageForm.getTitle()));
cnd.andEX("info.unionId","=",pageForm.getUnionId()); cnd.andEX("info.unionId","=",pageForm.getUnionId());
cnd.andEX("info.mode","=",pageForm.getMode());
cnd.andEX("info.unitId","=",pageForm.getUnitId()); cnd.andEX("info.unitId","=",pageForm.getUnitId());
cnd.andEX("info.origin","=",pageForm.getOrigin());
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){ if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.desc("info.createdAt"); cnd.desc("info.submitTime");
}else{ }else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy())); cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} }
@@ -116,9 +115,6 @@ public class ArticleSchoolUnionApprovalController {
approvalParam.getBpmTaskApprovalTypeEnum(); approvalParam.getBpmTaskApprovalTypeEnum();
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam); Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
List<String> assignments = new ArrayList<>(); List<String> assignments = new ArrayList<>();
// if(approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)){
//
// }
// 同意退回都到校工会投稿编辑人 // 同意退回都到校工会投稿编辑人
String schoolUnionApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_ARTICLE_ADMIN, Cnd.NEW()); String schoolUnionApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_ARTICLE_ADMIN, Cnd.NEW());
@@ -120,6 +120,11 @@ public class ArticleWriteController {
} else if (prevTask.getProcessTaskNodeCode() == 60) { } else if (prevTask.getProcessTaskNodeCode() == 60) {
variables.put("FINAL_EXAMINE_BACK", true); variables.put("FINAL_EXAMINE_BACK", true);
} }
// 重新赋值
assignments = new ArrayList<>();
String schoolUnionApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_ARTICLE_ADMIN, Cnd.NEW());
assignments.add(schoolUnionApprovalLoginName);
} }
} }
} }
@@ -27,6 +27,7 @@ public class ArticleInfoPageParam extends PageForm<Article> {
@ApiModelProperty("协会") @ApiModelProperty("协会")
private String clubId; private String clubId;
private String mode; @ApiModelProperty("稿件来源")
private String origin;
} }
@@ -4,10 +4,6 @@ import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.dayofficework.article.models.Article; import com.budwk.app.zhgh.dayofficework.article.models.Article;
import com.budwk.app.zhgh.dayofficework.article.vo.ArticleVO; import com.budwk.app.zhgh.dayofficework.article.vo.ArticleVO;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
public interface ArticleService extends BaseService<Article> { public interface ArticleService extends BaseService<Article> {
ArticleVO info(String id); ArticleVO info(String id);
@@ -11,7 +11,6 @@ import com.budwk.app.zhgh.dayofficework.article.vo.ArticleVO;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import java.util.List; import java.util.List;
@@ -47,6 +47,12 @@ const info = {
<span v-if="task.extVariable.processAgain===true">需要重新走流程</span> <span v-if="task.extVariable.processAgain===true">需要重新走流程</span>
</el-tag> </el-tag>
<el-tag v-if="task.extVariable.RESULT === 'PASS'" type="success" size="mini">同意</el-tag> <el-tag v-if="task.extVariable.RESULT === 'PASS'" type="success" size="mini">同意</el-tag>
<el-tag v-if="task.extVariable.RESULT === 'BACK_TO_CLUB'" type="danger" size="mini">
退回到协会
</el-tag>
<el-tag v-if="task.extVariable.RESULT === 'BACK_TO_UNION'" type="danger" size="mini">
退回到分工会
</el-tag>
</template> </template>
</div> </div>
</el-descriptions-item> </el-descriptions-item>
@@ -11,6 +11,21 @@ layout("/layouts/platform.html"){
<search-item label="标题"> <search-item label="标题">
<el-input v-model="pageForm.title" placeholder="标题" clearable></el-input> <el-input v-model="pageForm.title" placeholder="标题" clearable></el-input>
</search-item> </search-item>
<search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
<el-option v-for="item in unionOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</search-item>
<search-item label="所属单位:">
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
<el-option v-for="item in unitOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</search-item>
<search-item label="投稿来源:">
<el-select v-model="pageForm.origin" placeholder="请选择投稿来源" filterable clearable style="width: 100%">
<el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option>
</el-select>
</search-item>
</search> </search>
</el-card> </el-card>
<el-card shadow="never"> <el-card shadow="never">
@@ -120,7 +135,7 @@ layout("/layouts/platform.html"){
doApproval(result) { doApproval(result) {
this.formData.bpmTaskApprovalType = "DYNAMIC" this.formData.bpmTaskApprovalType = "DYNAMIC"
if (result === 'BACK_TO_START') { if (result === 'BACK_TO_START') {
this.$confirm('请确认投稿人重新提交后是否需要分工会主席再次审核', '提示', { this.$confirm('请确认投稿人重新提交后是否需要重新走审批流程', '提示', {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: '需要', confirmButtonText: '需要',
cancelButtonText: '不需要', cancelButtonText: '不需要',
@@ -180,6 +195,8 @@ layout("/layouts/platform.html"){
} }
}, },
created() { created() {
this.$businessTool.listUnit().then((res) => (this.unitOptions = res))
this.$businessTool.listUnion().then((res) => (this.unionOptions = res))
this.pageData() this.pageData()
} }
}) })
@@ -12,6 +12,21 @@ layout("/layouts/platform.html"){
<search-item label="标题"> <search-item label="标题">
<el-input v-model="pageForm.title" placeholder="标题" clearable></el-input> <el-input v-model="pageForm.title" placeholder="标题" clearable></el-input>
</search-item> </search-item>
<search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
<el-option v-for="item in unionOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</search-item>
<search-item label="所属单位:">
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
<el-option v-for="item in unitOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</search-item>
<search-item label="投稿来源:">
<el-select v-model="pageForm.origin" placeholder="请选择投稿来源" filterable clearable style="width: 100%">
<el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option>
</el-select>
</search-item>
</search> </search>
</el-card> </el-card>
<el-card shadow="never"> <el-card shadow="never">
@@ -76,7 +91,7 @@ layout("/layouts/platform.html"){
<el-button type="danger" @click="doApproval('BACK_TO_CLUB')" <el-button type="danger" @click="doApproval('BACK_TO_CLUB')"
v-if="currentRow.origin === 'ARTICLE_ORIGIN_CLUB'">退回到协会 v-if="currentRow.origin === 'ARTICLE_ORIGIN_CLUB'">退回到协会
</el-button> </el-button>
<el-button type="danger" @click="doApproval('REJECT')">拒绝</el-button> <!-- <el-button type="danger" @click="doApproval('REJECT')">拒绝</el-button>-->
<el-button type="primary" @click="doApproval('PASS')">通过</el-button> <el-button type="primary" @click="doApproval('PASS')">通过</el-button>
</el-row> </el-row>
</div> </div>
@@ -123,7 +138,7 @@ layout("/layouts/platform.html"){
this.formData.bpmTaskApprovalType = "DYNAMIC" this.formData.bpmTaskApprovalType = "DYNAMIC"
if (result === 'BACK_TO_START') { if (result === 'BACK_TO_START') {
this.$confirm('请确认投稿人重新提交后是否需要分工会主席再次审核', '提示', { this.$confirm('请确认投稿人重新提交后是否需要重新走审批流程', '提示', {
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
confirmButtonText: '需要', confirmButtonText: '需要',
cancelButtonText: '不需要', cancelButtonText: '不需要',
@@ -177,6 +192,8 @@ layout("/layouts/platform.html"){
} }
}, },
created() { created() {
this.$businessTool.listUnit().then((res) => (this.unitOptions = res))
this.$businessTool.listUnion().then((res) => (this.unionOptions = res))
this.pageData() this.pageData()
} }
}) })
@@ -28,7 +28,7 @@ layout("/layouts/platform.html"){
</el-select> </el-select>
</search-item> </search-item>
<search-item label="投稿来源:"> <search-item label="投稿来源:">
<el-select v-model="pageForm.mode" placeholder="请选择投稿来源" filterable clearable style="width: 100%"> <el-select v-model="pageForm.origin" placeholder="请选择投稿来源" filterable clearable style="width: 100%">
<el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option> <el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option>
</el-select> </el-select>
</search-item> </search-item>
@@ -67,7 +67,7 @@ layout("/layouts/platform.html"){
<script> <script>
<!--#include('../common/info.js'){}#--> <!--#include('../common/info.js'){}#-->
new Vue({ const vue = new Vue({
el: "#app", el: "#app",
store, store,
mixins: [initTableMixins], mixins: [initTableMixins],
@@ -80,11 +80,7 @@ layout("/layouts/platform.html"){
}, },
unionOptions: [], unionOptions: [],
unitOptions: [], unitOptions: [],
clubOptions: [], clubOptions: []
modeOptions: [
{ id: "CLUB", name: "协会投稿" },
{ id: "FGH", name: "分工会投稿" }
]
} }
}, },
methods: { methods: {
@@ -95,8 +91,8 @@ layout("/layouts/platform.html"){
} }
}, },
created() { created() {
this.$businessTool.listUnit().then((res) => (this.unionOptions = res)) this.$businessTool.listUnit().then((res) => (this.unitOptions = res))
this.$businessTool.listUnion().then((res) => (this.unitOptions = res)) this.$businessTool.listUnion().then((res) => (this.unionOptions = res))
this.$businessTool.listClub().then((res) => (this.clubOptions = res)) this.$businessTool.listClub().then((res) => (this.clubOptions = res))
this.pageData() this.pageData()
} }
@@ -23,7 +23,7 @@ layout("/layouts/platform.html"){
</el-select> </el-select>
</search-item> </search-item>
<search-item label="投稿来源:"> <search-item label="投稿来源:">
<el-select v-model="pageForm.mode" placeholder="请选择投稿来源" filterable clearable style="width: 100%"> <el-select v-model="pageForm.origin" placeholder="请选择投稿来源" filterable clearable style="width: 100%">
<el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option> <el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option>
</el-select> </el-select>
</search-item> </search-item>
@@ -110,11 +110,7 @@ layout("/layouts/platform.html"){
pageForm: { pageForm: {
approval: false approval: false
}, },
showApprovalForm: false, showApprovalForm: false
modeOptions: [
{ id: "CLUB", name: "协会投稿" },
{ id: "FGH", name: "分工会投稿" }
]
} }
}, },
methods: { methods: {
@@ -165,8 +161,8 @@ layout("/layouts/platform.html"){
} }
}, },
created() { created() {
this.$businessTool.listUnit().then((res) => (this.unionOptions = res)) this.$businessTool.listUnit().then((res) => (this.unitOptions = res))
this.$businessTool.listUnion().then((res) => (this.unitOptions = res)) this.$businessTool.listUnion().then((res) => (this.unionOptions = res))
this.pageData() this.pageData()
} }
}) })