From 94c8ae8a9f13e3e564f0e4d9c85351a959af4f59 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Tue, 7 Apr 2026 10:10:03 +0800 Subject: [PATCH] =?UTF-8?q?2026-04-07=20pda=E7=94=9F=E4=BA=A7=E9=A2=86?= =?UTF-8?q?=E6=96=99=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0=E3=80=90=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3=E3=80=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/PartDetailsService.java | 8 +++++ .../service/impl/PartDetailsServiceImpl.java | 34 +++++++++++++++++++ .../ProductionPickingController.java | 31 +++++++++++++++++ .../service/ProductionPickingService.java | 6 ++++ .../impl/ProductionPickingServiceImpl.java | 18 ++++++++++ 5 files changed, 97 insertions(+) diff --git a/src/main/java/com/gaotao/modules/common/service/PartDetailsService.java b/src/main/java/com/gaotao/modules/common/service/PartDetailsService.java index 0da5ce1..75b15a1 100644 --- a/src/main/java/com/gaotao/modules/common/service/PartDetailsService.java +++ b/src/main/java/com/gaotao/modules/common/service/PartDetailsService.java @@ -21,5 +21,13 @@ public interface PartDetailsService { */ List> getPartDetails(String site, String buNo, String notifyNo, String notifyType, String warehouseId, String relatedOrderNo); + + /** + * BOM 替代料清单(存储过程 GetBomAlternativePartDetails) + * @param partNo 被替代的物料编码 + */ + List> getBomAlternativePartDetails(String site, String buNo, String notifyNo, + String notifyType, String warehouseId, + String relatedOrderNo, String partNo); } diff --git a/src/main/java/com/gaotao/modules/common/service/impl/PartDetailsServiceImpl.java b/src/main/java/com/gaotao/modules/common/service/impl/PartDetailsServiceImpl.java index 58c0869..2a88c92 100644 --- a/src/main/java/com/gaotao/modules/common/service/impl/PartDetailsServiceImpl.java +++ b/src/main/java/com/gaotao/modules/common/service/impl/PartDetailsServiceImpl.java @@ -67,5 +67,39 @@ public class PartDetailsServiceImpl implements PartDetailsService { throw new RuntimeException("获取物料清单失败: " + e.getMessage(), e); } } + + /** + * 获取 BOM 替代料清单(存储过程 GetBomAlternativePartDetails) + */ + @Override + public List> getBomAlternativePartDetails(String site, String buNo, String notifyNo, + String notifyType, String warehouseId, + String relatedOrderNo, String partNo) { + logger.info("调用存储过程GetBomAlternativePartDetails,site: {}, buNo: {}, notifyNo: {}, notifyType: {}, warehouseId: {}, relatedOrderNo: {}, partNo: {}", + site, buNo, notifyNo, notifyType, warehouseId, relatedOrderNo, partNo); + + try { + List params = new ArrayList<>(); + params.add(site != null ? site : ""); + params.add(buNo != null ? buNo : ""); + params.add(notifyNo != null ? notifyNo : ""); + params.add(notifyType != null ? notifyType : ""); + params.add(warehouseId != null ? warehouseId : ""); + params.add(relatedOrderNo != null ? relatedOrderNo : ""); + params.add(partNo != null ? partNo : ""); + + List> resultList = procedureMapper.getProcedureData("GetBomAlternativePartDetails", params); + + if (resultList == null) { + resultList = new ArrayList<>(); + } + + logger.info("获取替代料清单成功,notifyNo: {}, partNo: {}, 记录数: {}", notifyNo, partNo, resultList.size()); + return resultList; + } catch (Exception e) { + logger.error("获取替代料清单失败,notifyNo: {}, partNo: {}, 错误: {}", notifyNo, partNo, e.getMessage(), e); + throw new RuntimeException("获取替代料清单失败: " + e.getMessage(), e); + } + } } diff --git a/src/main/java/com/gaotao/modules/productionPicking/controller/ProductionPickingController.java b/src/main/java/com/gaotao/modules/productionPicking/controller/ProductionPickingController.java index 0e0044f..4031deb 100644 --- a/src/main/java/com/gaotao/modules/productionPicking/controller/ProductionPickingController.java +++ b/src/main/java/com/gaotao/modules/productionPicking/controller/ProductionPickingController.java @@ -191,6 +191,37 @@ public class ProductionPickingController { } } + /** + * 获取 BOM 替代料清单(存储过程 GetBomAlternativePartDetails) + */ + @PostMapping("/outbound/bomAlternativePartDetails") + @ApiOperation("获取生产领料 BOM 替代料清单") + public R getBomAlternativePartDetails(@RequestBody Map params) { + try { + String site = (String) params.get("site"); + String buNo = (String) params.get("buNo"); + String outboundNo = (String) params.get("outboundNo"); + String warehouseId = (String) params.get("warehouseId"); + String relatedNo = (String) params.get("relatedNo"); + String partNo = (String) params.get("partNo"); + + if (outboundNo == null || outboundNo.trim().isEmpty()) { + return R.error("出库单号不能为空"); + } + if (partNo == null || partNo.trim().isEmpty()) { + return R.error("物料编码不能为空"); + } + + logger.info("获取替代料清单,出库单号: {}, partNo: {}", outboundNo, partNo); + List> list = productionPickingService.getBomAlternativePartDetails( + site, buNo, outboundNo, warehouseId, relatedNo, partNo); + return R.ok().put("data", list); + } catch (Exception e) { + logger.error("获取替代料清单失败", e); + return R.error("获取替代料清单失败: " + e.getMessage()); + } + } + /** * 获取出库单物料明细列表 */ diff --git a/src/main/java/com/gaotao/modules/productionPicking/service/ProductionPickingService.java b/src/main/java/com/gaotao/modules/productionPicking/service/ProductionPickingService.java index 063fd4e..3393cdc 100644 --- a/src/main/java/com/gaotao/modules/productionPicking/service/ProductionPickingService.java +++ b/src/main/java/com/gaotao/modules/productionPicking/service/ProductionPickingService.java @@ -52,6 +52,12 @@ public interface ProductionPickingService { */ List> getMaterialList(String site, String buNo, String outboundNo, String warehouseId, String relatedNo); + /** + * 获取指定物料的 BOM 替代料清单(存储过程 GetBomAlternativePartDetails) + */ + List> getBomAlternativePartDetails(String site, String buNo, String outboundNo, + String warehouseId, String relatedNo, String partNo); + /** * 获取出库单物料明细列表 */ diff --git a/src/main/java/com/gaotao/modules/productionPicking/service/impl/ProductionPickingServiceImpl.java b/src/main/java/com/gaotao/modules/productionPicking/service/impl/ProductionPickingServiceImpl.java index 808de33..32a8afa 100644 --- a/src/main/java/com/gaotao/modules/productionPicking/service/impl/ProductionPickingServiceImpl.java +++ b/src/main/java/com/gaotao/modules/productionPicking/service/impl/ProductionPickingServiceImpl.java @@ -232,6 +232,24 @@ public class ProductionPickingServiceImpl implements ProductionPickingService { } } + @Override + public List> getBomAlternativePartDetails(String site, String buNo, String outboundNo, + String warehouseId, String relatedNo, String partNo) { + logger.info("获取替代料清单,站点: {}, 业务单元: {}, 出库单号: {}, 仓库: {}, 关联单号: {}, 物料: {}", + site, buNo, outboundNo, warehouseId, relatedNo, partNo); + try { + List> list = partDetailsService.getBomAlternativePartDetails( + site, buNo, outboundNo, "生产领料-替代料", warehouseId, relatedNo, partNo); + if (list == null) { + list = new ArrayList<>(); + } + return list; + } catch (Exception e) { + logger.error("获取替代料清单失败,出库单号: {}, partNo: {}, 错误: {}", outboundNo, partNo, e.getMessage(), e); + throw new RuntimeException("获取替代料清单失败: " + e.getMessage(), e); + } + } + /** * 更新库存状态 */