浏览代码

每日面料使用

home 2 年之前
父节点
当前提交
1f350d7d92
共有 16 个文件被更改,包括 401 次插入17 次删除
  1. 1 1
      hx-common/common-tool/src/main/java/com/fjhx/constants/StatusConstant.java
  2. 2 2
      hx-common/library-supply/src/main/java/com/fjhx/service/impl/ApplyPurchaseServiceImpl.java
  3. 110 2
      hx-common/service-flow/src/main/java/com/fjhx/feign/FlowClient.java
  4. 2 2
      hx-common/service-flow/src/main/java/com/fjhx/service/process/impl/ProcessTenantServiceImpl.java
  5. 10 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/constants/FlowConstant.java
  6. 5 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/entity/example/ExampleInfo.java
  7. 20 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/feign/IFlowClient.java
  8. 31 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/params/ExampleResult.java
  9. 2 2
      hx-service-api/service-flow-api/src/main/java/com/fjhx/utils/FlowConstructor.java
  10. 196 0
      hx-service-api/service-flow-api/src/main/java/com/fjhx/utils/FlowConstructorBack.java
  11. 1 1
      hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackDetails.java
  12. 5 0
      hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/CheckDetailsVo.java
  13. 8 3
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockBackServiceImpl.java
  14. 5 1
      hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockWaterServiceImpl.java
  15. 2 2
      hx-service/syringe-management/src/main/java/com/fjhx/service/bom/impl/BomServiceImpl.java
  16. 1 1
      hx-service/syringe-management/src/main/java/com/fjhx/service/material/impl/MaterialExServiceImpl.java

+ 1 - 1
hx-common/common-tool/src/main/java/com/fjhx/constants/StatusConstant.java

