Merge remote-tracking branch 'refs/remotes/惠信/dev_zhangke' into develop

This commit is contained in:
曹鹏飞 2025-08-29 09:34:53 +08:00
commit f41ecedea5
21 changed files with 409 additions and 320 deletions

View File

@ -1,6 +1,8 @@
package com.nflg.wms.admin.controller; package com.nflg.wms.admin.controller;
/* * 普通物料收货单*/ /**
* 普通物料收货单
*/
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
@ -40,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 {
@ -71,12 +77,23 @@ public class NormalPGIController extends BaseController {
private IWmsPoReceiptItemService wmsPoReceiptItemService; private IWmsPoReceiptItemService wmsPoReceiptItemService;
//收货单分页 //收货单分页
/**
* 送货单列表
* @param request
* @return
*/
@PostMapping("search") @PostMapping("search")
@ApiMark(moduleName = "送货单管理", apiName = "送货单列表") @ApiMark(moduleName = "送货单管理", apiName = "送货单列表")
public ApiResult<PageData<SrmOrderVO>> search(@Valid @RequestBody SRMOrderSearchQO request) { public ApiResult<PageData<SrmOrderVO>> search(@Valid @RequestBody SRMOrderSearchQO request) {
return ApiResult.success(wmsSrmOrderService.search(request)); return ApiResult.success(wmsSrmOrderService.search(request));
} }
/**
* 送货单详情
* @param orderId 订单ID
* @return
*/
//收货单详情 //收货单详情
@GetMapping("getOrderItem") @GetMapping("getOrderItem")
@ApiMark(moduleName = "送货单管理", apiName = "获取送货单详情") @ApiMark(moduleName = "送货单管理", apiName = "获取送货单详情")
@ -88,16 +105,11 @@ public class NormalPGIController extends BaseController {
return ApiResult.success(srmOrderItemVOS); return ApiResult.success(srmOrderItemVOS);
} }
/**
//PDA 扫码获取收货信息 * 获取扫码的详情信息
@GetMapping("getOrderItemByOrderNo") * @param orderItemId 订单项ID
@ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情") * @return
public ApiResult<PDAOrderVO> getOrderItemByOrderNo(@RequestParam String orderNo) { */
PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo);
return ApiResult.success(pdaOrderVO);
}
// 查看扫码记录 // 查看扫码记录
@GetMapping("getScanCodes") @GetMapping("getScanCodes")
@ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息") @ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息")
@ -107,6 +119,247 @@ public class NormalPGIController extends BaseController {
return ApiResult.success(pdas); return ApiResult.success(pdas);
} }
/**
* 扫描送货单号获取送货单详情PDA
* @param orderNo 送货单号
* @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
* @param orederNo 送货单号或是任务单号
* @return
*/
@GetMapping("PDA/task")
@ApiMark(moduleName = "送货单管理", apiName = "普通物料上架任务")
public ApiResult<List<PoReceiveTaskVO>> takeDelivery(@Valid @RequestParam 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
* * @param id 任务ID
* */
@GetMapping("PDA/task/item")
@ApiMark(moduleName = "送货单管理", apiName = "普通上架物料详情")
public ApiResult<List<PoReceiveTaskItemVO>> takeDeliveryItem(@Valid @RequestParam 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()))
@ -273,7 +526,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();
@ -310,216 +563,6 @@ public class NormalPGIController extends BaseController {
qcDto.getReceiptIds().add(qmsReceiptItem.getId()); qcDto.getReceiptIds().add(qmsReceiptItem.getId());
} }
//收货确认
@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();
}
@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();
}
/**** /****
//一键收货 //一键收货

View File

@ -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);
@ -88,8 +88,9 @@ public class NormalQMController extends BaseController {
/** /**
* 质检物料上架物料详情 * 质检物料上架物料详情
* @param taskId 任务ID
* **/ * **/
@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);
@ -98,8 +99,9 @@ public class NormalQMController extends BaseController {
/** /**
* 质检物料上架任务确认 * 质检物料上架任务确认
* @param request
* **/ * **/
@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))

View File

