home 2 ani în urmă
părinte
comite
5c00a34bfa
18 a modificat fișierele cu 318 adăugiri și 118 ștergeri
  1. 29 10
      hx-common/service-flow/src/main/java/com/fjhx/controller/process/ProcessInfoController.java
  2. 41 0
      hx-common/service-flow/src/main/java/com/fjhx/controller/process/ProcessTenantController.java
  3. 16 0
      hx-common/service-flow/src/main/java/com/fjhx/mapper/process/ProcessTenantMapper.java
  4. 5 0
      hx-common/service-flow/src/main/java/com/fjhx/mapper/process/ProcessTenantMapper.xml
  5. 8 3
      hx-common/service-flow/src/main/java/com/fjhx/service/process/ProcessInfoService.java
  6. 18 0
      hx-common/service-flow/src/main/java/com/fjhx/service/process/ProcessTenantService.java
  7. 57 60
      hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessInfoServiceImpl.java
  8. 13 8
      hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessNodeServiceImpl.java
  9. 60 0
      hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessTenantServiceImpl.java
  10. 3 3
      hx-common/service-flow/src/main/resources/application-dev.yml
  11. 3 3
      hx-common/service-flow/src/main/resources/application-prod.yml
  12. 3 3
      hx-common/service-flow/src/main/resources/application-test.yml
  13. 4 4
      hx-service-api/service-flow-api/src/main/java/com/fjhx/constants/FlowExplainConstant.java
  14. 0 21
      hx-service-api/service-flow-api/src/main/java/com/fjhx/entity/process/ProcessInfo.java
  15. 53 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/entity/process/ProcessTenant.java
  16. 1 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/enums/ButtonNameEnum.java
  17. 1 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/enums/ProcessNodeTypeEnum.java
  18. 3 3
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockDetailServiceImpl.java

+ 29 - 10
hx-common/service-flow/src/main/java/com/fjhx/controller/process/ProcessInfoController.java

@@ -1,7 +1,7 @@
 package com.fjhx.controller.process;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.entity.process.ProcessInfo;
-import com.fjhx.params.process.ProcessObject;
 import com.fjhx.service.process.ProcessInfoService;
 import org.springblade.core.tool.api.R;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,6 +10,9 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 前端控制器
