diff --git a/src/main/java/com/gaotao/modules/inboundNotification/controller/InboundNotificationController.java b/src/main/java/com/gaotao/modules/inboundNotification/controller/InboundNotificationController.java index a49b46d..6edb765 100644 --- a/src/main/java/com/gaotao/modules/inboundNotification/controller/InboundNotificationController.java +++ b/src/main/java/com/gaotao/modules/inboundNotification/controller/InboundNotificationController.java @@ -87,8 +87,11 @@ public class InboundNotificationController extends AbstractController { return R.error("仓库ID不能为空"); } + String relatedOrderNo = (String) params.get("relatedOrderNo"); + String relatedOrderLineNo = (String) params.get("relatedOrderLineNo"); + Map result = inboundNotificationService.getInboundDetails( - inboundNo, warehouseId,site,buNo); + inboundNo, warehouseId, site, buNo, relatedOrderNo, relatedOrderLineNo); if (result == null || result.isEmpty()) { return R.error("未找到入库单详情"); @@ -134,9 +137,12 @@ public class InboundNotificationController extends AbstractController { return R.error("操作类型不能为空"); } + String relatedOrderNo = (String) params.get("relatedOrderNo"); + String relatedOrderLineNo = (String) params.get("relatedOrderLineNo"); + String userName = getUser().getUsername(); Map result = inboundNotificationService.validateLabelWithInbound( - site, buNo, inboundNo, labelCode, operationType, userName, warehouseId); + site, buNo, inboundNo, labelCode, operationType, userName, warehouseId, relatedOrderNo, relatedOrderLineNo); return R.ok().put("data", result); } catch (Exception e) { logger.error("标签验证失败", e); @@ -155,6 +161,8 @@ public class InboundNotificationController extends AbstractController { String locationCode = (String) params.get("locationCode"); String site = (String) params.get("site"); String buNo = (String) params.get("buNo"); + String relatedOrderNo = (String) params.get("relatedOrderNo"); + String relatedOrderLineNo = (String) params.get("relatedOrderLineNo"); if (inboundNo == null || inboundNo.trim().isEmpty()) { return R.error("入库单号不能为空"); @@ -171,7 +179,7 @@ public class InboundNotificationController extends AbstractController { String userName = getUser().getUsername(); boolean success = inboundNotificationService.confirmInboundStorage( - site, buNo, inboundNo, locationCode, userName); + site, buNo, inboundNo, locationCode, userName, relatedOrderNo, relatedOrderLineNo); if (success) { return R.ok("上架成功"); } else { @@ -312,6 +320,38 @@ public class InboundNotificationController extends AbstractController { } } + /** + * 获取采购入库通知单明细列表(小卡片) + * 返回关联单号和行号等信息 + */ + @PostMapping("getInboundNotificationDetails") + public R getInboundNotificationDetails(@RequestBody Map params) { + try { + String site = (String) params.get("site"); + String buNo = (String) params.get("buNo"); + String orderNo = (String) params.get("orderNo"); + + if (site == null || site.trim().isEmpty()) { + return R.error("站点不能为空"); + } + + if (buNo == null || buNo.trim().isEmpty()) { + return R.error("业务单元不能为空"); + } + + if (orderNo == null || orderNo.trim().isEmpty()) { + return R.error("入库单号不能为空"); + } + + List> detailList = inboundNotificationService.getInboundNotificationDetails(site, buNo, orderNo); + + return R.ok().put("data", detailList); + } catch (Exception e) { + logger.error("获取采购入库通知单明细列表失败", e); + return R.error("获取采购入库通知单明细列表失败: " + e.getMessage()); + } + } + // =========================== PC =========================== diff --git a/src/main/java/com/gaotao/modules/inboundNotification/dao/InboundNotificationHeadMapper.java b/src/main/java/com/gaotao/modules/inboundNotification/dao/InboundNotificationHeadMapper.java index fd62a87..fe0bbff 100644 --- a/src/main/java/com/gaotao/modules/inboundNotification/dao/InboundNotificationHeadMapper.java +++ b/src/main/java/com/gaotao/modules/inboundNotification/dao/InboundNotificationHeadMapper.java @@ -32,12 +32,18 @@ public interface InboundNotificationHeadMapper extends BaseMapper getInboundDetails(@Param("orderNo") String orderNo, @Param("warehouseId") String warehouseId, @Param("site") String site, - @Param("buNo") String buNo); + @Param("buNo") String buNo, + @Param("relatedOrderNo") String relatedOrderNo, + @Param("relatedOrderLineNo") String relatedOrderLineNo); /** * 更新入库单状态 @@ -139,4 +145,15 @@ public interface InboundNotificationHeadMapper extends BaseMapper callUspImportRoll(Map params); + + /** + * 获取采购入库通知单明细列表(小卡片) + * @param site 站点 + * @param buNo 业务单元 + * @param orderNo 入库单号 + * @return 明细列表(包含关联单号和行号) + */ + List> getInboundNotificationDetails(@Param("site") String site, + @Param("buNo") String buNo, + @Param("orderNo") String orderNo); } diff --git a/src/main/java/com/gaotao/modules/inboundNotification/service/InboundNotificationService.java b/src/main/java/com/gaotao/modules/inboundNotification/service/InboundNotificationService.java index d61be38..0cd31f3 100644 --- a/src/main/java/com/gaotao/modules/inboundNotification/service/InboundNotificationService.java +++ b/src/main/java/com/gaotao/modules/inboundNotification/service/InboundNotificationService.java @@ -24,9 +24,13 @@ public interface InboundNotificationService { * 获取入库单详情 * @param orderNo 入库单号 * @param warehouseId 仓库ID + * @param site 站点 + * @param buNo 业务单元 + * @param relatedOrderNo 关联单号 + * @param relatedOrderLineNo 关联行号 * @return 入库单详情 */ - Map getInboundDetails(String orderNo, String warehouseId,String site, String buNo); + Map getInboundDetails(String orderNo, String warehouseId, String site, String buNo, String relatedOrderNo, String relatedOrderLineNo); /** * 验证标签与入库单是否匹配(通过存储过程) @@ -36,9 +40,12 @@ public interface InboundNotificationService { * @param labelCode 标签条码 * @param operationType 操作类型 I-添加 D-移除 * @param userName 当前登录人 + * @param warehouseId 仓库ID + * @param relatedOrderNo 关联单号 + * @param relatedOrderLineNo 关联行号 * @return 标签信息 */ - Map validateLabelWithInbound(String site, String buNo, String inboundNo, String labelCode, String operationType, String userName, String warehouseId); + Map validateLabelWithInbound(String site, String buNo, String inboundNo, String labelCode, String operationType, String userName, String warehouseId, String relatedOrderNo, String relatedOrderLineNo); /** * 确认入库上架(通过存储过程) @@ -47,9 +54,11 @@ public interface InboundNotificationService { * @param inboundNo 入库单号 * @param locationCode 库位号 * @param userName 当前登录人 + * @param relatedOrderNo 关联单号 + * @param relatedOrderLineNo 关联行号 * @return 处理结果 */ - boolean confirmInboundStorage(String site, String buNo, String inboundNo, String locationCode, String userName); + boolean confirmInboundStorage(String site, String buNo, String inboundNo, String locationCode, String userName, String relatedOrderNo, String relatedOrderLineNo); /** * 获取物料清单 @@ -139,4 +148,13 @@ public interface InboundNotificationService { * @return 处理结果 "200"成功 "400"失败 */ String labelImport(String site, String buNo, String orderNo, String orderType, List> dataList); + + /** + * 获取采购入库通知单明细列表(小卡片) + * @param site 站点 + * @param buNo 业务单元 + * @param orderNo 入库单号 + * @return 明细列表(包含关联单号和行号) + */ + List> getInboundNotificationDetails(String site, String buNo, String orderNo); } diff --git a/src/main/java/com/gaotao/modules/inboundNotification/service/impl/InboundNotificationServiceImpl.java b/src/main/java/com/gaotao/modules/inboundNotification/service/impl/InboundNotificationServiceImpl.java index fb97c0f..a017962 100644 --- a/src/main/java/com/gaotao/modules/inboundNotification/service/impl/InboundNotificationServiceImpl.java +++ b/src/main/java/com/gaotao/modules/inboundNotification/service/impl/InboundNotificationServiceImpl.java @@ -78,21 +78,21 @@ public class InboundNotificationServiceImpl implements InboundNotificationServic } @Override - public Map getInboundDetails(String orderNo, String warehouseId,String site, String buNo) { - return headMapper.getInboundDetails(orderNo, warehouseId,site,buNo); + public Map getInboundDetails(String orderNo, String warehouseId, String site, String buNo, String relatedOrderNo, String relatedOrderLineNo) { + return headMapper.getInboundDetails(orderNo, warehouseId, site, buNo, relatedOrderNo, relatedOrderLineNo); } @Override - public Map validateLabelWithInbound(String site, String buNo, String inboundNo, String labelCode, String operationType, String userName, String warehouseId) { - logger.info("开始验证标签,标签条码: {}, 入库单号: {}, 操作类型: {}, 仓库: {}", labelCode, inboundNo, operationType, warehouseId); + public Map validateLabelWithInbound(String site, String buNo, String inboundNo, String labelCode, String operationType, String userName, String warehouseId, String relatedOrderNo, String relatedOrderLineNo) { + logger.info("开始验证标签,标签条码: {}, 入库单号: {}, 操作类型: {}, 仓库: {}, 关联单号: {}, 关联行号: {}", labelCode, inboundNo, operationType, warehouseId, relatedOrderNo, relatedOrderLineNo); // 调用存储过程 GetScanLabelVerification List params = new ArrayList<>(); params.add(site); // 参数1: site params.add(buNo); // 参数2: buNo params.add(inboundNo); // 参数3: 入库单号 - params.add(""); // 参数4: 空字符串 - params.add(""); // 参数5: 空字符串 + params.add(relatedOrderNo != null ? relatedOrderNo : ""); // 参数4: 关联单号 + params.add(relatedOrderLineNo != null ? relatedOrderLineNo : ""); // 参数5: 关联行号 params.add(""); // 参数6: 空字符串 params.add(""); // 参数7: 空字符串 params.add(labelCode); // 参数8: 扫描的标签条码 @@ -123,8 +123,8 @@ public class InboundNotificationServiceImpl implements InboundNotificationServic @Override @Transactional(rollbackFor = Exception.class) - public boolean confirmInboundStorage(String site, String buNo, String inboundNo, String locationCode, String userName) { - logger.info("开始确认入库上架,入库单号: {}, 库位号: {}", inboundNo, locationCode); + public boolean confirmInboundStorage(String site, String buNo, String inboundNo, String locationCode, String userName, String relatedOrderNo, String relatedOrderLineNo) { + logger.info("开始确认入库上架,入库单号: {}, 库位号: {}, 关联单号: {}, 关联行号: {}", inboundNo, locationCode, relatedOrderNo, relatedOrderLineNo); try { // 调用存储过程 GetSaveLabelVerification @@ -132,8 +132,8 @@ public class InboundNotificationServiceImpl implements InboundNotificationServic params.add(site); // 参数1: site params.add(buNo); // 参数2: buNo params.add(inboundNo); // 参数3: 入库单号 - params.add(""); // 参数4: 空字符串 - params.add(""); // 参数5: 空字符串 + params.add(relatedOrderNo != null ? relatedOrderNo : ""); // 参数4: 关联单号 + params.add(relatedOrderLineNo != null ? relatedOrderLineNo : ""); // 参数5: 关联行号 params.add(""); // 参数6: 空字符串 params.add(""); // 参数7: 空字符串 params.add(locationCode); // 参数8: 入库库位 @@ -186,7 +186,7 @@ public class InboundNotificationServiceImpl implements InboundNotificationServic logger.info("开始处理库存数据,入库单号: {}, 仓库ID: {}, 标签数量: {}", orderNo, warehouseId, labels.size()); // 获取物料基本信息 - Map materialInfo = headMapper.getInboundDetails(orderNo, warehouseId, site,buNo); + Map materialInfo = headMapper.getInboundDetails(orderNo, warehouseId, site, buNo, null, null); if (materialInfo == null) { logger.error("获取物料信息失败,入库单号: {}", orderNo); throw new RuntimeException("获取物料信息失败"); @@ -883,4 +883,12 @@ public class InboundNotificationServiceImpl implements InboundNotificationServic } } + /** + * 获取采购入库通知单明细列表(小卡片) + */ + @Override + public List> getInboundNotificationDetails(String site, String buNo, String orderNo) { + return headMapper.getInboundNotificationDetails(site, buNo, orderNo); + } + } diff --git a/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml b/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml index 7ec0de2..7fe54be 100644 --- a/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml +++ b/src/main/resources/mapper/inboundNotification/InboundNotificationHeadMapper.xml @@ -11,6 +11,8 @@ h.bu_no AS buNo, '' AS batchNo, h.required_inbound_date AS inspectionDate, + d.related_order_no AS relatedOrderNo, + d.related_order_line_no AS relatedOrderLineNo, SUM(CASE WHEN pr.hardtag_in_flag = '已入库' THEN 1 ELSE 0 END) AS labelinCount, -- 已入库标签数 COUNT(DISTINCT pr.roll_no) AS totalLabels, -- 需入库标签数 SUM(CASE WHEN pr.hardtag_in_flag = '已入库' THEN ISNULL(pr.roll_qty, 0) ELSE 0 END) AS totalinLabels, -- 已入库物料总数 @@ -29,7 +31,7 @@ - GROUP BY h.site,h.bu_no,h.order_no,h.required_inbound_date ,D.required_qty + GROUP BY h.site,h.bu_no,h.order_no,h.required_inbound_date,D.required_qty,d.related_order_no,d.related_order_line_no ORDER BY h.required_inbound_date DESC @@ -43,6 +45,8 @@ h.bu_no as buNo, '' as batchNo, h.required_inbound_date as inspectionDate, + d.related_order_no as relatedOrderNo, + d.related_order_line_no as relatedOrderLineNo, SUM(CASE WHEN hardtag_in_flag = '已入库' then 1 else 0 end) labelinCount, --已入库标签数 COUNT(DISTINCT pr.roll_no) as totalLabels , --需入库标签数 SUM(CASE WHEN hardtag_in_flag = '已入库' then CAST(roll_qty AS float) else 0 end) totalinLabels,--已入库物料总数 @@ -54,7 +58,13 @@ h.site = #{site} AND h.bu_no = #{buNo} AND h.order_no = #{orderNo} - GROUP BY h.order_no, h.site, h.bu_no, h.required_inbound_date,D.required_qty + + AND d.related_order_no = #{relatedOrderNo} + + + AND d.related_order_line_no = #{relatedOrderLineNo} + + GROUP BY h.order_no, h.site, h.bu_no, h.required_inbound_date,D.required_qty,d.related_order_no,d.related_order_line_no @@ -294,4 +304,31 @@ #{orderNo}, #{orderType} + + +