From 6a02cb92701613a5908191d6fd5dbb0ce8eb3225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 8 Oct 2025 11:13:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20bug-784=20=E9=92=A2=E6=9E=84=E5=8C=85?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=B7=BB=E5=8A=A0=E7=BC=BA=E4=BB=B6=E4=BA=A4?= =?UTF-8?q?=E8=B4=A7=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StructuralPackageOrderController.java | 70 +++++++++++++------ .../wms/common/pojo/qo/PackTrayItemQO.java | 26 +++++++ .../nflg/wms/common/pojo/qo/PackTrayQO.java | 4 +- .../vo/StructuralPackageDeliverOrderVO.java | 5 ++ .../nflg/wms/common/pojo/vo/TrayItemVO.java | 31 ++++++++ .../entity/WmsStructuralPackageOrder.java | 5 ++ .../WmsStructuralPackageOrderTrayItem.java | 21 ++++++ ...StructuralPackageOrderTrayItemService.java | 4 +- ...cturalPackageOrderTrayItemServiceImpl.java | 7 +- ...WmsStructuralPackageDeliverOrderMapper.xml | 3 +- 10 files changed, 151 insertions(+), 25 deletions(-) create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayItemQO.java 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 788ec03a..98d06e78 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 @@ -323,7 +323,7 @@ public class StructuralPackageOrderController extends BaseController { TrayItemVO ivo = Convert.convert(TrayItemVO.class, item); ivo.setNo(tray.getNo()); if (Objects.equals(tray.getState(), (short) 3)) { - ivo.setStoreNum(item.getShipmentNum()); + ivo.setStoreNum(item.getStoreNum()); } return ivo; }).toList()); @@ -382,7 +382,7 @@ public class StructuralPackageOrderController extends BaseController { */ @GetMapping("getItems") public ApiResult> getItems(@Valid @RequestParam @NotNull Long id) { - return ApiResult.success(deliverStructuralPackageOrderTrayItemService.getListByTrayId(id)); + return ApiResult.success(deliverStructuralPackageOrderTrayItemService.getListVOByTrayId(id)); } /** @@ -391,7 +391,7 @@ public class StructuralPackageOrderController extends BaseController { */ @PostMapping("exportItems") public void exportItems(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws IOException { - List list = deliverStructuralPackageOrderTrayItemService.getListByTrayId(id); + List list = deliverStructuralPackageOrderTrayItemService.getListVOByTrayId(id); EecExcelUtil.export("零件信息", "sheet1", list, response); } @@ -417,7 +417,7 @@ public class StructuralPackageOrderController extends BaseController { .setDrawingNo(trayVO.getPackageDrawingNo()) .setName(trayVO.getPackageDesc()) .setQrCode(QRCodeUtil.generateQRCodeBase64(trayVO.getPackageNo(), 100, 100)); - List list = deliverStructuralPackageOrderTrayItemService.getListByTrayId(id); + List list = deliverStructuralPackageOrderTrayItemService.getListVOByTrayId(id); List items = list.stream().map(item -> new PackageMaterialDTO() .setImage(item.getImage()) .setNo(item.getMaterialNo()) @@ -445,7 +445,7 @@ public class StructuralPackageOrderController extends BaseController { public void exportItemPdf(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { DeliverStructuralPackageOrderExtendVO trayVO = deliverStructuralPackageOrderTrayService.getInfo(id); VUtil.trueThrowBusinessError(Objects.isNull(trayVO)).throwMessage("数据不存在"); - List list = deliverStructuralPackageOrderTrayItemService.getListByTrayId(id); + List list = deliverStructuralPackageOrderTrayItemService.getListVOByTrayId(id); List datas = new ArrayList<>(); for (DeliverStructuralPackageOrderTrayItemVO it : list) { for (int i = 0, count = it.getShipmentNum().intValue(); i < count; i++) { @@ -526,23 +526,31 @@ public class StructuralPackageOrderController extends BaseController { VUtil.trueThrowBusinessError(Objects.isNull(tray)).throwMessage("托盘不存在"); VUtil.trueThrowBusinessError(!Objects.equals(tray.getState(), OrderState.Unpackaged.getState())).throwMessage("请勿重复打包"); DeliverStructuralPackageOrderVO order = deliverStructuralPackageOrderService.getInfo(tray.getOrderId()); - List trayItemVOS = deliverStructuralPackageOrderTrayItemService.getListByTrayId(tray.getId()); + List trayItems = deliverStructuralPackageOrderTrayItemService.getListByTrayId(tray.getId()); List materialNos = new ArrayList<>(); - List qrCodeDTOs = request.getQrCodes().stream().map(NoUtil::getStructuralPackageMaterialQRCodeContent).toList(); - trayItemVOS.forEach(it -> { - List dtos = qrCodeDTOs.stream() - .filter(qr -> StrUtil.equals(qr.getMaterialNo(), it.getMaterialNo())) - .toList(); - if (it.getShipmentNum().compareTo(dtos.stream() - .map(StructuralPackageMaterialQRCodeContentDTO::getNum) - .reduce(BigDecimal.ZERO, BigDecimal::add)) != 0) { - materialNos.add(it.getMaterialNo()); + List qrCodeDTOs = new ArrayList<>(); + trayItems.forEach(it -> { + PackTrayItemQO ri = request.getItems().stream().filter(r -> StrUtil.equals(r.getMaterialNo(), it.getMaterialNo())).findFirst().orElse(null); + VUtil.trueThrowBusinessError(Objects.isNull(ri)).throwMessage(it.getMaterialNo() + "未扫码"); + if (StrUtil.isBlank(ri.getRemark())) { + List dtos = ri.getQrCodes().stream() + .map(NoUtil::getStructuralPackageMaterialQRCodeContent) + .toList(); + if (it.getShipmentNum().compareTo(dtos.stream() + .map(StructuralPackageMaterialQRCodeContentDTO::getNum) + .reduce(BigDecimal.ZERO, BigDecimal::add)) != 0) { + materialNos.add(it.getMaterialNo()); + } + dtos.forEach(dto -> { + dto.setPoNum(order.getExternalOrderNo()); + dto.setPackageNo(order.getPackageNo()); + dto.setTrayItemId(it.getId()); + }); + qrCodeDTOs.addAll(dtos); + } else { + it.setOfflineRemark(ri.getRemark()); + it.setOfflineReceived(false); } - dtos.forEach(dto -> { - dto.setPoNum(order.getExternalOrderNo()); - dto.setPackageNo(order.getPackageNo()); - dto.setTrayItemId(it.getId()); - }); }); VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(materialNos)) .throwMessage("以下物料的数量与托盘数量不一致:" + StrUtil.join(",", materialNos)); @@ -737,6 +745,25 @@ public class StructuralPackageOrderController extends BaseController { return ApiResult.success(vo); } + /** + * 线下收货 + * @param itemIds 零件项id列表 + */ + @PostMapping("offlineReceive") + public ApiResult offlineReceive(@Valid @RequestBody @NotEmpty List itemIds) { + List items = deliverStructuralPackageOrderTrayItemService.listByIds(itemIds); + items.removeIf(it -> it.getOfflineReceived() != false); + items.forEach(it -> { + it.setOfflineReceived(true); + it.setOfflineReceiveTime(LocalDateTime.now()); + it.setOfflineReceiveUser(UserUtil.getUserName()); + }); + if (CollectionUtil.isNotEmpty(items)) { + deliverStructuralPackageOrderTrayItemService.updateBatchById(items); + } + return ApiResult.success(); + } + /** * 收货(PDA使用) * @param request 请求参数 @@ -767,6 +794,9 @@ public class StructuralPackageOrderController extends BaseController { .eq(WmsStructuralPackageOrderTray::getOrderId, request.getId()) .eq(WmsStructuralPackageOrderTray::getState, OrderState.InTransit.getState()) .update(); + List items = deliverStructuralPackageOrderTrayItemService.getList(request.getId()); + items.forEach(it -> it.setStoreNum(it.getShipmentNum())); + deliverStructuralPackageOrderTrayItemService.updateBatchById(items); structuralPackageDeliverOrderService.updateStateByOrderId(request.getId()); SAPMaterialInfoInOrderDTO dto = CollectionUtil.get(sapService.zim004(order.getExternalOrderNo(), order.getSupplierCode(), order.getPackageNo()), 0); VUtil.trueThrowBusinessError(Objects.isNull(dto)).throwMessage("ZIM_004未查询到数据"); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayItemQO.java new file mode 100644 index 00000000..899df529 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayItemQO.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.util.List; + +@Data +public class PackTrayItemQO { + + /** + * 零件编码 + */ + @NotBlank + private String materialNo; + + /** + * 二维码列表 + */ + private List qrCodes; + + /** + * 线下交货原因 + */ + private String remark; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayQO.java index 3e277ed2..b9f23d6d 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackTrayQO.java @@ -16,8 +16,8 @@ public class PackTrayQO { private String trayNo; /** - * 二维码列表 + * 零件列表 */ @NotEmpty - private List qrCodes; + private List items; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StructuralPackageDeliverOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StructuralPackageDeliverOrderVO.java index 624eb567..de6a6a72 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StructuralPackageDeliverOrderVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/StructuralPackageDeliverOrderVO.java @@ -60,4 +60,9 @@ public class StructuralPackageDeliverOrderVO { * 工厂编号 */ private String factoryNo; + + /** + * 是否存在缺货零件 + */ + private Boolean quehuo; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayItemVO.java index 9615616d..d32e8b34 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/TrayItemVO.java @@ -5,6 +5,8 @@ import lombok.Data; import lombok.experimental.Accessors; import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Objects; @Data @Accessors(chain = true) @@ -67,4 +69,33 @@ public class TrayItemVO { * 条码数量 */ private String codeNum = "点击查看"; + + /** + * 是否线下 + */ + private Boolean offline; + + public Boolean getOffline() { + return Objects.nonNull(offlineReceived); + } + + /** + * 线下交货原因 + */ + private String offlineRemark; + + /** + * 是否已线下交货 + */ + private Boolean offlineReceived; + + /** + * 线下收货人 + */ + private String offlineReceiveUser; + + /** + * 线下收货时间 + */ + private LocalDateTime offlineReceiveTime; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java index e76bfc02..b72ef2ca 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrder.java @@ -116,4 +116,9 @@ public class WmsStructuralPackageOrder implements Serializable { * 标志:关键部件 */ private String kzkri; + + /** + * 是否存在缺货零件 + */ + private Boolean quehuo; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrderTrayItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrderTrayItem.java index aca8d162..1066bae0 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrderTrayItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsStructuralPackageOrderTrayItem.java @@ -10,6 +10,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDateTime; /** *

@@ -85,4 +86,24 @@ public class WmsStructuralPackageOrderTrayItem implements Serializable { * 图号 */ private String drawingNo; + + /** + * 线下交货原因 + */ + private String offlineRemark; + + /** + * 是否已线下交货 + */ + private Boolean offlineReceived; + + /** + * 线下收货人 + */ + private String offlineReceiveUser; + + /** + * 线下收货时间 + */ + private LocalDateTime offlineReceiveTime; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageOrderTrayItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageOrderTrayItemService.java index 490bfc17..91ad93b8 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageOrderTrayItemService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsStructuralPackageOrderTrayItemService.java @@ -26,7 +26,9 @@ public interface IWmsStructuralPackageOrderTrayItemService extends IService deleteIds); - List getListByTrayId(@Valid @NotNull Long id); + List getListVOByTrayId(@Valid @NotNull Long id); List getSimpleListByTrayNo(@Valid @NotBlank String trayNo); + + List getListByTrayId(Long id); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageOrderTrayItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageOrderTrayItemServiceImpl.java index 08fc7037..94d339ce 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageOrderTrayItemServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsStructuralPackageOrderTrayItemServiceImpl.java @@ -38,7 +38,7 @@ public class WmsStructuralPackageOrderTrayItemServiceImpl extends ServiceImpl getListByTrayId(Long id) { + public List getListVOByTrayId(Long id) { return baseMapper.getListByTrayId(id); } @@ -46,4 +46,9 @@ public class WmsStructuralPackageOrderTrayItemServiceImpl extends ServiceImpl getSimpleListByTrayNo(String trayNo) { return baseMapper.getSimpleListByTrayNo(trayNo); } + + @Override + public List getListByTrayId(Long id) { + return lambdaQuery().eq(WmsStructuralPackageOrderTrayItem::getTrayId, id).list(); + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageDeliverOrderMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageDeliverOrderMapper.xml index 4094ab8b..8f1f5f20 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageDeliverOrderMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageDeliverOrderMapper.xml @@ -3,8 +3,9 @@