From 680269fea53b222d2471c96face396ab4f034929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 24 Mar 2026 16:24:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=B7=BB=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E9=A1=B9=E6=95=B0=E9=87=8F=E4=BF=AE=E6=94=B9=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96=E7=9B=B8=E5=85=B3=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在ApplyReturnRequestItemVO中添加剩余数量和领料数量最小值字段 - 在OutAssistanceItemVO、OutCostcenterInfoItemVO中添加领料数量最小值计算逻辑 - 在OutProduceInfoItemVO中添加申请数量最小值计算逻辑 - 新增UpdateItemNumRequest请求类用于接收数量修改参数 - 在OutAssistanceController、OutCostCenterController、OutProduceController中添加updateItemNum接口 - 修复OutProduceController中解锁库存方法的注释问题 - 在测试类中添加数量计算验证逻辑 --- .../controller/OutAssistanceController.java | 19 ++++++- .../controller/OutCostCenterController.java | 17 ++++++ .../controller/OutProduceController.java | 52 +++++++++++++------ .../pojo/request/UpdateItemNumRequest.java | 21 ++++++++ .../test/java/com/nflg/wms/admin/ATest.java | 28 +++++++--- .../pojo/vo/ApplyReturnRequestItemVO.java | 15 ++++++ .../common/pojo/vo/OutAssistanceItemVO.java | 9 ++++ .../pojo/vo/OutCostcenterInfoItemVO.java | 9 ++++ .../common/pojo/vo/OutProduceInfoItemVO.java | 9 ++++ 9 files changed, 153 insertions(+), 26 deletions(-) create mode 100644 nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/UpdateItemNumRequest.java diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java index c2ab64d6..0efd8afa 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutAssistanceController.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; +import com.nflg.wms.admin.pojo.request.UpdateItemNumRequest; import com.nflg.wms.admin.repository.InventoryForOutRepository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; @@ -168,6 +169,22 @@ public class OutAssistanceController extends BaseController { return ApiResult.success(vo); } + /** + * 修改订单项数量 + */ + @PostMapping("updateItemNum") + public ApiResult updateItemNum(@Valid @RequestBody UpdateItemNumRequest request) { + WmsOutAssistanceItem item = outAssistanceItemService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项不存在"); + BigDecimal min = item.getNum().subtract(item.getLeft()); + VUtil.trueThrowBusinessError(request.getNum().compareTo(min) < 0).throwMessage("数量不能小于" + min); + BigDecimal difference = request.getNum().subtract(item.getNum()); + item.setLeft(item.getLeft().add(difference)); + item.setNum(request.getNum()); + outAssistanceItemService.updateById(item); + return ApiResult.success(); + } + /** * 获取订单项(PDA使用) */ @@ -433,7 +450,7 @@ public class OutAssistanceController extends BaseController { ); Map> dmaps = records.stream().collect(Collectors.groupingBy(OutMaterialScanRecord::getKey7)); OptRecordDTO optRecordDTO = new OptRecordDTO(); - optRecordDTO.setOperationType((short)1); + optRecordDTO.setOperationType((short) 1); optRecordDTO.setOrderId(order.getNo()); optRecordService.add(optRecordDTO); SubcontractedOrderConfirmDTO dto = sapService.zwm3a04(new SubcontractedOrderConfirmQO() diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java index 21e736df..6a9c739d 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutCostCenterController.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; +import com.nflg.wms.admin.pojo.request.UpdateItemNumRequest; import com.nflg.wms.admin.repository.InventoryForOutRepository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; @@ -171,6 +172,22 @@ public class OutCostCenterController extends BaseController { return ApiResult.success(vo); } + /** + * 修改订单项数量 + */ + @PostMapping("updateItemNum") + public ApiResult updateItemNum(@Valid @RequestBody UpdateItemNumRequest request) { + WmsOutCostcenterItem item = outCostcenterItemService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项不存在"); + BigDecimal min = item.getNum().subtract(item.getLeft()); + VUtil.trueThrowBusinessError(request.getNum().compareTo(min) < 0).throwMessage("数量不能小于" + min); + BigDecimal difference = request.getNum().subtract(item.getNum()); + item.setLeft(item.getLeft().add(difference)); + item.setNum(request.getNum()); + outCostcenterItemService.updateById(item); + return ApiResult.success(); + } + /** * 获取订单项(PDA使用) */ diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java index 74998d07..f7309e16 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/OutProduceController.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.nflg.wms.admin.pojo.dto.PdfPageDTO; +import com.nflg.wms.admin.pojo.request.UpdateItemNumRequest; import com.nflg.wms.admin.repository.InventoryForOutRepository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; @@ -267,23 +268,25 @@ public class OutProduceController extends BaseController { return ApiResult.success(outProduceService.search(request)); } - /** - * 解锁库存(根据订单) - */ - @PostMapping("0/releaseNumByOrder") - public ApiResult releaseNumByOrder(@Valid @RequestBody @NotEmpty List ids) { - outProduceService.releaseNum(ids); - return ApiResult.success(); - } - - /** - * 解锁库存(根据明细) - */ - @PostMapping("0/releaseNumByItem") - public ApiResult releaseNumByItem(@Valid @RequestBody @NotEmpty List ids) { - outProduceItemService.releaseNum(ids); - return ApiResult.success(); - } +// /** +// * 解锁库存(根据订单) +// * @deprecated 不需要这个方法了 +// */ +// @PostMapping("0/releaseNumByOrder") +// public ApiResult releaseNumByOrder(@Valid @RequestBody @NotEmpty List ids) { +// outProduceService.releaseNum(ids); +// return ApiResult.success(); +// } +// +// /** +// * 解锁库存(根据明细) +// * @deprecated 不需要这个方法了 +// */ +// @PostMapping("0/releaseNumByItem") +// public ApiResult releaseNumByItem(@Valid @RequestBody @NotEmpty List ids) { +// outProduceItemService.releaseNum(ids); +// return ApiResult.success(); +// } /** * 修改备注 @@ -321,6 +324,21 @@ public class OutProduceController extends BaseController { return ApiResult.success(vo); } + /** + * 修改订单项数量 + */ + @PostMapping("updateItemNum") + public ApiResult updateItemNum(@Valid @RequestBody UpdateItemNumRequest request) { + WmsOutProduceItem item = outProduceItemService.getById(request.getId()); + VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("订单项不存在"); + VUtil.trueThrowBusinessError(request.getNum().compareTo(item.getNum()) < 0).throwMessage("数量不能小于" + item.getNum()); + BigDecimal difference = request.getNum().subtract(item.getSqsl()); + item.setLockNum(item.getLockNum().add(difference)); + item.setSqsl(request.getNum()); + outProduceItemService.updateById(item); + return ApiResult.success(); + } + /** * 获取订单项(PDA使用) */ diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/UpdateItemNumRequest.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/UpdateItemNumRequest.java new file mode 100644 index 00000000..80571aec --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/UpdateItemNumRequest.java @@ -0,0 +1,21 @@ +package com.nflg.wms.admin.pojo.request; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UpdateItemNumRequest { + + @NotNull + private Long id; + + /** + * 新的数量 + */ + @NotNull + @Min(value = 0) + private BigDecimal num; +} diff --git a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/ATest.java b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/ATest.java index 67f7e921..e54fc93b 100644 --- a/nflg-wms-admin/src/test/java/com/nflg/wms/admin/ATest.java +++ b/nflg-wms-admin/src/test/java/com/nflg/wms/admin/ATest.java @@ -3,26 +3,38 @@ package com.nflg.wms.admin; import cn.hutool.core.util.StrUtil; import com.nflg.wms.common.util.DateTimeUtil; import org.junit.jupiter.api.Test; +import org.springframework.util.Assert; +import java.math.BigDecimal; import java.time.LocalDateTime; public class ATest { @Test - public void test1(){ - Long index=2L; - System.out.println("K"+ StrUtil.padPre(String.valueOf(index),6,"0")); + public void test1() { + Long index = 2L; + System.out.println("K" + StrUtil.padPre(String.valueOf(index), 6, "0")); } @Test - public void test2(){ - String index="0000"; - System.out.println(StrUtil.removeAllPrefix(index,"0")); + public void test2() { + String index = "0000"; + System.out.println(StrUtil.removeAllPrefix(index, "0")); } @Test - public void test3(){ - String date=DateTimeUtil.format(LocalDateTime.now(), "yyMMdd"); + public void test3() { + String date = DateTimeUtil.format(LocalDateTime.now(), "yyMMdd"); System.out.println(date); } + + @Test + public void test4() { + BigDecimal num1 = new BigDecimal("5"); + BigDecimal num2 = new BigDecimal("2"); + BigDecimal left = new BigDecimal("3"); + BigDecimal a = left.add(num2.subtract(num1)); + System.out.println(a); + Assert.isTrue(a.compareTo(BigDecimal.ZERO) == 0, "数量错误"); + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ApplyReturnRequestItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ApplyReturnRequestItemVO.java index 74aa218b..5d8c34c0 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ApplyReturnRequestItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ApplyReturnRequestItemVO.java @@ -1,5 +1,6 @@ package com.nflg.wms.common.pojo.vo; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import lombok.experimental.Accessors; @@ -56,6 +57,20 @@ public class ApplyReturnRequestItemVO { */ private BigDecimal requestQuantity; + /** + * 剩余数量 + */ + private BigDecimal left; + + /** + * 领料数量最小值 + */ + private BigDecimal requestQuantityLimit; + + public BigDecimal getRequestQuantityLimit() { + return requestQuantity.subtract(left); + } + /** * 出库状态 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutAssistanceItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutAssistanceItemVO.java index 6d4803c5..8da3c672 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutAssistanceItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutAssistanceItemVO.java @@ -111,6 +111,15 @@ public class OutAssistanceItemVO { */ private BigDecimal left; + /** + * 领料数量最小值 + */ + private BigDecimal numLimit; + + public BigDecimal getNumLimit() { + return num.subtract(left); + } + /** * 发货仓库 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutCostcenterInfoItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutCostcenterInfoItemVO.java index b3f313d2..a31122cd 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutCostcenterInfoItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutCostcenterInfoItemVO.java @@ -105,4 +105,13 @@ public class OutCostcenterInfoItemVO { * 待领数量 */ private BigDecimal left; + + /** + * 领料数量最小值 + */ + private BigDecimal numLimit; + + public BigDecimal getNumLimit() { + return num.subtract(left); + } } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutProduceInfoItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutProduceInfoItemVO.java index 98bf605a..a9041eb1 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutProduceInfoItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/OutProduceInfoItemVO.java @@ -126,6 +126,15 @@ public class OutProduceInfoItemVO { */ private BigDecimal lockNum; + /** + * 申请数量最小值 + */ + private BigDecimal sqslLimit; + + public BigDecimal getSqslLimit() { + return num; + } + /** * 已领数量 */