add 各部门主管级领导下发submit

This commit is contained in:
lijiarao
2023-12-14 20:29:49 +08:00
parent ada56b6ef1
commit 28ca7f09f6
6 changed files with 144 additions and 5 deletions
@@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.fb.dto;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import lombok.Data;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
@@ -25,4 +26,6 @@ public class ProcessDTO {
private ProcessApprovalRecord processApprovalRecord;
private Execution execution;
}
@@ -113,4 +113,6 @@ public interface IProcessHandleService {
* @Description: 获取全部子流程实例
**/
List<ProcessInstance> subProcessList(String superProcessInstanceId, String subProcessDefinitionKey);
void saveNodeUserLink(String processInstanceId, String nodeId, List<String> userIdList);
}
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
@@ -13,11 +15,11 @@ 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.vo.ProcessProjectAssessVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.common.api.vo.ResultCommon;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RepositoryService;
@@ -27,7 +29,6 @@ import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -55,6 +56,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
@Resource
private ProcessApprovalRecordService processApprovalRecordService; // 任务审批表
@Resource
private ProcessNodeService processNodeService;
@Resource
private ProcessNodeLinkService processNodeLinkService; // 流程实例节点关联用户表
@Resource
private ProcessDraftService processDraftService; // 流程草稿表
@@ -226,16 +229,18 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
public ProcessDTO getProcessDTO(String taskId) {
ProcessDTO processDTO = new ProcessDTO();
ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
processDTO.setProcessApprovalRecord(processApprovalRecord);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
String processDefinitionId = processInstance.getProcessDefinitionId();
Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult();
processDTO.setTaskId(taskId);
processDTO.setProcessInstanceId(processInstanceId);
processDTO.setProcessDefinitionId(processDefinitionId);
processDTO.setProcessApprovalRecord(processApprovalRecord);
processDTO.setTask(task);
processDTO.setProcessInstance(processInstance);
processDTO.setExecution(execution);
return processDTO;
}
@@ -463,4 +468,33 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
.list();
}
/**
* 保存流程定义节点用户
* @param processInstanceId
* @param nodeId
* @param userIdList
*/
@Override
public void saveNodeUserLink(String processInstanceId, String nodeId, List<String> userIdList) {
String processDefinitionId = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId).singleResult().getProcessDefinitionId();
LambdaQueryWrapper<ProcessNode> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessNode::getProcessDefinitionId, processDefinitionId);
queryWrapper.eq(ProcessNode::getIsView, 1);
queryWrapper.eq(ProcessNode::getXmlNodeId, nodeId);
ProcessNode processNode = processNodeService.getOne(queryWrapper, false);
List<ProcessNodeLink> linkList = new ArrayList<>();
userIdList.forEach(userId -> {
ProcessNodeLink link = new ProcessNodeLink();
link.setProcessDefinitionId(processDefinitionId);
link.setProcessNodeId(processNode.getId());
link.setProcessInstanceId(processInstanceId);
link.setUserId(userId);
linkList.add(link);
});
processNodeLinkService.saveBatch(linkList, linkList.size());
}
}
@@ -7,6 +7,7 @@ package com.jero.modules.activiti.process.projectassess.common;
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 FGGCSFQ = "fggcsfq";
//各部门主管级领导下发
@@ -8,7 +8,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -114,10 +113,23 @@ public class ProcessProjectAssessTerm {
@TableField(exist = false)
@ApiModelProperty(value = "责任单位负责人id")
private String responsibleUnitLeaders;
/**
* 模块负责人id
*/
@TableField(exist = false)
@ApiModelProperty(value = "模块负责人id")
private String moduleOwners;
/**
* 不涉及原因
*/
@TableField(exist = false)
@ApiModelProperty(value = "不涉及原因")
private String notInvolved;
@TableField(exist = false)
@ApiModelProperty(value = "条款关联用户")
private List<ProcessProjectAssessTermUser> processProjectAssessTermUserListList;
private List<ProcessProjectAssessTermUser> processProjectAssessTermUserList;
}
@@ -1,14 +1,20 @@
package com.jero.modules.activiti.process.projectassess.service;
import java.util.List;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.fb.common.ConsultationNodeSort;
import com.jero.modules.activiti.process.fb.common.FbCommon;
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.projectassess.common.ProcessProjectAssessCommon;
@@ -18,7 +24,9 @@ import com.jero.modules.activiti.process.projectassess.entity.ProcessProjectAsse
import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.projectassess.vo.ProcessProjectAssessVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -44,6 +52,10 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
@Resource
private IProcessHandleService processHandleService;
@Resource
private ProcessAllService processAllService;
@Resource
private TaskService taskService;
@Resource
private ProcessProjectAssessLinkService processProjectAssessLinkService;
@Resource
private ProcessProjectAssessTermService processProjectAssessTermService;
@@ -191,7 +203,82 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
}
public void submit(ProcessInfoVO<ProcessProjectAssessVO> 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();
switch (taskDefinitionKey) {
case ProcessProjectAssessCommon.GBMZGJLDXF:
gbmzgjldxfSubmit(processInfoVO,processDTO);
break;
case ProcessProjectAssessCommon.GBMZGJLDSP:
break;
case ProcessProjectAssessCommon.MKFZRFF:
break;
case ProcessProjectAssessCommon.SJGCSPG:
break;
default:
}
}
private void gbmzgjldxfSubmit(ProcessInfoVO<ProcessProjectAssessVO> processInfoVO, ProcessDTO processDTO) {
String businessId = processInfoVO.getBusinessId();
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
// 删除原先存储的关联
LambdaQueryWrapper<ProcessProjectAssessTermUser> removeWrapper = new LambdaQueryWrapper<>();
removeWrapper.eq(ProcessProjectAssessTermUser::getAssessmentId, businessId);
removeWrapper.eq(ProcessProjectAssessTermUser::getResponsibleUnitLeader, originUserId);
processProjectAssessTermUserService.remove(removeWrapper);
ProcessProjectAssessVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
List<ProcessProjectAssessTerm> processProjectAssessTermList = businessInfoDTO.getProcessProjectAssessTermList();
List<ProcessProjectAssessTermUser> allTermUserList = new ArrayList<>();
List<String> moduleOwnerIds = 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.setTremId(termId);
newTermUser.setResponsibleUnitLeader(originUserId);
//newTermUser.setParentExecutionId();
newTermUser.setNotInvolved(notInvolved);
allTermUserList.add(newTermUser);
continue;
}
String moduleOwners = processProjectAssessTerm.getModuleOwners();
List<String> moduleOwnerIdList = Arrays.asList(moduleOwners.split(","));
for (String moduleOwnerId : moduleOwnerIdList) {
ProcessProjectAssessTermUser newTermUser = new ProcessProjectAssessTermUser();
newTermUser.setAssessmentId(businessId);
newTermUser.setTremId(termId);
newTermUser.setResponsibleUnitLeader(originUserId);
//newTermUser.setParentExecutionId();
newTermUser.setModuleOwner(moduleOwnerId);
moduleOwnerIds.add(moduleOwnerId);
allTermUserList.add(newTermUser);
}
}
processProjectAssessTermUserService.saveBatch(allTermUserList);
processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.GBMZGJLDXF, moduleOwnerIds);
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
variables.put(ProcessProjectAssessCommon.MODULE_OWNER_LIST, moduleOwnerIds);
taskService.complete(taskId,variables);
}
public void saveToDraft(ProcessInfoVO<ProcessProjectAssessVO> processInfoVO) {