Browse Source

54A采购接收标签打印失败

master
han\hanst 1 week ago
parent
commit
84c151d2b6
  1. 1
      src/main/java/com/gaotao/modules/base/entity/PrintLabelRequest.java
  2. 16
      src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java
  3. 29
      src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java
  4. 3
      src/main/resources/i18n/messages_en_US.properties
  5. 3
      src/main/resources/i18n/messages_zh_CN.properties
  6. 14
      src/main/resources/mapper/base/BaseMapper.xml

1
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; // 采购接收单号

16
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<String, Object> 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<String> generateZplWithRealData(String reportId, List<ReportLabelList> elements, LabelSettingData labelSetting, Boolean printFlag, Map<String, Object> queryParams) {
try {
@ -2024,6 +2037,9 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
// 3.1 查询主视图数据
List<java.util.Map<String, Object>> 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());
}

29
src/main/java/com/gaotao/modules/base/service/Impl/ReportLabelListServiceImpl.java

@ -191,6 +191,9 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
@Override
public void printLabel(PrintLabelRequest printRequest) {
if (StringUtils.isBlank(printRequest.getSite())) {
throw new RuntimeException(labelSettingI18n.text("label.error.printSiteRequired"));
}
String rfidFlag = null;
// 根据当前用户查找默认打印标签reportId
DefaultLabelSettingData inData = new DefaultLabelSettingData();
@ -213,14 +216,21 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe
try {
// 1. 构建查询参数Map
Map<String, Object> queryParams = new HashMap<>();
queryParams.put("site", printRequest.getSite());
queryParams.put("site", printRequest.getSubSite());
List<String> 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<ReportLabelListMappe
private Map<String, Object> buildCommonQueryParams(PrintLabelRequest printRequest) {
Map<String, Object> 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<ReportLabelListMappe
return queryParams;
}
/** 单个HU和批量HU使用相同的查询条件,空请求保留为空列表,由数据源校验拦截。 */
private List<String> 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匹配)
*/

3
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}

3
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}

14
src/main/resources/mapper/base/BaseMapper.xml

@ -570,14 +570,20 @@
<if test="params.wdr != null and params.wdr != ''">
AND wdr = #{params.wdr}
</if>
<if test="params.unitIds != null and params.unitIds.size > 0">
<!-- 可以根据需要添加更多参数 -->
</if>
<!-- 标签主视图不允许无HU范围查询,包含params缺失的情况。 -->
<choose>
<when test="params != null and params.unitIds != null and params.unitIds.size > 0">
AND unit_id IN
<foreach collection="params.unitIds" item="unitId" open="(" separator="," close=")">
#{unitId}
</foreach>
</if>
<!-- 可以根据需要添加更多参数 -->
</if>
</when>
<otherwise>
AND 1 = 0
</otherwise>
</choose>
</where>
</select>

Loading…
Cancel
Save