fix: 80778 企标更改流程--人员信息--发起节点提交记录的审批意见是同意

This commit is contained in:
2024-01-15 14:06:25 +08:00
parent 65a620a9cd
commit 00b59bf9e1
2 changed files with 28 additions and 82 deletions
@@ -8,12 +8,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.enums.CommitFlagEnum;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeService;
import com.jero.modules.activiti.util.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.event.ActivitiEvent;
@@ -69,7 +71,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
return false;
}
private void activityStarted(ActivitiEvent event){
private void activityStarted(ActivitiEvent event) {
log.info("===================流程开始事件===================");
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
@@ -160,19 +162,23 @@ public class MyGlobalEventListener implements ActivitiEventListener {
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
Date createTime = approvalRecord.getCreateTime();
DateTime date = DateUtil.date();
// 如果date小于createTime+一秒,说明是在同一秒内完成的,需要加一秒,解决流程审批信息发起节点和下一节点创建时间一致,排序错乱问题
if (date.isBeforeOrEquals(DateUtil.offsetSecond(createTime, 1))) {
date.setTime(createTime.getTime() + 1000);
}
DateBetween between = date.between(createTime);
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
approvalRecord.setEndTime(date);
approvalRecord.setOverTime(between.toString());
Map<String, Object> variables = delegateTask.getVariables();
if (variables.containsKey("pass")){
if ((Boolean)variables.get("pass")){
// 第一个节点不需要设置commitFlag
if (variables.containsKey("pass") && !isFirstNodeTask(approvalRecord)) {
if ((Boolean) variables.get("pass")) {
approvalRecord.setCommitFlag(CommitFlagEnum.PASS.getValue());
}else {
} else {
approvalRecord.setCommitFlag(CommitFlagEnum.REJECT.getValue());
}
}
recordService.updateById(approvalRecord);
@@ -186,7 +192,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
log.info("taskEntity.getVariables() = " + variables);
}
private void activityComplete(ActivitiEvent event){
private void activityComplete(ActivitiEvent event) {
log.info("===================流程完成事件===================");
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
@@ -201,10 +207,10 @@ public class MyGlobalEventListener implements ActivitiEventListener {
//更新流程总表信息为已完成
LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(ProcessAll::getProcessInstanceId,processInstanceId);
wrapper.eq(ProcessAll::getProcessInstanceId, processInstanceId);
wrapper.set(ProcessAll::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
wrapper.set(ProcessAll::getEndTime,date);
wrapper.set(ProcessAll::getOverTime,between.toString());
wrapper.set(ProcessAll::getEndTime, date);
wrapper.set(ProcessAll::getOverTime, between.toString());
processAllService.update(wrapper);
log.info("id = " + execution.getId());
log.info("name = " + execution.getName());
@@ -212,4 +218,16 @@ public class MyGlobalEventListener implements ActivitiEventListener {
log.info("taskEntity.getDeploymentId() = " + execution.getDeploymentId());
log.info("taskEntity.getProcessDefinitionId() = " + execution.getProcessDefinitionId());
}
private boolean isFirstNodeTask(ProcessApprovalRecord record) {
String processInstanceId = record.getProcessInstanceId();
ProcessAllService processAllService = SpringContextUtil.getBean(ProcessAllService.class);
ProcessAll process = processAllService.getOne(new LambdaQueryWrapper<ProcessAll>()
.eq(ProcessAll::getProcessInstanceId, processInstanceId));
ProcessNodeService processNodeService = SpringContextUtil.getBean(ProcessNodeService.class);
ProcessNode node = processNodeService.getOne(new LambdaQueryWrapper<ProcessNode>()
.eq(ProcessNode::getProcessDefinitionId, process.getProcessDefinitionId())
.eq(ProcessNode::getSort, 1));
return record.getNodeId().equals(node.getXmlNodeId()) && record.getTaskName().equals(node.getNodeName());
}
}
@@ -167,25 +167,6 @@ public class ActFlowCommonService {
processApprovalRecordService.updateById(approvalRecord);
}
/**
* 发起流程之后更新审批表(审批意见置空)
* @param commonVO
* @param taskId
* @param pass
*/
public void updateApprovalInfoStart(CommonVO commonVO, String taskId, boolean pass) {
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
approvalRecord.setCommitText(commonVO.getCommitText());
approvalRecord.setCommitFile(commonVO.getCommitFile());
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
approvalRecord.setEndTime(new Date());
// 使用流程引擎根据TaskId找到NodeId
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String nodeId = task.getTaskDefinitionKey();
approvalRecord.setNodeId(nodeId);
processApprovalRecordService.updateById(approvalRecord);
}
public ProcessApprovalRecord getNodeIdByTaskId(String taskId) {
return processApprovalRecordService.getToDoByTaskId(taskId);
}
@@ -285,8 +266,6 @@ public class ActFlowCommonService {
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
log.info("匹配到的任务ID{}", map.get("taskId").toString());
String taskId = map.get("taskId").toString();
// 更新审批表为完成,填充数据
this.updateApprovalInfoStart(commonVO, taskId, true);
this.completeTask(taskId, userId);
break;
}
@@ -383,43 +362,6 @@ public class ActFlowCommonService {
processDraftService.remove(draftWrapper);
}
public void addDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String newBusinessId) {
String taskId = common.getTaskId();
String processInstanceId = common.getProcessInstanceId();
// 新增草稿表数据
ProcessDraft draft = new ProcessDraft();
if (StrUtil.isNotBlank(taskId) && StrUtil.isNotBlank(processInstanceId)) {
draft.setProcessInstanceId(processInstanceId);
draft.setTaskId(taskId);
}
draft.setPrcName(common.getPrcName());
draft.setPrcType(processTypeEnum.getValue());
draft.setHandleText(common.getCommitText()); // 流程审批信息-备注
draft.setHandleFile(common.getCommitFile()); // 流程审批信息-附件
draft.setProcessDueDate(common.getDueTime()); // 流程审批信息-附件
draft.setProcessDescription(common.getPrcMes()); // 流程审批信息-附件
draft.setUserId(CurrentUserUtil.getId()); // 用户id
draft.setProjectId(newBusinessId);
processDraftService.save(draft);
}
public CommonVO getDraftCommon(ProcessDraft draft) {
String taskId = draft.getTaskId();
CommonVO commonVO = new CommonVO();
commonVO.setPrcName(draft.getPrcName());
commonVO.setCommitText(draft.getHandleText());
commonVO.setCommitFile(draft.getHandleFile());
commonVO.setDueTime(draft.getProcessDueDate());
commonVO.setPrcMes(draft.getProcessDescription());
commonVO.setTaskId(taskId);
commonVO.setProcessInstanceId(draft.getProcessInstanceId());
if (StrUtil.isNotBlank(taskId)) {
ProcessApprovalRecord record = this.getNodeIdByTaskId(taskId);
commonVO.setNodeId(record.getNodeId());
}
return commonVO;
}
public CommonVO getHandleCommon(String taskId) {
String processInstanceId = this.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = this.getProcessDefId(processInstanceId);
@@ -466,21 +408,6 @@ public class ActFlowCommonService {
processApprovalRecordService.update(updateWrapper);
}
/**
* 会签节点驳回后,将其余节点recode设置为 未处理 状态
*
* @param prcId
* @param nodeName
*/
public void cleanOtherCountersignTask(String prcId, String nodeName) {
LambdaUpdateWrapper<ProcessApprovalRecord> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ProcessApprovalRecord::getProcessInstanceId, prcId);
updateWrapper.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue());
updateWrapper.eq(ProcessApprovalRecord::getTaskName, nodeName);
updateWrapper.set(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue());
processApprovalRecordService.update(updateWrapper);
}
/**
* 根据指定的执行Id递归获取所有子执行Id
*
@@ -518,6 +445,7 @@ public class ActFlowCommonService {
/**
* 强制撤回流程-保存草稿
*
* @param common
* @param processTypeEnum
* @param data