diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java index 2c2fbf88..21130444 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java @@ -16,6 +16,7 @@ public enum ProcessTypeEnum { FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl"), PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"), PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService"), + PROJECT_STANDARD("法规合规评估流程",5, "com.jero.modules.activiti.process.projectstandard.service.ProcessProjectStandardService"), FB_STANDARD_PURCHASE("法规采购流程",6, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardPurchaseServiceImpl"), ES_INIT_CHANGE("企标立项/变更计划",7, "com.jero.modules.activiti.process.esInitChange.service.impl.ProcessEsInitChangeServiceImpl"), ES_ANNUAL_REPORT("年度制修订计划审批流程(各部门主动上报)",8, "com.jero.modules.activiti.process.esAbolish.service.impl.ProcessEsAbolishServiceImpl"), 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 d03d56da..a7965bbb 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 @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.entity.ProcessNode; @@ -106,6 +107,12 @@ public class MyGlobalEventListener implements ActivitiEventListener { delegateTask.removeVariable("pass"); //流程审批信息 ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); + ProcessNodeService processNodeService = SpringContextUtil.getBean(ProcessNodeService.class); + log.info("id = " + delegateTask.getId()); + log.info("name = " + delegateTask.getName()); + log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee()); + log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks()); + log.info("taskEntity.getVariables() = " + delegateTask.getVariables()); String id = delegateTask.getId(); String name = delegateTask.getName(); @@ -113,6 +120,16 @@ public class MyGlobalEventListener implements ActivitiEventListener { Date createTime = delegateTask.getCreateTime(); String assignee = delegateTask.getAssignee(); String taskDefinitionKey = delegateTask.getTaskDefinitionKey(); + String processDefinitionId = delegateTask.getProcessDefinitionId(); + //判断是否需要创建待办 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessNode::getProcessDefinitionId,processDefinitionId); + wrapper.eq(ProcessNode::getNodeName,name); + wrapper.eq(ProcessNode::getIsView, YesOrNoEnum.YES.getValue()); + int count = processNodeService.count(wrapper); + if (count == 0){ + return; + } //新增待审批记录 ProcessApprovalRecord approvalRecord = new ProcessApprovalRecord(); approvalRecord.setTaskId(id); @@ -127,11 +144,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { approvalRecord.setCreateTime(date); approvalRecord.setNodeId(taskDefinitionKey); recordService.save(approvalRecord); - log.info("id = " + delegateTask.getId()); - log.info("name = " + delegateTask.getName()); - log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee()); - log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks()); - log.info("taskEntity.getVariables() = " + delegateTask.getVariables()); + } private void taskAssigned(ActivitiEvent event) { @@ -150,6 +163,14 @@ public class MyGlobalEventListener implements ActivitiEventListener { ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event; TaskEntity delegateTask = (TaskEntity) activitiEntityEvent.getEntity(); ExecutionEntity execution = delegateTask.getExecution(); + log.info("流程实例总数:" + execution.getVariable("nrOfInstances")); + log.info("当前活动的流程实例总数:" + execution.getVariable("nrOfActiveInstances")); + log.info("已经完成实例的数目:" + execution.getVariable("nrOfCompletedInstances")); + log.info("id = " + delegateTask.getId()); + log.info("name = " + delegateTask.getName()); + log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee()); + log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks()); + log.info("taskEntity.getVariables() = " + delegateTask.getVariables()); //流程审批信息转办 ProcessApprovalRecordService recordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class); String taskId = delegateTask.getId(); @@ -158,8 +179,10 @@ public class MyGlobalEventListener implements ActivitiEventListener { //更新审批信息为完成 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessApprovalRecord::getTaskId,taskId); - wrapper.eq(ProcessApprovalRecord::getUserId,assignee); ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper); + if (approvalRecord == null){ + return; + } Date createTime = approvalRecord.getCreateTime(); DateTime date = DateUtil.date(); // 如果date小于createTime+一秒,说明是在同一秒内完成的,需要加一秒,解决流程审批信息发起节点和下一节点创建时间一致,排序错乱问题 @@ -190,14 +213,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { } recordService.updateById(approvalRecord); - log.info("流程实例总数:" + execution.getVariable("nrOfInstances")); - log.info("当前活动的流程实例总数:" + execution.getVariable("nrOfActiveInstances")); - log.info("已经完成实例的数目:" + execution.getVariable("nrOfCompletedInstances")); - log.info("id = " + delegateTask.getId()); - log.info("name = " + delegateTask.getName()); - log.info("taskEntity.getAssignee() = " + delegateTask.getAssignee()); - log.info("taskEntity.getIdentityLinks() = " + delegateTask.getIdentityLinks()); - log.info("taskEntity.getVariables() = " + variables); + } private void activityComplete(ActivitiEvent event) { diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ProcessDefinitionKey.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ProcessDefinitionKey.java index fa01730b..a8c1b8db 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ProcessDefinitionKey.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/common/ProcessDefinitionKey.java @@ -20,5 +20,7 @@ public class ProcessDefinitionKey { public static final String PROJECT_ASSESS = "project-assessment"; //项目合规评估流程 public static final String PROJECT_NOT_MET = "project-not-met"; + //项目合规评估流程 + public static final String PROJECT_STANDARD = "standard-assessment"; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/common/ProcessProjectStandardCommon.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/common/ProcessProjectStandardCommon.java index 0b55d473..ca67688d 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/common/ProcessProjectStandardCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/common/ProcessProjectStandardCommon.java @@ -6,4 +6,33 @@ package com.jero.modules.activiti.process.projectstandard.common; */ public class ProcessProjectStandardCommon { + public static final String STANDARDS_ENGINEER = "standardsEngineer"; + public static final String MANAGER_LEADER_LIST = "managerLeaderList"; + public static final String MODULE_OWNER_LIST = "moduleOwnerList"; + public static final String MODULE_OWNER_LIST_SIZE = "moduleOwnerListSize"; + public static final String DESIGN_ENGINEER_LIST = "designEngineerList"; + public static final String DESIGN_ENGINEER_LIST_SIZE = "designEngineerListSize"; + + + //法规工程师发起 + public static final String FGGCSFQ = "fggcsfq"; + //部所主管级领导下发 + public static final String BSZGJLDXF = "bszgjldxf"; + //模块负责人分发 + public static final String MKFZRFF_1 = "mkfzrff_1"; + public static final String MKFZRFF_2 = "mkfzrff_2"; + public static final String MKFZRFF_3 = "mkfzrff_3"; + public static final String MKFZRFF_4 = "mkfzrff_4"; + public static final String MKFZRFF_5 = "mkfzrff_5"; + //设计工程师评估 + public static final String SJGCSPG_ = "sjgcspg_"; + //模块负责人审批 + public static final String MKFZRSP_ = "mkfzrsp_"; + //部所主管级领导审批 + public static final String BSZGJLDSP_ = "bszgjldsp_"; + //法规工程师审批 + public static final String FGGCSSP = "fggcssp"; + //设计工程师补充工作令编号 + public static final String SJGCSBCGZLBH = "sjgcsbcgzlbh"; + } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandard.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandard.java index a93c0daf..191e2776 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandard.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandard.java @@ -81,6 +81,13 @@ public class ProcessProjectStandard { @ApiModelProperty(value = "来源(1-国内、2-海外)") private String source; + /** + * 标准id + */ + @TableField(value = "standard_id") + @ApiModelProperty(value = "标准id") + private String standardId; + /** * 标准编号 */ diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTerm.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTerm.java index 13cb8d08..c5633733 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTerm.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTerm.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; /** * @@ -105,6 +107,14 @@ public class ProcessProjectStandardTerm { @ApiModelProperty(value="条款内容") private String termText; + /** + * 实施日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "实施日期") + private Date implementationDate; + /** * 拆分单id */ @@ -132,4 +142,50 @@ public class ProcessProjectStandardTerm { @TableField(value = "carbon_copy_personnels") @ApiModelProperty(value="抄送人员") private String carbonCopyPersonnels; + + /** + * 车型系列 + */ + @TableField(exist = false) + @ApiModelProperty(value="车型系列") + private String modelSeries; + /** + * 车型系列 + */ + @TableField(exist = false) + @ApiModelProperty(value="车型系列") + private String modelSeries_dict; + + /** + * 依据描述 + */ + @TableField(exist = false) + @ApiModelProperty(value="依据描述") + private String description; + + /** + * 佐证材料 + */ + @TableField(exist = false) + @ApiModelProperty(value="佐证材料") + private String fileId; + + @TableField(exist = false) + @ApiModelProperty(value="模块负责人") + private String moduleOwner; + + + @TableField(exist = false) + @ApiModelProperty(value="责任单位联络人") + private String responsibleUnitLeader; + + @TableField(exist = false) + @ApiModelProperty(value="") + private String termUserId; + + @TableField(exist = false) + @ApiModelProperty(value="评估结果") + private String assessResults; + + } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java index 04d5a0e1..3b94cde2 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/entity/ProcessProjectStandardTermUser.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.jero.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.util.Date; import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; /** * @@ -105,6 +107,12 @@ public class ProcessProjectStandardTermUser { @ApiModelProperty(value="模块负责人id") private String moduleOwner; + /**评估结果(1-符合、2-不符合)*/ + @TableField(value = "assess_results") + @Dict(dicCode = "standards_assess_results") + @ApiModelProperty(value = "评估结果(1-符合、2-不符合)") + private String assessResults; + /** * 不涉及原因 */ diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/ProcessProjectStandardTermMapper.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/ProcessProjectStandardTermMapper.java index 989882d8..2c24c6b4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/ProcessProjectStandardTermMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectstandard/mapper/ProcessProjectStandardTermMapper.java @@ -2,6 +2,9 @@ package com.jero.modules.activiti.process.projectstandard.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandardTerm; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @@ -9,4 +12,11 @@ import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectSt *@date 2024-01-15 16:27 */ public interface ProcessProjectStandardTermMapper extends BaseMapper { + List getByResponsibleUnitLeader(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("hasModuleOwner") Boolean hasModuleOwner); + + List getByModuleOwner(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId, @Param("hasDesignEngineer") Boolean hasDesignEngineer); + + List getByDesignEngineer(@Param("processId") String processId, @Param("originUserId") String originUserId, @Param("executionParentId") String executionParentId); + + List getByStandardsEngineer(@Param("processId") String processId); } \ 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 6a43b626..fa0e8fbd 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 @@ -16,15 +16,106 @@ + + + + + + + + - id, create_by, create_time, update_by, update_time, org_code, del_flag, process_id, - standard_id, term_number, term_name, term_text, split_info_id, project_approval_flag, - design_engineer, carbon_copy_personnels + ${alias}.id, ${alias}.create_by, ${alias}.create_time, ${alias}.update_by, ${alias}.update_time, ${alias}.org_code, ${alias}.del_flag, ${alias}.process_id, ${alias}. + standard_id, ${alias}.term_number, ${alias}.term_name, ${alias}.term_text, ${alias}.implementation_date, ${alias}.split_info_id, ${alias}.project_approval_flag, ${alias}. + design_engineer, ${alias}.carbon_copy_personnels + + + + + + + + \ No newline at end of file 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 159119c6..6eec88c7 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 @@ -1,30 +1,62 @@ 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.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; +import com.jero.common.system.vo.LoginUser; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; +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.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.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.laws.common.mapper.LawsCommonMapper; -import com.jero.modules.laws.common.service.ILawsCommonService; +import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO; +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.vo.DecompositionOrderSourceVO; import com.jero.modules.split.entity.SarFileSplitInfoEO; import com.jero.modules.split.service.ISarFileSplitInfoService; +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.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.modules.activiti.process.projectstandard.entity.ProcessProjectStandard; import com.jero.modules.activiti.process.projectstandard.mapper.ProcessProjectStandardMapper; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * @@ -33,26 +65,246 @@ import java.util.Map; */ @Service public class ProcessProjectStandardService extends ServiceImpl { - @Resource - private ILawsCommonService lawsCommonService; + @Resource private LawsCommonMapper lawsCommonMapper; @Resource private ISarFileSplitInfoService sarFileSplitInfoService; @Resource + private ProcessAllService processAllService; + @Resource private ISysBaseAPI sysBaseAPI; + @Resource + private TaskService taskService; + @Resource + private IProcessHandleService processHandleService; + @Resource + private SendMessageAPI sendMessageAPI; + //国内标准 + @Autowired + private ILawsDomesticStandardService lawsDomesticStandardService; + //海外标准 + @Autowired + private ILawsOverseasStandardService lawsOverseasStandardService; + @Resource + private ProcessProjectStandardTermMapper termMapper; + @Resource + private ProcessProjectStandardTermService termService; + @Resource + private ProcessProjectStandardTermUserMapper termUserMapper; + @Resource + private ProcessProjectStandardTermUserService termUserService; public ProcessInfoVO queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { - return null; + if (StringUtils.isNotBlank(draftId) && StringUtils.isBlank(taskId)) { + ProcessInfoVO draft = processHandleService.getDraftByDraftId(draftId); + return draft; + } + ProcessInfoVO draft = processHandleService.getDraftByTaskId(taskId); + if (draft != null){ + return draft; + } + ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId); + String processId = processInfoVO.getBusinessId(); + ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + + String executionParentId = task.getFormKey(); + String taskDefinitionKey = task.getTaskDefinitionKey(); + if (taskDefinitionKey.contains("_") && !taskDefinitionKey.contains("mkfzrff_")){ + taskDefinitionKey = taskDefinitionKey.substring(0,taskDefinitionKey.length()-1); + } + List processProjectStandardTermUserList = new ArrayList<>(); + List processProjectStandardTermList = new ArrayList<>(); + //获取所有用户信息 + List userList = sysBaseAPI.getAllUser(); + Map userNameMap = new HashMap<>(); + for (LoginUser loginUser : userList) { + userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo()); + } + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + String createUserId = processAll.getCreateUserId(); + //发起人 + String createUserName = userNameMap.get(createUserId); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessProjectStandardTermUser::getProcessId, processId); + List list = new ArrayList<>(); + switch (taskDefinitionKey) { + //部所主管级领导下发 + case ProcessProjectStandardCommon.BSZGJLDXF: + processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, false); + break; + //部所主管级领导审批 + case ProcessProjectStandardCommon.BSZGJLDSP_: + processProjectStandardTermList = termMapper.getByResponsibleUnitLeader(processId, originUserId, true); + wrapper.eq(ProcessProjectStandardTermUser::getResponsibleUnitLeader, originUserId); + break; + //模块负责人分发 + case ProcessProjectStandardCommon.MKFZRFF_1: + processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false); + break; + //驳回后模块负责人分发 + case ProcessProjectStandardCommon.MKFZRFF_4: + case ProcessProjectStandardCommon.MKFZRFF_5: + processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, true); + break; + //模块负责人审批 + case ProcessProjectStandardCommon.MKFZRSP_: + processProjectStandardTermList = termMapper.getByModuleOwner(processId, originUserId, executionParentId, false); + wrapper.eq(ProcessProjectStandardTermUser::getModuleOwner, originUserId); + wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId); + list = termUserService.list(wrapper); + + break; + //设计工程师评估 + case ProcessProjectStandardCommon.SJGCSPG_: + processProjectStandardTermList = termMapper.getByDesignEngineer(processId, originUserId, executionParentId); + wrapper.eq(ProcessProjectStandardTermUser::getDesignEngineer, originUserId); + wrapper.eq(ProcessProjectStandardTermUser::getParentExecutionId, executionParentId); + list = termUserService.list(wrapper); + + break; + //法规工程师审批 + case ProcessProjectStandardCommon.FGGCSSP: + processProjectStandardTermList = termMapper.getByStandardsEngineer(processId); + + break; + //设计工程师补充工作令编号 + case ProcessProjectStandardCommon.SJGCSBCGZLBH: + processProjectStandardTermList = termMapper.getByStandardsEngineer(processId); + + break; + + default: + } + List dictModels = sysBaseAPI.queryDictItemsByCode("assess_results"); + Map dictevaluationFeedbackMap = CollStreamUtil.toMap(dictModels, DictModel::getValue, DictModel::getText); + //给条款中保存关联的信息 + Map> termIdListMap = CollStreamUtil.groupByKey(list, ProcessProjectStandardTermUser::getTermId); + for (ProcessProjectStandardTerm term : processProjectStandardTermList) { + String termId = term.getId(); + List termUsers = termIdListMap.get(termId); + if (CollectionUtil.isNotEmpty(termUsers)){ + + ProcessProjectStandardTermUser termUser = termUsers.get(0); + term.setDescription(termUser.getDescription()); + term.setFileId(termUser.getFileId()); + } + } + //拼接分类法规标题 + List decompositionOrderSourceDictModels = sysBaseAPI.queryDictItemsByCode("decomposition_order_source"); + Map decompositionOrderSourceMap = CollStreamUtil.toMap(decompositionOrderSourceDictModels, DictModel::getValue, DictModel::getText); + Map splitInfoIdMap = this.getSplitInfoIdMap(processId); + List allProjectAssesTermList = new ArrayList<>(); + List usedSplitInfoId = new ArrayList<>(); + for (ProcessProjectStandardTerm term : processProjectStandardTermList) { + String splitInfoId = term.getSplitInfoId(); + if (!usedSplitInfoId.contains(splitInfoId) && splitInfoIdMap.containsKey(splitInfoId)) { + usedSplitInfoId.add(splitInfoId); + ProcessProjectStandardTerm titleTerm = splitInfoIdMap.get(splitInfoId); + ProcessProjectStandardTerm term1 = new ProcessProjectStandardTerm(); + term1.setTermName(titleTerm.getTermName()); + term1.setTermNumber(titleTerm.getTermNumber()); + term1.setTermText(decompositionOrderSourceMap.get(titleTerm.getTermText())); + allProjectAssesTermList.add(term1); + } + allProjectAssesTermList.add(term); + } + ProcessProjectStandard processProjectStandard = this.getById(processId); + + + ProcessProjectStandardVO processProjectStandardVO = new ProcessProjectStandardVO(); + processProjectStandardVO.setProcessProjectStandard(processProjectStandard); + processProjectStandardVO.setProcessProjectStandardTermList(processProjectStandardTermList); + //processProjectStandardVO.setProcessProjectStandardTermUserList(); + processInfoVO.setBusinessInfoDTO(processProjectStandardVO); + return processInfoVO; } public void saveToDraft(ProcessInfoVO processInfoVO) { + // 流程信息 + BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_STANDARD.getValue()); // 流程类型 + //保存businessId + String processInstanceId = basicProcessInfoDTO.getProcessInstanceId(); + if (StringUtils.isNotBlank(processInstanceId)){ + ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + String projectId = processAll.getProjectId(); + processInfoVO.setBusinessId(projectId); + } + processHandleService.saveToDraft(processInfoVO); } public void startProcess(ProcessInfoVO processInfoVO) { + //start 先保存一份初始草稿 + processInfoVO.setSaveSource(DraftCommon.INITIAL_SOURCE); + saveToDraft(processInfoVO); + //end 保存初始草稿结束 + ProcessProjectStandardVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + + ProcessProjectStandard processProjectStandard = businessInfoDTO.getProcessProjectStandard(); + this.save(processProjectStandard); + String processId = processProjectStandard.getId(); + processInfoVO.setBusinessId(processId); + String standardId = processProjectStandard.getStandardId(); + String source = processProjectStandard.getSource(); + Date implementationDate; + if (CommonConstant.STANDARD_SOURCE_1.equals(source)) { + LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getById(standardId); + implementationDate = lawsDomesticStandard.getImplementationDate(); + }else { + LawsOverseasStandard overseasStandard = lawsOverseasStandardService.getById(standardId); + implementationDate = overseasStandard.getImplementationDate(); + } + //保存条款 + List processProjectStandardTermList = businessInfoDTO.getProcessProjectStandardTermList(); + for (ProcessProjectStandardTerm term : processProjectStandardTermList) { + term.setProcessId(processId); + term.setImplementationDate(implementationDate); + } + termService.saveBatch(processProjectStandardTermList); + // 保存关联关系 + List allResponsibleUnitLeaderList = new ArrayList<>(); + List termUserList = new ArrayList<>(); + for (ProcessProjectStandardTerm term : processProjectStandardTermList) { + String termId = term.getId(); + String responsibleUnitLeaders = term.getResponsibleUnitLeader(); + if (StringUtils.isBlank(responsibleUnitLeaders)) { + throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED); + } + List responsibleUnitLeaderList = Arrays.asList(responsibleUnitLeaders.split(",")); + List distinctResponsibleUnitLeader = responsibleUnitLeaderList.stream() + .filter(Objects::nonNull) + .distinct().collect(Collectors.toList()); + for (String responsibleUnitLeaderId : distinctResponsibleUnitLeader) { + ProcessProjectStandardTermUser termUser = new ProcessProjectStandardTermUser(); + termUser.setProcessId(processId); + termUser.setTermId(termId); + termUser.setResponsibleUnitLeader(responsibleUnitLeaderId); + termUserList.add(termUser); + } + allResponsibleUnitLeaderList.addAll(distinctResponsibleUnitLeader); + } + termUserService.saveBatch(termUserList); + + List distinctAllResponsibleUnitLeaderList = allResponsibleUnitLeaderList.stream() + .filter(Objects::nonNull) + .distinct().collect(Collectors.toList()); + String distinctAllResponsibleUnitLeaderListJoin = CollectionUtil.join(distinctAllResponsibleUnitLeaderList, ","); + //启动 + BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.PROJECT_STANDARD)); // 流程定义id + basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_STANDARD.getValue()); // 流程类型 + Map userInfoMap = new HashMap<>(); + userInfoMap.put(ProcessProjectStandardCommon.STANDARDS_ENGINEER, CurrentUserUtil.getId()); + userInfoMap.put(ProcessProjectStandardCommon.MANAGER_LEADER_LIST, distinctAllResponsibleUnitLeaderListJoin); + processInfoVO.setUserInfoMap(userInfoMap); + processHandleService.startProcess(processInfoVO); } public void approveTask(ProcessInfoVO processInfoVO, boolean b) { @@ -103,4 +355,15 @@ public class ProcessProjectStandardService extends ServiceImpl getSplitInfoIdMap(String processId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProcessProjectStandardTerm::getProcessId,processId); + List list = termService.list(wrapper); + Map stringProcessProjectStandardTermMap = CollStreamUtil.toIdentityMap(list, ProcessProjectStandardTerm::getSplitInfoId); + return stringProcessProjectStandardTermMap; + } } diff --git a/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn b/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn index 099d2a60..23454616 100644 --- a/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn +++ b/laws-modules/src/main/resources/bpmn/法规合规评估流程.bpmn @@ -1,11 +1,11 @@ - - + + Flow_12b9yhd - + Flow_12b9yhd Flow_0tgn37q @@ -13,14 +13,14 @@ Flow_0tgn37q Flow_0w3nr57 - + ${nrOfInstances == nrOfCompletedInstances} Flow_1g6zc95 - + Flow_1g6zc95 Flow_06h9ihd @@ -28,27 +28,27 @@ Flow_06h9ihd Flow_0ni7hxc - + ${nrOfInstances == nrOfCompletedInstances} Flow_0xb4gtd - - + + - + Flow_07hxwn8 Flow_0a6biwg Flow_197effc - + ${nrOfInstances == nrOfCompletedInstances} - + - + Flow_197effc Flow_1w5wrt4 @@ -58,27 +58,27 @@ Flow_1m6dxws Flow_07hxwn8 - + Flow_1m6dxws ${pass} - + ${!pass} - + - + Flow_0xb4gtd Flow_0a6biwg - - + + - + Flow_0ff821d Flow_0ni7hxc Flow_10o9sl2 @@ -88,7 +88,7 @@ Flow_11i64js Flow_132fp4x - + ${!pass} @@ -101,31 +101,27 @@ Flow_11i64js Flow_0ff821d - + ${nrOfInstances == nrOfCompletedInstances} Flow_18i416j - - - Flow_18i416j - Flow_1q5kwu9 - - + + - + Flow_1al6zeq - Flow_1q5kwu9 + Flow_1m13a5m Flow_11c0pso - + ${nrOfInstances == nrOfCompletedInstances} - + - + Flow_11c0pso Flow_0gzlhk1 @@ -138,19 +134,27 @@ Flow_1tfvdpt - + ${!pass} - - + + ${pass} - + + + + + + Flow_18i416j + Flow_1m13a5m + + - + - + @@ -166,22 +170,22 @@ Flow_19ehxvl - + Flow_0w3nr57 Flow_03v0fem Flow_1gw9i5e - + Flow_0c3ic1y Flow_19ehxvl - + ${nrOfInstances == nrOfCompletedInstances} Flow_0mngw8y Flow_03v0fem - + ${nrOfInstances == nrOfCompletedInstances} @@ -195,7 +199,7 @@ Flow_1lchcby - + Flow_0x6qt62 Flow_1xkmz4n Flow_0juw2qw @@ -203,12 +207,12 @@ Flow_0a4b22u Flow_1xkmz4n - + ${nrOfInstances == nrOfCompletedInstances} - + - + Flow_1wjzl0u Flow_19fpo83 @@ -221,44 +225,48 @@ Flow_0920pid - - Flow_1lw0nd8 - Flow_1d7lhvy - Flow_1lw0nd8 - + - + Flow_0j9t3br - Flow_1d7lhvy + Flow_1y4773i Flow_1wjzl0u - + ${nrOfInstances == nrOfCompletedInstances} - - + + ${!pass} ${pass} - - - + + + + + + + + Flow_1lw0nd8 + Flow_1y4773i + + - + ${!pass} ${pass} - - + + ${!pass} @@ -266,13 +274,7 @@ - - - - - - - + @@ -290,16 +292,6 @@ - - - - - - - - - - @@ -307,10 +299,10 @@ - + - + @@ -320,12 +312,12 @@ - - + + - + @@ -348,13 +340,23 @@ - + + + + + + + + + + + @@ -362,14 +364,10 @@ - - - - - + - + @@ -379,13 +377,13 @@ + + + + - - - - - + @@ -411,15 +409,30 @@ + + + + + + + + - + + + + + + + + @@ -435,20 +448,15 @@ - - - - - - - - - - - + + + + + + @@ -456,9 +464,8 @@ - - - + + @@ -466,14 +473,15 @@ - - + + + - + @@ -483,20 +491,16 @@ - - - - - + - - - - + + + + @@ -519,20 +523,16 @@ - + - - + + + + + + - - - - - - - - @@ -541,7 +541,7 @@ - + @@ -551,6 +551,18 @@ + + + + + + + + + + + + @@ -585,10 +597,6 @@ - - - - diff --git a/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn b/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn new file mode 100644 index 00000000..5615cf12 --- /dev/null +++ b/laws-modules/src/main/resources/bpmn/法规合规评估流程camund.bpmn @@ -0,0 +1,1059 @@ + + + + + Flow_12b9yhd + + + + Flow_12b9yhd + Flow_0tgn37q + + + + Flow_0tgn37q + Flow_0w3nr57 + + ${nrOfInstances == nrOfCompletedInstances} + + + Flow_1g6zc95 + + + + Flow_1g6zc95 + Flow_06h9ihd + + + + Flow_1r3w91d + Flow_0obo4r2 + + ${nrOfInstances == nrOfCompletedInstances} + + + Flow_0xb4gtd + + + + + + + Flow_07hxwn8 + Flow_1gwkusz + Flow_197effc + + ${nrOfInstances == nrOfCompletedInstances} + + + + + + + Flow_197effc + Flow_1w5wrt4 + + + Flow_1w5wrt4 + Flow_1m6dxws + Flow_07hxwn8 + + + + Flow_1m6dxws + + + ${pass} + + + ${!pass} + + + + + + Flow_0xb4gtd + Flow_0a6biwg + + + + + Flow_0a6biwg + Flow_15xpnyd + Flow_1gwkusz + + + Flow_15xpnyd + + + ${designEngineerListSize == 0} + + + ${designEngineerListSize > 0} + + + + + Flow_06h9ihd + Flow_1yporul + Flow_1r3w91d + + + Flow_1yporul + + + ${moduleOwnerListSize == 0} + + + ${moduleOwnerListSize > 0} + + + Flow_0q2chl1 + Flow_04bioxt + Flow_1rrn9dm + + + + + + + ${notInvolvedModuleOwnerListSize > 0} + + + ${moduleOwnerListSize > 0} + + + ${pass} + + + ${!pass} + + + + Flow_11i64js + 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 + + + + + + + Flow_1al6zeq + Flow_1m13a5m + Flow_11c0pso + + ${nrOfInstances == nrOfCompletedInstances} + + + + + + + Flow_11c0pso + Flow_0gzlhk1 + + + Flow_0gzlhk1 + Flow_1al6zeq + Flow_1tfvdpt + + + Flow_1tfvdpt + + + ${!pass} + + + + + ${pass} + + + + + + + Flow_18i416j + Flow_1m13a5m + + + + + Flow_132fp4x + + + Flow_10o9sl2 + Flow_11i64js + Flow_132fp4x + + + Flow_1rrn9dm + Flow_0obo4r2 + Flow_10o9sl2 + + + + + Flow_1gw9i5e + Flow_0c3ic1y + Flow_0mngw8y + + + + ${pass} + + + Flow_19ehxvl + + + + Flow_0w3nr57 + Flow_03v0fem + Flow_1gw9i5e + + + Flow_0c3ic1y + Flow_19ehxvl + + ${nrOfInstances == nrOfCompletedInstances} + + + + Flow_0mngw8y + Flow_03v0fem + + ${nrOfInstances == nrOfCompletedInstances} + + + Flow_0x6qt62 + + + Flow_0x6qt62 + Flow_0uhjeie + Flow_117rgu5 + + + Flow_0ljfd7s + Flow_0zsh74h + + ${nrOfInstances == nrOfCompletedInstances} + + + + + + Flow_1wjzl0u + Flow_19fpo83 + + + Flow_19fpo83 + Flow_0j9t3br + Flow_0920pid + + + Flow_0920pid + + + Flow_1lw0nd8 + + + + + + Flow_0j9t3br + Flow_1y4773i + Flow_1wjzl0u + + ${nrOfInstances == nrOfCompletedInstances} + + + + + ${!pass} + + + ${pass} + + + + + + + + + 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} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +