|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 原始流水号生成方法
|
|
|
*/
|