@@ -9,7 +9,7 @@ public interface StatusConstant {
      * 是否
      * 是否
      */
      */
     Integer YES = 1;
     Integer YES = 1;
-    Integer No = 0;
+    Integer NO = 0;
 
 
     /**
     /**
      * 启用 禁用
      * 启用 禁用

+ 2 - 2
hx-common/library-supply/src/main/java/com/fjhx/service/impl/ApplyPurchaseServiceImpl.java

@@ -64,7 +64,7 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
         applyPurchase.setStatus(ApplyPurchaseStatusEnum.WAIT_START.getValue());
         applyPurchase.setStatus(ApplyPurchaseStatusEnum.WAIT_START.getValue());
 
 
         // 申购单未完成
         // 申购单未完成
-        applyPurchase.setCompleteStatus(StatusConstant.No);
+        applyPurchase.setCompleteStatus(StatusConstant.NO);
 
 
         save(applyPurchase);
         save(applyPurchase);
     }
     }
@@ -229,7 +229,7 @@ public class ApplyPurchaseServiceImpl extends ServiceImpl<ApplyPurchaseMapper, A
 
 
         int count = count(Wrappers.<ApplyPurchase>lambdaQuery()
         int count = count(Wrappers.<ApplyPurchase>lambdaQuery()
                 .eq(ApplyPurchase::getOrderId, orderId)
                 .eq(ApplyPurchase::getOrderId, orderId)
-                .eq(ApplyPurchase::getCompleteStatus, StatusConstant.No)
+                .eq(ApplyPurchase::getCompleteStatus, StatusConstant.NO)
         );
         );
 
 
         return count == 0;
         return count == 0;

+ 110 - 2
hx-common/service-flow/src/main/java/com/fjhx/feign/FlowClient.java

@@ -11,8 +11,10 @@ import com.fjhx.entity.example.ExampleInfo;
 import com.fjhx.entity.process.ProcessInfo;
 import com.fjhx.entity.process.ProcessInfo;
 import com.fjhx.entity.process.ProcessNodeButton;
 import com.fjhx.entity.process.ProcessNodeButton;
 import com.fjhx.entity.process.ProcessTenant;
 import com.fjhx.entity.process.ProcessTenant;
+import com.fjhx.enums.ButtonNameEnum;
 import com.fjhx.enums.ProcessNodeTypeEnum;
 import com.fjhx.enums.ProcessNodeTypeEnum;
 import com.fjhx.params.ExampleInfoEx;
 import com.fjhx.params.ExampleInfoEx;
+import com.fjhx.params.ExampleResult;
 import com.fjhx.params.FlowInfoVo;
 import com.fjhx.params.FlowInfoVo;
 import com.fjhx.params.GetNodeButtonVo;
 import com.fjhx.params.GetNodeButtonVo;
 import com.fjhx.service.example.ExampleDetailsService;
 import com.fjhx.service.example.ExampleDetailsService;
@@ -54,7 +56,7 @@ public class FlowClient implements IFlowClient {
         ExampleInfo exampleInfo = exampleInfoService.getOne(
         ExampleInfo exampleInfo = exampleInfoService.getOne(
                 Wrappers.<ExampleInfo>lambdaQuery()
                 Wrappers.<ExampleInfo>lambdaQuery()
                         .eq(ExampleInfo::getFlowLinkNo, flowLinkNo)
                         .eq(ExampleInfo::getFlowLinkNo, flowLinkNo)
-                        .eq(ExampleInfo::getComplete, StatusConstant.No));
+                        .eq(ExampleInfo::getComplete, StatusConstant.NO));
 
 
         Assert.empty(exampleInfo, FlowExplainConstant.EXPLAIN_NOT_EXIST);
         Assert.empty(exampleInfo, FlowExplainConstant.EXPLAIN_NOT_EXIST);
 
 
@@ -128,11 +130,117 @@ public class FlowClient implements IFlowClient {
         ExampleInfo exampleInfo = exampleInfoService.getOne(
         ExampleInfo exampleInfo = exampleInfoService.getOne(
                 Wrappers.<ExampleInfo>lambdaQuery()
                 Wrappers.<ExampleInfo>lambdaQuery()
                         .eq(ExampleInfo::getFlowLinkNo, flowLinkNo)
                         .eq(ExampleInfo::getFlowLinkNo, flowLinkNo)
-                        .eq(ExampleInfo::getComplete, StatusConstant.No));
+                        .eq(ExampleInfo::getComplete, StatusConstant.NO));
 
 
         Assert.notEmpty(exampleInfo, FlowExplainConstant.EXAMPLE_INFO_NULL);
         Assert.notEmpty(exampleInfo, FlowExplainConstant.EXAMPLE_INFO_NULL);
 
 
         return R.data(exampleInfo);
         return R.data(exampleInfo);
     }
     }
 
 
+    @Override
+    public R<ExampleResult> create(Long flowLinkNo, String code, String nodeCode, String remarks, String cacheData) {
+
+        ExampleResult exampleResult = new ExampleResult();
+
+        int count = exampleInfoService.count(
+                Wrappers.<ExampleInfo>lambdaQuery()
+                        .eq(ExampleInfo::getFlowLinkNo, flowLinkNo)
+                        .eq(ExampleInfo::getComplete, StatusConstant.NO));
+
+        Assert.eqZero(count, FlowExplainConstant.EXPLAIN_NOT_EXIST);
+
+        // 查找通用流程
+        ProcessInfo processInfo = processInfoService.getOne(ProcessInfo::getCode, code);
+        Assert.notEmpty(processInfo, String.format(FlowExplainConstant.PROCESS_NOT_EXIST, code));
+
+        // 获取租户流程
+        ProcessTenant processTenant = processTenantService.getOne(Wrappers.<ProcessTenant>lambdaQuery()
+                .eq(ProcessTenant::getProcessInfoId, processInfo.getId())
+                .eq(ProcessTenant::getBindingTenantId, AuthUtil.getTenantId())
+                .eq(ProcessTenant::getCurrentVersion, StatusConstant.YES));
+
+        // 创建流程实例
+        ExampleInfo exampleInfo = new ExampleInfo();
+        exampleInfo.setProcessInfoId(processInfo.getId());
+        exampleInfo.setFlowLinkNo(flowLinkNo);
+        exampleInfo.setCacheData(cacheData);
+
+        // 走默认流程,直接完成
+        if (processTenant == null) {
+            exampleInfo.setComplete(StatusConstant.YES);
+            exampleInfo.setFlowType(FlowConstant.FLOW_TYPE_DEFAULT);
+            exampleInfo.setProcessNodeCode(FlowConstant.END_CODE);
+            exampleInfoService.save(exampleInfo);
+
+            ExampleDetails startExampleDetails = new ExampleDetails();
+            startExampleDetails.setExampleInfoId(exampleInfo.getId());
+            startExampleDetails.setProcessInfoId(processInfo.getId());
+            startExampleDetails.setNameType(ButtonNameEnum.START.getType());
+            startExampleDetails.setHandleUserId(AuthUtil.getUserId());
+            startExampleDetails.setRemarks(remarks);
+
+            ExampleDetails endExampleDetails = new ExampleDetails();
+            endExampleDetails.setExampleInfoId(exampleInfo.getId());
+            endExampleDetails.setProcessInfoId(processInfo.getId());
+            endExampleDetails.setNameType(ButtonNameEnum.END.getType());
+
+            exampleDetailsService.saveBatch(Arrays.asList(startExampleDetails, endExampleDetails));
+
+            // 封装返回值
+            exampleResult.setExampleInfo(exampleInfo);
+            exampleResult.setExampleDetailsIdList(
+                    Arrays.asList(startExampleDetails.getId(), endExampleDetails.getId()));
+            exampleResult.setHandleType(ButtonNameEnum.END.getType());
+            exampleResult.setCacheDataStr(cacheData);
+            return R.data(exampleResult);
+        }
+
+        Long processTenantId = processTenant.getId();
+        exampleInfo.setFlowType(FlowConstant.FLOW_TYPE_TENANT);
+
+        exampleInfo.setProcessTenantId(processTenantId);
+
+        ExampleDetails startExampleDetails = new ExampleDetails();
+        startExampleDetails.setExampleInfoId(exampleInfo.getId());
+        startExampleDetails.setProcessInfoId(processInfo.getId());
+        startExampleDetails.setProcessTenantId(processTenant.getId());
+        startExampleDetails.setNameType(ButtonNameEnum.START.getType());
+        startExampleDetails.setHandleUserId(AuthUtil.getUserId());
+        startExampleDetails.setRemarks(remarks);
+
+        // 查询节点
+        ProcessNodeButton processNodeButton = processNodeButtonService.getOne(
+                Wrappers.<ProcessNodeButton>lambdaQuery()
+                        .eq(ProcessNodeButton::getProcessTenantId, processTenantId)
+                        .eq(ProcessNodeButton::getProcessNodeCode, ObjectUtil.isNotEmpty(nodeCode) ? nodeCode : FlowConstant.START_CODE));
+
+        // 如果所在节点是开始节点,流转到下一节点,否则所在节点是指定code的节点
+        Long jumpNodeId;
+        if (FlowConstant.START_CODE.equals(processNodeButton.getProcessNodeCode())) {
+            jumpNodeId = processNodeButton.getJumpNodeId();
+        } else {
+            jumpNodeId = processNodeButton.getProcessNodeId();
+        }
+
+        // 如果流程跳转到结束
+        if (jumpNodeId.equals(FlowConstant.OVER_PROCESS_FLAG)) {
+
+            exampleInfo.setComplete(StatusConstant.YES);
+
+            ExampleDetails endExampleDetails = new ExampleDetails();
+            endExampleDetails.setExampleInfoId(exampleInfo.getId());
+            endExampleDetails.setProcessInfoId(processInfo.getId());
+            endExampleDetails.setProcessTenantId(processTenant.getId());
+            endExampleDetails.setNameType(ButtonNameEnum.END.getType());
+
+        } else {
+            exampleInfo.setComplete(StatusConstant.NO);
+            exampleInfo.setProcessNodeId(jumpNodeId);
+
+        }
+
+
+        return null;
+    }
+
 }
 }

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

@@ -112,7 +112,7 @@ public class ProcessTenantServiceImpl extends ServiceImpl<ProcessTenantMapper, P
 
 
         // 版本号+1 设为非当前流程
         // 版本号+1 设为非当前流程
         newProcessTenant.setVersionNumber(newProcessTenant.getVersionNumber() + 1);
         newProcessTenant.setVersionNumber(newProcessTenant.getVersionNumber() + 1);
-        newProcessTenant.setCurrentVersion(StatusConstant.No);
+        newProcessTenant.setCurrentVersion(StatusConstant.NO);
 
 
         // 保存数据
         // 保存数据
         save(newProcessTenant);
         save(newProcessTenant);
@@ -139,7 +139,7 @@ public class ProcessTenantServiceImpl extends ServiceImpl<ProcessTenantMapper, P
         String bindingTenantId = processTenant.getBindingTenantId();
         String bindingTenantId = processTenant.getBindingTenantId();
 
 
         update(Wrappers.<ProcessTenant>lambdaUpdate()
         update(Wrappers.<ProcessTenant>lambdaUpdate()
-                .set(ProcessTenant::getCurrentVersion, StatusConstant.No)
+                .set(ProcessTenant::getCurrentVersion, StatusConstant.NO)
                 .eq(ProcessTenant::getProcessInfoId, processInfoId)
                 .eq(ProcessTenant::getProcessInfoId, processInfoId)
                 .eq(ProcessTenant::getBindingTenantId, bindingTenantId));
                 .eq(ProcessTenant::getBindingTenantId, bindingTenantId));
 
 

+ 10 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/constants/FlowConstant.java

@@ -50,4 +50,14 @@ public interface FlowConstant {
      */
      */
     Long TEMP_END_NODE_ID = 99L;
     Long TEMP_END_NODE_ID = 99L;
 
 
+    /**
+     * 默认流程
+     */
+    Integer FLOW_TYPE_DEFAULT = 1;
+
+    /**
+     * 租户流程
+     */
+    Integer FLOW_TYPE_TENANT = 2;
+
 }
 }

