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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.jero.modules.activiti.entity.ProcessAll;
|
import com.jero.modules.activiti.entity.ProcessAll;
|
||||||
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
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.CommitFlagEnum;
|
||||||
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||||
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
import com.jero.modules.activiti.enums.ProcessStatusEnum;
|
||||||
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
import com.jero.modules.activiti.enums.ProcessTypeEnum;
|
||||||
import com.jero.modules.activiti.service.ProcessAllService;
|
import com.jero.modules.activiti.service.ProcessAllService;
|
||||||
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||||
|
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||||
import com.jero.modules.activiti.util.SpringContextUtil;
|
import com.jero.modules.activiti.util.SpringContextUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.engine.delegate.event.ActivitiEvent;
|
import org.activiti.engine.delegate.event.ActivitiEvent;
|
||||||
@@ -69,7 +71,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void activityStarted(ActivitiEvent event){
|
private void activityStarted(ActivitiEvent event) {
|
||||||
log.info("===================流程开始事件===================");
|
log.info("===================流程开始事件===================");
|
||||||
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
|
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
|
||||||
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
|
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
|
||||||
@@ -160,19 +162,23 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
|||||||
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
ProcessApprovalRecord approvalRecord = recordService.getOne(wrapper);
|
||||||
Date createTime = approvalRecord.getCreateTime();
|
Date createTime = approvalRecord.getCreateTime();
|
||||||
DateTime date = DateUtil.date();
|
DateTime date = DateUtil.date();
|
||||||
|
// 如果date小于createTime+一秒,说明是在同一秒内完成的,需要加一秒,解决流程审批信息发起节点和下一节点创建时间一致,排序错乱问题
|
||||||
|
if (date.isBeforeOrEquals(DateUtil.offsetSecond(createTime, 1))) {
|
||||||
|
date.setTime(createTime.getTime() + 1000);
|
||||||
|
}
|
||||||
DateBetween between = date.between(createTime);
|
DateBetween between = date.between(createTime);
|
||||||
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
||||||
approvalRecord.setEndTime(date);
|
approvalRecord.setEndTime(date);
|
||||||
approvalRecord.setOverTime(between.toString());
|
approvalRecord.setOverTime(between.toString());
|
||||||
|
|
||||||
Map<String, Object> variables = delegateTask.getVariables();
|
Map<String, Object> variables = delegateTask.getVariables();
|
||||||
if (variables.containsKey("pass")){
|
// 第一个节点不需要设置commitFlag
|
||||||
if ((Boolean)variables.get("pass")){
|
if (variables.containsKey("pass") && !isFirstNodeTask(approvalRecord)) {
|
||||||
|
if ((Boolean) variables.get("pass")) {
|
||||||
approvalRecord.setCommitFlag(CommitFlagEnum.PASS.getValue());
|
approvalRecord.setCommitFlag(CommitFlagEnum.PASS.getValue());
|
||||||
}else {
|
} else {
|
||||||
approvalRecord.setCommitFlag(CommitFlagEnum.REJECT.getValue());
|
approvalRecord.setCommitFlag(CommitFlagEnum.REJECT.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
recordService.updateById(approvalRecord);
|
recordService.updateById(approvalRecord);
|
||||||
@@ -186,7 +192,7 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
|||||||
log.info("taskEntity.getVariables() = " + variables);
|
log.info("taskEntity.getVariables() = " + variables);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void activityComplete(ActivitiEvent event){
|
private void activityComplete(ActivitiEvent event) {
|
||||||
log.info("===================流程完成事件===================");
|
log.info("===================流程完成事件===================");
|
||||||
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
|
ActivitiEntityEventImpl activitiEntityEvent = (ActivitiEntityEventImpl) event;
|
||||||
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
|
ExecutionEntityImpl execution = (ExecutionEntityImpl) activitiEntityEvent.getEntity();
|
||||||
@@ -201,10 +207,10 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
|||||||
|
|
||||||
//更新流程总表信息为已完成
|
//更新流程总表信息为已完成
|
||||||
LambdaUpdateWrapper<ProcessAll> wrapper = new LambdaUpdateWrapper<>();
|
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::getPrcStatus, ProcessStatusEnum.COMPLETED.getValue());
|
||||||
wrapper.set(ProcessAll::getEndTime,date);
|
wrapper.set(ProcessAll::getEndTime, date);
|
||||||
wrapper.set(ProcessAll::getOverTime,between.toString());
|
wrapper.set(ProcessAll::getOverTime, between.toString());
|
||||||
processAllService.update(wrapper);
|
processAllService.update(wrapper);
|
||||||
log.info("id = " + execution.getId());
|
log.info("id = " + execution.getId());
|
||||||
log.info("name = " + execution.getName());
|
log.info("name = " + execution.getName());
|
||||||
@@ -212,4 +218,16 @@ public class MyGlobalEventListener implements ActivitiEventListener {
|
|||||||
log.info("taskEntity.getDeploymentId() = " + execution.getDeploymentId());
|
log.info("taskEntity.getDeploymentId() = " + execution.getDeploymentId());
|
||||||
log.info("taskEntity.getProcessDefinitionId() = " + execution.getProcessDefinitionId());
|
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);
|
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) {
|
public ProcessApprovalRecord getNodeIdByTaskId(String taskId) {
|
||||||
return processApprovalRecordService.getToDoByTaskId(taskId);
|
return processApprovalRecordService.getToDoByTaskId(taskId);
|
||||||
}
|
}
|
||||||
@@ -285,8 +266,6 @@ public class ActFlowCommonService {
|
|||||||
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
|
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
|
||||||
log.info("匹配到的任务ID:{}", map.get("taskId").toString());
|
log.info("匹配到的任务ID:{}", map.get("taskId").toString());
|
||||||
String taskId = map.get("taskId").toString();
|
String taskId = map.get("taskId").toString();
|
||||||
// 更新审批表为完成,填充数据
|
|
||||||
this.updateApprovalInfoStart(commonVO, taskId, true);
|
|
||||||
this.completeTask(taskId, userId);
|
this.completeTask(taskId, userId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -383,43 +362,6 @@ public class ActFlowCommonService {
|
|||||||
processDraftService.remove(draftWrapper);
|
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) {
|
public CommonVO getHandleCommon(String taskId) {
|
||||||
String processInstanceId = this.getProcessInstanceIdByTaskId(taskId);
|
String processInstanceId = this.getProcessInstanceIdByTaskId(taskId);
|
||||||
String processDefinitionId = this.getProcessDefId(processInstanceId);
|
String processDefinitionId = this.getProcessDefId(processInstanceId);
|
||||||
@@ -466,21 +408,6 @@ public class ActFlowCommonService {
|
|||||||
processApprovalRecordService.update(updateWrapper);
|
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
|
* 根据指定的执行Id递归获取所有子执行Id
|
||||||
*
|
*
|
||||||
@@ -518,6 +445,7 @@ public class ActFlowCommonService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 强制撤回流程-保存草稿
|
* 强制撤回流程-保存草稿
|
||||||
|
*
|
||||||
* @param common
|
* @param common
|
||||||
* @param processTypeEnum
|
* @param processTypeEnum
|
||||||
* @param data
|
* @param data
|
||||||
|
|||||||
Reference in New Issue
Block a user