diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index 28a20749..127ba256 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -1,6 +1,8 @@ package com.nflg.wms.admin.controller; -/* * 普通物料收货单*/ +/** + * 普通物料收货单 + */ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; @@ -40,6 +42,10 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +/** + * 普通物料收货单 + */ + @RestController @RequestMapping("/pgi/normal") public class NormalPGIController extends BaseController { @@ -71,12 +77,23 @@ public class NormalPGIController extends BaseController { private IWmsPoReceiptItemService wmsPoReceiptItemService; //收货单分页 + + /** + * 送货单列表 + * @param request + * @return + */ @PostMapping("search") @ApiMark(moduleName = "送货单管理", apiName = "送货单列表") public ApiResult> search(@Valid @RequestBody SRMOrderSearchQO request) { return ApiResult.success(wmsSrmOrderService.search(request)); } + /** + * 送货单详情 + * @param orderId 订单ID + * @return + */ //收货单详情 @GetMapping("getOrderItem") @ApiMark(moduleName = "送货单管理", apiName = "获取送货单详情") @@ -88,16 +105,11 @@ public class NormalPGIController extends BaseController { return ApiResult.success(srmOrderItemVOS); } - - //PDA 扫码获取收货信息 - @GetMapping("getOrderItemByOrderNo") - @ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情") - public ApiResult getOrderItemByOrderNo(@RequestParam String orderNo) { - PDAOrderVO pdaOrderVO = normalPGIControllerService.getOrderItemByOrderNo(orderNo); - return ApiResult.success(pdaOrderVO); - } - - + /** + * 获取扫码的详情信息 + * @param orderItemId 订单项ID + * @return + */ // 查看扫码记录 @GetMapping("getScanCodes") @ApiMark(moduleName = "送货单管理", apiName = "获取扫码的详情信息") @@ -107,6 +119,247 @@ public class NormalPGIController extends BaseController { return ApiResult.success(pdas); } + /** + * 扫描送货单号获取送货单详情(PDA) + * @param orderNo 送货单号 + * @return + */ + //PDA 扫码获取收货信息 + @GetMapping("PDA/getOrderItemByOrderNo") + @ApiMark(moduleName = "送货单管理", apiName = "PDA扫描送货单号获取送货单详情") + public ApiResult 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 takeDelivery(@Valid @RequestBody List 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 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 wmsPoReceiptItems = new ArrayList<>(); + + List wmsQcReceiveItems = new ArrayList<>(); + + List srmMaterialReceiptScanCodes = new ArrayList<>(); + List 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 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> takeDelivery(@Valid @RequestParam String orederNo) { + List 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> takeDeliveryItem(@Valid @RequestParam Long taskId) { + List 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 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 uniqueIds = request.getItems().stream() + .map(PoReceiveTaskItemConfirmQO::getId) // 提取每个对象的 ID + .distinct() // 去重 + .collect(Collectors.toList()); + + List wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery() + .in(WmsPoReceiptItem::getId, uniqueIds) + .list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(wmsPoReceiptItems)).throwMessage("获取入库详情失败"); + List receiptItems = new ArrayList<>(); + List storageLocationDTOS = new ArrayList<>(); + List inventories = new ArrayList<>(); + List 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 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 item1 = zwm3A17DTO.getItem1(); + List item2 = zwm3A17DTO.getItem2(); + + List 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 getSapSyncParamsDTOS(List request, WmsSrmOrder order) { List> uniqueCombinations = request.stream() .map(item -> Triple.of(item.getPoNum(), order.getSupplierNum(), item.getItemCode())) @@ -273,7 +526,7 @@ public class NormalPGIController extends BaseController { content.setLineVOList(new ArrayList<>()); dto.setContent(content); dto.setCode("SCAN_RCV_RECEIVE_TO_SRM"); - qcDto.setPushDto(srmPushDto); + qcDto.setPushDto(dto); } srmPushDto = qcDto.getPushDto(); @@ -310,216 +563,6 @@ public class NormalPGIController extends BaseController { qcDto.getReceiptIds().add(qmsReceiptItem.getId()); } - - //收货确认 - @PostMapping("takeDelivery") - @ApiMark(moduleName = "送货单管理", apiName = "收货确认") - public ApiResult takeDelivery(@Valid @RequestBody List 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 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 wmsPoReceiptItems = new ArrayList<>(); - - List wmsQcReceiveItems = new ArrayList<>(); - - List srmMaterialReceiptScanCodes = new ArrayList<>(); - List 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 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> takeDelivery(@Valid @RequestBody String orederNo) { - List 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> takeDeliveryItem(@Valid @RequestBody Long taskId) { - List 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 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 uniqueIds = request.getItems().stream() - .map(PoReceiveTaskItemConfirmQO::getId) // 提取每个对象的 ID - .distinct() // 去重 - .collect(Collectors.toList()); - - List wmsPoReceiptItems = wmsPoReceiptItemService.lambdaQuery() - .in(WmsPoReceiptItem::getId, uniqueIds) - .list(); - VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(wmsPoReceiptItems)).throwMessage("获取入库详情失败"); - List receiptItems = new ArrayList<>(); - List storageLocationDTOS = new ArrayList<>(); - List inventories = new ArrayList<>(); - List 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 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 item1 = zwm3A17DTO.getItem1(); - List item2 = zwm3A17DTO.getItem2(); - - List 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(); - } - - /**** //一键收货 diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java index 0e4a0a46..692bccb8 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java @@ -75,11 +75,11 @@ public class NormalQMController extends BaseController { } /** - * 质检物料上架任务 - * @param orderNo + * 质检物料上架任务(PDA) + * @param orderNo 送货单号或任务单号 * @return */ - @GetMapping("task") + @GetMapping("/PDA/task") @ApiMark(moduleName = "质检物料管理", apiName = "质检物料上架任务") public ApiResult> getTasks(@RequestParam String orderNo) { List 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 = "质检任务上架物料详情") public ApiResult> getTaskItem(@Valid @NotNull @RequestParam Long taskId) { List 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 = "质检任务上架确认") public ApiResult confirm(@Valid @RequestBody List request) { if (CollectionUtil.isEmpty(request)) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/POReceiptController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/POReceiptController.java index b3bdc3cb..76e7bd81 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/POReceiptController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/POReceiptController.java @@ -40,6 +40,7 @@ public class POReceiptController { /** * 采购单入库列表 + * @param request */ @PostMapping("search") @ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表") @@ -49,6 +50,7 @@ public class POReceiptController { /** * 采购单入库明细 + * @param inId 入库单ID */ @GetMapping("getItems") @ApiMark(moduleName = "采购单入库管理", apiName = "采购单入库列表") @@ -59,6 +61,7 @@ public class POReceiptController { /** * 获取扫码的详情信息 + * @param orderItemId 收货单项ID */ @GetMapping("getScanCodes") @ApiMark(moduleName = "采购单入库管理", apiName = "获取扫码的详情信息") diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/QCReceiptController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/QCReceiptController.java index 79206b78..c2ab8c42 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/QCReceiptController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/QCReceiptController.java @@ -20,6 +20,11 @@ import org.springframework.web.bind.annotation.*; import java.util.List; +/** + * 质检物料入库单 + * @param request + * @return + */ @RestController @RequestMapping("qc") public class QCReceiptController { @@ -33,12 +38,23 @@ public class QCReceiptController { @Resource private SrmMaterialReceiptScanCodesRepository srmMaterialReceiptCanCodesRepository; + + /** + * 质检物料入库单列表 + * @param request + * @return + */ @PostMapping("search") @ApiMark(moduleName = "质检物料入库单", apiName = "入库列表") public ApiResult> search(@Valid @RequestBody QCReceiptQO request) { return ApiResult.success(qcReceiveService.search(request)); } + /** + * 质检物料入库单详情 + * @param inId 入库单ID + * @return + */ @GetMapping("getItems") @ApiMark(moduleName = "质检物料入库单", apiName = "入库详情") public ApiResult> search(@RequestParam Long inId) { @@ -46,6 +62,11 @@ public class QCReceiptController { .lambdaQuery().eq(WmsQcReceiveItem::getReceiveId, inId).list())); } + /** + * 质检物料入库单扫码详情 + * @param orderItemId 收货单详情ID + * @return + */ @GetMapping("getScanCodes") @ApiMark(moduleName = "质检物料入库单", apiName = "获取扫码的详情信息") public ApiResult> getScanCodes(@RequestParam String orderItemId) { diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java index 74e0281b..f7f4ea41 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java @@ -113,7 +113,8 @@ public class NormalPGIControllerService { */ 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 + "] 单号无效"); PDAOrderVO pdaOrderVO = new PDAOrderVO(); @@ -140,7 +141,8 @@ public class NormalPGIControllerService { itemVO.setIsQuality(item.getIsQuality()); itemVO.setOrderQty(item.getOrderQty()); itemVO.setUomCode(item.getUomCode()); - itemVO.setDeliveryQty(item.getDeliveryQty().multiply(item.getReceiptQty())); + itemVO.setLineNumber(item.getLineNumber()); + itemVO.setDeliveryQty(item.getDeliveryQty().subtract(item.getReceiptQty())); // 从 SAP 系统获取物料相关信息 SAPSyncParamsDTO syncParamsDTO = sapCommonService.getMaterialInfoInOrder(item.getPoNum(), order.getSupplierNum(), item.getItemCode()); if (Objects.nonNull(syncParamsDTO)) { @@ -213,7 +215,7 @@ public class NormalPGIControllerService { //生成普通物料的入库待检单,并修改送货单相应的收货数量 if (CollectionUtil.isNotEmpty(wmsPoReceiptItems)) { - wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(1)); + wmsPoReceipt.setInNum(basdeSerialNumberControllerService.generateSerialNumber(2)); wmsPoReceiptService.save(wmsPoReceipt); wmsPoReceiptItemService.saveBatch(wmsPoReceiptItems); @@ -223,7 +225,7 @@ public class NormalPGIControllerService { } //生成质检物料的入库待检单,并修改送货单相应的收货数量 if (CollectionUtil.isNotEmpty(wmsQcReceiveItems)) { - wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(2)); + wmsQcReceive.setInNo(basdeSerialNumberControllerService.generateSerialNumber(1)); wmsQcReceiveService.save(wmsQcReceive); wmsQcReceiveItemService.saveBatch(wmsQcReceiveItems); for (WmsQcReceiveItem wmsQcReceiveItem : wmsQcReceiveItems) { @@ -241,7 +243,7 @@ public class NormalPGIControllerService { if (CollectionUtil.isNotEmpty(srmMaterialReceiptScanCodes)) { srmMaterialReceiptCanCodesRepository.insert(srmMaterialReceiptScanCodes); } - +/** 调试暂时关闭 if (CollectionUtil.isNotEmpty(qcMaterialSyncDTOS)) { for (QCMaterialSyncDTO dto : qcMaterialSyncDTOS) { //导入SAP @@ -262,6 +264,7 @@ public class NormalPGIControllerService { } } } + */ } @Transactional diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java index 6fdf2e5d..99332a0d 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java @@ -9,6 +9,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -21,6 +22,25 @@ public class SAPCommonService { private SapService sapService; 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); VUtil.trueThrowBusinessError(Objects.isNull(materialInfoInOrder)).throwMessage("无法获取到有效订单信息" + orderNo); @@ -43,7 +63,7 @@ public class SAPCommonService { //获取仓库信息 List warehouseNos = new ArrayList<>(); warehouseNos.add(materialInfoInOrder.getWarehouseNo()); - List materialNos=new ArrayList<>(); + List materialNos = new ArrayList<>(); materialNos.add(materialInfoInOrder.getMatnr()); List list = sapService.zwm3A01(materialInfoInOrder.getWerks(), warehouseNos, materialNos, null, null); if (!CollectionUtil.isEmpty(list)) { @@ -53,6 +73,7 @@ public class SAPCommonService { syncParams.setBinNos(dbWarehouse.getBinNos()); } return syncParams; + */ } } diff --git a/nflg-wms-auth/src/main/resources/application.yml b/nflg-wms-auth/src/main/resources/application.yml index 4053b23c..058150cd 100644 --- a/nflg-wms-auth/src/main/resources/application.yml +++ b/nflg-wms-auth/src/main/resources/application.yml @@ -2,7 +2,7 @@ server: port: 8101 spring: application: - name: auth + name: auth-local profiles: active: sit config: diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QCReceiptQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QCReceiptQO.java index 390405ca..45852919 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QCReceiptQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QCReceiptQO.java @@ -4,9 +4,11 @@ import cn.hutool.core.date.DateTime; import lombok.Data; import lombok.experimental.Accessors; +import java.time.LocalDate; + @Data @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); + } /** * 入库单号 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderReceiveItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderReceiveItemQO.java index deba0c06..a43178fb 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderReceiveItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderReceiveItemQO.java @@ -55,7 +55,7 @@ public class SRMOrderReceiveItemQO { /** * 送货单行状态 */ - private Integer noteLineStatus; + private String noteLineStatus; /** * 采购订单类型 diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java index eb41fc28..57c8fbe0 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/SRMOrderSearchQO.java @@ -25,4 +25,5 @@ public class SRMOrderSearchQO extends SearchBaseQO { * 物料编号 */ private String itemCode; + } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiptVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiptVO.java index 9e3a6585..5a53c850 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiptVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiptVO.java @@ -4,6 +4,8 @@ import cn.hutool.core.date.DateTime; import lombok.Data; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + @Data @Accessors(chain = true) public class QCReceiptVO { @@ -63,7 +65,7 @@ public class QCReceiptVO { /** * 收货时间 */ - private DateTime receiveTime; + private LocalDateTime receiveTime; /** * 收货人 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiveTaskItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiveTaskItemVO.java index b8f5d729..5f6f75ca 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiveTaskItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QCReceiveTaskItemVO.java @@ -121,15 +121,4 @@ public class QCReceiveTaskItemVO { */ private String materialDocYear; - /** - * 入库时间 - */ - private LocalDateTime updateTime; - - - /** - * 入库人姓名 - */ - private String updateUserName; - } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java index 87eebe84..ad2bf977 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/SrmOrderVO.java @@ -2,9 +2,15 @@ package com.nflg.wms.common.pojo.vo; import lombok.Data; +import java.time.LocalDateTime; + @Data public class SrmOrderVO { + /** + * 送货单ID + */ + private long Id; /** * 送货单号 diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceiveItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceiveItem.java index 87912b90..004ae4fe 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceiveItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsQcReceiveItem.java @@ -141,19 +141,4 @@ public class WmsQcReceiveItem implements Serializable { * 物料年度凭证 */ private String materialDocYear; - - /** - * 入库时间 - */ - private LocalDateTime updateTime; - - /** - * 入库人ID - */ - private Long updateUserId; - - /** - * 入库人姓名 - */ - private String updateUserName; } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java index 6a8b1e17..0558d06b 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/WmsSrmOrderItem.java @@ -84,7 +84,7 @@ public class WmsSrmOrderItem implements Serializable { /** * 送货单行状态 */ - private Short noteLineStatus; + private String noteLineStatus; /** * 采购订单类型 diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveMapper.java index 36135812..802e4c6e 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveMapper.java @@ -2,6 +2,7 @@ package com.nflg.wms.repository.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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.vo.QCReceiptVO; import com.nflg.wms.common.pojo.vo.QCTaskVO; @@ -21,5 +22,5 @@ public interface WmsQcReceiveMapper extends BaseMapper { List getTasks(String orderNo); - IPage search(QCReceiptQO request); + IPage search(QCReceiptQO request, Page objectPage); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveServiceImpl.java index 8f016c45..0f55e25d 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveServiceImpl.java @@ -1,6 +1,7 @@ package com.nflg.wms.repository.service.impl; 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.qo.QCReceiptQO; import com.nflg.wms.common.pojo.vo.POReceiptVO; @@ -32,7 +33,7 @@ public class WmsQcReceiveServiceImpl extends ServiceImpl search(QCReceiptQO request) { - return baseMapper.search(request); + return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); } } diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsPoReceiptMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsPoReceiptMapper.xml index eaf8146d..88e67e4d 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsPoReceiptMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsPoReceiptMapper.xml @@ -19,46 +19,35 @@ wms_srm_order b on a.order_no=b.note_num left join user_supplier c on b.supplier_num=c.supplier_code - + and a.in_num like concat('%', #{request.inNum}, '%') - - + and b.note_num like concat('%', #{request.orderNo}, '%') - - - and b.supplier_num =#{request.supplierNum} + + and b.supplier_num = #{request.supplierNum} - - and a.create_time >= #{request.receiveStartDate} - and a.create_time <= #{request.receiveEndDate} - and b.delivery_note_date >= - #{request.deliveryStartDate, jdbcType=TIMESTAMP, javaType=java.time.LocalDate, typeHandler=org.apache.ibatis.type.LocalDateTypeHandler} + #{request.deliveryStartDate} - and b.delivery_note_date <= - #{request.deliveryEndDate, jdbcType=TIMESTAMP, javaType=java.time.LocalDate, typeHandler=org.apache.ibatis.type.LocalDateTypeHandler} + #{request.deliveryEndDate} - - and a.update_time >= #{request.inStartDate} - and a.update_time <= #{request.inEndDate} - order by a.create_time desc diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsQcReceiveMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsQcReceiveMapper.xml index 273d4065..fae7a09d 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsQcReceiveMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsQcReceiveMapper.xml @@ -41,38 +41,27 @@ wms_srm_order b on a.order_no = b.note_num left join user_supplier c on b.supplier_num = c.supplier_code - - and a.in_num like concat('%', #{request.inNum}, '%') + + and a.in_no like concat('%', #{request.inNum}, '%') - - + and b.note_num like concat('%', #{request.orderNo}, '%') - - + and b.supplier_num =#{request.supplierNum} - - 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}, '%') - - - + and a.create_time >= #{request.receiveStartDate} - - + and a.create_time < #{request.receiveEndDate} - - - and a.delivery_note_date >= #{request.deliveryStartDate} + + and b.delivery_note_date >= #{request.deliveryStartDate} - - - and a.delivery_note_date < #{request.deliveryEndDate} + + and b.delivery_note_date < #{request.deliveryEndDate} - order by a.create_time desc diff --git a/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml b/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml index 32bbd747..2c6fcd54 100644 --- a/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/WmsSrmOrderMapper.xml @@ -2,7 +2,7 @@