fix(87436):标准解读流程(标准主解读人重新分发) --审核没全提交,汇总节点的待办就出来了

This commit is contained in:
yjz
2024-07-24 15:05:10 +08:00
parent e1171f7463
commit 1b75675d28
@@ -19,6 +19,7 @@ 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.process.standardinterpret.common.StandardInterpretCommon;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeService;
@@ -412,14 +413,21 @@ public class MyGlobalEventListener implements ActivitiEventListener {
int i = processAllService.countByParentTaskId(parentTaskId);
if (i == 0) {
TaskService taskService = SpringContextUtil.getBean(TaskService.class);
Object variable = taskService.getVariable(parentTaskId, UNALLOCATED_QUANTITY);
if (variable != null) {
int unallocatedQuantity = (int) variable;
if (unallocatedQuantity == 0) {
if (StandardInterpretCommon.KEY_1.equals(processDefinitionId)){
boolean b = isChildrenNodeAllComplete(processInstanceId, parentTaskId);
if (b){
taskService.complete(parentTaskId);
}
}else {
Object variable = taskService.getVariable(parentTaskId, UNALLOCATED_QUANTITY);
if (variable != null) {
int unallocatedQuantity = (int) variable;
if (unallocatedQuantity == 0) {
taskService.complete(parentTaskId);
}
} else {
taskService.complete(parentTaskId);
}
} else {
taskService.complete(parentTaskId);
}
}
} else {
@@ -459,4 +467,30 @@ public class MyGlobalEventListener implements ActivitiEventListener {
.eq(ProcessNode::getSort, 1));
return record.getNodeId().equals(node.getXmlNodeId()) && record.getTaskName().equals(node.getNodeName());
}
/**
* 判断所有子流程是否都完成
* @param processInstanceId
* @param parentTaskId
* @return true:都完成 false:未都完成
*/
private boolean isChildrenNodeAllComplete(String processInstanceId, String parentTaskId){
// 判断当前parentTaskId是否是第一个自动处理任务节点
ProcessApprovalRecordService processApprovalRecordService = SpringContextUtil.getBean(ProcessApprovalRecordService.class);
int count = processApprovalRecordService.count(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
.eq(ProcessApprovalRecord::getNodeId, StandardInterpretCommon.INTERPRETING_PEOPLE_FILLOUT)
.eq(ProcessApprovalRecord::getParentTaskId, parentTaskId));
if (count > 0){
// 判断子流程是否还有未完成的节点
int childCount = processApprovalRecordService.count(
new LambdaQueryWrapper<ProcessApprovalRecord>()
.eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId)
.isNotNull(ProcessApprovalRecord::getParentTaskId)
.eq(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.INCOMPLETE.getValue()));
return childCount == 0;
}
return false;
}
}