From 9c32bbb9ed59079ff8df341c2dd4ef3f47091472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sat, 9 May 2026 16:04:09 +0800 Subject: [PATCH] =?UTF-8?q?test(qms-sampling-plan):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=8A=BD=E6=A0=B7=E6=96=B9=E6=A1=88=E6=8E=A5=E5=8F=A3=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B=E5=8F=8A=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - QmsSamplingPlanAddQO中SamplingPlanInspectionQO类添加链式调用支持 - 测试类QmsSamplingPlanApiTest完善注释和常量格式 - 引入RandomUtil和DateTimeUtil生成动态抽样方案名称 - 调整抽样方案构造逻辑,大幅简化字码列表只包含"A" - 补充字码矩阵数据,增加多个检查项矩阵配置 - 扩充抽样方案检验列表,添加多个InspectionDictionaryItemId项 - 统一post接口调用格式,修正断言提示信息文案 - 删除冗余AQL优先值,优化构造流程和代码清晰度 --- .../qms/admin/QmsSamplingPlanApiTest.java | 128 +++++++++++++----- .../common/pojo/qo/QmsSamplingPlanAddQO.java | 2 + 2 files changed, 99 insertions(+), 31 deletions(-) diff --git a/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsSamplingPlanApiTest.java b/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsSamplingPlanApiTest.java index a274eb0f..23fa8b58 100644 --- a/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsSamplingPlanApiTest.java +++ b/nflg-qms-admin/src/test/java/com/nflg/qms/admin/QmsSamplingPlanApiTest.java @@ -2,17 +2,20 @@ package com.nflg.qms.admin; import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.TypeReference; +import cn.hutool.core.util.RandomUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.qo.QmsSamplingPlanAddQO; +import com.nflg.wms.common.util.DateTimeUtil; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import java.math.BigDecimal; +import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -28,13 +31,19 @@ import java.util.List; public class QmsSamplingPlanApiTest { // ===================== 配置区 ===================== - /** 服务地址 */ + /** + * 服务地址 + */ private static final String BASE_URL = "http://localhost:8105"; - /** 当前登录用户的 token */ - private static final String TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsInJuU3RyIjoidVFwSWM2R3RJeUoxcFNSczBadzJzb1hvMUZLZXB3czkiLCJuYW1lIjoi6LaF57qn566h55CG5ZGYIiwiY29kZSI6ImFkbWluIiwicm9sZXMiOlsiU3VwZXJBZG1pbiJdLCJ0eXBlIjoxfQ.FtQ2uVwvuxsjAFbXnB006hV1pODtRhZT0z_9nfuR0So"; + /** + * 当前登录用户的 token + */ + private static final String TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjEsInJuU3RyIjoiVVJ0dG9HbTlqMllaRWh0dTV6V1NaUldXZEtxN2VZMmYiLCJuYW1lIjoi6LaF57qn566h55CG5ZGYIiwiY29kZSI6ImFkbWluIiwicm9sZXMiOlsiU3VwZXJBZG1pbiIsIkNBTkdLVUdVQU5MSVlVQU4iXSwidHlwZSI6MX0.b_vTCbb7JpmZx0DT6XM-hTgVC7RlLmr1Vwi7-A26ThQ"; // ===================== 配置区结束 ===================== - /** 测试过程中创建的抽样方案编号(用于验证) */ + /** + * 测试过程中创建的抽样方案编号(用于验证) + */ private static String createdPlanCode; // ==================== HTTP 工具方法 ==================== @@ -78,7 +87,8 @@ public class QmsSamplingPlanApiTest { public void test01_addSamplingPlan_Success() { QmsSamplingPlanAddQO request = buildValidRequest(); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertSuccess(result, "新增抽样方案失败"); System.out.println(" ✅ 新增抽样方案成功"); } @@ -93,7 +103,8 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO request = buildValidRequest(); request.setPlanName(null); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertFailed(result, "方案名称为空应返回失败"); System.out.println(" ✅ 方案名称为空校验通过"); } @@ -108,7 +119,8 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO request = buildValidRequest(); request.setAqlPriorityValues(null); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertFailed(result, "AQL优先值列表为空应返回失败"); System.out.println(" ✅ AQL优先值列表为空校验通过"); } @@ -123,7 +135,8 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO request = buildValidRequest(); request.setStrictnessTransferRules(null); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertFailed(result, "严格性转移规则列表为空应返回失败"); System.out.println(" ✅ 严格性转移规则列表为空校验通过"); } @@ -138,7 +151,8 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO request = buildValidRequest(); request.setCodeLetters(null); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertFailed(result, "字码列表为空应返回失败"); System.out.println(" ✅ 字码列表为空校验通过"); } @@ -153,7 +167,8 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO request = buildValidRequest(); request.setCodeLetterMatrices(null); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertFailed(result, "字码矩阵维护列表为空应返回失败"); System.out.println(" ✅ 字码矩阵维护列表为空校验通过"); } @@ -168,7 +183,8 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO request = buildValidRequest(); request.setSamplingPlanInspections(null); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertFailed(result, "抽样方案检验列表为空应返回失败"); System.out.println(" ✅ 抽样方案检验列表为空校验通过"); } @@ -184,7 +200,8 @@ public class QmsSamplingPlanApiTest { request.setPlanName("完整参数抽样方案_" + System.currentTimeMillis()); request.setRemark("这是接口测试创建的抽样方案"); - ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() {}); + ApiResult result = post("/sampling-plan/add", request, new TypeReference<>() { + }); assertSuccess(result, "带备注的新增抽样方案失败"); System.out.println(" ✅ 带备注的新增抽样方案成功"); } @@ -196,7 +213,7 @@ public class QmsSamplingPlanApiTest { */ private QmsSamplingPlanAddQO buildValidRequest() { QmsSamplingPlanAddQO request = new QmsSamplingPlanAddQO(); - request.setPlanName("测试抽样方案_" + System.currentTimeMillis()); + request.setPlanName("抽样方案_" + DateTimeUtil.format(LocalDate.now()) + "_" + RandomUtil.randomNumbers(4)); request.setRemark("接口测试备注"); // 构建AQL优先值列表 @@ -204,9 +221,6 @@ public class QmsSamplingPlanApiTest { QmsSamplingPlanAddQO.AqlPriorityValueQO aql1 = new QmsSamplingPlanAddQO.AqlPriorityValueQO(); aql1.setPriorityValue(new BigDecimal("0.010")); aqlPriorityValues.add(aql1); - QmsSamplingPlanAddQO.AqlPriorityValueQO aql2 = new QmsSamplingPlanAddQO.AqlPriorityValueQO(); - aql2.setPriorityValue(new BigDecimal("0.065")); - aqlPriorityValues.add(aql2); request.setAqlPriorityValues(aqlPriorityValues); // 构建严格性转移规则列表 @@ -227,7 +241,7 @@ public class QmsSamplingPlanApiTest { // 构建字码列表 List codeLetters = new ArrayList<>(); - String[] letters = {"A", "B", "C", "D", "E", "F", "G", "H", "J"}; + String[] letters = {"A"}; for (String letter : letters) { QmsSamplingPlanAddQO.CodeLetterQO codeLetter = new QmsSamplingPlanAddQO.CodeLetterQO(); codeLetter.setCodeLetter(letter); @@ -239,24 +253,76 @@ public class QmsSamplingPlanApiTest { // 使用字码内容和AQL优先值来关联,而不是ID // 字码内容需要在codeLetters列表中存在,AQL优先值需要在aqlPriorityValues列表中存在 List matrices = new ArrayList<>(); - QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix = new QmsSamplingPlanAddQO.CodeLetterMatrixQO(); - matrix.setInspectionType((short) 0); // 正常检查 - matrix.setCodeLetter("A"); // 关联字码列表中的"A" - matrix.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010 - matrix.setSampleSize(125); - matrix.setReValue(3); - matrix.setAcValue(3); - matrices.add(matrix); + QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix1 = new QmsSamplingPlanAddQO.CodeLetterMatrixQO(); + matrix1.setInspectionType((short) 0); // 正常检查 + matrix1.setCodeLetter("A"); // 关联字码列表中的"A" + matrix1.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010 + matrix1.setSampleSize(125); + matrix1.setReValue(3); + matrix1.setAcValue(3); + matrices.add(matrix1); + QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix2 = new QmsSamplingPlanAddQO.CodeLetterMatrixQO(); + matrix2.setInspectionType((short) 1); // 正常检查 + matrix2.setCodeLetter("A"); // 关联字码列表中的"A" + matrix2.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010 + matrix2.setSampleSize(125); + matrix2.setReValue(3); + matrix2.setAcValue(3); + matrices.add(matrix2); + QmsSamplingPlanAddQO.CodeLetterMatrixQO matrix3 = new QmsSamplingPlanAddQO.CodeLetterMatrixQO(); + matrix3.setInspectionType((short) 2); // 正常检查 + matrix3.setCodeLetter("A"); // 关联字码列表中的"A" + matrix3.setAqlPriorityValue(new BigDecimal("0.010")); // 关联AQL优先值列表中的0.010 + matrix3.setSampleSize(125); + matrix3.setReValue(3); + matrix3.setAcValue(3); + matrices.add(matrix3); request.setCodeLetterMatrices(matrices); // 构建抽样方案检验列表 List inspections = new ArrayList<>(); - QmsSamplingPlanAddQO.SamplingPlanInspectionQO inspection = new QmsSamplingPlanAddQO.SamplingPlanInspectionQO(); - inspection.setRangeStart(1201); - inspection.setRangeEnd(3200); - inspection.setInspectionDictionaryItemId(1L); - inspection.setCodeLetter("A"); // 关联字码列表中的"A" - inspections.add(inspection); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043862841552723969L) + .setCodeLetter("A") + ); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043862877426606081L) + .setCodeLetter("A") + ); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043862910502887425L) + .setCodeLetter("A") + ); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043862949837070338L) + .setCodeLetter("A") + ); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043863106863423489L) + .setCodeLetter("A") + ); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043863143576166401L) + .setCodeLetter("A") + ); + inspections.add(new QmsSamplingPlanAddQO.SamplingPlanInspectionQO() + .setRangeStart(1) + .setRangeEnd(10000) + .setInspectionDictionaryItemId(2043863182146985986L) + .setCodeLetter("A") + ); request.setSamplingPlanInspections(inspections); return request; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsSamplingPlanAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsSamplingPlanAddQO.java index 73a4253f..02c8eaf8 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsSamplingPlanAddQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsSamplingPlanAddQO.java @@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; +import lombok.experimental.Accessors; import java.math.BigDecimal; import java.util.List; @@ -159,6 +160,7 @@ public class QmsSamplingPlanAddQO { * 抽样方案检验 */ @Data + @Accessors(chain = true) public static class SamplingPlanInspectionQO { /** * 范围起始值(批量下限)