diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/common/ProcessProjectAssessCommon.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/common/ProcessProjectAssessCommon.java index 7c6e516e..bc2e96e3 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/common/ProcessProjectAssessCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/common/ProcessProjectAssessCommon.java @@ -8,6 +8,8 @@ public class ProcessProjectAssessCommon { 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 DESIGN_ENGINEER_LIST = "designEngineerList"; + public static final String PASS = "pass"; //法规工程师发起 public static final String FGGCSFQ = "fggcsfq"; //各部门主管级领导下发 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/entity/ProcessProjectAssessTerm.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/entity/ProcessProjectAssessTerm.java index d703eabc..8d82c47a 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/entity/ProcessProjectAssessTerm.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/entity/ProcessProjectAssessTerm.java @@ -100,6 +100,13 @@ public class ProcessProjectAssessTerm { @ApiModelProperty(value = "可以分派标识") private Integer canAssignFlag; + /** + * 条款关联用户表ID + */ + @TableField(exist = false) + @ApiModelProperty(value = "条款关联用户表ID") + private String termUserId; + /** * 责任单位id */ @@ -111,15 +118,22 @@ public class ProcessProjectAssessTerm { * 责任单位负责人id */ @TableField(exist = false) - @ApiModelProperty(value = "责任单位负责人id") + @ApiModelProperty(value = "责任单位负责人ids") private String responsibleUnitLeaders; /** * 模块负责人id */ @TableField(exist = false) - @ApiModelProperty(value = "模块负责人id") + @ApiModelProperty(value = "模块负责人ids") private String moduleOwners; + /** + * 设计工程师 + */ + @TableField(exist = false) + @ApiModelProperty(value = "设计工程师ids") + private String designEngineers; + /** * 不涉及原因 */ @@ -137,5 +151,35 @@ public class ProcessProjectAssessTerm { @ApiModelProperty(value = "条款关联用户") private List processProjectAssessTermUserList; + /** + * 评估反馈 + */ + @TableField(exist = false) + @ApiModelProperty(value = "评估反馈") + private Integer evaluationFeedback; + + /** + * 依据描述 + */ + @TableField(exist = false) + @ApiModelProperty(value = "依据描述") + private String description; + + /** + * 佐证材料 + */ + @TableField(exist = false) + @ApiModelProperty(value = "佐证材料") + private String fileId; + + /** + * 预计整改完成日期 + */ + @TableField(exist = false) + @ApiModelProperty(value = "预计整改完成日期") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date expectedTime; + } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/mapper/xml/ProcessProjectAssessTermMapper.xml b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/mapper/xml/ProcessProjectAssessTermMapper.xml index e8bae6a5..5ddeb9a9 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/mapper/xml/ProcessProjectAssessTermMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/mapper/xml/ProcessProjectAssessTermMapper.xml @@ -17,6 +17,7 @@ + @@ -42,6 +43,8 @@ + , + ppatu.id termUserId from process_project_assess_term ppat left join process_project_assess_term_user ppatu on ppat.id = ppatu.term_id where ppat.assessment_id = #{assessmentId} @@ -55,6 +58,8 @@ + , + ppatu.id termUserId from process_project_assess_term ppat left join process_project_assess_term_user ppatu on ppat.id = ppatu.term_id where ppat.assessment_id = #{assessmentId} 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 bd549014..13a662d3 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 @@ -1,4 +1,6 @@ package com.jero.modules.activiti.process.projectassess.service; + +import java.util.Date; import java.util.List; import cn.hutool.core.collection.CollStreamUtil; @@ -34,6 +36,7 @@ import org.activiti.engine.runtime.Execution; import org.activiti.engine.task.Task; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; + import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @@ -44,10 +47,9 @@ import com.jero.modules.activiti.process.projectassess.mapper.ProcessProjectAsse import org.springframework.transaction.annotation.Transactional; /** - * - *@author liJiaRao - *@date 2023-12-05 15:57 - */ + * @author liJiaRao + * @date 2023-12-05 15:57 + */ @Service @Transactional(rollbackFor = Exception.class) public class ProcessProjectAssessService extends ServiceImpl { @@ -84,10 +86,10 @@ public class ProcessProjectAssessService extends ServiceImpl queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { - if (StringUtils.isNotBlank(draftId) && StringUtils.isBlank(taskId)){ - ProcessInfoVO draft = processHandleService.getDraft(draftId); - return draft; - } + if (StringUtils.isNotBlank(draftId) && StringUtils.isBlank(taskId)) { + ProcessInfoVO draft = processHandleService.getDraft(draftId); + return draft; + } ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId); String assessmentId = processInfoVO.getBusinessId(); ProcessDTO processDTO = processHandleService.getProcessDTO(taskId); @@ -95,31 +97,29 @@ public class ProcessProjectAssessService extends ServiceImpl processProjectAssessTermUserList = new ArrayList<>(); List processProjectAssessTermList = new ArrayList<>(); //获取所有用户信息 List userList = sysBaseAPI.getAllUser(); - Map userNameMap = new HashMap<>(); + Map userNameMap = new HashMap<>(); for (LoginUser loginUser : userList) { - userNameMap.put(loginUser.getId(),loginUser.calcNameWorkNo()); + userNameMap.put(loginUser.getId(), loginUser.calcNameWorkNo()); } //上一节点处理人 - Map previousNodeHandlerMap = new HashMap<>(); + Map previousNodeHandlerMap = new HashMap<>(); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessProjectAssessTermUser::getAssessmentId, assessmentId); switch (taskDefinitionKey) { //各部门主管级领导下发 case ProcessProjectAssessCommon.GBMZGJLDXF: - processProjectAssessTermList = processProjectAssessTermService.getByResponsibleUnitLeader(assessmentId,originUserId); + processProjectAssessTermList = processProjectAssessTermService.getByResponsibleUnitLeader(assessmentId, originUserId); break; //各部门主管级领导(汇总)审批 case ProcessProjectAssessCommon.GBMZGJLDSP: - processProjectAssessTermList = processProjectAssessTermService.getByResponsibleUnitLeader(assessmentId,originUserId); - wrapper.eq(ProcessProjectAssessTermUser::getResponsibleUnitLeader,originUserId); + processProjectAssessTermList = processProjectAssessTermService.getByResponsibleUnitLeader(assessmentId, originUserId); + wrapper.eq(ProcessProjectAssessTermUser::getResponsibleUnitLeader, originUserId); processProjectAssessTermUserList = processProjectAssessTermUserService.list(wrapper); previousNodeHandlerMap = processProjectAssessTermUserList.stream() .collect( @@ -132,15 +132,15 @@ public class ProcessProjectAssessService extends ServiceImpl { - return userNameMap.get(item.getModuleOwner()); + return userNameMap.get(item.getModuleOwner()); }, Collectors.joining(","))) ); @@ -174,7 +174,7 @@ public class ProcessProjectAssessService extends ServiceImpl { - return userNameMap.get(item.getResponsibleUnitLeader()); + return userNameMap.get(item.getResponsibleUnitLeader()); }, Collectors.joining(","))) ); @@ -184,7 +184,7 @@ public class ProcessProjectAssessService extends ServiceImpl> termIdListMap = CollStreamUtil.groupByKey(processProjectAssessTermUserList, ProcessProjectAssessTermUser::getTermId); for (ProcessProjectAssessTerm term : processProjectAssessTermList) { String termId = term.getId(); @@ -200,7 +200,7 @@ public class ProcessProjectAssessService extends ServiceImpl usedSplitInfoId = new ArrayList<>(); for (ProcessProjectAssessTerm term : processProjectAssessTermList) { String splitInfoId = term.getSplitInfoId(); - if (!usedSplitInfoId.contains(splitInfoId) && splitInfoIdMap.containsKey(splitInfoId)){ + if (!usedSplitInfoId.contains(splitInfoId) && splitInfoIdMap.containsKey(splitInfoId)) { usedSplitInfoId.add(splitInfoId); ProcessProjectAssessTerm titleTerm = splitInfoIdMap.get(splitInfoId); ProcessProjectAssessTerm term1 = new ProcessProjectAssessTerm(); @@ -245,11 +245,11 @@ public class ProcessProjectAssessService 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(); + processHandleService.updateApprovalRecord(processInfoVO); + switch (taskDefinitionKey) { + //模块负责人审批 + case ProcessProjectAssessCommon.MKFZRSP: + mkfzrspApprove(processInfoVO, processDTO, pass); + break; + //各部门主管级领导(汇总)审批 + case ProcessProjectAssessCommon.GBMZGJLDSP: + gbmzgjldspApprove(processInfoVO, processDTO, pass); + break; + default: + } } + private void mkfzrspApprove(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 gbmzgjldspApprove(ProcessInfoVO processInfoVO, ProcessDTO processDTO, boolean pass) { + // 完成任务 + String taskId = processDTO.getTaskId(); + Map variables = new HashMap<>(); + variables.put(ProcessProjectAssessCommon.PASS, pass); + taskService.complete(taskId, variables); + } + + public void submit(ProcessInfoVO processInfoVO) { BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); String taskId = basicTaskInfoDTO.getTaskId(); @@ -293,43 +330,32 @@ public class ProcessProjectAssessService extends ServiceImpl processInfoVO, ProcessDTO processDTO) { - String businessId = processInfoVO.getBusinessId(); - ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); - String originUserId = processApprovalRecord.getOriginUserId(); - Task task = processDTO.getTask(); - String executionId = task.getExecutionId(); - // 删除原先存储的关联 - LambdaQueryWrapper removeWrapper = new LambdaQueryWrapper<>(); - removeWrapper.eq(ProcessProjectAssessTermUser::getAssessmentId, businessId); - removeWrapper.eq(ProcessProjectAssessTermUser::getResponsibleUnitLeader, originUserId); - processProjectAssessTermUserService.remove(removeWrapper); } + //各部门主管级领导下发 private void gbmzgjldxfSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO) { String businessId = processInfoVO.getBusinessId(); ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); @@ -350,7 +376,7 @@ public class ProcessProjectAssessService extends ServiceImpl variables = new HashMap<>(); variables.put(ProcessProjectAssessCommon.MODULE_OWNER_LIST, moduleOwnerIds); - variables.put("flowIndex", executionId); - taskService.complete(taskId,variables); + taskService.complete(taskId, variables); } + //模块负责人分发 + private void mkfzrffSubmit(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(ProcessProjectAssessTermUser::getAssessmentId, businessId); + wrapper.eq(ProcessProjectAssessTermUser::getModuleOwner, originUserId); + wrapper.eq(ProcessProjectAssessTermUser::getParentExecutionId, executionId); + wrapper.last("limit 1"); + ProcessProjectAssessTermUser one = processProjectAssessTermUserService.getOne(wrapper); + String responsibleUnitLeader = one.getResponsibleUnitLeader(); + // 删除原先存储的关联 + LambdaQueryWrapper removeWrapper = new LambdaQueryWrapper<>(); + removeWrapper.eq(ProcessProjectAssessTermUser::getAssessmentId, businessId); + removeWrapper.eq(ProcessProjectAssessTermUser::getModuleOwner, originUserId); + removeWrapper.eq(ProcessProjectAssessTermUser::getParentExecutionId, executionId); + + processProjectAssessTermUserService.remove(removeWrapper); + + ProcessProjectAssessVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List processProjectAssessTermList = businessInfoDTO.getProcessProjectAssessTermList(); + List allTermUserList = new ArrayList<>(); + List designEngineerIds = new ArrayList<>(); + for (ProcessProjectAssessTerm processProjectAssessTerm : processProjectAssessTermList) { + String termId = processProjectAssessTerm.getId(); + Integer canAssignFlag = processProjectAssessTerm.getCanAssignFlag(); + String notInvolved = processProjectAssessTerm.getNotInvolved(); + if (YesOrNoEnum.NO.getInteger().equals(canAssignFlag)) { + continue; + } + if (StringUtils.isNotBlank(notInvolved)) { + ProcessProjectAssessTermUser newTermUser = new ProcessProjectAssessTermUser(); + newTermUser.setAssessmentId(businessId); + newTermUser.setTermId(termId); + newTermUser.setResponsibleUnitLeader(responsibleUnitLeader); + newTermUser.setModuleOwner(originUserId); + newTermUser.setParentExecutionId(executionId); + newTermUser.setNotInvolved(notInvolved); + allTermUserList.add(newTermUser); + continue; + } + + String designEngineers = processProjectAssessTerm.getDesignEngineers(); + List designEngineerIdList = Arrays.asList(designEngineers.split(",")); + for (String designEngineerId : designEngineerIdList) { + ProcessProjectAssessTermUser newTermUser = new ProcessProjectAssessTermUser(); + newTermUser.setAssessmentId(businessId); + newTermUser.setTermId(termId); + newTermUser.setResponsibleUnitLeader(responsibleUnitLeader); + newTermUser.setParentExecutionId(executionId); + newTermUser.setModuleOwner(originUserId); + newTermUser.setDesignEngineer(designEngineerId); + designEngineerIds.add(designEngineerId); + allTermUserList.add(newTermUser); + } + } + processProjectAssessTermUserService.saveBatch(allTermUserList); + if (designEngineerIds.isEmpty()) { + throw new JeroBootException(ResultCommon.ProjectAssess); + } + processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.MKFZRFF, designEngineerIds); + // 完成任务 + String taskId = processDTO.getTaskId(); + Map variables = new HashMap<>(); + variables.put(ProcessProjectAssessCommon.DESIGN_ENGINEER_LIST, designEngineerIds); + taskService.complete(taskId, variables); + } + + //设计工程师评估 + private void sjgcspgSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO) { + String businessId = processInfoVO.getBusinessId(); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + String executionId = task.getExecutionId(); + + ProcessProjectAssessVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List processProjectAssessTermList = businessInfoDTO.getProcessProjectAssessTermList(); + List allTermUserList = new ArrayList<>(); + for (ProcessProjectAssessTerm processProjectAssessTerm : processProjectAssessTermList) { + ProcessProjectAssessTermUser termUser = new ProcessProjectAssessTermUser(); + termUser.setId(processProjectAssessTerm.getTermUserId()); + termUser.setEvaluationFeedback(processProjectAssessTerm.getEvaluationFeedback()); + termUser.setDescription(processProjectAssessTerm.getDescription()); + termUser.setFileId(processProjectAssessTerm.getFileId()); + termUser.setExpectedTime(processProjectAssessTerm.getExpectedTime()); + allTermUserList.add(termUser); + } + processProjectAssessTermUserService.updateBatchById(allTermUserList); + // 完成任务 + String taskId = processDTO.getTaskId(); + taskService.complete(taskId); + } + + //模块负责人修改 + private void mkfzrxgSubmit(ProcessInfoVO processInfoVO, ProcessDTO processDTO) { + String businessId = processInfoVO.getBusinessId(); + ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord(); + String originUserId = processApprovalRecord.getOriginUserId(); + Task task = processDTO.getTask(); + String executionId = task.getExecutionId(); + + ProcessProjectAssessVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); + List processProjectAssessTermList = businessInfoDTO.getProcessProjectAssessTermList(); + List allTermUserList = new ArrayList<>(); + for (ProcessProjectAssessTerm processProjectAssessTerm : processProjectAssessTermList) { + ProcessProjectAssessTermUser termUser = new ProcessProjectAssessTermUser(); + termUser.setId(processProjectAssessTerm.getTermUserId()); + termUser.setEvaluationFeedback(processProjectAssessTerm.getEvaluationFeedback()); + termUser.setDescription(processProjectAssessTerm.getDescription()); + termUser.setFileId(processProjectAssessTerm.getFileId()); + termUser.setExpectedTime(processProjectAssessTerm.getExpectedTime()); + allTermUserList.add(termUser); + } + processProjectAssessTermUserService.updateBatchById(allTermUserList); + // 完成任务 + String taskId = processDTO.getTaskId(); + taskService.complete(taskId); + } + + public void saveToDraft(ProcessInfoVO processInfoVO) { ProcessProjectAssessVO businessInfoDTO = processInfoVO.getBusinessInfoDTO(); - if (businessInfoDTO!=null){ + if (businessInfoDTO != null) { ProcessProjectAssess processProjectAssess = businessInfoDTO.getProcessProjectAssess(); - if (processProjectAssess!=null){ + if (processProjectAssess != null) { processInfoVO.setBusinessId(processProjectAssess.getId()); } } @@ -410,39 +560,30 @@ public class ProcessProjectAssessService extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId); wrapper.eq(ProcessApprovalRecord::getUserId, CurrentUserUtil.getId()); wrapper.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.COMPLETE.getValue()); + wrapper.eq(StringUtils.isNotBlank(nodeId), ProcessApprovalRecord::getNodeId,nodeId); wrapper.orderByDesc(ProcessApprovalRecord::getEndTime); wrapper.last("limit 1"); ProcessApprovalRecord approvalRecord = this.getOne(wrapper);