+ 5 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/entity/example/ExampleInfo.java

@@ -25,6 +25,11 @@ public class ExampleInfo extends BaseEntity {
     private Long processInfoId;
     private Long processInfoId;
 
 
     /**
     /**
+     * 流程类型 1默认流程 2租户流程
+     */
+    private Integer flowType;
+
+    /**
      * 租户流程id
      * 租户流程id
      */
      */
     private Long processTenantId;
     private Long processTenantId;

+ 20 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/feign/IFlowClient.java

@@ -4,10 +4,12 @@ import com.fjhx.constants.ClientConstant;
 import com.fjhx.entity.example.ExampleInfo;
 import com.fjhx.entity.example.ExampleInfo;
 import com.fjhx.entity.process.ProcessNodeButton;
 import com.fjhx.entity.process.ProcessNodeButton;
 import com.fjhx.params.ExampleInfoEx;
 import com.fjhx.params.ExampleInfoEx;
+import com.fjhx.params.ExampleResult;
 import com.fjhx.params.FlowInfoVo;
 import com.fjhx.params.FlowInfoVo;
 import com.fjhx.params.GetNodeButtonVo;
 import com.fjhx.params.GetNodeButtonVo;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.api.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -22,6 +24,7 @@ public interface IFlowClient {
     String GET_NODE_BUTTON = ClientConstant.API_PREFIX + "/getNodeButton";
     String GET_NODE_BUTTON = ClientConstant.API_PREFIX + "/getNodeButton";
     String EXAMPLE_INFO_SAVE = ClientConstant.API_PREFIX + "/exampleInfoSave";
     String EXAMPLE_INFO_SAVE = ClientConstant.API_PREFIX + "/exampleInfoSave";
     String GET_EXAMPLE_INFO = ClientConstant.API_PREFIX + "/getExampleInfo";
     String GET_EXAMPLE_INFO = ClientConstant.API_PREFIX + "/getExampleInfo";
+    String CREATE = ClientConstant.API_PREFIX + "/create";
 
 
     /**
     /**
      * 通过流程编码获取流程信息
      * 通过流程编码获取流程信息
@@ -47,4 +50,21 @@ public interface IFlowClient {
     @PostMapping(GET_EXAMPLE_INFO)
     @PostMapping(GET_EXAMPLE_INFO)
     R<ExampleInfo> getExampleInfo(@RequestParam("flowLinkNo") Long flowLinkNo);
     R<ExampleInfo> getExampleInfo(@RequestParam("flowLinkNo") Long flowLinkNo);
 
 
+    /**
+     * 创建流程
+     *
+     * @param flowLinkNo 绑定流程编号
+     * @param code       流程编码
+     * @param nodeCode   跳转节点编码
+     * @param remarks    发起原因/处理意见
+     * @param cacheData  缓存数据
+     * @return
+     */
+    @GetMapping(CREATE)
+    R<ExampleResult> create(@RequestParam("flowLinkNo") Long flowLinkNo,
+                            @RequestParam("code") String code,
+                            @RequestParam("nodeCode") String nodeCode,
+                            @RequestParam("remarks") String remarks,
+                            @RequestParam("cacheData") String cacheData);
+
 }
 }

