From 02358e6f5169fc5991033812d3115657a57aa739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 23 Apr 2026 13:46:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(inspection-standard):=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E6=A3=80=E9=AA=8C=E6=A0=87=E5=87=86=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD=E4=BB=A5=E6=94=AF=E6=8C=81=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E6=96=B9=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改常量名称以反映检测方式字典代码更改 - 调整来料检验任务中检测方式相关逻辑,简化AQL规则生成流程 - 删减检验标准项中不再使用的检测方式相关字段 - 新增来料检验任务AQL规则服务接口及实现,支持规则分页查询与批量调整 - 修改数据库映射及实体,替换检验项ID为检验标准ID关联 - 优化检验标准详情填充检测方式、抽样方案、检验水平及AQL相关字段 - 增加检测方式为抽样时校验抽样方案、检验水平、AQL值及类型完整性 - 更新检验标准编辑参数,新增检测方式及相关字段支持 - 新增对应MyBatis XML映射文件和分页查询接口实现 - 提供AQL规则批量调整接口,支持前端调用调整规则数据 --- ...comingInspectionTaskAqlRuleController.java | 10 ++ ...comingInspectionTaskControllerService.java | 44 +++---- ...msInspectionStandardControllerService.java | 121 ++++++++++-------- .../nflg/wms/common/constant/Constant.java | 2 +- ...IncomingInspectionTaskAqlRuleAdjustQO.java | 26 ++++ .../qo/QmsIncomingInspectionTaskSearchQO.java | 10 ++ .../pojo/qo/QmsInspectionStandardEditQO.java | 26 ++++ .../pojo/qo/QmsInspectionStandardSaveQO.java | 46 ++++--- .../vo/QmsInspectionStandardDetailVO.java | 51 ++++++++ .../pojo/vo/QmsInspectionStandardItemVO.java | 41 ------ .../QmsIncomingInspectionTaskAqlRule.java | 4 +- .../entity/QmsInspectionStandard.java | 25 ++++ .../entity/QmsInspectionStandardItem.java | 27 +--- .../QmsSupplierInspectionStatistics.java | 4 +- ...sIncomingInspectionTaskAqlRuleService.java | 6 + ...omingInspectionTaskAqlRuleServiceImpl.java | 20 +++ ...QmsIncomingInspectionTaskAqlRuleMapper.xml | 2 +- .../QmsIncomingInspectionTaskMapper.xml | 6 + 18 files changed, 297 insertions(+), 174 deletions(-) create mode 100644 nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskAqlRuleAdjustQO.java diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskAqlRuleController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskAqlRuleController.java index ed22ace4..a82bca4d 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskAqlRuleController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsIncomingInspectionTaskAqlRuleController.java @@ -2,6 +2,7 @@ package com.nflg.qms.admin.controller; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.PageData; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleAdjustQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO; import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO; import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskAqlRuleService; @@ -30,4 +31,13 @@ public class QmsIncomingInspectionTaskAqlRuleController extends BaseController { public ApiResult> search(@Valid @RequestBody QmsIncomingInspectionTaskAqlRuleSearchQO request) { return ApiResult.success(incomingInspectionTaskAqlRuleService.search(request)); } + + /** + * 批量调整AQL规则 + */ + @PostMapping("adjust") + public ApiResult adjust(@Valid @RequestBody QmsIncomingInspectionTaskAqlRuleAdjustQO request) { + incomingInspectionTaskAqlRuleService.adjust(request); + return ApiResult.success(); + } } 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 60096311..a4268500 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 @@ -170,28 +170,18 @@ public class IncomingInspectionTaskControllerService { incomingInspectionTaskService.save(task); // 8. 生成来料检验任务AQL方案 - Long inspectionStandardId = dictionaryItemService.getIdByCode("InspectionStandardSamplingMethod", "Sampling"); + Long inspectionStandardId = dictionaryItemService.getIdByCode("InspectionStandardTestingMethod", "Sampling"); VUtil.trueThrowBusinessError(Objects.isNull(inspectionStandardId)).throwMessage("检测方式不存在"); - List inspectionStandardItems = inspectionStandardItemService.lambdaQuery() - .eq(QmsInspectionStandardItem::getInspectionStandardId, standard.getId()) - .eq(QmsInspectionStandardItem::getTestingMethodDictItemId, inspectionStandardId) - .orderByAsc(QmsInspectionStandardItem::getSortNo) - .list(); - if (!inspectionStandardItems.isEmpty()) { - incomingInspectionTaskAqlRuleService.saveBatch( - inspectionStandardItems.stream() - .map(item -> { - Pair aqlType = CalculatedAqlType(task, item - , dictionaryItemService.getListByDictionaryCode("InspectionStandardSQLType")); - return new QmsIncomingInspectionTaskAqlRule() - .setTaskId(task.getId()) - .setInspectionItemId(item.getId()) - .setCalculatedAqlType(aqlType.getLeft()) - .setUsedAqlType(aqlType.getLeft()) - .setTriggerCategory(aqlType.getRight()) - .setTriggerTime(LocalDateTime.now()); - }) - .toList() + if (Objects.equals(standard.getTestingMethodDictItemId(), inspectionStandardId)) { + Pair aqlType = CalculatedAqlType(task, standard + , dictionaryItemService.getListByDictionaryCode("InspectionStandardSQLType")); + incomingInspectionTaskAqlRuleService.save(new QmsIncomingInspectionTaskAqlRule() + .setTaskId(task.getId()) + .setInspectionStandardId(standard.getId()) + .setCalculatedAqlType(aqlType.getLeft()) + .setUsedAqlType(aqlType.getLeft()) + .setTriggerCategory(aqlType.getRight()) + .setTriggerTime(LocalDateTime.now()) ); } } @@ -200,26 +190,26 @@ public class IncomingInspectionTaskControllerService { return aqls.stream().filter(aql -> Objects.equals(aql.getId(), id)).findFirst().get(); } - private Pair CalculatedAqlType(QmsIncomingInspectionTask task, QmsInspectionStandardItem item + private Pair CalculatedAqlType(QmsIncomingInspectionTask task, QmsInspectionStandard standard , List aqls) { DictionaryItem sqlzc = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "正常")).findFirst().get(); DictionaryItem sqljy = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "加严")).findFirst().get(); DictionaryItem sqlfw = aqls.stream().filter(aql -> StrUtil.equals(aql.getCode(), "放宽")).findFirst().get(); - log.info("【抽样严格性转移规则计算】检验项严格性为:" + getAql(item.getAqlTypeDictItemId(), aqls).getName()); + log.info("【抽样严格性转移规则计算】检验项严格性为:" + getAql(standard.getAqlTypeDictItemId(), aqls).getName()); List statistics = supplierInspectionStatisticsService.lambdaQuery() - .eq(QmsSupplierInspectionStatistics::getInspectionItemId, item.getId()) + .eq(QmsSupplierInspectionStatistics::getInspectionStandardId, standard.getId()) .eq(QmsSupplierInspectionStatistics::getSupplierCode, task.getSupplierCode()) .orderByDesc(QmsSupplierInspectionStatistics::getId) .last("LIMIT 20") .list(); if (statistics.isEmpty()) { - log.info("【抽样严格性转移规则计算】历史检验记录为空,使用检验项严格性"); - return Pair.of(item.getAqlTypeDictItemId(), (short) 0); + log.info("【抽样严格性转移规则计算】历史检验记录为空,使用检验标准严格性"); + return Pair.of(standard.getAqlTypeDictItemId(), (short) 0); } else { QmsSupplierInspectionStatistics s1 = statistics.get(0); log.info("【抽样严格性转移规则计算】最新一次检验严格性为:" + getAql(s1.getAqlType(), aqls).getName()); LambdaQueryChainWrapper queryWrapper = samplingStrictnessTransferRuleService.lambdaQuery() - .eq(QmsSamplingStrictnessTransferRule::getSamplingPlanId, item.getSamplingPlanId()) + .eq(QmsSamplingStrictnessTransferRule::getSamplingPlanId, standard.getSamplingPlanId()) .eq(QmsSamplingStrictnessTransferRule::getIsEnabled, true); if (Objects.equals(s1.getAqlType(), sqljy.getId())) { log.info("【抽样严格性转移规则计算】检查是否符合 加严 => 正常 规则"); 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 5bc2be14..a2f6d02e 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 @@ -178,6 +178,44 @@ public class QmsInspectionStandardControllerService { detail.setUpdateUserName(standard.getUpdateUserName()); detail.setUpdateTime(standard.getUpdateTime()); + // 填充检测方式、抽样方案、检验水平、AQL相关字段 + detail.setTestingMethodDictItemId(standard.getTestingMethodDictItemId()); + detail.setSamplingPlanId(standard.getSamplingPlanId()); + detail.setInspectionLevelDictItemId(standard.getInspectionLevelDictItemId()); + detail.setAqlPriorityValueId(standard.getAqlPriorityValueId()); + detail.setAqlTypeDictItemId(standard.getAqlTypeDictItemId()); + // 填充字典项名称 + Set standardDictItemIds = new HashSet<>(); + if (standard.getTestingMethodDictItemId() != null) standardDictItemIds.add(standard.getTestingMethodDictItemId()); + if (standard.getInspectionLevelDictItemId() != null) standardDictItemIds.add(standard.getInspectionLevelDictItemId()); + if (standard.getAqlTypeDictItemId() != null) standardDictItemIds.add(standard.getAqlTypeDictItemId()); + if (!standardDictItemIds.isEmpty()) { + List standardDictItems = dictionaryItemService.lambdaQuery() + .in(DictionaryItem::getId, standardDictItemIds) + .list(); + detail.setTestingMethodDictItemName(standardDictItems.stream() + .filter(it -> it.getId().equals(standard.getTestingMethodDictItemId())) + .findFirst().map(DictionaryItem::getName).orElse(null)); + detail.setInspectionLevelDictItemName(standardDictItems.stream() + .filter(it -> it.getId().equals(standard.getInspectionLevelDictItemId())) + .findFirst().map(DictionaryItem::getName).orElse(null)); + detail.setAqlTypeDictItemName(standardDictItems.stream() + .filter(it -> it.getId().equals(standard.getAqlTypeDictItemId())) + .findFirst().map(DictionaryItem::getName).orElse(null)); + } + if (standard.getSamplingPlanId() != null) { + QmsSamplingPlan plan = samplingPlanService.getById(standard.getSamplingPlanId()); + if (plan != null) { + detail.setSamplingPlanName(plan.getPlanName()); + } + } + if (standard.getAqlPriorityValueId() != null) { + QmsAqlPriorityValue aql = aqlPriorityValueService.getById(standard.getAqlPriorityValueId()); + if (aql != null) { + detail.setAqlPriorityValue(aql.getPriorityValue()); + } + } + // 3. 查询检测项列表 List items = inspectionStandardItemService.lambdaQuery() .eq(QmsInspectionStandardItem::getInspectionStandardId, id) @@ -188,10 +226,7 @@ public class QmsInspectionStandardControllerService { 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()); }); List dictionaryItems = CollectionUtil.isEmpty(dictionaryItemIds) ? new ArrayList<>() @@ -227,13 +262,6 @@ public class QmsInspectionStandardControllerService { 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())) @@ -241,24 +269,6 @@ public class QmsInspectionStandardControllerService { .map(DictionaryItem::getName) .orElse(null) ); - vo.setSamplingPlanId(item.getSamplingPlanId()); - vo.setSamplingPlanName(samplingPlanService.getById(item.getSamplingPlanId()).getPlanName()); - 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(aqlPriorityValueService.getById(item.getAqlPriorityValueId()).getPriorityValue()); - 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()); @@ -398,6 +408,11 @@ public class QmsInspectionStandardControllerService { standard.setInspectionCycle(qo.getInspectionCycle()); standard.setVersion(qo.getVersion()); standard.setIsEnabled(qo.getIsEnabled()); + standard.setTestingMethodDictItemId(qo.getTestingMethodDictItemId()); + standard.setSamplingPlanId(qo.getSamplingPlanId()); + standard.setInspectionLevelDictItemId(qo.getInspectionLevelDictItemId()); + standard.setAqlPriorityValueId(qo.getAqlPriorityValueId()); + standard.setAqlTypeDictItemId(qo.getAqlTypeDictItemId()); // 审计字段 standard.setUpdateUserId(userId); standard.setUpdateUserName(userName); @@ -438,16 +453,6 @@ public class QmsInspectionStandardControllerService { .findFirst() .orElse(null); VUtil.trueThrowBusinessError(Objects.isNull(dictionaryItem)).throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式不存在"); - if (StrUtil.equals(dictionaryItem.getCode(), "抽样")) { - VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getSamplingPlanId())) - .throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时,抽样方案不能为空"); - VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getInspectionLevelDictItemId())) - .throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时,检验水平不能为空"); - VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getAqlPriorityValueId())) - .throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时,AQL值不能为空"); - VUtil.trueThrowBusinessError(Objects.isNull(itemQO.getAqlTypeDictItemId())) - .throwMessage("检测项【" + itemQO.getName() + "】设置的抽样方式为【抽样】时,AQL类型不能为空"); - } QmsInspectionStandardItem item; if (itemQO.getId() != null) { @@ -520,6 +525,24 @@ public class QmsInspectionStandardControllerService { .exists() ).throwMessage("存在相同版本的检验标准"); + // 检测方式为抽样时校验相关字段 + if (qo.getTestingMethodDictItemId() != null) { + List testingMethodItems = dictionaryItemService.lambdaQuery() + .eq(DictionaryItem::getId, qo.getTestingMethodDictItemId()) + .list(); + DictionaryItem testingMethod = testingMethodItems.isEmpty() ? null : testingMethodItems.get(0); + if (testingMethod != null && StrUtil.equals(testingMethod.getCode(), "抽样")) { + VUtil.trueThrowBusinessError(Objects.isNull(qo.getSamplingPlanId())) + .throwMessage("检测方式为【抽样】时,抽样方案不能为空"); + VUtil.trueThrowBusinessError(Objects.isNull(qo.getInspectionLevelDictItemId())) + .throwMessage("检测方式为【抽样】时,检验水平不能为空"); + VUtil.trueThrowBusinessError(Objects.isNull(qo.getAqlPriorityValueId())) + .throwMessage("检测方式为【抽样】时,AQL值不能为空"); + VUtil.trueThrowBusinessError(Objects.isNull(qo.getAqlTypeDictItemId())) + .throwMessage("检测方式为【抽样】时,AQL类型不能为空"); + } + } + // 3. 更新字段(不修改版本号) standard.setMaterialId(qo.getMaterialId()); standard.setDrawingUrl(qo.getDrawingUrl()); @@ -527,6 +550,11 @@ public class QmsInspectionStandardControllerService { standard.setInspectionCycle(qo.getInspectionCycle()); standard.setVersion(qo.getVersion()); standard.setIsEnabled(qo.getIsEnabled()); + standard.setTestingMethodDictItemId(qo.getTestingMethodDictItemId()); + standard.setSamplingPlanId(qo.getSamplingPlanId()); + standard.setInspectionLevelDictItemId(qo.getInspectionLevelDictItemId()); + standard.setAqlPriorityValueId(qo.getAqlPriorityValueId()); + standard.setAqlTypeDictItemId(qo.getAqlTypeDictItemId()); // 审计字段 standard.setUpdateUserId(userId); standard.setUpdateUserName(userName); @@ -535,7 +563,7 @@ public class QmsInspectionStandardControllerService { inspectionStandardService.updateById(standard); // 3. 处理检测项列表 - processItems(dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD), + processItems(dictionaryItemService.getListByDictionaryCode(Constant.INSPECTION_STANDARD_TESTING_METHOD), qo.getInspectionStandardId(), qo.getItems(), userId, userName, now); } @@ -551,24 +579,9 @@ public class QmsInspectionStandardControllerService { if (qo.getSortNo() != null) { item.setSortNo(qo.getSortNo()); } - if (qo.getTestingMethodDictItemId() != null) { - item.setTestingMethodDictItemId(qo.getTestingMethodDictItemId()); - } if (qo.getSamplingMethodDictItemId() != null) { item.setSamplingMethodDictItemId(qo.getSamplingMethodDictItemId()); } - if (qo.getSamplingPlanId() != null) { - item.setSamplingPlanId(qo.getSamplingPlanId()); - } - if (qo.getInspectionLevelDictItemId() != null) { - item.setInspectionLevelDictItemId(qo.getInspectionLevelDictItemId()); - } - if (qo.getAqlPriorityValueId() != null) { - item.setAqlPriorityValueId(qo.getAqlPriorityValueId()); - } - if (qo.getAqlTypeDictItemId() != null) { - item.setAqlTypeDictItemId(qo.getAqlTypeDictItemId()); - } if (qo.getItemType() != null) { item.setItemType(qo.getItemType()); } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java index 534e930f..4f8d0277 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java @@ -40,5 +40,5 @@ public class Constant { public static final String DICTIONARY_AD_POSITION ="AdvertisementPosition"; - public static final String DICTIONARY_INSPECTION_STANDARD_SAMPLING_METHOD ="InspectionStandardSamplingMethod"; + public static final String INSPECTION_STANDARD_TESTING_METHOD ="InspectionStandardTestingMethod"; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskAqlRuleAdjustQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskAqlRuleAdjustQO.java new file mode 100644 index 00000000..c9701ee4 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskAqlRuleAdjustQO.java @@ -0,0 +1,26 @@ +package com.nflg.wms.common.pojo.qo; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.List; + +/** + * 来料检验任务AQL规则 - 调整QO + */ +@Data +public class QmsIncomingInspectionTaskAqlRuleAdjustQO { + + /** + * 需要调整的AQL规则id列表 + */ + @NotEmpty(message = "AQL规则id列表不能为空") + private List ids; + + /** + * 使用的AQL类型,字典项id + */ + @NotNull(message = "使用的AQL类型不能为空") + private Long usedAqlType; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java index d08f5b7d..b99043da 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsIncomingInspectionTaskSearchQO.java @@ -72,6 +72,16 @@ public class QmsIncomingInspectionTaskSearchQO extends PageQO { */ private LocalDate submitEndDate; + /** + * 检验开始日期开始(检验开始时间) + */ + private LocalDate inspectionBeginStartDate; + + /** + * 检验开始日期结束(检验开始时间) + */ + private LocalDate inspectionBeginEndDate; + /** * 检测日期开始(检验完成时间) */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardEditQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardEditQO.java index ff327b3f..ed9f5b0d 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardEditQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/QmsInspectionStandardEditQO.java @@ -48,4 +48,30 @@ public class QmsInspectionStandardEditQO { * 检验周期 */ private Integer inspectionCycle; + + /** + * 检测方式,关联字典项id + */ + @NotNull(message = "检测方式不能为空") + private Long testingMethodDictItemId; + + /** + * 抽样方案ID + */ + private Long samplingPlanId; + + /** + * 检验水平,关联字典项id + */ + private Long inspectionLevelDictItemId; + + /** + * AQL值,关联AQL优先值预定义表id + */ + private Long aqlPriorityValueId; + + /** + * AQL类型,关联字典项id + */ + private Long aqlTypeDictItemId; } 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 fcee6fab..ef9642b6 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 @@ -54,6 +54,32 @@ public class QmsInspectionStandardSaveQO { @NotNull private Integer inspectionCycle; + /** + * 检测方式,关联字典项id + */ + @NotNull(message = "检测方式不能为空") + private Long testingMethodDictItemId; + + /** + * 抽样方案ID + */ + private Long samplingPlanId; + + /** + * 检验水平,关联字典项id + */ + private Long inspectionLevelDictItemId; + + /** + * AQL值,关联AQL优先值预定义表id + */ + private Long aqlPriorityValueId; + + /** + * AQL类型,关联字典项id + */ + private Long aqlTypeDictItemId; + /** * 检测项列表 */ @@ -94,26 +120,6 @@ public class QmsInspectionStandardSaveQO { @NotNull(message = "抽样方式不能为空") private Long samplingMethodDictItemId; - /** - * 抽样方案ID - */ - private Long samplingPlanId; - - /** - * 检验水平,关联字典项id - */ - private Long inspectionLevelDictItemId; - - /** - * AQL值,关联AQL优先值预定义表id - */ - private Long aqlPriorityValueId; - - /** - * AQL类型,关联字典项id - */ - private Long aqlTypeDictItemId; - /** * 检验标准项类型:0-标准检测项,1-尺寸检测项 */ 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 6afee328..62a5e24e 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 @@ -2,6 +2,7 @@ package com.nflg.wms.common.pojo.vo; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -66,6 +67,56 @@ public class QmsInspectionStandardDetailVO { */ private Integer inspectionCycle; + /** + * 检测方式字典项ID + */ + private Long testingMethodDictItemId; + + /** + * 检测方式字典项名称 + */ + private String testingMethodDictItemName; + + /** + * 抽样方案ID + */ + private Long samplingPlanId; + + /** + * 抽样方案名称 + */ + private String samplingPlanName; + + /** + * 检验水平字典项ID + */ + private Long inspectionLevelDictItemId; + + /** + * 检验水平字典项名称 + */ + private String inspectionLevelDictItemName; + + /** + * AQL值字典项ID + */ + private Long aqlPriorityValueId; + + /** + * AQL值 + */ + private BigDecimal aqlPriorityValue; + + /** + * AQL类型字典项ID + */ + private Long aqlTypeDictItemId; + + /** + * AQL类型字典项名称 + */ + private String aqlTypeDictItemName; + /** * 发布状态:0-未发布,1-已发布 */ 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 3e952dd3..ef460456 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 @@ -2,7 +2,6 @@ package com.nflg.wms.common.pojo.vo; import lombok.Data; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -47,46 +46,6 @@ public class QmsInspectionStandardItemVO { */ private String samplingMethodDictItemName; - /** - * 抽样方案ID - */ - private Long samplingPlanId; - - /** - * 抽样方案名称 - */ - private String samplingPlanName; - - /** - * 检验水平字典项ID - */ - private Long inspectionLevelDictItemId; - - /** - * 检验水平字典项名称 - */ - private String inspectionLevelDictItemName; - - /** - * AQL值ID - */ - private Long aqlPriorityValueId; - - /** - * AQL值 - */ - private BigDecimal aqlPriorityValueName; - - /** - * AQL类型字典项ID - */ - private Long aqlTypeDictItemId; - - /** - * AQL类型字典项名称 - */ - private String aqlTypeDictItemName; - /** * 检验标准项类型:0-标准检测项,1-尺寸检测项 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskAqlRule.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskAqlRule.java index 6679a96d..9c462ef0 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskAqlRule.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsIncomingInspectionTaskAqlRule.java @@ -32,9 +32,9 @@ public class QmsIncomingInspectionTaskAqlRule implements Serializable { private Long taskId; /** - * 检测项id,关联检验标准项表 + * 检验标准ID,关联检验标准表 */ - private Long inspectionItemId; + private Long inspectionStandardId; /** * 计算的AQL类型,字典项id 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 79327ad9..879a9f7a 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 @@ -56,6 +56,31 @@ public class QmsInspectionStandard implements Serializable { */ private Integer inspectionCycle; + /** + * 检测方式,关联字典项id(字典编码:InspectionStandardTestingMethod) + */ + private Long testingMethodDictItemId; + + /** + * 抽样方案ID + */ + private Long samplingPlanId; + + /** + * 检验水平,关联字典项id(字典编码:SamplingPlanSpecialInspection或SamplingPlanGeneralInspection) + */ + private Long inspectionLevelDictItemId; + + /** + * AQL值,关联AQL优先值预定义表id + */ + private Long aqlPriorityValueId; + + /** + * AQL类型,关联字典项id(字典编码:InspectionStandardSQLType) + */ + private Long aqlTypeDictItemId; + /** * 发布状态:0-未发布,1-已发布 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandardItem.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandardItem.java index 0d453e86..a0810eec 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandardItem.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsInspectionStandardItem.java @@ -42,35 +42,10 @@ public class QmsInspectionStandardItem implements Serializable { private Integer sortNo; /** - * 检测方式,关联字典项id(字典编码:InspectionStandardTestingMethod) - */ - private Long testingMethodDictItemId; - - /** - * 抽样方式,关联字典项id(字典编码:InspectionStandardSamplingMethod) + * 检测类型,关联字典项id(字典编码:InspectionStandardDetectionType) */ private Long samplingMethodDictItemId; - /** - * 抽样方案ID - */ - private Long samplingPlanId; - - /** - * 检验水平,关联字典项id(字典编码:SamplingPlanSpecialInspection或SamplingPlanGeneralInspection) - */ - private Long inspectionLevelDictItemId; - - /** - * AQL值,关联AQL优先值预定义表id - */ - private Long aqlPriorityValueId; - - /** - * AQL类型,关联字典项id(字典编码:InspectionStandardSQLType) - */ - private Long aqlTypeDictItemId; - /** * 检验标准项类型:0-标准检测项,1-尺寸检测项 */ diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsSupplierInspectionStatistics.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsSupplierInspectionStatistics.java index f391ffc8..55995ae9 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsSupplierInspectionStatistics.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/QmsSupplierInspectionStatistics.java @@ -34,9 +34,9 @@ public class QmsSupplierInspectionStatistics implements Serializable { private String supplierCode; /** - * 检测项id + * 检验标准ID */ - private Long inspectionItemId; + private Long inspectionStandardId; /** * 是否合格 diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskAqlRuleService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskAqlRuleService.java index 567e13f9..31b44d91 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskAqlRuleService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IQmsIncomingInspectionTaskAqlRuleService.java @@ -2,6 +2,7 @@ package com.nflg.wms.repository.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleAdjustQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO; import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO; import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskAqlRule; @@ -15,4 +16,9 @@ public interface IQmsIncomingInspectionTaskAqlRuleService extends IService search(QmsIncomingInspectionTaskAqlRuleSearchQO request); + + /** + * 批量调整AQL规则 + */ + void adjust(QmsIncomingInspectionTaskAqlRuleAdjustQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskAqlRuleServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskAqlRuleServiceImpl.java index 3ca6c14e..f9c9311e 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskAqlRuleServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/QmsIncomingInspectionTaskAqlRuleServiceImpl.java @@ -3,13 +3,17 @@ package com.nflg.wms.repository.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleAdjustQO; import com.nflg.wms.common.pojo.qo.QmsIncomingInspectionTaskAqlRuleSearchQO; import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskAqlRuleVO; +import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.repository.entity.QmsIncomingInspectionTaskAqlRule; import com.nflg.wms.repository.mapper.QmsIncomingInspectionTaskAqlRuleMapper; import com.nflg.wms.repository.service.IQmsIncomingInspectionTaskAqlRuleService; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; + /** * 来料检验任务AQL规则 服务实现类 */ @@ -20,4 +24,20 @@ public class QmsIncomingInspectionTaskAqlRuleServiceImpl extends ServiceImpl search(QmsIncomingInspectionTaskAqlRuleSearchQO request) { return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize())); } + + @Override + public void adjust(QmsIncomingInspectionTaskAqlRuleAdjustQO request) { + LocalDateTime now = LocalDateTime.now(); + Long userId = UserUtil.getUserId(); + String userName = UserUtil.getUserName(); + lambdaUpdate() + .ne(QmsIncomingInspectionTaskAqlRule::getUsedAqlType, request.getUsedAqlType()) + .in(QmsIncomingInspectionTaskAqlRule::getId, request.getIds()) + .set(QmsIncomingInspectionTaskAqlRule::getUsedAqlType, request.getUsedAqlType()) + .set(QmsIncomingInspectionTaskAqlRule::getTriggerCategory, (short) 2) + .set(QmsIncomingInspectionTaskAqlRule::getTriggerTime, now) + .set(QmsIncomingInspectionTaskAqlRule::getTriggerUserId, userId) + .set(QmsIncomingInspectionTaskAqlRule::getTriggerUserName, userName) + .update(); + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskAqlRuleMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskAqlRuleMapper.xml index eed9ea8d..1064dc69 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskAqlRuleMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskAqlRuleMapper.xml @@ -42,7 +42,7 @@ AND r.inspection_item_id = #{request.inspectionItemId} - ORDER BY r.id ASC + ORDER BY t.id ASC, r.id ASC diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml index 7a522a99..b033f5b4 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsIncomingInspectionTaskMapper.xml @@ -78,6 +78,12 @@ AND t.submit_time < #{request.submitEndDate} + INTERVAL '1 day' + + AND t.inspection_start_time >= #{request.inspectionBeginStartDate} + + + AND t.inspection_start_time < #{request.inspectionBeginEndDate} + INTERVAL '1 day' + AND t.inspection_finish_time >= #{request.inspectionStartDate}