Quellcode durchsuchen

1.资产退回流程优化

GouGengquan vor 1 Jahr
Ursprung
Commit
9a871ea018

+ 25 - 14
service/src/main/java/com/dayou/workflow/handler/AssetsNodeHandler.java

@@ -33,6 +33,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+import static com.dayou.enums.workflow.NodeStateEnum.PENDING;
 import static com.dayou.enums.workflow.NodeStateEnum.SKIP;
 import static com.dayou.enums.workflow.WorkflowNodeEnum.*;
 
@@ -60,6 +61,9 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
     @Autowired
     private IWorkFlowNodeInstanceService workFlowNodeInstanceService;
 
+    @Autowired
+    private IWorkTaskRecordService workTaskRecordService;
+
 
     @Override
     public boolean forward(WorkNodeCommit workNodeCommit) {
@@ -121,12 +125,12 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
             return Boolean.TRUE;
         }
         // 判断下一个节点为null,且当前节点为 归档 时, 返回TRUE
-        if (ObjectUtil.isNull(nextWorkNode)){
+        if (ObjectUtil.isNull(nextWorkNode)) {
             String code = workNodeService.getOne(new LambdaQueryWrapper<WorkNode>()
                     .select(WorkNode::getCode)
                     .eq(BaseEntity::getId, currentInstanceNode.getNodeId()).eq(BaseEntity::getDeleted, Boolean.FALSE)).getCode();
             WorkflowNodeEnum workflowNodeEnum = WorkflowNodeEnum.valueOf(code);
-            if (workflowNodeEnum.equals(WorkflowNodeEnum.BUSINESS_ARCHIVING)){
+            if (workflowNodeEnum.equals(WorkflowNodeEnum.BUSINESS_ARCHIVING)) {
                 // 将产品归档状态与归档时间更新
                 assetsProductionService.prodSaveFile(new Date(), workNodeCommit.getBusinessSubId());
                 assetsProductionService.prodSaveFile(new Date(), workNodeCommit.getBusinessMinId());
@@ -150,19 +154,26 @@ public class AssetsNodeHandler extends WorkNodeProcessable {
     public boolean goBack(WorkNodeCommit commit) {
         Long instanceNodeId = commit.getInstanceNodeId();
         WorkFlowNodeInstance currentNode = workFlowNodeInstanceMapper.getInstanceNodeInfoById(instanceNodeId);
-        //如果是撰写节点(意见书,报告,复评函)退回。需删除产品业务信息
-        List<String> writeNodes = Arrays.asList(new String[]{WRITE_STATEMENT.name(), WRITE_REPORT.name(), WRITE_LETTER.name()});
-        if (writeNodes.contains(currentNode.getNodeCode()) && commit.getCleanReportNo() != null && commit.getCleanReportNo()) {
-            //是否取号?
-//            List<String> reportNos =  majorTargetMapper.getSubReportNo(currentNode.getBusinessId());
-//            if (CollectionUtil.isNotEmpty(reportNos)){
-//                //清除子号
-//                majorTargetMapper.cleanSubReportNo(currentNode.getBusinessId());
-//                //清除产品信息
-//                majorProductionMapper.delete(new LambdaQueryWrapper<MajorProduction>().eq(MajorProduction::getMajorId,currentNode.getBusinessId()));
-//            }
+        //判断是否是审核节点退回
+        List<String> writeNodes = Arrays.asList(new String[]{REVIEW_STATEMENT.name(), CHECK_REPORT.name()});
+        if (writeNodes.contains(currentNode.getNodeCode())) {
+            //将上一个节点状态改为PENDING
+            workFlowNodeInstanceService.update(new LambdaUpdateWrapper<WorkFlowNodeInstance>().set(WorkFlowNodeInstance::getState, PENDING)
+                    .eq(WorkFlowNodeInstance::getBusinessId, currentNode.getBusinessId()).eq(WorkFlowNodeInstance::getFlowId, currentNode.getFlowId())
+//                    .eq(StrUtil.isNotEmpty(commit.getBusinessSubId()), WorkFlowNodeInstance::getBusinessSubId, commit.getBusinessSubId())
+//                    .eq(StrUtil.isNotEmpty(commit.getBusinessMinId()), WorkFlowNodeInstance::getBusinessMinId, commit.getBusinessMinId())
+                    .eq(WorkFlowNodeInstance::getSequence, (currentNode.getSequence() - 1)).eq(BaseEntity::getDeleted, Boolean.FALSE));
+            //删除当前节点
+            workFlowNodeInstanceService.delete(instanceNodeId);
+
+            //删除当前节点的待处理的任务记录
+            workTaskRecordService.remove(new LambdaQueryWrapper<WorkTaskRecord>().eq(WorkTaskRecord::getInstanceId,instanceNodeId));
+
+            //添加日志
+            return addWorkflowLog(commit,currentNode);
+        }else {
+            return super.goBack(commit);
         }
-        return super.goBack(commit);
     }
 
     /**