feat(inventory): 添加储位管理功能支持
- 在OutDifferenceItemVO中新增推荐储位和扫码储位字段 - 修改OutMaterialScanRecord添加基于储位的唯一键生成 - 更新InventoryController中的库存出库逻辑,增加储位信息传递 - 在扫描记录控制器中实现储位匹配和差异对比功能 - 修复注释中的布尔值说明错误 - 优化代码格式和空行清理
This commit is contained in:
parent
7fab12f680
commit
a76ee52afb
|
|
@ -81,6 +81,9 @@ public class InCostCenterBackController extends BaseController {
|
||||||
@Resource
|
@Resource
|
||||||
private IWmsQrCodeMasterService qrCodeMasterService;
|
private IWmsQrCodeMasterService qrCodeMasterService;
|
||||||
|
|
||||||
|
// @Resource
|
||||||
|
// private IWmsWarehouseService
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询SAP领料订单数据
|
* 查询SAP领料订单数据
|
||||||
*/
|
*/
|
||||||
|
|
@ -183,7 +186,7 @@ public class InCostCenterBackController extends BaseController {
|
||||||
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
|
vo.setLgort2(CollectionUtil.get(storageService.getWarehouseNo(order.getWerks(), item.getMatnr()), 0));
|
||||||
}
|
}
|
||||||
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
|
vo.setLgpbe(storageService.getBinNo(item.getMatnr(), order.getWerks(), vo.getLgort2()));
|
||||||
|
// vo.setIsDisableLocation();
|
||||||
return vo;
|
return vo;
|
||||||
}).toList()
|
}).toList()
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -285,7 +285,8 @@ public class InventoryController extends BaseController {
|
||||||
@PostMapping("getForOut")
|
@PostMapping("getForOut")
|
||||||
public ApiResult<List<InventoryForOutVO>> getForOut(@Valid @RequestBody @NotNull InventoryForOutQO qo) {
|
public ApiResult<List<InventoryForOutVO>> getForOut(@Valid @RequestBody @NotNull InventoryForOutQO qo) {
|
||||||
List<WmsInventory> inventories = inventoryService.getForOutFIFO(qo.getFactoryNo(), qo.getWarehouseNo()
|
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<>();
|
List<InventoryForOutVO> vos = new ArrayList<>();
|
||||||
qo.getItems().forEach(item -> {
|
qo.getItems().forEach(item -> {
|
||||||
InventoryForOutVO vo = new InventoryForOutVO()
|
InventoryForOutVO vo = new InventoryForOutVO()
|
||||||
|
|
@ -298,7 +299,7 @@ public class InventoryController extends BaseController {
|
||||||
BigDecimal num = item.getNum();
|
BigDecimal num = item.getNum();
|
||||||
for (WmsInventory inventory : mis) {
|
for (WmsInventory inventory : mis) {
|
||||||
BigDecimal outNum = NumberUtil.min(num, inventory.getNum());
|
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);
|
num = num.subtract(outNum);
|
||||||
if (num.compareTo(BigDecimal.ZERO) == 0) {
|
if (num.compareTo(BigDecimal.ZERO) == 0) {
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -103,15 +103,19 @@ public class ScanRecordController extends BaseController {
|
||||||
OutDifferenceItemVO itemVO = new OutDifferenceItemVO()
|
OutDifferenceItemVO itemVO = new OutDifferenceItemVO()
|
||||||
.setRecommendbatchNo(item.getBatchNo())
|
.setRecommendbatchNo(item.getBatchNo())
|
||||||
.setRecommendSerialNo(item.getSerialNo())
|
.setRecommendSerialNo(item.getSerialNo())
|
||||||
|
.setRecommendBinNo(item.getBinNo())
|
||||||
.setRecommendNum(item.getNum());
|
.setRecommendNum(item.getNum());
|
||||||
List<OutMaterialScanRecord> mrecords = records.stream()
|
List<OutMaterialScanRecord> mrecords = records.stream()
|
||||||
.filter(r -> StrUtil.equals(r.getMaterialNo(), dto.getMaterialNo())
|
.filter(r -> StrUtil.equals(r.getMaterialNo(), dto.getMaterialNo())
|
||||||
&& StrUtil.equals(r.getBatchNo(), item.getBatchNo())
|
&& 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();
|
.toList();
|
||||||
if (CollectionUtil.isNotEmpty(mrecords)) {
|
if (CollectionUtil.isNotEmpty(mrecords)) {
|
||||||
itemVO.setScanBatchNo(item.getBatchNo());
|
itemVO.setScanBatchNo(item.getBatchNo());
|
||||||
itemVO.setScanSerialNo(item.getSerialNo());
|
itemVO.setScanSerialNo(item.getSerialNo());
|
||||||
|
itemVO.setScanBinNo(item.getBinNo());
|
||||||
itemVO.setScanNum(mrecords.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add));
|
itemVO.setScanNum(mrecords.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||||
records.removeAll(mrecords);
|
records.removeAll(mrecords);
|
||||||
}
|
}
|
||||||
|
|
@ -126,8 +130,8 @@ public class ScanRecordController extends BaseController {
|
||||||
OutDifferenceVO vo = vos.stream()
|
OutDifferenceVO vo = vos.stream()
|
||||||
.filter(it -> StrUtil.equals(it.getMaterialNo(), k))
|
.filter(it -> StrUtil.equals(it.getMaterialNo(), k))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.orElseGet(()-> {
|
.orElseGet(() -> {
|
||||||
OutDifferenceVO tv=new OutDifferenceVO().setMaterialNo(k);
|
OutDifferenceVO tv = new OutDifferenceVO().setMaterialNo(k);
|
||||||
vos.add(tv);
|
vos.add(tv);
|
||||||
return tv;
|
return tv;
|
||||||
});
|
});
|
||||||
|
|
@ -137,9 +141,11 @@ public class ScanRecordController extends BaseController {
|
||||||
vo.getItems().add(new OutDifferenceItemVO()
|
vo.getItems().add(new OutDifferenceItemVO()
|
||||||
.setRecommendbatchNo("")
|
.setRecommendbatchNo("")
|
||||||
.setRecommendSerialNo("")
|
.setRecommendSerialNo("")
|
||||||
.setRecommendNum(BigDecimal.ZERO)
|
.setRecommendBinNo("")
|
||||||
|
// .setRecommendNum(BigDecimal.ZERO)
|
||||||
.setScanBatchNo(StrUtil.split(key, "|").get(1))
|
.setScanBatchNo(StrUtil.split(key, "|").get(1))
|
||||||
.setScanSerialNo(StrUtil.split(key, "|").get(2))
|
.setScanSerialNo(StrUtil.split(key, "|").get(2))
|
||||||
|
.setScanBinNo(StrUtil.split(key, "|").get(3))
|
||||||
.setScanNum(vv.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
.setScanNum(vv.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -176,4 +176,11 @@ public class OutMaterialScanRecord {
|
||||||
public String getKey8() {
|
public String getKey8() {
|
||||||
return materialNo + "|" + batchNo + "|" + this.serialNo;
|
return materialNo + "|" + batchNo + "|" + this.serialNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String key9;
|
||||||
|
|
||||||
|
public String getKey9() {
|
||||||
|
return materialNo + "|" + batchNo + "|" + this.serialNo + "|" + this.binNo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,11 @@ public class OutDifferenceItemVO {
|
||||||
*/
|
*/
|
||||||
private String recommendSerialNo;
|
private String recommendSerialNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推荐储位
|
||||||
|
*/
|
||||||
|
private String recommendBinNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推荐数量
|
* 推荐数量
|
||||||
*/
|
*/
|
||||||
|
|
@ -34,6 +39,11 @@ public class OutDifferenceItemVO {
|
||||||
*/
|
*/
|
||||||
private String scanSerialNo;
|
private String scanSerialNo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扫码储位
|
||||||
|
*/
|
||||||
|
private String scanBinNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫码数量
|
* 扫码数量
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ public class OutProduceItemVO {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否启用储位管理
|
* 是否启用储位管理,true为启用,false为不启用
|
||||||
*/
|
*/
|
||||||
@JsonProperty("isDisableLocation")
|
@JsonProperty("isDisableLocation")
|
||||||
private Boolean isDisableLocation = true;
|
private Boolean isDisableLocation = true;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue