diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java index 9533d754..ce4bb0de 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiInspectionResultsController.java @@ -13,9 +13,11 @@ import com.nflg.wms.repository.entity.QmsPdiInspectionResults; import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskListVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO; +import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordSummaryVO; import com.nflg.wms.starter.BaseController; 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.*; @@ -83,4 +85,22 @@ public class QmsPdiInspectionResultsController extends BaseController { @Valid @RequestBody QmsPdiTaskRecordStatusItemDetailQO request) { return ApiResult.success(inspectionResultsControllerService.detail(request)); } + + /** + * 任务概要:基本信息 + 各类检测项数量统计 + */ + @GetMapping("summary") + public ApiResult summary( + @NotNull(message = "任务ID不能为空") @RequestParam Long id) { + return ApiResult.success(inspectionResultsControllerService.summary(id)); + } + + /** + * 发货前检测项详情(inspectionItemType=2),图片直接返回URL列表 + */ + @GetMapping("deliveryDetail") + public ApiResult> deliveryDetail( + @NotNull(message = "任务ID不能为空") @RequestParam Long id) { + return ApiResult.success(inspectionResultsControllerService.deliveryDetail(id)); + } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiTaskRecordController.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiTaskRecordController.java index fe803158..209c0def 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiTaskRecordController.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/controller/QmsPdiTaskRecordController.java @@ -10,7 +10,6 @@ import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordTransferQO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDefectPageVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordPageVO; -import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordSummaryVO; import com.nflg.wms.starter.BaseController; import jakarta.annotation.Resource; import jakarta.validation.Valid; @@ -82,22 +81,4 @@ public class QmsPdiTaskRecordController extends BaseController { @NotNull(message = "检测记录ID不能为空") @RequestParam Long id) { return ApiResult.success(taskRecordControllerService.getInspectionImages(id)); } - - /** - * 任务概要:基本信息 + 各类检测项数量统计 - */ - @GetMapping("summary") - public ApiResult summary( - @NotNull(message = "任务ID不能为空") @RequestParam Long id) { - return ApiResult.success(taskRecordControllerService.summary(id)); - } - - /** - * 发货前检测项详情(inspectionItemType=2),图片直接返回URL列表 - */ - @GetMapping("deliveryDetail") - public ApiResult> deliveryDetail( - @NotNull(message = "任务ID不能为空") @RequestParam Long id) { - return ApiResult.success(taskRecordControllerService.deliveryDetail(id)); - } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java index de533e08..de2c04b4 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiInspectionResultsControllerService.java @@ -13,9 +13,14 @@ import com.nflg.wms.common.pojo.qo.QmsPdiTaskRecordStatusItemDetailQO; import com.nflg.wms.common.pojo.vo.QmsPdiInspectionResultsPageVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskListVO; import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordDetailVO; +import com.nflg.wms.common.pojo.vo.QmsPdiTaskRecordSummaryVO; import com.nflg.wms.common.util.UserUtil; +import com.nflg.wms.repository.entity.QmsPdiDetectionRules; +import com.nflg.wms.repository.entity.QmsPdiDetectionRulesDeliveryItem; import com.nflg.wms.repository.entity.QmsPdiInspectionResults; import com.nflg.wms.repository.entity.QmsPdiTaskRecord; +import com.nflg.wms.repository.service.IQmsPdiDetectionRulesDeliveryItemService; +import com.nflg.wms.repository.service.IQmsPdiDetectionRulesService; import com.nflg.wms.repository.service.IQmsPdiInspectionResultsService; import com.nflg.wms.repository.service.IQmsPdiTaskRecordService; import jakarta.annotation.Resource; @@ -23,9 +28,12 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; /** @@ -40,6 +48,12 @@ public class QmsPdiInspectionResultsControllerService { @Resource private IQmsPdiTaskRecordService taskRecordService; + @Resource + private IQmsPdiDetectionRulesService detectionRulesService; + + @Resource + private IQmsPdiDetectionRulesDeliveryItemService deliveryItemService; + @Resource private QmsPdiTaskRecordControllerService taskRecordControllerService; @@ -267,4 +281,110 @@ public class QmsPdiInspectionResultsControllerService { public List detail(QmsPdiTaskRecordStatusItemDetailQO request) { return taskRecordControllerService.statusItemList(request.getId(), request.getInspectionItemType()); } + + // ========================= 任务概要 ========================= + + /** + * 查询任务概要信息:基本信息 + 各类检测项数量统计 + */ + public QmsPdiTaskRecordSummaryVO summary(Long taskId) { + QmsPdiTaskRecord task = taskRecordService.getById(taskId); + if (task == null) { + throw new NflgException(STATE.BusinessError, "任务记录不存在"); + } + + QmsPdiTaskRecordSummaryVO vo = new QmsPdiTaskRecordSummaryVO(); + vo.setTaskNo(task.getTaskNo()); + vo.setDeviceNo(task.getDeviceNo()); + vo.setOrderNo(task.getOrderNo()); + vo.setRequiredCompletionTime(task.getRequiredCompletionTime()); + + // 查询检测规则获取机型编号和检测版本 + if (task.getDetectionRulesId() != null) { + QmsPdiDetectionRules rules = detectionRulesService.getById(task.getDetectionRulesId()); + if (rules != null) { + vo.setMachineNo(rules.getMachineNo()); + vo.setInspectionVersion(rules.getInspectionVersion()); + } + } + + // 从 qms_pdi_inspection_results 按 inspection_item_type 分组统计 + List results = inspectionResultsService.lambdaQuery() + .eq(QmsPdiInspectionResults::getTaskId, taskId) + .list(); + + int staticCount = 0; + int dynamicCount = 0; + int specialCount = 0; + for (QmsPdiInspectionResults r : results) { + if (r.getInspectionItemType() == null) continue; + switch (r.getInspectionItemType()) { + case 0 -> staticCount++; + case 1 -> dynamicCount++; + case 3 -> specialCount++; + } + } + vo.setStaticItemCount(staticCount); + vo.setDynamicItemCount(dynamicCount); + vo.setSpecialItemCount(specialCount); + + return vo; + } + + // ========================= 发货前检测项详情 ========================= + + /** + * 查询发货前检测项(inspectionItemType=2),图片直接返回URL列表 + */ + public List deliveryDetail(Long taskId) { + // 查询该任务下所有 type=2 的记录 + List results = inspectionResultsService.lambdaQuery() + .eq(QmsPdiInspectionResults::getTaskId, taskId) + .eq(QmsPdiInspectionResults::getInspectionItemType, 2) + .list(); + + if (results.isEmpty()) { + return List.of(); + } + + // 批量查 delivery_item 获取 checklist + Set deliveryItemIds = results.stream() + .map(QmsPdiInspectionResults::getInspectionItemId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + Map deliveryItemMap = Map.of(); + if (!deliveryItemIds.isEmpty()) { + List deliveryItems = deliveryItemService.listByIds(deliveryItemIds); + deliveryItemMap = deliveryItems.stream() + .collect(Collectors.toMap(QmsPdiDetectionRulesDeliveryItem::getId, di -> di, (a, b) -> a)); + } + + // 构建返回列表 + Map finalMap = deliveryItemMap; + List detailList = new ArrayList<>(); + for (QmsPdiInspectionResults r : results) { + QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO vo = new QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO(); + vo.setDeliveryItemId(r.getInspectionItemId()); + + // checklist 从 delivery_item 获取 + QmsPdiDetectionRulesDeliveryItem di = finalMap.get(r.getInspectionItemId()); + if (di != null) { + vo.setChecklist(di.getChecklist()); + } + + // inspectionItemImage 按逗号拆分,直接返回URL列表 + String imageStr = r.getInspectionItemImage(); + if (imageStr != null && !imageStr.isEmpty()) { + vo.setInspectionItemImage(Arrays.stream(imageStr.split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toList())); + } else { + vo.setInspectionItemImage(List.of()); + } + + detailList.add(vo); + } + return detailList; + } } diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiTaskRecordControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiTaskRecordControllerService.java index cb6ec8f6..addae0ab 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiTaskRecordControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsPdiTaskRecordControllerService.java @@ -322,110 +322,4 @@ public class QmsPdiTaskRecordControllerService { } return convertImageIdsToVO(result.getInspectionItemImage()); } - - // ========================= 发货前检测项详情 ========================= - - /** - * 查询发货前检测项(inspectionItemType=2),图片直接返回URL列表 - */ - public List deliveryDetail(Long taskId) { - // 查询该任务下所有 type=2 的记录 - List results = inspectionResultsService.lambdaQuery() - .eq(QmsPdiInspectionResults::getTaskId, taskId) - .eq(QmsPdiInspectionResults::getInspectionItemType, 2) - .list(); - - if (results.isEmpty()) { - return List.of(); - } - - // 批量查 delivery_item 获取 checklist - Set deliveryItemIds = results.stream() - .map(QmsPdiInspectionResults::getInspectionItemId) - .filter(Objects::nonNull) - .collect(Collectors.toSet()); - Map deliveryItemMap = Map.of(); - if (!deliveryItemIds.isEmpty()) { - List deliveryItems = deliveryItemService.listByIds(deliveryItemIds); - deliveryItemMap = deliveryItems.stream() - .collect(Collectors.toMap(QmsPdiDetectionRulesDeliveryItem::getId, di -> di, (a, b) -> a)); - } - - // 构建返回列表 - Map finalMap = deliveryItemMap; - List detailList = new ArrayList<>(); - for (QmsPdiInspectionResults r : results) { - QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO vo = new QmsPdiTaskRecordDetailVO.DeliveryItemDetailVO(); - vo.setDeliveryItemId(r.getInspectionItemId()); - - // checklist 从 delivery_item 获取 - QmsPdiDetectionRulesDeliveryItem di = finalMap.get(r.getInspectionItemId()); - if (di != null) { - vo.setChecklist(di.getChecklist()); - } - - // inspectionItemImage 按逗号拆分,直接返回URL列表 - String imageStr = r.getInspectionItemImage(); - if (imageStr != null && !imageStr.isEmpty()) { - vo.setInspectionItemImage(Arrays.stream(imageStr.split(",")) - .map(String::trim) - .filter(s -> !s.isEmpty()) - .collect(Collectors.toList())); - } else { - vo.setInspectionItemImage(List.of()); - } - - detailList.add(vo); - } - return detailList; - } - - // ========================= 任务概要 ========================= - - /** - * 查询任务概要信息:基本信息 + 各类检测项数量统计 - */ - public QmsPdiTaskRecordSummaryVO summary(Long taskId) { - QmsPdiTaskRecord task = taskRecordService.getById(taskId); - if (task == null) { - throw new NflgException(STATE.BusinessError, "任务记录不存在"); - } - - QmsPdiTaskRecordSummaryVO vo = new QmsPdiTaskRecordSummaryVO(); - vo.setTaskNo(task.getTaskNo()); - vo.setDeviceNo(task.getDeviceNo()); - vo.setOrderNo(task.getOrderNo()); - vo.setRequiredCompletionTime(task.getRequiredCompletionTime()); - - // 查询检测规则获取机型编号和检测版本 - if (task.getDetectionRulesId() != null) { - QmsPdiDetectionRules rules = detectionRulesService.getById(task.getDetectionRulesId()); - if (rules != null) { - vo.setMachineNo(rules.getMachineNo()); - vo.setInspectionVersion(rules.getInspectionVersion()); - } - } - - // 从 qms_pdi_inspection_results 按 inspection_item_type 分组统计 - List results = inspectionResultsService.lambdaQuery() - .eq(QmsPdiInspectionResults::getTaskId, taskId) - .list(); - - int staticCount = 0; - int dynamicCount = 0; - int specialCount = 0; - for (QmsPdiInspectionResults r : results) { - if (r.getInspectionItemType() == null) continue; - switch (r.getInspectionItemType()) { - case 0 -> staticCount++; - case 1 -> dynamicCount++; - case 3 -> specialCount++; - } - } - vo.setStaticItemCount(staticCount); - vo.setDynamicItemCount(dynamicCount); - vo.setSpecialItemCount(specialCount); - - return vo; - } }