This commit is contained in:
2026-03-18 09:37:20 +08:00
parent 9cd6ff467a
commit 776df3c36c
11 changed files with 54 additions and 35 deletions
@@ -7,7 +7,6 @@ import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.expression.ExpressionUtil; import cn.hutool.extra.expression.ExpressionUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.base.vo.LabelValueVO; import com.budwk.app.base.vo.LabelValueVO;
@@ -281,7 +280,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl<ProcessInstance>
List<ProcessTask> processTaskList = flowEngine.processTaskService().getDoingTaskList(processInstanceId, new String[]{}); List<ProcessTask> processTaskList = flowEngine.processTaskService().getDoingTaskList(processInstanceId, new String[]{});
// 拿到历史任务-按更新时间倒序 // 拿到历史任务-按更新时间倒序
List<ProcessTask> hisProcessTaskList = flowEngine.processTaskService().query(Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).desc(ProcessTask::getUpdatedAt)); List<ProcessTask> hisProcessTaskList = flowEngine.processTaskService().query(Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).desc(ProcessTask::getUpdatedAt));
processTaskList.forEach(task -> { processTaskList.forEach(task -> {
if (!vo.getActiveNodeNames().contains(task.getTaskName())) { if (!vo.getActiveNodeNames().contains(task.getTaskName())) {
vo.getActiveNodeNames().add(task.getTaskName()); vo.getActiveNodeNames().add(task.getTaskName());
recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, task.getTaskName(), vo); recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, task.getTaskName(), vo);
@@ -2,11 +2,14 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
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.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService; import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO; import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam; import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -24,7 +27,6 @@ import org.nutz.mvc.annotation.Param;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.Arrays;
@IocBean @IocBean
@At("/platform/proposal/query/comprehensive") @At("/platform/proposal/query/comprehensive")
@@ -65,6 +67,7 @@ public class ProposalQueryComprehensiveController {
GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames
FROM FROM
proposal_info info proposal_info info
LEFT JOIN vw_user us ON us.loginname=info.createUserLoginName
LEFT JOIN proposal_type type on type.id = info.typeId LEFT JOIN proposal_type type on type.id = info.typeId
LEFT JOIN proposal_merge mer ON mer.proposalId = info.id LEFT JOIN proposal_merge mer ON mer.proposalId = info.id
LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId
@@ -77,25 +80,25 @@ public class ProposalQueryComprehensiveController {
$condition $condition
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
if(ArrayUtil.isNotEmpty(pageForm.getOrigins())){ if (ArrayUtil.isNotEmpty(pageForm.getOrigins()) && ObjectUtil.isNotEmpty(pageForm.getCommonKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup(); SqlExpressionGroup seg = new SqlExpressionGroup();
// 案名 // 案名
if(ArrayUtil.contains(pageForm.getOrigins(),"name")){ if (ArrayUtil.contains(pageForm.getOrigins(), "name")) {
for (String keyword : pageForm.getCommonKeyword().split(" ")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) {
seg.orLike("info.name", keyword); seg.orLike("info.name", keyword);
} }
} }
// 案由 // 案由
if(ArrayUtil.contains(pageForm.getOrigins(),"brief")){ if (ArrayUtil.contains(pageForm.getOrigins(), "brief")) {
for (String keyword : pageForm.getCommonKeyword().split(" ")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) {
seg.orLike("info.brief", keyword); seg.orLike("info.brief", keyword);
} }
} }
// 提案人 // 提案人
if(ArrayUtil.contains(pageForm.getOrigins(),"createUserName")){ if (ArrayUtil.contains(pageForm.getOrigins(), "createUserName")) {
for (String keyword : pageForm.getCommonKeyword().split(" ")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) {
seg.orLike("info.createUserName", keyword); seg.orLike("info.createUserName", keyword);
seg.orLike("info.createUserLoginName", keyword); seg.orLike("info.createUserLoginName", keyword);
@@ -103,21 +106,24 @@ public class ProposalQueryComprehensiveController {
} }
// 答复内容 // 答复内容
if(ArrayUtil.contains(pageForm.getOrigins(),"answer")){ if (ArrayUtil.contains(pageForm.getOrigins(), "answer")) {
for (String keyword : pageForm.getCommonKeyword().split(" ")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) {
seg.orLike("JSON_EXTRACT(replyTask.variable,'$.tf_opinion')", keyword); seg.orLike("JSON_EXTRACT(replyTask.variable,'$.tf_opinion')", keyword);
} }
} }
if(!seg.isEmpty()){ if (!seg.isEmpty()) {
cnd.and(seg); cnd.and(seg);
} }
} }
if(StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())){ if (StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())) {
cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId()); cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId());
} }
ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm); ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm);
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(),RoleConstant.SCHOOL_UNION_PROPOSAL_ADMIN.name())){
cnd.and("us.unionId", "=", SecurityUtil.getUnionId());
}
cnd.groupBy("info.id"); cnd.groupBy("info.id");
sql.setCondition(cnd); sql.setCondition(cnd);
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
@@ -201,7 +201,7 @@ public class ProposalCommitteeFilingUnitController {
} }
for (ProcessInstance instance : instanceList) { for (ProcessInstance instance : instanceList) {
instance.setProcessDefineId(400L); instance.setProcessDefineId(399L);
} }
baseService.update(tasks); baseService.update(tasks);
@@ -1,24 +1,23 @@
package com.budwk.app.zhgh.democratic.proposal.interceptor; package com.budwk.app.zhgh.democratic.proposal.interceptor;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.flow.constant.FlowConst; import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.FlowInterceptor; import com.budwk.app.flow.engine.FlowInterceptor;
import com.budwk.app.flow.engine.core.Execution; import com.budwk.app.flow.engine.core.Execution;
import com.budwk.app.flow.engine.core.ServiceContext; import com.budwk.app.flow.engine.core.ServiceContext;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.models.Sys_role;
import com.budwk.app.sys.models.Sys_user; import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.sys.services.SysRoleService; import com.budwk.app.sys.services.SysRoleService;
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation; import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import java.util.List;
/** /**
* @ClassName ProposalDelegationPrefixInterceptor * @ClassName ProposalDelegationPrefixInterceptor
* @Author JyuHsin * @Author JyuHsin
@@ -77,6 +76,12 @@ public class ProposalDelegationPrefixInterceptor implements FlowInterceptor {
execution.getArgs().set(FlowConst.TASK_FORM_DATA_PREFIX + "delegationAudit", delegationAudit); execution.getArgs().set(FlowConst.TASK_FORM_DATA_PREFIX + "delegationAudit", delegationAudit);
ProcessTask processTask = execution.getProcessTask();
Dict dict = JSONUtil.toBean(processTask.getVariable(), Dict.class);
dict.set(FlowConst.TASK_FORM_DATA_PREFIX + "delegationAudit", delegationAudit);
processTask.setVariable(JSONUtil.toJsonStr(dict));
dao.update(processTask);
// 存储一些参数,方便查询副团长 // 存储一些参数,方便查询副团长
execution.getArgs().set("sessionId", proposalInfo.getSessionId()); execution.getArgs().set("sessionId", proposalInfo.getSessionId());
execution.getArgs().set("delegationId", proposalInfo.getDelegationId()); execution.getArgs().set("delegationId", proposalInfo.getDelegationId());
@@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil; import cn.hutool.http.HtmlUtil;
import com.budwk.app.base.param.ExportTableColumns; import com.budwk.app.base.param.ExportTableColumns;
@@ -192,25 +193,30 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
// 添加序号,去除富文本,获取附议人 // 添加序号,去除富文本,获取附议人
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
list.get(i).put("index", i + 1); list.get(i).put("index", i + 1);
list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")).replaceAll("&nbsp;"," "));
list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures")).replaceAll("&nbsp;"," "));
// 流程实例 // 流程实例
ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id"))); ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id")));
// 查询附议人信息 // 查询附议人信息
ProcessTask inviteTask = dao().fetch(ProcessTask.class, if (ObjectUtil.isNotEmpty(instance)){
Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()) ProcessTask inviteTask = dao().fetch(ProcessTask.class,
.and(ProcessTask::getTaskName, "=", "invite") Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId())
.and(ProcessTask::getTaskState, "in", .and(ProcessTask::getTaskName, "=", "invite")
List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) .and(ProcessTask::getTaskState, "in",
.desc(ProcessTask::getCreatedAt)); List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode()))
.desc(ProcessTask::getCreatedAt));
if (inviteTask != null) { if (inviteTask != null) {
NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable()); NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable());
List<NutMap> seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); List<NutMap> seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class);
list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); if (seconders != null){
list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(",")));
}
}
} }
} }
List<ExcelExportEntity> exportEntities = new ArrayList<>(); List<ExcelExportEntity> exportEntities = new ArrayList<>();
@@ -570,8 +576,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl<ProposalInfo> imp
// 添加序号,去除富文本,获取附议人 // 添加序号,去除富文本,获取附议人
for (int i = 0; i < list.size(); i++) { for (int i = 0; i < list.size(); i++) {
list.get(i).put("index", i + 1); list.get(i).put("index", i + 1);
list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")).replaceAll("&nbsp;"," "));
list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures")).replaceAll("&nbsp;"," "));
// 流程实例 // 流程实例
// ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id"))); // ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id")));
File diff suppressed because one or more lines are too long
@@ -14,7 +14,8 @@
<!-- 引入 core 包和对应 css--> <!-- 引入 core 包和对应 css-->
<script src="/assets/platform/plugins/logicflow/logic-flow.js"></script> <script src="/assets/platform/plugins/logicflow/logic-flow.js"></script>
<link rel="stylesheet" href="/assets/platform/plugins/logicflow/index.css"/> <link rel="stylesheet" href="/assets/platform/plugins/logicflow/index.css"/>
<script src="https://cdn.jsdelivr.net/npm/@logicflow/extension@2.1.4/dist/index.min.js"></script> <script src="/assets/platform/plugins/logicflow/index.min.js"></script>
<!-- <script src="https://cdn.jsdelivr.net/npm/@logicflow/extension@2.1.4/dist/index.min.js"></script>-->
<script src="/assets/platform/plugins/snaker/SnakerflowDesigner.umd.js"></script> <script src="/assets/platform/plugins/snaker/SnakerflowDesigner.umd.js"></script>
<style> <style>
#snaker-flow-preview { #snaker-flow-preview {
@@ -63,7 +63,7 @@ layout("/layouts/platform.html"){
size="small" size="small"
type="primary" type="primary"
@click="$refs.onePushFormalRef.onOpen(pageForm.teacherMeetId)" @click="$refs.onePushFormalRef.onOpen(pageForm.teacherMeetId)"
>候选录入 >候选委员录入
</el-button> </el-button>
</table-tool> </table-tool>
@@ -4,7 +4,7 @@ const DELEGATION_TWO_PUSH_FORMAL_DIALOG = {
<el-dialog <el-dialog
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
title="执委会\工会委员会候选人、经审委员会委员录入" title="候选委员录入"
width="70%" width="70%"
> >
@@ -4,7 +4,7 @@ const PUSH_FORMAL_DIALOG = {
<el-dialog <el-dialog
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
title="筹备组推选" title="正式委员录入"
width="70%" width="70%"
> >
@@ -209,7 +209,7 @@ layout("/layouts/platform.html"){
}, },
methods: { methods: {
doUpData(){ doUpData(){
this.$.axios.post(loc()+"/doUpData") this.$axios.post(loc()+"/doUpData")
}, },
openView(row) { openView(row) {
this.$refs.guava.edit(() => { this.$refs.guava.edit(() => {