|
@@ -1,12 +1,14 @@
|
|
|
package com.dayou.service.workflow;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.dayou.common.BaseEntity;
|
|
|
import com.dayou.dto.HandlerPermissionDTO;
|
|
|
import com.dayou.dto.WorkNodeDTO;
|
|
|
+import com.dayou.entity.PersonalTarget;
|
|
|
import com.dayou.entity.WorkFlow;
|
|
|
import com.dayou.entity.WorkNode;
|
|
|
import com.dayou.entity.WorkNodeTask;
|
|
@@ -17,6 +19,7 @@ import com.dayou.enums.workflow.NodeTaskVersion;
|
|
|
import com.dayou.mapper.WorkFlowMapper;
|
|
|
import com.dayou.mapper.WorkNodeMapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.dayou.service.IPersonalTargetService;
|
|
|
import com.dayou.vo.NameCodeVO;
|
|
|
import com.dayou.enums.workflow.WorkflowNodeEnum;
|
|
|
import com.google.common.cache.Cache;
|
|
@@ -28,12 +31,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Optional;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.dayou.enums.ProductionEnum.*;
|
|
|
import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
|
|
|
|
|
|
/**
|
|
@@ -58,6 +59,9 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
|
|
|
private WorkFlowMapper workFlowMapper;
|
|
|
|
|
|
@Autowired
|
|
|
+ private IPersonalTargetService personalTargetService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
@Qualifier("workflowCache")
|
|
|
private Cache<Long, List<WorkNodeDTO>> workflowCache;
|
|
|
|
|
@@ -259,10 +263,10 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
|
|
|
//大中型业务 :归档审核
|
|
|
return flowNodes.stream().filter(x -> x.getCode().equals(WorkflowNodeEnum.CHECK_ARCHIVING.name())).findFirst().get();
|
|
|
}
|
|
|
- if (mainBusinessEnum.equals(MainBusinessEnum.PERSONAL_BUSINESS)) {
|
|
|
- //个贷业务 :归档
|
|
|
- return flowNodes.stream().filter(x -> x.getCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())).findFirst().get();
|
|
|
- }
|
|
|
+// if (mainBusinessEnum.equals(MainBusinessEnum.PERSONAL_BUSINESS)) {
|
|
|
+// //个贷业务 :归档
|
|
|
+// return flowNodes.stream().filter(x -> x.getCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())).findFirst().get();
|
|
|
+// }
|
|
|
|
|
|
}
|
|
|
return null;
|
|
@@ -365,10 +369,37 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
|
|
|
return workNodeMapper.getUniqueNodeByFlowNameAndNodeName(businessEnum.name(),nodeEnum.name());
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public WorkNodeDTO changeProductionRetNextNode(String nodeCode, List<ProductionEnum> production,Long businessId) {
|
|
|
+ if (STATEMENT_FEEDBACK.name().equals(nodeCode) && production.contains(CHANGE_STATEMENT)){
|
|
|
+ production.remove(CHANGE_STATEMENT);
|
|
|
+ String feed = JSON.toJSONString(production);
|
|
|
+ personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().eq(PersonalTarget::getPersonalId,businessId).set(PersonalTarget::getFeedback,feed));
|
|
|
+ return this.getUniqueNodeByFlowNameAndNodeName(MainBusinessEnum.PERSONAL_BUSINESS,GENERATE_STATEMENT);
|
|
|
+ }
|
|
|
+ if (REPORT_FEEDBACK.name().equals(nodeCode) && production.contains(CHANGE_REPORT)){
|
|
|
+ production.remove(CHANGE_REPORT);
|
|
|
+ String feed = JSON.toJSONString(production);
|
|
|
+ personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().eq(PersonalTarget::getPersonalId,businessId).set(PersonalTarget::getFeedback,feed));
|
|
|
+ return this.getUniqueNodeByFlowNameAndNodeName(MainBusinessEnum.PERSONAL_BUSINESS,WRITE_REPORT);
|
|
|
+ }
|
|
|
+ if (LETTER_FEEDBACK.name().equals(nodeCode) && production.contains(CHANGE_LETTER)){
|
|
|
+ production.remove(CHANGE_LETTER);
|
|
|
+ String feed = JSON.toJSONString(production);
|
|
|
+ personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().eq(PersonalTarget::getPersonalId,businessId).set(PersonalTarget::getFeedback,feed));
|
|
|
+ return this.getUniqueNodeByFlowNameAndNodeName(MainBusinessEnum.PERSONAL_BUSINESS,WRITE_LETTER);
|
|
|
+ }
|
|
|
+ if (production.contains(NONE)){
|
|
|
+ return this.getUniqueNodeByFlowNameAndNodeName(MainBusinessEnum.PERSONAL_BUSINESS,BUSINESS_ARCHIVING);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private WorkNodeDTO findNext(Long priviousId, List<WorkNodeDTO> nodes) {
|
|
|
Optional<WorkNodeDTO> target = nodes.stream().filter(n -> n.getPriviousNodeId() != null)
|
|
|
.filter(x -> (x.getPriviousNodeId().equals(priviousId))).findFirst();
|
|
|
return target.orElse(null);
|
|
|
}
|
|
|
+
|
|
|
}
|