feat(pgi): 添加普通物料收货单控制器功能
- 实现送货单列表查询和详情获取接口 - 添加PDA扫码收货确认功能 - 集成SAP物料信息同步机制 - 实现普通物料上架任务管理 - 添加采购物料入库确认流程 - 集成条码扫描和二维码处理功能 - 实现质检单和非质检单分别处理逻辑 - 添加储位管理和库存同步功能 - 实现一键收货查询功能 - 集成序列号和批次号验证机制
This commit is contained in:
parent
be8c7cedb6
commit
443cbfd194
|
|
@ -10,7 +10,6 @@ import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.crypto.digest.DigestUtil;
|
import cn.hutool.crypto.digest.DigestUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
||||||
import com.nflg.wms.admin.pojo.dto.*;
|
import com.nflg.wms.admin.pojo.dto.*;
|
||||||
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
|
import com.nflg.wms.admin.repository.OutMaterialScanRecordRespository;
|
||||||
import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository;
|
import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository;
|
||||||
|
|
@ -50,7 +49,10 @@ import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -427,26 +429,45 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
if (CollectionUtil.isNotEmpty(scanCode)) {
|
if (CollectionUtil.isNotEmpty(scanCode)) {
|
||||||
scanCode.forEach(code -> {
|
scanCode.forEach(code -> {
|
||||||
|
WmsQrCodeMaster qrCodeMaster = qrCodeMasterService.getByCode(code.getCodeId());
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("条码不存在");
|
||||||
|
qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState())
|
||||||
|
.setLastScanBy(UserUtil.getUserId())
|
||||||
|
.setLastScanByname(UserUtil.getUserName())
|
||||||
|
.setLastScanTime(LocalDateTime.now());
|
||||||
|
if (CollectionUtil.isNotEmpty(qo.getItems())) {
|
||||||
|
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
|
||||||
|
.stream()
|
||||||
|
.filter(iit -> iit.getQrCode().contains(code.getCodeId()))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
if (Objects.nonNull(qrqo)) {
|
||||||
|
qrCodeMaster.setBinLocation(qrqo.getBinNo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
qrCodeMasters.add(qrCodeMaster);
|
||||||
|
if (qrCodeMaster.getPackagingType() == 0) {
|
||||||
// 库存
|
// 库存
|
||||||
InventoryInDTO inventoryDTO = inventories.stream()
|
InventoryInDTO inventoryDTO = inventories.stream()
|
||||||
.filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode())
|
.filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode())
|
||||||
&& inventoriesDTO.getBatchNo().equals(code.getBatchNumber())
|
&& inventoriesDTO.getBatchNo().equals(qrCodeMaster.getBatchNo())
|
||||||
&& inventoriesDTO.getSerialNo().equals(code.getSerialNumbers())
|
&& inventoriesDTO.getSerialNo().equals(qrCodeMaster.getSerialNo())
|
||||||
&& inventoriesDTO.getFactoryNo().equals(wmsPoReceipt.getFactoryCode())
|
&& inventoriesDTO.getFactoryNo().equals(qrCodeMaster.getFactoryCode())
|
||||||
&& inventoriesDTO.getWarehouseNo().equals(item.getReceivedWarehouse())
|
&& inventoriesDTO.getWarehouseNo().equals(qrCodeMaster.getStorageLocation())
|
||||||
).findFirst().orElse(null);
|
&& StrUtil.equals(inventoriesDTO.getBinLocation(), qrCodeMaster.getBinLocation())
|
||||||
|
).findFirst()
|
||||||
|
.orElse(null);
|
||||||
if (Objects.isNull(inventoryDTO)) {
|
if (Objects.isNull(inventoryDTO)) {
|
||||||
inventoryDTO = new InventoryInDTO()
|
inventoryDTO = new InventoryInDTO()
|
||||||
.setMaterialNo(item.getItemCode())
|
.setMaterialNo(qrCodeMaster.getMaterialCode())
|
||||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
.setFactoryNo(qrCodeMaster.getFactoryCode())
|
||||||
.setWarehouseNo(item.getReceivedWarehouse())
|
.setWarehouseNo(qrCodeMaster.getStorageLocation())
|
||||||
.setBatchNo(code.getBatchNumber())
|
.setBatchNo(qrCodeMaster.getBatchNo())
|
||||||
.setSerialNo(code.getSerialNumbers())
|
.setSerialNo(qrCodeMaster.getSerialNo())
|
||||||
.setNum(code.getCodeNum());
|
.setNum(qrCodeMaster.getQuantity());
|
||||||
inventories.add(inventoryDTO);
|
inventories.add(inventoryDTO);
|
||||||
} else {
|
} else {
|
||||||
inventoryDTO.setNum(inventoryDTO.getNum().add(code.getCodeNum()));
|
inventoryDTO.setNum(inventoryDTO.getNum().add(qrCodeMaster.getQuantity()));
|
||||||
}
|
}
|
||||||
ZWM3A17Item1DTO ietm1Dto = item1.stream()
|
ZWM3A17Item1DTO ietm1Dto = item1.stream()
|
||||||
.filter(dto1 ->
|
.filter(dto1 ->
|
||||||
|
|
@ -485,36 +506,6 @@ public class NormalPGIController extends BaseController {
|
||||||
// .setLastScanBy(UserUtil.getUserId())
|
// .setLastScanBy(UserUtil.getUserId())
|
||||||
// .setLastScanByname(UserUtil.getUserName())
|
// .setLastScanByname(UserUtil.getUserName())
|
||||||
// .setLastScanTime(LocalDateTime.now());
|
// .setLastScanTime(LocalDateTime.now());
|
||||||
|
|
||||||
WmsQrCodeMaster wmsQrCodeMaster = new WmsQrCodeMaster();
|
|
||||||
WmsQrCodeMaster existCode = qrCodeMasterService.lambdaQuery()
|
|
||||||
.eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId())
|
|
||||||
.one();
|
|
||||||
if (existCode != null) {
|
|
||||||
wmsQrCodeMaster = existCode;
|
|
||||||
} else {
|
|
||||||
wmsQrCodeMaster.setId(IdWorker.getId());
|
|
||||||
}
|
|
||||||
wmsQrCodeMaster
|
|
||||||
.setBarcodeCode(code.getCodeId())
|
|
||||||
.setBarcodeType((short) 1)
|
|
||||||
.setMaterialCode(item.getItemCode())
|
|
||||||
.setMaterialDescription(item.getItemName())
|
|
||||||
.setProcessStage(BarCodeProcessStage.InBound.getState())
|
|
||||||
.setReceiptItemId(item.getId())
|
|
||||||
.setLastScanBy(UserUtil.getUserId())
|
|
||||||
.setLastScanByname(UserUtil.getUserName())
|
|
||||||
.setLastScanTime(LocalDateTime.now());
|
|
||||||
|
|
||||||
qrCodeMasters.add(wmsQrCodeMaster);
|
|
||||||
if (CollectionUtil.isNotEmpty(qo.getItems())) {
|
|
||||||
InCostCenterBackSubmitItemQRQO qrqo = qo.getItems()
|
|
||||||
.stream()
|
|
||||||
.filter(iit -> iit.getQrCode().contains(code.getCodeId()))
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(qrqo)).throwMessage("条码" + code.getCodeId() + "已收货但不在本次扫码列表中");
|
|
||||||
wmsQrCodeMaster.setBinLocation(qrqo.getBinNo());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -542,35 +533,11 @@ public class NormalPGIController extends BaseController {
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(qrCodeMasters)) {
|
if (CollectionUtil.isNotEmpty(qrCodeMasters)) {
|
||||||
//同步箱码信息到物料码中
|
//同步箱码信息到物料码中
|
||||||
List<WmsQrCodeMaster> parents = qrCodeMasters
|
qrCodeMasters.stream()
|
||||||
.stream()
|
.filter(qr -> qr.getPackagingType() == 1)
|
||||||
// .filter(qrCode -> qrCode.getPackagingType() == 1)
|
.forEach(p -> {
|
||||||
.filter(qrCode -> qrCode.getPackagingType() != null && qrCode.getPackagingType() == 1)
|
qrCodeMasters.stream()
|
||||||
.toList();
|
.filter(qr -> Objects.equals(qr.getParentBarcodeId(), p.getId()))
|
||||||
// List<WmsQrCodeMaster> children = qrCodeMasterService.lambdaQuery()
|
|
||||||
// .in(WmsQrCodeMaster::getParentBarcodeId, parents
|
|
||||||
// .stream()
|
|
||||||
// .map(WmsQrCodeMaster::getId)
|
|
||||||
// .toList()
|
|
||||||
// )
|
|
||||||
// .list();
|
|
||||||
|
|
||||||
List<WmsQrCodeMaster> children;
|
|
||||||
if (CollectionUtil.isNotEmpty(parents)) {
|
|
||||||
children = qrCodeMasterService.lambdaQuery()
|
|
||||||
.in(WmsQrCodeMaster::getParentBarcodeId,
|
|
||||||
parents.stream()
|
|
||||||
.map(WmsQrCodeMaster::getId)
|
|
||||||
.toList()
|
|
||||||
)
|
|
||||||
.list();
|
|
||||||
} else {
|
|
||||||
children = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
parents.forEach(p -> {
|
|
||||||
children.stream()
|
|
||||||
.filter(c -> c.getParentBarcodeId().equals(p.getId()))
|
|
||||||
.forEach(c -> {
|
.forEach(c -> {
|
||||||
c.setProcessStage(p.getProcessStage());
|
c.setProcessStage(p.getProcessStage());
|
||||||
c.setLastScanBy(UserUtil.getUserId());
|
c.setLastScanBy(UserUtil.getUserId());
|
||||||
|
|
@ -582,9 +549,7 @@ public class NormalPGIController extends BaseController {
|
||||||
c.setReceiptItemId(p.getReceiptItemId());
|
c.setReceiptItemId(p.getReceiptItemId());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
qrCodeMasters.addAll(children);
|
qrCodeMasterService.updateBarCode(qrCodeMasters);
|
||||||
// qrCodeMasterService.updateBarCode(qrCodeMasters);
|
|
||||||
qrCodeMasterService.saveOrUpdateBatch(qrCodeMasters);
|
|
||||||
}
|
}
|
||||||
normalPGIControllerService.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId(), scanCodes);
|
normalPGIControllerService.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId(), scanCodes);
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue