Przeglądaj źródła

1.流程新增对资产业务的逻辑判断
2.资产产品接口调整修改

GouGengquan 1 rok temu
rodzic
commit
551f0adba4

+ 15 - 3
biz-base/src/main/java/com/dayou/controller/AssetsProductionController.java

@@ -1,5 +1,7 @@
 package com.dayou.controller;
 
+import com.dayou.dto.TaskRecordDTO;
+import com.dayou.workflow.annotation.FinishTask;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,9 +66,10 @@ public class AssetsProductionController extends BaseController {
     /**
      * 资产产品表新增
      */
-    @PostMapping("")
-    public RestResponse<Boolean> save(@RequestBody AssetsProduction assetsProduction) {
-        Boolean ret = assetsProductionService.add(assetsProduction);
+    @FinishTask
+    @PostMapping("/save")
+    public RestResponse<Boolean> save(@RequestBody TaskRecordDTO<AssetsProduction> taskRecordDTO) {
+        Boolean ret = assetsProductionService.add(taskRecordDTO);
         return RestResponse.data(ret);
     }
 
@@ -88,6 +91,15 @@ public class AssetsProductionController extends BaseController {
         return RestResponse.data(ret);
     }
 
+    /**
+     * 根据业务id获取产品信息类型集合
+     * @param id 资产业务id
+     * @return List<String>
+     */
+    @GetMapping("/getProductionTypes/{id}")
+    public RestResponse<List<String>> getProductionTypes(@PathVariable Long id){
+        return RestResponse.data(assetsProductionService.getProductionTypes(id));
+    }
 
 }
 

+ 10 - 0
dao/src/main/java/com/dayou/mapper/AssetsProductionMapper.java

@@ -2,6 +2,9 @@ package com.dayou.mapper;
 
 import com.dayou.entity.AssetsProduction;
 import com.dayou.dao.CustomBaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,11 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface AssetsProductionMapper extends CustomBaseMapper<AssetsProduction> {
 
+    /**
+     * 根据业务id获取产品信息类型集合
+     * @param businessId 资产业务id
+     * @return List<String>
+     */
+    List<String> getProductionTypes(@Param("businessId") Long businessId);
+
 }

+ 7 - 0
dao/src/main/resources/mapper/AssetsProductionMapper.xml

@@ -39,4 +39,11 @@
         business_id, production_no, production_type, signatory, client_name, client_tel, valuation_basis_date, evaluate_acreage, evaluate_amount, evaluate_price, owner, print_count, create_production_date, comment, repertory_state, repertory_in_time, repertory_out_time, file_path, save_file_date, delivery
     </sql>
 
+    <!--根据业务id获取产品信息类型集合-->
+    <select id="getProductionTypes" resultType="java.lang.String">
+        SELECT production_type
+        FROM assets_production
+        WHERE business_id = #{businessId}
+    </select>
+
 </mapper>

+ 32 - 1
domain/src/main/java/com/dayou/enums/workflow/CallbackEnum.java

@@ -45,7 +45,12 @@ public enum CallbackEnum {
     /**
      *  个贷客户类型校验(如果是银行客户,报告出库无需申请)
      */
-    CHECK_PERSONAL_CLIENT_TYPE("CHECK_PERSONAL_CLIENT_TYPE")
+    CHECK_PERSONAL_CLIENT_TYPE("CHECK_PERSONAL_CLIENT_TYPE"),
+
+    /**
+     * 资产出具产品类型校验
+     */
+    CHECK_ASSET_PRODUCTION_TYPE("CHECK_ASSET_PRODUCTION_TYPE");
     ;
 
     private String code;
@@ -100,6 +105,29 @@ public enum CallbackEnum {
             letter.setNecessaryNodes(workflowNodeEnums2);
             this.necessaryNodes.add(letter);
         }
+
+        if ("CHECK_ASSET_PRODUCTION_TYPE".equals(code)){
+            //价值意见书在校验产品类型的节点
+            NecessaryNode valueStatement = new NecessaryNode();
+            valueStatement.setProduction(ProductionEnum.STATEMENT);
+            WorkflowNodeEnum[] workflowNodeEnums = {GENERATE_STATEMENT,REVIEW_STATEMENT,REEXAMINE_STATEMENT,STATEMENT_BOOKBINDING_STAMP,STATEMENT_IN,STATEMENT_FEEDBACK,STATEMENT_OUT};
+            valueStatement.setNecessaryNodes(workflowNodeEnums);
+            this.necessaryNodes.add(valueStatement);
+
+            //报告在校验产品类型时节点
+            NecessaryNode report = new NecessaryNode();
+            report.setProduction(ProductionEnum.REPORT);
+            WorkflowNodeEnum[] workflowNodeEnums1 = {WRITE_REPORT, CHECK_REPORT,RECHECK_REPORT,FOURTH_CHECK_REPORT,REPORT_BOOKBINDING_STAMP,REPORT_IN,REPORT_OUT,CHECK_ARCHIVING,RECHECK_ARCHIVING,BUSINESS_ARCHIVING};
+            report.setNecessaryNodes(workflowNodeEnums1);
+            this.necessaryNodes.add(report);
+
+            //意见函在校验产品类型时的节点
+            NecessaryNode letter = new NecessaryNode();
+            letter.setProduction(ProductionEnum.LETTER);
+            WorkflowNodeEnum[] workflowNodeEnums2 = {WRITE_REPORT, CHECK_REPORT,RECHECK_REPORT,FOURTH_CHECK_REPORT,REPORT_BOOKBINDING_STAMP,REPORT_IN,REPORT_OUT,CHECK_ARCHIVING,RECHECK_ARCHIVING,BUSINESS_ARCHIVING};
+            letter.setNecessaryNodes(workflowNodeEnums2);
+            this.necessaryNodes.add(letter);
+        }
     }
 
     public String getCode() {
@@ -128,6 +156,9 @@ public enum CallbackEnum {
             if (MainBusinessEnum.PERSONAL_BUSINESS.name().equals(businessType)){
                 necessaryNodes = CHECK_PERSONAL_PRODUCTION_TYPE.getNecessaryNodes();
             }
+            if (MainBusinessEnum.ASSET_BUSINESS.name().equals(businessType)){
+                necessaryNodes = CHECK_ASSET_PRODUCTION_TYPE.getNecessaryNodes();
+            }
             for (NecessaryNode nn : necessaryNodes){
                 if (production.contains(nn.getProduction())){
                     map.put(nn.getProduction().name(),Arrays.asList(nn.getNecessaryNodes()));

+ 9 - 1
service/src/main/java/com/dayou/service/IAssetsProductionService.java

@@ -1,4 +1,5 @@
 package com.dayou.service;
+import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.AssetsProduction;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -29,10 +30,17 @@ public interface IAssetsProductionService extends IService<AssetsProduction> {
 
         AssetsProduction detail(Long id);
 
-        Boolean add(AssetsProduction assetsProduction);
+        Boolean add(TaskRecordDTO<AssetsProduction> taskRecordDTO);
 
         Boolean update(AssetsProduction assetsProduction);
 
         Boolean delete(Long id);
 
+        /**
+         * 根据业务id获取产品信息类型集合
+         * @param businessId 资产业务id
+         * @return List<String>
+         */
+        List<String> getProductionTypes(Long businessId);
+
 }

+ 24 - 7
service/src/main/java/com/dayou/service/impl/AssetsProductionServiceImpl.java

@@ -1,9 +1,11 @@
 package com.dayou.service.impl;
 
+import com.dayou.dto.TaskRecordDTO;
 import com.dayou.entity.AssetsProduction;
 import com.dayou.mapper.AssetsProductionMapper;
 import com.dayou.service.IAssetsProductionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -19,8 +21,10 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
 import java.util.List;
 import java.util.ArrayList;
+
 import org.springframework.transaction.annotation.Transactional;
 import com.dayou.enums.BatchTaskTypeEnum;
 
@@ -35,9 +39,12 @@ import com.dayou.enums.BatchTaskTypeEnum;
 @Service
 public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMapper, AssetsProduction> implements IAssetsProductionService {
 
+    @Autowired
+    private AssetsProductionMapper assetsProductionMapper;
 
     /**
      * 根据资产业务id查询资产业务产品
+     *
      * @param id 资产业务id
      * @return List<AssetsProduction>
      */
@@ -48,29 +55,39 @@ public class AssetsProductionServiceImpl extends ServiceImpl<AssetsProductionMap
 
     @Override
     @SuppressWarnings("unchecked")
-    public Page<AssetsProduction> selectPage(Page page,AssetsProduction assetsProduction){
+    public Page<AssetsProduction> selectPage(Page page, AssetsProduction assetsProduction) {
         return this.page(page, new QueryWrapper<AssetsProduction>(assetsProduction));
     }
 
 
     @Override
-    public AssetsProduction detail(Long id){
+    public AssetsProduction detail(Long id) {
         return this.getById(id);
     }
 
     @Override
-    public Boolean add(AssetsProduction assetsProduction){
-        return  this.save(assetsProduction);
+    public Boolean add(TaskRecordDTO<AssetsProduction> taskRecordDTO) {
+        return this.save(taskRecordDTO.getTaskData());
     }
 
     @Override
-    public Boolean update(AssetsProduction assetsProduction){
-        return  this.updateById(assetsProduction);
+    public Boolean update(AssetsProduction assetsProduction) {
+        return this.updateById(assetsProduction);
     }
 
     @Override
-    public Boolean delete(Long id){
+    public Boolean delete(Long id) {
         //逻辑删除
         return this.removeById(id);
     }
+
+    /**
+     * 根据业务id获取产品信息类型集合
+     *
+     * @param businessId 资产业务id
+     * @return List<String>
+     */
+    public List<String> getProductionTypes(Long businessId) {
+        return assetsProductionMapper.getProductionTypes(businessId);
+    }
 }

+ 90 - 79
service/src/main/java/com/dayou/service/workflow/WorkNodeServiceImpl.java

@@ -64,43 +64,43 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
 
     @Override
     @SuppressWarnings("unchecked")
-    public Page<WorkNode> selectPage(Page page,WorkNode workNode){
+    public Page<WorkNode> selectPage(Page page, WorkNode workNode) {
         return this.page(page, new QueryWrapper<WorkNode>(workNode));
     }
 
 
     @Override
-    public WorkNode detail(Long id){
+    public WorkNode detail(Long id) {
         return this.getById(id);
     }
 
     @Transactional
     @Override
-    public Boolean add(WorkNodeDTO workNode){
+    public Boolean add(WorkNodeDTO workNode) {
         Long priviousNodeId = workNode.getPriviousNodeId();
-        if (priviousNodeId!=null){
+        if (priviousNodeId != null) {
             WorkNode ex = this.getOne(new LambdaQueryWrapper<WorkNode>().eq(WorkNode::getPriviousNodeId, priviousNodeId));
-            if (ex!=null){
+            if (ex != null) {
                 Long nodeId = saveNodeAndTask(workNode);
-                return this.update(new LambdaUpdateWrapper<WorkNode>().set(WorkNode::getPriviousNodeId,nodeId).eq(BaseEntity::getId,ex.getId()));
+                return this.update(new LambdaUpdateWrapper<WorkNode>().set(WorkNode::getPriviousNodeId, nodeId).eq(BaseEntity::getId, ex.getId()));
             }
-        }else {
+        } else {
             WorkNode ex = this.getOne(new LambdaQueryWrapper<WorkNode>().isNull(WorkNode::getPriviousNodeId));
-            if (ex!=null && ex.getFlowId().equals(workNode.getFlowId())){
+            if (ex != null && ex.getFlowId().equals(workNode.getFlowId())) {
                 Long nodeId = saveNodeAndTask(workNode);
-                return this.update(new LambdaUpdateWrapper<WorkNode>().set(WorkNode::getPriviousNodeId,nodeId).eq(BaseEntity::getId,ex.getId()));
+                return this.update(new LambdaUpdateWrapper<WorkNode>().set(WorkNode::getPriviousNodeId, nodeId).eq(BaseEntity::getId, ex.getId()));
             }
         }
         this.removeNodeCache(workNode.getFlowId());
-        return  saveNodeAndTask(workNode)!=null;
+        return saveNodeAndTask(workNode) != null;
     }
 
-    private Long saveNodeAndTask(WorkNodeDTO workNode){
+    private Long saveNodeAndTask(WorkNodeDTO workNode) {
         workNode.setName(WorkflowNodeEnum.valueOf(workNode.getCode()).getMsg());
         this.save(workNode);
         Long nodeId = workNode.getId();
         List<WorkNodeTask> tasks = workNode.getTasks();
-        tasks.stream().forEach(x->{
+        tasks.stream().forEach(x -> {
             x.setNodeId(nodeId);
             HandlerPermissionDTO handlerPermissionDTO = new HandlerPermissionDTO();
             handlerPermissionDTO.setName(x.getName());
@@ -110,16 +110,16 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
             x.setBusinessType(workNode.getBusinessType());
         });
         workNodeTaskService.saveBatch(tasks);
-        return  nodeId;
+        return nodeId;
     }
 
     @Transactional
     @Override
-    public Boolean update(WorkNodeDTO workNode){
+    public Boolean update(WorkNodeDTO workNode) {
         List<WorkNodeTask> tasks = workNode.getTasks();
         //更新节点上的任务
-        workNodeTaskService.update(new LambdaUpdateWrapper<WorkNodeTask>().eq(WorkNodeTask::getNodeId,workNode.getId()).set(WorkNodeTask::getVersion, NodeTaskVersion.HISTORY.name()));
-        tasks.stream().forEach(x->{
+        workNodeTaskService.update(new LambdaUpdateWrapper<WorkNodeTask>().eq(WorkNodeTask::getNodeId, workNode.getId()).set(WorkNodeTask::getVersion, NodeTaskVersion.HISTORY.name()));
+        tasks.stream().forEach(x -> {
             x.setNodeId(workNode.getId());
             HandlerPermissionDTO handlerPermissionDTO = new HandlerPermissionDTO();
             handlerPermissionDTO.setName(x.getName());
@@ -131,25 +131,25 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
         });
         this.removeNodeCache(workNode.getFlowId());
         workNodeTaskService.saveBatch(tasks);
-        return  this.updateById(workNode);
+        return this.updateById(workNode);
     }
 
     @Transactional
     @Override
-    public Boolean delete(Long id){
+    public Boolean delete(Long id) {
         //逻辑删除
         WorkNode workNode = this.getById(id);
         WorkNode ex = this.getOne(new LambdaQueryWrapper<WorkNode>().eq(WorkNode::getPriviousNodeId, id));
-        if (ex!=null){
-            if (workNode.getPriviousNodeId()==null){
+        if (ex != null) {
+            if (workNode.getPriviousNodeId() == null) {
                 ex.setPriviousNodeId(null);
                 this.updateById(ex);
-            }else {
+            } else {
                 ex.setPriviousNodeId(workNode.getPriviousNodeId());
                 this.updateById(ex);
             }
         }
-        workNodeTaskService.remove(new LambdaQueryWrapper<WorkNodeTask>().eq(WorkNodeTask::getNodeId,id));
+        workNodeTaskService.remove(new LambdaQueryWrapper<WorkNodeTask>().eq(WorkNodeTask::getNodeId, id));
         this.removeNodeCache(workNode.getFlowId());
         return this.removeById(id);
     }
@@ -170,21 +170,21 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
     public List<WorkNodeDTO> getFlowNodes(Long flowId, String businessType) {
         List<WorkNodeDTO> workflowNodes = workflowCache.getIfPresent(flowId);
         //先从缓存中取
-        if (CollectionUtil.isEmpty(workflowNodes)){
-            workflowNodes = workNodeMapper.getFlowNodes(flowId,businessType);
+        if (CollectionUtil.isEmpty(workflowNodes)) {
+            workflowNodes = workNodeMapper.getFlowNodes(flowId, businessType);
             List<WorkNodeDTO> nodesSorted = Lists.newArrayList();
             Optional<WorkNodeDTO> first = workflowNodes.stream().filter(x -> x.getPriviousNodeId() == null).findFirst();
-            if (first.isPresent()){
+            if (first.isPresent()) {
                 WorkNodeDTO fistNode = first.get();
                 nodesSorted.add(fistNode);
-                for (int i=0; i<workflowNodes.size() ; i++ ){
+                for (int i = 0; i < workflowNodes.size(); i++) {
                     WorkNodeDTO next = findNext(fistNode.getId(), workflowNodes);
-                    if (next ==null) break;
+                    if (next == null) break;
                     nodesSorted.add(next);
                     fistNode = next;
                 }
             }
-            workflowCache.put(flowId,nodesSorted);
+            workflowCache.put(flowId, nodesSorted);
             return nodesSorted;
         }
         return workflowNodes;
@@ -193,10 +193,10 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
     @Override
     public List<WorkNodeDTO> getFlowNodes(Long flowId) {
         List<WorkNodeDTO> workflowNodes = workflowCache.getIfPresent(flowId);
-        if (CollectionUtil.isEmpty(workflowNodes)){
+        if (CollectionUtil.isEmpty(workflowNodes)) {
             WorkFlow workFlow = workFlowMapper.selectOne(new LambdaQueryWrapper<WorkFlow>().eq(BaseEntity::getId, flowId)
                     .select(BaseEntity::getId, WorkFlow::getCode).eq(BaseEntity::getDeleted, Boolean.FALSE));
-            return this.getFlowNodes(workFlow.getId(),workFlow.getCode());
+            return this.getFlowNodes(workFlow.getId(), workFlow.getCode());
         }
         return workflowNodes;
     }
@@ -209,45 +209,56 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
     }
 
     @Override
-    public WorkNodeDTO getNextWorkNodeByBusiness(Long flowId, MainBusinessEnum mainBusinessEnum, String nodeCode, Map<String,List<WorkflowNodeEnum>> necessaryNodes) {
+    public WorkNodeDTO getNextWorkNodeByBusiness(Long flowId, MainBusinessEnum mainBusinessEnum, String nodeCode, Map<String, List<WorkflowNodeEnum>> necessaryNodes) {
         List<WorkNodeDTO> flowNodes = getFlowNodes(flowId);
         //报价客户反馈 后有可能出价值意见书、报告、复评函
-            if (WorkflowNodeEnum.QUOTATION_FEEDBACK.name().equals(nodeCode)){
-                for (Map.Entry<String,List<WorkflowNodeEnum>> map : necessaryNodes.entrySet()){
-                    List<String> codes = map.getValue().stream().map(WorkflowNodeEnum::getCode).collect(Collectors.toList());
-                    for (WorkNodeDTO workNodeDTO : flowNodes){
-                        if (codes.contains(workNodeDTO.getCode())){
-                            return workNodeDTO;
-                        }
+        if (WorkflowNodeEnum.QUOTATION_FEEDBACK.name().equals(nodeCode)) {
+            for (Map.Entry<String, List<WorkflowNodeEnum>> map : necessaryNodes.entrySet()) {
+                List<String> codes = map.getValue().stream().map(WorkflowNodeEnum::getCode).collect(Collectors.toList());
+                for (WorkNodeDTO workNodeDTO : flowNodes) {
+                    if (codes.contains(workNodeDTO.getCode())) {
+                        return workNodeDTO;
                     }
+                }
 
+            }
+        }
+        // 产品选择节点 后有可能出价值意见书、报告、意见函
+        if (WorkflowNodeEnum.PRODUCT_CHOICE.name().equals(nodeCode)) {
+            for (Map.Entry<String, List<WorkflowNodeEnum>> map : necessaryNodes.entrySet()) {
+                List<String> codes = map.getValue().stream().map(WorkflowNodeEnum::getCode).collect(Collectors.toList());
+                for (WorkNodeDTO workNodeDTO : flowNodes) {
+                    if (codes.contains(workNodeDTO.getCode())) {
+                        return workNodeDTO;
+                    }
                 }
             }
+        }
         //价值意见书送达反馈 后有可能报告、复评函、归档审核
-        if (WorkflowNodeEnum.STATEMENT_FEEDBACK.name().equals(nodeCode)){
+        if (WorkflowNodeEnum.STATEMENT_FEEDBACK.name().equals(nodeCode)) {
             necessaryNodes.remove(ProductionEnum.STATEMENT.name());
-            if (necessaryNodes.size()==0){
+            if (necessaryNodes.size() == 0) {
                 //归档审核
-                return flowNodes.stream().filter(x->x.getCode().equals(WorkflowNodeEnum.CHECK_ARCHIVING.name())).findFirst().get();
+                return flowNodes.stream().filter(x -> x.getCode().equals(WorkflowNodeEnum.CHECK_ARCHIVING.name())).findFirst().get();
             }
-            for (Map.Entry<String,List<WorkflowNodeEnum>> map : necessaryNodes.entrySet()){
+            for (Map.Entry<String, List<WorkflowNodeEnum>> map : necessaryNodes.entrySet()) {
                 List<String> codes = map.getValue().stream().map(WorkflowNodeEnum::getCode).collect(Collectors.toList());
-                for (WorkNodeDTO workNodeDTO : flowNodes){
-                    if (codes.contains(workNodeDTO.getCode())){
+                for (WorkNodeDTO workNodeDTO : flowNodes) {
+                    if (codes.contains(workNodeDTO.getCode())) {
                         return workNodeDTO;
                     }
                 }
             }
         }
         //报告出库后或复评函出库后
-        if (WorkflowNodeEnum.REPORT_OUT.name().equals(nodeCode) || WorkflowNodeEnum.LETTER_OUT.name().equals(nodeCode) ){
-            if (mainBusinessEnum.equals(MainBusinessEnum.MAJOR_BUSINESS)){
+        if (WorkflowNodeEnum.REPORT_OUT.name().equals(nodeCode) || WorkflowNodeEnum.LETTER_OUT.name().equals(nodeCode)) {
+            if (mainBusinessEnum.equals(MainBusinessEnum.MAJOR_BUSINESS)) {
                 //大中型业务 :归档审核
-                return flowNodes.stream().filter(x->x.getCode().equals(WorkflowNodeEnum.CHECK_ARCHIVING.name())).findFirst().get();
+                return flowNodes.stream().filter(x -> x.getCode().equals(WorkflowNodeEnum.CHECK_ARCHIVING.name())).findFirst().get();
             }
-            if (mainBusinessEnum.equals(MainBusinessEnum.PERSONAL_BUSINESS)){
+            if (mainBusinessEnum.equals(MainBusinessEnum.PERSONAL_BUSINESS)) {
                 //个贷业务 :提交归档资料
-                return flowNodes.stream().filter(x->x.getCode().equals(WorkflowNodeEnum.COMMIT_FILE.name())).findFirst().get();
+                return flowNodes.stream().filter(x -> x.getCode().equals(WorkflowNodeEnum.COMMIT_FILE.name())).findFirst().get();
             }
 
         }
@@ -257,7 +268,7 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
     @Override
     public WorkNodeDTO getOpeningOrderNode(Long flowId) {
         List<WorkNodeDTO> flowNodes = this.getFlowNodes(flowId);
-        if (CollectionUtil.isNotEmpty(flowNodes)){
+        if (CollectionUtil.isNotEmpty(flowNodes)) {
             return flowNodes.stream().filter(x -> x.getPriviousNodeId() == null).findFirst().orElse(null);
         }
         return null;
@@ -266,42 +277,42 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
     @Override
     public WorkNodeDTO getNextWorkNodeByCheckState(Long flowId, String nodeCode, String doSecondCheck, String doThirdCheck) {
         List<WorkNodeDTO> flowNodes = getFlowNodes(flowId);
-        for (int i =0 ; i<flowNodes.size(); i++){
-            if (nodeCode.equals(CHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doSecondCheck)){
-                return flowNodes.get(i+3);
+        for (int i = 0; i < flowNodes.size(); i++) {
+            if (nodeCode.equals(CHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doSecondCheck)) {
+                return flowNodes.get(i + 3);
             }
-            if (nodeCode.equals(CHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doSecondCheck)){
-                return flowNodes.get(i+1);
+            if (nodeCode.equals(CHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doSecondCheck)) {
+                return flowNodes.get(i + 1);
             }
-            if (nodeCode.equals(CHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doSecondCheck)){
-                return flowNodes.get(i+3);
+            if (nodeCode.equals(CHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doSecondCheck)) {
+                return flowNodes.get(i + 3);
             }
-            if (nodeCode.equals(CHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doSecondCheck)){
-                return flowNodes.get(i+1);
+            if (nodeCode.equals(CHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doSecondCheck)) {
+                return flowNodes.get(i + 1);
             }
-            if (nodeCode.equals(CHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doSecondCheck)){
-                return flowNodes.get(i+3);
+            if (nodeCode.equals(CHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doSecondCheck)) {
+                return flowNodes.get(i + 3);
             }
-            if (nodeCode.equals(CHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doSecondCheck)){
-                return flowNodes.get(i+1);
+            if (nodeCode.equals(CHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doSecondCheck)) {
+                return flowNodes.get(i + 1);
             }
-            if (nodeCode.equals(RECHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doThirdCheck)){
-                return flowNodes.get(i+2);
+            if (nodeCode.equals(RECHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doThirdCheck)) {
+                return flowNodes.get(i + 2);
             }
-            if (nodeCode.equals(RECHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doThirdCheck)){
-                return flowNodes.get(i+1);
+            if (nodeCode.equals(RECHECK_STATEMENT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doThirdCheck)) {
+                return flowNodes.get(i + 1);
             }
-            if (nodeCode.equals(RECHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doThirdCheck)){
-                return flowNodes.get(i+2);
+            if (nodeCode.equals(RECHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doThirdCheck)) {
+                return flowNodes.get(i + 2);
             }
-            if (nodeCode.equals(RECHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doThirdCheck)){
-                return flowNodes.get(i+1);
+            if (nodeCode.equals(RECHECK_REPORT.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doThirdCheck)) {
+                return flowNodes.get(i + 1);
             }
-            if (nodeCode.equals(RECHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doThirdCheck)){
-                return flowNodes.get(i+2);
+            if (nodeCode.equals(RECHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.不审.name().equals(doThirdCheck)) {
+                return flowNodes.get(i + 2);
             }
-            if (nodeCode.equals(RECHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doThirdCheck)){
-                return flowNodes.get(i+1);
+            if (nodeCode.equals(RECHECK_LETTER.name()) && flowNodes.get(i).getCode().equals(nodeCode) && ReportStatus.待审核.name().equals(doThirdCheck)) {
+                return flowNodes.get(i + 1);
             }
         }
         return null;
@@ -310,17 +321,17 @@ public class WorkNodeServiceImpl extends ServiceImpl<WorkNodeMapper, WorkNode> i
     @Override
     public List<WorkNode> getNodesByMainBusiness(String businessType) {
         List<WorkNode> list = workNodeMapper.getNodesByMainBusiness(businessType);
-                return list;
+        return list;
     }
 
     @Override
-    public void removeNodeCache(Long flowId){
+    public void removeNodeCache(Long flowId) {
         workflowCache.invalidate(flowId);
     }
 
 
-    private WorkNodeDTO findNext(Long priviousId,List<WorkNodeDTO> nodes){
-        Optional<WorkNodeDTO> target = nodes.stream().filter(n->n.getPriviousNodeId()!=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);
     }

+ 11 - 22
service/src/main/java/com/dayou/workflow/handler/AssetsNodeHandler.java

@@ -60,28 +60,17 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
             String ifVerify = currentInstanceNode.getVerify();
             if (StrUtil.isNotEmpty(ifVerify)){
                 CallbackEnum callback = CallbackEnum.valueOf(ifVerify);
-                if (callback !=null){
-                    //根据callback 确定具体的业务数据
-                    //获取产品类型
-                    List<ProductionEnum> production = workNodeCommit.getProduction();
-                    switch (callback){
-                        case CHECK_PRODUCTION_CHECK:
-                            nextWorkNode = workNodeService.getNextWorkNodeByCheckState(currentInstanceNode.getFlowId(),currentInstanceNode.getNodeCode(),
-                                    workNodeCommit.getDoSecondCheck(),workNodeCommit.getDoThirdCheck());
-                            break;
-                        case CHECK_PRODUCTION_TYPE:
-                            //1. 获取业务上出具的产品类型。
-                            //2.根据出具的产品类型 确定需要哪些节点
-                            Map<String,List<WorkflowNodeEnum>> majorNecessaryNodes = CallbackEnum.NecessaryNode.getByProduction(MainBusinessEnum.MAJOR_BUSINESS.name(),
-                                    production);
-                            nextWorkNode = workNodeService.getNextWorkNodeByBusiness(currentInstanceNode.getFlowId(),MainBusinessEnum.MAJOR_BUSINESS,currentInstanceNode.getNodeCode(), majorNecessaryNodes);
-                            break;
-                        case CHECK_PRODUCTION_FUND:
-                            if (workNodeCommit.getIfProductionFund()){
-                                nextWorkNode = workNodeService.getNextWorkNode(nextWorkNode.getFlowId(), nextWorkNode.getId());
-                            }
-                            break;
-                    }
+                //根据callback 确定具体的业务数据
+                //获取产品类型
+                List<ProductionEnum> production = workNodeCommit.getProduction();
+                switch (callback){
+                    case CHECK_ASSET_PRODUCTION_TYPE:
+                        //1. 获取业务上出具的产品类型。
+                        //2.根据出具的产品类型 确定需要哪些节点
+                        Map<String,List<WorkflowNodeEnum>> assetsNecessaryNodes = CallbackEnum.NecessaryNode.getByProduction(MainBusinessEnum.ASSET_BUSINESS.name(),
+                                production);
+                        nextWorkNode = workNodeService.getNextWorkNodeByBusiness(currentInstanceNode.getFlowId(),MainBusinessEnum.ASSET_BUSINESS,currentInstanceNode.getNodeCode(), assetsNecessaryNodes);
+                        break;
                 }
             }
             if (CollectionUtil.isNotEmpty(workNodeCommit.getReportNos())){

+ 7 - 1
sql/update_sql.sql

@@ -251,4 +251,10 @@ alter table personal add COLUMN save_file_date datetime(0) DEFAULT NULL comment
   日期:2024-04-10
   修改人:苟耕铨
  */
-ALTER TABLE assets_production MODIFY COLUMN create_production_date date NULL comment '产品出具日期';
+ALTER TABLE assets_production MODIFY COLUMN create_production_date date NULL comment '产品出具日期';
+
+/**
+  日期:2024-04-11
+  修改人:苟耕铨
+ */
+ALTER TABLE assets_production MODIFY COLUMN production_no VARCHAR(128) NULL comment '产品出具日期';