一个临时的版本,用于前后端联调,屏蔽SAP部分功能
This commit is contained in:
parent
56e5db2c3b
commit
cb53b606bb
|
|
@ -1,7 +1,7 @@
|
||||||
package com.nflg.wms.admin.controller;
|
package com.nflg.wms.admin.controller;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
普通物料收货单
|
* 普通物料收货单
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
|
@ -42,6 +42,10 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 普通物料收货单
|
||||||
|
*/
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/pgi/normal")
|
@RequestMapping("/pgi/normal")
|
||||||
public class NormalPGIController extends BaseController {
|
public class NormalPGIController extends BaseController {
|
||||||
|
|
@ -101,19 +105,6 @@ public class NormalPGIController extends BaseController {
|
||||||
return ApiResult.success(srmOrderItemVOS);
|
return ApiResult.success(srmOrderItemVOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* PDA扫描送货单号获取送货单详情
|
|
||||||
* @param
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
//PDA 扫码获取收货信息
|
|
||||||
@GetMapping("getOrderItemByOrderNo")
|
|
||||||
@ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情")
|
|
||||||
public ApiResult<PDAOrderVO> getOrderItemByOrderNo(@RequestParam String orderNo) {
|
|
||||||
PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo);
|
|
||||||
return ApiResult.success(pdaOrderVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取扫码的详情信息
|
* 获取扫码的详情信息
|
||||||
* @param orderItemId
|
* @param orderItemId
|
||||||
|
|
@ -128,6 +119,246 @@ public class NormalPGIController extends BaseController {
|
||||||
return ApiResult.success(pdas);
|
return ApiResult.success(pdas);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 扫描送货单号获取送货单详情(PDA)
|
||||||
|
* @param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
//PDA 扫码获取收货信息
|
||||||
|
@GetMapping("PDA/getOrderItemByOrderNo")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情")
|
||||||
|
public ApiResult<PDAOrderVO> getOrderItemByOrderNo(@RequestParam String orderNo) {
|
||||||
|
PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo);
|
||||||
|
return ApiResult.success(pdaOrderVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收货确认(PDA使用)
|
||||||
|
*
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
//收货确认
|
||||||
|
@PostMapping("PDA/takeDelivery")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "收货确认")
|
||||||
|
public ApiResult<Void> takeDelivery(@Valid @RequestBody List<SrmMaterialReceiptQO> request) {
|
||||||
|
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空");
|
||||||
|
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.get(0).getNoteNum()).one();
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
|
||||||
|
List<SAPSyncParamsDTO> sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order);
|
||||||
|
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
|
||||||
|
.setCreateTime(LocalDateTime.now())
|
||||||
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
|
.setOrderNo(order.getNoteNum())
|
||||||
|
.setCreateUserName(UserUtil.getUserName())
|
||||||
|
.setCreateUserId(UserUtil.getUserId())
|
||||||
|
.setFactoryCode(order.getIuCode())
|
||||||
|
.setIsCompleted(false);
|
||||||
|
|
||||||
|
WmsQcReceive wmsQcReceive = new WmsQcReceive()
|
||||||
|
.setCreateTime(LocalDateTime.now())
|
||||||
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
|
.setIsCompleted((short) 0)
|
||||||
|
.setOrderNo(order.getNoteNum())
|
||||||
|
.setCreateUserName(UserUtil.getUserName())
|
||||||
|
.setFactoryCode(order.getIuCode())
|
||||||
|
.setCreateUserId(UserUtil.getUserId());
|
||||||
|
|
||||||
|
List<WmsPoReceiptItem> wmsPoReceiptItems = new ArrayList<>();
|
||||||
|
|
||||||
|
List<WmsQcReceiveItem> wmsQcReceiveItems = new ArrayList<>();
|
||||||
|
|
||||||
|
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
||||||
|
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
for (SrmMaterialReceiptQO item : request) {
|
||||||
|
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream()
|
||||||
|
.filter(sapSyncParamsDTO ->
|
||||||
|
sapSyncParamsDTO.getEbeln().equals(item.getPoNum())
|
||||||
|
&& sapSyncParamsDTO.getEbelp().equals(item.getPoLineNumber()))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
|
//数量验证(判断收货数量是否大于了未收数量)
|
||||||
|
VUtil.trueThrowBusinessError(item.getReceiptNum().compareTo(materialInfoInOrder.getTransportNum()) > 0).throwMessage("物料收货数量[" + item.getReceiptNum() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum());
|
||||||
|
//序列号和批次号验证
|
||||||
|
List<SrmMaterialReceiptScanCodes> codes = normalPGIControllerService.validateScanCodes(item, materialInfoInOrder);
|
||||||
|
if (CollectionUtil.isNotEmpty(codes)) {
|
||||||
|
srmMaterialReceiptScanCodes.addAll(codes);
|
||||||
|
}
|
||||||
|
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
|
||||||
|
// 如果是质检单
|
||||||
|
if (isQuality) {
|
||||||
|
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId());
|
||||||
|
} else {
|
||||||
|
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 普通物料的上架任务(PDA)
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping("PDA/task")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "普通物料上架任务")
|
||||||
|
public ApiResult<List<PoReceiveTaskVO>> takeDelivery(@Valid @RequestBody String orederNo) {
|
||||||
|
List<WmsPoReceipt> wmsPoReceipts = wmsPoReceiptItemService.getTask(orederNo);
|
||||||
|
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||||
|
return ApiResult.success(Convert.toList(PoReceiveTaskVO.class, wmsPoReceipts));
|
||||||
|
}
|
||||||
|
return ApiResult.success(new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上架任务详情(PDA)
|
||||||
|
* */
|
||||||
|
@GetMapping("PDA/task/item")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
|
||||||
|
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestBody Long taskId) {
|
||||||
|
List<WmsPoReceiptItem> wmsPoReceipts = wmsPoReceiptItemService.lambdaQuery()
|
||||||
|
.eq(WmsPoReceiptItem::getReceiveId, taskId)
|
||||||
|
.list();
|
||||||
|
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
||||||
|
return ApiResult.success(Convert.toList(PoReceiveTaskItemVO.class, wmsPoReceipts));
|
||||||
|
} else {
|
||||||
|
return ApiResult.success(new ArrayList<>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 采购物料入库确认(PDA)
|
||||||
|
* @param request
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("PDA/task/confirm")
|
||||||
|
@ApiMark(moduleName = "送货单管理", apiName = "普通物料任务上架确认")
|
||||||
|
public ApiResult<Void> takeDeliveryConfirm(@Valid @RequestBody PoReceiveTaskConfirmQO request) {
|
||||||
|
|
||||||
|
//首先判断是否已经确认
|
||||||
|
WmsPoReceipt wmsPoReceipt = wmsPoReceiptService.getById(request.getTaskId());
|
||||||
|
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
||||||
|
VUtil.trueThrowBusinessError(Objects.equals(wmsPoReceipt.getIsCompleted(), true)).throwMessage("此任务已入库");
|
||||||
|
List<Long> uniqueIds = request.getItems().stream()
|
||||||
|
.map(PoReceiveTaskItemConfirmQO::getId) // 提取每个对象的 ID
|
||||||
|
.distinct() // 去重
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<WmsPoReceiptItem> wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery()
|
||||||
|
.in(WmsPoReceiptItem::getId, uniqueIds)
|
||||||
|
.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<>();
|
||||||
|
|
||||||
|
for (WmsPoReceiptItem item : wmsPoReceiptItems) {
|
||||||
|
PoReceiveTaskItemConfirmQO qo = request.getItems().stream()
|
||||||
|
.filter(q -> q.getId().equals(item.getId()))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
if (Objects.isNull(qo))
|
||||||
|
continue;
|
||||||
|
item.setCrossQty(qo.getCrossQty());
|
||||||
|
item.setReceivedWarehouse(qo.getReceivedWarehouse());
|
||||||
|
item.setInQty(item.getReceiptNum());
|
||||||
|
item.setUpdateTime(LocalDateTime.now());
|
||||||
|
item.setUpdateUserId(UserUtil.getUserId());
|
||||||
|
item.setUpdateUserName(UserUtil.getUserName());
|
||||||
|
receiptItems.add(item);
|
||||||
|
//储位处理
|
||||||
|
if (!qo.getStorageLocation().equals(qo.getStorageLocationNew())) {
|
||||||
|
List<String> bins = Arrays.asList(item.getStorageLocation().split("/"));
|
||||||
|
storageLocationDTOS.add(new StorageLocationDTO()
|
||||||
|
.setBinNos(bins)
|
||||||
|
.setMaterialNo(item.getItemCode())
|
||||||
|
.setWarehouseNo(item.getReceivedWarehouse())
|
||||||
|
.setFactory(wmsPoReceipt.getFactoryCode())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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<SrmMaterialReceiptScanCodes> scanCode = srmMaterialReceiptScanCodesRepository.findByOrderItemId(item.getOrderItemId().toString());
|
||||||
|
if (CollectionUtil.isEmpty(scanCode)) {
|
||||||
|
scanCode.forEach(code -> {
|
||||||
|
// 库存
|
||||||
|
InventoryDTO inventoryDTO = new InventoryDTO()
|
||||||
|
.setMaterialNo(item.getItemCode())
|
||||||
|
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
||||||
|
.setWarehouseNo(item.getReceivedWarehouse())
|
||||||
|
.setBatchNumber(code.getBatchNumber())
|
||||||
|
.setNum(code.getCodeNum());
|
||||||
|
inventories.add(inventoryDTO);
|
||||||
|
|
||||||
|
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("")
|
||||||
|
);
|
||||||
|
|
||||||
|
item2.add(new ZWM3A17Item2DTO()
|
||||||
|
.setEBELP(item.getPoLineNumber())
|
||||||
|
.setFLAG("")
|
||||||
|
.setFLAG(code.getSerialNumbers()));
|
||||||
|
});
|
||||||
|
} 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.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId());
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<SAPSyncParamsDTO> getSapSyncParamsDTOS(List<SrmMaterialReceiptQO> request, WmsSrmOrder order) {
|
private List<SAPSyncParamsDTO> getSapSyncParamsDTOS(List<SrmMaterialReceiptQO> request, WmsSrmOrder order) {
|
||||||
List<Triple<String, String, String>> uniqueCombinations = request.stream()
|
List<Triple<String, String, String>> uniqueCombinations = request.stream()
|
||||||
.map(item -> Triple.of(item.getPoNum(), order.getSupplierNum(), item.getItemCode()))
|
.map(item -> Triple.of(item.getPoNum(), order.getSupplierNum(), item.getItemCode()))
|
||||||
|
|
@ -294,7 +525,7 @@ public class NormalPGIController extends BaseController {
|
||||||
content.setLineVOList(new ArrayList<>());
|
content.setLineVOList(new ArrayList<>());
|
||||||
dto.setContent(content);
|
dto.setContent(content);
|
||||||
dto.setCode("SCAN_RCV_RECEIVE_TO_SRM");
|
dto.setCode("SCAN_RCV_RECEIVE_TO_SRM");
|
||||||
qcDto.setPushDto(srmPushDto);
|
qcDto.setPushDto(dto);
|
||||||
}
|
}
|
||||||
srmPushDto = qcDto.getPushDto();
|
srmPushDto = qcDto.getPushDto();
|
||||||
|
|
||||||
|
|
@ -331,229 +562,6 @@ public class NormalPGIController extends BaseController {
|
||||||
qcDto.getReceiptIds().add(qmsReceiptItem.getId());
|
qcDto.getReceiptIds().add(qmsReceiptItem.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 收货确认(PDA使用)
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
//收货确认
|
|
||||||
@PostMapping("takeDelivery")
|
|
||||||
@ApiMark(moduleName = "送货单管理", apiName = "收货确认")
|
|
||||||
public ApiResult<Void> takeDelivery(@Valid @RequestBody List<SrmMaterialReceiptQO> request) {
|
|
||||||
VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("收货参数为空");
|
|
||||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getId, request.get(0).getNoteNum()).one();
|
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在");
|
|
||||||
List<SAPSyncParamsDTO> sapSyncParamsDTOS = getSapSyncParamsDTOS(request, order);
|
|
||||||
WmsPoReceipt wmsPoReceipt = new WmsPoReceipt()
|
|
||||||
.setCreateTime(LocalDateTime.now())
|
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
|
||||||
.setOrderNo(order.getNoteNum())
|
|
||||||
.setCreateUserName(UserUtil.getUserName())
|
|
||||||
.setCreateUserId(UserUtil.getUserId())
|
|
||||||
.setFactoryCode(order.getIuCode())
|
|
||||||
.setIsCompleted(false);
|
|
||||||
|
|
||||||
WmsQcReceive wmsQcReceive = new WmsQcReceive()
|
|
||||||
.setCreateTime(LocalDateTime.now())
|
|
||||||
.setId(IdUtil.getSnowflakeNextId())
|
|
||||||
.setIsCompleted((short) 0)
|
|
||||||
.setOrderNo(order.getNoteNum())
|
|
||||||
.setCreateUserName(UserUtil.getUserName())
|
|
||||||
.setFactoryCode(order.getIuCode())
|
|
||||||
.setCreateUserId(UserUtil.getUserId());
|
|
||||||
|
|
||||||
List<WmsPoReceiptItem> wmsPoReceiptItems = new ArrayList<>();
|
|
||||||
|
|
||||||
List<WmsQcReceiveItem> wmsQcReceiveItems = new ArrayList<>();
|
|
||||||
|
|
||||||
List<SrmMaterialReceiptScanCodes> srmMaterialReceiptScanCodes = new ArrayList<>();
|
|
||||||
List<QCMaterialSyncDTO> qcMaterialSyncDTOS = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
for (SrmMaterialReceiptQO item : request) {
|
|
||||||
if (item.getReceiptNum().equals(BigDecimal.ZERO))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream()
|
|
||||||
.filter(sapSyncParamsDTO ->
|
|
||||||
sapSyncParamsDTO.getEbeln().equals(item.getPoNum())
|
|
||||||
&& sapSyncParamsDTO.getEbelp().equals(item.getPoLineNumber()))
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
|
|
||||||
//数量验证(判断收货数量是否大于了未收数量)
|
|
||||||
VUtil.trueThrowBusinessError(item.getReceiptNum().compareTo(materialInfoInOrder.getTransportNum()) > 0).throwMessage("物料收货数量[" + item.getReceiptNum() + "]大于了未收数量[" + materialInfoInOrder.getTransportNum() + "],订单号:" + item.getPoNum());
|
|
||||||
//序列号和批次号验证
|
|
||||||
List<SrmMaterialReceiptScanCodes> codes = normalPGIControllerService.validateScanCodes(item, materialInfoInOrder);
|
|
||||||
if (CollectionUtil.isNotEmpty(codes)) {
|
|
||||||
srmMaterialReceiptScanCodes.addAll(codes);
|
|
||||||
}
|
|
||||||
boolean isQuality = materialInfoInOrder.getKzkri().equals("X");
|
|
||||||
// 如果是质检单
|
|
||||||
if (isQuality) {
|
|
||||||
setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId());
|
|
||||||
} else {
|
|
||||||
setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId());
|
|
||||||
return ApiResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取SRM同步参数
|
|
||||||
*
|
|
||||||
* @param request
|
|
||||||
* @param order
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
|
|
||||||
@GetMapping("task")
|
|
||||||
@ApiMark(moduleName = "送货单管理", apiName = "普通物料上架任务")
|
|
||||||
public ApiResult<List<PoReceiveTaskVO>> takeDelivery(@Valid @RequestBody String orederNo) {
|
|
||||||
List<WmsPoReceipt> wmsPoReceipts = wmsPoReceiptItemService.getTask(orederNo);
|
|
||||||
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
|
||||||
return ApiResult.success(Convert.toList(PoReceiveTaskVO.class, wmsPoReceipts));
|
|
||||||
}
|
|
||||||
return ApiResult.success(new ArrayList<>());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("task/item")
|
|
||||||
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
|
|
||||||
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestBody Long taskId) {
|
|
||||||
List<WmsPoReceiptItem> wmsPoReceipts = wmsPoReceiptItemService.lambdaQuery()
|
|
||||||
.eq(WmsPoReceiptItem::getReceiveId, taskId)
|
|
||||||
.list();
|
|
||||||
if (CollectionUtil.isNotEmpty(wmsPoReceipts)) {
|
|
||||||
return ApiResult.success(Convert.toList(PoReceiveTaskItemVO.class, wmsPoReceipts));
|
|
||||||
} else {
|
|
||||||
return ApiResult.success(new ArrayList<>());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("task/confirm")
|
|
||||||
@ApiMark(moduleName = "送货单管理", apiName = "普通物料任务上架确认")
|
|
||||||
public ApiResult<Void> takeDeliveryConfirm(@Valid @RequestBody PoReceiveTaskConfirmQO request) {
|
|
||||||
|
|
||||||
//首先判断是否已经确认
|
|
||||||
WmsPoReceipt wmsPoReceipt = wmsPoReceiptService.getById(request.getTaskId());
|
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(wmsPoReceipt)).throwMessage("收货单不存在");
|
|
||||||
VUtil.trueThrowBusinessError(Objects.equals(wmsPoReceipt.getIsCompleted(), true)).throwMessage("此任务已入库");
|
|
||||||
List<Long> uniqueIds = request.getItems().stream()
|
|
||||||
.map(PoReceiveTaskItemConfirmQO::getId) // 提取每个对象的 ID
|
|
||||||
.distinct() // 去重
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
List<WmsPoReceiptItem> wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery()
|
|
||||||
.in(WmsPoReceiptItem::getId, uniqueIds)
|
|
||||||
.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<>();
|
|
||||||
|
|
||||||
for (WmsPoReceiptItem item : wmsPoReceiptItems) {
|
|
||||||
PoReceiveTaskItemConfirmQO qo = request.getItems().stream()
|
|
||||||
.filter(q -> q.getId().equals(item.getId()))
|
|
||||||
.findFirst()
|
|
||||||
.orElse(null);
|
|
||||||
if (Objects.isNull(qo))
|
|
||||||
continue;
|
|
||||||
item.setCrossQty(qo.getCrossQty());
|
|
||||||
item.setReceivedWarehouse(qo.getReceivedWarehouse());
|
|
||||||
item.setInQty(item.getReceiptNum());
|
|
||||||
item.setUpdateTime(LocalDateTime.now());
|
|
||||||
item.setUpdateUserId(UserUtil.getUserId());
|
|
||||||
item.setUpdateUserName(UserUtil.getUserName());
|
|
||||||
receiptItems.add(item);
|
|
||||||
//储位处理
|
|
||||||
if (!qo.getStorageLocation().equals(qo.getStorageLocationNew())) {
|
|
||||||
List<String> bins = Arrays.asList(item.getStorageLocation().split("/"));
|
|
||||||
storageLocationDTOS.add(new StorageLocationDTO()
|
|
||||||
.setBinNos(bins)
|
|
||||||
.setMaterialNo(item.getItemCode())
|
|
||||||
.setWarehouseNo(item.getReceivedWarehouse())
|
|
||||||
.setFactory(wmsPoReceipt.getFactoryCode())
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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<SrmMaterialReceiptScanCodes> scanCode = srmMaterialReceiptScanCodesRepository.findByOrderItemId(item.getOrderItemId().toString());
|
|
||||||
if (CollectionUtil.isEmpty(scanCode)) {
|
|
||||||
scanCode.forEach(code -> {
|
|
||||||
// 库存
|
|
||||||
InventoryDTO inventoryDTO = new InventoryDTO()
|
|
||||||
.setMaterialNo(item.getItemCode())
|
|
||||||
.setFactoryNo(wmsPoReceipt.getFactoryCode())
|
|
||||||
.setWarehouseNo(item.getReceivedWarehouse())
|
|
||||||
.setBatchNumber(code.getBatchNumber())
|
|
||||||
.setNum(code.getCodeNum());
|
|
||||||
inventories.add(inventoryDTO);
|
|
||||||
|
|
||||||
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("")
|
|
||||||
);
|
|
||||||
|
|
||||||
item2.add(new ZWM3A17Item2DTO()
|
|
||||||
.setEBELP(item.getPoLineNumber())
|
|
||||||
.setFLAG("")
|
|
||||||
.setFLAG(code.getSerialNumbers()));
|
|
||||||
});
|
|
||||||
} 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.takeDeliveryConfirm(receiptItems, storageLocationDTOS, inventories, zwm3A17DTOS, request.getTaskId());
|
|
||||||
return ApiResult.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****
|
/****
|
||||||
//一键收货
|
//一键收货
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,11 +75,11 @@ public class NormalQMController extends BaseController {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 质检物料上架任务
|
* 质检物料上架任务(PDA)
|
||||||
* @param orderNo
|
* @param orderNo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("task")
|
@GetMapping("/PDA/task")
|
||||||
@ApiMark(moduleName = "质检物料管理", apiName = "质检物料上架任务")
|
@ApiMark(moduleName = "质检物料管理", apiName = "质检物料上架任务")
|
||||||
public ApiResult<List<QCTaskVO>> getTasks(@RequestParam String orderNo) {
|
public ApiResult<List<QCTaskVO>> getTasks(@RequestParam String orderNo) {
|
||||||
List<QCTaskVO> tasks = wmsQcReceiveService.getTasks(orderNo);
|
List<QCTaskVO> tasks = wmsQcReceiveService.getTasks(orderNo);
|
||||||
|
|
@ -89,7 +89,7 @@ public class NormalQMController extends BaseController {
|
||||||
/**
|
/**
|
||||||
* 质检物料上架物料详情
|
* 质检物料上架物料详情
|
||||||
* **/
|
* **/
|
||||||
@GetMapping("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) {
|
||||||
List<QCTaskItemVO> tasks = normalQMControllerService.getTaskItem(taskId);
|
List<QCTaskItemVO> tasks = normalQMControllerService.getTaskItem(taskId);
|
||||||
|
|
@ -99,7 +99,7 @@ public class NormalQMController extends BaseController {
|
||||||
/**
|
/**
|
||||||
* 质检物料上架任务确认
|
* 质检物料上架任务确认
|
||||||
* **/
|
* **/
|
||||||
@PostMapping("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) {
|
||||||
if (CollectionUtil.isEmpty(request))
|
if (CollectionUtil.isEmpty(request))
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,8 @@ public class NormalPGIControllerService {
|
||||||
*/
|
*/
|
||||||
public PDAOrderVO getOrderItemByOrderNo(@RequestParam String orderNo) {
|
public PDAOrderVO getOrderItemByOrderNo(@RequestParam String orderNo) {
|
||||||
// 根据订单编号查询订单主表信息
|
// 根据订单编号查询订单主表信息
|
||||||
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo).eq(WmsSrmOrder::getIsCompleted, false).one();
|
WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, orderNo)
|
||||||
|
.eq(WmsSrmOrder::getIsCompleted, false).one();
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("此收货单[" + orderNo + "] 单号无效");
|
VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("此收货单[" + orderNo + "] 单号无效");
|
||||||
|
|
||||||
PDAOrderVO pdaOrderVO = new PDAOrderVO();
|
PDAOrderVO pdaOrderVO = new PDAOrderVO();
|
||||||
|
|
@ -140,7 +141,8 @@ public class NormalPGIControllerService {
|
||||||
itemVO.setIsQuality(item.getIsQuality());
|
itemVO.setIsQuality(item.getIsQuality());
|
||||||
itemVO.setOrderQty(item.getOrderQty());
|
itemVO.setOrderQty(item.getOrderQty());
|
||||||
itemVO.setUomCode(item.getUomCode());
|
itemVO.setUomCode(item.getUomCode());
|
||||||
itemVO.setDeliveryQty(item.getDeliveryQty().multiply(item.getReceiptQty()));
|
itemVO.setLineNumber(item.getLineNumber());
|
||||||
|
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());
|
||||||
if (Objects.nonNull(syncParamsDTO)) {
|
if (Objects.nonNull(syncParamsDTO)) {
|
||||||
|
|
@ -213,7 +215,7 @@ public class NormalPGIControllerService {
|
||||||
|
|
||||||
//生成普通物料的入库待检单,并修改送货单相应的收货数量
|
//生成普通物料的入库待检单,并修改送货单相应的收货数量
|
||||||
if (CollectionUtil.isNotEmpty(wmsPoReceiptItems)) {
|
if (CollectionUtil.isNotEmpty(wmsPoReceiptItems)) {
|
||||||
wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(1));
|
wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(2));
|
||||||
wmsPoReceiptService.save(wmsPoReceipt);
|
wmsPoReceiptService.save(wmsPoReceipt);
|
||||||
wmsPoReceiptItemService.saveBatch(wmsPoReceiptItems);
|
wmsPoReceiptItemService.saveBatch(wmsPoReceiptItems);
|
||||||
|
|
||||||
|
|
@ -223,7 +225,7 @@ public class NormalPGIControllerService {
|
||||||
}
|
}
|
||||||
//生成质检物料的入库待检单,并修改送货单相应的收货数量
|
//生成质检物料的入库待检单,并修改送货单相应的收货数量
|
||||||
if (CollectionUtil.isNotEmpty(wmsQcReceiveItems)) {
|
if (CollectionUtil.isNotEmpty(wmsQcReceiveItems)) {
|
||||||
wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(2));
|
wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(1));
|
||||||
wmsQcReceiveService.save(wmsQcReceive);
|
wmsQcReceiveService.save(wmsQcReceive);
|
||||||
wmsQcReceiveItemService.saveBatch(wmsQcReceiveItems);
|
wmsQcReceiveItemService.saveBatch(wmsQcReceiveItems);
|
||||||
for (WmsQcReceiveItem wmsQcReceiveItem : wmsQcReceiveItems) {
|
for (WmsQcReceiveItem wmsQcReceiveItem : wmsQcReceiveItems) {
|
||||||
|
|
@ -241,7 +243,7 @@ public class NormalPGIControllerService {
|
||||||
if (CollectionUtil.isNotEmpty(srmMaterialReceiptScanCodes)) {
|
if (CollectionUtil.isNotEmpty(srmMaterialReceiptScanCodes)) {
|
||||||
srmMaterialReceiptCanCodesRepository.insert(srmMaterialReceiptScanCodes);
|
srmMaterialReceiptCanCodesRepository.insert(srmMaterialReceiptScanCodes);
|
||||||
}
|
}
|
||||||
|
/** 调试暂时关闭
|
||||||
if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) {
|
if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) {
|
||||||
for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) {
|
for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) {
|
||||||
//导入SAP
|
//导入SAP
|
||||||
|
|
@ -262,6 +264,7 @@ public class NormalPGIControllerService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -21,6 +22,25 @@ public class SAPCommonService {
|
||||||
private SapService sapService;
|
private SapService sapService;
|
||||||
|
|
||||||
public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) {
|
public SAPSyncParamsDTO getMaterialInfoInOrder(String orderNo, String supplierNo, String materialNo) {
|
||||||
|
|
||||||
|
SAPSyncParamsDTO dto = new SAPSyncParamsDTO();
|
||||||
|
dto.setMaktx("物料描述");
|
||||||
|
dto.setEbelp("1");
|
||||||
|
dto.setMatnr(materialNo);
|
||||||
|
dto.setMenge(new BigDecimal(100));
|
||||||
|
dto.setWemng(new BigDecimal(10));
|
||||||
|
dto.setMeins("PC");
|
||||||
|
dto.setEbeln(orderNo);
|
||||||
|
dto.setTransportNum(new BigDecimal(80));
|
||||||
|
dto.setMatkl("物料组");
|
||||||
|
dto.setWgbez("物料描述");
|
||||||
|
dto.setWerks("1010");
|
||||||
|
dto.setLbprt("1");
|
||||||
|
dto.setKzkri("");
|
||||||
|
dto.setWarehouseNo("122222");
|
||||||
|
dto.setBinNos("2121");
|
||||||
|
return dto;
|
||||||
|
/**
|
||||||
//获取订单信息
|
//获取订单信息
|
||||||
SAPMaterialInfoInOrderDTO materialInfoInOrder = CollectionUtil.get(sapService.zim004(orderNo, supplierNo, materialNo), 0);
|
SAPMaterialInfoInOrderDTO materialInfoInOrder = CollectionUtil.get(sapService.zim004(orderNo, supplierNo, materialNo), 0);
|
||||||
VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo);
|
VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo);
|
||||||
|
|
@ -53,6 +73,7 @@ public class SAPCommonService {
|
||||||
syncParams.setBinNos(dbWarehouse.getBinNos());
|
syncParams.setBinNos(dbWarehouse.getBinNos());
|
||||||
}
|
}
|
||||||
return syncParams;
|
return syncParams;
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ public class SRMOrderReceiveItemQO {
|
||||||
/**
|
/**
|
||||||
* 送货单行状态
|
* 送货单行状态
|
||||||
*/
|
*/
|
||||||
private Integer noteLineStatus;
|
private String noteLineStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购订单类型
|
* 采购订单类型
|
||||||
|
|
|
||||||
|
|
@ -25,4 +25,5 @@ public class SRMOrderSearchQO extends SearchBaseQO {
|
||||||
* 物料编号
|
* 物料编号
|
||||||
*/
|
*/
|
||||||
private String itemCode;
|
private String itemCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@ import cn.hutool.core.date.DateTime;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class QCReceiptVO {
|
public class QCReceiptVO {
|
||||||
|
|
@ -63,7 +65,7 @@ public class QCReceiptVO {
|
||||||
/**
|
/**
|
||||||
* 收货时间
|
* 收货时间
|
||||||
*/
|
*/
|
||||||
private DateTime receiveTime;
|
private LocalDateTime receiveTime;
|
||||||
/**
|
/**
|
||||||
* 收货人
|
* 收货人
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,15 @@ package com.nflg.wms.common.pojo.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class SrmOrderVO {
|
public class SrmOrderVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 送货单ID
|
||||||
|
*/
|
||||||
|
private long Id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 送货单号
|
* 送货单号
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class WmsSrmOrderItem implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 送货单行状态
|
* 送货单行状态
|
||||||
*/
|
*/
|
||||||
private Short noteLineStatus;
|
private String noteLineStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 采购订单类型
|
* 采购订单类型
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderMapper">
|
<mapper namespace="com.nflg.wms.repository.mapper.WmsSrmOrderMapper">
|
||||||
<select id="search" resultType="com.nflg.wms.common.pojo.vo.SrmOrderVO">
|
<select id="search" resultType="com.nflg.wms.common.pojo.vo.SrmOrderVO">
|
||||||
select a.iu_code,a.note_num,a.purchase_group,a.waybill_num,a.supplier_num,a.create_time, a.delivery_note_date
|
select a.id, a.iu_code,a.note_num,a.purchase_group,a.waybill_num,a.supplier_num,a.create_time, a.delivery_note_date
|
||||||
,a.ou_code, a.is_completed,
|
,a.ou_code, a.is_completed,
|
||||||
b.supplier_name from wms_srm_order a left join user_supplier b on a.supplier_num=b.supplier_code
|
b.supplier_name from wms_srm_order a left join user_supplier b on a.supplier_num=b.supplier_code
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.nflg.wms.common.pojo.qo.SRMOrderReceiveItemQO;
|
||||||
import com.nflg.wms.common.pojo.qo.SRMOrderReceiveQO;
|
import com.nflg.wms.common.pojo.qo.SRMOrderReceiveQO;
|
||||||
import com.nflg.wms.common.pojo.qo.SRMQualityInspectionResult;
|
import com.nflg.wms.common.pojo.qo.SRMQualityInspectionResult;
|
||||||
import com.nflg.wms.repository.entity.*;
|
import com.nflg.wms.repository.entity.*;
|
||||||
|
|
@ -58,10 +59,7 @@ public class SRMController extends BaseController {
|
||||||
public Object receiveOrder(@RequestBody SRMOrderReceiveQO request) {
|
public Object receiveOrder(@RequestBody SRMOrderReceiveQO request) {
|
||||||
try {
|
try {
|
||||||
WmsSrmOrder order = srmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.getNoteNum()).one();
|
WmsSrmOrder order = srmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.getNoteNum()).one();
|
||||||
if (Objects.nonNull(order)) {
|
if (Objects.isNull(order)) {
|
||||||
// srmOrderService.removeById(order);
|
|
||||||
// srmOrderItemService.remove(new LambdaQueryWrapper<WmsSrmOrderItem>().eq(WmsSrmOrderItem::getOrderId, order.getId()));
|
|
||||||
} else {
|
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||||
LocalDateTime deliveryDate = LocalDateTime.parse(request.getDeliveryNoteDate(), formatter);
|
LocalDateTime deliveryDate = LocalDateTime.parse(request.getDeliveryNoteDate(), formatter);
|
||||||
order = new WmsSrmOrder()
|
order = new WmsSrmOrder()
|
||||||
|
|
@ -74,16 +72,41 @@ public class SRMController extends BaseController {
|
||||||
.setPurchaseGroup(request.getPurchaseGroup())
|
.setPurchaseGroup(request.getPurchaseGroup())
|
||||||
.setOuCode(request.getOuCode())
|
.setOuCode(request.getOuCode())
|
||||||
.setDeliveryNoteDate(deliveryDate)
|
.setDeliveryNoteDate(deliveryDate)
|
||||||
|
.setIsCompleted(false)
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now());
|
||||||
srmOrderService.save(order);
|
srmOrderService.save(order);
|
||||||
}
|
}
|
||||||
WmsSrmOrder finalOrder = order;
|
//判断是否存在子集
|
||||||
srmOrderItemService.saveBatch(request.getResultSet().stream().map(it -> {
|
if (CollectionUtil.isNotEmpty(request.getResultSet())) {
|
||||||
WmsSrmOrderItem item = Convert.convert(WmsSrmOrderItem.class, it);
|
List<WmsSrmOrderItem> items = new ArrayList<>();
|
||||||
item.setOrderId(finalOrder.getId());
|
for (SRMOrderReceiveItemQO it : request.getResultSet()) {
|
||||||
item.setReceiptQty(new BigDecimal(0));
|
WmsSrmOrderItem item = srmOrderItemService.lambdaQuery().eq(WmsSrmOrderItem::getLineNumber, it.getLineNumber())
|
||||||
return item;
|
.eq(WmsSrmOrderItem::getNoteNum, request.getNoteNum())
|
||||||
}).toList());
|
.one();
|
||||||
|
if (Objects.isNull(item) || item.getNoteNum().equals(null) || item.getNoteNum().equals("")) {
|
||||||
|
WmsSrmOrderItem updateItem = new WmsSrmOrderItem()
|
||||||
|
.setId(IdUtil.getSnowflakeNextId())
|
||||||
|
.setOrderId(order.getId())
|
||||||
|
.setLineNumber(it.getLineNumber())
|
||||||
|
.setPoNum(it.getPoNum())
|
||||||
|
.setPoLineNumber(it.getPoLineNumber())
|
||||||
|
.setItemCode(it.getItemCode())
|
||||||
|
.setItemName(it.getItemName())
|
||||||
|
.setOrderQty(it.getOrderQty())
|
||||||
|
.setUomCode(it.getUomCode())
|
||||||
|
.setDemandDate(it.getDemandDate())
|
||||||
|
.setNoteLineStatus(it.getNoteLineStatus())
|
||||||
|
.setOrderType(it.getOrderType())
|
||||||
|
.setDeliveryQty(it.getDeliveryQty())
|
||||||
|
.setIsQuality(it.getIsQuality())
|
||||||
|
.setNoteNum(request.getNoteNum())
|
||||||
|
.setReceiptQty(new BigDecimal(0));
|
||||||
|
items.add(updateItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(items))
|
||||||
|
srmOrderItemService.saveBatch(items);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("SRM送货单保存失败", ex);
|
log.error("SRM送货单保存失败", ex);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue