Kaynağa Gözat

fix:流水号type使用枚举数据

lumaojun 1 ay önce
ebeveyn
işleme
bca9a4f18f

+ 1 - 0
easydo-mes/src/main/java/easydo/technology/enums/MESEnum.java

@@ -15,6 +15,7 @@ public enum MESEnum {
     FLOW_NO_TYPE_CUSTOMER("customer", "供应商/客户"),
     FLOW_NO_TYPE_SALE_PLAN("sale_plan", "销售计划"),
     FLOW_NO_TYPE_SALE_ORDER("sale_order", "销售订单"),
+    FLOW_NO_TYPE_WAREHOUSE("warehouse", "仓库管理"),
 
     PROCESS_STAGE_OF_CATEGORY_PREPARATION("preparation","准备工序"),
     PROCESS_STAGE_OF_CATEGORY_PROCESSING("processing","加工工序"),

+ 69 - 12
easydo-mes/src/main/java/easydo/technology/service/FlowNoService.java

@@ -1,6 +1,7 @@
 package easydo.technology.service;
 
 import easydo.technology.components.JdbcClient;
+import easydo.technology.enums.MESEnum;
 import easydo.technology.exception.BizException;
 import easydo.technology.model.*;
 import easydo.technology.utils.StringUtil;
@@ -31,6 +32,7 @@ public class FlowNoService {
     private final Object processRouteLock = new Object();
     private final Object productMaterialLock = new Object();
     private final Object customerLock = new Object();
+    private final Object productBomLock = new Object();
 
 
     /**
@@ -52,7 +54,7 @@ public class FlowNoService {
             }
             while (true) {
                 FlowNo flowNo = new FlowNo();
-                flowNo.setType("warehouse");
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_WAREHOUSE.getValue());
                 flowNo.setTenantId(tenantId);
                 flowNo = jdbcClient.getJdbcModel(flowNo, connection);
                 if (flowNo == null) throw new BizException("未配置仓库流水号规则");
@@ -75,7 +77,7 @@ public class FlowNoService {
                 flowNo.setCurrNo(no);
 
                 Map<String, Object> updateMap = new HashMap<>();
-                updateMap.put("type", "warehouse");
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_WAREHOUSE.getValue());
                 updateMap.put("tenantId", tenantId);
                 jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
 
@@ -107,7 +109,7 @@ public class FlowNoService {
             }
             while (true) {
                 FlowNo flowNo = new FlowNo();
-                flowNo.setType("quality_inspect_program");
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_QUALITY_INSPECT_PROGRAM.getValue());
                 flowNo.setTenantId(tenantId);
                 flowNo = jdbcClient.getJdbcModel(flowNo, connection);
                 if (flowNo == null) throw new BizException("未配置质检流水号规则");
@@ -130,7 +132,7 @@ public class FlowNoService {
                 flowNo.setCurrNo(no);
 
                 Map<String, Object> updateMap = new HashMap<>();
-                updateMap.put("type", "quality_inspect_program");
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_QUALITY_INSPECT_PROGRAM.getValue());
                 updateMap.put("tenantId", tenantId);
                 jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
 
@@ -162,7 +164,7 @@ public class FlowNoService {
             }
             while (true) {
                 FlowNo flowNo = new FlowNo();
-                flowNo.setType("process_stage");
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_PROCESS_STAGE.getValue());
                 flowNo.setTenantId(tenantId);
                 flowNo = jdbcClient.getJdbcModel(flowNo, connection);
                 if (flowNo == null) throw new BizException("未配置工序流水号规则");
@@ -185,7 +187,7 @@ public class FlowNoService {
                 flowNo.setCurrNo(no);
 
                 Map<String, Object> updateMap = new HashMap<>();
-                updateMap.put("type", "process_stage");
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_PROCESS_STAGE.getValue());
                 updateMap.put("tenantId", tenantId);
                 jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
 
@@ -217,7 +219,7 @@ public class FlowNoService {
             }
             while (true) {
                 FlowNo flowNo = new FlowNo();
-                flowNo.setType("process_route");
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_PROCESS_ROUTE.getValue());
                 flowNo.setTenantId(tenantId);
                 flowNo = jdbcClient.getJdbcModel(flowNo, connection);
                 if (flowNo == null) throw new BizException("未配置工艺路线流水号规则");
@@ -240,7 +242,7 @@ public class FlowNoService {
                 flowNo.setCurrNo(no);
 
                 Map<String, Object> updateMap = new HashMap<>();
-                updateMap.put("type", "process_route");
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_PROCESS_ROUTE.getValue());
                 updateMap.put("tenantId", tenantId);
                 jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
 
@@ -272,7 +274,7 @@ public class FlowNoService {
             }
             while (true) {
                 FlowNo flowNo = new FlowNo();
-                flowNo.setType("product_material");
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_PRODUCT_MATERIAL.getValue());
                 flowNo.setTenantId(tenantId);
                 flowNo = jdbcClient.getJdbcModel(flowNo, connection);
                 if (flowNo == null) throw new BizException("未配置物料流水号规则");
@@ -295,7 +297,7 @@ public class FlowNoService {
                 flowNo.setCurrNo(no);
 
                 Map<String, Object> updateMap = new HashMap<>();
-                updateMap.put("type", "product_material");
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_PRODUCT_MATERIAL.getValue());
                 updateMap.put("tenantId", tenantId);
                 jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
 
@@ -327,7 +329,7 @@ public class FlowNoService {
             }
             while (true) {
                 FlowNo flowNo = new FlowNo();
-                flowNo.setType("customer");
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_CUSTOMER.getValue());
                 flowNo.setTenantId(tenantId);
                 flowNo = jdbcClient.getJdbcModel(flowNo, connection);
                 if (flowNo == null) throw new BizException("未配置客户流水号规则");
@@ -350,7 +352,7 @@ public class FlowNoService {
                 flowNo.setCurrNo(no);
 
                 Map<String, Object> updateMap = new HashMap<>();
-                updateMap.put("type", "customer");
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_CUSTOMER.getValue());
                 updateMap.put("tenantId", tenantId);
                 jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
 
@@ -363,6 +365,61 @@ public class FlowNoService {
         }
     }
 
+    /**
+     * 生成物料BOM编码 (ProductBom) - 独立解耦实现
+     */
+    public String generateProductBomCode(ProductBom model, Connection connection) throws Exception {
+        synchronized (productBomLock) {
+            String manualCode = model.getBomCode();
+            String tenantId = model.getTenantId();
+            if (StringUtil.isNotEmpty(manualCode)) {
+                Map<String, Object> checkMap = new HashMap<>();
+                checkMap.put("bomCode", manualCode);
+                checkMap.put("tenantId", tenantId);
+                int count = (int) jdbcClient.getJdbcCountByMap(checkMap, ProductBom.class, connection);
+                if (count > 0) {
+                    throw new BizException("BOM编号已存在: " + manualCode);
+                }
+                return manualCode;
+            }
+            while (true) {
+                FlowNo flowNo = new FlowNo();
+                flowNo.setType(MESEnum.FLOW_NO_TYPE_PRODUCT_BOM.getValue());
+                flowNo.setTenantId(tenantId);
+                flowNo = jdbcClient.getJdbcModel(flowNo, connection);
+                if (flowNo == null) throw new BizException("未配置物料BOM流水号规则");
+
+                String currDate = DFY_MD.format(LocalDateTime.now());
+                String currDate2 = DFY_MD_2.format(LocalDateTime.now());
+                if (StringUtil.isEmpty(flowNo.getCurrDate()) || !flowNo.getCurrDate().equals(currDate)) {
+                    flowNo.setCurrDate(currDate);
+                    flowNo.setCurrSeq(1);
+                } else {
+                    flowNo.setCurrSeq(flowNo.getCurrSeq() + 1);
+                }
+
+                String no;
+                if (StringUtil.isEmpty(flowNo.getCurrDate())) {
+                    no = (flowNo.getPrefix() != null ? flowNo.getPrefix() : "") + String.format("%06d", flowNo.getCurrSeq());
+                } else {
+                    no = (flowNo.getPrefix() != null ? flowNo.getPrefix() : "") + currDate2 + String.format("%05d", flowNo.getCurrSeq());
+                }
+                flowNo.setCurrNo(no);
+
+                Map<String, Object> updateMap = new HashMap<>();
+                updateMap.put("type", MESEnum.FLOW_NO_TYPE_PRODUCT_BOM.getValue());
+                updateMap.put("tenantId", tenantId);
+                jdbcClient.jdbcUpdate(flowNo, updateMap, connection);
+
+                Map<String, Object> checkMap = new HashMap<>();
+                checkMap.put("bomCode", no);
+                checkMap.put("tenantId", tenantId);
+                int count = (int) jdbcClient.getJdbcCountByMap(checkMap, ProductBom.class, connection);
+                if (count == 0) return no;
+            }
+        }
+    }
+
     /**
      * 原始流水号生成方法
      */