|
|
@ -235,18 +235,12 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe |
|
|
log.info("生成了 {} 个ZPL代码,准备打印", zplCodeList.size()); |
|
|
log.info("生成了 {} 个ZPL代码,准备打印", zplCodeList.size()); |
|
|
|
|
|
|
|
|
// 3. 获取用户的打印机配置 |
|
|
// 3. 获取用户的打印机配置 |
|
|
UserLabelPrinterData printerQuery = new UserLabelPrinterData(); |
|
|
|
|
|
printerQuery.setUserId(printRequest.getUserId()); |
|
|
|
|
|
printerQuery.setLabelNo(defaultLabelSettingData.getLabelNo()); |
|
|
|
|
|
List<UserLabelPrinterData> printers = baseService.getUserLabelPrinters(printerQuery); |
|
|
|
|
|
if (printers.isEmpty()) { |
|
|
|
|
|
throw new RuntimeException("未找到指定的打印机配置"); |
|
|
|
|
|
} |
|
|
|
|
|
UserLabelPrinterData printer = printers.getFirst(); |
|
|
|
|
|
|
|
|
String printerLabelType = StringUtils.defaultIfBlank( |
|
|
|
|
|
defaultLabelSettingData.getLabelType(), |
|
|
|
|
|
printRequest.getLabelType() |
|
|
|
|
|
); |
|
|
|
|
|
UserLabelPrinterData printer = getRequiredLabelPrinter(printRequest.getUserId(), printerLabelType); |
|
|
String printerIP = printer.getIpAddress(); |
|
|
String printerIP = printer.getIpAddress(); |
|
|
if (printerIP == null || printerIP.trim().isEmpty()) { |
|
|
|
|
|
throw new RuntimeException("打印机IP地址未配置"); |
|
|
|
|
|
} |
|
|
|
|
|
// 4. 处理打印份数 |
|
|
// 4. 处理打印份数 |
|
|
int requestedCopies = printRequest.getCopies() != null && printRequest.getCopies() > 0 ? printRequest.getCopies() : 1; |
|
|
int requestedCopies = printRequest.getCopies() != null && printRequest.getCopies() > 0 ? printRequest.getCopies() : 1; |
|
|
|
|
|
|
|
|
@ -723,7 +717,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe |
|
|
// 则系统会替换customFields里的qty字段到ZPL代码里对应的位置 |
|
|
// 则系统会替换customFields里的qty字段到ZPL代码里对应的位置 |
|
|
Map<String, Object> customFields = printRequest.getCustomFields(); |
|
|
Map<String, Object> customFields = printRequest.getCustomFields(); |
|
|
// 2. 获取外箱标签打印机配置 |
|
|
// 2. 获取外箱标签打印机配置 |
|
|
UserLabelPrinterData outerPrinter = getRequiredLabelPrinter(printRequest.getUserId(), outerLabelSetting.getLabelNo()); |
|
|
|
|
|
|
|
|
UserLabelPrinterData outerPrinter = getRequiredLabelPrinter(printRequest.getUserId(), outerLabelSetting.getLabelType()); |
|
|
|
|
|
|
|
|
// 3. 生成外箱打印任务 |
|
|
// 3. 生成外箱打印任务 |
|
|
List<Long> taskIds = new ArrayList<>(); |
|
|
List<Long> taskIds = new ArrayList<>(); |
|
|
@ -820,17 +814,22 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe |
|
|
/** |
|
|
/** |
|
|
* 获取用户对应标签的打印机配置 |
|
|
* 获取用户对应标签的打印机配置 |
|
|
*/ |
|
|
*/ |
|
|
private UserLabelPrinterData getRequiredLabelPrinter(String userId, String labelNo) { |
|
|
|
|
|
|
|
|
private UserLabelPrinterData getRequiredLabelPrinter(String userId, String labelType) { |
|
|
|
|
|
String normalizedLabelType = StringUtils.trimToEmpty(labelType); |
|
|
|
|
|
if (StringUtils.isBlank(normalizedLabelType)) { |
|
|
|
|
|
throw new RuntimeException("未找到指定的打印机配置: labelType为空"); |
|
|
|
|
|
} |
|
|
UserLabelPrinterData printerQuery = new UserLabelPrinterData(); |
|
|
UserLabelPrinterData printerQuery = new UserLabelPrinterData(); |
|
|
printerQuery.setUserId(userId); |
|
|
printerQuery.setUserId(userId); |
|
|
printerQuery.setLabelNo(labelNo); |
|
|
|
|
|
|
|
|
// 打印机配置改为按标签类型匹配,避免依赖具体标签编号导致取不到IP。 |
|
|
|
|
|
printerQuery.setLabelType(normalizedLabelType); |
|
|
List<UserLabelPrinterData> printers = baseService.getUserLabelPrinters(printerQuery); |
|
|
List<UserLabelPrinterData> printers = baseService.getUserLabelPrinters(printerQuery); |
|
|
if (printers == null || printers.isEmpty()) { |
|
|
if (printers == null || printers.isEmpty()) { |
|
|
throw new RuntimeException("未找到指定的打印机配置: labelNo=" + labelNo); |
|
|
|
|
|
|
|
|
throw new RuntimeException("未找到指定的打印机配置: labelType=" + normalizedLabelType); |
|
|
} |
|
|
} |
|
|
UserLabelPrinterData printer = printers.getFirst(); |
|
|
UserLabelPrinterData printer = printers.getFirst(); |
|
|
if (StringUtils.isBlank(printer.getIpAddress())) { |
|
|
if (StringUtils.isBlank(printer.getIpAddress())) { |
|
|
throw new RuntimeException("打印机IP地址未配置: labelNo=" + labelNo); |
|
|
|
|
|
|
|
|
throw new RuntimeException("打印机IP地址未配置: labelType=" + normalizedLabelType); |
|
|
} |
|
|
} |
|
|
return printer; |
|
|
return printer; |
|
|
} |
|
|
} |
|
|
@ -880,7 +879,7 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
LabelSettingData innerLabelSetting = getRequiredLabelSetting(innerLabelNo, null); |
|
|
LabelSettingData innerLabelSetting = getRequiredLabelSetting(innerLabelNo, null); |
|
|
UserLabelPrinterData innerPrinter = resolveInnerPrinter(printRequest.getUserId(), innerLabelNo, outerPrinter); |
|
|
|
|
|
|
|
|
UserLabelPrinterData innerPrinter = resolveInnerPrinter(printRequest.getUserId(), innerLabelSetting, outerPrinter); |
|
|
|
|
|
|
|
|
// 复用同一个queryParams,确保IFS缓存可跨外箱/内箱复用,避免重复调用getIfsDataFromApi |
|
|
// 复用同一个queryParams,确保IFS缓存可跨外箱/内箱复用,避免重复调用getIfsDataFromApi |
|
|
Map<String, Object> innerQueryParams = baseQueryParams; |
|
|
Map<String, Object> innerQueryParams = baseQueryParams; |
|
|
@ -921,11 +920,14 @@ public class ReportLabelListServiceImpl extends ServiceImpl<ReportLabelListMappe |
|
|
/** |
|
|
/** |
|
|
* 解析内箱标签打印机:优先取内箱标签专属打印机,未配置则沿用外箱打印机 |
|
|
* 解析内箱标签打印机:优先取内箱标签专属打印机,未配置则沿用外箱打印机 |
|
|
*/ |
|
|
*/ |
|
|
private UserLabelPrinterData resolveInnerPrinter(String userId, String innerLabelNo, UserLabelPrinterData outerPrinter) { |
|
|
|
|
|
|
|
|
private UserLabelPrinterData resolveInnerPrinter(String userId, LabelSettingData innerLabelSetting, UserLabelPrinterData outerPrinter) { |
|
|
|
|
|
String innerLabelNo = innerLabelSetting == null ? "" : innerLabelSetting.getLabelNo(); |
|
|
|
|
|
String innerLabelType = innerLabelSetting == null ? "" : innerLabelSetting.getLabelType(); |
|
|
try { |
|
|
try { |
|
|
return getRequiredLabelPrinter(userId, innerLabelNo); |
|
|
|
|
|
|
|
|
return getRequiredLabelPrinter(userId, innerLabelType); |
|
|
} catch (Exception ex) { |
|
|
} catch (Exception ex) { |
|
|
log.warn("内箱标签未配置独立打印机,沿用外箱打印机。innerLabelNo={}, reason={}", innerLabelNo, ex.getMessage()); |
|
|
|
|
|
|
|
|
log.warn("内箱标签未配置独立打印机,沿用外箱打印机。innerLabelNo={}, innerLabelType={}, reason={}", |
|
|
|
|
|
innerLabelNo, innerLabelType, ex.getMessage()); |
|
|
return outerPrinter; |
|
|
return outerPrinter; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|