From ee041cc2366195e6181e8ae2b4c0b391c1101a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 21 Apr 2026 14:17:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(qms):=20=E4=BC=98=E5=8C=96=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=E6=A0=87=E5=87=86=E7=AE=A1=E7=90=86=E5=92=8CVO?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A1=AB=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 合并和优化控制器导入,注释掉编辑检验标准接口,保留暂存接口 - 在Service层批量查询字典项,提升检测项VO组装的性能和可读性 - 新增检测项VO中相关字典项名称字段,完善展示数据结构 - 检验标准保存时添加唯一版本号校验,防止重复版本的检验标准存在 - 更新检验标准时不修改版本号,补充审计字段更新 - 扩展QmsInspectionStandardSaveQO,新增物料ID、版本、是否启用、图纸URL等字段完善保存逻辑 --- .../QmsInspectionStandardController.java | 32 +++----- ...msInspectionStandardControllerService.java | 81 +++++++++++++++++-- .../pojo/qo/QmsInspectionStandardSaveQO.java | 35 ++++++++ .../pojo/vo/QmsInspectionStandardItemVO.java | 30 +++++++ 4 files changed, 151 insertions(+), 27 deletions(-) diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionStandardController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionStandardController.java index 0c2df74f..35a22994 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionStandardController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsInspectionStandardController.java @@ -3,12 +3,7 @@ package com.nflg.qms.admin.controller; import com.nflg.qms.admin.service.QmsInspectionStandardControllerService; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; -import com.nflg.wms.common.pojo.qo.EnableQO; -import com.nflg.wms.common.pojo.qo.IdsQO; -import com.nflg.wms.common.pojo.qo.QmsInspectionStandardAddQO; -import com.nflg.wms.common.pojo.qo.QmsInspectionStandardEditQO; -import com.nflg.wms.common.pojo.qo.QmsInspectionStandardSaveQO; -import com.nflg.wms.common.pojo.qo.QmsInspectionStandardSearchQO; +import com.nflg.wms.common.pojo.qo.*; import com.nflg.wms.common.pojo.vo.QmsInspectionStandardDetailVO; import com.nflg.wms.common.pojo.vo.QmsInspectionStandardVO; import com.nflg.wms.starter.BaseController; @@ -16,12 +11,7 @@ import jakarta.annotation.Resource; import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 检验标准 @@ -50,14 +40,14 @@ public class QmsInspectionStandardController extends BaseController { return ApiResult.success(inspectionStandardControllerService.add(request)); } - /** - * 编辑检验标准 - */ - @PostMapping("edit") - public ApiResult edit(@Valid @RequestBody QmsInspectionStandardEditQO request) { - inspectionStandardControllerService.edit(request); - return ApiResult.success(); - } +// /** +// * 编辑检验标准 +// */ +// @PostMapping("edit") +// public ApiResult edit(@Valid @RequestBody QmsInspectionStandardEditQO request) { +// inspectionStandardControllerService.edit(request); +// return ApiResult.success(); +// } /** * 批量发布检验标准 @@ -78,7 +68,7 @@ public class QmsInspectionStandardController extends BaseController { } /** - * 暂存检验标准(检测项和检测项内容) + * 暂存检验标准 */ @PostMapping("saveDraft") public ApiResult saveDraft(@Valid @RequestBody QmsInspectionStandardSaveQO request) { 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 0c61e322..0beead4d 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 @@ -25,9 +25,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -181,8 +179,20 @@ public class QmsInspectionStandardControllerService { // 4. 转换为VO并填充内容列表 List itemVOs = new ArrayList<>(); + Set dictionaryItemIds = new HashSet<>(); + items.forEach(item -> { + dictionaryItemIds.add(item.getTestingMethodDictItemId()); + dictionaryItemIds.add(item.getSamplingMethodDictItemId()); + dictionaryItemIds.add(item.getInspectionLevelDictItemId()); + dictionaryItemIds.add(item.getAqlTypeDictItemId()); + dictionaryItemIds.add(item.getAqlPriorityValueId()); + dictionaryItemIds.add(item.getInspectionStandardId()); + }); + List dictionaryItems = dictionaryItemService.lambdaQuery() + .in(DictionaryItem::getId, dictionaryItemIds) + .list(); for (QmsInspectionStandardItem item : items) { - QmsInspectionStandardItemVO itemVO = convertToItemVO(item); + QmsInspectionStandardItemVO itemVO = convertToItemVO(item, dictionaryItems); // 查询检测项内容列表 List contents = inspectionStandardItemContentService.lambdaQuery() @@ -205,17 +215,53 @@ public class QmsInspectionStandardControllerService { /** * 转换检测项实体为VO */ - private QmsInspectionStandardItemVO convertToItemVO(QmsInspectionStandardItem item) { + private QmsInspectionStandardItemVO convertToItemVO(QmsInspectionStandardItem item, List dictionaryItems) { QmsInspectionStandardItemVO vo = new QmsInspectionStandardItemVO(); vo.setId(item.getId()); vo.setName(item.getName()); vo.setSortNo(item.getSortNo()); vo.setTestingMethodDictItemId(item.getTestingMethodDictItemId()); + vo.setTestingMethodDictItemName(dictionaryItems.stream() + .filter(it -> it.getId().equals(item.getTestingMethodDictItemId())) + .findFirst() + .map(DictionaryItem::getName) + .orElse(null) + ); vo.setSamplingMethodDictItemId(item.getSamplingMethodDictItemId()); + vo.setSamplingMethodDictItemName(dictionaryItems.stream() + .filter(it -> it.getId().equals(item.getSamplingMethodDictItemId())) + .findFirst() + .map(DictionaryItem::getName) + .orElse(null) + ); vo.setSamplingPlanId(item.getSamplingPlanId()); + vo.setSamplingPlanName(dictionaryItems.stream() + .filter(it -> it.getId().equals(item.getSamplingPlanId())) + .findFirst() + .map(DictionaryItem::getName) + .orElse(null) + ); vo.setInspectionLevelDictItemId(item.getInspectionLevelDictItemId()); + vo.setInspectionLevelDictItemName(dictionaryItems.stream() + .filter(it -> it.getId().equals(item.getInspectionLevelDictItemId())) + .findFirst() + .map(DictionaryItem::getName) + .orElse(null) + ); vo.setAqlPriorityValueId(item.getAqlPriorityValueId()); + vo.setAqlPriorityValueName(dictionaryItems.stream() + .filter(it -> it.getId().equals(item.getAqlPriorityValueId())) + .findFirst() + .map(DictionaryItem::getName) + .orElse(null) + ); vo.setAqlTypeDictItemId(item.getAqlTypeDictItemId()); + vo.setAqlTypeDictItemName(dictionaryItems.stream() + .filter(it -> it.getId().equals(item.getAqlTypeDictItemId())) + .findFirst() + .map(DictionaryItem::getName) + .orElse(null) + ); vo.setItemType(item.getItemType()); vo.setPdfDrawing(item.getPdfDrawing()); vo.setCreateUserName(item.getCreateUserName()); @@ -463,7 +509,30 @@ public class QmsInspectionStandardControllerService { String userName = UserUtil.getUserName(); LocalDateTime now = LocalDateTime.now(); - // 2. 处理检测项列表 + // 2. 更新检验标准信息 + VUtil.trueThrowBusinessError( + inspectionStandardService.lambdaQuery() + .ne(QmsInspectionStandard::getId, qo.getInspectionStandardId()) + .eq(QmsInspectionStandard::getMaterialId, qo.getMaterialId()) + .eq(QmsInspectionStandard::getVersion, qo.getVersion()) + .exists() + ).throwMessage("存在相同版本的检验标准"); + + // 3. 更新字段(不修改版本号) + standard.setMaterialId(qo.getMaterialId()); + standard.setDrawingUrl(qo.getDrawingUrl()); + standard.setPackagingMethodId(qo.getPackagingMethodId()); + standard.setInspectionCycle(qo.getInspectionCycle()); + standard.setVersion(qo.getVersion()); + standard.setIsEnabled(qo.getIsEnabled()); + // 审计字段 + standard.setUpdateUserId(userId); + standard.setUpdateUserName(userName); + standard.setUpdateTime(now); + + inspectionStandardService.updateById(standard); + + // 3. 处理检测项列表 processItems(dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD), qo.getInspectionStandardId(), qo.getItems(), userId, userName, now); } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardSaveQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardSaveQO.java index 0bc70a21..fcee6fab 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardSaveQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardSaveQO.java @@ -19,6 +19,41 @@ public class QmsInspectionStandardSaveQO { @NotNull(message = "检验标准ID不能为空") private Long inspectionStandardId; + /** + * 物料ID + */ + @NotNull(message = "物料ID不能为空") + private Long materialId; + + /** + * 版本号 + */ + @NotBlank + private String version; + + /** + * 是否启用 + */ + @NotNull + private Boolean isEnabled; + + /** + * 图纸URL + */ + private String drawingUrl; + + /** + * 包装方式ID + */ + @NotNull + private Long packagingMethodId; + + /** + * 检验周期 + */ + @NotNull + private Integer inspectionCycle; + /** * 检测项列表 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardItemVO.java index 197e7333..6f16a1ae 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsInspectionStandardItemVO.java @@ -31,31 +31,61 @@ public class QmsInspectionStandardItemVO { */ private Long testingMethodDictItemId; + /** + * 检测方式字典项名称 + */ + private String testingMethodDictItemName; + /** * 抽样方式字典项ID */ private Long samplingMethodDictItemId; + /** + * 抽样方式字典项名称 + */ + private String samplingMethodDictItemName; + /** * 抽样方案ID */ private Long samplingPlanId; + /** + * 抽样方案名称 + */ + private String samplingPlanName; + /** * 检验水平字典项ID */ private Long inspectionLevelDictItemId; + /** + * 检验水平字典项名称 + */ + private String inspectionLevelDictItemName; + /** * AQL值ID */ private Long aqlPriorityValueId; + /** + * AQL值名称 + */ + private String aqlPriorityValueName; + /** * AQL类型字典项ID */ private Long aqlTypeDictItemId; + /** + * AQL类型字典项名称 + */ + private String aqlTypeDictItemName; + /** * 检验标准项类型:0-标准检测项,1-尺寸检测项 */