Преглед на файлове

个贷节点退回修改

wucl преди 1 година
родител
ревизия
e6b6d4fd8c
променени са 1 файла, в които са добавени 47 реда и са изтрити 0 реда
  1. 47 0
      service/src/main/java/com/dayou/workflow/handler/PersonalNodeHandler.java

+ 47 - 0
service/src/main/java/com/dayou/workflow/handler/PersonalNodeHandler.java

@@ -1,13 +1,16 @@
 package com.dayou.workflow.handler;
 
 import cn.hutool.core.util.StrUtil;
+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.WorkNodeCommit;
 import com.dayou.dto.WorkNodeDTO;
 import com.dayou.entity.Department;
 import com.dayou.entity.Personal;
+import com.dayou.entity.PersonalTarget;
 import com.dayou.entity.WorkFlowNodeInstance;
 import com.dayou.enums.MainBusinessEnum;
 import com.dayou.enums.ProductionEnum;
@@ -18,17 +21,21 @@ import com.dayou.mapper.DepartmentMapper;
 import com.dayou.mapper.PersonalMapper;
 import com.dayou.mapper.WorkFlowNodeInstanceMapper;
 import com.dayou.service.ICustomerCompanyService;
+import com.dayou.service.IPersonalTargetService;
 import com.dayou.service.IUserPostService;
 import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
 import com.dayou.service.workflow.IWorkNodeService;
 import com.dayou.workflow.config.WorkNodeProcessable;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
 import static com.dayou.common.Constants.PERSONAL_DEPARTMENT;
+import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
 
 /**
  * 类说明:
@@ -58,6 +65,9 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
     @Autowired
     private WorkFlowNodeInstanceMapper workFlowNodeInstanceMapper;
 
+    @Autowired
+    private IPersonalTargetService personalTargetService;
+
 
     @Override
     public boolean forward(WorkNodeCommit workNodeCommit) {
@@ -134,4 +144,41 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
                 return departmentMapper.selectOne(new LambdaQueryWrapper<Department>().select(Department::getLeaderId).eq(Department::getName,PERSONAL_DEPARTMENT)).getLeaderId();
         }
     }
+
+    @Override
+    public boolean goBack(WorkNodeCommit commit){
+        Long instanceNodeId = commit.getInstanceNodeId();
+        WorkFlowNodeInstance currentNode = workFlowNodeInstanceMapper.getInstanceNodeInfoById(instanceNodeId);
+        //如果是撰写节点(意见书,报告,复评函)退回。需删除产品业务信息
+        List<String> needToCleanFeedbackNodes = Arrays.asList(new String[]{QUOTATION_FEEDBACK.name(), GENERATE_STATEMENT.name(),WRITE_REPORT.name(), WRITE_LETTER.name()});
+        if (needToCleanFeedbackNodes.contains(currentNode.getNodeCode())){
+            //如果是在撰写意见书退回,清空反馈
+            PersonalTarget target = personalTargetService.getOne(new LambdaQueryWrapper<PersonalTarget>().select(PersonalTarget::getFeedback, BaseEntity::getId)
+                    .eq(PersonalTarget::getPersonalId, currentNode.getBusinessId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
+            if (currentNode.getNodeCode().equals(GENERATE_STATEMENT.name())){
+                personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().set(
+                        PersonalTarget::getFeedback,null
+                ).eq(BaseEntity::getId,target.getId()));
+            }
+            else{
+
+                if (StrUtil.isNotEmpty(target.getFeedback())){
+                    List<String> productionTypes = JSON.parseArray(target.getFeedback(), String.class);
+                    if (productionTypes.size()>1){
+                        List<String> xProductionType = Lists.newArrayList(productionTypes.get(0));
+                        personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>()
+                                .set(PersonalTarget::getFeedback,JSON.toJSONString(xProductionType)).eq(BaseEntity::getId,target.getId()));
+
+                    }
+                    else {
+                        personalTargetService.update(new LambdaUpdateWrapper<PersonalTarget>().set(
+                                PersonalTarget::getFeedback,null
+                        ).eq(BaseEntity::getId,target.getId()));
+                    }
+                }
+            }
+
+        }
+        return super.goBack(commit);
+    }
 }