+ 31 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/params/ExampleResult.java

@@ -0,0 +1,31 @@
+package com.fjhx.params;
+
+import com.fjhx.entity.example.ExampleInfo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ExampleResult {
+
+    /**
+     * 流程实例
+     */
+    private ExampleInfo exampleInfo;
+
+    /**
+     * 流程实例明细id
+     */
+    private List<Long> exampleDetailsIdList;
+
+    /**
+     * 处理类型
+     */
+    private Integer handleType;
+
+    /**
+     * 缓存字符串
+     */
+    private String cacheDataStr;
+
+}

+ 2 - 2
hx-service-api/service-flow-api/src/main/java/com/fjhx/utils/FlowConstructor.java

@@ -109,7 +109,7 @@ public class FlowConstructor {
             }
             }
             // 正常流转到下一节点
             // 正常流转到下一节点
             else {
             else {
-                exampleInfo.setComplete(StatusConstant.No);
+                exampleInfo.setComplete(StatusConstant.NO);
             }
             }
 
 
             // 赋值跳转节点id
             // 赋值跳转节点id
@@ -176,7 +176,7 @@ public class FlowConstructor {
         }
         }
         // 正常流转到下一节点
         // 正常流转到下一节点
         else {
         else {
-            exampleInfo.setComplete(StatusConstant.No);
+            exampleInfo.setComplete(StatusConstant.NO);
         }
         }
 
 
         // 流程明细
         // 流程明细

