diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java index a7965bbb..2deee254 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/listener/MyGlobalEventListener.java @@ -199,7 +199,8 @@ public class MyGlobalEventListener implements ActivitiEventListener { if (variables.containsKey("pass") && !isFirstNodeTask(approvalRecord) && (approvalRecord.getTaskName().contains("审批") || - approvalRecord.getTaskName().contains("会签"))) { + approvalRecord.getTaskName().contains("会签") || + approvalRecord.getTaskName().equals("部所联络人校对"))) { if ((Boolean) variables.get("pass")) { approvalRecord.setCommitFlag(CommitFlagEnum.PASS.getValue()); } else { diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java index 3cfb4d0a..d30b38b0 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAbolish/service/impl/ProcessEsAbolishServiceImpl.java @@ -11,17 +11,21 @@ import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.enums.StandardStateEnum; import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO; import com.jero.modules.activiti.process.esAbolish.service.ProcessEsAbolishService; import com.jero.modules.activiti.process.esAbolish.mapper.ProcessEsAbolishMapper; +import com.jero.modules.activiti.process.esEnable.entity.ProcessEsEnable; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssess; import com.jero.modules.activiti.process.projectassess.vo.ProcessProjectAssessVO; import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RuntimeService; @@ -60,6 +64,9 @@ public class ProcessEsAbolishServiceImpl extends ServiceImpl() + .eq(ProcessEsAbolish::getProcessInstanceId, processInstanceId)); + String standardNumber = data.getStandardNumber(); + LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() + .eq(LawsEnterpriseStandard::getStandardNumber, standardNumber)); + if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) { + throw new JeroBootException("该标准已废止,需要驳回重新选择"); + } + } ProcessEsAbolish data = abolishData.getData(); if (data != null) { updateById(data); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java index 0f725156..2fc65aae 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esArchive/service/impl/ProcessEsArchiveServiceImpl.java @@ -13,6 +13,7 @@ import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.enums.StandardStateEnum; import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.esAbolish.entity.ProcessEsAbolish; import com.jero.modules.activiti.process.esAbolish.entity.vo.ESAbolishDataVO; @@ -25,6 +26,8 @@ import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RuntimeService; @@ -63,6 +66,9 @@ public class ProcessEsArchiveServiceImpl extends ServiceImpl() + .eq(ProcessEsArchive::getProcessInstanceId, processInstanceId)); + String standardNumber = data.getStandardNumber(); + LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() + .eq(LawsEnterpriseStandard::getStandardNumber, standardNumber)); + if (StandardStateEnum.ARCHIVE.getStateValue().equals(es.getStandardState())) { + throw new JeroBootException("该标准已封存,需要驳回重新选择"); + } + if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) { + throw new JeroBootException("该标准已废止,需要驳回重新选择"); + } + } ProcessEsArchive data = archiveDataVO.getData(); if (data != null) { updateById(data); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java index aa6de2a0..addeb6cf 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esEnable/service/impl/ProcessEsEnableServiceImpl.java @@ -11,6 +11,7 @@ import com.jero.modules.activiti.process.common.entity.CommonVO; import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.enums.ProcessType; +import com.jero.modules.activiti.process.common.enums.StandardStateEnum; import com.jero.modules.activiti.process.common.service.ActFlowCommonService; import com.jero.modules.activiti.process.esArchive.entity.ProcessEsArchive; import com.jero.modules.activiti.process.esArchive.entity.vo.ESArchiveDataVO; @@ -22,6 +23,8 @@ import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.service.ProcessNodeLinkService; +import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; +import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RuntimeService; @@ -59,6 +62,9 @@ public class ProcessEsEnableServiceImpl extends ServiceImpl() + .eq(ProcessEsEnable::getProcessInstanceId, processInstanceId)); + String standardNumber = data.getStandardNumber(); + LawsEnterpriseStandard es = esService.getOne(new LambdaQueryWrapper() + .eq(LawsEnterpriseStandard::getStandardNumber, standardNumber)); + if (StandardStateEnum.CURRENTLY_EFFECTIVE.getStateValue().equals(es.getStandardState())) { + throw new JeroBootException("该标准已现行有效,需要驳回重新选择"); + } + if (StandardStateEnum.ABOLISH.getStateValue().equals(es.getStandardState())) { + throw new JeroBootException("该标准已废止,需要驳回重新选择"); + } + } ProcessEsEnable data = enableData.getData(); if (data != null) { updateById(data); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/service/ProcessProjectAssessService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/service/ProcessProjectAssessService.java index c6225f95..49f20290 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/service/ProcessProjectAssessService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/service/ProcessProjectAssessService.java @@ -462,6 +462,7 @@ public class ProcessProjectAssessService extends ServiceImpl variables = new HashMap<>(); variables.put(ProcessProjectAssessCommon.PASS, pass); taskService.complete(taskId, variables); + ThreadLocalUtil.remove(); } private void gbmzgjldspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { @@ -495,6 +496,7 @@ public class ProcessProjectAssessService extends ServiceImpl processInfoVO, ProcessDTO processDTO, boolean pass) { @@ -536,6 +538,7 @@ public class ProcessProjectAssessService extends ServiceImpl { +} \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermApprovalMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermApprovalMapper.xml new file mode 100644 index 00000000..9618cb3b --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermApprovalMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + id, create_by, create_time, update_by, update_time, org_code, del_flag, process_id, + responsible_unit_leader, term_id, assess_results, project_approval_flag + + \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermMapper.xml index fa0e8fbd..39dce910 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/xml/ProcessProjectStandardTermMapper.xml @@ -89,6 +89,7 @@ , ppstu.id term_user_id, ppstu.not_involved, + ppstu.module_owner, ppstu.assess_results, ppstu.description, ppstu.file_id, diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardService.java index 6eec88c7..73e5c11f 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardService.java @@ -3,12 +3,12 @@ package com.jero.modules.activiti.process.projectstandard.service; import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.SendMessageAPI; import com.jero.common.constant.CommonConstant; -import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.system.vo.DictModel; @@ -19,21 +19,22 @@ import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.process.common.common.DraftCommon; import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; +import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.dto.ProcessDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.projectassess.common.ProcessProjectAssessCommon; -import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessLink; -import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTerm; import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTermUser; import com.jero.modules.activiti.process.projectstandard.common.ProcessProjectStandardCommon; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm; +import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermApproval; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser; import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermMapper; import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermUserMapper; import com.jero.modules.activiti.process.projectstandard.vo.ProcessProjectStandardVO; import com.jero.modules.activiti.process.projectstandard.vo.StandardSelectionVO; import com.jero.modules.activiti.service.ProcessAllService; +import com.jero.modules.activiti.util.ThreadLocalUtil; import com.jero.modules.laws.common.mapper.LawsCommonMapper; import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO; @@ -41,6 +42,7 @@ import com.jero.modules.laws.standard.entity.LawsDomesticStandard; import com.jero.modules.laws.standard.entity.LawsOverseasStandard; import com.jero.modules.laws.standard.service.ILawsDomesticStandardService; import com.jero.modules.laws.standard.service.ILawsOverseasStandardService; +import com.jero.modules.projectLibrary.common.AssessCommon; import com.jero.modules.projectLibrary.vo.DecompositionOrderSourceVO; import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.service.ISarFileSplitInfoService; @@ -48,6 +50,7 @@ import org.activiti.engine.TaskService; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.task.Task; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -94,6 +97,8 @@ public class ProcessProjectStandardService extends ServiceImpl processProjectStandardTermUserList = new ArrayList<>(); @@ -138,27 +143,14 @@ public class ProcessProjectStandardService extends ServiceImpl processInfoVO, boolean b) { + public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = basicTaskInfoDTO.getTaskId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + String processInstanceId = processDTO.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + processInfoVO.setBusinessId(processAll.getProjectId()); + Task task = processDTO.getTask(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains(ProcessProjectStandardCommon.MKZRRFF_)){ + taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1); + } + processHandleService.updateApprovalRecord(processInfoVO); + switch (taskDefinitionKey) { + //模块责任人审批 + case ProcessProjectStandardCommon.MKZRRFF_: + mkzrrffApprove(processInfoVO, processDTO, pass); + break; + //部所主管级领导审批 + case ProcessProjectStandardCommon.BSZGJLDSP_: + bszgjldspApprove(processInfoVO, processDTO, pass); + break; + //法规工程师审批 + case ProcessProjectStandardCommon.FGGCSSP: + fggcsspApprove(processInfoVO, processDTO, pass); + break; + default: + } + } + //模块责任人审批 + private void mkzrrffApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + // 完成任务 + String taskId = processDTO.getTaskId(); + Map variables = new HashMap<>(); + variables.put(ProcessProjectAssessCommon.PASS, pass); + taskService.complete(taskId, variables); + } + //部所主管级领导审批 + private void bszgjldspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + String businessId = processInfoVO.getBusinessId(); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + String executionId = task.getExecutionId(); + //查询表单 + ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List termList = businessInfoDTO.getProcessProjectStandardTermList(); + List termApprovalList = new ArrayList<>(); + //删除之前的立项结果 + List termIdList = termList.stream().map(ProcessProjectStandardTerm::getId).collect(Collectors.toList()); + LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); + deleteWrapper.eq(ProcessProjectStandardTermApproval::getProcessId,businessId); + deleteWrapper.eq(ProcessProjectStandardTermApproval::getResponsibleUnitLeader,originUserId); + deleteWrapper.in(ProcessProjectStandardTermApproval::getTermId,termIdList); + termApprovalService.remove(deleteWrapper); + //保存立项结果 + for (ProcessProjectStandardTerm term : termList) { + ProcessProjectStandardTermApproval termApproval = new ProcessProjectStandardTermApproval(); + termApproval.setProcessId(businessId); + termApproval.setResponsibleUnitLeader(CurrentUserUtil.getId()); + termApproval.setTermId(term.getId()); + termApproval.setAssessResults(term.getAssessResults()); + termApproval.setProjectApprovalFlag(term.getProjectApprovalFlag()); + termApprovalList.add(termApproval); + } + termApprovalService.saveBatch(termApprovalList); + } + //法规工程师审批 + private void fggcsspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + } public void submit(ProcessInfoVO processInfoVO) { + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + String taskId = basicTaskInfoDTO.getTaskId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + String processInstanceId = processDTO.getProcessInstanceId(); + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + processInfoVO.setBusinessId(processAll.getProjectId()); + Task task = processDTO.getTask(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains(ProcessProjectStandardCommon.MKZRRFF_)){ + taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1); + } + processHandleService.updateApprovalRecord(processInfoVO); + switch (taskDefinitionKey){ + //部所主管级领导下发 + case ProcessProjectStandardCommon.BSZGJLDXF: + bszgjldxfSubmit(processInfoVO, processDTO); + break; + //模块责任人分发 + //驳回后模块责任人分发 + case ProcessProjectStandardCommon.MKZRRFF_1: + mkzrrffSubmit(processInfoVO, processDTO, false); + break; + case ProcessProjectStandardCommon.MKZRRFF_4: + case ProcessProjectStandardCommon.MKZRRFF_5: + mkzrrffSubmit(processInfoVO, processDTO, true); + break; + //设计工程师评估 + case ProcessProjectStandardCommon.SJGCSPG_: + sjgcspgSubmit(processInfoVO, processDTO); + break; + //设计工程师补充工作令编号 + case ProcessProjectStandardCommon.SJGCSBCGZLBH: + sjgcsbcgzlbhSubmit(processInfoVO, processDTO); + break; + default: + } + } + //部所主管级领导下发 + private void bszgjldxfSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO) { + String businessId = processInfoVO.getBusinessId(); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + String executionId = task.getExecutionId(); + // 查询原先存储的关联 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessProjectStandardTermUser::getProcessId, businessId); + wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId); + List termUserList = termUserService.list(wrapper); + + ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List termList = businessInfoDTO.getProcessProjectStandardTermList(); + Map termUserIdMap = CollStreamUtil.toIdentityMap(termList, ProcessProjectStandardTerm::getTermUserId); + List moduleOwnerIds = new ArrayList<>(); + for (ProcessProjectStandardTermUser termUser : termUserList) { + String termUserId = termUser.getId(); + ProcessProjectStandardTerm term = termUserIdMap.get(termUserId); + String notInvolved = term.getNotInvolved(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessProjectStandardTermUser::getId,termUserId); + if (StringUtils.isNotBlank(notInvolved)){ + updateWrapper.set(ProcessProjectStandardTermUser::getNotInvolved,notInvolved); + updateWrapper.set(ProcessProjectStandardTermUser::getAssessResults, AssessCommon.NOT_INVOLVED); + }else { + String moduleOwner = termUser.getModuleOwner(); + if (StringUtils.isBlank(moduleOwner)){ + throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED); + } + updateWrapper.set(ProcessProjectStandardTermUser::getModuleOwner, moduleOwner); + moduleOwnerIds.add(moduleOwner); + } + termUserService.update(updateWrapper); + } + moduleOwnerIds = moduleOwnerIds.stream() + .filter(Objects::nonNull) + .distinct().collect(Collectors.toList()); + processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectStandardCommon.MKZRRFF_1, moduleOwnerIds); + processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectStandardCommon.MKZRRSP_1, moduleOwnerIds); + ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId); + // 完成任务 + String taskId = processDTO.getTaskId(); + Map variables = new HashMap<>(); + variables.put(ProcessProjectStandardCommon.MODULE_OWNER_LIST, moduleOwnerIds); + variables.put(ProcessProjectStandardCommon.MODULE_OWNER_LIST_SIZE, moduleOwnerIds.size()); + taskService.complete(taskId, variables); + ThreadLocalUtil.remove(); + + } + + //模块责任人分发 + //驳回后模块责任人分发 + private void mkzrrffSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean isAfterReject) { + String businessId = processInfoVO.getBusinessId(); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + String executionId = task.getExecutionId(); + String parentExecutionId = task.getFormKey(); + + // 查询原先存储的关联 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessProjectStandardTermUser::getProcessId, businessId); + wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId); + wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, parentExecutionId); + if (isAfterReject){ + wrapper.isNull(ProcessProjectStandardTermUser::getDesignEngineer); + } + List termUserList = termUserService.list(wrapper); + //查询表单 + ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List termList = businessInfoDTO.getProcessProjectStandardTermList(); + Map termUserIdMap = CollStreamUtil.toIdentityMap(termList, ProcessProjectStandardTerm::getTermUserId); + //保存所有新增的关联用户 + List allInsertTermUserList = new ArrayList<>(); + //保存所有设计工程师 + List designEngineerIds = new ArrayList<>(); + for (ProcessProjectStandardTermUser termUser : termUserList) { + String termUserId = termUser.getId(); + ProcessProjectStandardTerm term = termUserIdMap.get(termUserId); + String notInvolved = term.getNotInvolved(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessProjectStandardTermUser::getId,termUserId); + //如果是不涉及就更新 + if (StringUtils.isNotBlank(notInvolved)){ + updateWrapper.set(ProcessProjectStandardTermUser::getNotInvolved,notInvolved); + updateWrapper.set(ProcessProjectStandardTermUser::getAssessResults, AssessCommon.NOT_INVOLVED); + termUserService.update(updateWrapper); + }else { + //如果设计工程师有一个就更新,有多个就新增剩下的 + String designEngineers = termUser.getDesignEngineer(); + if (StringUtils.isBlank(designEngineers)){ + throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED); + } + List designEngineerList = Arrays.asList(designEngineers.split(",")); + designEngineerIds.addAll(designEngineerList); + updateWrapper.set(ProcessProjectStandardTermUser::getModuleOwner, designEngineerList.get(0)); + termUserService.update(updateWrapper); + + if (designEngineerList.size() >= 2){ + for (int i = 1; i < designEngineerList.size(); i++) { + ProcessProjectStandardTermUser termUser1 = new ProcessProjectStandardTermUser(); + BeanUtils.copyProperties(termUser,termUser1); + termUser1.setId(null); + termUser1.setDesignEngineer(designEngineerList.get(i)); + allInsertTermUserList.add(termUser1); + } + } + } + } + //新增的关联用户 + termUserService.saveBatch(allInsertTermUserList); + designEngineerIds = designEngineerIds.stream() + .filter(Objects::nonNull) + .distinct().collect(Collectors.toList()); + processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectStandardCommon.SJGCSPG_1, designEngineerIds); + ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,executionId); + // 完成任务 + String taskId = processDTO.getTaskId(); + Map variables = new HashMap<>(); + variables.put(ProcessProjectStandardCommon.DESIGN_ENGINEER_LIST, designEngineerIds); + variables.put(ProcessProjectStandardCommon.DESIGN_ENGINEER_LIST_SIZE, designEngineerIds.size()); + taskService.complete(taskId, variables); + ThreadLocalUtil.remove(); + } + + //设计工程师评估 + private void sjgcspgSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO) { + String businessId = processInfoVO.getBusinessId(); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + String formKey = task.getFormKey(); + String executionId = task.getExecutionId(); + ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List termList = businessInfoDTO.getProcessProjectStandardTermList(); + List udpateTermUserList = new ArrayList<>(); + for (ProcessProjectStandardTerm term : termList) { + ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser(); + termUser.setId(term.getTermUserId()); + termUser.setAssessResults(term.getAssessResults()); + termUser.setModelSeries(term.getModelSeries()); + termUser.setDescription(term.getDescription()); + termUser.setFileId(term.getFileId()); + udpateTermUserList.add(termUser); + } + termUserService.updateBatchById(udpateTermUserList); + ThreadLocalUtil.put(ProcessProjectAssessCommon.EXECUTION_ID,formKey); + // 完成任务 + String taskId = processDTO.getTaskId(); + taskService.complete(taskId); + ThreadLocalUtil.remove(); + } + + //设计工程师补充工作令编号 + private void sjgcsbcgzlbhSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO) { + } public IPage getManyStandardSelectionBox(ManyStandardSelectionBoxVO selectionBoxVO, Integer pageNo, Integer pageSize) { diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardTermApprovalService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardTermApprovalService.java new file mode 100644 index 00000000..2bdc9f05 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/service/ProcessProjectStandardTermApprovalService.java @@ -0,0 +1,17 @@ +package com.jero.modules.activiti.process.projectstandard.service; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermApproval; +import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardTermApprovalMapper; +/** + * + *@author liJiaRao + *@date 2024-01-17 15:00 + */ +@Service +public class ProcessProjectStandardTermApprovalService extends ServiceImpl { + +} diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/vo/ProcessProjectStandardVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/vo/ProcessProjectStandardVO.java index d36235c5..4a543d77 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/vo/ProcessProjectStandardVO.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/vo/ProcessProjectStandardVO.java @@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.projectstandard.vo; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm; +import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermApproval; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTermUser; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -23,4 +24,7 @@ public class ProcessProjectStandardVO { /**关联标准分派列表*/ @ApiModelProperty(value = "关联标准分派列表") private List processProjectStandardTermUserList; + /**立项结果列表*/ + @ApiModelProperty(value = "立项结果列表") + private List processProjectStandardTermApprovalList; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/util/ThreadLocalUtil.java b/laws-modules/src/main/java/com/jero/modules/activiti/util/ThreadLocalUtil.java index e131f511..b4cbf792 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/util/ThreadLocalUtil.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/util/ThreadLocalUtil.java @@ -24,7 +24,7 @@ public class ThreadLocalUtil { public static Object get(String key) { Map map = RUNTIME_DATA.get(); - RUNTIME_DATA.remove(); + //RUNTIME_DATA.remove(); return map.get(key); } @@ -32,8 +32,8 @@ public class ThreadLocalUtil { getRuntimeData().put(key, value); } - public static void remove(String key) { - getRuntimeData().remove(key); + public static void remove() { + RUNTIME_DATA.remove(); } public static void clear() { diff --git a/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn b/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn index 23454616..53f84afc 100644 --- a/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn +++ b/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn @@ -24,29 +24,29 @@ Flow_1g6zc95 Flow_06h9ihd - + - Flow_06h9ihd - Flow_0ni7hxc + Flow_1r3w91d + Flow_0obo4r2 ${nrOfInstances == nrOfCompletedInstances} Flow_0xb4gtd - + Flow_07hxwn8 - Flow_0a6biwg + Flow_1gwkusz Flow_197effc ${nrOfInstances == nrOfCompletedInstances} - + @@ -58,7 +58,7 @@ Flow_1m6dxws Flow_07hxwn8 - + Flow_1m6dxws @@ -68,46 +68,149 @@ ${!pass} - + Flow_0xb4gtd Flow_0a6biwg - - + + + + Flow_0a6biwg + Flow_15xpnyd + Flow_1gwkusz + + + Flow_15xpnyd + + + ${designEngineerListSize == 0} + + + ${designEngineerListSize > 0} + - - Flow_0ff821d - Flow_0ni7hxc - Flow_10o9sl2 - - - Flow_10o9sl2 - Flow_11i64js - Flow_132fp4x + + + Flow_06h9ihd + Flow_1yporul + Flow_1r3w91d - - - ${!pass} - - - Flow_132fp4x + + Flow_1yporul + + ${moduleOwnerListSize == 0} + + + ${moduleOwnerListSize > 0} + + + Flow_0q2chl1 + Flow_04bioxt + Flow_1rrn9dm + + + + + + + ${notInvolvedModuleOwnerListSize > 0} + + + ${moduleOwnerListSize > 0} + ${pass} - + + ${!pass} + + + Flow_11i64js - Flow_0ff821d + Flow_1jjyqj0 + Flow_1wdzyax + + + Flow_1wdzyax + Flow_0q2chl1 + + ${nrOfInstances == nrOfCompletedInstances} + + + Flow_0n3x332 + + + + + + Flow_0n3x332 + Flow_1mwm3jy + + + Flow_1mwm3jy + Flow_1u1h3jz + Flow_0aon77n + + + + + + Flow_0aon77n + Flow_1bzp3jv + Flow_0xi7z4i + + ${nrOfInstances == nrOfCompletedInstances} + + + + + + + Flow_0xi7z4i + Flow_044zvbm + + + Flow_044zvbm + Flow_1bzp3jv + Flow_1gymwkm + + + Flow_1gymwkm + + + Flow_1u1h3jz + + + + + ${designEngineerListSize == 0} + + + ${designEngineerListSize > 0} + + + ${!pass} + + + + + ${pass} + + + + Flow_1jjyqj0 + Flow_04bioxt ${nrOfInstances == nrOfCompletedInstances} Flow_18i416j - + @@ -119,7 +222,7 @@ ${nrOfInstances == nrOfCompletedInstances} - + @@ -137,12 +240,12 @@ ${!pass} - - + + ${pass} - + @@ -150,11 +253,21 @@ Flow_18i416j Flow_1m13a5m - + - - - + + Flow_132fp4x + + + Flow_10o9sl2 + Flow_11i64js + Flow_132fp4x + + + Flow_1rrn9dm + Flow_0obo4r2 + Flow_10o9sl2 + @@ -191,26 +304,18 @@ Flow_0x6qt62 - - Flow_0juw2qw - Flow_0a4b22u - Flow_1lchcby - - - Flow_1lchcby - Flow_0x6qt62 - Flow_1xkmz4n - Flow_0juw2qw + Flow_0uhjeie + Flow_117rgu5 - - Flow_0a4b22u - Flow_1xkmz4n + + Flow_0ljfd7s + Flow_0zsh74h ${nrOfInstances == nrOfCompletedInstances} - + @@ -239,16 +344,16 @@ ${nrOfInstances == nrOfCompletedInstances} - + ${!pass} ${pass} - - - + + + @@ -256,17 +361,110 @@ Flow_1lw0nd8 Flow_1y4773i - + - - + + + Flow_117rgu5 + Flow_0rkq2tw + Flow_0ncu6j5 + + + Flow_0ncu6j5 + + + Flow_0gac88y + Flow_0xkvov2 + + ${nrOfInstances == nrOfCompletedInstances} + + + Flow_0sdhvpq + + + + + + Flow_0sdhvpq + Flow_09obdrn + + + Flow_0uq7eff + + + Flow_09obdrn + Flow_0uq7eff + Flow_0stb0ce + + + + + + Flow_0stb0ce + Flow_1nw6gbh + Flow_1ri7hvx + + ${nrOfInstances == nrOfCompletedInstances} + + + + + + + Flow_1ri7hvx + Flow_0wr1983 + + + Flow_0wr1983 + Flow_1nw6gbh + Flow_1sx8sgp + + + Flow_1sx8sgp + + + + + ${designEngineerListSize == 0} + + + ${designEngineerListSize > 0} + + + ${!pass} + + + + + ${pass} + + + + Flow_0rkq2tw + Flow_0ljfd7s + Flow_0gac88y + + ${!pass} - + ${pass} - - + + ${moduleOwnerListSize > 0} + + + ${notInvolvedModuleOwnerListSize > 0} + + + + Flow_0zsh74h + Flow_0xkvov2 + Flow_0uhjeie + + + + ${!pass} @@ -275,327 +473,586 @@ + + + + + + + + + + + + - + - + - + - + - + - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - + - - + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + - - + + - + - - - + + + + + + - - - + + + + + + + - - - - + + + + + + + + + + + - - - - - - - - - - - - - + - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + - + - + - + - + - - + + + + + + - - + + - - - - + + + + - + - - + + - + - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - + + + + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + + + + + + + + - - + + - - - - - - + + + - - + + + + + + + + + + diff --git a/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn b/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn index 5615cf12..e8688aa8 100644 --- a/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn +++ b/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn @@ -24,7 +24,7 @@ Flow_1g6zc95 Flow_06h9ihd - + Flow_1r3w91d Flow_0obo4r2 @@ -34,7 +34,7 @@ Flow_0xb4gtd - + @@ -46,7 +46,7 @@ ${nrOfInstances == nrOfCompletedInstances} - + @@ -58,7 +58,7 @@ Flow_1m6dxws Flow_07hxwn8 - + Flow_1m6dxws @@ -68,15 +68,15 @@ ${!pass} - + Flow_0xb4gtd Flow_0a6biwg - - + + Flow_0a6biwg Flow_15xpnyd @@ -134,7 +134,7 @@ Flow_1jjyqj0 Flow_1wdzyax - + Flow_1wdzyax Flow_0q2chl1 @@ -143,7 +143,7 @@ Flow_0n3x332 - + @@ -166,7 +166,7 @@ ${nrOfInstances == nrOfCompletedInstances} - + @@ -184,8 +184,8 @@ Flow_1u1h3jz - - + + ${designEngineerListSize == 0} @@ -195,13 +195,13 @@ ${!pass} - - + + ${pass} - + Flow_1jjyqj0 Flow_04bioxt @@ -210,7 +210,7 @@ Flow_18i416j - + @@ -222,7 +222,7 @@ ${nrOfInstances == nrOfCompletedInstances} - + @@ -240,12 +240,12 @@ ${!pass} - - + + ${pass} - + @@ -253,7 +253,7 @@ Flow_18i416j Flow_1m13a5m - + Flow_132fp4x @@ -309,13 +309,13 @@ Flow_0uhjeie Flow_117rgu5 - + Flow_0ljfd7s Flow_0zsh74h ${nrOfInstances == nrOfCompletedInstances} - + @@ -344,16 +344,16 @@ ${nrOfInstances == nrOfCompletedInstances} - + ${!pass} ${pass} - - - + + + @@ -361,7 +361,7 @@ Flow_1lw0nd8 Flow_1y4773i - + @@ -372,7 +372,7 @@ Flow_0ncu6j5 - + Flow_0gac88y Flow_0xkvov2 @@ -381,7 +381,7 @@ Flow_0sdhvpq - + @@ -407,7 +407,7 @@ ${nrOfInstances == nrOfCompletedInstances} - + @@ -422,8 +422,8 @@ Flow_1sx8sgp - - + + ${designEngineerListSize == 0} @@ -433,8 +433,8 @@ ${!pass} - - + + ${pass} @@ -531,7 +531,7 @@ - + @@ -540,7 +540,7 @@ - + @@ -609,7 +609,7 @@ - + @@ -619,7 +619,7 @@ - + @@ -662,7 +662,7 @@ - + @@ -674,7 +674,7 @@ - + @@ -837,7 +837,7 @@ - + @@ -849,7 +849,7 @@ - + @@ -909,7 +909,7 @@ - + @@ -925,7 +925,7 @@ - +