From 6ba7d4e9ba4e615c9bb3721f14be3c05191b2c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 13 May 2026 08:51:57 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix(service):=20=E4=BF=AE=E6=AD=A3=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=88=86=E7=B1=BB=E6=8E=A5=E5=8F=A3=E5=92=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BB=9F=E4=B8=80HTTP=E5=BC=82=E5=B8=B8=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改物料分类API请求路径,去除多余/api前缀 - 在全局异常处理类中新增对HttpClientErrorException的捕获处理 - 记录HTTP请求错误的详细日志,返回统一错误状态和信息 - 在状态常量中新增HTTP错误状态码和描述 --- .../main/java/com/nflg/wms/common/constant/STATE.java | 3 ++- .../wms/starter/advice/GlobalRestControllerAdvice.java | 10 +++++++++- .../nflg/wms/starter/service/BomMaterialService.java | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java index 4d5f6a28..8afd1b81 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java @@ -27,7 +27,8 @@ public enum STATE { InconsistentDataError(117, "需要用户确认"), NoOrderData(118, "订单不存在"), SAPErr(119, "SAP错误"), - OutOfStock(120, "库存不足"); + OutOfStock(120, "库存不足"), + HttpError(121, "HTTP错误"); @Getter private final Integer state; diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java index e58bf4b0..94fc890f 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/advice/GlobalRestControllerAdvice.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.servlet.resource.NoResourceFoundException; import java.util.ArrayList; @@ -86,10 +87,17 @@ public class GlobalRestControllerAdvice { @ExceptionHandler(DataAlertException.class) public ApiResult handleDataAlertException(DataAlertException ex) { - printLog("返回数据的错误", ex); + printLog("返回数据错误", ex); return ApiResult.errorWithExtras(ex.getState(), ex.getObj()); } + @ExceptionHandler(HttpClientErrorException.class) + public ApiResult handleHttpClientErrorException(HttpClientErrorException ex) { + Throwable rootCause = ex.getRootCause() != null ? ex.getRootCause() : ex; + printLog("HTTP请求错误", rootCause); + return ApiResult.error(STATE.HttpError, rootCause.getMessage()); + } + private void printLog(String msg, Throwable ex) { log.error("{}:{},{}", msg, ex.getMessage(), ExceptionUtil.stacktraceToString(ex)); } diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/BomMaterialService.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/BomMaterialService.java index 6dc28cb7..3fe65e4b 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/BomMaterialService.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/BomMaterialService.java @@ -68,7 +68,7 @@ public class BomMaterialService { headers.add("authorization", getToken()); HttpEntity requestEntity = new HttpEntity<>(qo, headers); ResponseEntity>> response = restTemplate.exchange( - baseUrl + "/api/material/category/getAlllist", + baseUrl + "/material/category/getAlllist", HttpMethod.POST, requestEntity, new ParameterizedTypeReference<>() { From 5c83f441df63b246ae3aaedba1be19ca41b6ca49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 13 May 2026 16:55:28 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix(controller):=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=AD=9B=E9=80=89=E5=8F=8A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=BA=93=E4=BD=8D=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修正库存筛选条件中物料编号匹配的错误,改用二维码主表的物料编码进行匹配 - 添加设置库存DTO中的库位字段,确保库位信息正确传递 - 优化库存数据处理逻辑,提升准确性和规范性 --- .../com/nflg/wms/admin/controller/NormalPGIController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index c0211b5b..c707e187 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -449,7 +449,7 @@ public class NormalPGIController extends BaseController { if (qrCodeMaster.getPackagingType() == 0) { // 库存 InventoryInDTO inventoryDTO = inventories.stream() - .filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode()) + .filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(qrCodeMaster.getMaterialCode()) && inventoriesDTO.getBatchNo().equals(qrCodeMaster.getBatchNo()) && inventoriesDTO.getSerialNo().equals(qrCodeMaster.getSerialNo()) && inventoriesDTO.getFactoryNo().equals(qrCodeMaster.getFactoryCode()) @@ -464,6 +464,7 @@ public class NormalPGIController extends BaseController { .setWarehouseNo(qrCodeMaster.getStorageLocation()) .setBatchNo(qrCodeMaster.getBatchNo()) .setSerialNo(qrCodeMaster.getSerialNo()) + .setBinLocation(qrCodeMaster.getBinLocation()) .setNum(qrCodeMaster.getQuantity()); inventories.add(inventoryDTO); } else { From 6a382cd5cc3f36b7e8027cc6e01daa2cbd125226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 13 May 2026 17:58:51 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat(material):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=9D=E5=AD=98=E6=97=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?Base64=E6=A0=BC=E5=BC=8F=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在批量保存物料时,判断并处理Base64格式的图片数据 - 实现Base64图片的上传功能并设置物料图片字段 - 保证图片上传与物料信息同步保存 --- .../com/nflg/wms/shipment/controller/MaterialController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java b/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java index 03dcf13a..c6b9272b 100644 --- a/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java +++ b/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java @@ -180,6 +180,9 @@ public class MaterialController extends BaseController { if (CollectionUtil.isNotEmpty(datas)) { shipmentMaterialService.saveBatch(datas.stream().map(data -> { WmsShipmentMaterial material = Convert.convert(WmsShipmentMaterial.class, data); + if (StrUtil.isNotBlank(data.getImageBase64())) { + material.setImage(uploadBase64(data.getImageBase64())); + } material.setCreateBy("同步"); material.setCreateTime(LocalDateTime.now()); return material; From 3a3088a7a9df990890ddd5ac6d500ce8b64359d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 11 May 2026 15:06:03 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat(material):=20=E9=80=9A=E8=BF=87base64?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=94=AF=E6=8C=81=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在FileUploadService接口中新增支持base64字符串上传的方法 - 在OSSFileUploadServiceImpl和RustFSServiceImpl实现类中添加base64上传实现 - 在MaterialController新增base64图片上传功能,自动转换并上传图片 - 生成图片文件路径,支持动态日期、随机字符串及UUID组合 - 在ShipmentMaterialSyncSaveQO中新增imageBase64字段支持传递base64图片数据 - 添加日志记录上传失败的异常信息,保证上传错误可追踪 --- .../pojo/qo/ShipmentMaterialSyncSaveQO.java | 5 +++ .../controller/MaterialController.java | 36 +++++++++++++++++-- .../starter/service/FileUploadService.java | 11 ++++-- .../impl/OSSFileUploadServiceImpl.java | 16 +++++++++ .../service/impl/RustFSServiceImpl.java | 16 +++++++++ 5 files changed, 80 insertions(+), 4 deletions(-) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ShipmentMaterialSyncSaveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ShipmentMaterialSyncSaveQO.java index dec023bb..b5c52073 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ShipmentMaterialSyncSaveQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/ShipmentMaterialSyncSaveQO.java @@ -35,6 +35,11 @@ public class ShipmentMaterialSyncSaveQO { */ private String image; + /** + * base64格式的图片 + */ + private String imageBase64; + /** * 重量 */ diff --git a/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java b/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java index c6b9272b..5395a166 100644 --- a/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java +++ b/nflg-wms-shipment/src/main/java/com/nflg/wms/shipment/controller/MaterialController.java @@ -2,6 +2,8 @@ package com.nflg.wms.shipment.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,6 +14,7 @@ import com.nflg.wms.common.pojo.qo.ShipmentMaterialAddQO; import com.nflg.wms.common.pojo.qo.ShipmentMaterialSearchQO; import com.nflg.wms.common.pojo.qo.ShipmentMaterialSyncSaveQO; import com.nflg.wms.common.pojo.qo.ShipmentMaterialUpdateQO; +import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; import com.nflg.wms.repository.entity.WmsShipmentMaterial; @@ -19,11 +22,13 @@ import com.nflg.wms.repository.service.IWmsShipmentMaterialService; import com.nflg.wms.shipment.service.ShipmentMaterialControllerService; import com.nflg.wms.starter.BaseController; import com.nflg.wms.starter.service.BomMaterialService; +import com.nflg.wms.starter.service.FileUploadService; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -33,6 +38,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -41,6 +47,7 @@ import java.util.stream.Collectors; /** * 图纸管理 */ +@Slf4j @RestController @RequestMapping("material") public class MaterialController extends BaseController { @@ -54,6 +61,9 @@ public class MaterialController extends BaseController { @Resource private ShipmentMaterialControllerService shipmentMaterialControllerService; + @Resource + private FileUploadService fileUploadService; + /** * 新增图纸 */ @@ -164,7 +174,11 @@ public class MaterialController extends BaseController { dbMaterial.setDescribe(data.getDescribe()); dbMaterial.setDescribeEn(data.getDescribeEn()); dbMaterial.setDrawingNo(data.getDrawingNo()); - dbMaterial.setImage(data.getImage()); + if (StrUtil.isNotBlank(data.getImageBase64())) { + dbMaterial.setImage(uploadBase64(data.getImageBase64())); + }else { + dbMaterial.setImage(data.getImage()); + } dbMaterial.setWeight(data.getWeight()); dbMaterial.setLength(data.getLength()); dbMaterial.setWidth(data.getWidth()); @@ -173,7 +187,7 @@ public class MaterialController extends BaseController { dbMaterial.setUpdateTime(LocalDateTime.now()); shipmentMaterialService.updateById(dbMaterial); }); - if (CollectionUtil.isNotEmpty(dbMaterials)){ + if (CollectionUtil.isNotEmpty(dbMaterials)) { shipmentMaterialService.updateBatchById(dbMaterials); } datas.removeIf(data -> dbMaterials.stream().anyMatch(dbMaterial -> dbMaterial.getNo().equals(data.getNo()))); @@ -191,6 +205,24 @@ public class MaterialController extends BaseController { return ApiResult.success(); } + private String uploadBase64(String base64) { + try { + return fileUploadService.upload(buildFilePath(base64), base64); + } catch (Exception e) { + log.error("上传图片失败", e); + return null; + } + } + + private String buildFilePath(String base64) { + return StrUtil.format("admin/{}/{}/{}{}", DateTimeUtil.format(LocalDate.now()) + , RandomUtil.randomString(4), IdUtil.fastUUID(), getFileType(base64)); + } + + private String getFileType(String base64) { + return "."+base64.substring(base64.indexOf("/") + 1, base64.indexOf(";")); + } + /** * 同步-删除 * @param nos 物料编号列表 diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/FileUploadService.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/FileUploadService.java index 3600d6f1..a2018ec2 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/FileUploadService.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/FileUploadService.java @@ -9,7 +9,6 @@ public interface FileUploadService { /** * 上传文件 - * * @param filePath 文件完整路径,如: /cfs/xxx.jpg * @param file 文件 * @return 可访问的url @@ -19,7 +18,6 @@ public interface FileUploadService { /** * 上传文件 - * * @param filePath 文件完整路径,如: /cfs/xxx.jpg * @param stream 文件流 * @return 可访问的url @@ -27,4 +25,13 @@ public interface FileUploadService { */ String upload(String filePath, InputStream stream, String contentType) throws Exception; + /** + * 上传文件 + * @param filePath 文件完整路径,如: /cfs/xxx.jpg + * @param base64 base64字符串 + * @return 可访问的url + * @throws IOException + */ + String upload(String filePath, String base64) throws Exception; + } \ No newline at end of file diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java index 8633497d..f0c573fb 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/OSSFileUploadServiceImpl.java @@ -12,8 +12,10 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Base64; @Service @ConditionalOnProperty(name = "file.upload.type", havingValue = "oss") @@ -41,4 +43,18 @@ public class OSSFileUploadServiceImpl implements FileUploadService { //log.debug("上传文件结果: " + result); return StrUtil.format("{}/{}", domain, filePath); } + + @Override + public String upload(String filePath, String base64) throws Exception { + String contentType = ""; + // 去掉前缀 + if (base64.contains(",")) { + String header = base64.substring(0, base64.indexOf(",")); + if (header.startsWith("data:") && header.contains(";")) { + contentType = header.substring(5, header.indexOf(";")); + } + base64 = base64.substring(base64.indexOf(",") + 1); + } + return upload(filePath, new ByteArrayInputStream(Base64.getDecoder().decode(base64)), contentType); + } } \ No newline at end of file diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java index b4eea343..8a01a789 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/service/impl/RustFSServiceImpl.java @@ -15,7 +15,9 @@ import software.amazon.awssdk.services.s3.model.HeadBucketRequest; import software.amazon.awssdk.services.s3.model.NoSuchBucketException; import software.amazon.awssdk.services.s3.model.PutObjectRequest; +import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.util.Base64; @Slf4j @Service @@ -50,6 +52,20 @@ public class RustFSServiceImpl implements FileUploadService { return StrUtil.format("{}/{}/{}", domain, bucketName, filePath); } + @Override + public String upload(String filePath, String base64) throws Exception { + String contentType = ""; + // 去掉前缀 + if (base64.contains(",")) { + String header = base64.substring(0, base64.indexOf(",")); + if (header.startsWith("data:") && header.contains(";")) { + contentType = header.substring(5, header.indexOf(";")); + } + base64 = base64.substring(base64.indexOf(",") + 1); + } + return upload(filePath, new ByteArrayInputStream(Base64.getDecoder().decode(base64)), contentType); + } + private void ensureBucketExists() { try { s3Client.headBucket(HeadBucketRequest.builder().bucket(bucketName).build()); From e2d50cc0c69bf666435329e254979013fbb9f4c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sat, 9 May 2026 16:51:26 +0800 Subject: [PATCH 5/6] =?UTF-8?q?bug-939=20=E9=92=A2=E6=9E=84=E5=8C=85?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=A0=BC=E5=BC=8F=E5=8F=8A=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E4=BF=AE=E6=94=B9-=E9=BD=90=E5=A5=97=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E5=92=8C=E9=9B=B6=E4=BB=B6=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StructuralPackageOrderController.java | 39 ++++++++++--------- .../template/qrcode/spitem-label.html | 9 ++--- .../resources/template/qrcode/spitem.html | 2 +- 3 files changed, 25 insertions(+), 25 deletions(-) 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 c56f98e1..cc72fc11 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 @@ -550,7 +550,6 @@ public class StructuralPackageOrderController extends BaseController { /** * 导出零件标签图片ZIP - * * @param id 托盘id */ @GetMapping(value = "exportItemImageZip", produces = "application/zip") @@ -560,35 +559,24 @@ public class StructuralPackageOrderController extends BaseController { List list = structuralPackageOrderTrayItemService.getListVOByTrayId(id); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ZipOutputStream zos = new ZipOutputStream(baos)) { - List datas = new ArrayList<>(); int index = 0; for (DeliverStructuralPackageOrderTrayItemVO it : list) { - datas.clear(); 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(it.getId() + "-" + (i + 1)); - vo.setQrCode(it.getId() + "-" + (i + 1) + "^" + it.getMaterialNo() + "_" + it.getTrayNo() + "_1"); + vo.setQrCodeId(code + "-" + (i + 1)); + vo.setQrCode(code + "-" + (i + 1) + "^" + it.getMaterialNo() + "_" + it.getTrayNo() + "_1"); vo.setQrCodeImage(QRCodeUtil.generateQRCodeBase64(vo.getQrCode(), 200, 200)); - datas.add(vo); + addEntry(zos, index, vo, trayVO); } if (it.getShipmentNum().remainder(BigDecimal.ONE).compareTo(BigDecimal.ZERO) > 0) { DeliverStructuralPackageOrderTrayItemVO vo = BeanUtil.copy(it, DeliverStructuralPackageOrderTrayItemVO.class); - vo.setQrCodeId(it.getId() + "-" + (it.getShipmentNum().intValue() + 1)); - vo.setQrCode(it.getId() + "-" + (it.getShipmentNum().intValue() + 1) + "^" + it.getMaterialNo() + "_" + it.getTrayNo() + "_" + it.getShipmentNum().remainder(BigDecimal.ONE)); + vo.setQrCodeId(code + "-" + (it.getShipmentNum().intValue() + 1)); + vo.setQrCode(code + "-" + (it.getShipmentNum().intValue() + 1) + "^" + it.getMaterialNo() + "_" + it.getTrayNo() + "_" + it.getShipmentNum().remainder(BigDecimal.ONE)); vo.setQrCodeImage(QRCodeUtil.generateQRCodeBase64(vo.getQrCode(), 200, 200)); - datas.add(vo); + addEntry(zos, index, vo, trayVO); } - Map variables = new HashMap<>(); - variables.put("list", datas); - variables.put("info", trayVO); - variables.put("index", index); - String html = ThymeleafUtil.generator("/template/qrcode/", "spitem-label", ".html", variables); - ZipEntry entry = new ZipEntry(it.getId() + ".png"); - zos.putNextEntry(entry); - byte[] imageBytes = HtmlToImageUtil.convertToPng(html, 600); - zos.write(imageBytes, 0, imageBytes.length); - zos.closeEntry(); } } byte[] zipBytes = baos.toByteArray(); @@ -598,6 +586,19 @@ public class StructuralPackageOrderController extends BaseController { return new ResponseEntity<>(zipBytes, headers, HttpStatus.OK); } + private void addEntry(ZipOutputStream zos, int index, DeliverStructuralPackageOrderTrayItemVO vo, DeliverStructuralPackageOrderExtendVO trayVO) throws Exception { + Map variables = new HashMap<>(); + variables.put("item", vo); + variables.put("info", trayVO); + variables.put("index", index); + String html = ThymeleafUtil.generator("/template/qrcode/", "spitem-label", ".html", variables); + ZipEntry entry = new ZipEntry(vo.getQrCodeId() + ".png"); + zos.putNextEntry(entry); + byte[] imageBytes = HtmlToImageUtil.convertToPng(html, 600); + zos.write(imageBytes, 0, imageBytes.length); + zos.closeEntry(); + } + /** * 导出托盘标签PDF * diff --git a/nflg-wms-admin/src/main/resources/template/qrcode/spitem-label.html b/nflg-wms-admin/src/main/resources/template/qrcode/spitem-label.html index f115abe3..efd5c3f5 100644 --- a/nflg-wms-admin/src/main/resources/template/qrcode/spitem-label.html +++ b/nflg-wms-admin/src/main/resources/template/qrcode/spitem-label.html @@ -39,8 +39,8 @@ } .img { - width: auto; - height: 100%; + max-width: 350px; + max-height: 160px; margin: 0 auto; } @@ -61,13 +61,12 @@ -
+
1
diff --git a/nflg-wms-admin/src/main/resources/template/qrcode/spitem.html b/nflg-wms-admin/src/main/resources/template/qrcode/spitem.html index 2e41f3a2..10661988 100644 --- a/nflg-wms-admin/src/main/resources/template/qrcode/spitem.html +++ b/nflg-wms-admin/src/main/resources/template/qrcode/spitem.html @@ -58,7 +58,7 @@
-
+
833-33-07-NF左踏板连接架(00001016NF左踏板连接架NF左踏板连接架
From 9c9766f5124de6ba4d32b2e11c74db7654f23850 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 May 2026 17:11:34 +0800 Subject: [PATCH 6/6] =?UTF-8?q?1512=20=E8=B4=A8=E6=A3=80=E7=89=A9=E6=96=99?= =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E6=B7=BB=E5=8A=A0=E5=82=A8=E4=BD=8D=E6=89=AB?= =?UTF-8?q?=E7=A0=81=E5=92=8C=E7=BC=96=E8=BE=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nflg/wms/common/pojo/vo/QCTaskItemVO.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCTaskItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCTaskItemVO.java index 813da1d3..9ce91197 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCTaskItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCTaskItemVO.java @@ -1,5 +1,6 @@ package com.nflg.wms.common.pojo.vo; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.experimental.Accessors; @@ -95,4 +96,10 @@ public class QCTaskItemVO { * 质检结果 */ private List scanCodes; + + /** + * 是否启用储位管理 + */ + @JsonProperty("isDisableLocation") + private Boolean isDisableLocation = true; }
-
+
833-33-07-NF左踏板连接架(0000101627)833-33-07-NF左踏板连接架NF左踏板连接架NF左踏板连接架(0000101627)