From 272555b84cf5b7c3e8d12d9e7c9fcf83489952ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 10 Sep 2025 18:09:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InCostCenterBackController.java | 16 +- .../controller/InProduceOrderController.java | 10 -- .../controller/OutPurchaseController.java | 2 +- .../StructuralPackageController.java | 8 + .../StructuralPackageOrderController.java | 5 +- .../nflg/wms/admin/service/SapService.java | 32 ++-- .../StructuralPackageControllerService.java | 16 +- .../resources/template/StructuralPackage.html | 78 --------- .../template/成本中心退料单.html | 2 +- .../template/配件销售发货清单.html | 151 ++++++++++++++++++ .../template/钢构件老鼠图.html | 141 ++++++++++++++++ .../pojo/vo/InCostcenterBackInfoItemVO.java | 2 + .../pojo/vo/InCostcenterBackItemVO.java | 71 ++++++++ .../common/pojo/vo/InCostcenterBackVO.java | 20 +-- .../wms/common/pojo/vo/ZWM3A05ItemVO.java | 5 + .../WmsInCostcenterBackTicketItemMapper.xml | 2 +- .../WmsInCostcenterBackTicketMapper.xml | 4 +- 17 files changed, 429 insertions(+), 136 deletions(-) delete mode 100644 nflg-wms-admin/src/main/resources/template/StructuralPackage.html create mode 100644 nflg-wms-admin/src/main/resources/template/配件销售发货清单.html create mode 100644 nflg-wms-admin/src/main/resources/template/钢构件老鼠图.html create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackItemVO.java diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java index 453addee..fa00a5de 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java @@ -308,19 +308,10 @@ public class InCostCenterBackController extends BaseController { InCostcenterBackInfoVO vo = inCostcenterBackTicketService.getInfo(id); VUtil.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("入库单不存在"); vo.setItems(Convert.toList(InCostcenterBackInfoItemVO.class, inCostcenterBackTicketItemService.getList(id))); + vo.getItems().forEach(item -> item.setLgort(vo.getLgort())); return ApiResult.success(vo); } - /** - * 获取入库单扫码记录 - * @param ticketItemId 入库单项ID - * @return 扫码记录 - */ - @GetMapping("getScanRecords") - public ApiResult> getScanRecords(@Valid @RequestParam @NotNull Long ticketItemId) { - return ApiResult.success(inMaterialScanRecordRespository.findByTicketItemId(ticketItemId)); - } - /** * 导出退料单 */ @@ -355,20 +346,21 @@ public class InCostCenterBackController extends BaseController { InCostcenterBackInfoVO order = inCostcenterBackTicketService.getInfo(id); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("退料入库单不存在"); order.setNo(order.getTicketNo()); - List list = inCostcenterBackTicketItemService.getList(id); + List list = Convert.toList(InCostcenterBackItemVO.class, inCostcenterBackTicketItemService.getList(id)); // InCostcenterBackInfoVO order = new InCostcenterBackInfoVO(); // order.setNo(NoUtil.getOutCostcenterNo()); // List list = new ArrayList<>(); // for (int i = 0, count = RandomUtil.randomInt(1, 100); i < count; i++) { // list.add(new WmsInCostcenterBackItem().setMatnr(RandomUtil.randomNumbers(11)).setMaktx("非金属联件和紧固件等 M6 DIN 982 不锈钢304")); // } + list.forEach(item -> item.setLgort(order.getLgort())); Map base = new HashMap<>(); base.put("date", DateUtil.format(LocalDateTime.now(), "yyyy-MM-dd")); base.put("qrcode", QRCodeUtil.generateQRCodeBase64(order.getNo(), 100, 100)); Map variables = new HashMap<>(); variables.put("info", order); variables.put("base", base); - variables.put("pages", PdfPageDTO.create(list, 17, new WmsInCostcenterBackItem())); + variables.put("pages", PdfPageDTO.create(list, 17, new InCostcenterBackItemVO())); String html = ThymeleafUtil.generator("/template/", "成本中心退料单", ".html", variables); PdfGeneratorUtil.generatePdf("成本中心退料入库单" + order.getNo(), html, response); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java index 0876ad60..679f43b0 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -228,16 +228,6 @@ public class InProduceOrderController extends BaseController { return ApiResult.success(vo); } - /** - * 获取入库单扫码记录 - * @param itemId 项ID - * @return 扫码记录 - */ - @GetMapping("getScanRecords") - public ApiResult> getScanRecords(@Valid @RequestParam @NotNull Long itemId) { - return ApiResult.success(inMaterialScanRecordRespository.findByTicketItemId(itemId)); - } - /** * 删除 * @param id 订单ID diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java index 4e9e9042..c98ce55d 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutPurchaseController.java @@ -132,7 +132,7 @@ public class OutPurchaseController extends BaseController { .setEbelp(it.getEbelp()) .setRetpo(it.getRetpo()) .setMatnr(it.getMatnr()) - .setMaktx("") + .setMaktx(it.getMaktx()) .setErfmg(it.getNum()) .setMeins(it.getMeins()) .setCharg(it.getCharg()) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java index 4a7eefdf..01825154 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageController.java @@ -137,5 +137,13 @@ public class StructuralPackageController extends BaseController { public ApiResult exportPdf(@Valid @RequestParam @NotNull Long id) throws Exception { return ApiResult.success(packageControllerService.exportPdf(id)); } +// +// /** +// * 导出老鼠图PDF +// */ +// @GetMapping("exportPdf") +// public void exportPdf(HttpServletResponse response,@Valid @RequestParam @NotNull Long id) throws Exception { +// packageControllerService.exportPdf1(response,id); +// } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java index c9d0f6ee..1eeb44b8 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java @@ -14,6 +14,7 @@ import cn.idev.excel.metadata.data.WriteCellData; import cn.idev.excel.write.metadata.WriteSheet; import cn.idev.excel.write.metadata.fill.FillConfig; import com.nflg.wms.admin.pojo.document.PackageMaterialScanRecord; +import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; import com.nflg.wms.admin.repository.PackageMaterialScanRecordRepository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; @@ -425,8 +426,8 @@ public class StructuralPackageOrderController extends BaseController { ).toList(); Map variables = new HashMap<>(); variables.put("info", vo); - variables.put("list", items); - String html = ThymeleafUtil.generator("/template/", "StructuralPackage", ".html", variables); + variables.put("pages", PdfPageDTO.create(items, 9, new PackageMaterialDTO())); + String html = ThymeleafUtil.generator("/template/", "钢构件老鼠图", ".html", variables); // PdfGeneratorUtil.generatePdf(vo.getExternalOrderNo() + "-" + vo.getWorkbenchCode() + "老鼠图", html, response); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PdfGeneratorUtil.generatePdf(vo.getExternalOrderNo() + "-" + vo.getWorkbenchCode() + "老鼠图", html, outputStream); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java index ae3789bf..f2bc451a 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java @@ -421,24 +421,22 @@ public class SapService { // 调用 SAP RFC 函数 ZWM00_MB112 JCoFunction function = exec("ZWM00_MB112", parameters, tables); - // 处理返回表 T_RETURN,判断执行是否成功 - JCoTable returnTable = function.getTableParameterList().getTable("T_RETURN"); - log.info("SAP返回: {}", returnTable); - VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("SAP未返回结果状态"); + JCoParameterList parameterList = function.getExportParameterList(); + if (StrUtil.isBlank(parameterList.getString("E_MBLNR"))) { + JCoTable returnTable = function.getTableParameterList().getTable("T_RETURN"); + VUtil.trueThrowBusinessError(returnTable.getNumRows() <= 0).throwMessage("SAP未返回结果状态"); + returnTable.setRow(0); + VUtil.trueThrowBusinessError(StrUtil.equals(returnTable.getString("TYPE"), "E")) + .throwMessage(returnTable.getString("MESSAGE")); + return null; + } else { + C_MaterialReturnDTO result = new C_MaterialReturnDTO() + .setEMblnr(parameterList.getString("E_MBLNR")) + .setEMJahr(parameterList.getString("E_MJAHR")); - returnTable.setRow(0); - VUtil.trueThrowBusinessError(StrUtil.equals(returnTable.getString("TYPE"), "E")) - .throwMessage(returnTable.getString("MESSAGE")); - - // 获取导出参数,构造返回结果对象 - JCoParameterList exportParam = function.getExportParameterList(); - VUtil.trueThrowBusinessError(Objects.isNull(exportParam)).throwMessage("无法获取到有效的物料凭证信息"); - C_MaterialReturnDTO result = new C_MaterialReturnDTO() - .setEMblnr(exportParam.getString("E_MBLNR")) - .setEMJahr(exportParam.getString("E_MJAHR")); - - log.info("SAP返回物料凭证信息: MBLNR={}, MJAHR={}", result.getEMblnr(), result.getEMJahr()); - return result; + log.info("SAP返回物料凭证信息: MBLNR={}, MJAHR={}", result.getEMblnr(), result.getEMJahr()); + return result; + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java index f9e3d871..6e97bddc 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.nflg.wms.admin.pojo.dto.PdfPageDTO; import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO; import com.nflg.wms.admin.util.PdfGeneratorUtil; @@ -409,14 +410,25 @@ public class StructuralPackageControllerService { vo.setQrCode(QRCodeUtil.generateQRCodeBase64(vo.getNo(), 100, 100)); Map variables = new HashMap<>(); variables.put("info", vo); - variables.put("list", vo.getMaterialList()); - String html = ThymeleafUtil.generator("/template/", "StructuralPackage", ".html", variables); + variables.put("pages", PdfPageDTO.create(vo.getMaterialList(), 9, new PackageMaterialDTO())); + String html = ThymeleafUtil.generator("/template/", "钢构件老鼠图", ".html", variables); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); PdfGeneratorUtil.generatePdf(vo.getNo() + "老鼠图", html, outputStream); InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); return fileUploadService.upload("tmp/sp/" + RandomUtil.randomString(10) + ".pdf", inputStream); } +// public void exportPdf1(HttpServletResponse response,@Valid @NotNull Long id) throws Exception { +// PackageVO vo = packageService.getInfo(id); +// VUtil.trueThrowBusinessError(Objects.isNull(vo)).throwMessage("数据不存在"); +// vo.setQrCode(QRCodeUtil.generateQRCodeBase64(vo.getNo(), 100, 100)); +// Map variables = new HashMap<>(); +// variables.put("info", vo); +// variables.put("pages", PdfPageDTO.create(vo.getMaterialList(), 9, new PackageMaterialDTO())); +// String html = ThymeleafUtil.generator("/template/", "钢构件老鼠图", ".html", variables); +// PdfGeneratorUtil.generatePdf(vo.getNo() + "老鼠图", html, response); +// } + @Transactional public void materialStorage(List list, List items) { items.forEach(this::syncStorage); diff --git a/nflg-wms-admin/src/main/resources/template/StructuralPackage.html b/nflg-wms-admin/src/main/resources/template/StructuralPackage.html deleted file mode 100644 index 41fc0fd4..00000000 --- a/nflg-wms-admin/src/main/resources/template/StructuralPackage.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - 钢构包 - - - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - -
订单号:行号:托盘号:供应商: - -
机型:版本:机台号:种类:重量:
物料号:图号:物料描述:页码:
-
- - -
- - - - - - - - - - - - - - - -
SAP编码:图号:
物料描述:
数量:重量:
-
-
- - - \ No newline at end of file diff --git a/nflg-wms-admin/src/main/resources/template/成本中心退料单.html b/nflg-wms-admin/src/main/resources/template/成本中心退料单.html index f11ba37c..876f7c4d 100644 --- a/nflg-wms-admin/src/main/resources/template/成本中心退料单.html +++ b/nflg-wms-admin/src/main/resources/template/成本中心退料单.html @@ -177,7 +177,7 @@ 序号 物料号 非金属联件和紧固件等 M6 DIN 982 不锈钢304 - 收料库 + 收料库 物料组 单位 1000.00 diff --git a/nflg-wms-admin/src/main/resources/template/配件销售发货清单.html b/nflg-wms-admin/src/main/resources/template/配件销售发货清单.html new file mode 100644 index 00000000..80d844e0 --- /dev/null +++ b/nflg-wms-admin/src/main/resources/template/配件销售发货清单.html @@ -0,0 +1,151 @@ + + + + + + 发货清单 + + + +
+
+
发货清单
+
+
+
ZL-4.15(3-04)
+
福建南方路面机械股份有限公司
+
装车号:V01
+
001
+
+
+
订单号
+
1172000
+
发货员
+
程慧芳
+
办事处/代理商
+
测试
+
发货日期
+
2025-08-04
+
发运方式
+
 
+
+
+
设备编码
+
22222222222
+
收货人电话
+
于文强18365529799
+
货单号
+
0000
+
+
+
收货单位
+
安徽华恒创远新材料有限责任公司
+
签收人/电话
+
于文强18365529799
+
+
+
收货地址
+
安徽华恒创远新材料有限责任公司
+
收货日期
+
2025-08-04
+
+
+
司机
+
于文强
+
驾驶证
+
51254685465465465
+
车牌号
+
粤A12345
+
司机电话
+
18888888888
+
+
+
序号
+
配件编码
+
配件名称
+
货位号
+
单位
+
数量
+
备注
+
+
+
1
+
2100552783
+
IH1213T.4 衬板6号
+
E1-4-4
+
PC
+
20.000
+
 
+
+
+
 
+
 
+
 
+
 
+
 
+
 
+
 
+
+
+ + \ No newline at end of file diff --git a/nflg-wms-admin/src/main/resources/template/钢构件老鼠图.html b/nflg-wms-admin/src/main/resources/template/钢构件老鼠图.html new file mode 100644 index 00000000..8ddfa02d --- /dev/null +++ b/nflg-wms-admin/src/main/resources/template/钢构件老鼠图.html @@ -0,0 +1,141 @@ + + + + + + + 钢构件老鼠图 + + + +
+ + + + + + + + + + + + + + + + + + + + +
订单号:12255665451615行号:1111托盘号:1111供应商:1111 + +
机型:12255665451615版本:1机台号:1种类:1总重:348.41
物料号:2222222222 图号:12255665451615 描述:12255665451615 + 页码:1/2
+
+
+
+ +
+
+
SAP编码:2222222222 图号:12255665451615
+
名称:2222222222
+
数量:1    重量:348.41
+
+
+ + \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackInfoItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackInfoItemVO.java index c25e6adc..a0b251c3 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackInfoItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackInfoItemVO.java @@ -68,4 +68,6 @@ public class InCostcenterBackInfoItemVO { * 待退数量 */ private BigDecimal left; + + private String codeNum = "点击查看"; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackItemVO.java new file mode 100644 index 00000000..0864e171 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackItemVO.java @@ -0,0 +1,71 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class InCostcenterBackItemVO { + + private Long id; + + /** + * 订单id + */ + private Long orderId; + + /** + * 物料组 + */ + private String matkl; + + /** + * 物料号 + */ + private String matnr; + + /** + * 物料描述 + */ + private String maktx; + + /** + * 需求量 + */ + private BigDecimal bdmng; + + /** + * 基本计量单位 + */ + private String meins; + + /** + * 库存地点 + */ + private String lgort; + + /** + * 库存仓位 + */ + private String lgpbe; + + /** + * 项目文本 + */ + private String sgtxt; + + /** + * 退料数量 + */ + private BigDecimal num; + + /** + * 待退数量 + */ + private BigDecimal left; + + /** + * 预留/相关需求的项目编号 + */ + private String rspos; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackVO.java index 6a2f831f..3905dbca 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/InCostcenterBackVO.java @@ -89,18 +89,18 @@ public class InCostcenterBackVO { */ private LocalDateTime updateTime; - /** - * SAP 同步成功或失败 - */ - private Boolean sapStatus; - - /** - * SAP同步失败原因 - */ - private String sapError; - /** * 状态,0:待上架;1:上架中;2:已上架 */ private Integer state; + + /** + * 物料凭证编号 + */ + private String matDoc; + + /** + * 物料凭证年度 + */ + private String docYear; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ZWM3A05ItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ZWM3A05ItemVO.java index 04cd6e0a..c1fed26f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ZWM3A05ItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ZWM3A05ItemVO.java @@ -43,6 +43,11 @@ public class ZWM3A05ItemVO { */ private String matnr; + /** + * 物料描述(短文本) + */ + private String maktx; + /** * 批号 */ diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsInCostcenterBackTicketItemMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsInCostcenterBackTicketItemMapper.xml index 8fe9c50e..7682b241 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsInCostcenterBackTicketItemMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsInCostcenterBackTicketItemMapper.xml @@ -3,7 +3,7 @@ - SELECT icbt.id,icbt."no" AS "ticket_no",icbt.create_by,icbt.create_time,icb.* + SELECT icbt.id,icbt."no" AS "ticket_no",icbt.create_by,icbt.create_time,icbt.lgort,icb.* FROM wms_in_costcenter_back_ticket icbt INNER JOIN wms_in_costcenter_back icb ON icbt.order_id=icb."id" WHERE icbt."id"=#{id}