完成收货直接入库的逻辑
This commit is contained in:
parent
70aae6bdcc
commit
e29f43f20f
|
|
@ -213,11 +213,39 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
||||||
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = 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) {
|
for (SrmMaterialReceiptQO item : request) {
|
||||||
|
|
||||||
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
||||||
continue;
|
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()
|
SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream()
|
||||||
.filter(sapSyncParamsDTO ->
|
.filter(sapSyncParamsDTO ->
|
||||||
|
|
@ -238,44 +266,173 @@ public class NormalPGIController extends BaseController {
|
||||||
// 如果是质检单
|
// 如果是质检单
|
||||||
if (isQuality) {
|
if (isQuality) {
|
||||||
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId(), orderItemId);
|
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 {
|
||||||
|
//判断是否存在没有启用储位管理的仓库
|
||||||
|
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 {
|
} else {
|
||||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId);
|
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()
|
// Map<String, Long> duplicateCodes = srmMaterialReceiptScanCodes.stream()
|
||||||
.collect(Collectors.groupingBy(
|
// .collect(Collectors.groupingBy(
|
||||||
SrmMaterialReceiptScanCodes::getCodeId,
|
// SrmMaterialReceiptScanCodes::getCodeId,
|
||||||
Collectors.counting()
|
// Collectors.counting()
|
||||||
))
|
// ))
|
||||||
.entrySet()
|
// .entrySet()
|
||||||
.stream()
|
// .stream()
|
||||||
.filter(entry -> entry.getValue() > 1)
|
// .filter(entry -> entry.getValue() > 1)
|
||||||
.collect(Collectors.toMap(
|
// .collect(Collectors.toMap(
|
||||||
Map.Entry::getKey,
|
// Map.Entry::getKey,
|
||||||
Map.Entry::getValue
|
// Map.Entry::getValue
|
||||||
));
|
// ));
|
||||||
|
//
|
||||||
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
|
// VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
|
||||||
qrCodeMasterService.saveBatch(
|
// qrCodeMasterService.saveBatch(
|
||||||
srmMaterialReceiptScanCodes
|
// srmMaterialReceiptScanCodes
|
||||||
.stream()
|
// .stream()
|
||||||
.map(it -> new WmsQrCodeMaster()
|
// .map(it -> new WmsQrCodeMaster()
|
||||||
.setBarcodeCode(KeyUtil.next())
|
// .setBarcodeCode(KeyUtil.next())
|
||||||
.setProcessStage(BarCodeProcessStage.Received.getState())
|
// .setProcessStage(BarCodeProcessStage.Received.getState())
|
||||||
.setBarcodeType(BarCodeType.Disassemble.getState())
|
// .setBarcodeType(BarCodeType.Disassemble.getState())
|
||||||
.setMaterialCode(it.getCodeId())
|
// .setMaterialCode(it.getCodeId())
|
||||||
.setMaterialDescription("")
|
// .setMaterialDescription("")
|
||||||
.setPackagingType((short) 0)
|
// .setPackagingType((short) 0)
|
||||||
.setQuantity(it.getCodeNum())
|
// .setQuantity(it.getCodeNum())
|
||||||
.setReceiptItemId(it.getReceiveItemId())
|
// .setReceiptItemId(it.getReceiveItemId())
|
||||||
.setCreateUserId(UserUtil.getUserId())
|
// .setCreateUserId(UserUtil.getUserId())
|
||||||
.setCreateUserName(UserUtil.getUserName())
|
// .setCreateUserName(UserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now())
|
// .setCreateTime(LocalDateTime.now())
|
||||||
)
|
// )
|
||||||
.toList()
|
// .toList()
|
||||||
);
|
// );
|
||||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
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();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1693,6 +1850,30 @@ public class NormalPGIController extends BaseController {
|
||||||
for (SrmMaterialReceiptQO item : items) {
|
for (SrmMaterialReceiptQO item : items) {
|
||||||
// 盘点是否有条码
|
// 盘点是否有条码
|
||||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes())).throwMessage("[" + item.getItemCode() + "]没有码信息");
|
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);
|
receipt.setReceiptQOS(items);
|
||||||
receipts.add(receipt);
|
receipts.add(receipt);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue