Selaa lähdekoodia

审批后置处理

guarantee-lsq 9 kuukautta sitten
vanhempi
commit
e70fe18ed8

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/dto/custom/CustomFormDataDTO.java

@@ -85,4 +85,8 @@ public class CustomFormDataDTO extends BaseDTO implements Serializable {
     private String keyword;
 
     private String targetId;  // 目标ID
+
+    private String category; // 模板分类
+
+    private String type; // 表单分类
 }

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

@@ -97,4 +97,5 @@ public class WorkflowTaskRecordDTO extends BaseDTO implements Serializable {
      */
     private List<SysFile> fileList;
 
+    private String linkType;
 }

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/entity/custom/CustomFormData.java

@@ -76,4 +76,8 @@ public class CustomFormData implements Serializable{
 
     private String targetId;  // 目标ID
 
+    private String category; // 模板分类
+
+    private String type; // 表单分类
+
 }

+ 39 - 0
platform-dao/src/main/java/com/platform/dao/enums/CategoryTypeEnum.java

@@ -0,0 +1,39 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 表单归属分类
+ * @Author lsq
+ * @Date 2024/08/05
+ * @Version Copyright (c) 2019,合肥乾元坤合科技有限公司 All rights reserved.
+ */
+@Getter
+@AllArgsConstructor
+public enum CategoryTypeEnum {
+
+    /**
+     * 设备类
+     */
+    SB_FORM("sb_form"),
+    /**
+     * 维修类
+     */
+    REPAIR_FORM("repair_form"),
+    /**
+     * 采购类
+     */
+    PURCHASE_FORM("purchase_form"),
+    /**
+     * 备件类
+     */
+    SPARE_FORM("spare_form"),
+    /**
+     * 维保类
+     */
+    MAINTENANCE_FORM("maintenance_form"),
+    ;
+    private final String value;
+
+}

+ 27 - 0
platform-dao/src/main/java/com/platform/dao/enums/SbFormTypeEnum.java

@@ -0,0 +1,27 @@
+package com.platform.dao.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @Description 表单归属分类
+ * @Author lsq
+ * @Date 2024/08/05
+ * @Version Copyright (c) 2019,合肥乾元坤合科技有限公司 All rights reserved.
+ */
+@Getter
+@AllArgsConstructor
+public enum SbFormTypeEnum {
+
+    /**
+     * 设备报废单
+     */
+    SB_ABOLISH("sb-abolish"),
+    /**
+     * 设备调拨单
+     */
+    SB_TRANSFER("sb-transfer"),
+    ;
+    private final String value;
+
+}

+ 4 - 0
platform-dao/src/main/java/com/platform/dao/vo/query/custom/CustomFormDataVO.java

@@ -68,5 +68,9 @@ public class CustomFormDataVO extends BaseVO implements Serializable {
 
     private String formJsonString;
 
+    private String category; // 模板分类
+
+    private String type; // 表单分类
+
 
 }

+ 5 - 3
platform-service/src/main/java/com/platform/service/custom/impl/CustomFormDataServiceImpl.java

