|
@@ -1,5 +1,6 @@
|
|
|
package com.dayou.workflow.handler;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -28,6 +29,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.dayou.enums.MainBusinessEnum.MAJOR_BUSINESS;
|
|
|
import static com.dayou.enums.ProductionEnum.*;
|
|
|
import static com.dayou.enums.ProductionEnum.LETTER;
|
|
|
import static com.dayou.enums.TakeNumberEnum.LAND_NUMBER;
|
|
@@ -81,6 +83,9 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
|
public boolean forward(WorkNodeCommit workNodeCommit) {
|
|
|
WorkFlowNodeInstance currentInstanceNode = workFlowNodeInstanceMapper.getById(workNodeCommit.getInstanceNodeId());
|
|
|
WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
|
|
|
+ if (nextWorkNode==null && workNodeCommit.getNodeCode().equals(LEADER_ALLOCATION.name())){
|
|
|
+ nextWorkNode = workNodeService.doCreatedDepartmentAllocationNode();
|
|
|
+ }
|
|
|
if (nextWorkNode!=null){
|
|
|
String ifVerify = currentInstanceNode.getVerify();
|
|
|
if (StrUtil.isNotEmpty(ifVerify)){
|
|
@@ -97,9 +102,9 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
|
case CHECK_PRODUCTION_TYPE:
|
|
|
//1. 获取业务上出具的产品类型。
|
|
|
//2.根据出具的产品类型 确定需要哪些节点
|
|
|
- Map<String,List<WorkflowNodeEnum>> majorNecessaryNodes = CallbackEnum.NecessaryNode.getByProduction(MainBusinessEnum.MAJOR_BUSINESS.name(),
|
|
|
+ Map<String,List<WorkflowNodeEnum>> majorNecessaryNodes = CallbackEnum.NecessaryNode.getByProduction(MAJOR_BUSINESS.name(),
|
|
|
production);
|
|
|
- nextWorkNode = workNodeService.getNextWorkNodeByBusiness(currentInstanceNode.getFlowId(),MainBusinessEnum.MAJOR_BUSINESS
|
|
|
+ nextWorkNode = workNodeService.getNextWorkNodeByBusiness(currentInstanceNode.getFlowId(), MAJOR_BUSINESS
|
|
|
,currentInstanceNode.getNodeCode(), majorNecessaryNodes,workNodeCommit.getIfPay());
|
|
|
break;
|
|
|
case CHECK_PRODUCTION_FUND:
|
|
@@ -140,6 +145,7 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
|
afterForward(currentInstanceNode);
|
|
|
return Boolean.TRUE;
|
|
|
}
|
|
|
+
|
|
|
return Boolean.FALSE;
|
|
|
}
|
|
|
|
|
@@ -339,4 +345,59 @@ public class MajorNodeHandler extends WorkNodeProcessable {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Boolean refuse(WorkNodeCommit commit) {
|
|
|
+ Long instanceNodeId = commit.getInstanceNodeId();
|
|
|
+ WorkFlowNodeInstance currentNode = workFlowNodeInstanceService.getById(instanceNodeId);
|
|
|
+ String comments = commit.getComments();
|
|
|
+ if (comments.equals("1") || comments.equals("2")){
|
|
|
+ WorkFlowNodeInstance workFlowNodeInstance = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>()
|
|
|
+ .eq(WorkFlowNodeInstance::getBusinessId, currentNode.getBusinessId()).eq(WorkFlowNodeInstance::getFlowId, currentNode.getFlowId())
|
|
|
+ .eq(WorkFlowNodeInstance::getSequence, (currentNode.getSequence() - 1)).eq(BaseEntity::getDeleted, Boolean.FALSE).orderByDesc(BaseEntity::getCreated)).get(0);
|
|
|
+ WorkFlowNodeInstance instance = BeanUtil.copyProperties(workFlowNodeInstance, WorkFlowNodeInstance.class);
|
|
|
+ instance.setNodeId(workNodeService.getUniqueNodeByFlowNameAndNodeName(MAJOR_BUSINESS,LEADER_ALLOCATION).getId());
|
|
|
+ instance.setId(null);
|
|
|
+ instance.setState(PENDING.name());
|
|
|
+ workFlowNodeInstanceService.save(instance);
|
|
|
+ List<User> users = userService.simplePostName("评估分管副总");
|
|
|
+ commit.setComments(comments.equals("1")?"部门工作超负荷":"委托人要求高,无法满足其评估需求");
|
|
|
+ if (CollectionUtil.isNotEmpty(users)){
|
|
|
+ WorkTaskRecord workTaskRecord = workTaskRecordService.list(new LambdaUpdateWrapper<WorkTaskRecord>()
|
|
|
+ .eq(WorkTaskRecord::getInstanceId, workFlowNodeInstance.getId()).orderByDesc(BaseEntity::getCreated)).get(0);
|
|
|
+ WorkTaskRecord workTask = BeanUtil.copyProperties(workTaskRecord, WorkTaskRecord.class);
|
|
|
+ workTask.setId(null);
|
|
|
+ workTask.setHandlerId(users.get(0).getId());
|
|
|
+ workTask.setFinished(Boolean.FALSE);
|
|
|
+ workTask.setFinishTime(null);
|
|
|
+ workTask.setInstanceId(instance.getId());
|
|
|
+ workTaskRecordService.save(workTask);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ commit.setComments(comments.equals("3")?"委托人撤单":"客户经理通知终止");
|
|
|
+ WorkFlowNodeInstance preNode = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>().select(BaseEntity::getId)
|
|
|
+ .eq(WorkFlowNodeInstance::getFlowId, currentNode.getFlowId())
|
|
|
+ .eq(WorkFlowNodeInstance::getBusinessId, currentNode.getBusinessId()).eq(WorkFlowNodeInstance::getSequence, (currentNode.getSequence() - 1))
|
|
|
+ .eq(BaseEntity::getDeleted, Boolean.FALSE).orderByDesc(BaseEntity::getCreated)).get(0);
|
|
|
+ //将上一个节点状态改为PENDING
|
|
|
+ preNode.setState(PENDING.getCode());
|
|
|
+ workFlowNodeInstanceService.updateById(preNode);
|
|
|
+
|
|
|
+ //将上一个节点的任务状态修改为未完成
|
|
|
+ workTaskRecordService.update(new LambdaUpdateWrapper<WorkTaskRecord>()
|
|
|
+ .set(WorkTaskRecord::getFinished,Boolean.FALSE)
|
|
|
+ .eq(WorkTaskRecord::getInstanceId,preNode.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除当前节点
|
|
|
+ workFlowNodeInstanceService.delete(instanceNodeId);
|
|
|
+
|
|
|
+ //删除当前节点的待处理的任务记录
|
|
|
+ workTaskRecordService.remove(new LambdaQueryWrapper<WorkTaskRecord>().eq(WorkTaskRecord::getInstanceId,instanceNodeId));
|
|
|
+
|
|
|
+ //添加日志
|
|
|
+ return addWorkflowLog(commit,currentNode);
|
|
|
+
|
|
|
+ }
|
|
|
}
|