diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java index d4c10a61..98d8602c 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/StructuralPackageOrderController.java @@ -2136,4 +2136,51 @@ public class StructuralPackageOrderController extends BaseController { URL baseUrl = new ClassPathResource("template/").getURL(); PdfGeneratorUtil.generatePdf("钢构件老鼠图", html, baseUrl.toString(), response); } + + /** + * 根据订单id导出零件标签图片ZIP + * @param id 订单id + */ + @GetMapping(value = "exportItemImageZipByOrderId", produces = "application/zip") + public ResponseEntity exportItemImageZipByOrderId(@Valid @RequestParam @NotNull Long id) throws Exception { + // 获取订单信息 + DeliverStructuralPackageOrderVO orderVO = structuralPackageOrderService.getInfo(id); + VUtil.trueThrowBusinessError(Objects.isNull(orderVO)).throwMessage("数据不存在"); + + // 获取第一个托盘信息用于生成标签 + List trays = structuralPackageOrderTrayService.getList(id); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(trays)).throwMessage("数据不存在"); + DeliverStructuralPackageOrderExtendVO trayVO = structuralPackageOrderTrayService.getInfo(trays.get(0).getId()); + + // 直接根据订单ID获取物料项列表,不再依赖托盘关联 + List list = structuralPackageOrderTrayItemService.getListVOByOrderId(id); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ZipOutputStream zos = new ZipOutputStream(baos)) { + int index = 0; + for (DeliverStructuralPackageOrderTrayItemVO it : list) { + it.setSupplierCode(trayVO.getSupplierCode()); + index++; + String code = Base62Util.encode(it.getId()); + for (int i = 0, count = it.getShipmentNum().intValue(); i < count; i++) { + DeliverStructuralPackageOrderTrayItemVO vo = BeanUtil.copy(it, DeliverStructuralPackageOrderTrayItemVO.class); + vo.setQrCodeId(code + "-" + (i + 1)); + vo.setQrCode(vo.getQrCodeId() + "^" + it.getMaterialNo() + "_1"); + vo.setQrCodeImage(QRCodeUtil.generateQRCodeBase64(vo.getQrCode(), 200, 200)); + addEntry(zos, index, vo); + } + if (it.getShipmentNum().remainder(BigDecimal.ONE).compareTo(BigDecimal.ZERO) > 0) { + DeliverStructuralPackageOrderTrayItemVO vo = BeanUtil.copy(it, DeliverStructuralPackageOrderTrayItemVO.class); + vo.setQrCodeId(code + "-" + (it.getShipmentNum().intValue() + 1)); + vo.setQrCode(vo.getQrCodeId() + "^" + it.getMaterialNo() + "_" + it.getShipmentNum().remainder(BigDecimal.ONE)); + vo.setQrCodeImage(QRCodeUtil.generateQRCodeBase64(vo.getQrCode(), 200, 200)); + addEntry(zos, index, vo); + } + } + } + byte[] zipBytes = baos.toByteArray(); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.valueOf("application/zip")); + headers.setContentLength(zipBytes.length); + return new ResponseEntity<>(zipBytes, headers, HttpStatus.OK); + } } \ No newline at end of file diff --git a/readme.md b/readme.md index 02df4ae8..e67ab84a 100644 --- a/readme.md +++ b/readme.md @@ -1,10 +1,19 @@ ## 需要安装的软件 -- wkhtmltoimage +### wkhtmltoimage > 用于将HTML转为图片,打印标签需要 +- CentOS 7 + ```bash wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.x86_64.rpm yum localinstall wkhtmltox-0.12.6-1.centos7.x86_64.rpm +``` + +- AlmaLinux 9 + +```bash +wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm +yum localinstall wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm ``` \ No newline at end of file