From 656b0995f4d49108b6ccfc4def980256da5763d0 Mon Sep 17 00:00:00 2001 From: Gjm <你的邮箱> Date: Tue, 12 May 2026 09:10:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(bom):=20=E6=96=B0=E5=A2=9EBOM=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=8A=9F=E8=83=BD=E5=92=8C=E5=88=B0=E8=B4=A7=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加WarehouseNotificationJob定时任务处理到货通知 - 创建JsbomBackUpEntity和JsbomzxBackUpEntity实体类用于BOM备份 - 添加ArrivalOrderEntity和ArrivalOrderItemEntity实体类用于到货订单 - 创建BomMaterialBackUpMapper和JsbomzxBackUpMapper数据访问接口 - 配置application-local.yaml和application-prod.yaml中的销售系统相关URL - 更新达梦数据库连接配置和Redis密码设置 --- .../src/main/resources/application-local.yaml | 12 +- .../src/main/resources/application-prod.yaml | 40 +- lidee-core/pom.xml | 11 + .../config/job/WarehouseNotificationJob.java | 71 ++++ .../entity/bom/JsbomBackUpEntity.java | 355 ++++++++++++++++++ .../entity/bom/JsbomzxBackUpEntity.java | 248 ++++++++++++ .../entity/erp/ArrivalOrderEntity.java | 21 ++ .../entity/erp/ArrivalOrderItemEntity.java | 15 + .../mapper/bom/BomMaterialBackUpMapper.java | 20 + .../mapper/bom/JsbomzxBackUpMapper.java | 13 + .../erp/impl/BomMaterialServiceImpl.java | 32 +- .../core/framework/utils/QrCodeUtil.java | 55 +++ 12 files changed, 868 insertions(+), 25 deletions(-) create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/WarehouseNotificationJob.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomBackUpEntity.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomzxBackUpEntity.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderEntity.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderItemEntity.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/BomMaterialBackUpMapper.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/JsbomzxBackUpMapper.java create mode 100644 lidee-core/src/main/java/com/lideeyunji/core/framework/utils/QrCodeUtil.java diff --git a/lidee-admin/src/main/resources/application-local.yaml b/lidee-admin/src/main/resources/application-local.yaml index 81f2bd2..c7f81b8 100644 --- a/lidee-admin/src/main/resources/application-local.yaml +++ b/lidee-admin/src/main/resources/application-local.yaml @@ -74,6 +74,7 @@ lideeyunji: debug: true #是否开启调试模式 saveReqLog: false # 是否保存请求日志 saveOpLog: false # 是否保存操作日志 +#销售系统 sales: bfPartnerUrl: http://192.168.107.3/hufu/api/v1/restData/get-BFPartner-update?apiToken=032b4c5c1f514639b63e9eacc39036be # 往来单位主表增量 bfPartnerContactUrl: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerContact-update?apiToken=b8957be745d64d759a53e2339bea8c9c # 往来单位联系人增量 @@ -88,10 +89,11 @@ sales: partnerBranch: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerBranch-all?apiToken=6ff2844877df44f4b40f428dd825ded2 # 往来单位分支机构全量 partnerCXOs: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerCXOs-all?apiToken=f0b88b7ba75949279022ac79abbf735b # 往来单位企业高管全量 partnerEquity: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerEquity-all?apiToken=658cfd7c5a3f4f0eab70c23770dd60ab # 往来单位控制人全量 - partnerRelation: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerRelation-all?apiToken=e122dda793a842938375e0c495722ad8 # 往来单位关联关系全量 + partnerRelation: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerRelation-all?apiToken=80f7ddf7f1b14939b5375c042baf8faa # 往来单位关联关系全量 partnerShareholder: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerShareholder-all?apiToken=f8976737ce8d439d9e5297cdcf00a0fa # 往来单位股东全量 + allPartner: http://192.168.107.3/hufu/api/v1/restData/get-BFPartner-all?apiToken=a01716b827d749fcb80270c3c9c4e27e #往来单位全量 + -#销售系统 hongguangUrl: bfPartnerUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartner-update?apiToken=36f470ff51214047b1a87110397305de # 往来单位主表增量 bfPartnerContactUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerContact-all?apiToken=674a50a69ba44320947b355dc12505ea # 往来单位联系人增量= @@ -108,20 +110,22 @@ hongguangUrl: partnerEquity: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerEquity-all?apiToken=658cfd7c5a3f4f0eab70c23770dd60ab # 往来单位控制人全量= partnerRelation: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerRelation-all?apiToken=e122dda793a842938375e0c495722ad8 # 往来单位关联关系全量= partnerShareholder: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerShareholder-all?apiToken=f8976737ce8d439d9e5297cdcf00a0fa # 往来单位股东全量= - allPartner: http://192.168.107.3/hufu/api/v1/restData/get-BFPartner-all?apiToken=a01716b827d749fcb80270c3c9c4e27e #往来单位全量 + allPartner: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartner-all?apiToken=8092849471434882818f35dd99d8d483 #往来单位全量 material: + allMaterial: http://192.168.107.3/hufu/api/v1/restData/bfMaterials?apiToken=da9cc999c01f4079ba1b6b708020d7c1 # 物料全量 bfMaterials: http://192.168.107.3/hufu/api/v1/restData/bfMaterials-byId?apiToken=efdaff8349664f91805c8a9156608223 # 物料主表增量 bfMaterialMeasureUnit: http://192.168.107.3/hufu/api/v1/restData/bfMaterialMeasureUnit?apiToken=3c10316291904c9ca106c6a16ccad62a # 物料计量单位全量 mainAux: http://192.168.107.3/hufu/api/v1/restData/BFMaterialMainAuxUnitByArea?apiToken=da32203ac3354ec78d636898d37587c4 # 物料主辅助单位全量 materialConvRatio: http://192.168.107.3/hufu/api/v1/restData/bfMaterialConvRatio?apiToken=feefb54bbf15452b973cf0ca4fbfda3e # 物料换算率全量 materialLabel: http://192.168.107.3/hufu/api/v1/restData/bfMaterialLabel?apiToken=191286827d314521ba1664bf1c21e10c # 物料标签全量 - materialUnitByArea: http://192.168.107.3/hufu/api/v1/restData/BFMaterialUnitByArea?apiToken=e00774a9741a456d85ca8b9f4e42e2dc # 物料计量单位全量 + materialUnitByArea: http://192.168.107.3/hufu/api/v1/restData/BFMaterialUnitByArea?apiToken=e00774a9741a456d85ca8b9f4e42e2dc # 物料分范围计量单位全量 materialPropSetLink: http://192.168.107.3/hufu/api/v1/restData/bfMaterialPropSetLink?apiToken=24b2e4c0b7234d38929288b45ea71f7c # 物料特征集关联全量 materialPropValue: http://192.168.107.3/hufu/api/v1/restData/bfMaterialPropValue?apiToken=34716d427ac14c2cbfa38ed7a60958c6 # 物料特征值全量 materialDomainLinks: http://192.168.107.3/hufu/api/v1/restData/bfMaterialDomainLinks?apiToken=3fa9fea429e34f049262575a397307a9 # 物料作用域关联全量 materialCustomizedType: http://192.168.107.3/hufu/api/v1/restData/bfMaterialCustomizedType?apiToken=0d54bb8761e04c94ae860834521be269 # 物料自定义类型全量 materialHeadExt: http://192.168.107.3/hufu/api/v1/restData/bfMaterialHeadExt?apiToken=96e058c927c540ea9a7de8844cdf337e # 物料自定义扩展全量 materialAttachment: http://192.168.107.3/hufu/api/v1/restData/bfMaterialAttachment?apiToken=8d6cf78227c349c5a31e97eabac97c46 # 物料附件全量 + bom: bfMaterials: http://192.168.107.3/hufu/api/v1/restData/capp-integration-pbom-table?apiToken=5ccbba323f094f7aa4f305d0f668d8d1 # bom增量 diff --git a/lidee-admin/src/main/resources/application-prod.yaml b/lidee-admin/src/main/resources/application-prod.yaml index 861c064..aae58cb 100644 --- a/lidee-admin/src/main/resources/application-prod.yaml +++ b/lidee-admin/src/main/resources/application-prod.yaml @@ -34,7 +34,7 @@ spring: master: # 达梦数据库 主库,业务库 driver-class-name: dm.jdbc.driver.DmDriver - url: jdbc:dm://192.168.3.8:5238?schema=ERPCS&compatible_mode=oracle + url: jdbc:dm://192.168.3.8:5238?schema=GSSERVER&compatible_mode=oracle username: GSSERVER password: HGgs123456 erp_dev: # erp @@ -51,7 +51,7 @@ spring: host: 127.0.0.1 # 地址 port: 6379 # 端口 database: 15 # 数据库索引 - password: gryy@8888 # 密码,建议生产环境开启 +# password: gryy@8888 # 密码,建议生产环境开启 --- #################### 地代码平台相关配置 #################### @@ -64,8 +64,9 @@ lideeyunji: debug: false #是否开启调试模式 saveReqLog: true # 是否保存请求日志 saveOpLog: true # 是否保存操作日志 -hongguangUrl: - bfPartnerUrl: http://192.168.107.3/hufu/api/v1/restData/wldwall?apiToken=60fc9e83d37947d894f150c97c0db970 # 往来单位主表增量 +#销售系统 +sales: + bfPartnerUrl: http://192.168.107.3/hufu/api/v1/restData/get-BFPartner-update?apiToken=032b4c5c1f514639b63e9eacc39036be # 往来单位主表增量 bfPartnerContactUrl: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerContact-update?apiToken=b8957be745d64d759a53e2339bea8c9c # 往来单位联系人增量 bankAccountsUrl: http://192.168.107.3/hufu/api/v1/restData/get-bfPartnerBankAccounts-update?apiToken=a9d1cf9387a048de875bf0327c5dd1f5 # 往来单位银行账号增量 bfPartnerAddressUrl: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerAddress-update?apiToken=ebc6815334fb4e4eb5a8ea05dbfb02fe # 往来单位地址增量 @@ -78,10 +79,31 @@ hongguangUrl: partnerBranch: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerBranch-all?apiToken=6ff2844877df44f4b40f428dd825ded2 # 往来单位分支机构全量 partnerCXOs: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerCXOs-all?apiToken=f0b88b7ba75949279022ac79abbf735b # 往来单位企业高管全量 partnerEquity: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerEquity-all?apiToken=658cfd7c5a3f4f0eab70c23770dd60ab # 往来单位控制人全量 - partnerRelation: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerRelation-all?apiToken=e122dda793a842938375e0c495722ad8 # 往来单位关联关系全量 + partnerRelation: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerRelation-all?apiToken=80f7ddf7f1b14939b5375c042baf8faa # 往来单位关联关系全量 partnerShareholder: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerShareholder-all?apiToken=f8976737ce8d439d9e5297cdcf00a0fa # 往来单位股东全量 + allPartner: http://192.168.107.3/hufu/api/v1/restData/get-BFPartner-all?apiToken=a01716b827d749fcb80270c3c9c4e27e #往来单位全量 + + +hongguangUrl: + bfPartnerUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartner-update?apiToken=36f470ff51214047b1a87110397305de # 往来单位主表增量 + bfPartnerContactUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerContact-all?apiToken=674a50a69ba44320947b355dc12505ea # 往来单位联系人增量= + bankAccountsUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-bfPartnerBankAccounts-all?apiToken=3b6d967b0521489e9ca8ff38cc467f64 # 往来单位银行账号增量= + bfPartnerAddressUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerAddress-all?apiToken=a4896cd4e4454ebaa7367a309325e92c # 往来单位地址增量= + attachmentsUrl: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerAttachment?apiToken=c8aba94cdc92420a939c91d0ebfec13e # 往来单位附件全量 + partnerCertificateUrl: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerCertificate-all?apiToken=d316d43644fd403f9a02072fc77f82d8 # 往来单位证件全量= + partnerDomainLinks: http://192.168.107.3/hufu/api/v1/restData/get-BFPartnerDomainLinks-all?apiToken=cdc84b2b9e3647cb8c42e826df9f98c0 # 往来单位关联域关联全量 + partnerIBAN: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerIBAN-all?apiToken=a2f808ed087f4ff9b8496d67af101b32 # 往来单位IBAN全量= + partnerVersion: http://192.168.107.3/hufu/api/v1/restData/gt-XSGL-BFPartnerVersion-all?apiToken=08368c6525754ca4814233d8309f5e20 # 往来单位版本全量= + partnerHeadExt: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerHeadExt-all?apiToken=aad7699ee8e545bcbd123535f0f33010 # 往来单位自定义扩展全量= + partnerBranch: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerBranch-all?apiToken=abf28ba072dc4e78baa81bdbefc5d507 # 往来单位分支机构全量= + partnerCXOs: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerCXOs-all?apiToken=2c64c3c243a04b0497f3dab1498a41e8 # 往来单位企业高管全量= + partnerEquity: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerEquity-all?apiToken=658cfd7c5a3f4f0eab70c23770dd60ab # 往来单位控制人全量= + partnerRelation: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerRelation-all?apiToken=e122dda793a842938375e0c495722ad8 # 往来单位关联关系全量= + partnerShareholder: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartnerShareholder-all?apiToken=f8976737ce8d439d9e5297cdcf00a0fa # 往来单位股东全量= + allPartner: http://192.168.107.3/hufu/api/v1/restData/get-XSGL-BFPartner-all?apiToken=8092849471434882818f35dd99d8d483 #往来单位全量 material: - bfMaterials: http://192.168.107.3/hufu/api/v1/restData/bfMaterials?apiToken=da9cc999c01f4079ba1b6b708020d7c1 # 物料主表全量 + allMaterial: http://192.168.107.3/hufu/api/v1/restData/bfMaterials?apiToken=da9cc999c01f4079ba1b6b708020d7c1 # 物料全量 + bfMaterials: http://192.168.107.3/hufu/api/v1/restData/bfMaterials-byId?apiToken=efdaff8349664f91805c8a9156608223 # 物料主表增量 bfMaterialMeasureUnit: http://192.168.107.3/hufu/api/v1/restData/bfMaterialMeasureUnit?apiToken=3c10316291904c9ca106c6a16ccad62a # 物料计量单位全量 mainAux: http://192.168.107.3/hufu/api/v1/restData/BFMaterialMainAuxUnitByArea?apiToken=da32203ac3354ec78d636898d37587c4 # 物料主辅助单位全量 materialConvRatio: http://192.168.107.3/hufu/api/v1/restData/bfMaterialConvRatio?apiToken=feefb54bbf15452b973cf0ca4fbfda3e # 物料换算率全量 @@ -91,4 +113,8 @@ material: materialPropValue: http://192.168.107.3/hufu/api/v1/restData/bfMaterialPropValue?apiToken=34716d427ac14c2cbfa38ed7a60958c6 # 物料特征值全量 materialDomainLinks: http://192.168.107.3/hufu/api/v1/restData/bfMaterialDomainLinks?apiToken=3fa9fea429e34f049262575a397307a9 # 物料作用域关联全量 materialCustomizedType: http://192.168.107.3/hufu/api/v1/restData/bfMaterialCustomizedType?apiToken=0d54bb8761e04c94ae860834521be269 # 物料自定义类型全量 - materialHeadExt: http://192.168.107.3/hufu/api/v1/restData/bfMaterialHeadExt?apiToken=96e058c927c540ea9a7de8844cdf337e # 物料自定义扩展全量 \ No newline at end of file + materialHeadExt: http://192.168.107.3/hufu/api/v1/restData/bfMaterialHeadExt?apiToken=96e058c927c540ea9a7de8844cdf337e # 物料自定义扩展全量 + materialAttachment: http://192.168.107.3/hufu/api/v1/restData/bfMaterialAttachment?apiToken=8d6cf78227c349c5a31e97eabac97c46 # 物料附件全量 + +bom: + bfMaterials: http://192.168.107.3/hufu/api/v1/restData/capp-integration-pbom-table?apiToken=5ccbba323f094f7aa4f305d0f668d8d1 # bom增量 \ No newline at end of file diff --git a/lidee-core/pom.xml b/lidee-core/pom.xml index d177df5..9a40727 100644 --- a/lidee-core/pom.xml +++ b/lidee-core/pom.xml @@ -104,6 +104,17 @@ 2.0.32 + + com.google.zxing + core + 3.5.1 + + + com.google.zxing + javase + 3.5.1 + + com.github.pagehelper pagehelper-spring-boot-starter diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/WarehouseNotificationJob.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/WarehouseNotificationJob.java new file mode 100644 index 0000000..7e9fe3d --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/config/job/WarehouseNotificationJob.java @@ -0,0 +1,71 @@ +package com.lideeyunji.core.framework.config.job; + +import com.lideeyunji.core.framework.entity.erp.ArrivalOrderEntity; +import com.lideeyunji.core.framework.entity.erp.ArrivalOrderItemEntity; +import com.lideeyunji.core.framework.utils.QrCodeUtil; +import com.lideeyunji.tool.framework.quartz.core.handler.JobHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Collections; + +@Component("WarehouseNotificationJob") +@Slf4j +public class WarehouseNotificationJob implements JobHandler { + + @Resource + private QrCodeUtil qrCodeUtil; + @Override + public String execute(String param) throws Exception { + log.info("========== 开始执行到货通知任务 =========="); + + try { + syncArrivalNotice(); + + String result = String.format("========== 数据同步完成=========="); + log.info(result); + return result; + } catch (Exception e) { + log.error("ERP数据同步任务执行失败", e); + throw e; + } + } + + private void syncArrivalNotice() throws Exception { + ArrivalOrderEntity order = new ArrivalOrderEntity(); + order.setArrivalNo("ARR20250505001"); + order.setSaleOrderNo("SO20250505001"); + order.setBusinessType("普通采购"); + order.setSupplierName("安徽XX科技有限公司"); + order.setSupplierCode("SUP00123"); + order.setCreateBy("张三"); + order.setCreateTime(LocalDateTime.now()); + order.setUpdateBy("张三"); + order.setUpdateTime(LocalDateTime.now()); + + // 明细 + ArrivalOrderItemEntity item = new ArrivalOrderItemEntity(); + item.setArrivalNoticeId(1001L); + item.setLineNo(1); + item.setMaterialId(2001L); + item.setMaterialCode("MAT00888"); + item.setCheckQty(new BigDecimal("100")); + item.setUnit("台"); + + order.setItemList(Collections.singletonList(item)); + + // ========== 2. 生成二维码 ========== + String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); + String fileName = "D:/qr/arrival_qr_" + timestamp + ".png"; + qrCodeUtil.generateQrToFile(order, fileName); + + String base64 = qrCodeUtil.generateQrToBase64(order); + System.out.println("二维码 Base64:"); + System.out.println(base64); + log.info("二维码已生成: {}", fileName); + } +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomBackUpEntity.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomBackUpEntity.java new file mode 100644 index 0000000..0771cd8 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomBackUpEntity.java @@ -0,0 +1,355 @@ +package com.lideeyunji.core.framework.entity.bom; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * BOM主表 + * 表名:JSBOM + */ +@Data +@TableName("JSBOMBACKUP") +public class JsbomBackUpEntity { + + /** + * 产品名称 + */ + @TableField("NAME_CHS") + private String name; + + /** + * BOM类型ID + */ + @TableField("JSBOM_LXID") + private String jsbomLxid; + + /** + * 产品数据组织ID + */ + @TableField("JSBOM_ZZID") + private String jsbomZzid; + + /** + * 编制部门 + */ + @TableField("JSBOM_BZBM") + private String jsbomBzbm; + + /** + * BOMID 主键 + */ + @TableId("ID") + @TableField("ID") + private String id; + + /** + * BOM号 + */ + @TableField("JSBOM_BOMBH") + private String jsbomBombh; + + /** + * 版本号 + */ + @TableField("JSBOM_BOMBB") + private String jsbomBombb; + + /** + * 产品ID + */ + @TableField("JSBOM_CPID") + private String jsbomCpid; + + /** + * 产品编号(冗余) + */ + @TableField("JSBOM_CPBH") + private String jsbomCpbh; + + /** + * 产品图号(冗余) + */ + @TableField("JSBOM_CPTH") + private String jsbomCpth; + + /** + * 产品名称 + */ + @TableField("JSBOM_CPMC") + private String jsbomCpmc; + + /** + * 产品规格(冗余) + */ + @TableField("JSBOM_CPGG") + private String jsbomCpgg; + + /** + * 产品型号(冗余) + */ + @TableField("JSBOM_CPXH") + private String jsbomCpxh; + + /** + * 产品描述 + */ + @TableField("JSBOM_CPMS") + private String jsbomCpms; + + /** + * 产品辅助信息ID + */ + @TableField("JSBOM_CPFZID") + private String jsbomCpfzid; + + /** + * 产品辅助信息描述 + */ + @TableField("JSBOM_CPFZMS") + private String jsbomCpfzms; + + /** + * 标准批量 + */ + @TableField("JSBOM_BZPL") + private BigDecimal jsbomBzpl; + + /** + * 计量单位ID + */ + @TableField("JSBOM_JLDWID") + private String jsbomJldwid; + + /** + * 计量单位 + */ + @TableField("JSBOM_JLDW") + private String jsbomJldw; + + /** + * 辅标准批量 + */ + @TableField("JSBOM_FBZPL") + private BigDecimal jsbomFbzpl; + + /** + * 辅计量单位ID + */ + @TableField("JSBOM_FJLDWID") + private String jsbomFjldwid; + + /** + * 辅计量单位 + */ + @TableField("JSBOM_FJLDW") + private String jsbomFjldw; + + /** + * 备注 + */ + @TableField("JSBOM_BZ") + private String jsbomBz; + + /** + * 密级标识 + */ + @TableField("JSBOM_MJID") + private String jsbomMjid; + + /** + * 密级等级 + */ + @TableField("JSBOM_MJDJ") + private Integer jsbomMjdj; + + /** + * 密级名称 + */ + @TableField("JSBOM_MJMC") + private String jsbomMjmc; + + /** + * 状态 + */ + @TableField("JSBOM_ZT") + private String jsbomZt; + + /** + * 审批ID + */ + @TableField("JSBOM_SPLID") + private String jsbomSplid; + + /** + * 停用标志 + */ + @TableField("JSBOM_SFTY") + private String jsbomSfty; + + /** + * 生效日期 + */ + @TableField("JSBOM_KSRQ") + private Date jsbomKsrq; + + /** + * 失效日期 + */ + @TableField("JSBOM_JSRQ") + private Date jsbomJsrq; + + /** + * 子件行数 + */ + @TableField("JSBOM_ZXHS") + private Integer jsbomZxhs; + + /** + * 产出行数 + */ + @TableField("JSBOM_CCHS") + private Integer jsbomCchs; + + /** + * 附件行数 + */ + @TableField("JSBOM_FJHS") + private Integer jsbomFjhs; + + /** + * 创建时间 + */ + @TableField("JSBOM_CJSJ") + private Date jsbomCjsj; + + /** + * 创建人ID + */ + @TableField("JSBOM_CJR") + private String jsbomCjr; + + /** + * 创建人姓名 + */ + @TableField("JSBOM_CJRXM") + private String jsbomCjrxm; + + /** + * 确认时间 + */ + @TableField("JSBOM_FBSJ") + private Date jsbomFbsj; + + /** + * 确认人ID + */ + @TableField("JSBOM_FBR") + private String jsbomFbr; + + /** + * 确认人姓名 + */ + @TableField("JSBOM_FBRXM") + private String jsbomFbrxm; + + /** + * 停用时间 + */ + @TableField("JSBOM_TYSJ") + private Date jsbomTysj; + + /** + * 停用人ID + */ + @TableField("JSBOM_TYR") + private String jsbomTyr; + + /** + * 停用人姓名 + */ + @TableField("JSBOM_TYRXM") + private String jsbomTyrxm; + + /** + * BOM辅助信息ID + */ + @TableField("JSBOM_FZID") + private String jsbomFzid; + + /** + * BOM辅助信息描述 + */ + @TableField("JSBOM_FZMS") + private String jsbomFzms; + + /** + * 自定义0 + */ + @TableField("JSBOM_C0") + private String jsbomC0; + + /** + * 自定义1 + */ + @TableField("JSBOM_C1") + private String jsbomC1; + + /** + * 自定义2 + */ + @TableField("JSBOM_C2") + private String jsbomC2; + + /** + * 自定义3 + */ + @TableField("JSBOM_C3") + private String jsbomC3; + + /** + * 自定义4 + */ + @TableField("JSBOM_C4") + private String jsbomC4; + + /** + * 自定义5 + */ + @TableField("JSBOM_C5") + private String jsbomC5; + + /** + * 自定义6 + */ + @TableField("JSBOM_C6") + private String jsbomC6; + + /** + * 自定义7 + */ + @TableField("JSBOM_C7") + private String jsbomC7; + + /** + * 自定义8 + */ + @TableField("JSBOM_C8") + private String jsbomC8; + + /** + * 自定义9 + */ + @TableField("JSBOM_C9") + private String jsbomC9; + + /** + * BOM分类 + */ + @TableField("JSBOM_FL") + private String jsbomFl; +} \ No newline at end of file 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 new file mode 100644 index 0000000..a539307 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/bom/JsbomzxBackUpEntity.java @@ -0,0 +1,248 @@ + +package com.lideeyunji.core.framework.entity.bom; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * BOM体 + * 表名:JSBOMZX + */ +@Data +@TableName("JSBOMZXBACKUP") +public class JsbomzxBackUpEntity { + + /** + * 物料名称 + */ + @TableField("NAME") + private String name; + + /** + * 外协供料 + */ + @TableField("JSBOMZX_WWGL") + private String jsbomzxWwgl; + + /** + * BOMID + */ + @TableField("JSBOMZX_BOMID") + private String jsbomzxBomid; + + /** + * 子项ID 主键 + */ + @TableId("ID") + @TableField("ID") + private String id; + + /** + * 子项行号 + */ + @TableField("JSBOMZX_ZXHH") + private String jsbomzxZxhh; + + /** + * 标准工序 + */ + @TableField("JSBOMZX_BZGX") + private String jsbomzxBzgx; + + /** + * 子项类型 + */ + @TableField("JSBOMZX_ZXLX") + private String jsbomzxZxlx; + + /** + * 物料ID + */ + @TableField("JSBOMZX_WLID") + private String jsbomzxWlid; + + /** + * 物料编号(冗余) + */ + @TableField("JSBOMZX_WLBH") + private String jsbomzxWlbh; + + /** + * 物料图号(冗余) + */ + @TableField("JSBOMZX_WLTH") + private String jsbomzxWlth; + + /** + * 物料名称 + */ + @TableField("JSBOMZX_WLMC") + private String jsbomzxWlmc; + + /** + * 物料规格(冗余) + */ + @TableField("JSBOMZX_WLGG") + private String jsbomzxWlgg; + + /** + * 物料型号(冗余) + */ + @TableField("JSBOMZX_WLXH") + private String jsbomzxWlxh; + + /** + * 物料描述 + */ + @TableField("JSBOMZX_WLMS") + private String jsbomzxWlms; + + /** + * 物料BOMID + */ + @TableField("JSBOMZX_WLBOMID") + private String jsbomzxWlbomid; + + /** + * 物料辅助信息ID + */ + @TableField("JSBOMZX_WLFZID") + private String jsbomzxWlfzid; + + /** + * 物料辅助信息描述 + */ + @TableField("JSBOMZX_WLFZMS") + private String jsbomzxWlfzms; + + /** + * 用量类型 + */ + @TableField("JSBOMZX_YLLX") + private String jsbomzxYllx; + + /** + * 子项数量 + */ + @TableField("JSBOMZX_ZXSL") + private BigDecimal jsbomzxZxsl; + + /** + * 计量单位ID + */ + @TableField("JSBOMZX_JLDWID") + private String jsbomzxJldwid; + + /** + * 计量单位 + */ + @TableField("JSBOMZX_JLDW") + private String jsbomzxJldw; + + /** + * 辅子项数量 + */ + @TableField("JSBOMZX_FZXSL") + private BigDecimal jsbomzxFzxsl; + + /** + * 辅计量单位ID + */ + @TableField("JSBOMZX_FJLDWID") + private String jsbomzxFjldwid; + + /** + * 辅计量单位 + */ + @TableField("JSBOMZX_FJLDW") + private String jsbomzxFjldw; + + /** + * 固定损耗量 + */ + @TableField("JSBOMZX_GDSH") + private BigDecimal jsbomzxGdsh; + + /** + * 变动损耗率 + */ + @TableField("JSBOMZX_BDSH") + private BigDecimal jsbomzxBdsh; + + /** + * 偏置天数 + */ + @TableField("JSBOMZX_PZTS") + private Integer jsbomzxPzts; + + /** + * 替代物料行 + */ + @TableField("JSBOMZX_TDWL") + private Integer jsbomzxTdwl; + + /** + * 备注 + */ + @TableField("JSBOMZX_BZ") + private String jsbomzxBz; + + /** + * 供应商ID + */ + @TableField("JSBOMZX_GYSID") + private String jsbomzxGysid; + + /** + * 供应商编号 + */ + @TableField("JSBOMZX_GYSBH") + private String jsbomzxGysbh; + + /** + * BOM子项辅助信息ID + */ + @TableField("JSBOMZX_FZID") + private String jsbomzxFzid; + + /** + * BOM子项辅助信息描述 + */ + @TableField("JSBOMZX_FZMS") + private String jsbomzxFzms; + + /** + * 供应商 + */ + @TableField("JSBOMZX_GYSMC") + private String jsbomzxGysmc; + + /** + * 备件比例3 + */ + @TableField("JSBOMZX_BJBL3") + private BigDecimal jsbomzxBjbl3; + + /** + * 备件比例1 + */ + @TableField("JSBOMZX_BJBL1") + private BigDecimal jsbomzxBjbl1; + + /** + * 备件比例2 + */ + @TableField("JSBOMZX_BJBL2") + private BigDecimal jsbomzxBjbl2; + + /** + * 车间领料 + */ + @TableField("JSBOMZX_SFCJLL") + private String jsbomzxSfcjll; + +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderEntity.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderEntity.java new file mode 100644 index 0000000..eac4316 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderEntity.java @@ -0,0 +1,21 @@ +package com.lideeyunji.core.framework.entity.erp; + +import lombok.Data; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class ArrivalOrderEntity { + // 1. 表头信息 + private String arrivalNo; // 到货单号 + private String saleOrderNo; // 销售订单号 + private String businessType; // 业务类型 + private String supplierName; // 供应商 + private String supplierCode; // 供应商编码 + private String createBy; // 创建人 + private LocalDateTime createTime;// 创建时间 + private String updateBy; // 更新人 + private LocalDateTime updateTime;// 更新时间 + + private List itemList; +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderItemEntity.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderItemEntity.java new file mode 100644 index 0000000..e965359 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/entity/erp/ArrivalOrderItemEntity.java @@ -0,0 +1,15 @@ +package com.lideeyunji.core.framework.entity.erp; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ArrivalOrderItemEntity { + private Long arrivalNoticeId; // 到货通知单ID + private Integer lineNo; // 子项行号 + private Long materialId; // 物料ID + private String materialCode; // 物料编码 + private BigDecimal checkQty; // 请检数量 + private String unit; // 计量单位 +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/BomMaterialBackUpMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/BomMaterialBackUpMapper.java new file mode 100644 index 0000000..cc082c9 --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/BomMaterialBackUpMapper.java @@ -0,0 +1,20 @@ +package com.lideeyunji.core.framework.mapper.bom; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lideeyunji.core.framework.entity.bom.CappIntegrationPbomTable; +import com.lideeyunji.core.framework.entity.bom.CopyJsbomEntity; +import com.lideeyunji.core.framework.entity.bom.JsbomBackUpEntity; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * bom物料 Mapper 接口 + * + * @since 2026-04-11 + */ +@Mapper +@DS("erp_dev") +public interface BomMaterialBackUpMapper extends BaseMapper { +} diff --git a/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/JsbomzxBackUpMapper.java b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/JsbomzxBackUpMapper.java new file mode 100644 index 0000000..71867cb --- /dev/null +++ b/lidee-core/src/main/java/com/lideeyunji/core/framework/mapper/bom/JsbomzxBackUpMapper.java @@ -0,0 +1,13 @@ + +package com.lideeyunji.core.framework.mapper.bom; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lideeyunji.core.framework.entity.bom.CopyJsbomzxEntity; +import com.lideeyunji.core.framework.entity.bom.JsbomzxBackUpEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +@DS("erp_dev") +public interface JsbomzxBackUpMapper extends BaseMapper { +} 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 430d8d0..b75da44 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 @@ -58,6 +58,10 @@ public class BomMaterialServiceImpl extends ServiceImpl().eq(ErpMaterialExtendEntity::getMaterialId, existData.getId())); -// copyMaterialExtendMapper.update(copyMaterialExtendEntity, new LambdaUpdateWrapper().eq(CopyMaterialExtendEntity::getMaterialId, existData.getId())); -// log.debug("修改bom物料信息: {}", data.getCcode()); -// } try { if (jsbom != null) { + JsbomBackUpEntity jsbomBackUpEntity = new JsbomBackUpEntity(); + BeanUtils.copyProperties(jsbom, jsbomBackUpEntity); updateBomMain(jsbom, data, copyJsbomEntity); - jsbom.setJsbomCpid(existData!=null?existData.getId():null); + jsbom.setJsbomCpid(existData != null ? existData.getId() : null); baseMapper.updateById(jsbom); copyBomMaterialMapper.updateById(copyJsbomEntity); + int i = bomMaterialBackUpMapper.updateById(jsbomBackUpEntity); + if (i == 0) + bomMaterialBackUpMapper.insert(jsbomBackUpEntity); log.debug("更新BOM主表,产品编号: {}, 版本: {}", data.getCcode(), data.getCversion()); return 2; } else { JsbomEntity newJsbom = createBomMain(data); - newJsbom.setJsbomCpid(existData!=null?existData.getId():null); + newJsbom.setJsbomCpid(existData != null ? existData.getId() : null); baseMapper.insert(newJsbom); BeanUtils.copyProperties(newJsbom, copyJsbomEntity); copyBomMaterialMapper.insert(copyJsbomEntity); @@ -460,10 +458,16 @@ public class BomMaterialServiceImpl extends ServiceImpl