完成收货直接入库的逻辑
This commit is contained in:
parent
70aae6bdcc
commit
e29f43f20f
|
|
@ -213,11 +213,39 @@ public class NormalPGIController extends BaseController {
|
|||
|
||||
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
||||
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
||||
List<InventoryDTO> inventories = new ArrayList<>();
|
||||
List<ZWM3A17DTO> zwm3A17DTOS = new ArrayList<>();
|
||||
List<WmsQrCodeMaster> qrCodes = new ArrayList<>();
|
||||
|
||||
for (SrmMaterialReceiptQO item : request) {
|
||||
|
||||
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
||||
continue;
|
||||
// 处理二维码
|
||||
for (PDAScanCodeQO code : item.getScanCodes()) {
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】");
|
||||
if (qrCodeMaster.getPackagingType().equals(1)) {
|
||||
code.setCodeNum(BigDecimal.ZERO);
|
||||
List<WmsQrCodeMaster> childCode= qrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getParentBarcodeId, qrCodeMaster.getId())
|
||||
.list();
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(childCode)).throwMessage("箱码【" + code.getCodeId() + "】为空箱");
|
||||
for (WmsQrCodeMaster child : childCode)
|
||||
{
|
||||
item.getScanCodes().add(new PDAScanCodeQO()
|
||||
.setBatchNumber(child.getBatchNo())
|
||||
.setSerialNumbers(child.getSerialNo())
|
||||
.setCodeId(child.getBarcodeCode())
|
||||
.setCodeNum(child.getQuantity())
|
||||
.setCodeContent(child.getPackagingType().toString())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream()
|
||||
.filter(sapSyncParamsDTO ->
|
||||
|
|
@ -238,44 +266,173 @@ public class NormalPGIController extends BaseController {
|
|||
// 如果是质检单
|
||||
if (isQuality) {
|
||||
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId(), orderItemId);
|
||||
for (PDAScanCodeQO code : item.getScanCodes()) {
|
||||
// 处理条码
|
||||
WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】");
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.Checking.getState());
|
||||
qrCodeMaster.setReceiptItemId(orderItemId);
|
||||
qrCodes.add(qrCodeMaster);
|
||||
}
|
||||
} else {
|
||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId);
|
||||
//判断是否存在没有启用储位管理的仓库
|
||||
WmsWarehouse warehouse = wmsWarehouseService.lambdaQuery().eq(WmsWarehouse::getNo, item.getReceivedWarehouse()).one();
|
||||
if (!warehouse.getIsDisableLocation()) {
|
||||
//设置收货明细项
|
||||
setPoReceiveByIn(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId);
|
||||
//设置SAP过账接口
|
||||
ZWM3A17DTO zwm3A17DTO = zwm3A17DTOS.stream()
|
||||
.filter(zwm3A17DTO1 -> zwm3A17DTO1.getEbeln().equals(item.getPoNum()))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (Objects.isNull(zwm3A17DTO)) {
|
||||
zwm3A17DTO = new ZWM3A17DTO()
|
||||
.setEbeln(item.getPoNum())
|
||||
.setUsnam(UserUtil.getUserName())
|
||||
.setReceiveId(orderItemId)
|
||||
.setItem1(new ArrayList<>())
|
||||
.setItem2(new ArrayList<>());
|
||||
zwm3A17DTOS.add(zwm3A17DTO);
|
||||
}
|
||||
List<ZWM3A17Item1DTO> item1 = zwm3A17DTO.getItem1();
|
||||
List<ZWM3A17Item2DTO> item2 = zwm3A17DTO.getItem2();
|
||||
for (PDAScanCodeQO code : item.getScanCodes()) {
|
||||
// 处理条码
|
||||
WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】");
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState());
|
||||
qrCodeMaster.setReceiptItemId(orderItemId);
|
||||
qrCodes.add(qrCodeMaster);
|
||||
if (qrCodeMaster.getPackagingType().equals(1)) {
|
||||
continue;
|
||||
}
|
||||
// 库存
|
||||
InventoryDTO inventoryDTO = inventories.stream()
|
||||
.filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode())
|
||||
&& inventoriesDTO.getBatchNo().equals(code.getBatchNumber())
|
||||
&& inventoriesDTO.getSerialNo().equals(code.getSerialNumbers())
|
||||
&& inventoriesDTO.getFactoryNo().equals(wmsPoReceipt.getFactoryCode())
|
||||
&& inventoriesDTO.getWarehouseNo().equals(item.getReceivedWarehouse())
|
||||
).findFirst().orElse(null);
|
||||
if (Objects.isNull(inventoryDTO)) {
|
||||
inventoryDTO = new InventoryDTO()
|
||||
.setMaterialNo(item.getItemCode())
|
||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||
.setWarehouseNo(item.getReceivedWarehouse())
|
||||
.setBatchNo(code.getBatchNumber())
|
||||
.setSerialNo(code.getSerialNumbers())
|
||||
.setNum(code.getCodeNum());
|
||||
inventories.add(inventoryDTO);
|
||||
} else {
|
||||
inventoryDTO.setNum(inventoryDTO.getNum().add(code.getCodeNum()));
|
||||
}
|
||||
ZWM3A17Item1DTO ietm1Dto = item1.stream()
|
||||
.filter(dto1 ->
|
||||
dto1.getEBELP().equals(item.getPoLineNumber())
|
||||
&& dto1.getMATNR().equals(item.getItemCode())
|
||||
&& dto1.getMeins().equals(item.getUomCode())
|
||||
&& dto1.getCHARG().equals(code.getBatchNumber())
|
||||
&& dto1.getWERKS().equals(wmsPoReceipt.getFactoryCode())
|
||||
&& dto1.getLGORT().equals(item.getReceivedWarehouse())
|
||||
).findFirst().orElse(null);
|
||||
if (Objects.isNull(ietm1Dto)) {
|
||||
item1.add(new ZWM3A17Item1DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setMATNR(item.getItemCode())
|
||||
.setERFMG(code.getCodeNum())
|
||||
.setMEINS(item.getUomCode())
|
||||
.setCHARG(code.getBatchNumber())
|
||||
.setWERKS(wmsPoReceipt.getFactoryCode())
|
||||
.setLGORT(item.getReceivedWarehouse())
|
||||
.setKZKRI("")
|
||||
);
|
||||
} else {
|
||||
ietm1Dto.setERFMG(ietm1Dto.getERFMG().add(code.getCodeNum()));
|
||||
}
|
||||
|
||||
item2.add(new ZWM3A17Item2DTO()
|
||||
.setEBELP(item.getPoLineNumber())
|
||||
.setFLAG("")
|
||||
.setSERNR(code.getSerialNumbers()));
|
||||
}
|
||||
//...................
|
||||
} else {
|
||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId);
|
||||
for (PDAScanCodeQO code : item.getScanCodes()) {
|
||||
// 处理条码
|
||||
WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】");
|
||||
qrCodeMaster.setLastScanTime(LocalDateTime.now());
|
||||
qrCodeMaster.setLastScanBy(UserUtil.getUserId());
|
||||
qrCodeMaster.setLastScanByname(UserUtil.getUserName());
|
||||
qrCodeMaster.setStorageLocation(materialInfoInOrder.getWarehouseNo());
|
||||
qrCodeMaster.setProcessStage(BarCodeProcessStage.Received.getState());
|
||||
qrCodeMaster.setReceiptItemId(orderItemId);
|
||||
qrCodes.add(qrCodeMaster);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 盘点条码是否重复
|
||||
Map<String, Long> duplicateCodes = srmMaterialReceiptScanCodes.stream()
|
||||
.collect(Collectors.groupingBy(
|
||||
SrmMaterialReceiptScanCodes::getCodeId,
|
||||
Collectors.counting()
|
||||
))
|
||||
.entrySet()
|
||||
.stream()
|
||||
.filter(entry -> entry.getValue() > 1)
|
||||
.collect(Collectors.toMap(
|
||||
Map.Entry::getKey,
|
||||
Map.Entry::getValue
|
||||
));
|
||||
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
|
||||
qrCodeMasterService.saveBatch(
|
||||
srmMaterialReceiptScanCodes
|
||||
.stream()
|
||||
.map(it -> new WmsQrCodeMaster()
|
||||
.setBarcodeCode(KeyUtil.next())
|
||||
.setProcessStage(BarCodeProcessStage.Received.getState())
|
||||
.setBarcodeType(BarCodeType.Disassemble.getState())
|
||||
.setMaterialCode(it.getCodeId())
|
||||
.setMaterialDescription("")
|
||||
.setPackagingType((short) 0)
|
||||
.setQuantity(it.getCodeNum())
|
||||
.setReceiptItemId(it.getReceiveItemId())
|
||||
.setCreateUserId(UserUtil.getUserId())
|
||||
.setCreateUserName(UserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
)
|
||||
.toList()
|
||||
);
|
||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
||||
// Map<String, Long> duplicateCodes = srmMaterialReceiptScanCodes.stream()
|
||||
// .collect(Collectors.groupingBy(
|
||||
// SrmMaterialReceiptScanCodes::getCodeId,
|
||||
// Collectors.counting()
|
||||
// ))
|
||||
// .entrySet()
|
||||
// .stream()
|
||||
// .filter(entry -> entry.getValue() > 1)
|
||||
// .collect(Collectors.toMap(
|
||||
// Map.Entry::getKey,
|
||||
// Map.Entry::getValue
|
||||
// ));
|
||||
//
|
||||
// VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
|
||||
// qrCodeMasterService.saveBatch(
|
||||
// srmMaterialReceiptScanCodes
|
||||
// .stream()
|
||||
// .map(it -> new WmsQrCodeMaster()
|
||||
// .setBarcodeCode(KeyUtil.next())
|
||||
// .setProcessStage(BarCodeProcessStage.Received.getState())
|
||||
// .setBarcodeType(BarCodeType.Disassemble.getState())
|
||||
// .setMaterialCode(it.getCodeId())
|
||||
// .setMaterialDescription("")
|
||||
// .setPackagingType((short) 0)
|
||||
// .setQuantity(it.getCodeNum())
|
||||
// .setReceiptItemId(it.getReceiveItemId())
|
||||
// .setCreateUserId(UserUtil.getUserId())
|
||||
// .setCreateUserName(UserUtil.getUserName())
|
||||
// .setCreateTime(LocalDateTime.now())
|
||||
// )
|
||||
// .toList()
|
||||
// );
|
||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
||||
List<GoodReceiptDTO> dtos = new ArrayList<>();
|
||||
GoodReceiptDTO dto = new GoodReceiptDTO()
|
||||
.setWmsPoReceipt(wmsPoReceipt)
|
||||
.setWmsQcReceive(wmsQcReceive)
|
||||
.setWmsPoReceiptItems(wmsPoReceiptItems)
|
||||
.setWmsQcReceiveItems(wmsQcReceiveItems)
|
||||
.setSrmMaterialReceiptScanCodes(srmMaterialReceiptScanCodes)
|
||||
.setOrderId(order.getId())
|
||||
.setInventories(inventories)
|
||||
.setZwm3A17DTOS(zwm3A17DTOS)
|
||||
.setQrCodes(qrCodes)
|
||||
.setQcMaterialSyncDTOS(qcMaterialSyncDTOS);
|
||||
dtos.add(dto);
|
||||
normalPGIControllerService.takeDeliveryByPackage(dtos, null);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
||||
|
|
@ -1693,6 +1850,30 @@ public class NormalPGIController extends BaseController {
|
|||
for (SrmMaterialReceiptQO item : items) {
|
||||
// 盘点是否有条码
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes())).throwMessage("[" + item.getItemCode() + "]没有码信息");
|
||||
//对项目进行处理
|
||||
for (PDAScanCodeQO code : item.getScanCodes()) {
|
||||
WmsQrCodeMaster qrCodeMaster = qrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
|
||||
.one();
|
||||
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】");
|
||||
if (qrCodeMaster.getPackagingType().equals(1)) {
|
||||
code.setCodeNum(BigDecimal.ZERO);
|
||||
List<WmsQrCodeMaster> childCode= qrCodeMasterService.lambdaQuery()
|
||||
.eq(WmsQrCodeMaster::getParentBarcodeId, qrCodeMaster.getId())
|
||||
.list();
|
||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(childCode)).throwMessage("箱码【" + code.getCodeId() + "】为空箱");
|
||||
for (WmsQrCodeMaster child : childCode)
|
||||
{
|
||||
item.getScanCodes().add(new PDAScanCodeQO()
|
||||
.setBatchNumber(child.getBatchNo())
|
||||
.setSerialNumbers(child.getSerialNo())
|
||||
.setCodeId(child.getBarcodeCode())
|
||||
.setCodeNum(child.getQuantity())
|
||||
.setCodeContent(child.getPackagingType().toString())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
receipt.setReceiptQOS(items);
|
||||
receipts.add(receipt);
|
||||
|
|
|
|||
Loading…
Reference in New Issue