浏览代码

1.新增流程节点批量提交接口

GouGengquan 10 月之前
父节点
当前提交
d91f81750f

+ 10 - 0
biz-base/src/main/java/com/dayou/controller/WorkFlowController.java

@@ -112,5 +112,15 @@ public class WorkFlowController extends BaseController {
         Boolean result = workFlowService.commit(workNodeCommit);
         return RestResponse.data(result);
     }
+
+    /**
+     * 批量提交流程
+     * @param workNodeCommits 提交信息集合
+     * @return Boolean
+     */
+    @PostMapping("/batchCommit")
+    public RestResponse<Boolean> batchCommit(@RequestBody @Valid List<WorkNodeCommit> workNodeCommits){
+        return RestResponse.data(workFlowService.batchCommit(workNodeCommits));
+    }
 }
 

+ 2 - 0
common/src/main/java/com/dayou/exception/ErrorCode.java

@@ -89,6 +89,8 @@ public class ErrorCode {
 
     public static final ErrorCode DATA_OUT_OFF = ErrorCode("10042", "页面数据超时,请刷新页面。");
 
+    public static final ErrorCode BATCH_COMMIT_ERROR = ErrorCode("10043", "订单号:{0}、产品号:{1}的流程批量提交失败,请检查后重试。");
+
     private String code;
     private String errorMsg;
 

+ 3 - 0
dao/src/main/resources/mapper/AssetsMapper.xml

@@ -189,6 +189,9 @@
         <if test="assetsSelectDTO != null and assetsSelectDTO.departmentId">
             AND assets.department_id = #{assetsSelectDTO.departmentId}
         </if>
+        <if test="assetsSelectDTO != null and assetsSelectDTO.getNodeIsBookbindingStamp">
+            AND nodeInfo.currentNodeCode = 'STATEMENT_BOOKBINDING_STAMP' OR nodeInfo.currentNodeCode = 'REPORT_BOOKBINDING_STAMP'
+        </if>
         ORDER BY assets.created DESC
     </select>
 

+ 5 - 0
domain/src/main/java/com/dayou/dto/AssetsSelectDTO.java

@@ -121,6 +121,11 @@ public class AssetsSelectDTO {
     private Boolean selectByAll;
 
     /**
+     * 是否获取所有当前为装订盖章节点(报告\意见书)的流程
+     */
+    private Boolean getNodeIsBookbindingStamp;
+
+    /**
      * 部门id
      */
     private List<Long> departmentIdList;

+ 7 - 0
service/src/main/java/com/dayou/service/workflow/IWorkFlowService.java

@@ -37,6 +37,13 @@ public interface IWorkFlowService extends IService<WorkFlow> {
 
     Boolean commit(WorkNodeCommit workNodeCommit);
 
+    /**
+     * 批量提交流程
+     * @param workNodeCommits 提交信息集合
+     * @return Boolean
+     */
+    Boolean batchCommit(List<WorkNodeCommit> workNodeCommits);
+
     WorkNodeCommit openingOrder(MainBusinessEnum mainBusinessEnum, Long businessId, String businessSubId,String remark);
 
     Boolean openingDeclare(MainBusinessEnum mainBusinessEnum, Long businessId);

+ 22 - 0
service/src/main/java/com/dayou/service/workflow/WorkFlowServiceImpl.java

@@ -1,6 +1,7 @@
 package com.dayou.service.workflow;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.WorkNodeCommit;
@@ -12,6 +13,7 @@ import com.dayou.entity.WorkNodeTask;
 import com.dayou.enums.MainBusinessEnum;
 import com.dayou.enums.workflow.NodeLogEnum;
 import com.dayou.enums.workflow.NodeStateEnum;
+import com.dayou.exception.BusinessException;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.WorkFlowMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 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;
@@ -144,6 +147,25 @@ public class WorkFlowServiceImpl extends ServiceImpl<WorkFlowMapper, WorkFlow> i
     }
 
     /**
+     * 批量提交流程
+     * @param workNodeCommits 提交信息集合
+     * @return Boolean
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean batchCommit(List<WorkNodeCommit> workNodeCommits) {
+        for (WorkNodeCommit workNodeCommit : workNodeCommits){
+            Boolean success = commit(workNodeCommit);
+            // 碰到提交失败的流程抛出异常
+            if (!success){
+                WorkFlowNodeInstance instanceNode = workFlowNodeInstanceService.getById(workNodeCommit.getInstanceNodeId());
+                ErrorCode.throwBusinessException(ErrorCode.BATCH_COMMIT_ERROR,instanceNode.getBusinessId(), ObjectUtil.isNotNull(instanceNode.getBusinessMinId()) ? instanceNode.getBusinessMinId() : instanceNode.getBusinessSubId());
+            }
+        }
+        return Boolean.TRUE;
+    }
+
+    /**
      * 业务下单
      * @param businessId
      * @param remark