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..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 @@ -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,59 @@ 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()); + inspectionStandardItem.setCreateUserId(userId); + inspectionStandardItem.setCreateUserName(userName); + inspectionStandardItem.setCreateTime(now); + 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 +424,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 +475,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 +552,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 +597,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 +792,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); 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, "无结果查询失败"); 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..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,23 +160,14 @@ AND (t.inspector_id = #{inspectorId} OR t.agent_id = #{inspectorId}) - - 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