diff --git a/lidee-admin/.flattened-pom.xml b/lidee-admin/.flattened-pom.xml
index c0dce2e..25e8571 100644
--- a/lidee-admin/.flattened-pom.xml
+++ b/lidee-admin/.flattened-pom.xml
@@ -36,6 +36,10 @@
com.lideeyunji
lidee-module-biz
+
+ com.dameng
+ DmJdbcDriver18
+
${project.artifactId}
diff --git a/lidee-admin/src/main/resources/application-local.yaml b/lidee-admin/src/main/resources/application-local.yaml
index 4f1f420..3f2cf16 100644
--- a/lidee-admin/src/main/resources/application-local.yaml
+++ b/lidee-admin/src/main/resources/application-local.yaml
@@ -7,54 +7,54 @@ spring:
dynamic: # 多数据源配置
primary: master
datasource:
- master:
- # 达梦数据库 主库,业务库
- driver-class-name: dm.jdbc.driver.DmDriver
- url: jdbc:dm://127.0.0.1:5236?schema=GSSERVER&compatible_mode=mysql
- username: sysdba
- password: Gao1048783178
- lideeyunji: # 从库,框架库
- driver-class-name: dm.jdbc.driver.DmDriver
- url: jdbc:dm://127.0.0.1:5236?schema=ERPCS&compatible_mode=mysql
- username: sysdba
- password: Gao1048783178
- slave: # 日志库单独
- lazy: true # 开启懒加载,保证启动速度
- driver-class-name: dm.jdbc.driver.DmDriver
- url: jdbc:dm://127.0.0.1:5236?schema=ERPCS&compatible_mode=mysql
- username: sysdba
- password: Gao1048783178
- erp_dev: # erp
- driver-class-name: dm.jdbc.driver.DmDriver
- url: jdbc:dm://127.0.0.1:5236?schema=GSSERVER&compatible_mode=mysql
- username: sysdba
- password: Gao1048783178
- sjzt: # 数据中台
- driver-class-name: dm.jdbc.driver.DmDriver
- url: jdbc:dm://127.0.0.1:5236?schema=DATAMIDDLEPLATFORM&compatible_mode=mysql
- username: sysdba
- password: Gao1048783178
- mes_dev: # 数据中台
- driver-class-name: dm.jdbc.driver.DmDriver
- url: jdbc:dm://127.0.0.1:5236?schema=DATAMIDDLEPLATFORM&compatible_mode=mysql
- username: sysdba
- password: Gao1048783178
# master:
# # 达梦数据库 主库,业务库
# driver-class-name: dm.jdbc.driver.DmDriver
-# url: jdbc:dm://192.168.107.5:5238?schema=GSSERVER&compatible_mode=mysql
-# username: GSSERVER
-# password: HGgs123456
+# url: jdbc:dm://127.0.0.1:5236?schema=GSSERVER&compatible_mode=mysql
+# username: sysdba
+# password: Gao1048783178
+# lideeyunji: # 从库,框架库
+# driver-class-name: dm.jdbc.driver.DmDriver
+# url: jdbc:dm://127.0.0.1:5236?schema=ERPCS&compatible_mode=mysql
+# username: sysdba
+# password: Gao1048783178
+# slave: # 日志库单独
+# lazy: true # 开启懒加载,保证启动速度
+# driver-class-name: dm.jdbc.driver.DmDriver
+# url: jdbc:dm://127.0.0.1:5236?schema=ERPCS&compatible_mode=mysql
+# username: sysdba
+# password: Gao1048783178
# erp_dev: # erp
# driver-class-name: dm.jdbc.driver.DmDriver
-# url: jdbc:dm://192.168.107.5:5238?schema=GSSERVER&compatible_mode=mysql
-# username: GSSERVER
-# password: HGgs123456
-# sales_dev: # 数据中台
+# url: jdbc:dm://127.0.0.1:5236?schema=GSSERVER&compatible_mode=mysql
+# username: sysdba
+# password: Gao1048783178
+# sjzt: # 数据中台
# driver-class-name: dm.jdbc.driver.DmDriver
-# url: jdbc:dm://192.168.107.5:5237?schema=HGGS&compatible_mode=oracle
-# username: HGGS
-# password: HGgs123456!
+# url: jdbc:dm://127.0.0.1:5236?schema=DATAMIDDLEPLATFORM&compatible_mode=mysql
+# username: sysdba
+# password: Gao1048783178
+# mes_dev: # 数据中台
+# driver-class-name: dm.jdbc.driver.DmDriver
+# url: jdbc:dm://127.0.0.1:5236?schema=DATAMIDDLEPLATFORM&compatible_mode=mysql
+# username: sysdba
+# password: Gao1048783178
+ master:
+ # 达梦数据库 主库,业务库
+ driver-class-name: dm.jdbc.driver.DmDriver
+ url: jdbc:dm://192.168.107.5:5238?schema=GSSERVER&compatible_mode=mysql
+ username: GSSERVER
+ password: HGgs123456
+ erp_dev: # erp
+ driver-class-name: dm.jdbc.driver.DmDriver
+ url: jdbc:dm://192.168.107.5:5238?schema=GSSERVER&compatible_mode=mysql
+ username: GSSERVER
+ password: HGgs123456
+ sales_dev: # 数据中台
+ driver-class-name: dm.jdbc.driver.DmDriver
+ url: jdbc:dm://192.168.107.5:5237?schema=HGGS&compatible_mode=oracle
+ username: HGGS
+ password: HGgs123456!
redis:
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/BomBasicDataInformationJob.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/BomBasicDataInformationJob.java
index 175b6d9..90db8c4 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/BomBasicDataInformationJob.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/BomBasicDataInformationJob.java
@@ -16,6 +16,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
+import java.util.UUID;
import java.util.function.BiFunction;
import java.util.function.Function;
@@ -183,6 +184,7 @@ public class BomBasicDataInformationJob implements JobHandler {
} else {
CappIntegrationPbomTable newLog = new CappIntegrationPbomTable();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+ newLog.setId(UUID.randomUUID().toString());
newLog.setSendNo(sdf.format(new Date()));
newLog.setChangeType(type);
newLog.setLastUpdateTime(String.valueOf(now));
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OutboundApplicationJob.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OutboundApplicationJob.java
index 8fdf827..db4a45d 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OutboundApplicationJob.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/OutboundApplicationJob.java
@@ -52,7 +52,7 @@ public class OutboundApplicationJob implements JobHandler {
Date lastSyncTime = getLastSyncTime(SYNC_LOG_TYPE_OUT);
ScmgiplanEntity scmgiplanEntity = new ScmgiplanEntity();
- scmgiplanEntity.setPlanStatus("2");
+ scmgiplanEntity.setPlanStatus("3");
if (lastSyncTime != null)
scmgiplanEntity.setTimestampLastchangedon(lastSyncTime);
scmgiPlanService.selectList(scmgiplanEntity);
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CappIntegrationPbomTable.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CappIntegrationPbomTable.java
index 022c4f7..c9c36ec 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CappIntegrationPbomTable.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CappIntegrationPbomTable.java
@@ -69,4 +69,6 @@ public class CappIntegrationPbomTable {
*/
@TableField("ISREAD")
private Integer isRead;
+ @TableField("ID")
+ private String id;
}
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CopyJsbomEntity.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CopyJsbomEntity.java
index 87202d8..2565c33 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CopyJsbomEntity.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/CopyJsbomEntity.java
@@ -20,7 +20,7 @@ public class CopyJsbomEntity {
* 产品名称
*/
@TableField("NAME_CHS")
- private String name;
+ private String nameChs;
/**
* BOM类型ID
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomzxBackUpEntity.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomzxBackUpEntity.java
index a539307..6da2891 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomzxBackUpEntity.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomzxBackUpEntity.java
@@ -19,8 +19,8 @@ public class JsbomzxBackUpEntity {
/**
* 物料名称
*/
- @TableField("NAME")
- private String name;
+ @TableField("NAME_CHS")
+ private String nameChs;
/**
* 外协供料
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerBankAccountsMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerBankAccountsMapper.java
index 6e07990..1fc4f76 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerBankAccountsMapper.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerBankAccountsMapper.java
@@ -29,6 +29,7 @@ public interface ErpBfPartnerBankAccountsMapper extends BaseMapper().eq(ErpBfPartnerBankAccountsEntity::getAccountCode, accountCodes.getAccountCode())
.eq(ErpBfPartnerBankAccountsEntity::getPartnerId, accountCodes.getPartnerId())
+ .eq(ErpBfPartnerBankAccountsEntity::getStateIsEnabled, "1")
);
}
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerHeadExtMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerHeadExtMapper.java
index 3192e59..aa56677 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerHeadExtMapper.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/erp/ErpBfPartnerHeadExtMapper.java
@@ -30,6 +30,7 @@ public interface ErpBfPartnerHeadExtMapper extends BaseMapper().eq(ErpBfPartnerHeadExtEntity::getVersion, versions.getVersion())
.eq(ErpBfPartnerHeadExtEntity::getPartnerId, versions.getPartnerId())
+ .last("LIMIT 1")
);
}
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/BomMaterialServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/BomMaterialServiceImpl.java
index b75da44..31bc58d 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/BomMaterialServiceImpl.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/BomMaterialServiceImpl.java
@@ -34,6 +34,7 @@ import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
@Service
@Slf4j
@@ -141,10 +142,28 @@ public class BomMaterialServiceImpl extends ServiceImpl partObjList = bomDataDTO.getPartObjList();
+ if (!CollectionUtils.isEmpty(partObjList)) {
+ List ccodeList = partObjList != null ? partObjList.stream()
+ .map(BomMaterialEntity::getCcode)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList()) : new ArrayList<>();
+ }
+ //关联表list
List bomLinkList = bomDataDTO.getBomLinkList();
+ if (!CollectionUtils.isEmpty(bomLinkList)) {
+ List parentCodeList = bomLinkList != null ? bomLinkList.stream()
+ .map(BomMaterialLinkEntity::getCparentcode)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList()) : new ArrayList<>();
+
+ List childCodeList = bomLinkList != null ? bomLinkList.stream()
+ .map(BomMaterialLinkEntity::getCchildcode)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList()) : new ArrayList<>();
+ }
int partCount = 0;
int linkCount = 0;
@@ -304,24 +323,35 @@ public class BomMaterialServiceImpl extends ServiceImpl()
- .eq(ErpMaterialEntity::getCode, data.getCcode())
- .eq(ErpMaterialEntity::getStateIsEnabled, "1")
- );
+// ErpMaterialEntity existData = erpMaterialMapper.selectOne(
+// new LambdaQueryWrapper()
+// .eq(ErpMaterialEntity::getCode, data.getCcode())
+// .eq(ErpMaterialEntity::getStateIsEnabled, "1")
+// );
JsbomEntity jsbom = baseMapper.selectOne(
new LambdaQueryWrapper()
.eq(JsbomEntity::getJsbomCpbh, data.getCcode())
- .eq(JsbomEntity::getJsbomBombb, data.getCversion())
+ .eq(JsbomEntity::getJsbomSfty, "0")
);
CopyJsbomEntity copyJsbomEntity = new CopyJsbomEntity();
try {
if (jsbom != null) {
JsbomBackUpEntity jsbomBackUpEntity = new JsbomBackUpEntity();
+ JsbomEntity newJsbom = new JsbomEntity();
+ BeanUtils.copyProperties(jsbom, newJsbom);
BeanUtils.copyProperties(jsbom, jsbomBackUpEntity);
- updateBomMain(jsbom, data, copyJsbomEntity);
- jsbom.setJsbomCpid(existData != null ? existData.getId() : null);
+ updateBomMain(newJsbom, data, copyJsbomEntity);
+// jsbom.setJsbomCpid(existData != null ? existData.getId() : null);
+ jsbom.setJsbomSfty("1");
+ jsbom.setJsbomFbsj(new Date());
+ if (newJsbom.getJsbomBombb() != null ) {
+ String newVersion = incrementVersion(jsbom.getJsbomBombb());
+ newJsbom.setJsbomBombb(newVersion);
+ }
+ newJsbom.setJsbomFbsj(new Date());
+ newJsbom.setId(UUID.randomUUID().toString());
baseMapper.updateById(jsbom);
+ baseMapper.insert(newJsbom);
copyBomMaterialMapper.updateById(copyJsbomEntity);
int i = bomMaterialBackUpMapper.updateById(jsbomBackUpEntity);
if (i == 0)
@@ -330,7 +360,8 @@ public class BomMaterialServiceImpl extends ServiceImpl= 0; i--) {
+ if (Character.isDigit(version.charAt(i))) {
+ lastDigitIndex = i;
+ } else {
+ break;
+ }
+ }
+
+ // 如果没有数字,直接返回原版本
+ if (lastDigitIndex == -1) {
+ return version + "1";
+ }
+
+ // 提取前缀和数字部分
+ String prefix = version.substring(0, lastDigitIndex);
+ String numberPart = version.substring(lastDigitIndex);
+
+ try {
+ int number = Integer.parseInt(numberPart);
+ return prefix + (number + 1);
+ } catch (NumberFormatException e) {
+ log.warn("版本号数字转换失败: {}", version);
+ return version;
+ }
+ }
+
/**
* 创建BOM主表实体
*/
@@ -371,27 +436,64 @@ public class BomMaterialServiceImpl extends ServiceImpl()
.eq(JsbomEntity::getJsbomCpbh, data.getCparentcode())
- .eq(JsbomEntity::getJsbomBombb, data.getCparentversion())
+ .eq(JsbomEntity::getJsbomSfty, "0")
);
if (jsbom == null) {
- log.warn("未找到父件BOM,产品编号: {}, 版本: {}", data.getCparentcode(), data.getCparentversion());
+ log.warn("未找到未发布的父件BOM,产品编号: {}", data.getCparentcode());
return 0;
}
- JsbomzxEntity jsbomzxEntity = jsbomzxMapper.selectOne(
- new LambdaQueryWrapper()
- .eq(JsbomzxEntity::getJsbomzxBomid, jsbom.getId())
- .eq(JsbomzxEntity::getJsbomzxZxhh, data.getCindex())
- );
+ // 查询物料信息(提前查询,避免重复)
+ ErpMaterialEntity existMaterialData = null;
+ if (data.getCchildcode() != null) {
+ existMaterialData = erpMaterialMapper.selectOne(
+ new LambdaQueryWrapper()
+ .eq(ErpMaterialEntity::getCode, data.getCchildcode())
+ );
+ }
+
+ // 查询子件是否存在
+ JsbomzxEntity jsbomzxEntity = null;
+ if (jsbom != null) {
+ jsbomzxEntity = jsbomzxMapper.selectOne(
+ new LambdaQueryWrapper()
+ .eq(JsbomzxEntity::getJsbomzxBomid, jsbom.getId())
+ .eq(JsbomzxEntity::getJsbomzxWlbh, data.getCchildcode())
+ );
+ }
CopyJsbomzxEntity copyJsbomzxEntity = new CopyJsbomzxEntity();
try {
if (jsbomzxEntity != null) {
+ // 更新子件
JsbomzxBackUpEntity jsbomzxBackUpEntity = new JsbomzxBackUpEntity();
BeanUtils.copyProperties(jsbomzxEntity, jsbomzxBackUpEntity);
+
updateBomLinkFields(jsbomzxEntity, data);
+ jsbomzxEntity.setJsbomzxWlid(existMaterialData != null ? existMaterialData.getId() : null);
+
BeanUtils.copyProperties(jsbomzxEntity, copyJsbomzxEntity);
+
jsbomzxMapper.updateById(jsbomzxEntity);
copyJsbomzxMapper.updateById(copyJsbomzxEntity);
+
int i = jsbomzxBackUpMapper.updateById(jsbomzxBackUpEntity);
if (i == 0) {
jsbomzxBackUpMapper.insert(jsbomzxBackUpEntity);
}
- log.debug("更新BOM子件,BOM ID: {}, 序号: {}", jsbom.getId(), data.getCindex());
+
+ log.debug("更新BOM子件,BOM ID: {}, 物料编号: {}", jsbom.getId(), data.getCchildcode());
return 2;
} else {
+ // 新增子件
JsbomzxEntity newJsbomzx = createBomLink(jsbom.getId(), data);
+ newJsbomzx.setJsbomzxWlid(existMaterialData != null ? existMaterialData.getId() : null);
+
BeanUtils.copyProperties(newJsbomzx, copyJsbomzxEntity);
- copyJsbomzxMapper.insert(copyJsbomzxEntity);
+
jsbomzxMapper.insert(newJsbomzx);
- log.debug("新增BOM子件,BOM ID: {}, 序号: {}", jsbom.getId(), data.getCindex());
+ copyJsbomzxMapper.insert(copyJsbomzxEntity);
+
+ log.debug("新增BOM子件,BOM ID: {}, 物料编号: {}", jsbom.getId(), data.getCchildcode());
return 1;
}
} catch (Exception e) {
- log.error("同步BOM子件失败,BOM ID: {}, 序号: {}", jsbom.getId(), data.getCindex(), e);
+ log.error("同步BOM子件失败,BOM ID: {}, 物料编号: {}", jsbom.getId(), data.getCchildcode(), e);
return 0;
}
}
diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/ErpBfPartnerServiceImpl.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/ErpBfPartnerServiceImpl.java
index 18eba6d..57e2f92 100644
--- a/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/ErpBfPartnerServiceImpl.java
+++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/service/erp/impl/ErpBfPartnerServiceImpl.java
@@ -1783,6 +1783,8 @@ public class ErpBfPartnerServiceImpl extends ServiceImpl unitMap, Date time) {
+ if ("0".equals(sourceData.getStateIsEnabled()))
+ return 0;
String dcId = sourceData.getId();
log.info("开始处理DC物料信息数据,id {}", dcId);
Integer i = this.handleMaterials(sourceData);
@@ -1777,7 +1779,6 @@ public class ErpMaterialServiceImpl extends ServiceImpl scmgiplanEntities = baseMapper.selectList(new LambdaQueryWrapper()
- .eq(ScmgiplanEntity::getPlanStatus, "2")
+ .eq(ScmgiplanEntity::getPlanStatus, "3")
.in(ScmgiplanEntity::getId, idList)
);
return scmgiplanEntities;
diff --git a/lidee-core/src/main/resources/mapper/erp/ErpBfPartnerSyncIdMapper.xml b/lidee-core/src/main/resources/mapper/erp/ErpBfPartnerSyncIdMapper.xml
index f6082d7..53bcb01 100644
--- a/lidee-core/src/main/resources/mapper/erp/ErpBfPartnerSyncIdMapper.xml
+++ b/lidee-core/src/main/resources/mapper/erp/ErpBfPartnerSyncIdMapper.xml
@@ -17,6 +17,7 @@
select ID, CODE, DCID, UPDATETIME
from BFPARTNERSYNCID
where DCID = #{id}
+ limit 1
diff --git a/lidee-module/lidee-module-biz/src/main/java/com/lideeyunji/module/biz/service/impl/QrQrOutboundApplicationServiceImpl.java b/lidee-module/lidee-module-biz/src/main/java/com/lideeyunji/module/biz/service/impl/QrQrOutboundApplicationServiceImpl.java
index 6ce90ec..119a8b1 100644
--- a/lidee-module/lidee-module-biz/src/main/java/com/lideeyunji/module/biz/service/impl/QrQrOutboundApplicationServiceImpl.java
+++ b/lidee-module/lidee-module-biz/src/main/java/com/lideeyunji/module/biz/service/impl/QrQrOutboundApplicationServiceImpl.java
@@ -55,6 +55,7 @@ public class QrQrOutboundApplicationServiceImpl extends ServiceImpl()
.eq(ScmgiplanEntity::getPlanCode, scmgiplanEntity.getPlanCode())
+ .eq(ScmgiplanEntity::getPlanStatus, "3")
.eq(ScmgiplanEntity::getIsStop, "0"));
if (dbEntity == null) {