+ 196 - 0
hx-service-api/service-flow-api/src/main/java/com/fjhx/utils/FlowConstructorBack.java

@@ -0,0 +1,196 @@
+package com.fjhx.utils;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fjhx.constants.FlowConstant;
+import com.fjhx.constants.FlowExplainConstant;
+import com.fjhx.constants.StatusConstant;
+import com.fjhx.entity.example.ExampleDetails;
+import com.fjhx.entity.example.ExampleInfo;
+import com.fjhx.entity.process.ProcessNodeButton;
+import com.fjhx.enums.ButtonNameEnum;
+import com.fjhx.feign.IFlowClient;
+import com.fjhx.params.ExampleInfoEx;
+import com.fjhx.params.ExampleResult;
+import com.fjhx.params.GetNodeButtonVo;
+import org.springblade.core.tool.api.R;
+
+public class FlowConstructorBack {
+
+    private static final IFlowClient flowClient = SpringUtil.getBean(IFlowClient.class);
+
+    private final ExampleAbstract exampleAbstract;
+
+    private FlowConstructorBack(ExampleAbstract exampleAbstract) {
+        this.exampleAbstract = exampleAbstract;
+    }
+
+    /**
+     * 创建流程
+     *
+     * @param flowLinkNo 流程关联编号
+     * @return 流程实例对象
+     */
+    public ExampleInfo create(Long flowLinkNo, String remarks, Object cacheData) {
+
+        // 获取流程编码
+        String code = exampleAbstract.getCode();
+        Assert.notEmpty(code, FlowExplainConstant.CODE_EMPTY);
+
+        String cacheDataStr = "";
+        if (ObjectUtil.isNotEmpty(cacheData)) {
+            cacheDataStr = JSONObject.toJSONString(cacheData);
+        }
+
+        // 查询跳转节点
+        String nodeCode = exampleAbstract.circulation(FlowConstant.START_CODE);
+
+        R<ExampleResult> exampleResultR = flowClient.create(flowLinkNo, code, nodeCode, remarks, cacheDataStr);
+
+
+//        // 创建流程实例
+//        ExampleInfoEx exampleInfo = new ExampleInfoEx();
+//        exampleInfo.setProcessInfoId(flowInfoVo.getId());
+//        exampleInfo.setFlowLinkNo(flowLinkNo);
+//        if (ObjectUtil.isNotEmpty(exampleAbstract.cacheData)) {
+//            exampleInfo.setCacheData(JSONObject.toJSONString(exampleAbstract.cacheData));
+//        }
+//
+//        ExampleDetails startExampleDetails = new ExampleDetails();
+//        startExampleDetails.setRemarks(remarks);
+//
+//        // 如果租户流程为空,直接完成流程
+//        ProcessTenant processTenant = flowInfoVo.processTenantEntity();
+//        if (ObjectUtil.isEmpty(processTenant)) {
+//            exampleInfo.setProcessNodeId(FlowConstant.OVER_PROCESS_FLAG);
+//            exampleInfo.setComplete(StatusConstant.YES);
+//            exampleInfo.setProcessNodeCode(FlowConstant.END_CODE);
+//
+//            startExampleDetails.setNameType(ButtonNameEnum.START.getType());
+//            // 执行流程结束方法
+//            exampleAbstract.end();
+//        }
+//        // 租户流程不为空,走租户流程
+//        else {
+//            Long processTenantId = processTenant.getId();
+//
+//            // 赋值租户流程id
+//            exampleInfo.setProcessTenantId(processTenantId);
+//
+//            // 调用方法查看是否有指定跳转节点,没有则正常流转
+////            String circulation = exampleAbstract.circulation(FlowConstant.START_CODE);
+//
+//            GetNodeButtonVo getNodeButtonVo = new GetNodeButtonVo();
+//            getNodeButtonVo.setProcessTenantId(processTenantId);
+//            getNodeButtonVo.setNodeCode(ObjectUtil.isEmpty(circulation) ? FlowConstant.START_CODE : circulation);
+//
+//            R<ProcessNodeButton> nodeButtonResult = flowClient.getNodeButton(getNodeButtonVo);
+//            Assert.eqTrue(nodeButtonResult.isSuccess(), nodeButtonResult.getMsg());
+//
+//            ProcessNodeButton processNodeButton = nodeButtonResult.getData();
+//            startExampleDetails.setProcessNodeId(processNodeButton.getProcessNodeId());
+//            startExampleDetails.setProcessNodeButtonId(processNodeButton.getId());
+//            startExampleDetails.setNameType(processNodeButton.getNameType());
+//
+//            // 流转节点
+//            Long jumpNodeId = processNodeButton.getJumpNodeId();
+//
+//            // 流程结束
+//            if (jumpNodeId.equals(FlowConstant.OVER_PROCESS_FLAG)) {
+//                exampleInfo.setComplete(StatusConstant.YES);
+//                exampleInfo.setProcessNodeCode(FlowConstant.END_CODE);
+//                exampleAbstract.end();
+//            }
+//            // 正常流转到下一节点
+//            else {
+//                exampleInfo.setComplete(StatusConstant.NO);
+//            }
+//
+//            // 赋值跳转节点id
+//            exampleInfo.setProcessNodeId(jumpNodeId);
+//            exampleInfo.setProcessNodeCode(processNodeButton.getProcessNodeCode());
+//        }
+//        exampleInfo.setExampleDetails(startExampleDetails);
+//
+//        // 保存流程实例
+//        R<ExampleInfo> exampleInfoSaveResult = flowClient.exampleInfoSave(exampleInfo);
+//        Assert.eqTrue(exampleInfoSaveResult.isSuccess(), exampleInfoSaveResult.getMsg());
+
+//        return exampleInfoSaveResult.getData();
+        return null;
+    }
+
+    /**
+     * 流程跳转
+     *
+     * @param flowLinkNo 流程关联编号
+     * @param buttonId   按钮id
+     * @param remarks    审批意见
+     */
+    public void jump(Long flowLinkNo, Long buttonId, String remarks) {
+
+        R<ExampleInfo> exampleInfoResult = flowClient.getExampleInfo(flowLinkNo);
+        Assert.eqTrue(exampleInfoResult.isSuccess(), exampleInfoResult.getMsg());
+
+        ExampleInfo exampleInfo = exampleInfoResult.getData();
+
+        // 获取流程缓存
+        exampleAbstract.cacheData = exampleInfo.getCacheData();
+
+        // 赋值新缓存
+        if (ObjectUtil.isNotEmpty(exampleAbstract.cacheData)) {
+            exampleInfo.setCacheData(JSONObject.toJSONString(exampleAbstract.cacheData));
+        }
+
+        // 调用方法查看是否有指定跳转节点,没有则正常流转
+        GetNodeButtonVo getNodeButtonVo = new GetNodeButtonVo();
+        getNodeButtonVo.setProcessTenantId(exampleInfo.getProcessTenantId());
+        getNodeButtonVo.setNodeCode(exampleAbstract.circulation(exampleInfo.getProcessNodeCode()));
+        getNodeButtonVo.setButtonId(buttonId);
+
+        R<ProcessNodeButton> nodeButtonResult = flowClient.getNodeButton(getNodeButtonVo);
+        Assert.eqTrue(nodeButtonResult.isSuccess(), nodeButtonResult.getMsg());
+
+        ProcessNodeButton processNodeButton = nodeButtonResult.getData();
+
+        // 赋值跳转节点id
+        exampleInfo.setProcessNodeId(processNodeButton.getJumpNodeId());
+        exampleInfo.setProcessNodeCode(processNodeButton.getProcessNodeCode());
+
+        // 流程正常结束
+        if (processNodeButton.getJumpNodeId().equals(FlowConstant.OVER_PROCESS_FLAG)) {
+            exampleInfo.setComplete(StatusConstant.YES);
+            exampleInfo.setProcessNodeCode(FlowConstant.END_CODE);
+            exampleAbstract.end();
+        }
+        // 驳回结束
+        else if (ButtonNameEnum.REJECT.getType().equals(processNodeButton.getNameType())) {
+            exampleInfo.setComplete(StatusConstant.YES);
+            exampleInfo.setProcessNodeCode(FlowConstant.END_CODE);
+            exampleAbstract.fail(processNodeButton.getProcessNodeCode());
+        }
+        // 正常流转到下一节点
+        else {
+            exampleInfo.setComplete(StatusConstant.NO);
+        }
+
+        // 流程明细
+        ExampleDetails startExampleDetails = new ExampleDetails();
+        startExampleDetails.setRemarks(remarks);
+        startExampleDetails.setProcessNodeId(processNodeButton.getProcessNodeId());
+        startExampleDetails.setProcessNodeButtonId(processNodeButton.getId());
+        startExampleDetails.setNameType(processNodeButton.getNameType());
+
+        // 创建vo
+        ExampleInfoEx exampleInfoEx = BeanUtil.toBean(exampleInfo, ExampleInfoEx.class);
+        exampleInfoEx.setExampleDetails(startExampleDetails);
+
+        // 保存流程实例
+        R<ExampleInfo> exampleInfoSaveResult = flowClient.exampleInfoSave(exampleInfoEx);
+        Assert.eqTrue(exampleInfoSaveResult.isSuccess(), exampleInfoSaveResult.getMsg());
+
+    }
+
+}