@ -40,6 +40,7 @@ public class POReceiptController {
/** /**
* 采购单入库列表 * 采购单入库列表
* @param request
*/ */
@PostMapping("search") @PostMapping("search")
@ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表") @ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表")
@ -49,6 +50,7 @@ public class POReceiptController {
/** /**
* 采购单入库明细 * 采购单入库明细
* @param inId 入库单ID
*/ */
@GetMapping("getItems") @GetMapping("getItems")
@ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表") @ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表")
@ -59,6 +61,7 @@ public class POReceiptController {
/** /**
* 获取扫码的详情信息 * 获取扫码的详情信息
* @param orderItemId 收货单项ID
*/ */
@GetMapping("getScanCodes") @GetMapping("getScanCodes")
@ApiMark(moduleName = "采购单入库管理", apiName = "获取扫码的详情信息") @ApiMark(moduleName = "采购单入库管理", apiName = "获取扫码的详情信息")

View File

@ -20,6 +20,11 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
/**
* 质检物料入库单
* @param request
* @return
*/
@RestController @RestController
@RequestMapping("qc") @RequestMapping("qc")
public class QCReceiptController { public class QCReceiptController {
@ -33,12 +38,23 @@ public class QCReceiptController {
@Resource @Resource
private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository; private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository;
/**
* 质检物料入库单列表
* @param request
* @return
*/
@PostMapping("search") @PostMapping("search")
@ApiMark(moduleName = "质检物料入库单", apiName = "入库列表") @ApiMark(moduleName = "质检物料入库单", apiName = "入库列表")
public ApiResult<PageData<QCReceiptVO>> search(@Valid @RequestBody QCReceiptQO request) { public ApiResult<PageData<QCReceiptVO>> search(@Valid @RequestBody QCReceiptQO request) {
return ApiResult.success(qcReceiveService.search(request)); return ApiResult.success(qcReceiveService.search(request));
} }
/**
* 质检物料入库单详情
* @param inId 入库单ID
* @return
*/
@GetMapping("getItems") @GetMapping("getItems")
@ApiMark(moduleName = "质检物料入库单", apiName = "入库详情") @ApiMark(moduleName = "质检物料入库单", apiName = "入库详情")
public ApiResult<List<QCReceiveTaskItemVO>> search(@RequestParam Long inId) { public ApiResult<List<QCReceiveTaskItemVO>> search(@RequestParam Long inId) {
@ -46,6 +62,11 @@ public class QCReceiptController {
.lambdaQuery().eq(WmsQcReceiveItem::getReceiveId, inId).list())); .lambdaQuery().eq(WmsQcReceiveItem::getReceiveId, inId).list()));
} }
/**
* 质检物料入库单扫码详情
* @param orderItemId 收货单详情ID
* @return
*/
@GetMapping("getScanCodes") @GetMapping("getScanCodes")
@ApiMark(moduleName = "质检物料入库单", apiName = "获取扫码的详情信息") @ApiMark(moduleName = "质检物料入库单", apiName = "获取扫码的详情信息")
public ApiResult<List<PDAScanCodeVO>> getScanCodes(@RequestParam String orderItemId) { public ApiResult<List<PDAScanCodeVO>> getScanCodes(@RequestParam String orderItemId) {

View File

@ -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

View File

@ -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);
@ -43,7 +63,7 @@ public class SAPCommonService {
//获取仓库信息 //获取仓库信息
List<String> warehouseNos = new ArrayList<>(); List<String> warehouseNos = new ArrayList<>();
warehouseNos.add(materialInfoInOrder.getWarehouseNo()); warehouseNos.add(materialInfoInOrder.getWarehouseNo());
List<String> materialNos=new ArrayList<>(); List<String> materialNos = new ArrayList<>();
materialNos.add(materialInfoInOrder.getMatnr()); materialNos.add(materialInfoInOrder.getMatnr());
List<SAPSyncFromDTO> list = sapService.zwm3A01(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null); List<SAPSyncFromDTO> list = sapService.zwm3A01(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null);
if (!CollectionUtil.isEmpty(list)) { if (!CollectionUtil.isEmpty(list)) {
@ -53,6 +73,7 @@ public class SAPCommonService {
syncParams.setBinNos(dbWarehouse.getBinNos()); syncParams.setBinNos(dbWarehouse.getBinNos());
} }
return syncParams; return syncParams;
*/
} }
} }

View File

@ -2,7 +2,7 @@ server:
port: 8101 port: 8101
spring: spring:
application: application:
name: auth name: auth-local
profiles: profiles:
active: sit active: sit
config: config:

View File

@ -4,9 +4,11 @@ import cn.hutool.core.date.DateTime;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.time.LocalDate;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class QCReceiptQO extends PageQO { public class QCReceiptQO extends SearchBaseQO {
/** /**
* 送货单号 * 送货单号
@ -26,22 +28,30 @@ public class QCReceiptQO extends PageQO {
/** /**
* 送货开始时间 * 送货开始时间
*/ */
private DateTime deliveryStartDate; private LocalDate deliveryStartDate;
/** /**
* 送货结束时间 * 送货结束时间
*/ */
private DateTime deliveryEndDate; private LocalDate deliveryEndDate;
public LocalDate getDeliveryEndDate() {
return deliveryEndDate == null ? null : deliveryEndDate.plusDays(1);
}
/** /**
* 收货开始时间 * 收货开始时间
*/ */
private DateTime receiveStartDate; private LocalDate receiveStartDate;
/** /**
* 收货结束时间 * 收货结束时间
*/ */
private DateTime receiveEndDate; private LocalDate receiveEndDate;
public LocalDate getReceiveEndDate() {
return receiveEndDate == null ? null : receiveEndDate.plusDays(1);
}
/** /**
* 入库单号 * 入库单号

View File

@ -55,7 +55,7 @@ public class SRMOrderReceiveItemQO {
/** /**
* 送货单行状态 * 送货单行状态
*/ */
private Integer noteLineStatus; private String noteLineStatus;
/** /**
* 采购订单类型 * 采购订单类型

View File

@ -25,4 +25,5 @@ public class SRMOrderSearchQO extends SearchBaseQO {
* 物料编号 * 物料编号
*/ */
private String itemCode; private String itemCode;
} }

View File

@ -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;
/** /**
* 收货人 * 收货人
*/ */

View File

@ -121,15 +121,4 @@ public class QCReceiveTaskItemVO {
*/ */
private String materialDocYear; private String materialDocYear;
/**
* 入库时间
*/
private LocalDateTime updateTime;
/**
* 入库人姓名
*/
private String updateUserName;
} }

View File

@ -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;
/** /**
* 送货单号 * 送货单号

View File

@ -141,19 +141,4 @@ public class WmsQcReceiveItem implements Serializable {
* 物料年度凭证 * 物料年度凭证
*/ */
private String materialDocYear; private String materialDocYear;
/**
* 入库时间
*/
private LocalDateTime updateTime;
/**
* 入库人ID
*/
private Long updateUserId;
/**
* 入库人姓名
*/
private String updateUserName;
} }

View File