@@ -26,23 +29,39 @@ public class ProcessInfoController {
     private ProcessInfoService processInfoService;
 
     /**
-     * 添加系统流程
+     * 列表
+     */
+    @PostMapping("/list")
+    public R list(@RequestBody Map<String, String> condition) {
+        List<ProcessInfo> list = processInfoService.getList(condition);
+        return R.success(list);
+    }
+
+    /**
+     * 分页
      */
-    @PostMapping("/addSystem")
-    public R addSystem(@RequestBody ProcessInfo processInfo) {
-        ProcessObject result = processInfoService.addSystem(processInfo);
-        return R.success(result);
+    @PostMapping("/page")
+    public R page(@RequestBody Map<String, String> condition) {
+        Page<ProcessInfo> page = processInfoService.getPage(condition);
+        return R.success(page);
     }
 
     /**
-     * 编辑系统流程
+     * 添加系统流程
      */
-    @PostMapping("/editSystem")
-    public R editSystem(@RequestBody ProcessObject processObject) {
-        processInfoService.editSystem(processObject);
+    @PostMapping("/add")
+    public R add(@RequestBody ProcessInfo processInfo) {
+        processInfoService.add(processInfo);
         return R.success();
     }
 
+    /**
+     * 业务服务列表
+     */
+    @PostMapping("/serviceNameList")
+    public R serviceNameList() {
+        return R.success(processInfoService.getDistinctList(ProcessInfo::getServiceName));
+    }
 
 }
 

+ 41 - 0
hx-common/service-flow/src/main/java/com/fjhx/controller/process/ProcessTenantController.java

@@ -0,0 +1,41 @@
+package com.fjhx.controller.process;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.entity.process.ProcessTenant;
+import com.fjhx.service.process.ProcessTenantService;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 租户流程表 前端控制器
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-16
+ */
+@RestController
+@RequestMapping("/processTenant")
+public class ProcessTenantController {
+
+    @Autowired
+    private ProcessTenantService processTenantService;
+
+    /**
+     * 添加租户流程
+     */
+    @PostMapping("/add")
+    public R add(@RequestBody ProcessTenant processTenant) {
+        processTenantService.add(processTenant);
+        return R.success();
+    }
+
+
+
+
+}
+

+ 16 - 0
hx-common/service-flow/src/main/java/com/fjhx/mapper/process/ProcessTenantMapper.java

@@ -0,0 +1,16 @@
+package com.fjhx.mapper.process;
+
+import com.fjhx.entity.process.ProcessTenant;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 租户流程表 Mapper 接口
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-16
+ */
+public interface ProcessTenantMapper extends BaseMapper<ProcessTenant> {
+
+}

+ 5 - 0
hx-common/service-flow/src/main/java/com/fjhx/mapper/process/ProcessTenantMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fjhx.mapper.process.ProcessTenantMapper">
+
+</mapper>

+ 8 - 3
hx-common/service-flow/src/main/java/com/fjhx/service/process/ProcessInfoService.java

@@ -1,8 +1,11 @@
 package com.fjhx.service.process;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.base.BaseService;
 import com.fjhx.entity.process.ProcessInfo;
-import com.fjhx.params.process.ProcessObject;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -14,8 +17,10 @@ import com.fjhx.params.process.ProcessObject;
  */
 public interface ProcessInfoService extends BaseService<ProcessInfo> {
 
-    ProcessObject addSystem(ProcessInfo processInfo);
+    List<ProcessInfo> getList(Map<String, String> condition);
+
+    Page<ProcessInfo> getPage(Map<String, String> condition);
 
-    void editSystem(ProcessObject processObject);
+    void add(ProcessInfo processInfo);
 
 }

+ 18 - 0
hx-common/service-flow/src/main/java/com/fjhx/service/process/ProcessTenantService.java

@@ -0,0 +1,18 @@
+package com.fjhx.service.process;
+
+import com.fjhx.base.BaseService;
+import com.fjhx.entity.process.ProcessTenant;
+
+/**
+ * <p>
+ * 租户流程表 服务类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-16
+ */
+public interface ProcessTenantService extends BaseService<ProcessTenant> {
+
+    void add(ProcessTenant processTenant);
+
+}

+ 57 - 60
hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessInfoServiceImpl.java

@@ -1,11 +1,12 @@
 package com.fjhx.service.process.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.constants.FlowConstant;
 import com.fjhx.constants.FlowExplainConstant;
-import com.fjhx.constants.StatusConstant;
 import com.fjhx.entity.process.ProcessInfo;
 import com.fjhx.enums.ProcessInfoParallelRulesEnum;
 import com.fjhx.enums.ProcessNodeHandleObjectTypeEnum;
@@ -19,9 +20,10 @@ import com.fjhx.utils.Assert;
 import org.springblade.common.constant.CommonConstant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -37,57 +39,33 @@ public class ProcessInfoServiceImpl extends ServiceImpl<ProcessInfoMapper, Proce
     @Autowired
     private ProcessNodeService processNodeService;
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
-    public ProcessObject addSystem(ProcessInfo processInfo) {
+    public List<ProcessInfo> getList(Map<String, String> condition) {
 
-        // 验证字段
-        verificationField(processInfo);
+        String serviceName = condition.get("serviceName");
 
-        // 验证编码唯一性
-        Integer count = count(ProcessInfo::getCode, processInfo.getCode());
-        Assert.eqZero(count, FlowExplainConstant.PROCESS_EXIST);
-
-        // 设为当前版本
-        processInfo.setCurrent(StatusConstant.YES);
-
-        // 系统流程不绑定任何租户
-        processInfo.setBindingTenantId(null);
-
-        // 版本号为空,设为默认值
-        if (ObjectUtil.isEmpty(processInfo.getVersionNumber())) {
-            processInfo.setVersionNumber(FlowConstant.DEFAULT_VERSION_NUMBER);
-        }
-
-        // 并行规则
-        if (ObjectUtil.isEmpty(processInfo.getParallelRules())) {
-            processInfo.setParallelRules(ProcessInfoParallelRulesEnum.NO.getType());
-        }
-
-        // 创建流程
-        return createProcess(processInfo);
+        LambdaQueryWrapper<ProcessInfo> wrapper = Wrappers.lambdaQuery();
+        wrapper.eq(ObjectUtil.isNotEmpty(serviceName), ProcessInfo::getServiceName, serviceName);
 
+        return list(wrapper);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
-    public void editSystem(ProcessObject processObject) {
-
-        ProcessInfo processInfo = processObject.getProcessInfo();
+    public Page<ProcessInfo> getPage(Map<String, String> condition) {
 
-        Long id = processInfo.getId();
-        Assert.notEmpty(id, FlowExplainConstant.PROCESS_INFO_ID_EMPTY);
+        String serviceName = condition.get("serviceName");
+        String moduleName = condition.get("moduleName");
 
-        verificationField(processInfo);
+        LambdaQueryWrapper<ProcessInfo> wrapper = Wrappers.lambdaQuery();
 
-        processNodeService.addOrEditNodeList(id, processObject.getProcessNodeList());
+        wrapper.eq(ObjectUtil.isNotEmpty(serviceName), ProcessInfo::getServiceName, serviceName);
+        wrapper.eq(ObjectUtil.isNotEmpty(moduleName), ProcessInfo::getModuleName, moduleName);
 
+        return page(createPage(condition), wrapper);
     }
 
-    /**
-     * 验证字段
-     */
-    private void verificationField(ProcessInfo processInfo) {
+    @Override
+    public void add(ProcessInfo processInfo) {
 
         // 编码非空
         String code = processInfo.getCode();
@@ -101,12 +79,19 @@ public class ProcessInfoServiceImpl extends ServiceImpl<ProcessInfoMapper, Proce
         String moduleName = processInfo.getModuleName();
         Assert.notEmpty(moduleName, FlowExplainConstant.MODULE_NAME_EMPTY);
 
-        // 流程名称非空
-        String name = processInfo.getName();
-        Assert.notEmpty(name, FlowExplainConstant.PROCESS_NAME);
+        // 验证编码唯一性
+        Integer count = count(ProcessInfo::getCode, processInfo.getCode());
+        Assert.eqZero(count, FlowExplainConstant.PROCESS_EXIST);
 
-    }
+        // 并行规则
+        if (ObjectUtil.isEmpty(processInfo.getParallelRules())) {
+            processInfo.setParallelRules(ProcessInfoParallelRulesEnum.NO.getType());
+        }
 
+        // 创建流程
+        save(processInfo);
+
+    }
 
     /**
      * 生成默认流程
@@ -153,21 +138,33 @@ public class ProcessInfoServiceImpl extends ServiceImpl<ProcessInfoMapper, Proce
      * @param bindingTenantId 租户id
      * @return 最新版本号
      */
-    private Integer getNewestVersion(String code, String bindingTenantId) {
-        // 判断流程是否已存在
-        ProcessInfo processInfo = getOne(Wrappers.<ProcessInfo>lambdaQuery()
-                .eq(ProcessInfo::getCode, code)
-                .eq(ObjectUtil.isNotEmpty(bindingTenantId), ProcessInfo::getBindingTenantId, bindingTenantId)
-                .orderByDesc(ProcessInfo::getVersionNumber)
-                .last("limit 1")
-        );
-
-        if (processInfo == null) {
-            return FlowConstant.DEFAULT_VERSION_NUMBER;
-        }
-
-        return processInfo.getVersionNumber() + 1;
-    }
-
+//    private Integer getNewestVersion(String code, String bindingTenantId) {
+//        // 判断流程是否已存在
+//        ProcessInfo processInfo = getOne(Wrappers.<ProcessInfo>lambdaQuery()
+//                .eq(ProcessInfo::getCode, code)
+//                .eq(ObjectUtil.isNotEmpty(bindingTenantId), ProcessInfo::getBindingTenantId, bindingTenantId)
+//                .orderByDesc(ProcessInfo::getVersionNumber)
+//                .last("limit 1")
+//        );
+//
+//        if (processInfo == null) {
+//            return FlowConstant.DEFAULT_VERSION_NUMBER;
+//        }
+//
+//        return processInfo.getVersionNumber() + 1;
+//    }
+
+//        // 设为当前版本
+//        processInfo.setCurrent(StatusConstant.YES);
+//        // 版本号为空,设为默认值
+//        if (ObjectUtil.isEmpty(processInfo.getVersionNumber())) {
+//            processInfo.setVersionNumber(FlowConstant.DEFAULT_VERSION_NUMBER);
+//        }
+
+
+//    ProcessInfo processInfo = processObject.getProcessInfo();
+//    Long id = processInfo.getId();
+//        Assert.notEmpty(id, FlowExplainConstant.PROCESS_INFO_ID_EMPTY);
+//        processNodeService.addOrEditNodeList(id, processObject.getProcessNodeList());
 
 }

+ 13 - 8
hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessNodeServiceImpl.java

@@ -120,6 +120,9 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
                     handle(processNodeButtonList, ProcessNodeGroupByParentId, processNode);
                     break;
 
+                case BRANCH: // 分支
+                    break;
+
                 case END: // 结束
                     break;
 
@@ -127,6 +130,7 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
         }
     }
 
+
     /**
      * 开始节点处理
      */
@@ -183,17 +187,18 @@ public class ProcessNodeServiceImpl extends ServiceImpl<ProcessNodeMapper, Proce
 
         // 赋值跳转到下一节点
         List<ProcessNode> nextProcessNodeList = ProcessNodeGroupByParentId.get(processNode.getId());
-        if (nextProcessNodeList == null) {
+
+        if (nextProcessNodeList == null || nextProcessNodeList.size() == 1) {
             throw new ServiceException(String.format(FlowExplainConstant.JUMP_EMPTY, processNode.getName()));
         }
-        if (nextProcessNodeList.size() == 1) {
-            ProcessNode itemProcessNode = nextProcessNodeList.get(0);
-            if (itemProcessNode.getType().equals(ProcessNodeTypeEnum.END.getType())) {
-                processNodeButton.setJumpNodeId(FlowConstant.OVER_PROCESS_FLAG);
-            } else {
-                processNodeButton.setJumpNodeId(itemProcessNode.getId());
-            }
+
+        ProcessNode itemProcessNode = nextProcessNodeList.get(0);
+        if (itemProcessNode.getType().equals(ProcessNodeTypeEnum.END.getType())) {
+            processNodeButton.setJumpNodeId(FlowConstant.OVER_PROCESS_FLAG);
+        } else {
+            processNodeButton.setJumpNodeId(itemProcessNode.getId());
         }
+
         return processNodeButton;
     }
 

+ 60 - 0
hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessTenantServiceImpl.java

@@ -0,0 +1,60 @@
+package com.fjhx.service.process.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.constants.FlowConstant;
+import com.fjhx.constants.FlowExplainConstant;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.process.ProcessTenant;
+import com.fjhx.mapper.process.ProcessTenantMapper;
+import com.fjhx.service.process.ProcessTenantService;
+import com.fjhx.utils.Assert;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 租户流程表 服务实现类
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-16
+ */
+@Service
+public class ProcessTenantServiceImpl extends ServiceImpl<ProcessTenantMapper, ProcessTenant> implements ProcessTenantService {
+
+    @Override
+    public void add(ProcessTenant processTenant) {
+
+        // 流程id
+        Long processInfoId = processTenant.getProcessInfoId();
+        Assert.notEmpty(processInfoId, FlowExplainConstant.PROCESS_INFO_ID_EMPTY);
+
+        // 流程名称
+        String name = processTenant.getName();
+        Assert.notEmpty(name, FlowExplainConstant.PROCESS_NAME);
+
+        // 租户id
+        String bindingTenantId = processTenant.getBindingTenantId();
+        if (ObjectUtil.isEmpty(bindingTenantId)) {
+            processTenant.setBindingTenantId(AuthUtil.getTenantId());
+        }
+
+        int count = count(Wrappers.<ProcessTenant>lambdaQuery()
+                .eq(ProcessTenant::getBindingTenantId, processTenant.getBindingTenantId())
+                .eq(ProcessTenant::getProcessInfoId, processTenant.getProcessInfoId()));
+
+        Assert.eqZero(count, FlowExplainConstant.PROCESS_EXIST);
+
+        processTenant.setVersionNumber(FlowConstant.DEFAULT_VERSION_NUMBER);
+
+        processTenant.setCurrent(StatusConstant.YES);
+
+        save(processTenant);
+
+    }
+
+
+
+}

+ 3 - 3
hx-common/service-flow/src/main/resources/application-dev.yml

@@ -8,6 +8,6 @@ logging:
 spring:
   # 数据库
   datasource:
-    url: ${blade.datasource.syringe_production.dev.url}
-    username: ${blade.datasource.syringe_production.dev.username}
-    password: ${blade.datasource.syringe_production.dev.password}
+    url: ${blade.datasource.service_flow.dev.url}
+    username: ${blade.datasource.service_flow.dev.username}
+    password: ${blade.datasource.service_flow.dev.password}

+ 3 - 3
hx-common/service-flow/src/main/resources/application-prod.yml

@@ -6,7 +6,7 @@ server:
 spring:
   # 数据库
   datasource:
-    url: ${blade.datasource.syringe_production.prod.url}
-    username: ${blade.datasource.syringe_production.prod.username}
-    password: ${blade.datasource.syringe_production.prod.password}
+    url: ${blade.datasource.service_flow.prod.url}
+    username: ${blade.datasource.service_flow.prod.username}
+    password: ${blade.datasource.service_flow.prod.password}
 

+ 3 - 3
hx-common/service-flow/src/main/resources/application-test.yml

@@ -6,6 +6,6 @@ server:
 spring:
   # 数据库
   datasource:
-    url: ${blade.datasource.syringe_production.test.url}
-    username: ${blade.datasource.syringe_production.test.username}
-    password: ${blade.datasource.syringe_production.test.password}
+    url: ${blade.datasource.service_flow.test.url}
+    username: ${blade.datasource.service_flow.test.username}
+    password: ${blade.datasource.service_flow.test.password}

+ 4 - 4
hx-service-api/service-flow-api/src/main/java/com/fjhx/constants/FlowExplainConstant.java

@@ -29,17 +29,17 @@ public interface FlowExplainConstant {
 
     String NODE_NAME = "节点名称不能为空";
 
-    String HANDLE_OBJECT_TYPE = "发起 / 处理对象类型不能为空";
+    String HANDLE_OBJECT_TYPE = "发起/处理对象类型不能为空";
 
-    String HANDLE_OBJECT_ID_LIST = "发起 / 处理对象id集合不能为空";
+    String HANDLE_OBJECT_ID_LIST = "发起/处理对象id集合不能为空";
 
     String NODE_UNKNOWN = "未知节点类型";
 
     /*
      按钮
      */
-    String JUMP_EMPTY = "名称为 %s 的节点没有找到跳转节点";
+    String JUMP_EMPTY = "节点名称为 %s 的跳转节点配置异常";
 
-    String PREVIOUS_ERROR = "名称为 %s 的上级节点配置异常";
+    String PREVIOUS_ERROR = "节点名称为 %s 的上级节点配置异常";
 
 }

+ 0 - 21
hx-service-api/service-flow-api/src/main/java/com/fjhx/entity/process/ProcessInfo.java

@@ -26,11 +26,6 @@ public class ProcessInfo implements Serializable {
     private Long id;
 
     /**
-     * 流程名称
-     */
-    private String name;
-
-    /**
      * 流程编码
      */
     private String code;
@@ -55,20 +50,4 @@ public class ProcessInfo implements Serializable {
      */
     private String parallelProhibitTips;
 
-    /**
-     * 版本号
-     */
-    private Integer versionNumber;
-
-    /**
-     * 是否当前版本
-     */
-    private Integer current;
-
-    /**
-     * 绑定租户id 存在租户id,租户专属流程,不存在则为通用流程
-     */
-    private String bindingTenantId;
-
-
 }

+ 53 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/entity/process/ProcessTenant.java

@@ -0,0 +1,53 @@
+package com.fjhx.entity.process;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 租户流程表
+ * </p>
+ *
+ * @author ${author}
+ * @since 2022-08-16
+ */
+@Data
+public class ProcessTenant implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
+    private Long id;
+
+    /**
+     * 流程id
+     */
+    private Long processInfoId;
+
+    /**
+     * 流程名称
+     */
+    private String name;
+
+    /**
+     * 绑定租户id
+     */
+    private String bindingTenantId;
+
+    /**
+     * 版本号
+     */
+    private Integer versionNumber;
+
+    /**
+     * 是否当前版本
+     */
+    private Integer current;
+
+}

+ 1 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/enums/ButtonNameEnum.java

@@ -19,6 +19,7 @@ public enum ButtonNameEnum {
     // 办理
     complete(5, "完成");
 
+
     private final Integer type;
     private final String name;
 

+ 1 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/enums/ProcessNodeTypeEnum.java

@@ -14,6 +14,7 @@ public enum ProcessNodeTypeEnum {
     EXAMINED(1), // 审核(可以进行通过/不通过操作,通过后流程向下一节点流转,不通过则退回上一节点)
     APPROVAL(2), // 审批(可以进行同意/驳回操作,同意后向下一节点流转,驳回则以驳回状态结束本流程)
     HANDLE(3), // 办理(仅支持完成办理操作,操作后向下一节点流转)
+    BRANCH(4), // 分支
     END(99) // 结束节点
     ;
 

+ 3 - 3
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockDetailServiceImpl.java

@@ -153,11 +153,11 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
         if (ObjectUtil.isEmpty(appointInfoList) || ObjectUtil.isEmpty(actualList)) return;
 
         // 推荐领料信息按物料编码分组
-        Map<Object, List<Map<String, Object>>> appointInfoByCodeMap = appointInfoList.stream()
+        Map<Object, List<Map<String, Object>>> appointInfoByCodeMap = appointInfoList.stream().distinct()
                 .collect(Collectors.groupingBy(item -> item.get("materialCode")));
 
         // 实际领料信息按物料编码分组
-        Map<Object, List<Map<String, Object>>> actualByCodeMap = actualList.stream()
+        Map<Object, List<Map<String, Object>>> actualByCodeMap = actualList.stream().distinct()
                 .collect(Collectors.groupingBy(item -> item.get("materialCode")));
 
         // 工号
@@ -216,7 +216,7 @@ public class StockDetailServiceImpl extends ServiceImpl<StockDetailMapper, Stock
 
                     SchedulingActual schedulingActual = createSchedulingActual(1, map, flag, jobNo, date);
                     schedulingActualList.add(schedulingActual);
-                    actualByRfidMap.remove("rfidCode");
+                    actualByRfidMap.remove(rfidCode);
 
                 }
             }