+ 1 - 1
hx-service-api/storage-api/src/main/java/com/fjhx/entity/stock/StockBackDetails.java

@@ -49,7 +49,7 @@ public class StockBackDetails implements Serializable {
     /**
     /**
      * 二维码
      * 二维码
      */
      */
-    private String qrcode;
+    private String rfid;
 
 
 
 
 }
 }

+ 5 - 0
hx-service-api/storage-api/src/main/java/com/fjhx/params/stock/CheckDetailsVo.java

@@ -13,6 +13,11 @@ public class CheckDetailsVo {
     private Long stockBackId;
     private Long stockBackId;
 
 
     /**
     /**
+     * 操作人id
+     */
+    private String operatorId;
+
+    /**
      * 复核人id
      * 复核人id
      */
      */
     private String checkerId;
     private String checkerId;

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

@@ -107,10 +107,10 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
             // 面料退仓
             // 面料退仓
             StockBack stockBack = new StockBack();
             StockBack stockBack = new StockBack();
             stockBack.setOperatorId(operatorId);
             stockBack.setOperatorId(operatorId);
-            stockBack.setCheckerTime(date);
+            stockBack.setOperationTime(date);
             stockBack.setOperationNum(materialMetersList.size());
             stockBack.setOperationNum(materialMetersList.size());
             stockBack.setOperationMeters(materialMetersList.stream().reduce(BigDecimal.ZERO, BigDecimal::add));
             stockBack.setOperationMeters(materialMetersList.stream().reduce(BigDecimal.ZERO, BigDecimal::add));
-            stockBack.setStatus(StatusConstant.No);
+            stockBack.setStatus(StatusConstant.NO);
             save(stockBack);
             save(stockBack);
 
 
             // 退仓详情
             // 退仓详情
@@ -140,6 +140,10 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
         CheckDetailsVo checkDetailsVo = new CheckDetailsVo();
         CheckDetailsVo checkDetailsVo = new CheckDetailsVo();
         checkDetailsVo.setStockBackId(stockBackId);
         checkDetailsVo.setStockBackId(stockBackId);
 
 
+        // 赋值操作人id
+        StockBack stockBack = getById(stockBackId);
+        checkDetailsVo.setOperatorId(stockBack.getOperatorId());
+
         List<StockBackDetails> list = stockBackDetailsService.list(StockBackDetails::getStockBackId, stockBackId);
         List<StockBackDetails> list = stockBackDetailsService.list(StockBackDetails::getStockBackId, stockBackId);
         Map<String, List<StockBackDetails>> collect = list.stream().collect(Collectors.groupingBy(StockBackDetails::getMaterialId));
         Map<String, List<StockBackDetails>> collect = list.stream().collect(Collectors.groupingBy(StockBackDetails::getMaterialId));
 
 
@@ -226,7 +230,8 @@ public class StockBackServiceImpl extends ServiceImpl<StockBackMapper, StockBack
 
 
         QueryWrapper<Object> wrapper = Wrappers.query()
         QueryWrapper<Object> wrapper = Wrappers.query()
                 .between("swd.CreatedTime", beginTime, endTime)
                 .between("swd.CreatedTime", beginTime, endTime)
-                .in("m.TechnologyType", 0, 1, 2);
+                .in("m.TechnologyType", 0, 1, 2)
+                .isNotNull("uu.JobNo");
 
 
         List<Map<String, Object>> result = baseMapper.userStatistics(wrapper);
         List<Map<String, Object>> result = baseMapper.userStatistics(wrapper);
 
 

+ 5 - 1
hx-service/storage/src/main/java/com/fjhx/stock/service/impl/StockWaterServiceImpl.java

@@ -515,9 +515,13 @@ public class StockWaterServiceImpl extends ServiceImpl<StockWaterMapper, StockWa
         QueryWrapper<?> wrapper = WrapperUtil.init(condition)
         QueryWrapper<?> wrapper = WrapperUtil.init(condition)
                 .keyword("m.Code", "m.Name") // 关键字查询
                 .keyword("m.Code", "m.Name") // 关键字查询
                 .eq("m.CategoryCode", "categoryCode") // 物料分类
                 .eq("m.CategoryCode", "categoryCode") // 物料分类
-                .eq("IF( a.CheckTagCount = a.TagQuantity AND a.CheckTagCount = a.HandTagCount, 1, 0)", "inventoryResults")
                 .getWrapper();
                 .getWrapper();
 
 
+        String inventoryResults = condition.get("inventoryResults");
+        if ("0".equals(inventoryResults)) {
+            wrapper.eq("IF( a.CheckTagCount = a.TagQuantity AND a.CheckTagCount = a.HandTagCount, 1, 0)", inventoryResults);
+        }
+
         // 物料分组
         // 物料分组
         wrapper.groupBy("m.id");
         wrapper.groupBy("m.id");
         // 在库
         // 在库

+ 2 - 2
hx-service/syringe-management/src/main/java/com/fjhx/service/bom/impl/BomServiceImpl.java

@@ -86,7 +86,7 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
         Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId,
         Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId,
                 () -> {
                 () -> {
                     Integer count = count(Bom::getProductId, productId);
                     Integer count = count(Bom::getProductId, productId);
-                    bomVo.setCurrentEdition(count == 0 ? StatusConstant.YES : StatusConstant.No);
+                    bomVo.setCurrentEdition(count == 0 ? StatusConstant.YES : StatusConstant.NO);
                     save(bomVo);
                     save(bomVo);
                     return true;
                     return true;
                 });
                 });
