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 2cb22fb3..e481db26 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 @@ -59,7 +59,7 @@ public class MyGlobalEventListener implements ActivitiEventListener { this.activityComplete(event); break; default: - log.info("Event received: " + event.getType()); + //log.info("Event received: " + event.getType()); } } 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 new file mode 100644 index 00000000..a94831c7 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/projectassess/common/ProcessProjectAssessCommon.java @@ -0,0 +1,10 @@ +package com.jero.modules.activiti.process.projectassess.common; + +/** + * @author liJiaRao + * @date 2023-12-13 17:28 + */ +public class ProcessProjectAssessCommon { + public static String standardsEngineer = "standardsEngineer"; + public static String managerLeaderList = "managerLeaderList"; +} 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 14d6fb8d..0e54e70d 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,30 +1,41 @@ package com.jero.modules.activiti.process.projectassess.service; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.collection.CollectionUtil; +import com.jero.common.api.vo.ResultCommon; +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.LoginUser; import com.jero.modules.activiti.enums.ProcessTypeEnum; 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.service.IProcessHandleService; +import com.jero.modules.activiti.process.projectassess.common.ProcessProjectAssessCommon; import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTerm; import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessTermUser; import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssessLink; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; import com.jero.modules.activiti.process.projectassess.vo.ProcessProjectAssessVO; +import com.jero.modules.laws.common.util.CurrentUserUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; + import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAssess; import com.jero.modules.activiti.process.projectassess.mapper.ProcessProjectAssessMapper; +import org.springframework.transaction.annotation.Transactional; + /** * *@author liJiaRao *@date 2023-12-05 15:57 */ @Service +@Transactional(rollbackFor = Exception.class) public class ProcessProjectAssessService extends ServiceImpl { @Resource private ISysBaseAPI sysBaseAPI; @@ -59,47 +70,58 @@ public class ProcessProjectAssessService extends ServiceImpl processProjectAssessLinkList = businessInfoDTO.getProcessProjectAssessLinkList(); for (ProcessProjectAssessLink processProjectAssessLink : processProjectAssessLinkList) { - processProjectAssessLink.setAssessmentId(id); + processProjectAssessLink.setId(null); + processProjectAssessLink.setAssessmentId(assessmentId); } processProjectAssessLinkService.saveBatch(processProjectAssessLinkList); - + //保存关联的条款、标准 List processProjectAssessTermList = businessInfoDTO.getProcessProjectAssessTermList(); for (ProcessProjectAssessTerm processProjectAssessTerm : processProjectAssessTermList) { - processProjectAssessTerm.setAssessmentId(id); + processProjectAssessTerm.setAssessmentId(assessmentId); } processProjectAssessTermService.saveBatch(processProjectAssessTermList); - + //保存条款和负责人的关联关系 + List AllResponsibleUnitLeaderList = new ArrayList<>(); List saveProcessProjectAssessTermUserList = new ArrayList<>(); - List processProjectAssessTermUserList = businessInfoDTO.getProcessProjectAssessTermUserList(); - for (ProcessProjectAssessTermUser processProjectAssessTermUser : processProjectAssessTermUserList) { - processProjectAssessTermUser.setAssessmentId(id); - String responsibleUnitLeader = processProjectAssessTermUser.getResponsibleUnitLeader(); - String responsibleUnit = processProjectAssessTermUser.getResponsibleUnit(); - if (StringUtils.isBlank(responsibleUnitLeader)||StringUtils.isBlank(responsibleUnit)){ + for (ProcessProjectAssessTerm processProjectAssessTerm : processProjectAssessTermList) { + String termId = processProjectAssessTerm.getId(); + processProjectAssessTerm.setAssessmentId(assessmentId); + Integer canAssignFlag = processProjectAssessTerm.getCanAssignFlag(); + //如果是不需要分派的先跳过 + if (YesOrNoEnum.NO.getInteger().equals(canAssignFlag)){ continue; } - String[] responsibleUnitLeaderSplit = responsibleUnitLeader.split(","); - String[] responsibleUnitSplit = responsibleUnit.split(","); - for (int i = 0; i < responsibleUnitLeaderSplit.length; i++) { - String responsibleUnitLeaderId = responsibleUnitLeaderSplit[i]; - String responsibleUnitId = responsibleUnitSplit[i]; - ProcessProjectAssessTermUser saveProcessProjectAssessTermUser = new ProcessProjectAssessTermUser(); - - saveProcessProjectAssessTermUser.setAssessmentId(id); - saveProcessProjectAssessTermUser.setTremId(processProjectAssessTermUser.getTremId()); - saveProcessProjectAssessTermUser.setResponsibleUnit(responsibleUnitId); - saveProcessProjectAssessTermUser.setResponsibleUnitLeader(responsibleUnitLeaderId); - saveProcessProjectAssessTermUserList.add(saveProcessProjectAssessTermUser); + String responsibleUnitLeaders = processProjectAssessTerm.getResponsibleUnitLeaders(); + if (StringUtils.isBlank(responsibleUnitLeaders)){ + throw new JeroBootException(ResultCommon.PARAMETER_NOT_RECOGNIZED); } + //去重 + List responsibleUnitLeaderList = Arrays.asList(responsibleUnitLeaders.split(",")); + List distinctResponsibleUnitLeader = responsibleUnitLeaderList.stream().distinct().collect(Collectors.toList()); + for (String responsibleUnitLeader : distinctResponsibleUnitLeader) { + ProcessProjectAssessTermUser processProjectAssessTermUser = new ProcessProjectAssessTermUser(); + processProjectAssessTermUser.setAssessmentId(assessmentId); + processProjectAssessTermUser.setTremId(termId); + processProjectAssessTermUser.setResponsibleUnitLeader(responsibleUnitLeader); + saveProcessProjectAssessTermUserList.add(processProjectAssessTermUser); + } + AllResponsibleUnitLeaderList.addAll(distinctResponsibleUnitLeader); } + List distinctAllResponsibleUnitLeaderList = AllResponsibleUnitLeaderList.stream().distinct().collect(Collectors.toList()); + String distinctAllResponsibleUnitLeaderListJoin = CollectionUtil.join(distinctAllResponsibleUnitLeaderList, ","); processProjectAssessTermUserService.saveBatch(saveProcessProjectAssessTermUserList); BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); basicProcessInfoDTO.setProcessDefinitionId(processHandleService.getDefinitionIdByKey(ProcessDefinitionKey.PROJECT_ASSESS)); // 流程定义id basicProcessInfoDTO.setProcessType(ProcessTypeEnum.PROJECT_ASSESS.getValue()); // 流程类型 + Map userInfoMap = new HashMap<>(); + userInfoMap.put(ProcessProjectAssessCommon.standardsEngineer, CurrentUserUtil.getId()); + userInfoMap.put(ProcessProjectAssessCommon.managerLeaderList, distinctAllResponsibleUnitLeaderListJoin); + processInfoVO.setUserInfoMap(userInfoMap); processHandleService.startProcess(processInfoVO);