feat(wms): 添加订单项数量修改功能并优化相关实体类

- 在ApplyReturnRequestItemVO中添加剩余数量和领料数量最小值字段
- 在OutAssistanceItemVO、OutCostcenterInfoItemVO中添加领料数量最小值计算逻辑
- 在OutProduceInfoItemVO中添加申请数量最小值计算逻辑
- 新增UpdateItemNumRequest请求类用于接收数量修改参数
- 在OutAssistanceController、OutCostCenterController、OutProduceController中添加updateItemNum接口
- 修复OutProduceController中解锁库存方法的注释问题
- 在测试类中添加数量计算验证逻辑
This commit is contained in:
曹鹏飞 2026-03-24 16:24:13 +08:00
parent 2135376540
commit 680269fea5
9 changed files with 153 additions and 26 deletions

View File

@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO; 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.InventoryForOutRepository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
@ -168,6 +169,22 @@ public class OutAssistanceController extends BaseController {
return ApiResult.success(vo); return ApiResult.success(vo);
} }
/**
* 修改订单项数量
*/
@PostMapping("updateItemNum")
public ApiResult<Void> 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使用 * 获取订单项PDA使用
*/ */

View File

@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO; 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.InventoryForOutRepository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
@ -171,6 +172,22 @@ public class OutCostCenterController extends BaseController {
return ApiResult.success(vo); return ApiResult.success(vo);
} }
/**
* 修改订单项数量
*/
@PostMapping("updateItemNum")
public ApiResult<Void> 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使用 * 获取订单项PDA使用
*/ */

View File

@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.admin.pojo.dto.PdfPageDTO; 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.InventoryForOutRepository;
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository; import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
import com.nflg.wms.admin.service.BasdeSerialNumberControllerService; import com.nflg.wms.admin.service.BasdeSerialNumberControllerService;
@ -267,23 +268,25 @@ public class OutProduceController extends BaseController {
return ApiResult.success(outProduceService.search(request)); return ApiResult.success(outProduceService.search(request));
} }
/** // /**
* 解锁库存根据订单 // * 解锁库存根据订单
*/ // * @deprecated 不需要这个方法了
@PostMapping("0/releaseNumByOrder") // */
public ApiResult<Void> releaseNumByOrder(@Valid @RequestBody @NotEmpty List<Long> ids) { // @PostMapping("0/releaseNumByOrder")
outProduceService.releaseNum(ids); // public ApiResult<Void> releaseNumByOrder(@Valid @RequestBody @NotEmpty List<Long> ids) {
return ApiResult.success(); // outProduceService.releaseNum(ids);
} // return ApiResult.success();
// }
/** //
* 解锁库存根据明细 // /**
*/ // * 解锁库存根据明细
@PostMapping("0/releaseNumByItem") // * @deprecated 不需要这个方法了
public ApiResult<Void> releaseNumByItem(@Valid @RequestBody @NotEmpty List<Long> ids) { // */
outProduceItemService.releaseNum(ids); // @PostMapping("0/releaseNumByItem")
return ApiResult.success(); // public ApiResult<Void> releaseNumByItem(@Valid @RequestBody @NotEmpty List<Long> ids) {
} // outProduceItemService.releaseNum(ids);
// return ApiResult.success();
// }
/** /**
* 修改备注 * 修改备注
@ -321,6 +324,21 @@ public class OutProduceController extends BaseController {
return ApiResult.success(vo); return ApiResult.success(vo);
} }
/**
* 修改订单项数量
*/
@PostMapping("updateItemNum")
public ApiResult<Void> 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使用 * 获取订单项PDA使用
*/ */

View File

@ -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;
}

View File

@ -3,7 +3,9 @@ package com.nflg.wms.admin;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.nflg.wms.common.util.DateTimeUtil; import com.nflg.wms.common.util.DateTimeUtil;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.util.Assert;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
public class ATest { public class ATest {
@ -25,4 +27,14 @@ public class ATest {
String date = DateTimeUtil.format(LocalDateTime.now(), "yyMMdd"); String date = DateTimeUtil.format(LocalDateTime.now(), "yyMMdd");
System.out.println(date); 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, "数量错误");
}
} }

View File

@ -1,5 +1,6 @@
package com.nflg.wms.common.pojo.vo; package com.nflg.wms.common.pojo.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -56,6 +57,20 @@ public class ApplyReturnRequestItemVO {
*/ */
private BigDecimal requestQuantity; private BigDecimal requestQuantity;
/**
* 剩余数量
*/
private BigDecimal left;
/**
* 领料数量最小值
*/
private BigDecimal requestQuantityLimit;
public BigDecimal getRequestQuantityLimit() {
return requestQuantity.subtract(left);
}
/** /**
* 出库状态 * 出库状态
*/ */

View File

@ -111,6 +111,15 @@ public class OutAssistanceItemVO {
*/ */
private BigDecimal left; private BigDecimal left;
/**
* 领料数量最小值
*/
private BigDecimal numLimit;
public BigDecimal getNumLimit() {
return num.subtract(left);
}
/** /**
* 发货仓库 * 发货仓库
*/ */

View File

@ -105,4 +105,13 @@ public class OutCostcenterInfoItemVO {
* 待领数量 * 待领数量
*/ */
private BigDecimal left; private BigDecimal left;
/**
* 领料数量最小值
*/
private BigDecimal numLimit;
public BigDecimal getNumLimit() {
return num.subtract(left);
}
} }

View File

@ -126,6 +126,15 @@ public class OutProduceInfoItemVO {
*/ */
private BigDecimal lockNum; private BigDecimal lockNum;
/**
* 申请数量最小值
*/
private BigDecimal sqslLimit;
public BigDecimal getSqslLimit() {
return num;
}
/** /**
* 已领数量 * 已领数量
*/ */