fix(logic): 修复齐套物料处理逻辑并优化空值处理

- 在多个控制器中添加useChildren字段判断条件,防止扫码子项时的错误验证
- 将findFirst().get()替换为map().orElse("")模式,避免潜在的NoSuchElementException异常
- 在OutProduceSubmitItemQO中新增useChildren字段用于标识是否扫码子项
- 修复代码中的空行和格式问题,提升代码可读性
This commit is contained in:
曹鹏飞 2026-03-20 14:15:11 +08:00
parent 6983786067
commit 51b2f3b9a3
8 changed files with 28 additions and 24 deletions

View File

@ -408,8 +408,8 @@ public class ComponentOutboundController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -246,7 +246,7 @@ public class OutAssistanceController extends BaseController {
ticketItems.add(ti);
return ti;
});
if (qitem.isQiTao()) {
if (qitem.isQiTao() && !qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs()))
.throwMessage("齐套物料需要提供批次信息");
qitem.getBatchs()
@ -380,8 +380,8 @@ public class OutAssistanceController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -243,7 +243,7 @@ public class OutCostCenterController extends BaseController {
ticketItems.add(ti);
return ti;
});
if (qitem.isQiTao()) {
if (qitem.isQiTao() && !qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs()))
.throwMessage("齐套物料需要提供批次信息");
qitem.getBatchs()
@ -371,8 +371,8 @@ public class OutCostCenterController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -357,7 +357,7 @@ public class OutProduceController extends BaseController {
ticketItems.add(ti);
return ti;
});
if (qitem.isQiTao()) {
if (qitem.isQiTao() && !qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs()))
.throwMessage("齐套物料需要提供批次信息");
qitem.getBatchs()
@ -495,8 +495,8 @@ public class OutProduceController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -283,8 +283,8 @@ public class OutPurchaseController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -276,7 +276,7 @@ public class TransferCompanyController extends BaseController {
ticketItems.add(ti);
return ti;
});
if (qitem.isQiTao()) {
if (qitem.isQiTao() && !qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs()))
.throwMessage("齐套物料需要提供批次信息");
qitem.getBatchs()
@ -416,8 +416,8 @@ public class TransferCompanyController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -275,7 +275,6 @@ public class TransferFactoryController extends BaseController {
.list();
qrCodeMasters.addAll(tempList);
}
request.getItems().forEach(qitem -> {
WmsTransferFactoryItem item = datas.stream().filter(d -> Objects.equals(d.getId(), qitem.getItemId())).findFirst().orElse(null);
VUtil.trueThrowBusinessError(Objects.isNull(item)).throwMessage("物料" + qitem.getMaterialNo() + "不需要出库");
@ -292,7 +291,7 @@ public class TransferFactoryController extends BaseController {
ticketItems.add(ti);
return ti;
});
if (qitem.isQiTao()) {
if (qitem.isQiTao() && !qitem.isUseChildren()) {
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(qitem.getBatchs()))
.throwMessage("齐套物料需要提供批次信息");
qitem.getBatchs()
@ -408,8 +407,8 @@ public class TransferFactoryController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()
@ -500,8 +499,8 @@ public class TransferFactoryController extends BaseController {
.setBinLocation(qrCodeMasters.stream()
.filter(qr -> StrUtil.equals(qr.getBarcodeCode(), list.get(0).getUniqNo()))
.findFirst()
.get()
.getBinLocation()
.map(WmsQrCodeMaster::getBinLocation)
.orElse("")
)
.setNum(list.stream().map(OutMaterialScanRecord::getNum).reduce(BigDecimal.ZERO, BigDecimal::add))
).toList()

View File

@ -30,6 +30,11 @@ public class OutProduceSubmitItemQO {
@JsonProperty("isQiTao")
private boolean isQiTao;
/**
* 是否扫码子项
*/
private boolean useChildren;
/**
* 批次列表
*/