From f948c667d4debeb5ee28a77c4c3a6b0b6326a3bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 20 Apr 2026 08:52:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(qms):=20=E6=96=B0=E5=A2=9E=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E6=A0=87=E5=87=86=E5=8F=8A=E6=8A=BD=E6=A0=B7=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E5=8F=91=E5=B8=83=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加检验标准实体类 QmsInspectionStandard,包含检验相关字段及元数据 - 新增检验标准新增参数类 QmsInspectionStandardAddQO,支持物料ID、图纸URL等字段校验 - 创建检验标准详情视图类 QmsInspectionStandardDetailVO,包含检验标准信息及检测项列表 - 优化 QmsInspectionStandardControllerService,移除不必要字段,精简代码逻辑 - 在 QmsSamplingPlanController 新增发布抽样方案接口,支持批量发布 - 实现 QmsSamplingPlanControllerService 中发布方法,校验方案状态并批量更新发布状态 - 补充 FilterIdsQO 参数类,支持发布接口的批量ID校验 - 完善抽样方案新增、编辑、删除、查询的业务逻辑及数据完整性校验 - 引入事务管理保证数据操作原子性,提升系统稳定性与数据一致性 --- .../controller/QmsSamplingPlanController.java | 10 ++++++ ...msInspectionStandardControllerService.java | 7 +--- .../QmsSamplingPlanControllerService.java | 34 +++++++++++++++++++ .../nflg/wms/common/pojo/qo/FilterIdsQO.java | 18 ++++++++++ .../pojo/qo/QmsInspectionStandardAddQO.java | 5 --- .../vo/QmsInspectionStandardDetailVO.java | 5 --- .../entity/QmsInspectionStandard.java | 5 --- 7 files changed, 63 insertions(+), 21 deletions(-) create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/FilterIdsQO.java diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsSamplingPlanController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsSamplingPlanController.java index 7bde4291..ed1efc15 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsSamplingPlanController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsSamplingPlanController.java @@ -4,6 +4,7 @@ import com.nflg.qms.admin.service.QmsSamplingPlanControllerService; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.qo.FilterIdQO; +import com.nflg.wms.common.pojo.qo.FilterIdsQO; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanEditQO; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanSearchQO; @@ -45,6 +46,15 @@ public class QmsSamplingPlanController extends BaseController { return ApiResult.success(); } + /** + * 发布抽样方案 + */ + @PostMapping("publish") + public ApiResult publish(@Valid @RequestBody FilterIdsQO request) { + samplingPlanControllerService.publish(request); + return ApiResult.success(); + } + /** * 删除抽样方案 */ diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java index 9c350247..77345b7b 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsInspectionStandardControllerService.java @@ -17,9 +17,9 @@ import com.nflg.wms.repository.entity.QmsInspectionStandard; import com.nflg.wms.repository.entity.QmsInspectionStandardItem; import com.nflg.wms.repository.entity.QmsInspectionStandardItemContent; import com.nflg.wms.repository.mapper.QmsInspectionStandardMapper; -import com.nflg.wms.repository.service.IQmsInspectionStandardService; import com.nflg.wms.repository.service.IQmsInspectionStandardItemContentService; import com.nflg.wms.repository.service.IQmsInspectionStandardItemService; +import com.nflg.wms.repository.service.IQmsInspectionStandardService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -27,9 +27,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; -import java.util.Objects; import java.util.stream.Collectors; /** @@ -153,7 +151,6 @@ public class QmsInspectionStandardControllerService { // 填充基础字段 detail.setId(standard.getId()); detail.setMaterialId(standard.getMaterialId()); - detail.setInspectionTaskItemId(standard.getInspectionTaskItemId()); detail.setDrawingUrl(standard.getDrawingUrl()); detail.setVersionNo(standard.getVersion() != null ? standard.getVersion().toString() : null); detail.setIsEnabled(standard.getIsEnabled()); @@ -257,7 +254,6 @@ public class QmsInspectionStandardControllerService { QmsInspectionStandard standard = new QmsInspectionStandard(); standard.setMaterialId(qo.getMaterialId()); - standard.setInspectionTaskItemId(qo.getInspectionTaskItemId()); standard.setDrawingUrl(qo.getDrawingUrl()); standard.setVersion(versionNo); standard.setPackagingMethodId(qo.getPackagingMethodId()); @@ -330,7 +326,6 @@ public class QmsInspectionStandardControllerService { // 3. 更新字段(不修改版本号) standard.setMaterialId(qo.getMaterialId()); - standard.setInspectionTaskItemId(qo.getInspectionTaskItemId()); standard.setDrawingUrl(qo.getDrawingUrl()); standard.setPackagingMethodId(qo.getPackagingMethodId()); standard.setInspectionCycle(qo.getInspectionCycle()); diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsSamplingPlanControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsSamplingPlanControllerService.java index 3c4fb411..d42cd774 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsSamplingPlanControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsSamplingPlanControllerService.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; 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.FilterIdsQO; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanEditQO; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanSearchQO; @@ -318,6 +319,39 @@ public class QmsSamplingPlanControllerService { } } + /** + * 发布抽样方案(批量) + */ + @Transactional(rollbackFor = Exception.class) + public void publish(FilterIdsQO request) { + List ids = request.getIds(); + + // 1. 批量查询抽样方案 + List plans = samplingPlanService.listByIds(ids); + VUtil.trueThrowBusinessError(plans.size() != ids.size()).throwMessage("存在不存在的抽样方案,请检查后重试"); + + // 2. 校验是否存在已发布的方案 + List alreadyPublished = plans.stream() + .filter(p -> p.getPublishStatus() != null && p.getPublishStatus() == 1) + .map(QmsSamplingPlan::getPlanName) + .collect(Collectors.toList()); + VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(alreadyPublished)) + .throwMessage("以下方案已发布,不能重复发布:" + String.join("、", alreadyPublished)); + + // 3. 批量更新发布状态为已发布 + String operator = UserUtil.getUserName(); + Long operatorId = UserUtil.getUserId(); + LocalDateTime now = LocalDateTime.now(); + + samplingPlanService.lambdaUpdate() + .in(QmsSamplingPlan::getId, ids) + .set(QmsSamplingPlan::getPublishStatus, (short) 1) + .set(QmsSamplingPlan::getUpdateUserId, operatorId) + .set(QmsSamplingPlan::getUpdateUserName, operator) + .set(QmsSamplingPlan::getUpdateTime, now) + .update(); + } + /** * 删除抽样方案 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/FilterIdsQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/FilterIdsQO.java new file mode 100644 index 00000000..ddd5d89c --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/FilterIdsQO.java @@ -0,0 +1,18 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class FilterIdsQO { + + /** + * 主键ID列表 + */ + @NotEmpty + private List ids; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardAddQO.java index 8c1c06b8..ff1b1c99 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardAddQO.java @@ -15,11 +15,6 @@ public class QmsInspectionStandardAddQO { @NotNull(message = "物料ID不能为空") private Long materialId; - /** - * 检验任务项ID - */ - private Long inspectionTaskItemId; - /** * 图纸URL */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardDetailVO.java index cae95beb..f3442461 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardDetailVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardDetailVO.java @@ -41,11 +41,6 @@ public class QmsInspectionStandardDetailVO { */ private String drawingNoVer; - /** - * 检验任务项ID - */ - private Long inspectionTaskItemId; - /** * 图纸URL */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandard.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandard.java index d0deeada..301fb28e 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandard.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandard.java @@ -31,11 +31,6 @@ public class QmsInspectionStandard implements Serializable { */ private Long materialId; - /** - * 检验任务项ID - */ - private Long inspectionTaskItemId; - /** * 图纸URL */