feat(bom): 新增BOM管理功能和到货通知任务

- 添加WarehouseNotificationJob定时任务处理到货通知
- 创建JsbomBackUpEntity和JsbomzxBackUpEntity实体类用于BOM备份
- 添加ArrivalOrderEntity和ArrivalOrderItemEntity实体类用于到货订单
- 创建BomMaterialBackUpMapper和JsbomzxBackUpMapper数据访问接口
- 配置application-local.yaml和application-prod.yaml中的销售系统相关URL
- 更新达梦数据库连接配置和Redis密码设置
This commit is contained in:
Gjm
2026-05-12 09:10:25 +08:00
parent 07a242dc45
commit 656b0995f4
12 changed files with 868 additions and 25 deletions

View File

@@ -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增量

View File

@@ -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 # 物料换算率全量
@@ -92,3 +114,7 @@ material:
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增量

View File

@@ -104,6 +104,17 @@
<version>2.0.32</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<ArrivalOrderItemEntity> itemList;
}

View File

@@ -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; // 计量单位
}

View File

@@ -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<JsbomBackUpEntity> {
}

View File

@@ -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<JsbomzxBackUpEntity> {
}

View File

@@ -58,6 +58,10 @@ public class BomMaterialServiceImpl extends ServiceImpl<BomMaterialMapper, Jsbom
private JsbomzxMapper jsbomzxMapper;
@Resource
private CopyJsbomzxMapper copyJsbomzxMapper;
@Resource
private JsbomzxBackUpMapper jsbomzxBackUpMapper;
@Resource
private BomMaterialBackUpMapper bomMaterialBackUpMapper;
@Value("${bom.bfMaterials}")
private String bfMaterials;
@@ -310,29 +314,23 @@ public class BomMaterialServiceImpl extends ServiceImpl<BomMaterialMapper, Jsbom
.eq(JsbomEntity::getJsbomCpbh, data.getCcode())
.eq(JsbomEntity::getJsbomBombb, data.getCversion())
);
ErpMaterialExtendEntity erpMaterialExtendEntity = new ErpMaterialExtendEntity();
CopyJsbomEntity copyJsbomEntity = new CopyJsbomEntity();
CopyMaterialExtendEntity copyMaterialExtendEntity = new CopyMaterialExtendEntity();
// if (existData != null) {
// this.handle(copyMaterialExtendEntity, data);
// BeanUtils.copyProperties(copyMaterialExtendEntity, erpMaterialExtendEntity);
// erpMaterialExtendEntity.setMaterialId(existData.getId());
//
// erpMaterialExtendMapper.update(erpMaterialExtendEntity, new LambdaUpdateWrapper<ErpMaterialExtendEntity>().eq(ErpMaterialExtendEntity::getMaterialId, existData.getId()));
// copyMaterialExtendMapper.update(copyMaterialExtendEntity, new LambdaUpdateWrapper<CopyMaterialExtendEntity>().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<BomMaterialMapper, Jsbom
try {
if (jsbomzxEntity != null) {
JsbomzxBackUpEntity jsbomzxBackUpEntity = new JsbomzxBackUpEntity();
BeanUtils.copyProperties(jsbomzxEntity, jsbomzxBackUpEntity);
updateBomLinkFields(jsbomzxEntity, data);
BeanUtils.copyProperties(jsbomzxEntity, copyJsbomzxEntity);
copyJsbomzxMapper.updateById(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());
return 2;
} else {

View File

@@ -0,0 +1,55 @@
package com.lideeyunji.core.framework.utils;
import com.alibaba.fastjson.JSON;
import com.google.zxing.*;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import org.springframework.stereotype.Component;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.Base64;
import java.io.ByteArrayOutputStream;
@Component
public class QrCodeUtil {
private static final int WIDTH = 350; // 二维码宽
private static final int HEIGHT = 350; // 二维码高
private static final String FORMAT = "PNG";
/**
* 生成二维码 → 保存到本地
*/
public static void generateQrToFile(Object data, String filePath) throws Exception {
// 1. 转 JSON把整个到货单+明细存进去)
String jsonContent = JSON.toJSONString(data);
// 2. 生成二维码
QRCodeWriter writer = new QRCodeWriter();
BitMatrix matrix = writer.encode(
jsonContent,
BarcodeFormat.QR_CODE,
WIDTH, HEIGHT
);
// 3. 保存图片
Path path = FileSystems.getDefault().getPath(filePath);
MatrixToImageWriter.writeToPath(matrix, FORMAT, path);
}
/**
* 生成二维码 → 返回 Base64前端直接用
*/
public static String generateQrToBase64(Object data) throws Exception {
String jsonContent = JSON.toJSONString(data);
QRCodeWriter writer = new QRCodeWriter();
BitMatrix matrix = writer.encode(jsonContent, BarcodeFormat.QR_CODE, WIDTH, HEIGHT);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(matrix, FORMAT, outputStream);
return Base64.getEncoder().encodeToString(outputStream.toByteArray());
}
}