feat(inventory): 添加储位管理功能支持

- 在OutDifferenceItemVO中新增推荐储位和扫码储位字段
- 修改OutMaterialScanRecord添加基于储位的唯一键生成
- 更新InventoryController中的库存出库逻辑,增加储位信息传递
- 在扫描记录控制器中实现储位匹配和差异对比功能
- 修复注释中的布尔值说明错误
- 优化代码格式和空行清理
This commit is contained in:
曹鹏飞 2026-03-18 18:42:49 +08:00
parent 7fab12f680
commit a76ee52afb
6 changed files with 35 additions and 8 deletions

View File

@ -81,6 +81,9 @@ public class InCostCenterBackController extends BaseController {
@Resource
private IWmsQrCodeMasterService qrCodeMasterService;
// @Resource
// private IWmsWarehouseService
/**
* 查询SAP领料订单数据
*/
@ -183,7 +186,7 @@ public class InCostCenterBackController extends BaseController {
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
}
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
// vo.setIsDisableLocation();
return vo;
}).toList()
)

View File

@ -285,7 +285,8 @@ public class InventoryController extends BaseController {
@PostMapping("getForOut")
public ApiResult<List<InventoryForOutVO>> getForOut(@Valid @RequestBody @NotNull InventoryForOutQO qo) {
List<WmsInventory> inventories = inventoryService.getForOutFIFO(qo.getFactoryNo(), qo.getWarehouseNo()
, qo.getItems().stream().map(InventoryForOutItemQO::getMaterialNo).collect(Collectors.toSet()));
, qo.getItems().stream().map(InventoryForOutItemQO::getMaterialNo).collect(Collectors.toSet())
);
List<InventoryForOutVO> vos = new ArrayList<>();
qo.getItems().forEach(item -> {
InventoryForOutVO vo = new InventoryForOutVO()
@ -298,7 +299,7 @@ public class InventoryController extends BaseController {
BigDecimal num = item.getNum();
for (WmsInventory inventory : mis) {
BigDecimal outNum = NumberUtil.min(num, inventory.getNum());
vo.getItems().add(new InventoryForOutItemVO(inventory.getBatchNo(), inventory.getSerialNo(), outNum));
vo.getItems().add(new InventoryForOutItemVO(inventory.getBatchNo(), inventory.getSerialNo(), inventory.getBinLocation(), outNum));
num = num.subtract(outNum);
if (num.compareTo(BigDecimal.ZERO) == 0) {
break;

View File

@ -103,15 +103,19 @@ public class ScanRecordController extends BaseController {
OutDifferenceItemVO itemVO = new OutDifferenceItemVO()
.setRecommendbatchNo(item.getBatchNo())
.setRecommendSerialNo(item.getSerialNo())
.setRecommendBinNo(item.getBinNo())
.setRecommendNum(item.getNum());
List<OutMaterialScanRecord> mrecords = records.stream()
.filter(r -> StrUtil.equals(r.getMaterialNo(), dto.getMaterialNo())
&& StrUtil.equals(r.getBatchNo(), item.getBatchNo())
&& StrUtil.equals(r.getSerialNo(), item.getSerialNo()))
&& StrUtil.equals(r.getSerialNo(), item.getSerialNo())
&& StrUtil.equals(r.getBinNo(), item.getBinNo())
)
.toList();
if (CollectionUtil.isNotEmpty(mrecords)) {
itemVO.setScanBatchNo(item.getBatchNo());
itemVO.setScanSerialNo(item.getSerialNo());
itemVO.setScanBinNo(item.getBinNo());
itemVO.setScanNum(mrecords.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add));
records.removeAll(mrecords);
}
@ -126,8 +130,8 @@ public class ScanRecordController extends BaseController {
OutDifferenceVO vo = vos.stream()
.filter(it -> StrUtil.equals(it.getMaterialNo(), k))
.findFirst()
.orElseGet(()-> {
OutDifferenceVO tv=new OutDifferenceVO().setMaterialNo(k);
.orElseGet(() -> {
OutDifferenceVO tv = new OutDifferenceVO().setMaterialNo(k);
vos.add(tv);
return tv;
});
@ -137,9 +141,11 @@ public class ScanRecordController extends BaseController {
vo.getItems().add(new OutDifferenceItemVO()
.setRecommendbatchNo("")
.setRecommendSerialNo("")
.setRecommendNum(BigDecimal.ZERO)
.setRecommendBinNo("")
// .setRecommendNum(BigDecimal.ZERO)
.setScanBatchNo(StrUtil.split(key, "|").get(1))
.setScanSerialNo(StrUtil.split(key, "|").get(2))
.setScanBinNo(StrUtil.split(key, "|").get(3))
.setScanNum(vv.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)));
});
});

View File

@ -176,4 +176,11 @@ public class OutMaterialScanRecord {
public String getKey8() {
return materialNo + "|" + batchNo + "|" + this.serialNo;
}
@Transient
private String key9;
public String getKey9() {
return materialNo + "|" + batchNo + "|" + this.serialNo + "|" + this.binNo;
}
}

View File

@ -19,6 +19,11 @@ public class OutDifferenceItemVO {
*/
private String recommendSerialNo;
/**
* 推荐储位
*/
private String recommendBinNo;
/**
* 推荐数量
*/
@ -34,6 +39,11 @@ public class OutDifferenceItemVO {
*/
private String scanSerialNo;
/**
* 扫码储位
*/
private String scanBinNo;
/**
* 扫码数量
*/

View File

@ -78,7 +78,7 @@ public class OutProduceItemVO {
}
/**
* 是否启用储位管理
* 是否启用储位管理true为启用,false为不启用
*/
@JsonProperty("isDisableLocation")
private Boolean isDisableLocation = true;