update 项目合规评估流程 部分节点增加createListener

This commit is contained in:
lijiarao
2023-12-15 20:38:04 +08:00
parent 67520905d1
commit 51dcacfe9e
5 changed files with 128 additions and 5 deletions
@@ -1,5 +1,6 @@
package com.jero.modules.activiti.process.fb.service.impl;
import cn.hutool.core.collection.CollStreamUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
@@ -10,6 +11,7 @@ import com.jero.modules.activiti.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.fb.common.FbCommon;
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;
@@ -22,12 +24,17 @@ 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.HistoryService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricTaskInstanceQuery;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ExecutionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -50,6 +57,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService {
@Resource
private TaskService taskService;
@Resource
private HistoryService historyService;
@Resource
private RepositoryService repositoryService;
@Resource
private ProcessAllService processAllService; // 流程实例总表
@@ -0,0 +1,24 @@
package com.jero.modules.activiti.process.projectassess.listener;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import java.util.Date;
/**
* @author liJiaRao
* @date 2023-10-13 16:43
*/
public class ProcessProjectAssessCreateListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
ProcessProjectAssessService processProjectAssessService = SpringContextUtil.getBean(ProcessProjectAssessService.class);
processProjectAssessService.createListener(delegateTask);
}
}
@@ -8,7 +8,6 @@ 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.ComboModel;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
@@ -26,8 +25,11 @@ 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.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.task.Task;
import org.apache.commons.lang3.StringUtils;
@@ -56,8 +58,12 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
@Resource
private ProcessAllService processAllService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private TaskService taskService;
@Resource
private RuntimeService runtimeService;
@Resource
private ProcessProjectAssessLinkService processProjectAssessLinkService;
@Resource
private ProcessProjectAssessTermService processProjectAssessTermService;
@@ -88,9 +94,11 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
Task task = processDTO.getTask();
String taskDefinitionKey = task.getTaskDefinitionKey();
Execution execution = processDTO.getExecution();
String executionParentId = execution.getParentId();
String executionParentId = (String) runtimeService.getVariable(execution.getId(),"flowIndex");
//String executionParentId = execution.getParentId();
List<ProcessProjectAssessTermUser> processProjectAssessTermUserList = new ArrayList<>();
List<ProcessProjectAssessTerm> processProjectAssessTermList = new ArrayList<>();
//获取所有用户信息
@@ -286,21 +294,42 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
Task task = processDTO.getTask();
String taskDefinitionKey = task.getTaskDefinitionKey();
switch (taskDefinitionKey) {
//各部门主管级领导下发
case ProcessProjectAssessCommon.GBMZGJLDXF:
gbmzgjldxfSubmit(processInfoVO,processDTO);
break;
case ProcessProjectAssessCommon.GBMZGJLDSP:
break;
//模块负责人分发
case ProcessProjectAssessCommon.MKFZRFF:
mkfzrffSubmit(processInfoVO,processDTO);
break;
//设计工程师评估
case ProcessProjectAssessCommon.SJGCSPG:
break;
//模块负责人修改
case ProcessProjectAssessCommon.MKFZRXG:
break;
//法规工程师归档
case ProcessProjectAssessCommon.FGGCSGD:
break;
default:
}
}
private void mkfzrffSubmit(ProcessInfoVO<ProcessProjectAssessVO> processInfoVO, ProcessDTO processDTO) {
String businessId = processInfoVO.getBusinessId();
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
String originUserId = processApprovalRecord.getOriginUserId();
Task task = processDTO.getTask();
String executionId = task.getExecutionId();
// 删除原先存储的关联
LambdaQueryWrapper<ProcessProjectAssessTermUser> removeWrapper = new LambdaQueryWrapper<>();
removeWrapper.eq(ProcessProjectAssessTermUser::getAssessmentId, businessId);
removeWrapper.eq(ProcessProjectAssessTermUser::getResponsibleUnitLeader, originUserId);
processProjectAssessTermUserService.remove(removeWrapper);
}
private void gbmzgjldxfSubmit(ProcessInfoVO<ProcessProjectAssessVO> processInfoVO, ProcessDTO processDTO) {
String businessId = processInfoVO.getBusinessId();
ProcessApprovalRecord processApprovalRecord = processDTO.getProcessApprovalRecord();
@@ -349,11 +378,15 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
}
}
processProjectAssessTermUserService.saveBatch(allTermUserList);
if (moduleOwnerIds.isEmpty()){
throw new JeroBootException(ResultCommon.ProjectAssess);
}
processHandleService.saveNodeUserLink(processDTO.getProcessInstanceId(), ProcessProjectAssessCommon.GBMZGJLDXF, moduleOwnerIds);
// 完成任务
String taskId = processDTO.getTaskId();
Map<String, Object> variables = new HashMap<>();
variables.put(ProcessProjectAssessCommon.MODULE_OWNER_LIST, moduleOwnerIds);
variables.put("flowIndex", executionId);
taskService.complete(taskId,variables);
}
@@ -372,4 +405,44 @@ public class ProcessProjectAssessService extends ServiceImpl<ProcessProjectAsses
processHandleService.saveToDraft(processInfoVO);
}
public void createListener(DelegateTask delegateTask) {
String taskDefinitionKey = delegateTask.getTaskDefinitionKey();
String assignee = delegateTask.getAssignee();
String processInstanceId = delegateTask.getProcessInstanceId();
//查询我最新提交的task
ProcessApprovalRecord myLastComplete = processApprovalRecordService.getMyLastComplete(processInstanceId);
String lastCompleteTaskId = myLastComplete.getTaskId();
ProcessDTO processDTO = processHandleService.getProcessDTO(lastCompleteTaskId);
Execution execution = processDTO.getExecution();
delegateTask.setFormKey(execution.getId());
switch (taskDefinitionKey) {
//各部门主管级领导下发
case ProcessProjectAssessCommon.GBMZGJLDXF:
break;
//各部门主管级领导(汇总)审批
case ProcessProjectAssessCommon.GBMZGJLDSP:
break;
//模块负责人分发
case ProcessProjectAssessCommon.MKFZRFF:
break;
//模块负责人审批
case ProcessProjectAssessCommon.MKFZRSP:
//模块负责人修改
case ProcessProjectAssessCommon.MKFZRXG:
break;
//设计工程师评估
case ProcessProjectAssessCommon.SJGCSPG:
break;
//法规工程师归档
case ProcessProjectAssessCommon.FGGCSGD:
break;
default:
}
}
}
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.query.QueryGenerator;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.laws.common.util.CurrentUserUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -51,4 +52,15 @@ public class ProcessApprovalRecordService extends ServiceImpl<ProcessApprovalRec
}
return pageList;
}
public ProcessApprovalRecord getMyLastComplete(String processInstanceId) {
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
wrapper.eq(ProcessApprovalRecord::getUserId, CurrentUserUtil.getId());
wrapper.eq(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.COMPLETE.getValue());
wrapper.orderByDesc(ProcessApprovalRecord::getEndTime);
wrapper.last("limit 1");
ProcessApprovalRecord approvalRecord = this.getOne(wrapper);
return approvalRecord;
}
}