@@ -89,10 +89,10 @@ public class CustomFormDataServiceImpl extends BaseServiceImpl<CustomFormDataMap
     public CustomFormData saveByDTO(CustomFormDataDTO record) {
         log.info("新增dataJson===" + record.getJsonString());
         checkPreview(record);
-        //CustomForm form = customFormMapper.selectByPrimaryKey(record.getFormId());
+        CustomForm form = customFormMapper.selectByPrimaryKey(record.getFormId());
         // 新增data
         CustomFormData data = BeanConverterUtil.copyObjectProperties(record, CustomFormData.class);
-        packageData(data);
+        packageData(data,form);
         // 获取的查询字段值
         /*CustomFormBomField fieldQuery = new CustomFormBomField();
         fieldQuery.setFormId(record.getFormId());
@@ -187,11 +187,13 @@ public class CustomFormDataServiceImpl extends BaseServiceImpl<CustomFormDataMap
         String date = DateUtils.dateToString(LocalDateTime.now(),DateUtils.PATTERNYMDHMS);
         return userName + "-" + flowName + "-" + date;
     }
-    private void packageData(CustomFormData data) {
+    private void packageData(CustomFormData data,CustomForm form) {
         data.setId(IdGeneratorUtils.getObjectId());
         data.setCreatedTime(LocalDateTime.now());
         data.setCreatedUserName(SecurityUtils.getUserInfo().getRealName());
         data.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
+        data.setCategory(form.getCategory());
+        data.setType(form.getType());
     }
 
     private void checkPreview(CustomFormDataDTO record) {

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

@@ -23,7 +23,7 @@ import com.platform.service.base.impl.BaseServiceImpl;
 import com.platform.service.upms.SysFileService;
 import com.platform.service.workflow.WorkflowTaskBomService;
 import com.platform.service.workflow.verifyStrategy.BaseStrategy;
-import com.platform.service.workflow.viewStrategy.BomViewStrategy;
+import com.platform.service.workflow.viewStrategy.LinkTypeStrategy;
 import lombok.AllArgsConstructor;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +47,7 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomMapper, WorkflowTaskBom, WorkflowTaskBomDTO> implements WorkflowTaskBomService {
     @Resource
-    private List<BomViewStrategy> bomViewStrategyList; // 查看实现类
+    private List<LinkTypeStrategy> linkTypeStrategyList; // 查看实现类
     @Resource
     private List<BaseStrategy> verifyStrategyList; // 审批处理集合
     @Resource
@@ -110,7 +110,7 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
             mapper.updateByPrimaryKeySelective(bom);
         }
         // 获取详情数据
-        BomViewStrategy baseStrategy = bomViewStrategyList.stream().filter(strategy -> strategy.getType().equals(vo.getLinkType())).collect(Collectors.toList()).get(0);
+        LinkTypeStrategy baseStrategy = linkTypeStrategyList.stream().filter(strategy -> strategy.getType().equals(vo.getLinkType())).collect(Collectors.toList()).get(0);
         vo.setData(baseStrategy.getVOById(vo.getFormDataId()));
         // 审批记录
         packageVerifyRecord(vo);
@@ -176,6 +176,7 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
         checkPreview(record);
         WorkflowTaskBom bom = mapper.selectByPrimaryKey(record.getTaskBomId());
         WorkflowTask task = workflowTaskMapper.selectByPrimaryKey(record.getTaskId());
+        record.setLinkType(task.getLinkType());
         // 校验是否处于待发起的状态,bom.status=0 & task.status = 3、5、6
         if (bom.getStatus().intValue() != YesNoEnum.NO.getValue()) {
             throw new DeniedException("待办事项状态有误,请检查");

+ 9 - 2
platform-service/src/main/java/com/platform/service/workflow/verifyStrategy/impl/VerifyPassStrategy.java

@@ -23,6 +23,7 @@ import com.platform.dao.mapper.workflow.WorkflowTaskMapper;
 import com.platform.dao.vo.SysUserVO;
 import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
 import com.platform.service.workflow.verifyStrategy.AbstractBaseStrategy;
+import com.platform.service.workflow.viewStrategy.LinkTypeStrategy;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.stereotype.Component;
@@ -34,6 +35,7 @@ import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 3 同意  4 回退 5 终止  6 撤回
@@ -42,6 +44,8 @@ import java.util.List;
 @Component
 @Service("verifyPassStrategy")
 public class VerifyPassStrategy extends AbstractBaseStrategy {
+    @Resource
+    private List<LinkTypeStrategy> linkTypeStrategyList; //
     @Resource
     private CustomFormDataMapper customFormDataMapper;
     @Resource
@@ -70,7 +74,7 @@ public class VerifyPassStrategy extends AbstractBaseStrategy {
         updBom.setHandleRemark(record.getHandleRemark());
         if (CollectionUtils.isEmpty(nodeList)) {
             // 流程结束
-            finishTask(updBom,updTask);
+            finishTask(updBom,updTask,record);
         } else {
             // 生成taskBom
             generateTaskBom(nodeList, updTask, updBom, customFormDataMapper.selectByPrimaryKey(record.getFormDataId()));
@@ -85,7 +89,7 @@ public class VerifyPassStrategy extends AbstractBaseStrategy {
         super.saveTaskRecord(record);
     }
 
-    private void finishTask(WorkflowTaskBom updBom, WorkflowTask updTask) {
+    private void finishTask(WorkflowTaskBom updBom, WorkflowTask updTask,WorkflowTaskRecordDTO record) {
         // 获取历史记录
         WorkflowTaskBom oldBom = workflowTaskBomMapper.selectByPrimaryKey(updBom.getId());
         WorkflowTaskBom queryBom = new WorkflowTaskBom();
@@ -111,6 +115,9 @@ public class VerifyPassStrategy extends AbstractBaseStrategy {
         updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
         updTask.setRemark("已结束");
         workflowTaskMapper.updateByPrimaryKeySelective(updTask);
+        // 审批通过后处理
+        LinkTypeStrategy baseStrategy = linkTypeStrategyList.stream().filter(strategy -> strategy.getType().equals(record.getLinkType())).collect(Collectors.toList()).get(0);
+        baseStrategy.effectiveComposer(record.getFormDataId());
     }
 
     private boolean generateTaskBom(List<WorkflowNodeVO> nodeList, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {

+ 20 - 0
platform-service/src/main/java/com/platform/service/workflow/viewStrategy/EffectiveComposer.java

@@ -0,0 +1,20 @@
+package com.platform.service.workflow.viewStrategy;
+
+import com.platform.dao.entity.custom.CustomFormData;
+
+/**
+ * 自定义表单后处理器
+ */
+public interface EffectiveComposer {
+
+    /**
+     * 获取自定义处理表单类型
+     */
+    String getType();
+
+    /**
+     * 自定义处理表单
+     * @param data 数据
+     */
+    void effectiveComposer(CustomFormData data);
+}

+ 7 - 1
platform-service/src/main/java/com/platform/service/workflow/viewStrategy/BomViewStrategy.java → platform-service/src/main/java/com/platform/service/workflow/viewStrategy/LinkTypeStrategy.java

@@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 /**
  * 查看task任务关联的objId详情
  */
-public interface BomViewStrategy {
+public interface LinkTypeStrategy {
 
     /**
      * 查看实体名称
@@ -18,4 +18,10 @@ public interface BomViewStrategy {
      */
     JSONObject getVOById(String id);
 
+    /**
+     * 审批后处理
+     * @param formDataId 自定义数据表单ID
+     */
+    void effectiveComposer(String formDataId);
+
 }

+ 17 - 3
platform-service/src/main/java/com/platform/service/workflow/viewStrategy/impl/CustomFormViewStrategy.java → platform-service/src/main/java/com/platform/service/workflow/viewStrategy/impl/CustomFormLinkTypeStrategy.java

@@ -3,21 +3,27 @@ package com.platform.service.workflow.viewStrategy.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.platform.common.util.BeanConverterUtil;
 import com.platform.common.util.JsonUtils;
+import com.platform.dao.entity.custom.CustomFormData;
 import com.platform.dao.enums.LinkTypeEnum;
 import com.platform.dao.mapper.custom.CustomFormDataMapper;
 import com.platform.dao.mapper.custom.CustomFormMapper;
 import com.platform.dao.vo.query.custom.CustomFormDataVO;
-import com.platform.service.workflow.viewStrategy.BomViewStrategy;
+import com.platform.service.workflow.viewStrategy.EffectiveComposer;
+import com.platform.service.workflow.viewStrategy.LinkTypeStrategy;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
 @Service("customFormViewStrategy")
 @Slf4j
 @Component
-public class CustomFormViewStrategy implements BomViewStrategy {
-
+public class CustomFormLinkTypeStrategy implements LinkTypeStrategy {
+    @Resource
+    private List<EffectiveComposer> effectiveComposerList; //
     @Resource
     private CustomFormDataMapper customFormDataMapper;
     @Resource
@@ -34,4 +40,12 @@ public class CustomFormViewStrategy implements BomViewStrategy {
         vo.setFormJsonString(customFormMapper.selectByPrimaryKey(vo.getFormId()).getJsonString());
         return JSONObject.parseObject(JsonUtils.objectToJson(vo));
     }
+
+    @Override
+    public void effectiveComposer(String formDataId) {
+        CustomFormData data = customFormDataMapper.selectByPrimaryKey(formDataId);
+        String switchType = data.getCategory() + data.getType();
+        EffectiveComposer composer = effectiveComposerList.stream().filter(strategy -> strategy.getType().equals(switchType)).collect(Collectors.toList()).get(0);
+        composer.effectiveComposer(data);
+    }
 }

+ 25 - 0
platform-service/src/main/java/com/platform/service/workflow/viewStrategy/impl/SbScrapEffectiveComposer.java

@@ -0,0 +1,25 @@
+package com.platform.service.workflow.viewStrategy.impl;
+
+import com.platform.common.util.JsonUtils;
+import com.platform.dao.entity.custom.CustomFormData;
+import com.platform.dao.enums.CategoryTypeEnum;
+import com.platform.dao.enums.SbFormTypeEnum;
+import com.platform.service.workflow.viewStrategy.EffectiveComposer;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.stereotype.Service;
+@Slf4j
+@Component
+@Service("sbScrapEffectiveComposer")
+public class SbScrapEffectiveComposer implements EffectiveComposer {
+    @Override
+    public String getType() {
+        return CategoryTypeEnum.SB_FORM.getValue() + SbFormTypeEnum.SB_ABOLISH.getValue();
+    }
+
+    @Override
+    public void effectiveComposer(CustomFormData data) {
+        log.info("------------------报废的后置处理------------------");
+        log.info(JsonUtils.objectToJson(data));
+    }
+}