Browse Source

驳回&终止审批

guarantee-lsq 7 months ago
parent
commit
4fb650cbd2

+ 6 - 0
platform-dao/src/main/java/com/platform/dao/dto/workflow/WorkflowTaskRecordDTO.java

@@ -80,4 +80,10 @@ public class WorkflowTaskRecordDTO extends BaseDTO implements Serializable {
      */
     private String keyword;
 
+    private String taskBomId;
+
+    private String formDataId;
+
+    private String flowId;
+
 }

+ 1 - 1
platform-dao/src/main/java/com/platform/dao/entity/workflow/WorkflowTaskRecord.java

@@ -31,7 +31,7 @@ public class WorkflowTaskRecord implements Serializable {
      */
     private String taskId;
     /**
-     * 处理结果 1 待发起 2 发起任务  3 同意  4 回退 5 终止
+     * 处理结果 1 待发起 2 发起任务  3 同意  4 驳回  5 终止  6 撤回s
      */
     private Integer handleStatus;
     /**

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/enums/TaskRecordStatusEnum.java

@@ -32,6 +32,10 @@ public enum TaskRecordStatusEnum {
      * 终止
      */
     PAUSE(5),
+    /**
+     * 撤回
+     */
+    CANCEL(5),
     ;
     private final Integer value;
 

+ 1 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/workflow/WorkflowTaskBomVO.java

@@ -73,6 +73,7 @@ public class WorkflowTaskBomVO extends BaseVO implements Serializable {
     private Integer readFlag; // 是否已阅
     private Integer reminderNum; // 催办次数
     private String currentUserName; // 当前处理人
+    private Integer taskStatus;
    /* *//**
      * 自定义字段1
      *//*

+ 1 - 1
platform-dao/src/main/resources/mapper/workflow/WorkflowTaskBomMapper.xml

@@ -85,7 +85,7 @@
             resultType="com.platform.dao.vo.query.workflow.WorkflowTaskBomVO">
         select bom.id,bom.task_id,bom.status,bom.personal_type,task.task_name,task.created_time as taskCreatedTime,
             task.apply_time,task.created_user_name as applyUserName,task.last_user_name,task.last_time,
-            task.remark as nodeRemark,bom.read_flag,bom.reminder_num,task.current_user_name,bom.handle_time
+            task.remark as nodeRemark,bom.read_flag,bom.reminder_num,task.current_user_name,bom.handle_time,task.status as taskStatus
         from t_workflow_task_bom as bom join t_workflow_task task on bom.task_id = task.id
         <where>
             <if test="createdUserId != null and createdUserId != ''">

+ 3 - 0
platform-service/src/main/java/com/platform/service/workflow/WorkflowTaskBomService.java

@@ -1,6 +1,7 @@
 package com.platform.service.workflow;
 
 import com.platform.dao.bean.MyPage;
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
 import com.platform.dao.vo.query.workflow.WorkflowTaskBomVO;
 import com.platform.dao.dto.workflow.WorkflowTaskBomDTO;
 import com.platform.dao.entity.workflow.WorkflowTaskBom;
@@ -51,4 +52,6 @@ public interface WorkflowTaskBomService extends IBaseService<WorkflowTaskBom, Wo
      * @param id
      */
     void publishTask(String id);
+
+    void verifyTask(WorkflowTaskRecordDTO recordDTO);
 }

+ 51 - 3
platform-service/src/main/java/com/platform/service/workflow/impl/WorkflowTaskBomServiceImpl.java

@@ -1,6 +1,5 @@
 package com.platform.service.workflow.impl;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.platform.common.bean.AbstractPageResultBean;
@@ -10,6 +9,7 @@ import com.platform.common.util.*;
 import com.platform.dao.bean.MyPage;
 import com.platform.dao.dto.workflow.WorkflowNodeDTO;
 import com.platform.dao.dto.workflow.WorkflowTaskBomDTO;
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
 import com.platform.dao.entity.custom.CustomClassName;
 import com.platform.dao.entity.custom.CustomFormData;
 import com.platform.dao.entity.workflow.WorkflowTask;
@@ -28,6 +28,7 @@ import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
 import com.platform.dao.vo.query.workflow.WorkflowTaskBomVO;
 import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.workflow.WorkflowTaskBomService;
+import com.platform.service.workflow.verifyStrategy.BaseStrategy;
 import com.platform.service.workflow.viewStrategy.BomViewStrategy;
 import lombok.AllArgsConstructor;
 import org.apache.commons.collections.CollectionUtils;
@@ -41,6 +42,7 @@ import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Description 流程任务审核字段显示表 service 实现类
@@ -54,6 +56,8 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
     @Resource
     private List<BomViewStrategy> bomViewStrategyList; // 查看实现类
     @Resource
+    private List<BaseStrategy> verifyStrategyList; // 审批处理集合
+    @Resource
     private WorkflowTaskMapper workflowTaskMapper;
     @Resource
     private WorkflowNodeMapper workflowNodeMapper;
@@ -155,6 +159,50 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
         saveTaskRecord(TaskRecordStatusEnum.APPLY_SUCCESS.getValue(),SecurityUtils.getUserInfo().getRealName() + "发送任务",updTask.getId());
     }
 
