From 4fd5f22fc7ff5610c2d583c5c30b22e658b23d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sun, 14 Jun 2026 17:54:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor(qms):=20=E4=BC=98=E5=8C=96=E6=9D=A5?= =?UTF-8?q?=E6=96=99=E6=A3=80=E9=AA=8C=E4=BB=BB=E5=8A=A1=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除AQL查询中的空指针检查并简化逻辑 - 简化待办任务查询中的空值处理逻辑 - 统一代码格式和空格规范 - 移除库存检测申请中的检验数量和存储天数验证 - 优化库存到期检验定时任务的数据处理逻辑 - 在无码收货确认中过滤空数据项 - 修改质检控制器中的入库明细查询方式 - 更新库存检验申请的业务逻辑和参数设置 - 移除部分注释代码和未使用的变量 - 优化回调服务中的库存状态更新逻辑 --- ...comingInspectionTaskControllerService.java | 15 ++-- ...IncomingInspectionTaskCallbackService.java | 74 +++++++++---------- .../admin/controller/NormalPGIController.java | 1 + .../pojo/request/NoScanningItemRequest.java | 1 - ...toryExpirationInspectionScheduledTask.java | 4 +- .../nflg/wms/admin/service/QmsService.java | 23 +++--- .../pojo/qo/InventoryDetectionApplyQO.java | 26 +++---- .../srm/receive/controller/QmsController.java | 4 +- 8 files changed, 70 insertions(+), 78 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java index 5056af0f..7c8e4335 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/IncomingInspectionTaskControllerService.java @@ -536,7 +536,7 @@ public class IncomingInspectionTaskControllerService { return aqls.stream() .filter(aql -> Objects.equals(aql.getId(), id)) .findFirst() - .orElseThrow(() -> new NflgException(STATE.BusinessError,"未找到AQL")); + .orElseThrow(() -> new NflgException(STATE.BusinessError, "未找到AQL")); } private Pair calculatedAqlType(QmsIncomingInspectionTask task, QmsInspectionStandard standard @@ -740,10 +740,7 @@ public class IncomingInspectionTaskControllerService { .eq(QmsQualityInspector::getInspectionType, 1) .last("LIMIT 1") .one(); - if (Objects.isNull(inspector)){ - return Page.of(0,0,0); - } - return incomingInspectionTaskService.todoSearch(request, inspector.getId()); + return incomingInspectionTaskService.todoSearch(request, Objects.isNull(inspector) ? 0 : inspector.getId()); } /** @@ -758,7 +755,7 @@ public class IncomingInspectionTaskControllerService { .eq(QmsQualityInspector::getInspectionType, 1) .last("LIMIT 1") .one(); - if (Objects.isNull(inspector)){ + if (Objects.isNull(inspector)) { return new QmsIncomingInspectionTaskCountVO(); } return incomingInspectionTaskService.countByCurrentUser(inspector.getId()); @@ -786,7 +783,7 @@ public class IncomingInspectionTaskControllerService { // 校验是否存在已检任务 boolean hasFinished = tasks.stream() - .anyMatch(t -> Objects.equals(t.getInspectionStatus(),(short)2)); + .anyMatch(t -> Objects.equals(t.getInspectionStatus(), (short) 2)); VUtil.trueThrowBusinessError(hasFinished) .throwMessage("已检状态的任务不允许转办"); @@ -949,7 +946,7 @@ public class IncomingInspectionTaskControllerService { inspectionStandardItemService.lambdaQuery() .select(QmsInspectionStandardItem::getId, QmsInspectionStandardItem::getPdfDrawing) .eq(QmsInspectionStandardItem::getInspectionStandardId, standard.getId()) - .eq(QmsInspectionStandardItem::getItemType,1) + .eq(QmsInspectionStandardItem::getItemType, 1) .list() .stream() .map(it -> new PdfDrawingVO(it.getId(), it.getPdfDrawing())) @@ -995,7 +992,7 @@ public class IncomingInspectionTaskControllerService { QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId()); VUtil.trueThrowBusinessError(Objects.isNull(task)).throwMessage("任务不存在"); VUtil.trueThrowBusinessError(task.getInspectionStatus() == 2).throwMessage("该任务已完成"); - if(StrUtil.isNotBlank(request.getMaterialUniqueNo())){ + if (StrUtil.isNotBlank(request.getMaterialUniqueNo())) { VUtil.trueThrowBusinessError(!incomingInspectionTaskQrService.lambdaQuery() .eq(QmsIncomingInspectionTaskQr::getTaskId, request.getTaskId()) .eq(QmsIncomingInspectionTaskQr::getMaterialQrCode, request.getMaterialUniqueNo()) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java index 0908f434..fd79c3ee 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/WmsIncomingInspectionTaskCallbackService.java @@ -83,7 +83,7 @@ public class WmsIncomingInspectionTaskCallbackService { qo.setUnqualifiedQty(0); qo.setQrCodes(records.stream() .filter(QmsIncomingInspectionTaskRecord::getQualified) - .map(r-> new MaterialQrCodeDTO() + .map(r -> new MaterialQrCodeDTO() .setQrCode(r.getMaterialUniqueNo()) .setInspectionQty(r.getInspectionQty()) .setUnqualifiedQty(r.getUnqualifiedQty()) @@ -93,7 +93,7 @@ public class WmsIncomingInspectionTaskCallbackService { } else { qo.setUnqualifiedQty(taskVO.getUnqualifiedQty()); qo.setQrCodes(records.stream() - .map(r-> new MaterialQrCodeDTO() + .map(r -> new MaterialQrCodeDTO() .setQrCode(r.getMaterialUniqueNo()) .setInspectionQty(r.getInspectionQty()) .setUnqualifiedQty(r.getUnqualifiedQty()) @@ -116,34 +116,34 @@ public class WmsIncomingInspectionTaskCallbackService { * 向WMS系统发送库存检验任务回调 */ private void inventory(QmsIncomingInspectionTaskVO taskVO, Short processingResult) { - WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO() - .setTaskNo(taskVO.getTaskNo()) - .setRequestNo(taskVO.getRequestNo()) - .setMaterialNo(taskVO.getMaterialNo()) - .setFactory(taskVO.getFactory()) - .setWarehouse(taskVO.getWarehouse()) - .setStorageLocation(taskVO.getStorageLocation()) - .setStorageDays(taskVO.getStorageDays()) - .setDetectionQty(taskVO.getDetectionQty()) - .setQualifiedQty(taskVO.getQualifiedQty()) - .setUnqualifiedQty(taskVO.getUnqualifiedQty()) - .setInspectionResult(taskVO.getInspectionResult()) - .setProcessingResult(processingResult); - - List records = incomingInspectionTaskRecordService.lambdaQuery() - .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) - .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId()) - .list(); - qo.setQualifiedMaterialUniqueNo(records.stream() - .filter(QmsIncomingInspectionTaskRecord::getQualified) - .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo) - .toList() - ); - qo.setUnqualifiedMaterialUniqueNo(records.stream() - .filter(record -> !record.getQualified()) - .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo) - .toList() - ); +// WmsInventoryInspectionTaskCallbackQO qo = new WmsInventoryInspectionTaskCallbackQO() +// .setTaskNo(taskVO.getTaskNo()) +// .setRequestNo(taskVO.getRequestNo()) +// .setMaterialNo(taskVO.getMaterialNo()) +// .setFactory(taskVO.getFactory()) +// .setWarehouse(taskVO.getWarehouse()) +// .setStorageLocation(taskVO.getStorageLocation()) +// .setStorageDays(taskVO.getStorageDays()) +// .setDetectionQty(taskVO.getDetectionQty()) +// .setQualifiedQty(taskVO.getQualifiedQty()) +// .setUnqualifiedQty(taskVO.getUnqualifiedQty()) +// .setInspectionResult(taskVO.getInspectionResult()) +// .setProcessingResult(processingResult); +// +// List records = incomingInspectionTaskRecordService.lambdaQuery() +// .select(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo, QmsIncomingInspectionTaskRecord::getQualified) +// .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskVO.getId()) +// .list(); +// qo.setQualifiedMaterialUniqueNo(records.stream() +// .filter(QmsIncomingInspectionTaskRecord::getQualified) +// .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo) +// .toList() +// ); +// qo.setUnqualifiedMaterialUniqueNo(records.stream() +// .filter(record -> !record.getQualified()) +// .map(QmsIncomingInspectionTaskRecord::getMaterialUniqueNo) +// .toList() +// ); // 注意:本方法不可被 @Transactional 包裹,否则下面"标记失败"的更新会随异常一起回滚,导致失败状态丢失 try { @@ -151,10 +151,8 @@ public class WmsIncomingInspectionTaskCallbackService { inventoryService.lambdaUpdate() .set(WmsInventory::getDetectionStatus, (short) 2) .set(WmsInventory::getDetectionResults, taskVO.getInspectionResult()) - .eq(WmsInventory::getMaterialNo, taskVO.getMaterialNo()) - .eq(WmsInventory::getFactoryNo, taskVO.getFactory()) - .eq(WmsInventory::getWarehouseNo, taskVO.getWarehouse()) - .eq(WmsInventory::getBinLocation, taskVO.getStorageLocation()) + .eq(WmsInventory::getId, Long.valueOf(taskVO.getRequestNo())) + .eq(WmsInventory::getDetectionStatus, (short) 1) .update(); updateCallbackResult(taskVO.getId(), true); } catch (Exception e) { @@ -191,7 +189,7 @@ public class WmsIncomingInspectionTaskCallbackService { public void process(Long taskId) { QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId); VUtil.trueThrowBusinessError(Objects.equals(taskVO.getCallbackResult(), true)).throwMessage("请勿重复回调"); - VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(),(short)2)).throwMessage("来料检验任务状态不允许回调"); + VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(), (short) 2)).throwMessage("来料检验任务状态不允许回调"); if (taskVO.getInspectionResult()) { process(taskVO, (short) 0); } else { @@ -214,10 +212,10 @@ public class WmsIncomingInspectionTaskCallbackService { private void process(QmsIncomingInspectionTaskVO taskVO, Short processingResult) { switch (taskVO.getInspectionType()) { case 0: - incoming(taskVO,processingResult); + incoming(taskVO, processingResult); break; case 1: - inventory(taskVO,processingResult); + inventory(taskVO, processingResult); break; default: VUtil.trueThrowBusinessError(true).throwMessage("无效的检验类型:" + taskVO.getInspectionType()); @@ -233,7 +231,7 @@ public class WmsIncomingInspectionTaskCallbackService { private void process(Long taskId, Short processingResult) { QmsIncomingInspectionTaskVO taskVO = incomingInspectionTaskService.getDetail(taskId); VUtil.trueThrowBusinessError(Objects.equals(taskVO.getCallbackResult(), true)).throwMessage("请勿重复回调"); - VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(),(short)2)).throwMessage("来料检验任务状态不允许回调"); + VUtil.trueThrowBusinessError(!Objects.equals(taskVO.getInspectionStatus(), (short) 2)).throwMessage("来料检验任务状态不允许回调"); process(taskVO, processingResult); } } 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 7447baa4..674a3688 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 @@ -231,6 +231,7 @@ public class NormalPGIController extends BaseController { @PostMapping("noScanSubmit") @ApiMark(moduleName = "送货单管理", apiName = "无码收货确认") public ApiResult noScanSubmit(@Valid @RequestBody @NotNull NoScanningRequest request) { + request.getItems().removeIf(it -> CollectionUtil.isEmpty(it.getDatas())); WmsSrmOrder order = wmsSrmOrderService.lambdaQuery() .eq(Objects.nonNull(request.getId()), WmsSrmOrder::getId, request.getId()) .eq(StrUtil.isNotBlank(request.getNo()), WmsSrmOrder::getNoteNum, request.getNo()) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java index 6c06a289..dc26bb52 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/request/NoScanningItemRequest.java @@ -36,6 +36,5 @@ public class NoScanningItemRequest { * 明细列表 */ @Valid - @NotEmpty private List datas; } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/schedule/InventoryExpirationInspectionScheduledTask.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/schedule/InventoryExpirationInspectionScheduledTask.java index 662d672c..3e6cff7a 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/schedule/InventoryExpirationInspectionScheduledTask.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/schedule/InventoryExpirationInspectionScheduledTask.java @@ -127,8 +127,8 @@ public class InventoryExpirationInspectionScheduledTask { InventoryDetectionApplyQO request = new InventoryDetectionApplyQO(); request.setInventoryId(inventory.getId()); - request.setInspectionQty(inventory.getNum().intValue()); - request.setStorageDays(Math.max(1, (int) ChronoUnit.DAYS.between(inventory.getCreateTime(), now))); +// request.setInspectionQty(inventory.getNum().intValue()); +// request.setStorageDays(Math.max(1, (int) ChronoUnit.DAYS.between(inventory.getCreateTime(), now))); try { qmsService.pushInventoryInspection(request); appliedKeys.add(inspectionKey); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java index f68f90c0..02d0bdb8 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/QmsService.java @@ -1,5 +1,7 @@ package com.nflg.wms.admin.service; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.nflg.wms.common.pojo.ApiResult; @@ -29,6 +31,7 @@ import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; @@ -177,19 +180,19 @@ public class QmsService { VUtil.trueThrowBusinessError(Objects.isNull(inventory)).throwMessage("未找到对应库存"); VUtil.trueThrowBusinessError(Objects.equals(inventory.getDetectionStatus(), (short) 1)) .throwMessage("该库存正在检测中,不能重复发起检测任务"); - VUtil.trueThrowBusinessError( - Objects.isNull(inventory.getNum()) - || BigDecimal.valueOf(request.getInspectionQty()).compareTo(inventory.getNum()) > 0 - ).throwMessage("检验数量不能大于库存数量"); +// VUtil.trueThrowBusinessError( +// Objects.isNull(inventory.getNum()) +// || BigDecimal.valueOf(request.getInspectionQty()).compareTo(inventory.getNum()) > 0 +// ).throwMessage("检验数量不能大于库存数量"); ExternalInventoryInspectionApplyQO apply = new ExternalInventoryInspectionApplyQO(); - apply.setRequestNo(generateInventoryInspectionRequestNo(request.getInventoryId())); + apply.setRequestNo(String.valueOf(request.getInventoryId())); apply.setMaterialNo(inventory.getMaterialNo()); apply.setFactory(inventory.getFactoryNo()); - apply.setInspectionQty(request.getInspectionQty()); + apply.setInspectionQty(inventory.getNum().intValue()); apply.setWarehouse(inventory.getWarehouseNo()); apply.setStorageLocation(inventory.getBinLocation()); - apply.setStorageDays(request.getStorageDays()); + apply.setStorageDays((int) LocalDateTimeUtil.between(inventory.getCreateTime(), LocalDateTime.now(), ChronoUnit.DAYS)); List qrCodes = getInventoryInspectionQrCodes(apply); apply.setQrCodes(qrCodes); @@ -259,10 +262,6 @@ public class QmsService { } - private String generateInventoryInspectionRequestNo(Long inventoryId) { - return LocalDateTime.now().format(INVENTORY_INSPECTION_REQUEST_NO_FORMATTER) + inventoryId; - } - private List getInventoryInspectionQrCodes(ExternalInventoryInspectionApplyQO apply) { List qrCodeMasters = qrCodeMasterService.lambdaQuery() .select(WmsQrCodeMaster::getId, WmsQrCodeMaster::getBarcodeCode) @@ -304,7 +303,7 @@ public class QmsService { /** * 推送PDI检验申请 * @param orderNo 订单编号 - * @param item 订单项 + * @param item 订单项 */ public void pushPdiInspection(String orderNo, WmsInProduceOrderItem item) { QmsPdiTaskRecordAddQO qo = new QmsPdiTaskRecordAddQO() diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryDetectionApplyQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryDetectionApplyQO.java index dbda070a..28b03911 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryDetectionApplyQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InventoryDetectionApplyQO.java @@ -16,17 +16,17 @@ public class InventoryDetectionApplyQO { @NotNull(message = "库存ID不能为空") private Long inventoryId; - /** - * 检验数量 - */ - @NotNull(message = "检验数量不能为空") - @Min(value = 1, message = "检验数量必须大于0") - private Integer inspectionQty; - - /** - * 存储时长(单位:天) - */ - @NotNull(message = "存储时长不能为空") - @Min(value = 1, message = "存储时长必须大于0") - private Integer storageDays; +// /** +// * 检验数量 +// */ +// @NotNull(message = "检验数量不能为空") +// @Min(value = 1, message = "检验数量必须大于0") +// private Integer inspectionQty; +// +// /** +// * 存储时长(单位:天) +// */ +// @NotNull(message = "存储时长不能为空") +// @Min(value = 1, message = "存储时长必须大于0") +// private Integer storageDays; } diff --git a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java index be18d590..b6ce7f15 100644 --- a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java +++ b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/QmsController.java @@ -81,9 +81,7 @@ public class QmsController extends BaseController { // 找到入库的明细 WmsQcReceiveItem receiveItem = qcReceiveItemService.lambdaQuery() - .eq(WmsQcReceiveItem::getItemCode, qo.getMaterialNo()) - .eq(WmsQcReceiveItem::getLineNumber, qo.getDeliveryOrderLine()) - .eq(WmsQcReceiveItem::getNoteNum, qo.getDeliveryOrderNo()) + .eq(WmsQcReceiveItem::getId, Long.valueOf(qo.getRequestNo())) .one(); VUtil.trueThrowBusinessError(Objects.isNull(receiveItem)) .throwMessage(StrUtil.format("未找到对应收货明细, 质检单号: {}, 物料: {}, 收货单: {}, 行号: {}",