From 1dac30c1d5553acf8dd103302521b0c15b14485c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 23 Sep 2025 15:50:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/MaterialController.java | 10 ++ .../controller/NormalOrderController.java | 116 ++++++++++-------- .../service/MaterialControllerService.java | 4 + .../common/pojo/dto/MaterialCategoryVO.java | 21 ++++ .../nflg/wms/common/pojo/dto/SAPOrderDTO.java | 10 ++ .../wms/common/pojo/qo/BomMaterialListQO.java | 5 + .../common/pojo/qo/MaterialCategoryQO.java | 19 +++ .../nflg/wms/common/pojo/qo/PackageAddQO.java | 2 - .../common/pojo/vo/DeliverNormalOrderVO.java | 5 + .../service/impl/UserServiceImpl.java | 2 +- .../mapper/WmsNormalPrintOrderMapper.xml | 2 +- ...WmsStructuralPackageDeliverOrderMapper.xml | 4 +- .../mapper/WmsStructuralPackageMapper.xml | 45 ++++--- .../WmsStructuralPackageOrderTrayMapper.xml | 6 +- .../starter/service/BomMaterialService.java | 23 ++++ 15 files changed, 194 insertions(+), 80 deletions(-) create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/MaterialCategoryVO.java create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialCategoryQO.java diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/MaterialController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/MaterialController.java index 7dce57b0..edb41df5 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/MaterialController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/MaterialController.java @@ -4,6 +4,7 @@ import com.nflg.wms.admin.service.MaterialControllerService; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.dto.BomMaterialDTO; +import com.nflg.wms.common.pojo.dto.MaterialCategoryVO; import com.nflg.wms.common.pojo.qo.BomMaterialListQO; import com.nflg.wms.common.pojo.qo.MaterialAddQO; import com.nflg.wms.common.pojo.qo.MaterialSearchQO; @@ -124,6 +125,15 @@ public class MaterialController extends BaseController { return materialControllerService.uploadZip(response,file); } + /** + * 获取物料分类 + * @param name 分类名称 + */ + @GetMapping("getCategory") + public ApiResult> getCategory(@RequestParam(required = false) String name) { + return ApiResult.success(materialControllerService.getCategory(name)); + } + /** * 搜索主物料系统物料信息 */ diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java index 3056b16b..0d1f7341 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalOrderController.java @@ -3,7 +3,9 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.StrUtil; +import com.nflg.wms.admin.pojo.dto.SAPMaterialInfoInOrderDTO; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; +import com.nflg.wms.admin.service.SapService; import com.nflg.wms.admin.util.NoUtil; import com.nflg.wms.admin.util.PdfGeneratorUtil; import com.nflg.wms.admin.util.QRCodeUtil; @@ -11,6 +13,7 @@ import com.nflg.wms.admin.util.ThymeleafUtil; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.dto.DeliverNormalOrderItemDTO; +import com.nflg.wms.common.pojo.dto.SAPOrderDTO; import com.nflg.wms.common.pojo.qo.DeliverNormalOrderSaveItemQO; import com.nflg.wms.common.pojo.qo.DeliverNormalOrderSaveQO; import com.nflg.wms.common.pojo.qo.DeliverNormalOrderSearchQO; @@ -21,7 +24,6 @@ import com.nflg.wms.common.util.VUtil; import com.nflg.wms.repository.entity.UserSupplier; import com.nflg.wms.repository.entity.WmsNormalPrintOrder; import com.nflg.wms.repository.entity.WmsSrmOrder; -import com.nflg.wms.repository.entity.WmsSrmOrderItem; import com.nflg.wms.repository.service.IUserSupplierService; import com.nflg.wms.repository.service.IWmsSrmOrderItemService; import com.nflg.wms.repository.service.IWmsSrmOrderService; @@ -30,6 +32,7 @@ import com.nflg.wms.starter.BaseController; 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.core.io.ClassPathResource; @@ -68,6 +71,9 @@ public class NormalOrderController extends BaseController { @Resource private BasdeSerialNumberControllerService serialNumberControllerService; + @Resource + private SapService sapService; + /** * 保存 */ @@ -208,7 +214,7 @@ public class NormalOrderController extends BaseController { exportPdfInAll(convert(orders), response); } - private List convert(List orders) throws Exception { + private List convert(List orders) { List datas = new ArrayList<>(); for (DeliverNormalOrderVO order : orders) { List indexNos = StrUtil.split(order.getIndexNo(), ","); @@ -255,68 +261,76 @@ public class NormalOrderController extends BaseController { * @param id 送货单id */ @GetMapping("getDeliverOrderItems") - public ApiResult> getDeliverOrderItems(@Valid @RequestParam @NotNull Long id) { - return ApiResult.success(srmOrderItemService.getByDeliverOrderId(id)); + public ApiResult> getDeliverOrderItems(@Valid @RequestParam @NotNull Long id) { + WmsSrmOrder order = srmOrderService.getById(id); + VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("送货单不存在"); + return ApiResult.success(srmOrderItemService.getByDeliverOrderId(id).stream().map(it -> { + SAPMaterialInfoInOrderDTO sapOrder = CollectionUtil.get(sapService.zim004(it.getPoNum(), order.getSupplierNum(), it.getItemCode()), 0); + SAPOrderDTO vo = new SAPOrderDTO() + .setOrderNo(it.getPoNum()) + .setOrderRowNo(it.getPoLineNumber()) + .setNoteNum(it.getNoteNum()) + .setLineNumber(it.getLineNumber()) + .setMaterialNo(it.getItemCode()) + .setMaterialDesc(it.getItemName()) + .setPlanNum(it.getOrderQty()) + .setTransportNum(it.getDeliveryQty()) + .setBatchNo(NoUtil.getBatchNo(order.getSupplierNum())); + if (Objects.nonNull(sapOrder)) { + vo.setLbprt(sapOrder.getLbprt()) + .setUnit(sapOrder.getMeins()) + .setKzkri(sapOrder.getKzkri()); + } + return vo; + }).toList() + ); +// return ApiResult.success(Collections.EMPTY_LIST); } /** * 逐个打印送货单 - * @param id 要打印的送货单id + * @param datas 要打印的数据 */ - @GetMapping("deliver/exportPdfPerPage") - public void exportDeliverOrderPdfPerPage(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { -// List orders=new ArrayList<>(); -// for (int i = 0,count=RandomUtil.randomInt(1,50); i < count; i++) { -// orders.add(new WmsSrmOrderItem() -// .setId(IdUtil.getSnowflakeNextId()) -// .setItemCode(RandomUtil.randomNumbers(10)) -// .setItemName(RandomUtil.randomString(10)) -// .setOrderQty(RandomUtil.randomBigDecimal(new BigDecimal("1"),new BigDecimal("100"))) -// ); -// } - WmsSrmOrder order = srmOrderService.getById(id); - VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("送货单不存在"); - List orders = srmOrderItemService.getByDeliverOrderId(id); - VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(orders)).throwMessage("没有需要打印的数据"); - exportPdfPerPage(convert1(order.getSupplierNum(), orders), response); + @PostMapping("deliver/exportPdfPerPage") + public void exportDeliverOrderPdfPerPage(HttpServletResponse response, @Valid @RequestBody @NotEmpty List datas) throws Exception { + exportPdfPerPage(convert1(datas.get(0).getSupplierNo(), datas), response); } /** * 整张打印送货单 - * @param id 要打印的送货单id + * @param datas 要打印的数据 */ - @GetMapping("deliver/exportPdfOnePage") - public void exportDeliverOrderPdfOnePage(HttpServletResponse response, @Valid @RequestParam @NotNull Long id) throws Exception { -// List orders=new ArrayList<>(); -// for (int i = 0,count=RandomUtil.randomInt(1,50); i < count; i++) { -// orders.add(new WmsSrmOrderItem() -// .setId(IdUtil.getSnowflakeNextId()) -// .setItemCode(RandomUtil.randomNumbers(10)) -// .setItemName(RandomUtil.randomString(10)) -// .setOrderQty(RandomUtil.randomBigDecimal(new BigDecimal("1"),new BigDecimal("100"))) -// ); -// } - WmsSrmOrder order = srmOrderService.getById(id); - VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("送货单不存在"); - List items = srmOrderItemService.getByDeliverOrderId(id); - VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(items)).throwMessage("没有需要打印的数据"); - exportPdfInAll(convert1(order.getSupplierNum(), items), response); + @PostMapping("deliver/exportPdfOnePage") + public void exportDeliverOrderPdfOnePage(HttpServletResponse response, @Valid @RequestBody @NotEmpty List datas) throws Exception { + exportPdfInAll(convert1(datas.get(0).getSupplierNo(), datas), response); } - private List convert1(String supplierNo, List orders) throws Exception { + private List convert1(String supplierNo, List orders) throws Exception { List datas = new ArrayList<>(); - for (WmsSrmOrderItem order : orders) { - DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO(); - dto.setMaterialNo(order.getItemCode()); - dto.setMaterialDesc(order.getItemName()); - dto.setExternalOrderNo(order.getPoNum()); - dto.setRowNo(order.getPoLineNumber()); - dto.setIndex(0); - dto.setPrintNo(order.getId() + "-" + 0); - dto.setPrintNum(DF.format(order.getOrderQty())); - dto.setBatchNo(NoUtil.getBatchNo(supplierNo)); - dto.setQrCode(QRCodeUtil.generateQRCodeBase64(generateQRContent(dto, ""), 100, 100)); - datas.add(dto); + for (DeliverNormalOrderSaveItemQO order : orders) { + List indexNos = StrUtil.split(order.getIndexNo(), ","); + for (int i = 0; i < order.getLableNum(); i++) { + DeliverNormalOrderItemDTO dto = new DeliverNormalOrderItemDTO(); + dto.setMaterialNo(order.getMaterialNo()); + dto.setMaterialDesc(order.getMaterialDesc()); + dto.setExternalOrderNo(order.getExternalOrderNo()); + dto.setRowNo(order.getRowNo()); + dto.setBatchNo(NoUtil.getBatchNo(supplierNo)); + dto.setIndex(i); + dto.setPrintNo(order.getId() + "-" + i); + if (i == order.getLableNum() - 1) { + BigDecimal n = order.getBatchNum().divideAndRemainder(order.getMinPackageNum())[1]; + if (n.compareTo(BigDecimal.ZERO) == 0) { + dto.setPrintNum(DF.format(order.getMinPackageNum())); + } else { + dto.setPrintNum(DF.format(n)); + } + } else { + dto.setPrintNum(DF.format(order.getMinPackageNum())); + } + dto.setQrCode(QRCodeUtil.generateQRCodeBase64(generateQRContent(dto, CollectionUtil.get(indexNos, i)), 100, 100)); + datas.add(dto); + } } return datas; } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/MaterialControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/MaterialControllerService.java index 7b9efef1..eef49c4e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/MaterialControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/MaterialControllerService.java @@ -327,4 +327,8 @@ public class MaterialControllerService { .addSheet(new ListSheet<>(datas).setRowHeight(100)) .writeTo(response.getOutputStream()); } + + public List getCategory(String name) { + return bomMaterialService.getCategory(name); + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/MaterialCategoryVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/MaterialCategoryVO.java new file mode 100644 index 00000000..cbb444bb --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/MaterialCategoryVO.java @@ -0,0 +1,21 @@ +package com.nflg.wms.common.pojo.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class MaterialCategoryVO { + + /** + * 分类编码 + */ + private String categoryCode; + + /** + * 分类名称 + */ + private String categoryName; + + private List children; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java index 9bc8f414..0b94dd9f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/SAPOrderDTO.java @@ -91,4 +91,14 @@ public class SAPOrderDTO { * 标志:关键部件 */ private String kzkri; + + /** + * 收货单号 + */ + private String noteNum; + + /** + * 送货单行号 + */ + private String lineNumber; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BomMaterialListQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BomMaterialListQO.java index 53fb8d66..394f2898 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BomMaterialListQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/BomMaterialListQO.java @@ -23,4 +23,9 @@ public class BomMaterialListQO extends PageQO{ * 物料分类,不需要设置 */ private int materialClass=0; + + /** + * 物料一级分类编码 + */ + private String firstMaterialCategoryCode; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialCategoryQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialCategoryQO.java new file mode 100644 index 00000000..74ad8709 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/MaterialCategoryQO.java @@ -0,0 +1,19 @@ +package com.nflg.wms.common.pojo.qo; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class MaterialCategoryQO { + + /** + * 分类名称 + */ + private String categoryName; + + /** + * 状态 0:不启用1:启用 + */ + private Integer enableState; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java index ee01979a..8d568614 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/PackageAddQO.java @@ -33,7 +33,6 @@ public class PackageAddQO { /** * 总重 */ - @NotNull private BigDecimal weight; /** @@ -45,7 +44,6 @@ public class PackageAddQO { /** * 种类 */ - @NotBlank private String cate; /** diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverNormalOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverNormalOrderVO.java index 64611a4a..9acb2c1e 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverNormalOrderVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DeliverNormalOrderVO.java @@ -42,6 +42,11 @@ public class DeliverNormalOrderVO { */ private String externalDeliverNo; + /** + * 送货单行号 + */ + private String externalDeliverRowNo; + /** * 订单号 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/UserServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/UserServiceImpl.java index c65f19bb..42c3d1e0 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/UserServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/UserServiceImpl.java @@ -39,7 +39,7 @@ public class UserServiceImpl extends ServiceImpl implements IU @Override public User getByCode(String code) { - return lambdaQuery().eq(User::getUserCode, code).one(); + return lambdaQuery().apply("LOWER({0}) = LOWER({1})", "user_code", code).one(); } @Transactional diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsNormalPrintOrderMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsNormalPrintOrderMapper.xml index 405236b3..320c1cd7 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsNormalPrintOrderMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsNormalPrintOrderMapper.xml @@ -34,7 +34,7 @@ select pdo.*, us.supplier_code, us.supplier_name,di."name" AS "factory_no" from wms_structural_package_deliver_order pdo - inner join user_supplier us on pdo.supplier_id=us.user_id + inner join user_supplier us on pdo.supplier_id=us.id LEFT JOIN dictionary_item di ON pdo.factory_id=di."id" @@ -68,7 +68,7 @@ FROM wms_structural_package_order o inner join wms_structural_package_deliver_order_map om on o.id = om.order_id LEFT JOIN wms_workbench wb ON o.workbench_id = wb."id" - LEFT JOIN user_supplier us ON o.supplier_id = us.user_id + LEFT JOIN user_supplier us ON o.supplier_id = us.id LEFT JOIN wms_structural_package sp ON o.package_id = sp."id" LEFT JOIN wms_model m on o.model_id = m."id" where om.deliver_id = #{id} diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml index 916bba78..c3cb58b4 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsStructuralPackageMapper.xml @@ -3,26 +3,31 @@