+    @Override
+    public void verifyTask(WorkflowTaskRecordDTO record) {
+        checkPreview(record);
+        WorkflowTaskBom bom = mapper.selectByPrimaryKey(record.getTaskBomId());
+        WorkflowTask task = workflowTaskMapper.selectByPrimaryKey(record.getTaskId());
+        // 校验是否处于待发起的状态,bom.status=0 & task.status = 3、5、6
+        if (bom.getStatus().intValue() != YesNoEnum.NO.getValue()) {
+            throw new DeniedException("待办事项状态有误,请检查");
+        }
+        int taskStatus = task.getStatus();
+        if (taskStatus != FlowTaskStatusEnum.VERIFYING.getValue()) {
+            throw new DeniedException("待办事项任务状态有误,请检查");
+        }
+        // 判断审核的状态,决定处理分支
+        int currentLevel = task.getNodeSort();
+        currentLevel++;
+        // 获取下一个审批节点,为空,表示流程结束
+        WorkflowNodeDTO node = new WorkflowNodeDTO();
+        node.setFlowId(task.getFlowId());
+        node.setNodeLevel(currentLevel);
+        node.setFrontParentId(task.getFrontId());
+        List<WorkflowNodeVO> nodeList = workflowNodeMapper.selectNodeList(node);
+        // 封装请求参数
+        record.setFormDataId(task.getFormDataId()); // 表单数据ID
+        record.setFlowId(task.getFlowId()); // 流程ID
+        BaseStrategy baseStrategy = verifyStrategyList.stream().filter(strategy -> strategy.getType().equals(record.getHandleStatus())).collect(Collectors.toList()).get(0);
+        baseStrategy.verify(nodeList,record);
+    }
+
+    private void checkPreview(WorkflowTaskRecordDTO record) {
+        if(StringUtils.isBlank(record.getTaskBomId())){
+            throw new DeniedException("待办任务的BomID不能为空");
+        }
+        if(StringUtils.isBlank(record.getTaskId())){
+            throw new DeniedException("待办任务的ID不能为空");
+        }
+        if(StringUtils.isBlank(record.getHandleRemark())){
+            throw new DeniedException("审批内容不可为空");
+        }
+        if(record.getHandleStatus() == null){
+            throw new DeniedException("审批状态不可为空");
+        }
+    }
+
     private void saveTaskRecord(Integer status,String remark,String taskId) {
         WorkflowTaskRecord record = new WorkflowTaskRecord();
         record.setId(IdGeneratorUtils.getObjectId());
@@ -260,10 +308,10 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
         bom.setReminderNum(YesNoEnum.NO.getValue());
         // 修改已有taskBom
         updBom.setStatus(YesNoEnum.YES.getValue());
-        updBom.setHandleRemark("发起审批流程");
+        updBom.setHandleRemark("发起审批流程"); // 需要修正
         updBom.setHandleTime(LocalDateTime.now());
         // 修改Task
-        updTask.setStatus(FlowTaskStatusEnum.VERIFYING.getValue());
+        updTask.setStatus(FlowTaskStatusEnum.VERIFYING.getValue()); // 修正
         updTask.setNodeSort(node.getNodeLevel());
         updTask.setFrontId(node.getFrontId());
         updTask.setLastTime(LocalDateTime.now());

+ 28 - 0
platform-service/src/main/java/com/platform/service/workflow/verifyStrategy/AbstractBaseStrategy.java

@@ -0,0 +1,28 @@
+package com.platform.service.workflow.verifyStrategy;
+
+import com.platform.common.util.IdGeneratorUtils;
+import com.platform.common.util.SecurityUtils;
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
+import com.platform.dao.entity.workflow.WorkflowTaskRecord;
+import com.platform.dao.mapper.workflow.WorkflowTaskRecordMapper;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
+public abstract class AbstractBaseStrategy implements BaseStrategy{
+    @Resource
+    private WorkflowTaskRecordMapper workflowTaskRecordMapper;
+
+    @Override
+    public void saveTaskRecord(WorkflowTaskRecordDTO record) {
+        WorkflowTaskRecord item = new WorkflowTaskRecord();
+        item.setId(IdGeneratorUtils.getObjectId());
+        item.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+        item.setCreatedTime(LocalDateTime.now());
+        item.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
+        item.setHandleStatus(record.getHandleStatus());
+        item.setTaskId(record.getTaskId());
+        item.setHandleRemark(record.getHandleRemark());
+        workflowTaskRecordMapper.insert(item);
+    }
+}

+ 32 - 0
platform-service/src/main/java/com/platform/service/workflow/verifyStrategy/BaseStrategy.java

@@ -0,0 +1,32 @@
+package com.platform.service.workflow.verifyStrategy;
+
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
+import com.platform.dao.entity.workflow.WorkflowTaskBom;
+import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
+
+import java.util.List;
+
+/**
+ * 处理审批任务的策略
+ */
+public interface BaseStrategy {
+
+    /**
+     * 查看实体名称
+     */
+    Integer getType();
+
+    /**
+     * 获取下一个动态任务bom
+     * @param nodeList
+     * @param record
+     * @return
+     */
+    void verify(List<WorkflowNodeVO> nodeList, WorkflowTaskRecordDTO record);
+
+    /**
+     * 保存审核记录
+     * @param record
+     */
+    void saveTaskRecord(WorkflowTaskRecordDTO record);
+}

+ 68 - 0
platform-service/src/main/java/com/platform/service/workflow/verifyStrategy/impl/VerifyBackStrategy.java

@@ -0,0 +1,68 @@
+package com.platform.service.workflow.verifyStrategy.impl;
+
+import com.platform.common.util.SecurityUtils;
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
+import com.platform.dao.entity.workflow.WorkflowTask;
+import com.platform.dao.entity.workflow.WorkflowTaskBom;
+import com.platform.dao.enums.FlowTaskStatusEnum;
+import com.platform.dao.enums.TaskRecordStatusEnum;
+import com.platform.dao.enums.YesNoEnum;
+import com.platform.dao.mapper.workflow.WorkflowTaskBomMapper;
+import com.platform.dao.mapper.workflow.WorkflowTaskMapper;
+import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
+import com.platform.service.workflow.verifyStrategy.AbstractBaseStrategy;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 3 同意  4 回退 5 终止  6 撤回
+ */
+@Slf4j
+@Component
+@Service("verifyBackStrategy")
+public class VerifyBackStrategy extends AbstractBaseStrategy {
+    @Resource
+    private WorkflowTaskBomMapper workflowTaskBomMapper;
+    @Resource
+    private WorkflowTaskMapper workflowTaskMapper;
+
+    @Override
+    public Integer getType() {
+        return TaskRecordStatusEnum.BACK.getValue();
+    }
+
+    @Override
+    public void verify(List<WorkflowNodeVO> nodeList, WorkflowTaskRecordDTO record) {
+        // 不用生成bom,修改老的bom
+        // 修改任务,改下状态和节点层级
+        WorkflowTask updTask = new WorkflowTask();
+        updTask.setId(record.getTaskId());
+        updTask.setFlowId(record.getFlowId());
+        updTask.setStatus(FlowTaskStatusEnum.BACK.getValue());
+        updTask.setLastTime(LocalDateTime.now());
+        updTask.setLastUserName(SecurityUtils.getUserInfo().getRealName());
+        updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setNodeSort(YesNoEnum.YES.getValue());
+        updTask.setRemark(SecurityUtils.getUserInfo().getRealName() + "驳回了本次任务");
+        workflowTaskMapper.updateByPrimaryKeySelective(updTask);
+        WorkflowTaskBom updBom = new WorkflowTaskBom();
+        updBom.setId(record.getId());
+        updBom.setHandleRemark(record.getHandleRemark());
+        updBom.setStatus(YesNoEnum.YES.getValue());
+        updBom.setHandleTime(LocalDateTime.now());
+        workflowTaskBomMapper.updateByPrimaryKey(updBom);
+        // 存储记录
+        saveTaskRecord(record);
+    }
+
+    @Override
+    public void saveTaskRecord(WorkflowTaskRecordDTO record) {
+        super.saveTaskRecord(record);
+    }
+
+}

+ 194 - 0
platform-service/src/main/java/com/platform/service/workflow/verifyStrategy/impl/VerifyPassStrategy.java

@@ -0,0 +1,194 @@
+package com.platform.service.workflow.verifyStrategy.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.platform.common.constant.CommonConstants;
+import com.platform.common.exception.DeniedException;
+import com.platform.common.util.*;
+import com.platform.dao.dto.workflow.WorkflowNodeDTO;
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
+import com.platform.dao.entity.custom.CustomClassName;
+import com.platform.dao.entity.custom.CustomFormData;
+import com.platform.dao.entity.workflow.WorkflowTask;
+import com.platform.dao.entity.workflow.WorkflowTaskBom;
+import com.platform.dao.enums.FlowTaskStatusEnum;
+import com.platform.dao.enums.TaskRecordStatusEnum;
+import com.platform.dao.enums.YesNoEnum;
+import com.platform.dao.mapper.custom.CustomClassNameMapper;
+import com.platform.dao.mapper.custom.CustomFormDataMapper;
+import com.platform.dao.mapper.workflow.WorkflowNodeMapper;
+import com.platform.dao.mapper.workflow.WorkflowTaskBomMapper;
+import com.platform.dao.mapper.workflow.WorkflowTaskMapper;
+import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
+import com.platform.service.workflow.verifyStrategy.AbstractBaseStrategy;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 3 同意  4 回退 5 终止  6 撤回
+ */
+@Slf4j
+@Component
+@Service("verifyPassStrategy")
+public class VerifyPassStrategy extends AbstractBaseStrategy {
+    @Resource
+    private CustomFormDataMapper customFormDataMapper;
+    @Resource
+    private CustomClassNameMapper customClassNameMapper;
+    @Resource
+    private WorkflowNodeMapper workflowNodeMapper;
+    @Resource
+    private WorkflowTaskBomMapper workflowTaskBomMapper;
+    @Resource
+    private WorkflowTaskMapper workflowTaskMapper;
+    ;
+
+    @Override
+    public Integer getType() {
+        return TaskRecordStatusEnum.YES.getValue();
+    }
+
+    @Override
+    public void verify(List<WorkflowNodeVO> nodeList, WorkflowTaskRecordDTO record) {
+        WorkflowTask updTask = new WorkflowTask();
+        updTask.setId(record.getTaskId());
+        updTask.setFlowId(record.getFlowId());
+        WorkflowTaskBom updBom = new WorkflowTaskBom();
+        updBom.setId(record.getId());
+        updBom.setHandleRemark(record.getHandleRemark());
+        if (CollectionUtils.isEmpty(nodeList)) {
+            // 流程结束
+            finishTask(updBom,updTask);
+        } else {
+            // 生成taskBom
+            generateTaskBom(nodeList, updTask, updBom, customFormDataMapper.selectByPrimaryKey(record.getFormDataId()));
+        }
+        // 存储记录
+        saveTaskRecord(record);
+    }
+
+    @Override
+    public void saveTaskRecord(WorkflowTaskRecordDTO record) {
+        super.saveTaskRecord(record);
+    }
+
+    private void finishTask(WorkflowTaskBom updBom, WorkflowTask updTask) {
+        updBom.setStatus(YesNoEnum.YES.getValue());
+        updBom.setHandleTime(LocalDateTime.now());
+        // 修改老节点
+        workflowTaskBomMapper.updateByPrimaryKey(updBom);
+        // 修改任务
+        updTask.setStatus(FlowTaskStatusEnum.FINISH.getValue());
+        updTask.setLastTime(LocalDateTime.now());
+        updTask.setLastUserName(SecurityUtils.getUserInfo().getRealName());
+        updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setRemark("已结束");
+        workflowTaskMapper.updateByPrimaryKeySelective(updTask);
+    }
+
+    private WorkflowTaskBom generateTaskBom(List<WorkflowNodeVO> nodeList, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {
+        WorkflowTaskBom bom = null;
+        for (WorkflowNodeVO nodeVO : nodeList) {
+            bom = generateTaskBom(nodeVO, updTask, updBom, data);
+            if (bom != null) {
+                break;
+            }
+        }
+        return bom;
+    }
+
+    private WorkflowTaskBom generateTaskBom(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {
+        WorkflowTaskBom bom = null;
+        switch (node.getType()) {
+            case CommonConstants.CONDITION_TYPE: // 条件分支
+                JSONObject switchJson = JSONObject.parseObject(node.getSwitchJson());
+                int symbol = switchJson.getInteger("symbol"); // 比较符号 > = < 等
+                BigDecimal val = BigDecimalUtil.valueNull(switchJson.getString("value")); // 比较值
+                String fieldName = switchJson.getString("fieldName");
+                // 获取主键ID值
+                String primaryKey = getPrimaryKey(data.getJsonString(), fieldName);
+                // 获取表单关联关系
+                if (StringUtils.isBlank(node.getSwitchHandleId())) {
+                    throw new DeniedException("分支条件处理class流程未配置");
+                }
+                CustomClassName className = customClassNameMapper.selectByPrimaryKey(node.getSwitchHandleId());
+                Object obj = BeanUtils.getBean(className.getHandleCode());
+                Class cla = obj.getClass();
+                Boolean findFlag = Boolean.FALSE; // 符合分支条件
+                try {
+                    Method method = cla.getMethod("");
+                    findFlag = (Boolean) method.invoke(obj, primaryKey, val, symbol);
+                } catch (NoSuchMethodException e) {
+                    e.printStackTrace();
+                } catch (IllegalAccessException e2) {
+                    e2.printStackTrace();
+                } catch (InvocationTargetException e3) {
+                    e3.printStackTrace();
+                }
+                if (findFlag) {
+                    // 获取下一个节点,封装审批人
+                    int nodeSort = node.getNodeLevel();
+                    nodeSort++;
+                    WorkflowNodeDTO nextNode = new WorkflowNodeDTO();
+                    nextNode.setNodeLevel(nodeSort);
+                    nextNode.setFlowId(data.getFlowId());
+                    nextNode.setFrontParentId(node.getFrontId());
+                    List<WorkflowNodeVO> nodeList = workflowNodeMapper.selectNodeList(nextNode);
+                    bom = getBomByNode(nodeList.get(0), updTask, updBom);
+                }
+                // 获取分支
+                break;
+            case CommonConstants.VERIFY_USER_TYPE: // 审核人处理
+                bom = getBomByNode(node, updTask, updBom);
+                break;
+        }
+        return bom;
+    }
+
+    private WorkflowTaskBom getBomByNode(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom) {
+        WorkflowTaskBom bom = new WorkflowTaskBom();
+        bom.setId(IdGeneratorUtils.getObjectId());
+        bom.setTaskId(updTask.getId());
+        bom.setStatus(YesNoEnum.NO.getValue());
+        bom.setPersonalType(YesNoEnum.YES.getValue() + 1);
+        bom.setCreatedUserName(node.getUserName());
+        bom.setCreatedUserId(node.getUserId());
+        bom.setCreatedTime(LocalDateTime.now());
+        bom.setReadFlag(YesNoEnum.NO.getValue());
+        bom.setReminderNum(YesNoEnum.NO.getValue());
+        // 修改已有taskBom
+        updBom.setStatus(YesNoEnum.YES.getValue());
+        updBom.setHandleTime(LocalDateTime.now());
+        // 修改Task
+        updTask.setStatus(FlowTaskStatusEnum.VERIFYING.getValue());
+        updTask.setNodeSort(node.getNodeLevel());
+        updTask.setFrontId(node.getFrontId());
+        updTask.setLastTime(LocalDateTime.now());
+        updTask.setLastUserName(SecurityUtils.getUserInfo().getRealName());
+        updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setCurrentUserId(node.getUserId());
+        updTask.setCurrentUserName(node.getUserName());
+        updTask.setRemark("待" + node.getUserName() + "处理");
+        // 存入bom
+        workflowTaskBomMapper.insert(bom);
+        // 修改老节点
+        workflowTaskBomMapper.updateByPrimaryKey(updBom);
+        // 修改任务
+        workflowTaskMapper.updateByPrimaryKeySelective(updTask);
+        return bom;
+    }
+
+    private String getPrimaryKey(String json, String fieldName) {
+        JSONObject jsonObject = JSONObject.parseObject(json);
+        return jsonObject.getString(fieldName);
+    }
+
+}

+ 68 - 0
platform-service/src/main/java/com/platform/service/workflow/verifyStrategy/impl/VerifyPauseStrategy.java

@@ -0,0 +1,68 @@
+package com.platform.service.workflow.verifyStrategy.impl;
+
+import com.platform.common.util.SecurityUtils;
+import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
+import com.platform.dao.entity.workflow.WorkflowTask;
+import com.platform.dao.entity.workflow.WorkflowTaskBom;
+import com.platform.dao.enums.FlowTaskStatusEnum;
+import com.platform.dao.enums.TaskRecordStatusEnum;
+import com.platform.dao.enums.YesNoEnum;
+import com.platform.dao.mapper.workflow.WorkflowTaskBomMapper;
+import com.platform.dao.mapper.workflow.WorkflowTaskMapper;
+import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
+import com.platform.service.workflow.verifyStrategy.AbstractBaseStrategy;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 3 同意  4 回退 5 终止  6 撤回
+ */
+@Slf4j
+@Component
+@Service("verifyPauseStrategy")
+public class VerifyPauseStrategy extends AbstractBaseStrategy {
+    @Resource
+    private WorkflowTaskBomMapper workflowTaskBomMapper;
+    @Resource
+    private WorkflowTaskMapper workflowTaskMapper;
+
+    @Override
+    public Integer getType() {
+        return TaskRecordStatusEnum.PAUSE.getValue();
+    }
+
+    @Override
+    public void verify(List<WorkflowNodeVO> nodeList, WorkflowTaskRecordDTO record) {
+        // 不用生成bom,修改老的bom
+        // 修改任务,改下状态和节点层级
+        WorkflowTask updTask = new WorkflowTask();
+        updTask.setId(record.getTaskId());
+        updTask.setFlowId(record.getFlowId());
+        updTask.setStatus(FlowTaskStatusEnum.CANCEL.getValue());
+        updTask.setLastTime(LocalDateTime.now());
+        updTask.setLastUserName(SecurityUtils.getUserInfo().getRealName());
+        updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
+        updTask.setNodeSort(YesNoEnum.YES.getValue());
+        updTask.setRemark(SecurityUtils.getUserInfo().getRealName() + "终止了本次任务");
+        workflowTaskMapper.updateByPrimaryKeySelective(updTask);
+        WorkflowTaskBom updBom = new WorkflowTaskBom();
+        updBom.setId(record.getId());
+        updBom.setHandleRemark(record.getHandleRemark());
+        updBom.setStatus(YesNoEnum.YES.getValue());
+        updBom.setHandleTime(LocalDateTime.now());
+        workflowTaskBomMapper.updateByPrimaryKey(updBom);
+        // 存储记录
+        saveTaskRecord(record);
+    }
+
+    @Override
+    public void saveTaskRecord(WorkflowTaskRecordDTO record) {
+        super.saveTaskRecord(record);
+    }
+
+}

+ 1 - 4
platform-service/src/main/java/com/platform/service/workflow/viewStrategy/BomViewStrategy.java

@@ -2,13 +2,10 @@ package com.platform.service.workflow.viewStrategy;
 
 import com.alibaba.fastjson.JSONObject;
 
-import java.io.Serializable;
-
 /**
  * 查看task任务关联的objId详情
- * @param <T>
  */
-public interface BomViewStrategy<T extends Serializable> {
+public interface BomViewStrategy {
 
     /**
      * 查看实体名称

+ 1 - 2
platform-service/src/main/java/com/platform/service/workflow/viewStrategy/impl/CustomFormViewStrategy.java

@@ -2,7 +2,6 @@ package com.platform.service.workflow.viewStrategy.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.platform.common.util.JsonUtils;
-import com.platform.dao.entity.custom.CustomFormBom;
 import com.platform.service.custom.CustomFormBomService;
 import com.platform.service.workflow.viewStrategy.BomViewStrategy;
 import lombok.extern.slf4j.Slf4j;
@@ -13,7 +12,7 @@ import javax.annotation.Resource;
 @Service("customFormViewStrategy")
 @Slf4j
 @Component
-public class CustomFormViewStrategy implements BomViewStrategy<CustomFormBom> {
+public class CustomFormViewStrategy implements BomViewStrategy {
 
     @Resource
     private CustomFormBomService customFormBomService;