fix: 80778 企标更改流程--人员信息--发起节点提交记录的审批意见是同意
This commit is contained in:
+27
-9
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
+1
-73
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user