From 84c151d2b6d8a89bd8e0c5d56547c799b3e1b27b Mon Sep 17 00:00:00 2001 From: "han\\hanst" Date: Thu, 29 Oct 2026 13:17:11 +0800 Subject: [PATCH] =?UTF-8?q?54A=E9=87=87=E8=B4=AD=E6=8E=A5=E6=94=B6?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=89=93=E5=8D=B0=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/entity/PrintLabelRequest.java | 1 + .../Impl/LabelDataProcessorServiceImpl.java | 16 ++++++++++ .../Impl/ReportLabelListServiceImpl.java | 29 ++++++++++++++++--- .../resources/i18n/messages_en_US.properties | 3 ++ .../resources/i18n/messages_zh_CN.properties | 3 ++ src/main/resources/mapper/base/BaseMapper.xml | 14 ++++++--- 6 files changed, 58 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/gaotao/modules/base/entity/PrintLabelRequest.java b/src/main/java/com/gaotao/modules/base/entity/PrintLabelRequest.java index 804c0e88..ba5fae1d 100644 --- a/src/main/java/com/gaotao/modules/base/entity/PrintLabelRequest.java +++ b/src/main/java/com/gaotao/modules/base/entity/PrintLabelRequest.java @@ -18,6 +18,7 @@ public class PrintLabelRequest { private String userId; // 用户ID private String username; // 用户名 private String site; // 站点 + private String subSite; // 子站点 private String customerId; // 客户编码 private String addressNo; // 地址编码 private String receiptNo; // 采购接收单号 diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java index c748f281..c5475df2 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java @@ -1992,6 +1992,19 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService return result; } + /** HU主视图打印必须明确站点和HU;仅使用IFS数据的模板无需HU条件。 */ + private void validateHuPrintScope(Map queryParams) { + Object site = queryParams != null ? queryParams.get("site") : null; + if (!(site instanceof String siteValue) || StringUtils.isBlank(siteValue)) { + throw new RuntimeException(labelSettingI18n.text("label.error.printSiteRequired")); + } + Object requestedUnits = queryParams.get("unitIds"); + if (!(requestedUnits instanceof List unitIds) || unitIds.isEmpty() + || unitIds.stream().anyMatch(unitId -> !(unitId instanceof String id) || StringUtils.isBlank(id))) { + throw new RuntimeException(labelSettingI18n.text("label.error.printUnitsRequired")); + } + } + @Override public List generateZplWithRealData(String reportId, List elements, LabelSettingData labelSetting, Boolean printFlag, Map queryParams) { try { @@ -2024,6 +2037,9 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService // 3.1 查询主视图数据 List> mainViewDataList = new ArrayList<>(); if (viewSql != null && !viewSql.trim().isEmpty()) { + if (Boolean.TRUE.equals(printFlag)) { + validateHuPrintScope(queryParams); + } mainViewDataList = baseService.getViewData(viewSql, reportId, queryParams); log.info("获取到主视图数据记录数: {}", mainViewDataList.size()); } diff --git a/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java b/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java index a4547d02..fac09af8 100644 --- a/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java +++ b/src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java @@ -191,6 +191,9 @@ public class ReportLabelListServiceImpl extends ServiceImpl queryParams = new HashMap<>(); - queryParams.put("site", printRequest.getSite()); + queryParams.put("site", printRequest.getSubSite()); List unitIds; if (StringUtils.isNotBlank(printRequest.getReceiptNo())) { - unitIds = handlingUnitService.getHandlingUnitsBySiteAndOrderRef2(printRequest.getSite(), printRequest.getReceiptNo()).stream() + unitIds = handlingUnitService.getHandlingUnitsBySiteAndOrderRef2(printRequest.getSubSite(), printRequest.getReceiptNo()).stream() .map(HandlingUnit::getUnitId) .toList(); + if (unitIds.isEmpty()) { + throw new RuntimeException(labelSettingI18n.text("label.error.receiptUnitsNotFound", + printRequest.getSite(), printRequest.getReceiptNo())); + } } else { - unitIds = Collections.singletonList(printRequest.getUnitId()); + unitIds = resolveRequestedUnitIds(printRequest); + } + if (unitIds.isEmpty()) { + throw new RuntimeException(labelSettingI18n.text("label.error.printUnitsRequired")); } queryParams.put("unitIds", unitIds); // 可以根据需要添加更多参数 @@ -793,7 +803,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl buildCommonQueryParams(PrintLabelRequest printRequest) { Map queryParams = new HashMap<>(); queryParams.put("site", printRequest.getSite()); - queryParams.put("unitIds", printRequest.getUnitIds()); + queryParams.put("unitIds", resolveRequestedUnitIds(printRequest)); // ifs外箱标签视图 queryParams.put("consignmentId", printRequest.getConsignmentId()); queryParams.put("jobNo", printRequest.getJobNo()); @@ -803,6 +813,17 @@ public class ReportLabelListServiceImpl extends ServiceImpl resolveRequestedUnitIds(PrintLabelRequest printRequest) { + if (printRequest.getUnitIds() != null && !printRequest.getUnitIds().isEmpty()) { + return printRequest.getUnitIds(); + } + if (StringUtils.isNotBlank(printRequest.getUnitId())) { + return Collections.singletonList(printRequest.getUnitId()); + } + return Collections.emptyList(); + } + /** * 获取标签设置(labelType为空时仅按labelNo匹配) */ diff --git a/src/main/resources/i18n/messages_en_US.properties b/src/main/resources/i18n/messages_en_US.properties index 62ebdd8e..e12c2d57 100644 --- a/src/main/resources/i18n/messages_en_US.properties +++ b/src/main/resources/i18n/messages_en_US.properties @@ -76,6 +76,9 @@ label.error.ifsEmpty=The IFS API returned no data. label.error.labelNotFound=Corresponding label was not found. label.error.labelNotFoundWithId=Corresponding label was not found: {0} label.error.zplListEmpty=The ZPL code list cannot be empty. +label.error.printSiteRequired=A site is required to print HU labels. +label.error.printUnitsRequired=Valid HU IDs are required to print HU labels. Printing was cancelled. +label.error.receiptUnitsNotFound=No HUs were found for receipt {1} at site {0}. Printing was cancelled. label.error.rfidPrintFailed=RFID label print failed: {0} label.error.normalPrintFailed=Normal label print failed: {0} label.error.rfidItemFailed=RFID label {0} failed: {1} diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties index 13f59ff8..625835d9 100644 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ b/src/main/resources/i18n/messages_zh_CN.properties @@ -76,6 +76,9 @@ label.error.ifsEmpty=IFS API未返回任何数据 label.error.labelNotFound=未找到对应的标签 label.error.labelNotFoundWithId=未找到对应的标签:{0} label.error.zplListEmpty=ZPL代码列表不能为空 +label.error.printSiteRequired=HU标签打印必须指定站点 +label.error.printUnitsRequired=HU标签打印必须指定有效的HU列表,已取消打印 +label.error.receiptUnitsNotFound=站点{0}的接收单{1}下未找到HU,已取消打印 label.error.rfidPrintFailed=RFID标签打印失败:{0} label.error.normalPrintFailed=普通标签打印失败:{0} label.error.rfidItemFailed=第{0}张RFID标签处理失败:{1} diff --git a/src/main/resources/mapper/base/BaseMapper.xml b/src/main/resources/mapper/base/BaseMapper.xml index 6f6c31d4..d595470e 100644 --- a/src/main/resources/mapper/base/BaseMapper.xml +++ b/src/main/resources/mapper/base/BaseMapper.xml @@ -570,14 +570,20 @@ AND wdr = #{params.wdr} - + + + + + AND unit_id IN #{unitId} - - - + + + AND 1 = 0 + +