@@ -111,7 +111,7 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
             // 保证每个租户物料编码唯一
             // 保证每个租户物料编码唯一
             Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId,
             Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId,
                     () -> {
                     () -> {
-                        update(Wrappers.<Bom>lambdaUpdate().set(Bom::getCurrentEdition, StatusConstant.No).eq(Bom::getProductId, productId));
+                        update(Wrappers.<Bom>lambdaUpdate().set(Bom::getCurrentEdition, StatusConstant.NO).eq(Bom::getProductId, productId));
                         updateById(bomVo);
                         updateById(bomVo);
                         return true;
                         return true;
                     });
                     });

+ 1 - 1
hx-service/syringe-management/src/main/java/com/fjhx/service/material/impl/MaterialExServiceImpl.java

@@ -81,7 +81,7 @@ public class MaterialExServiceImpl extends ServiceImpl<MaterialExMapper, Materia
             materialEx.setQualityTestingRate(BigDecimal.ZERO);
             materialEx.setQualityTestingRate(BigDecimal.ZERO);
         }
         }
 
 
-        if (ObjectUtil.isEmpty(materialEx.getLoss()) || coiled.equals(StatusConstant.No)) {
+        if (ObjectUtil.isEmpty(materialEx.getLoss()) || coiled.equals(StatusConstant.NO)) {
             materialEx.setLoss(BigDecimal.ZERO);
             materialEx.setLoss(BigDecimal.ZERO);
         }
         }