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/8] =?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/8] =?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/8] =?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/8] =?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/8] =?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 5fb0ed5b9d0dee3e728fe7394715c4ea54702987 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 May 2026 15:46:54 +0800 Subject: [PATCH 6/8] =?UTF-8?q?1463=20WMS=E7=B3=BB=E7=BB=9F=E9=92=A2?= =?UTF-8?q?=E6=9E=84=E5=8C=85=E9=87=87=E8=B4=AD=E4=B8=9A=E5=8A=A1=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/nflg/wms/admin/util/NoUtil.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java index d441fac4..d961156c 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/util/NoUtil.java @@ -49,8 +49,7 @@ public class NoUtil { return new StructuralPackageMaterialQRCodeContentDTO() .setUniqNo(c1s.size() == 1 ? qrCode : CollectionUtil.get(c1s, 0)) .setMaterialNo(c1s.size() == 1 ? CollectionUtil.get(c1s, 0) : CollectionUtil.get(c1s, 1)) - .setTrayNo(CollectionUtil.get(contents, 1)) - .setNum(new BigDecimal(CollectionUtil.get(contents, 2))) + .setNum(new BigDecimal(CollectionUtil.get(contents, 1))) .setContent(qrCode); } } From 7436b8cca29a84a3473920fe15fdba19fd18ee65 Mon Sep 17 00:00:00 2001 From: 10001392 <1055202292@qq.com> Date: Mon, 25 May 2026 16:58:19 +0800 Subject: [PATCH 7/8] =?UTF-8?q?1513=20=E9=92=A2=E6=9E=84=E5=8C=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E3=80=90=E6=89=98=E7=9B=98=E6=95=B0=E9=87=8F=E3=80=91?= =?UTF-8?q?=EF=BC=8C=E7=BC=96=E8=BE=91=E5=8F=96=E6=B6=88=E6=89=98=E7=9B=98?= =?UTF-8?q?=E5=BA=8F=E5=8F=B7=E6=A0=A1=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StructuralPackageControllerService.java | 51 ++++++++++-------- .../resources/template/钢构包导出.xlsx | Bin 10944 -> 10292 bytes 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java index bb302b6a..b44e38b4 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/StructuralPackageControllerService.java @@ -2,30 +2,32 @@ package com.nflg.wms.admin.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.lang.Pair; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; -import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO; -import com.nflg.wms.admin.pojo.dto.ZWM3A17Item1DTO; import com.nflg.wms.admin.util.PdfGeneratorUtil; import com.nflg.wms.admin.util.QRCodeUtil; import com.nflg.wms.admin.util.ThymeleafUtil; -import com.nflg.wms.common.constant.Constant; import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; -import com.nflg.wms.common.pojo.dto.*; +import com.nflg.wms.common.pojo.dto.BomMaterialDTO; +import com.nflg.wms.common.pojo.dto.PackageMaterialDTO; +import com.nflg.wms.common.pojo.dto.PackageMaterialExcelExportDTO; +import com.nflg.wms.common.pojo.dto.PackageMaterialExcelImportDTO; import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.vo.PackageVO; import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.EecExcelUtil; import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.common.util.VUtil; -import com.nflg.wms.repository.entity.*; +import com.nflg.wms.repository.entity.WmsInTaskItem; +import com.nflg.wms.repository.entity.WmsMaterial; +import com.nflg.wms.repository.entity.WmsModel; +import com.nflg.wms.repository.entity.WmsStructuralPackage; import com.nflg.wms.repository.service.*; import com.nflg.wms.starter.service.BomMaterialService; import com.nflg.wms.starter.service.FileUploadService; @@ -184,8 +186,8 @@ public class StructuralPackageControllerService { .addSheet(new ListSheet<>(List.of(new PackageMaterialExcelExportDTO() .setNo("(必填)零件编码") .setName("(必填)零件名称") - .setStation("(必填)工位序号") - .setTray("(必填)托盘序号") +// .setStation("(必填)工位序号") +// .setTray("(必填)托盘序号") .setWeight(BigDecimal.ZERO) .setNum(BigDecimal.ZERO) .setVersion("(必填)图纸版本")))) @@ -200,8 +202,8 @@ public class StructuralPackageControllerService { datas.add(new PackageMaterialExcelExportDTO() .setNo("(必填)零件编码") .setName("(必填)零件名称") - .setStation("(必填)工位序号") - .setTray("(必填)托盘序号") +// .setStation("(必填)工位序号") +// .setTray("(必填)托盘序号") .setWeight(BigDecimal.ZERO) .setNum(BigDecimal.ZERO) .setVersion("(必填)图纸版本")); @@ -250,16 +252,16 @@ public class StructuralPackageControllerService { } else { materialDTO.setName(dto.getName()); } - if (StrUtil.isBlank(dto.getStation())) { + /*if (StrUtil.isBlank(dto.getStation())) { sb.append("工位序号不能为空;"); - } else { + } else {*/ materialDTO.setStation(dto.getStation()); - } + /*} if (StrUtil.isBlank(dto.getTray())) { sb.append("托盘序号不能为空;"); - } else { + } else {*/ materialDTO.setTray(dto.getTray()); - } +// } if (StrUtil.isBlank(dto.getNum())) { sb.append("数量不能为空;"); } else if (!NumberUtils.isCreatable(dto.getNum())) { @@ -355,8 +357,12 @@ public class StructuralPackageControllerService { && packageService.lambdaQuery().eq(WmsStructuralPackage::getNo, packageInfo.getNo()).exists()) .throwMessage("修改日志不能为空"); break; + case 6: + BigDecimal trayNum = row.getDecimal(1); + packageInfo.setTrayNum(trayNum); + break; default: - if (row.getRowNum() > 7) { + if (row.getRowNum() > 8) { String mno = StrUtil.trim(row.getString(0)); if (StrUtil.isBlank(mno)) { // sb.append(StrUtil.format("第{}行零件编码不能为空;", row.getRowNum())); @@ -372,15 +378,14 @@ public class StructuralPackageControllerService { dto.setName(material1.getDescribe()); dto.setDrawingNo(material1.getDrawingNo()); dto.setImage(material1.getImage()); - String v = row.getString(6); + String v = row.getString(5); if (StrUtil.isNotBlank(v)) { dto.setVersion(Integer.valueOf(v)); } else { dto.setVersion(material1.getVersion()); } dto.setStation(row.getString(2)); - dto.setTray(row.getString(3)); - String num = row.getString(4); + String num = row.getString(3); if (StrUtil.isBlank(num)) { sb.append(StrUtil.format("第{}行数量不能为空;", row.getRowNum())); } else if (!NumberUtils.isCreatable(num)) { @@ -388,13 +393,13 @@ public class StructuralPackageControllerService { } else { dto.setNum(new BigDecimal(num)); } - num = row.getString(5); - if (StrUtil.isBlank(num)) { + String singleWeight = row.getString(4); + if (StrUtil.isBlank(singleWeight)) { sb.append(StrUtil.format("第{}行重量不能为空;", row.getRowNum())); - } else if (!NumberUtils.isCreatable(num)) { + } else if (!NumberUtils.isCreatable(singleWeight)) { sb.append(StrUtil.format("第{}行重量无效;", row.getRowNum())); } else { - dto.setWeight(new BigDecimal(num)); + dto.setWeight(new BigDecimal(singleWeight)); } dto.setCreateBy(UserUtil.getUserName()); dto.setCreateTime(DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd")); diff --git a/nflg-wms-admin/src/main/resources/template/钢构包导出.xlsx b/nflg-wms-admin/src/main/resources/template/钢构包导出.xlsx index ad80eb6cffb9d0bccc138d5a886c3a31384bc698..58b13f23c2cd0a870c69193277009d44a73f4d86 100644 GIT binary patch delta 7019 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 xkrklC>>|j{P*rvy?SHe9f298kdk{fm*v Date: Mon, 25 May 2026 17:11:34 +0800 Subject: [PATCH 8/8] =?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)