@ -84,7 +84,7 @@ public class WmsSrmOrderItem implements Serializable {
/** /**
* 送货单行状态 * 送货单行状态
*/ */
private Short noteLineStatus; private String noteLineStatus;
/** /**
* 采购订单类型 * 采购订单类型

View File

@ -2,6 +2,7 @@ package com.nflg.wms.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.qo.QCReceiptQO; import com.nflg.wms.common.pojo.qo.QCReceiptQO;
import com.nflg.wms.common.pojo.vo.QCReceiptVO; import com.nflg.wms.common.pojo.vo.QCReceiptVO;
import com.nflg.wms.common.pojo.vo.QCTaskVO; import com.nflg.wms.common.pojo.vo.QCTaskVO;
@ -21,5 +22,5 @@ public interface WmsQcReceiveMapper extends BaseMapper<WmsQcReceive> {
List<QCTaskVO> getTasks(String orderNo); List<QCTaskVO> getTasks(String orderNo);
IPage<QCReceiptVO> search(QCReceiptQO request); IPage<QCReceiptVO> search(QCReceiptQO request, Page<Object> objectPage);
} }

View File

@ -1,6 +1,7 @@
package com.nflg.wms.repository.service.impl; package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.QCReceiptQO; import com.nflg.wms.common.pojo.qo.QCReceiptQO;
import com.nflg.wms.common.pojo.vo.POReceiptVO; import com.nflg.wms.common.pojo.vo.POReceiptVO;
@ -32,7 +33,7 @@ public class WmsQcReceiveServiceImpl extends ServiceImpl<WmsQcReceiveMapper, Wms
@Override @Override
public IPage<QCReceiptVO> search(QCReceiptQO request) { public IPage<QCReceiptVO> search(QCReceiptQO request) {
return baseMapper.search(request); return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
} }
} }

View File

@ -19,46 +19,35 @@
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>
<if test="request.inNum !=null and request.inNum !='' "> <if test="request.inNum !=null and request.inNum !=''">
and a.in_num like concat('%', #{request.inNum}, '%') and a.in_num like concat('%', #{request.inNum}, '%')
</if> </if>
<if test="request.orderNo !=null and request.orderNo !=''">
<if test="request.orderNo !=null and request.orderNo !='' ">
and b.note_num like concat('%', #{request.orderNo}, '%') and b.note_num like concat('%', #{request.orderNo}, '%')
</if> </if>
<if test="request.supplierNum !=null and request.supplierNum !=''">
<if test="request.supplierNum !=null and request.supplierNum !='' "> and b.supplier_num = #{request.supplierNum}
and b.supplier_num =#{request.supplierNum}
</if> </if>
<if test="request.receiveStartDate !=null"> <if test="request.receiveStartDate !=null">
and a.create_time >= #{request.receiveStartDate} and a.create_time >= #{request.receiveStartDate}
</if> </if>
<if test="request.receiveEndDate !=null"> <if test="request.receiveEndDate !=null">
and a.create_time &lt;= #{request.receiveEndDate} and a.create_time &lt;= #{request.receiveEndDate}
</if> </if>
<if test="request.deliveryStartDate !=null"> <if test="request.deliveryStartDate !=null">
and b.delivery_note_date >= and b.delivery_note_date >=
#{request.deliveryStartDate, jdbcType=TIMESTAMP, javaType=java.time.LocalDate, typeHandler=org.apache.ibatis.type.LocalDateTypeHandler} #{request.deliveryStartDate}
</if> </if>
<if test="request.deliveryEndDate !=null"> <if test="request.deliveryEndDate !=null">
and b.delivery_note_date &lt;= and b.delivery_note_date &lt;=
#{request.deliveryEndDate, jdbcType=TIMESTAMP, javaType=java.time.LocalDate, typeHandler=org.apache.ibatis.type.LocalDateTypeHandler} #{request.deliveryEndDate}
</if> </if>
<if test="request.inStartDate !=null"> <if test="request.inStartDate !=null">
and a.update_time >= #{request.inStartDate} and a.update_time >= #{request.inStartDate}
</if> </if>
<if test="request.inEndDate !=null"> <if test="request.inEndDate !=null">
and a.update_time &lt;= #{request.inEndDate} and a.update_time &lt;= #{request.inEndDate}
</if> </if>
</where> </where>
order by a.create_time desc order by a.create_time desc
</select> </select>

View File

@ -41,38 +41,27 @@
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>
<if test="request.inNum !=null and request.inNum !='' "> <if test="request.inNum !=null and request.inNum !=''">
and a.in_num like concat('%', #{request.inNum}, '%') and a.in_no like concat('%', #{request.inNum}, '%')
</if> </if>
<if test="request.orderNo !=null and request.orderNo !=''">
<if test="request.orderNo !=null and request.orderNo !='' ">
and b.note_num like concat('%', #{request.orderNo}, '%') and b.note_num like concat('%', #{request.orderNo}, '%')
</if> </if>
<if test="request.supplierNum !=null and request.supplierNum !=''">
<if test="request.supplierNum !=null and request.supplierNum !='' ">
and b.supplier_num =#{request.supplierNum} and b.supplier_num =#{request.supplierNum}
</if> </if>
<if test="request.itemCode !=null and request.itemCode !='' "> <if test="request.receiveStartDate !=null">
and EXISTS (select 1 from wms_srm_order_item where a.id=wms_srm_order_item.order_id and
wms_srm_order_item.item_code like concat('%', #{request.itemCode}, '%')
</if>
<if test="request.receiveStartDate !=null and request.receiveStartDate !='' ">
and a.create_time >= #{request.receiveStartDate} and a.create_time >= #{request.receiveStartDate}
</if> </if>
<if test="request.receiveEndDate !=null">
<if test="request.receiveEndDate !=null and request.receiveEndDate !='' ">
and a.create_time &lt; #{request.receiveEndDate} and a.create_time &lt; #{request.receiveEndDate}
</if> </if>
<if test="request.deliveryStartDate !=null">
<if test="request.deliveryStartDate !=null and request.deliveryStartDate !='' "> and b.delivery_note_date >= #{request.deliveryStartDate}
and a.delivery_note_date >= #{request.deliveryStartDate}
</if> </if>
<if test="request.deliveryEndDate !=null">
<if test="request.deliveryEndDate !=null and request.deliveryEndDate !='' "> and b.delivery_note_date &lt; #{request.deliveryEndDate}
and a.delivery_note_date &lt; #{request.deliveryEndDate}
</if> </if>
</where> </where>
order by a.create_time desc order by a.create_time desc
</select> </select>

View File

@ -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

View File

@ -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);