Bläddra i källkod

评估部退单,逻辑修改

wucl 4 månader sedan
förälder
incheckning
4a08178de1

+ 12 - 0
biz-base/src/main/java/com/dayou/controller/MajorController.java

@@ -178,5 +178,17 @@ public class MajorController extends BaseController {
         Boolean ret = majorService.feedback(priceFeedbackDTO);
         Boolean ret = majorService.feedback(priceFeedbackDTO);
         return RestResponse.data(ret);
         return RestResponse.data(ret);
     }
     }
+
+    /**
+     * 更新接单部门
+     * @param taskRecordDTO
+     * @return
+     */
+    @FinishTask
+    @PostMapping("/department")
+    public RestResponse<Boolean> updateDepartment(@RequestBody @Valid TaskRecordDTO<Major> taskRecordDTO){
+        Boolean ret = majorService.updateDepartment(taskRecordDTO);
+        return RestResponse.data(ret);
+    }
 }
 }
 
 

+ 3 - 1
dao/src/main/resources/mapper/WorkFlowLogMapper.xml

@@ -64,7 +64,9 @@
     </select>
     </select>
 
 
     <select id="getRefuse" resultType="com.dayou.entity.WorkFlowLog">
     <select id="getRefuse" resultType="com.dayou.entity.WorkFlowLog">
-        select u.name as handler,wfl.comments,wfl.created from work_flow_log wfl
+        select u.name as handler,wfl.comments,wfl.created,
+       (	select id from work_task_record  where instance_id =  (select id from work_flow_node_instance where business_type = #{businessType} AND business_id = #{businessId} AND deleted = 0 AND state = 'PENDING')) as record_id
+        from work_flow_log wfl
         left join user u on u.id = wfl.handler_id where wfl.business_id = #{businessId}
         left join user u on u.id = wfl.handler_id where wfl.business_id = #{businessId}
         and wfl.business_type = #{businessType} AND wfl.state = 'REFUSE' order by wfl.created DESC LIMIT 1
         and wfl.business_type = #{businessType} AND wfl.state = 'REFUSE' order by wfl.created DESC LIMIT 1
     </select>
     </select>

+ 3 - 0
domain/src/main/java/com/dayou/entity/WorkFlowLog.java

@@ -75,5 +75,8 @@ public class WorkFlowLog extends BaseEntity {
     @TableField(exist = false)
     @TableField(exist = false)
     private String handler;
     private String handler;
 
 
+    @TableField(exist = false)
+    private Long recordId;
+
 
 
 }
 }

+ 2 - 0
service/src/main/java/com/dayou/service/IMajorService.java

@@ -52,4 +52,6 @@ public interface IMajorService extends IService<Major> {
     MajorVO productionDetail(Long id, String productionNo, String production);
     MajorVO productionDetail(Long id, String productionNo, String production);
 
 
     Boolean feedback(PriceFeedbackDTO priceFeedbackDTO);
     Boolean feedback(PriceFeedbackDTO priceFeedbackDTO);
+
+    Boolean updateDepartment(TaskRecordDTO<Major> taskRecordDTO);
 }
 }

+ 6 - 0
service/src/main/java/com/dayou/service/impl/MajorServiceImpl.java

@@ -248,6 +248,12 @@ public class MajorServiceImpl extends ServiceImpl<MajorMapper, Major> implements
         return Boolean.FALSE;
         return Boolean.FALSE;
     }
     }
 
 
+    @Override
+    public Boolean updateDepartment(TaskRecordDTO<Major> taskRecordDTO) {
+        Major taskData = taskRecordDTO.getTaskData();
+        return this.update(new LambdaUpdateWrapper<Major>().set(Major::getDepartmentId,taskData.getDepartmentId()).eq(Major::getId,taskData.getId()));
+    }
+
 //    /**
 //    /**
 //     * 大中型业务下单
 //     * 大中型业务下单
 //     * @param businessId
 //     * @param businessId

+ 26 - 12
service/src/main/java/com/dayou/workflow/handler/MajorNodeHandler.java

@@ -26,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -82,7 +83,6 @@ public class MajorNodeHandler extends WorkNodeProcessable {
     @Override
     @Override
     public boolean forward(WorkNodeCommit workNodeCommit) {
     public boolean forward(WorkNodeCommit workNodeCommit) {
         WorkFlowNodeInstance currentInstanceNode = workFlowNodeInstanceMapper.getById(workNodeCommit.getInstanceNodeId());
         WorkFlowNodeInstance currentInstanceNode = workFlowNodeInstanceMapper.getById(workNodeCommit.getInstanceNodeId());
-        //todo 如果currentInstanceNode 是分管领导分单。则需要将instance的state改为FINISHED
         WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
         WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
         if (nextWorkNode==null && workNodeCommit.getNodeCode().equals(LEADER_ALLOCATION.name())){
         if (nextWorkNode==null && workNodeCommit.getNodeCode().equals(LEADER_ALLOCATION.name())){
             nextWorkNode = workNodeService.doCreatedDepartmentAllocationNode();
             nextWorkNode = workNodeService.doCreatedDepartmentAllocationNode();
@@ -377,18 +377,32 @@ public class MajorNodeHandler extends WorkNodeProcessable {
             }
             }
             else{
             else{
                 commit.setComments(comments.equals("3")?"委托人撤单":"客户经理通知终止");
                 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);
+//                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);
+                WorkNodeDTO orderNode = workNodeService.getUniqueNodeByFlowNameAndNodeName(MAJOR_BUSINESS, OPENING_ORDER);
                 //将上一个节点状态改为PENDING
                 //将上一个节点状态改为PENDING
-                preNode.setState(PENDING.getCode());
-                workFlowNodeInstanceService.updateById(preNode);
-
-                //将上一个节点的任务状态修改为未完成
-                workTaskRecordService.update(new LambdaUpdateWrapper<WorkTaskRecord>()
-                        .set(WorkTaskRecord::getFinished,Boolean.FALSE)
-                        .eq(WorkTaskRecord::getInstanceId,preNode.getId()));
+                WorkFlowNodeInstance orderInstance = new WorkFlowNodeInstance();
+                orderInstance.setState(PENDING.getCode());
+                orderInstance.setNodeId(orderNode.getId());
+                orderInstance.setBusinessId(currentNode.getBusinessId());
+                orderInstance.setFlowId(orderNode.getFlowId());
+                orderInstance.setSequence(0);
+                orderInstance.setBusinessType(MAJOR_BUSINESS.name());
+                workFlowNodeInstanceService.save(orderInstance);
+
+                WorkFlowNodeInstance oldOrderNode = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>()
+                        .eq(WorkFlowNodeInstance::getBusinessId, currentNode.getBusinessId()).orderByAsc(BaseEntity::getCreated)).get(0);
+
+                WorkTaskRecord oldTask = workTaskRecordService.getOne(new LambdaQueryWrapper<WorkTaskRecord>().eq(WorkTaskRecord::getInstanceId, oldOrderNode.getId()));
+                WorkTaskRecord workTaskRecord = new WorkTaskRecord();
+                workTaskRecord.setInstanceId(orderInstance.getId());
+                workTaskRecord.setTaskId(oldTask.getTaskId());
+                workTaskRecord.setHandlerId(oldTask.getHandlerId());
+                workTaskRecord.setFinished(true);
+                workTaskRecord.setFinishTime(oldTask.getFinishTime());
+                workTaskRecordService.save(workTaskRecord);
             }
             }
 
 
         //删除当前节点
         //删除当前节点