From c91310b7db476924026995f9c00853fa7e381abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 12 May 2026 11:01:30 +0800 Subject: [PATCH 1/5] =?UTF-8?q?refactor(search):=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=A4=9A=E4=B8=AA=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=AF=A2=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=B8=BA=E5=85=B3=E9=94=AE=E5=AD=97=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 用单一关键字参数替代了物料编码、图号、检测单号、供应商编号和供应商名称的多个模糊查询字段 - 修改Mapper层SQL,使用关键字同时匹配多个字段实现模糊搜索 - 简化查询条件,提升接口调用便捷性和代码维护性 - 更新查询QO类,移除多余字段,增加关键字字段以支持统一搜索逻辑 --- ...QmsIncomingInspectionTaskTodoSearchQO.java | 27 +++---------------- .../QmsIncomingInspectionTaskMapper.xml | 22 ++++++--------- 2 files changed, 12 insertions(+), 37 deletions(-) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoSearchQO.java index 2aae7d34..23f90edc 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoSearchQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskTodoSearchQO.java @@ -11,32 +11,13 @@ import lombok.EqualsAndHashCode; public class QmsIncomingInspectionTaskTodoSearchQO extends PageQO { /** - * 物料编码(模糊匹配) + * 关键字 */ - private String materialNo; + private String key; /** - * 物料图号(模糊匹配) - */ - private String drawingNo; - - /** - * 检测单号(模糊匹配) - */ - private String taskNo; - - /** - * 供应商编号(模糊匹配) - */ - private String supplierCode; - - /** - * 供应商名称(模糊匹配) - */ - private String supplierName; - - /** - * 检验状态:0=待检,1=检验中,2=已检(不传则默认查 0 和 1) + * 检验状态,不传则默认查 0 和 1 + * 0=待检,1=检验中,2=已检 */ private Short inspectionStatus; diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml index be24adf1..db38d286 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml @@ -160,20 +160,14 @@ AND t.is_overdue = #{request.isOverdue} - - AND m.material_no ilike concat('%', #{request.materialNo}, '%') - - - AND m.drawing_no ilike concat('%', #{request.drawingNo}, '%') - - - AND t.task_no ilike concat('%', #{request.taskNo}, '%') - - - AND t.supplier_code ilike concat('%', #{request.supplierCode}, '%') - - - AND t.supplier_name ilike concat('%', #{request.supplierName}, '%') + + AND (m.material_no ilike concat('%', #{request.key}, '%') + or m.material_desc ilike concat('%', #{request.key}, '%') + or m.drawing_no ilike concat('%', #{request.key}, '%') + or t.task_no ilike concat('%', #{request.key}, '%') + or t.supplier_code ilike concat('%', #{request.key}, '%') + or t.supplier_name ilike concat('%', #{request.key}, '%') + ) ORDER BY t.required_finish_time ASC From 09a7ca454b462850a84b0b6530e6366ff6c7f80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 12 May 2026 11:02:39 +0800 Subject: [PATCH 2/5] =?UTF-8?q?test(qms-incoming-inspection):=20=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E4=BD=BF=E7=94=A8=20key=20=E5=AD=97=E6=AE=B5=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3=E5=A4=9A=E4=B8=AA=E6=90=9C=E7=B4=A2=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将测试中多个搜索条件字段替换为统一的 key 字段 - 修改按物料编号、图号、检测单号、供应商编号、供应商名称的搜索请求 - 调整组合条件搜索只使用 key 字段 - 保证所有相关测试用例中搜索参数一致性 - 确保无结果查询时仍使用 key 字段搜索 --- ...msIncomingInspectionTaskTodoSearchApiTest.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsIncomingInspectionTaskTodoSearchApiTest.java b/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsIncomingInspectionTaskTodoSearchApiTest.java index e2067a14..1c03d162 100644 --- a/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsIncomingInspectionTaskTodoSearchApiTest.java +++ b/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsIncomingInspectionTaskTodoSearchApiTest.java @@ -130,7 +130,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setMaterialNo(SEARCH_MATERIAL_NO); + request.setKey(SEARCH_MATERIAL_NO); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "按物料编号搜索失败"); @@ -155,7 +155,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setDrawingNo(SEARCH_DRAWING_NO); + request.setKey(SEARCH_DRAWING_NO); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "按物料图号搜索失败"); @@ -172,7 +172,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setTaskNo(SEARCH_TASK_NO_PREFIX); + request.setKey(SEARCH_TASK_NO_PREFIX); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "按检测单号搜索失败"); @@ -197,7 +197,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setSupplierCode(SEARCH_SUPPLIER_CODE); + request.setKey(SEARCH_SUPPLIER_CODE); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "按供应商编号搜索失败"); @@ -214,7 +214,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setSupplierName(SEARCH_SUPPLIER_NAME); + request.setKey(SEARCH_SUPPLIER_NAME); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "按供应商名称搜索失败"); @@ -231,8 +231,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setMaterialNo(SEARCH_MATERIAL_NO); - request.setSupplierName(SEARCH_SUPPLIER_NAME); + request.setKey(SEARCH_MATERIAL_NO); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "组合条件搜索失败"); @@ -277,7 +276,7 @@ public class QmsIncomingInspectionTaskTodoSearchApiTest { QmsIncomingInspectionTaskTodoSearchQO request = new QmsIncomingInspectionTaskTodoSearchQO(); request.setPage(1); request.setPageSize(10); - request.setTaskNo("NOT_EXIST_TASK_NO_999999"); + request.setKey("NOT_EXIST_TASK_NO_999999"); ApiResult> result = post("/incoming-inspection-task/todo-search", request, new TypeReference<>() {}); assertSuccess(result, "无结果查询失败"); From d0fb34dc71e32946ed86729ba797a6f96f5654a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 12 May 2026 14:07:38 +0800 Subject: [PATCH 3/5] =?UTF-8?q?refactor(qms-inspection):=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=A3=80=E9=AA=8C=E6=A0=87=E5=87=86=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=8F=8A=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入IQmsInspectionItemService、IQmsInspectionItemDetailsService、IQmsQcMaterialCategoryService依赖 - 新增add方法中物料存在性校验,确保物料有效 - 根据物料类别及其父类别获取检验项及明细,自动生成检测标准项及内容 - 优化异常抛出,统一使用STATE.BusinessError替代硬编码常量 - 提取getInspectionItemDetails方法,提升代码复用性 - 更新相关service调用,完善检验标准新增及校验流程 --- ...msInspectionStandardControllerService.java | 91 +++++++++++++++++-- 1 file changed, 84 insertions(+), 7 deletions(-) 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 228c0f49..ce5e07f9 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 @@ -2,10 +2,12 @@ package com.nflg.qms.admin.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Pair; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.nflg.qms.admin.pojo.qo.QmsPdfExtractRegionQO; +import com.nflg.wms.common.constant.STATE; import com.nflg.wms.common.exception.NflgException; import com.nflg.wms.common.pojo.PageData; import com.nflg.wms.common.pojo.dto.QmsInspectionStandardDetailDTO; @@ -72,6 +74,15 @@ public class QmsInspectionStandardControllerService { @Resource private RegionFilterService regionFilterService; + @Resource + private IQmsInspectionItemService inspectionItemService; + + @Resource + private IQmsInspectionItemDetailsService inspectionItemDetailsService; + + @Resource + private IQmsQcMaterialCategoryService materialCategoryService; + /** * 分页查询检验标准 */ @@ -123,7 +134,7 @@ public class QmsInspectionStandardControllerService { // 2. 已发布的标准不允许删除 if (standard.getPublishStatus() != null && standard.getPublishStatus() == 1) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, + throw new NflgException(STATE.BusinessError, "已发布的检验标准不允许删除,ID: " + id); } @@ -162,7 +173,7 @@ public class QmsInspectionStandardControllerService { // 1. 查询检验标准基本信息 QmsInspectionStandard standard = inspectionStandardService.getById(id); if (standard == null) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检验标准不存在"); + throw new NflgException(STATE.BusinessError, "检验标准不存在"); } // 2. 查询检验标准详情(关联物料等信息) @@ -322,6 +333,9 @@ public class QmsInspectionStandardControllerService { */ @Transactional(rollbackFor = Exception.class) public Long add(QmsInspectionStandardAddQO qo) { + QmsQcMaterial qmsQcMaterial = qmsQcMaterialService.getById(qo.getMaterialId()); + VUtil.trueThrowBusinessError(Objects.isNull(qmsQcMaterial)).throwMessage("物料不存在"); + Long userId = UserUtil.getUserId(); String userName = UserUtil.getUserName(); LocalDateTime now = LocalDateTime.now(); @@ -348,6 +362,56 @@ public class QmsInspectionStandardControllerService { inspectionStandardService.save(standard); + String materialCategoryCode = qmsQcMaterial.getMaterialCategoryCode(); + if (StrUtil.isNotBlank(materialCategoryCode)) { + QmsQcMaterialCategory category = materialCategoryService.lambdaQuery() + .eq(QmsQcMaterialCategory::getCategoryCode, materialCategoryCode) + .one(); + if (Objects.nonNull(category)) { + Pair> data = getInspectionItemDetails(category); + if (Objects.isNull(data)) { + category = materialCategoryService.lambdaQuery() + .eq(QmsQcMaterialCategory::getId, category.getParentCategoryRowId()) + .one(); + if (Objects.nonNull(category)) { + data = getInspectionItemDetails(category); + } + } + if (Objects.nonNull(data)) { + QmsInspectionStandardItem inspectionStandardItem = new QmsInspectionStandardItem(); + inspectionStandardItem.setInspectionStandardId(standard.getId()); + inspectionStandardItem.setItemType((short) 0); + Long detectionTypeDictItemId = switch (data.getKey().getDetectionType()) { + case 0 -> dictionaryItemService.getIdByCode("InspectionStandardDetectionType", "定性"); + case 1 -> dictionaryItemService.getIdByCode("InspectionStandardDetectionType", "定量"); + default -> 0L; + }; + VUtil.trueThrowBusinessError(detectionTypeDictItemId == 0).throwMessage("检测类型字典项不存在"); + inspectionStandardItem.setDetectionTypeDictItemId(detectionTypeDictItemId); + inspectionStandardItem.setSortNo(0); + inspectionStandardItem.setName(data.getKey().getInspectionItemName()); + inspectionStandardItemService.save(inspectionStandardItem); + inspectionStandardItemContentService.saveBatch( + data.getValue() + .stream() + .map(content -> { + QmsInspectionStandardItemContent itemContent = new QmsInspectionStandardItemContent(); + itemContent.setInspectionStandardItemId(inspectionStandardItem.getId()); + itemContent.setSortNo(content.getSortNo()); + itemContent.setTestStandard(content.getTestStandard()); + itemContent.setLegend(content.getLegend()); + itemContent.setJudgmentType(content.getDeterminationType()); + itemContent.setCreateUserId(userId); + itemContent.setCreateUserName(userName); + itemContent.setCreateTime(now); + return itemContent; + }) + .toList() + ); + } + } + } + qmsQcMaterialService.lambdaUpdate() .set(QmsQcMaterial::getIsStandardMaintained, true) .eq(QmsQcMaterial::getId, qo.getMaterialId()) @@ -357,6 +421,19 @@ public class QmsInspectionStandardControllerService { return standard.getId(); } + private Pair> getInspectionItemDetails(QmsQcMaterialCategory category) { + QmsInspectionItem inspectionItem = inspectionItemService.lambdaQuery() + .eq(QmsInspectionItem::getMaterialTypeId, category.getId()) + .one(); + if (Objects.isNull(inspectionItem)) { + return null; + } + return Pair.of(inspectionItem, inspectionItemDetailsService.lambdaQuery() + .eq(QmsInspectionItemDetails::getInspectionItemId, inspectionItem.getId()) + .list() + ); + } + // /** // * 生成版本号:查询该物料已发布的最大版本号,如果存在则加1,否则默认为1 // * @param materialId 物料ID @@ -395,12 +472,12 @@ public class QmsInspectionStandardControllerService { // 1. 校验检验标准是否存在 QmsInspectionStandard standard = inspectionStandardService.getById(qo.getId()); if (standard == null) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检验标准不存在"); + throw new NflgException(STATE.BusinessError, "检验标准不存在"); } // 2. 已发布的标准不允许修改 if (standard.getPublishStatus() != null && standard.getPublishStatus() == 1) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "已发布的检验标准不允许修改"); + throw new NflgException(STATE.BusinessError, "已发布的检验标准不允许修改"); } VUtil.trueThrowBusinessError( inspectionStandardService.lambdaQuery() @@ -472,7 +549,7 @@ public class QmsInspectionStandardControllerService { // 更新现有检测项 item = inspectionStandardItemService.getById(itemQO.getId()); if (item == null) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检测项不存在:" + itemQO.getId()); + throw new NflgException(STATE.BusinessError, "检测项不存在:" + itemQO.getId()); } // 更新字段 @@ -517,7 +594,7 @@ public class QmsInspectionStandardControllerService { // 1. 校验检验标准是否存在 QmsInspectionStandard standard = inspectionStandardService.getById(qo.getInspectionStandardId()); if (standard == null) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检验标准不存在"); + throw new NflgException(STATE.BusinessError, "检验标准不存在"); } Long userId = UserUtil.getUserId(); @@ -712,7 +789,7 @@ public class QmsInspectionStandardControllerService { // 更新现有内容 content = inspectionStandardItemContentService.getById(contentQO.getId()); if (content == null) { - throw new NflgException(com.nflg.wms.common.constant.STATE.BusinessError, "检测项内容不存在:" + contentQO.getId()); + throw new NflgException(STATE.BusinessError, "检测项内容不存在:" + contentQO.getId()); } updateContentFields(content, contentQO, userId, userName, now); From 71a989bb2064b0f8c376c11b4586ce4b747f4fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 12 May 2026 14:16:53 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix(repository):=20=E4=BF=AE=E6=AD=A3QmsInc?= =?UTF-8?q?omingInspectionTask=E4=B8=AD=E8=BF=87=E6=9C=9F=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将isOverdue过滤条件从移动到分支中 - 消除重复的isOverdue过滤判断,避免条件冲突 - 优化查询条件逻辑,提高代码可读性和维护性 --- .../resources/mapper/QmsIncomingInspectionTaskMapper.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml index db38d286..0ce5d5d1 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml @@ -149,6 +149,9 @@ LEFT JOIN qms_incoming_inspection_task t2 ON t.related_task_id = t2.id + + t.is_overdue = #{request.isOverdue} + t.inspection_status = #{request.inspectionStatus} @@ -157,9 +160,6 @@ AND (t.inspector_id = #{inspectorId} OR t.agent_id = #{inspectorId}) - - AND t.is_overdue = #{request.isOverdue} - AND (m.material_no ilike concat('%', #{request.key}, '%') or m.material_desc ilike concat('%', #{request.key}, '%') From c12a548bd16ac618af32e64878627f4d9cf0a321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 12 May 2026 14:27:07 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix(QmsInspectionStandard):=20=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E6=A3=80=E6=B5=8B=E6=A0=87=E5=87=86=E9=A1=B9=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 设置检测标准项的创建用户ID - 设置检测标准项的创建用户名 - 设置检测标准项的创建时间 - 完善检测标准项信息后保存至数据库 --- .../admin/service/QmsInspectionStandardControllerService.java | 3 +++ 1 file changed, 3 insertions(+) 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 ce5e07f9..00442ecf 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 @@ -390,6 +390,9 @@ public class QmsInspectionStandardControllerService { inspectionStandardItem.setDetectionTypeDictItemId(detectionTypeDictItemId); inspectionStandardItem.setSortNo(0); inspectionStandardItem.setName(data.getKey().getInspectionItemName()); + inspectionStandardItem.setCreateUserId(userId); + inspectionStandardItem.setCreateUserName(userName); + inspectionStandardItem.setCreateTime(now); inspectionStandardItemService.save(inspectionStandardItem); inspectionStandardItemContentService.saveBatch( data.getValue()