feat(bom): 新增BOM管理功能和到货通知任务
- 添加WarehouseNotificationJob定时任务处理到货通知 - 创建JsbomBackUpEntity和JsbomzxBackUpEntity实体类用于BOM备份 - 添加ArrivalOrderEntity和ArrivalOrderItemEntity实体类用于到货订单 - 创建BomMaterialBackUpMapper和JsbomzxBackUpMapper数据访问接口 - 配置application-local.yaml和application-prod.yaml中的销售系统相关URL - 更新达梦数据库连接配置和Redis密码设置
This commit is contained in:
@@ -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增量
|
||||
|
||||
|
||||
@@ -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增量
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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; // 计量单位
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user