新增无码收货和无码上架的功能
This commit is contained in:
parent
fc54a528e8
commit
9d327f9ed1
|
|
@ -84,6 +84,7 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 送货单列表
|
* 送货单列表
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -95,6 +96,7 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 送货单详情
|
* 送货单详情
|
||||||
|
*
|
||||||
* @param orderId 订单ID
|
* @param orderId 订单ID
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -111,6 +113,7 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取扫码的详情信息
|
* 获取扫码的详情信息
|
||||||
|
*
|
||||||
* @param orderItemId 订单项ID
|
* @param orderItemId 订单项ID
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -125,6 +128,7 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 扫描送货单号获取送货单详情(PDA)
|
* 扫描送货单号获取送货单详情(PDA)
|
||||||
|
*
|
||||||
* @param orderNo 送货单号
|
* @param orderNo 送货单号
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -227,6 +231,7 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 普通物料的上架任务(PDA)
|
* 普通物料的上架任务(PDA)
|
||||||
|
*
|
||||||
* @param orederNo 送货单号或是任务单号
|
* @param orederNo 送货单号或是任务单号
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -244,7 +249,7 @@ public class NormalPGIController extends BaseController {
|
||||||
/**
|
/**
|
||||||
* 上架任务详情(PDA)
|
* 上架任务详情(PDA)
|
||||||
* * @param id 任务ID
|
* * @param id 任务ID
|
||||||
* */
|
*/
|
||||||
@GetMapping("PDA/task/item")
|
@GetMapping("PDA/task/item")
|
||||||
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
|
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
|
||||||
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestParam Long taskId) {
|
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestParam Long taskId) {
|
||||||
|
|
@ -260,6 +265,7 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购物料入库确认(PDA)
|
* 采购物料入库确认(PDA)
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -418,9 +424,14 @@ public class NormalPGIController extends BaseController {
|
||||||
.distinct()
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
//重新读取SAP的接口,更新物料信息(已收货数、仓库信息、储位信息 等)
|
//重新读取SAP的接口,更新物料信息(已收货数、仓库信息、储位信息 等)
|
||||||
List<SAPSyncParamsDTO> sapSyncParamsDTOS = uniqueCombinations.stream()
|
List<SAPSyncParamsDTO> sapSyncParamsDTOS=new ArrayList<>();
|
||||||
.map(triple -> sapCommonService.getMaterialInfoInOrder(triple.getLeft(), triple.getMiddle(), triple.getRight()))
|
uniqueCombinations.forEach(triple -> {
|
||||||
.collect(Collectors.toList());
|
List<SAPSyncParamsDTO> items= sapCommonService.getMaterialInfoInOrder(triple.getLeft(), triple.getMiddle(), triple.getRight());
|
||||||
|
if(CollectionUtil.isNotEmpty( items))
|
||||||
|
{
|
||||||
|
sapSyncParamsDTOS.addAll(items);
|
||||||
|
}
|
||||||
|
});
|
||||||
return sapSyncParamsDTOS;
|
return sapSyncParamsDTOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -695,7 +706,9 @@ public class NormalPGIController extends BaseController {
|
||||||
return ApiResult.success(list);
|
return ApiResult.success(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SrmMaterialReceiptNoScanCodes> validateNoScanCodes(BarcodeLessReceivingVO item, SAPSyncParamsDTO materialInfoInOrder) {
|
private List<SrmMaterialReceiptNoScanCodes> validateNoScanCodes(BarcodeLessReceivingVO item,
|
||||||
|
SAPSyncParamsDTO materialInfoInOrder,
|
||||||
|
List<SrmMaterialReceiptScanCodes> scanCodeQOS) {
|
||||||
String lbprt = materialInfoInOrder.getLbprt();
|
String lbprt = materialInfoInOrder.getLbprt();
|
||||||
//判断序列号、批次号是否规范
|
//判断序列号、批次号是否规范
|
||||||
// 1 - 批次号为空,序列号为空
|
// 1 - 批次号为空,序列号为空
|
||||||
|
|
@ -730,6 +743,17 @@ public class NormalPGIController extends BaseController {
|
||||||
.setSerialNumbers(item.getSerialNumbers())
|
.setSerialNumbers(item.getSerialNumbers())
|
||||||
.setCodeContent(codeContent)
|
.setCodeContent(codeContent)
|
||||||
.setIsIntoStorage(false));
|
.setIsIntoStorage(false));
|
||||||
|
|
||||||
|
scanCodeQOS.add(new SrmMaterialReceiptScanCodes()
|
||||||
|
.setCodeId(codeId)
|
||||||
|
.setOrderNo(item.getNoteNum())
|
||||||
|
.setOrderItemId(item.getId())
|
||||||
|
.setIsIntoStorage(false)
|
||||||
|
.setCodeNum(item.getUnRecieveQty())
|
||||||
|
.setBatchNumber(item.getBatchNumber())
|
||||||
|
.setSerialNumbers(item.getSerialNumbers())
|
||||||
|
.setCodeContent(codeContent)
|
||||||
|
);
|
||||||
codeIds.add(codeId);
|
codeIds.add(codeId);
|
||||||
// 21602
|
// 21602
|
||||||
|
|
||||||
|
|
@ -747,9 +771,19 @@ public class NormalPGIController extends BaseController {
|
||||||
.setOrderNo(item.getNoteNum())
|
.setOrderNo(item.getNoteNum())
|
||||||
.setOrderItemId(item.getId())
|
.setOrderItemId(item.getId())
|
||||||
.setCodeNum(new BigDecimal(1))
|
.setCodeNum(new BigDecimal(1))
|
||||||
.setSerialNumbers(item.getSerialNumbers())
|
.setSerialNumbers(serialNumbers[i])
|
||||||
.setCodeContent(codeContent)
|
.setCodeContent(codeContent)
|
||||||
.setIsIntoStorage(false));
|
.setIsIntoStorage(false));
|
||||||
|
scanCodeQOS.add(new SrmMaterialReceiptScanCodes()
|
||||||
|
.setCodeId(codeId)
|
||||||
|
.setOrderNo(item.getNoteNum())
|
||||||
|
.setOrderItemId(item.getId())
|
||||||
|
.setIsIntoStorage(false)
|
||||||
|
.setCodeNum(new BigDecimal(1))
|
||||||
|
.setBatchNumber(item.getBatchNumber())
|
||||||
|
.setSerialNumbers(serialNumbers[i])
|
||||||
|
.setCodeContent(codeContent)
|
||||||
|
);
|
||||||
codeIds.add(codeId);
|
codeIds.add(codeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -776,7 +810,9 @@ public class NormalPGIController extends BaseController {
|
||||||
List<WmsQcReceiveItem> wmsQcReceiveItems = new ArrayList<>();
|
List<WmsQcReceiveItem> wmsQcReceiveItems = new ArrayList<>();
|
||||||
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
||||||
List<SrmMaterialReceiptNoScanCodes> codes = new ArrayList<>();
|
List<SrmMaterialReceiptNoScanCodes> codes = new ArrayList<>();
|
||||||
|
List<Long> orderIds = new ArrayList<>();
|
||||||
for (WmsSrmOrder order : orders) {
|
for (WmsSrmOrder order : orders) {
|
||||||
|
orderIds.add(order.getId());
|
||||||
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
|
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
|
||||||
.setCreateTime(LocalDateTime.now())
|
.setCreateTime(LocalDateTime.now())
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
|
|
@ -808,41 +844,48 @@ public class NormalPGIController extends BaseController {
|
||||||
item.getItemCode(), item.getPoLineNumber());
|
item.getItemCode(), item.getPoLineNumber());
|
||||||
VUtil.trueThrowBusinessError(item.getUnRecieveQty().compareTo(materialInfoInOrder.getTransportNum()) > 0)
|
VUtil.trueThrowBusinessError(item.getUnRecieveQty().compareTo(materialInfoInOrder.getTransportNum()) > 0)
|
||||||
.throwMessage("物料收货数量[" + item.getUnRecieveQty() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum());
|
.throwMessage("物料收货数量[" + item.getUnRecieveQty() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum());
|
||||||
//序列号和批次号验证
|
//序列号和批次号验证以及条码信息的组装
|
||||||
List<SrmMaterialReceiptNoScanCodes> itemCodes = validateNoScanCodes(item, materialInfoInOrder)
|
List<SrmMaterialReceiptScanCodes> scanCodeQOS = new ArrayList<>();
|
||||||
|
List<SrmMaterialReceiptNoScanCodes> itemCodes = validateNoScanCodes(item, materialInfoInOrder, scanCodeQOS);
|
||||||
if (CollectionUtil.isNotEmpty(itemCodes)) {
|
if (CollectionUtil.isNotEmpty(itemCodes)) {
|
||||||
codes.addAll(itemCodes);
|
codes.addAll(itemCodes);
|
||||||
}
|
}
|
||||||
//------------------------------- 条码高点个都是法师打发手动阀手动阀手打
|
|
||||||
asfdasdfasdf
|
|
||||||
}
|
|
||||||
|
|
||||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.get(0).getNoteNum()).one();
|
WmsSrmOrder order = orders.stream().filter(it -> it.getNoteNum().equals(item.getNoteNum()))
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
|
.findFirst().orElse(null);
|
||||||
// List<SAPSyncParamsDTO> sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order);
|
if (Objects.isNull(order)) {
|
||||||
|
continue;
|
||||||
|
|
||||||
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
for (SrmMaterialReceiptQO item : request) {
|
|
||||||
//序列号和批次号验证
|
|
||||||
List<SrmMaterialReceiptScanCodes> codes = normalPGIControllerService.validateScanCodes(item, materialInfoInOrder);
|
|
||||||
if (CollectionUtil.isNotEmpty(codes)) {
|
|
||||||
srmMaterialReceiptScanCodes.addAll(codes);
|
|
||||||
}
|
}
|
||||||
|
WmsQcReceive wmsQcReceive = wmsQcReceives.stream().filter(it -> it.getOrderNo().equals(item.getNoteNum()))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
//判断是否为质检物料
|
||||||
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
|
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
|
||||||
|
SrmMaterialReceiptQO materialSyncDTO = new SrmMaterialReceiptQO()
|
||||||
|
.setId(item.getId())
|
||||||
|
.setNoteNum(item.getNoteNum())
|
||||||
|
.setLineNumber(item.getLineNumber())
|
||||||
|
.setPoNum(item.getPoNum())
|
||||||
|
.setPoLineNumber(item.getPoLineNumber())
|
||||||
|
.setItemCode(item.getItemCode())
|
||||||
|
.setReceiptNum(item.getUnRecieveQty());
|
||||||
// 如果是质检单
|
// 如果是质检单
|
||||||
if (isQuality) {
|
if (isQuality) {
|
||||||
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId());
|
setQcMaterialSyncDto(qcMaterialSyncDTOS, materialSyncDTO, order, scanCodeQOS, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId());
|
||||||
} else {
|
} else {
|
||||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
|
WmsPoReceipt wmsPoReceipt = wmsPoReceipts.stream().filter(it -> it.getOrderNo().equals(item.getNoteNum()))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
if (Objects.isNull(wmsPoReceipt)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
setPoReceive(materialSyncDTO, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 盘点条码是否重复
|
// 盘点条码是否重复
|
||||||
Map<String, Long> duplicateCodes = srmMaterialReceiptScanCodes.stream()
|
Map<String, Long> duplicateCodes = codes.stream()
|
||||||
.collect(Collectors.groupingBy(
|
.collect(Collectors.groupingBy(
|
||||||
SrmMaterialReceiptScanCodes::getCodeId,
|
SrmMaterialReceiptNoScanCodes::getCodeId,
|
||||||
Collectors.counting()
|
Collectors.counting()
|
||||||
))
|
))
|
||||||
.entrySet()
|
.entrySet()
|
||||||
|
|
@ -855,7 +898,147 @@ public class NormalPGIController extends BaseController {
|
||||||
|
|
||||||
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
|
VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码");
|
||||||
|
|
||||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
normalPGIControllerService.takeNoScanDelivery(wmsPoReceipts, wmsQcReceives, wmsPoReceiptItems, wmsQcReceiveItems, codes, qcMaterialSyncDTOS, orderIds);
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购物料入库确认(无码)
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("unscan/task/confirm")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "普通物料任务上架确认")
|
||||||
|
public ApiResult<Void> takeDeliveryConfirm(@Valid @RequestBody ReceiveQO request) {
|
||||||
|
WmsPoReceipt wmsPoReceipt=wmsPoReceiptService.getById(request.getId());
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("无此任务");
|
||||||
|
VUtil.trueThrowBusinessError(!wmsPoReceipt.getSourceType().equals(1)).throwMessage("不属于无码收货的采购单");
|
||||||
|
|
||||||
|
//首先判断是否已经确认
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
||||||
|
VUtil.trueThrowBusinessError(Objects.equals(wmsPoReceipt.getIsCompleted(), true)).throwMessage("此任务已入库");
|
||||||
|
|
||||||
|
|
||||||
|
List<WmsPoReceiptItem> wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery()
|
||||||
|
.eq(WmsPoReceiptItem::getReceiveId, wmsPoReceipt.getId())
|
||||||
|
.list();
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(wmsPoReceiptItems)).throwMessage("获取入库详情失败");
|
||||||
|
List<WmsPoReceiptItem> receiptItems = new ArrayList<>();
|
||||||
|
List<StorageLocationDTO> storageLocationDTOS = new ArrayList<>();
|
||||||
|
List<InventoryDTO> inventories = new ArrayList<>();
|
||||||
|
List<ZWM3A17DTO> zwm3A17DTOS = new ArrayList<>();
|
||||||
|
List<SrmMaterialReceiptNoScanCodes> scanCodes = new ArrayList<>();
|
||||||
|
for (WmsPoReceiptItem item : wmsPoReceiptItems) {
|
||||||
|
item.setCrossQty(new BigDecimal(0));
|
||||||
|
item.setReceivedWarehouse(item.getReceivedWarehouse());
|
||||||
|
item.setInQty(item.getReceiptNum());
|
||||||
|
item.setUpdateTime(LocalDateTime.now());
|
||||||
|
item.setUpdateUserId(UserUtil.getUserId());
|
||||||
|
item.setUpdateUserName(UserUtil.getUserName());
|
||||||
|
receiptItems.add(item);
|
||||||
|
|
||||||
|
// SAP 和条码处理
|
||||||
|
//传入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())
|
||||||
|
.setItem1(new ArrayList<>())
|
||||||
|
.setItem2(new ArrayList<>());
|
||||||
|
zwm3A17DTOS.add(zwm3A17DTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ZWM3A17Item1DTO> item1 = zwm3A17DTO.getItem1();
|
||||||
|
List<ZWM3A17Item2DTO> item2 = zwm3A17DTO.getItem2();
|
||||||
|
List<SrmMaterialReceiptNoScanCodes> scanCode = srmMaterialReceiptNoScanCodesRepository.findByOrderItemId(item.getOrderItemId());
|
||||||
|
if (CollectionUtil.isNotEmpty(scanCode)) {
|
||||||
|
scanCode = scanCode.stream().filter(code -> code.getIsIntoStorage() == false)
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(scanCode)) {
|
||||||
|
scanCode.forEach(code -> {
|
||||||
|
// 库存
|
||||||
|
InventoryDTO inventoryDTO = inventories.stream()
|
||||||
|
.filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode())
|
||||||
|
&& inventoriesDTO.getBatchNumber().equals(code.getBatchNumber())
|
||||||
|
&& 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())
|
||||||
|
.setBatchNumber(code.getBatchNumber())
|
||||||
|
.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()));
|
||||||
|
|
||||||
|
scanCodes.add(code);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 库存
|
||||||
|
InventoryDTO inventoryDTO = new InventoryDTO()
|
||||||
|
.setMaterialNo(item.getItemCode())
|
||||||
|
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||||
|
.setWarehouseNo(item.getReceivedWarehouse())
|
||||||
|
.setBatchNumber("")
|
||||||
|
.setNum(item.getInQty());
|
||||||
|
inventories.add(inventoryDTO);
|
||||||
|
|
||||||
|
item1.add(new ZWM3A17Item1DTO()
|
||||||
|
.setEBELP(item.getPoLineNumber())
|
||||||
|
.setMATNR(item.getItemCode())
|
||||||
|
.setERFMG(item.getInQty())
|
||||||
|
.setMEINS(item.getUomCode())
|
||||||
|
.setCHARG("")
|
||||||
|
.setWERKS(wmsPoReceipt.getFactoryCode())
|
||||||
|
.setLGORT(item.getReceivedWarehouse())
|
||||||
|
.setKZKRI("")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
normalPGIControllerService.takeDeliveryConfirmUnScan(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getId(), scanCodes);
|
||||||
|
|
||||||
|
// normalPGIControllerService.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId(), scanCodes);
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,8 @@ import com.nflg.wms.common.pojo.ApiResult;
|
||||||
import com.nflg.wms.common.pojo.PageData;
|
import com.nflg.wms.common.pojo.PageData;
|
||||||
import com.nflg.wms.common.pojo.dto.InventoryDTO;
|
import com.nflg.wms.common.pojo.dto.InventoryDTO;
|
||||||
import com.nflg.wms.common.pojo.dto.StorageLocationDTO;
|
import com.nflg.wms.common.pojo.dto.StorageLocationDTO;
|
||||||
import com.nflg.wms.common.pojo.qo.DeliverNormalOrderSearchQO;
|
import com.nflg.wms.common.pojo.qo.*;
|
||||||
import com.nflg.wms.common.pojo.qo.NomalQMOrderSearchQO;
|
import com.nflg.wms.common.pojo.vo.*;
|
||||||
import com.nflg.wms.common.pojo.qo.PoReceiveTaskItemConfirmQO;
|
|
||||||
import com.nflg.wms.common.pojo.qo.QCReceiveTaskConfirmQO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.DeliverNormalOrderVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QCTaskItemVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QCTaskVO;
|
|
||||||
import com.nflg.wms.common.pojo.vo.QualityInspectionVO;
|
|
||||||
import com.nflg.wms.common.util.UserUtil;
|
import com.nflg.wms.common.util.UserUtil;
|
||||||
import com.nflg.wms.common.util.VUtil;
|
import com.nflg.wms.common.util.VUtil;
|
||||||
import com.nflg.wms.repository.entity.*;
|
import com.nflg.wms.repository.entity.*;
|
||||||
|
|
@ -66,6 +60,7 @@ public class NormalQMController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取SRM推送过来的质检单信息
|
* 获取SRM推送过来的质检单信息
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -77,6 +72,7 @@ public class NormalQMController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 质检物料上架任务(PDA)
|
* 质检物料上架任务(PDA)
|
||||||
|
*
|
||||||
* @param orderNo 送货单号或任务单号
|
* @param orderNo 送货单号或任务单号
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
@ -89,8 +85,9 @@ public class NormalQMController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 质检物料上架物料详情
|
* 质检物料上架物料详情
|
||||||
|
*
|
||||||
* @param taskId 任务ID
|
* @param taskId 任务ID
|
||||||
* **/
|
**/
|
||||||
@GetMapping("PDA/task/item")
|
@GetMapping("PDA/task/item")
|
||||||
@ApiMark(moduleName = "质检物料管理", apiName = "质检任务上架物料详情")
|
@ApiMark(moduleName = "质检物料管理", apiName = "质检任务上架物料详情")
|
||||||
public ApiResult<List<QCTaskItemVO>> getTaskItem(@Valid @NotNull @RequestParam Long taskId) {
|
public ApiResult<List<QCTaskItemVO>> getTaskItem(@Valid @NotNull @RequestParam Long taskId) {
|
||||||
|
|
@ -100,8 +97,9 @@ public class NormalQMController extends BaseController {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 质检物料上架任务确认
|
* 质检物料上架任务确认
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* **/
|
**/
|
||||||
@PostMapping("PDA/task/confirm")
|
@PostMapping("PDA/task/confirm")
|
||||||
@ApiMark(moduleName = "质检物料管理", apiName = "质检任务上架确认")
|
@ApiMark(moduleName = "质检物料管理", apiName = "质检任务上架确认")
|
||||||
public ApiResult<Void> confirm(@Valid @RequestBody List<QCReceiveTaskConfirmQO> request) {
|
public ApiResult<Void> confirm(@Valid @RequestBody List<QCReceiveTaskConfirmQO> request) {
|
||||||
|
|
@ -255,6 +253,46 @@ public class NormalQMController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 无码质检任务上架确认
|
||||||
|
*
|
||||||
|
* @param request 任务ID
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("unscan/task/confirm")
|
||||||
|
@ApiMark(moduleName = "质检物料管理", apiName = "无码质检任务上架确认")
|
||||||
|
public ApiResult<Void> confirmNoScan(@Valid @RequestBody ReceiveQO request) {
|
||||||
|
WmsQcReceive qcReceive = wmsQcReceiveService.getById( request.getId());
|
||||||
|
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(qcReceive)).throwMessage("无此任务");
|
||||||
|
VUtil.trueThrowBusinessError(!qcReceive.getSourceType().equals(1)).throwMessage("不属于无码收货的采购单");
|
||||||
|
//根据ID获取到任务单
|
||||||
|
List<QCReceiveTaskConfirmQO> taskConfirmQOS = new ArrayList<>();
|
||||||
|
List<QCTaskItemVO> tasks = normalQMControllerService.getTaskItem(qcReceive.getId());
|
||||||
|
if (CollectionUtil.isNotEmpty(tasks)) {
|
||||||
|
for (QCTaskItemVO item : tasks) {
|
||||||
|
QCReceiveTaskConfirmQO taskConfirmQO = new QCReceiveTaskConfirmQO();
|
||||||
|
taskConfirmQO.setId(qcReceive.getId())
|
||||||
|
.setFactoryCode(qcReceive.getFactoryCode())
|
||||||
|
.setPoNum(qcReceive.getOrderNo())
|
||||||
|
.setStorageLocation(item.getStorageLocation())
|
||||||
|
.setReceivedWarehouse(item.getReceivedWarehouse())
|
||||||
|
.setStorageLocationNew(item.getStorageLocation())
|
||||||
|
.setCrossQty(new BigDecimal(0));
|
||||||
|
List<Long> qcIdList = item.getScanCodes().stream()
|
||||||
|
.map(QCTaskItemScanCodesVO::getId)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
taskConfirmQO.setQcIdList(qcIdList);
|
||||||
|
taskConfirmQOS.add(taskConfirmQO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(taskConfirmQOS)).throwMessage("无效的上架任务");
|
||||||
|
|
||||||
|
return confirm(taskConfirmQOS);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void set3A18DTOS(ZWM3A18DTO zwm3A18DTO,
|
private void set3A18DTOS(ZWM3A18DTO zwm3A18DTO,
|
||||||
WmsSrmQualityInspection code,
|
WmsSrmQualityInspection code,
|
||||||
QCReceiveTaskConfirmQO item) {
|
QCReceiveTaskConfirmQO item) {
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,11 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.lang.Pair;
|
import cn.hutool.core.lang.Pair;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptNoScanCodes;
|
||||||
import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes;
|
import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes;
|
||||||
import com.nflg.wms.admin.pojo.dto.QCMaterialSyncDTO;
|
import com.nflg.wms.admin.pojo.dto.QCMaterialSyncDTO;
|
||||||
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
|
import com.nflg.wms.admin.pojo.dto.ZWM3A17DTO;
|
||||||
|
import com.nflg.wms.admin.repository.SrmMaterialReceiptNoScanCodesRepository;
|
||||||
import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository;
|
import com.nflg.wms.admin.repository.SrmMaterialReceiptScanCodesRepository;
|
||||||
import com.nflg.wms.common.pojo.dto.*;
|
import com.nflg.wms.common.pojo.dto.*;
|
||||||
import com.nflg.wms.common.pojo.qo.PDAScanCodeQO;
|
import com.nflg.wms.common.pojo.qo.PDAScanCodeQO;
|
||||||
|
|
@ -18,6 +20,7 @@ import com.nflg.wms.common.util.VUtil;
|
||||||
import com.nflg.wms.repository.entity.*;
|
import com.nflg.wms.repository.entity.*;
|
||||||
import com.nflg.wms.repository.service.*;
|
import com.nflg.wms.repository.service.*;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.ParameterizedTypeReference;
|
import org.springframework.core.ParameterizedTypeReference;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
|
|
@ -80,7 +83,7 @@ public class NormalPGIControllerService {
|
||||||
private StringRedisTemplate stringRedisTemplate;
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IWmsSrmMaterialQmsReceiptItemService wmsSrmMaterialQmsReceiptItemService;
|
private SrmMaterialReceiptNoScanCodesRepository srmMaterialReceiptNoCodesRepository;
|
||||||
@Resource
|
@Resource
|
||||||
private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository;
|
private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository;
|
||||||
@Resource
|
@Resource
|
||||||
|
|
@ -142,7 +145,8 @@ public class NormalPGIControllerService {
|
||||||
itemVO.setLineNumber(item.getLineNumber());
|
itemVO.setLineNumber(item.getLineNumber());
|
||||||
itemVO.setDeliveryQty(item.getDeliveryQty().subtract(item.getReceiptQty()));
|
itemVO.setDeliveryQty(item.getDeliveryQty().subtract(item.getReceiptQty()));
|
||||||
// 从 SAP 系统获取物料相关信息
|
// 从 SAP 系统获取物料相关信息
|
||||||
SAPSyncParamsDTO syncParamsDTO = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), order.getSupplierNum(), item.getItemCode());
|
SAPSyncParamsDTO syncParamsDTO = sapCommonService.getMaterialInfoInOrder(item.getPoNum(),
|
||||||
|
order.getSupplierNum(), item.getItemCode(), item.getPoLineNumber());
|
||||||
if (Objects.nonNull(syncParamsDTO)) {
|
if (Objects.nonNull(syncParamsDTO)) {
|
||||||
itemVO.setItemName(syncParamsDTO.getMaktx());
|
itemVO.setItemName(syncParamsDTO.getMaktx());
|
||||||
itemVO.setUomCode(syncParamsDTO.getMeins());
|
itemVO.setUomCode(syncParamsDTO.getMeins());
|
||||||
|
|
@ -246,10 +250,6 @@ public class NormalPGIControllerService {
|
||||||
.set(WmsSrmOrder::getIsCompleted, true)
|
.set(WmsSrmOrder::getIsCompleted, true)
|
||||||
.eq(WmsSrmOrder::getId, orderId).update();
|
.eq(WmsSrmOrder::getId, orderId).update();
|
||||||
}
|
}
|
||||||
// 保存扫描码
|
|
||||||
if (CollectionUtil.isNotEmpty(srmMaterialReceiptScanCodes)) {
|
|
||||||
srmMaterialReceiptCanCodesRepository.insert(srmMaterialReceiptScanCodes);
|
|
||||||
}
|
|
||||||
if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) {
|
if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) {
|
||||||
for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) {
|
for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) {
|
||||||
//导入SAP
|
//导入SAP
|
||||||
|
|
@ -270,6 +270,11 @@ public class NormalPGIControllerService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存扫描码
|
||||||
|
if (CollectionUtil.isNotEmpty(srmMaterialReceiptScanCodes)) {
|
||||||
|
srmMaterialReceiptCanCodesRepository.insert(srmMaterialReceiptScanCodes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|
@ -323,12 +328,133 @@ public class NormalPGIControllerService {
|
||||||
//修改二维码的入库状态
|
//修改二维码的入库状态
|
||||||
if (CollectionUtil.isNotEmpty(scanCodes)) {
|
if (CollectionUtil.isNotEmpty(scanCodes)) {
|
||||||
List<String> codeIds = scanCodes.stream().map(SrmMaterialReceiptScanCodes::getId).toList();
|
List<String> codeIds = scanCodes.stream().map(SrmMaterialReceiptScanCodes::getId).toList();
|
||||||
srmMaterialReceiptCanCodesRepository.updateIsIntoStorage(codeIds, true);
|
srmMaterialReceiptCanCodesRepository.updateIsIntoStorage(codeIds, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void takeNoScanDelivery(List<WmsPoReceipt> wmsPoReceipts, List<WmsQcReceive> wmsQcReceives
|
||||||
|
, List<WmsPoReceiptItem> wmsPoReceiptItems
|
||||||
|
, List<WmsQcReceiveItem> wmsQcReceiveItems, List<SrmMaterialReceiptNoScanCodes> codes
|
||||||
|
, List<QCMaterialSyncDTO> qcMaterialSyncDTOS
|
||||||
|
, List<Long> orderIds
|
||||||
|
) {
|
||||||
|
//生成普通物料的入库待检单,并修改送货单相应的收货数量
|
||||||
|
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||||
|
for (WmsPoReceipt wmsPoReceipt : wmsPoReceipts) {
|
||||||
|
wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(2));
|
||||||
|
|
||||||
|
List<WmsPoReceiptItem> items = wmsPoReceiptItems.stream().filter(q -> q.getNoteNum().equals(wmsPoReceipt.getOrderNo()))
|
||||||
|
.toList();
|
||||||
|
if (CollectionUtil.isNotEmpty(items)) {
|
||||||
|
wmsPoReceiptService.save(wmsPoReceipt);
|
||||||
|
|
||||||
|
wmsPoReceiptItemService.saveBatch(items);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//生成质检物料的入库待检单,并修改送货单相应的收货数量
|
||||||
|
if (CollectionUtil.isNotEmpty(wmsQcReceives)) {
|
||||||
|
for (WmsQcReceive wmsQcReceive : wmsQcReceives) {
|
||||||
|
wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(1));
|
||||||
|
List<WmsQcReceiveItem> items = wmsQcReceiveItems.stream().filter(q -> q.getNoteNum().equals(wmsQcReceive.getOrderNo()))
|
||||||
|
.toList();
|
||||||
|
if (CollectionUtil.isNotEmpty(items)) {
|
||||||
|
wmsQcReceiveService.save(wmsQcReceive);
|
||||||
|
wmsQcReceiveItemService.saveBatch(items);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Long orderId : orderIds) {
|
||||||
|
//更新收货单的完结状态
|
||||||
|
List<WmsSrmOrder> orders = wmsSrmOrderService.getUnCompletedItem(orderId);
|
||||||
|
if (CollectionUtil.isEmpty(orders)) {
|
||||||
|
wmsSrmOrderService.lambdaUpdate()
|
||||||
|
.set(WmsSrmOrder::getIsCompleted, true)
|
||||||
|
.eq(WmsSrmOrder::getId, orderId).update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) {
|
||||||
|
for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) {
|
||||||
|
//导入SAP
|
||||||
|
Pair<Pair<String, String>, Pair<String, String>> zwm3A17ReturnDTO = sapService.zwm3a17(dto.getZwm3A17DTO());
|
||||||
|
//推入srm
|
||||||
|
SRMInspectionContentDTO content = dto.getPushDto().getContent();
|
||||||
|
content.setReceiveNum(zwm3A17ReturnDTO.getValue().getKey());
|
||||||
|
pushInspectionMaterialsToSRM(dto.getPushDto());
|
||||||
|
//修改收货单的物料凭证和年度物料凭证
|
||||||
|
List<Long> ids = dto.getReceiptIds();
|
||||||
|
//修改收货单的物料凭证和年度物料凭证
|
||||||
|
if (CollectionUtil.isNotEmpty(ids)) {
|
||||||
|
wmsQcReceiveItemService.lambdaUpdate()
|
||||||
|
.set(WmsQcReceiveItem::getMaterialDoc, zwm3A17ReturnDTO.getValue().getKey())
|
||||||
|
.set(WmsQcReceiveItem::getMaterialDocYear, zwm3A17ReturnDTO.getValue().getValue())
|
||||||
|
.in(WmsQcReceiveItem::getId, ids)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 保存扫描码
|
||||||
|
if (CollectionUtil.isNotEmpty(codes)) {
|
||||||
|
srmMaterialReceiptNoCodesRepository.insert(codes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void takeDeliveryConfirmUnScan(List<WmsPoReceiptItem> receiptItems, List<StorageLocationDTO> storageLocationDTOS,
|
||||||
|
List<InventoryDTO> inventories, List<ZWM3A17DTO> zwm3A17DTOS, Long id,
|
||||||
|
List<SrmMaterialReceiptNoScanCodes> scanCodes) {
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(receiptItems)) {
|
||||||
|
wmsPoReceiptItemService.updateBatchById(receiptItems);
|
||||||
|
}
|
||||||
|
//修改任务的状态
|
||||||
|
List<Long> ids = wmsPoReceiptService.checkItemStatus(id);
|
||||||
|
if (CollectionUtil.isEmpty(ids)) {
|
||||||
|
wmsPoReceiptService.lambdaUpdate()
|
||||||
|
.eq(WmsPoReceipt::getId, id)
|
||||||
|
.set(WmsPoReceipt::getIsCompleted, true)
|
||||||
|
.set(WmsPoReceipt::getUpdateTime, LocalDateTime.now())
|
||||||
|
.set(WmsPoReceipt::getUpdateUserId, UserUtil.getUserId())
|
||||||
|
.set(WmsPoReceipt::getUpdateUserName, UserUtil.getUserName())
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(inventories)) {
|
||||||
|
|
||||||
|
inventoryService.in(inventories);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(storageLocationDTOS)) {
|
||||||
|
storageLocationDTOS.forEach(storageLocationDTO -> {
|
||||||
|
sapService.zwm3A02(storageLocationDTO.getFactory(),
|
||||||
|
storageLocationDTO.getMaterialNo(),
|
||||||
|
storageLocationDTO.getWarehouseNo(), storageLocationDTO.getBinNos());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//推送到SAP
|
||||||
|
if (CollectionUtil.isNotEmpty(zwm3A17DTOS)) {
|
||||||
|
for (ZWM3A17DTO zwm3A17DTO : zwm3A17DTOS) {
|
||||||
|
Pair<Pair<String, String>, Pair<String, String>> returnDto = sapService.zwm3a17(zwm3A17DTO);
|
||||||
|
wmsPoReceiptItemService.lambdaUpdate()
|
||||||
|
.eq(WmsPoReceiptItem::getPoNum, zwm3A17DTO.getEbeln())
|
||||||
|
.eq(WmsPoReceiptItem::getReceiveId, id)
|
||||||
|
.set(WmsPoReceiptItem::getMaterialDoc, returnDto.getKey().getKey())
|
||||||
|
.set(WmsPoReceiptItem::getMaterialDocYear, returnDto.getValue().getValue())
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//修改二维码的入库状态
|
||||||
|
if (CollectionUtil.isNotEmpty(scanCodes)) {
|
||||||
|
List<String> codeIds = scanCodes.stream().map(SrmMaterialReceiptNoScanCodes::getId).toList();
|
||||||
|
srmMaterialReceiptNoCodesRepository.updateIsIntoStorage(codeIds, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将检验物料信息推送到SRM系统
|
* 将检验物料信息推送到SRM系统
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,47 @@ public class SAPCommonService {
|
||||||
@Resource
|
@Resource
|
||||||
private SapService sapService;
|
private SapService sapService;
|
||||||
|
|
||||||
|
public List<SAPSyncParamsDTO> getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) {
|
||||||
|
//获取订单信息
|
||||||
|
List<SAPMaterialInfoInOrderDTO> sapMaterialInfoInOrder = sapService.zim004(orderNo, supplierNo, materialNo);
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(sapMaterialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo);
|
||||||
|
//SAPMaterialInfoInOrderDTO materialInfoInOrder = sapMaterialInfoInOrder.stream().filter(item -> item.getEbelp().equals(orderItemNo)).findFirst().orElse(null);
|
||||||
|
// SAPMaterialInfoInOrderDTO materialInfoInOrder = CollectionUtil.get(sapService.zim004(orderNo, supplierNo, materialNo), 0);
|
||||||
|
//VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo);
|
||||||
|
List<SAPSyncParamsDTO> result=new ArrayList<>();
|
||||||
|
for (SAPMaterialInfoInOrderDTO materialInfoInOrder : sapMaterialInfoInOrder) {
|
||||||
|
SAPSyncParamsDTO syncParams = new SAPSyncParamsDTO();
|
||||||
|
syncParams.setMaktx(materialInfoInOrder.getMaktx());
|
||||||
|
syncParams.setEbelp(materialInfoInOrder.getEbelp());
|
||||||
|
syncParams.setMatnr(materialInfoInOrder.getMatnr());
|
||||||
|
syncParams.setMenge(materialInfoInOrder.getMenge());
|
||||||
|
syncParams.setWemng(materialInfoInOrder.getWemng());
|
||||||
|
syncParams.setMeins(materialInfoInOrder.getMeins());
|
||||||
|
syncParams.setEbeln(materialInfoInOrder.getEbeln());
|
||||||
|
syncParams.setTransportNum(materialInfoInOrder.getTransportNum());
|
||||||
|
syncParams.setMatkl(materialInfoInOrder.getMatkl());
|
||||||
|
syncParams.setWgbez(materialInfoInOrder.getWgbez());
|
||||||
|
syncParams.setWerks(materialInfoInOrder.getWerks());
|
||||||
|
syncParams.setLbprt(materialInfoInOrder.getLbprt());
|
||||||
|
syncParams.setKzkri(materialInfoInOrder.getKzkri());
|
||||||
|
|
||||||
|
//获取仓库信息
|
||||||
|
List<String> warehouseNos = new ArrayList<>();
|
||||||
|
warehouseNos.add(materialInfoInOrder.getWarehouseNo());
|
||||||
|
List<String> materialNos = new ArrayList<>();
|
||||||
|
materialNos.add(materialInfoInOrder.getMatnr());
|
||||||
|
List<SAPSyncFromDTO> list = sapService.zwm3A01(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null);
|
||||||
|
if (!CollectionUtil.isEmpty(list)) {
|
||||||
|
//同步仓库信息
|
||||||
|
SAPSyncFromDTO dbWarehouse = list.get(0);
|
||||||
|
syncParams.setWarehouseNo(dbWarehouse.getWarehouseNo());
|
||||||
|
syncParams.setBinNos(dbWarehouse.getBinNos());
|
||||||
|
}
|
||||||
|
result.add(syncParams);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取物料信息
|
* 获取物料信息
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,13 @@ package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
public class PDAScanCodeQO {
|
public class PDAScanCodeQO {
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.nflg.wms.common.pojo.qo;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ReceiveQO {
|
||||||
|
@NotNull
|
||||||
|
private Long id;
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ package com.nflg.wms.common.pojo.qo;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -11,6 +12,7 @@ import java.util.List;
|
||||||
* 送货单收货参数
|
* 送货单收货参数
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
public class SrmMaterialReceiptQO {
|
public class SrmMaterialReceiptQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -83,4 +83,11 @@ public class POReceiptVO {
|
||||||
* 入库时间
|
* 入库时间
|
||||||
*/
|
*/
|
||||||
private LocalDate inTime;
|
private LocalDate inTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单来源类型
|
||||||
|
* 0 来源于扫码收货
|
||||||
|
* 1 无码收货
|
||||||
|
*/
|
||||||
|
private Integer sourceType;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,4 +75,11 @@ public class QCReceiptVO {
|
||||||
* 是否已开检
|
* 是否已开检
|
||||||
*/
|
*/
|
||||||
private Boolean isCheck;
|
private Boolean isCheck;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单来源类型
|
||||||
|
* 0 来源于扫码收货
|
||||||
|
* 1 无码收货
|
||||||
|
*/
|
||||||
|
private Integer sourceType;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
<select id="getTask" resultType="com.nflg.wms.repository.entity.WmsPoReceipt">
|
<select id="getTask" resultType="com.nflg.wms.repository.entity.WmsPoReceipt">
|
||||||
select *
|
select *
|
||||||
from wms_po_receipt
|
from wms_po_receipt
|
||||||
where is_completed=false
|
where is_completed=false and sourceType=0
|
||||||
<if test="orederNo !=null and orederNo !='' ">
|
<if test="orederNo !=null and orederNo !='' ">
|
||||||
and ( order_no like #{orederNo} or in_num like #{orederNo} )
|
and ( order_no like #{orederNo} or in_num like #{orederNo} )
|
||||||
</if>
|
</if>
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
c.supplier_name,b.supplier_num,
|
c.supplier_name,b.supplier_num,
|
||||||
a.is_completed,a.create_time as receive_time,
|
a.is_completed,a.create_time as receive_time,
|
||||||
a.update_time as in_time, a.create_user_name as receive_user_name,
|
a.update_time as in_time, a.create_user_name as receive_user_name,
|
||||||
a.update_user_name as in_user_name from wms_po_receipt a left join
|
a.update_user_name as in_user_name,a.source_type from wms_po_receipt a left join
|
||||||
wms_srm_order b on a.order_no=b.note_num
|
wms_srm_order b on a.order_no=b.note_num
|
||||||
left join user_supplier c on b.supplier_num=c.supplier_code
|
left join user_supplier c on b.supplier_num=c.supplier_code
|
||||||
<where>
|
<where>
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
create_time,
|
create_time,
|
||||||
factory_code
|
factory_code
|
||||||
from wms_qc_receive
|
from wms_qc_receive
|
||||||
where is_completed !=2 and is_check = true
|
where is_completed !=2 and is_check = true and sourceType=0
|
||||||
<if test="orderNo != null and orderNo != ''">
|
<if test="orderNo != null and orderNo != ''">
|
||||||
and ( in_no like concat( '%',#{orderNo},'%') or order_no like concat( '%',#{orderNo},'%') )
|
and ( in_no like concat( '%',#{orderNo},'%') or order_no like concat( '%',#{orderNo},'%') )
|
||||||
</if>
|
</if>
|
||||||
|
|
@ -32,7 +32,8 @@
|
||||||
a.update_time as in_time,
|
a.update_time as in_time,
|
||||||
a.create_user_name as receive_user_name,
|
a.create_user_name as receive_user_name,
|
||||||
a.update_user_name as in_user_name,
|
a.update_user_name as in_user_name,
|
||||||
a.is_check
|
a.is_check,
|
||||||
|
a.source_type
|
||||||
from wms_qc_receive a
|
from wms_qc_receive a
|
||||||
left join
|
left join
|
||||||
wms_srm_order b on a.order_no = b.note_num
|
wms_srm_order b on a.order_no = b.note_num
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue