hfxc226 vor 3 Jahren
Ursprung
Commit
fb1c602f9d

+ 1 - 2
platform-activiti/src/main/java/com/platform/activiti/controller/ActivitiController.java

@@ -361,7 +361,7 @@ public class ActivitiController {
         }
         taskList = taskList.stream().distinct().sorted(Comparator.comparing(Task::getCreateTime).reversed()).collect(Collectors.toList());
         List<ActApplyInfo> tasks = new ArrayList<>();
-        Map<String, Object> map = null;
+        Map<String, Object> map = new HashMap<>();
         long total = taskList.size();
         int pages = (int) total / pageSize;
         pages = total % pageSize == 0 ? pages : (pages + 1);
@@ -377,7 +377,6 @@ public class ActivitiController {
         int startRow = pageNum > 0 ? (pageNum - 1) * pageSize : 0;
         int endRow = startRow + pageSize * (pageNum > 0 ? 1 : 0);
         endRow = endRow > taskList.size() ? taskList.size() : endRow;
-
         for (int i = startRow; i < endRow; i++) {
             Task task = taskList.get(i);
             String taskId = task.getId();

+ 4 - 1
platform-common/src/main/java/com/platform/common/bean/BaseDTO.java

@@ -93,7 +93,10 @@ public class BaseDTO implements Serializable {
     private List<Object> deleteList;
 
     private Integer minStatus;
-
+    /**
+     * 工作流实例ID
+     */
+    private String processInstanceId;
     /**
      * 提交类型
      */

+ 28 - 3
platform-rest/src/main/java/com/platform/rest/controller/activiti/SbInfoActivitiController.java

@@ -35,6 +35,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.activiti.engine.HistoryService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.TaskService;
+import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Comment;
@@ -76,7 +77,7 @@ public class SbInfoActivitiController {
      */
     @SysLog("设备报废提交审批")
     @PutMapping("/start")
-    public R modModelByDTOForScrapForAudit(@RequestBody SbInfoDTO sbInfoDTO) {
+    public R start(@RequestBody SbInfoDTO sbInfoDTO) {
         ActApplyInfo applyInfo = new ActApplyInfo(sbInfoDTO.getId(),
                 sbInfoDTO.getName() + "-" + sbInfoDTO.getNo(), ActApplyEnum.SB_INFO_SCRAP_TEST.getName(),
                 0,
@@ -95,6 +96,7 @@ public class SbInfoActivitiController {
         log.info("流程定义ID:" + instance.getProcessDefinitionId());
         sbInfoDTO.setProcessInstanceId(instance.getId());
         SbInfo sbInfo = new SbInfo();
+        sbInfo.setStatus(SbInfoStatusEnum.IN_SCRAP.getValue());
         sbInfo.setId(sbInfoDTO.getId());
         sbInfo.setProcessInstanceId(instance.getId());
         sbInfoService.updateByPrimaryKeySelective(sbInfo);
@@ -104,7 +106,7 @@ public class SbInfoActivitiController {
     /**
      * 审核
      *
-     * @param sbInfoDTO
+     * @param sbInfoDTO:不包括processInstanceId,
      * @return R
      */
     @SysLog("设备报废审核")
@@ -122,9 +124,32 @@ public class SbInfoActivitiController {
         map.put("result", result);
         taskService.addComment(taskId, sbInfoDTO.getProcessInstanceId(), sbInfoDTO.getRefuseReason());
         taskService.complete(taskId, map);
+        if(checkFinish(sbInfoDTO.getProcessInstanceId())){
+            SbInfo sbInfo = new SbInfo();
+            sbInfo.setStatus(SbInfoStatusEnum.SCRAPED.getValue());
+            sbInfo.setId(sbInfoDTO.getId());
+            sbInfoService.updateByPrimaryKeySelective(sbInfo);
+        }
         return new R<>();
     }
 
+    /**
+     * 判定流程是否结束
+     * @param processInstanceId
+     * @return
+     */
+    private boolean checkFinish(String processInstanceId) {
+        HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
+        if (Objects.isNull(historicProcessInstance)) {
+            return true;
+        }
+        if (Objects.isNull(historicProcessInstance.getEndTime())) {
+            return false;
+        } else {
+            return true;
+        }
+    }
+
     /**
      * 审核
      *
@@ -196,7 +221,7 @@ public class SbInfoActivitiController {
                 }
                 if (commentList != null && commentList.size() > 0) {
                     for (Comment comment : commentList) {
-                        if(comment.getTaskId().equals(task.getId())){
+                        if (comment.getTaskId().equals(task.getId())) {
                             detail.setApproveComment(comment.getFullMessage());
                             break;
                         }

+ 60 - 0
platform-service/src/main/java/com/platform/service/activiti/business/ActivitiBusinessAbstract.java

@@ -0,0 +1,60 @@
+package com.platform.service.activiti.business;
+
+import com.platform.common.bean.BaseDTO;
+import com.platform.common.enums.ResultCode;
+import com.platform.common.exception.BusinessException;
+import com.platform.common.model.UserInfo;
+import com.platform.common.util.SecurityUtils;
+import com.platform.service.base.IBaseService;
+import com.platform.service.upms.SysUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.activiti.engine.HistoryService;
+import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 审批业务抽象类,其他的业务可以
+ */
+@Slf4j
+public abstract class ActivitiBusinessAbstract<M extends IBaseService<T, K>, K extends BaseDTO> {
+
+    @Autowired
+    protected M service;
+    @Autowired
+    private RuntimeService runtimeService;
+    @Autowired
+    private HistoryService historyService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private SysUserService sysUserService;
+
+    private String key;
+
+    /**
+     * 启动执行步骤
+     */
+    public final void start(K k) {
+        this.before();
+        this.after(doing(), k);
+    }
+
+    public abstract void before();
+    public ProcessInstance doing(){
+        UserInfo user = SecurityUtils.getUserInfo();
+        ProcessInstance instance = runtimeService.startProcessInstanceByKey(key);
+        if (instance == null) {
+            throw new BusinessException(ResultCode.ACTIVITI_PROCESS_NOT_EXIST.getDescription());
+        }
+        log.info("流程实例ID:" + instance.getId());
+        log.info("流程定义ID:" + instance.getProcessDefinitionId());
+        return instance;
+    }
+    public void after(ProcessInstance instance, K k){
+        k.setProcessInstanceId(instance.getId());
+        service.modModelByDTO(k);
+    }
+}