refactor(wms): 优化无码出库逻辑并移除库存一致性检查
- 替换 existsQrCode 检查为 cannotOutNoScanning 方法调用 - 添加工厂号和仓库号参数到出库验证逻辑 - 移除 quantityConsistencyCheck 方法中的实际库存检查逻辑 - 在多个控制器中统一无码出库验证方式 - 注释掉部分控制器中的二维码存在性检查逻辑 - 保留基础的无码出库限制功能
This commit is contained in:
parent
a6b861b69c
commit
4620719182
|
|
@ -421,7 +421,7 @@ public class ComponentOutboundController extends BaseController {
|
|||
.eq(WmsComponentPackingItem::getPackingId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getOutQty().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getIdnrk()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getIdnrk(),order.getFactoryNo(),item.getLgort()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -475,7 +475,7 @@ public class ComponentOutboundController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(Objects.isNull(packingItem)).throwMessage("无效的装箱单明细");
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(item.getMaterialNo(), packingItem.getIdnrk()))
|
||||
.throwMessage("装箱单明细与物料不匹配:" + item.getMaterialNo());
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(packingItem.getIdnrk()))
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.cannotOutNoScanning(packingItem.getIdnrk(), packing.getFactoryNo(), item.getWarehouseNo()))
|
||||
.throwMessage("物料" + packingItem.getIdnrk() + "已生成二维码,不允许无码出库");
|
||||
|
||||
WmsComponentOutboundItem outboundItem = setWmsComponentOutboundItem(packing, packingItem, outbound, item.getWarehouseNo());
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ public class OutAssistanceController extends BaseController {
|
|||
.eq(WmsOutAssistanceItem::getOrderId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMatnr1()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getMatnr1(),order.getWerks(),order.getLgort1()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -327,7 +327,7 @@ public class OutAssistanceController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
request.getItems()
|
||||
.forEach(data ->
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.quantityConsistencyCheck(data.getMaterialNo(),order.getWerks(),data.getWarehouseNo()))
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.cannotOutNoScanning(data.getMaterialNo(),order.getWerks(),data.getWarehouseNo()))
|
||||
.throwMessage("物料" + data.getMaterialNo() + "不支持无码出库")
|
||||
);
|
||||
WmsOutAssistanceTicket ticket = new WmsOutAssistanceTicket()
|
||||
|
|
|
|||
|
|
@ -299,7 +299,7 @@ public class OutCostCenterController extends BaseController {
|
|||
.eq(WmsOutCostcenterItem::getOrderId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMatnr()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getMatnr(), order.getWerks(), item.getLgort()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -328,7 +328,7 @@ public class OutCostCenterController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
request.getItems()
|
||||
.forEach(data ->
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.quantityConsistencyCheck(data.getMaterialNo(), order.getWerks(), data.getWarehouseNo()))
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.cannotOutNoScanning(data.getMaterialNo(), order.getWerks(), data.getWarehouseNo()))
|
||||
.throwMessage("物料" + data.getMaterialNo() + "不支持无码出库")
|
||||
);
|
||||
WmsOutCostcenterTicket ticket = new WmsOutCostcenterTicket()
|
||||
|
|
|
|||
|
|
@ -426,7 +426,7 @@ public class OutProduceController extends BaseController {
|
|||
.eq(WmsOutProduceItem::getOrderId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getSqsl().subtract(item.getNum()).compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMatnr()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getMatnr(),order.getDwerk(),order.getLgort2()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -455,7 +455,7 @@ public class OutProduceController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在");
|
||||
request.getItems()
|
||||
.forEach(data ->
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.quantityConsistencyCheck(data.getMaterialNo(),order.getDwerk(),data.getWarehouseNo()))
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.cannotOutNoScanning(data.getMaterialNo(),order.getDwerk(),data.getWarehouseNo()))
|
||||
.throwMessage("物料" + data.getMaterialNo() + "不支持无码出库")
|
||||
);
|
||||
WmsOutProduceTicket ticket = new WmsOutProduceTicket()
|
||||
|
|
|
|||
|
|
@ -157,7 +157,7 @@ public class OutPurchaseController extends BaseController {
|
|||
.eq(WmsReturnRequestItem::getApplicationId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMaterialCode()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getMaterialCode(),item.getFactoryCode(),item.getStorageLocation()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -194,7 +194,7 @@ public class OutPurchaseController extends BaseController {
|
|||
request.getItems().forEach(ri -> {
|
||||
WmsReturnRequestItem rrItem = returnRequestItemService.getById(ri.getOrderItemId());
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(rrItem)).throwMessage("申请单项无效:" + ri.getOrderItemId());
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.quantityConsistencyCheck(rrItem.getMaterialCode(), rrItem.getFactoryCode(), ri.getWarehouseNo()))
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.cannotOutNoScanning(rrItem.getMaterialCode(), rrItem.getFactoryCode(), ri.getWarehouseNo()))
|
||||
.throwMessage("物料" + rrItem.getMaterialCode() + "不支持无码出库");
|
||||
VUtil.trueThrowBusinessError(rrItem.getLeft().compareTo(BigDecimal.ZERO) <= 0)
|
||||
.throwMessage("物料" + ri.getMaterialNo() + "已全部退库");
|
||||
|
|
|
|||
|
|
@ -507,7 +507,7 @@ public class TransferCompanyController extends BaseController {
|
|||
.eq(WmsTransferCompanyItem::getOrderId, order.getId())
|
||||
.list();
|
||||
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMatnr()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getMatnr(),order.getReswk(),item.getLgpro()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -556,8 +556,8 @@ public class TransferCompanyController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(Objects.isNull(orderItem)).throwMessage("物料" + item.getMaterialNo() + "不需要出库");
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(item.getMaterialNo(), orderItem.getMatnr()))
|
||||
.throwMessage("转储单明细与物料不匹配:" + item.getMaterialNo());
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(orderItem.getMatnr()))
|
||||
.throwMessage("物料" + orderItem.getMatnr() + "已生成二维码,不允许无扫码出库");
|
||||
// VUtil.trueThrowBusinessError(noScanningBaseControllerService.cannotOutNoScanning(orderItem.getMatnr(), order.getReswk(), order.getLgfsb1()))
|
||||
// .throwMessage("物料" + orderItem.getMatnr() + "已生成二维码,不允许无扫码出库");
|
||||
|
||||
BigDecimal totalNum = item.getDatas().stream()
|
||||
.peek(data -> VUtil.trueThrowBusinessError(Objects.isNull(data.getNum()) || data.getNum().compareTo(BigDecimal.ZERO) <= 0)
|
||||
|
|
|
|||
|
|
@ -533,7 +533,7 @@ public class TransferFactoryController extends BaseController {
|
|||
.eq(WmsTransferFactoryItem::getOrderId, orderId)
|
||||
.list();
|
||||
items.removeIf(item -> item.getLeft().compareTo(BigDecimal.ZERO) <= 0
|
||||
|| noScanningBaseControllerService.existsQrCode(item.getMatnr()));
|
||||
|| noScanningBaseControllerService.cannotOutNoScanning(item.getMatnr(),order.getWerks(),order.getLgort()));
|
||||
return ApiResult.success(
|
||||
items.stream()
|
||||
.map(item -> new NoScanItemVO()
|
||||
|
|
@ -582,8 +582,8 @@ public class TransferFactoryController extends BaseController {
|
|||
VUtil.trueThrowBusinessError(Objects.isNull(orderItem)).throwMessage("物料" + item.getMaterialNo() + "不需要出库");
|
||||
VUtil.trueThrowBusinessError(!StrUtil.equals(item.getMaterialNo(), orderItem.getMatnr()))
|
||||
.throwMessage("调拨单明细与物料不匹配:" + item.getMaterialNo());
|
||||
VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(orderItem.getMatnr()))
|
||||
.throwMessage("物料" + orderItem.getMatnr() + "已生成二维码,不允许无码出库");
|
||||
// VUtil.trueThrowBusinessError(noScanningBaseControllerService.existsQrCode(orderItem.getMatnr()))
|
||||
// .throwMessage("物料" + orderItem.getMatnr() + "已生成二维码,不允许无码出库");
|
||||
|
||||
BigDecimal totalNum = item.getDatas().stream()
|
||||
.peek(data -> VUtil.trueThrowBusinessError(Objects.isNull(data.getNum()) || data.getNum().compareTo(BigDecimal.ZERO) <= 0)
|
||||
|
|
|
|||
|
|
@ -31,6 +31,13 @@ public class NoScanningBaseControllerService {
|
|||
return false;
|
||||
}
|
||||
|
||||
public boolean cannotOutNoScanning(String materialNo, String factoryNo, String warehouseNo) {
|
||||
if (!existsQrCode(materialNo)){
|
||||
return true;
|
||||
}
|
||||
return !quantityConsistencyCheck(materialNo, factoryNo, warehouseNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 物料库存和物料二维码数量一致性检查
|
||||
* @param materialNo 物料编号
|
||||
|
|
@ -38,27 +45,28 @@ public class NoScanningBaseControllerService {
|
|||
* @param warehouseNo 仓库编号
|
||||
* @return 数量是否一致
|
||||
*/
|
||||
public boolean quantityConsistencyCheck(String materialNo, String factoryNo, String warehouseNo) {
|
||||
BigDecimal quantityQr = qrCodeMasterService.lambdaQuery()
|
||||
.select(WmsQrCodeMaster::getQuantity)
|
||||
.eq(WmsQrCodeMaster::getMaterialCode, materialNo)
|
||||
.eq(WmsQrCodeMaster::getFactoryCode, factoryNo)
|
||||
.eq(WmsQrCodeMaster::getStorageLocation, warehouseNo)
|
||||
.eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||
.list()
|
||||
.stream()
|
||||
.map(WmsQrCodeMaster::getQuantity)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal quantityInventory = inventoryService.lambdaQuery()
|
||||
.select(WmsInventory::getNum)
|
||||
.eq(WmsInventory::getMaterialNo, materialNo)
|
||||
.eq(WmsInventory::getFactoryNo, factoryNo)
|
||||
.eq(WmsInventory::getWarehouseNo, warehouseNo)
|
||||
.list()
|
||||
.stream()
|
||||
.map(WmsInventory::getNum)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
return quantityQr.compareTo(quantityInventory) == 0;
|
||||
private boolean quantityConsistencyCheck(String materialNo, String factoryNo, String warehouseNo) {
|
||||
// BigDecimal quantityQr = qrCodeMasterService.lambdaQuery()
|
||||
// .select(WmsQrCodeMaster::getQuantity)
|
||||
// .eq(WmsQrCodeMaster::getMaterialCode, materialNo)
|
||||
// .eq(WmsQrCodeMaster::getFactoryCode, factoryNo)
|
||||
// .eq(WmsQrCodeMaster::getStorageLocation, warehouseNo)
|
||||
// .eq(WmsQrCodeMaster::getProcessStage, BarCodeProcessStage.InBound.getState())
|
||||
// .list()
|
||||
// .stream()
|
||||
// .map(WmsQrCodeMaster::getQuantity)
|
||||
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
// BigDecimal quantityInventory = inventoryService.lambdaQuery()
|
||||
// .select(WmsInventory::getNum)
|
||||
// .eq(WmsInventory::getMaterialNo, materialNo)
|
||||
// .eq(WmsInventory::getFactoryNo, factoryNo)
|
||||
// .eq(WmsInventory::getWarehouseNo, warehouseNo)
|
||||
// .list()
|
||||
// .stream()
|
||||
// .map(WmsInventory::getNum)
|
||||
// .reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
// return quantityQr.compareTo(quantityInventory) == 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue