diff --git a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java index 6c1cc352..45ee1e0d 100644 --- a/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java +++ b/nflg-qms-admin/src/main/java/com/nflg/qms/admin/service/QmsIssueTicketControllerService.java @@ -66,6 +66,9 @@ public class QmsIssueTicketControllerService { @Resource private IQmsPdiInspectionResultsService pdiInspectionResultsService; + @Resource + private IQmsPdiDetectionRulesStatusItemService pdiStatusItemService; + @Resource private WmsIncomingInspectionTaskCallbackService wmsIncomingInspectionTaskCallbackService; @@ -525,6 +528,7 @@ public class QmsIssueTicketControllerService { processVO.setApprovalUserId(process.getApprovalUserId()); processVO.setApprovalUserName(process.getApprovalUserName()); processVO.setApprovalTime(process.getApprovalTime()); + processVO.setProcessTime(process.getApprovalTime()); processVO.setLeaderApprovalResult(process.getLeaderApprovalResult()); processVO.setLeaderApprovalOpinion(process.getLeaderApprovalOpinion()); processVO.setLeaderUserId(process.getLeaderUserId()); @@ -541,6 +545,45 @@ public class QmsIssueTicketControllerService { .eq(QmsPdiInspectionResults::getInspectionItemResults, false) .list(); + // 收集检测项ID(仅type=0/1/3) + Set statusItemIds = unqualifiedResults.stream() + .filter(r -> r.getInspectionItemType() != null && r.getInspectionItemType() != 2) + .map(QmsPdiInspectionResults::getInspectionItemId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 查询检测项信息 + Map statusItemMap = new HashMap<>(); + if (!statusItemIds.isEmpty()) { + List statusItems = pdiStatusItemService.lambdaQuery() + .in(QmsPdiDetectionRulesStatusItem::getId, statusItemIds) + .list(); + statusItemMap = statusItems.stream() + .collect(Collectors.toMap(QmsPdiDetectionRulesStatusItem::getId, s -> s, (a, b) -> a)); + } + + // 收集示例图ID + Set exampleImageIds = statusItemMap.values().stream() + .map(QmsPdiDetectionRulesStatusItem::getInspectionImage) + .filter(StrUtil::isNotBlank) + .flatMap(imageStr -> Arrays.stream(imageStr.split(","))) + .filter(StrUtil::isNotBlank) + .map(Long::valueOf) + .collect(Collectors.toSet()); + + // 查询示例图 + Map exampleImageMap = new HashMap<>(); + if (!exampleImageIds.isEmpty()) { + List records = fileUploadRecordService.lambdaQuery() + .in(FileUploadRecord::getId, exampleImageIds) + .list(); + exampleImageMap = records.stream() + .collect(Collectors.toMap(FileUploadRecord::getId, r -> r, (a, b) -> a)); + } + + final Map finalStatusItemMap = statusItemMap; + final Map finalExampleImageMap = exampleImageMap; + for (QmsPdiInspectionResults result : unqualifiedResults) { QmsPdiTicketDetailVO.UnqualifiedItemVO itemVO = new QmsPdiTicketDetailVO.UnqualifiedItemVO(); itemVO.setId(result.getId()); @@ -551,6 +594,29 @@ public class QmsIssueTicketControllerService { itemVO.setInspectorId(result.getInspectorId()); itemVO.setInspectionTime(result.getInspectionTime()); itemVO.setInspectionBy(result.getInspectionBy()); + + // 填充检测项信息(仅type=0/1/3) + if (result.getInspectionItemType() != null && result.getInspectionItemType() != 2) { + QmsPdiDetectionRulesStatusItem statusItem = finalStatusItemMap.get(result.getInspectionItemId()); + if (statusItem != null) { + itemVO.setComponentsDes(statusItem.getComponentsDes()); + itemVO.setInspectionContent(statusItem.getInspectionContent()); + // 解析示例图URL + if (StrUtil.isNotBlank(statusItem.getInspectionImage())) { + String exampleUrl = Arrays.stream(statusItem.getInspectionImage().split(",")) + .filter(StrUtil::isNotBlank) + .map(String::trim) + .map(Long::valueOf) + .map(finalExampleImageMap::get) + .filter(Objects::nonNull) + .map(FileUploadRecord::getUrl) + .findFirst() + .orElse(null); + itemVO.setInspectionExampleImage(exampleUrl); + } + } + } + unqualifiedItems.add(itemVO); } } @@ -626,6 +692,8 @@ public class QmsIssueTicketControllerService { List processVOList = processes.stream().map(process -> { QmsPdiTicketMyDetailVO.ProcessVO processVO = new QmsPdiTicketMyDetailVO.ProcessVO(); BeanUtil.copyProperties(process, processVO); + // 设置处理时间(使用审批时间) + processVO.setProcessTime(process.getApprovalTime()); // 查询该处理记录下的措施列表 List measures = issueTicketProcessMeasureService.lambdaQuery() 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 7b633dcf..5a5e3cbd 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 @@ -19,11 +19,13 @@ import com.nflg.wms.common.util.UserUtil; import com.nflg.wms.repository.entity.FileUploadRecord; import com.nflg.wms.repository.entity.QmsPdiDetectionRules; import com.nflg.wms.repository.entity.QmsPdiDetectionRulesDeliveryItem; +import com.nflg.wms.repository.entity.QmsPdiDetectionRulesStatusItem; import com.nflg.wms.repository.entity.QmsPdiInspectionResults; import com.nflg.wms.repository.entity.QmsPdiTaskRecord; import com.nflg.wms.repository.service.IFileUploadRecordService; import com.nflg.wms.repository.service.IQmsPdiDetectionRulesDeliveryItemService; import com.nflg.wms.repository.service.IQmsPdiDetectionRulesService; +import com.nflg.wms.repository.service.IQmsPdiDetectionRulesStatusItemService; import com.nflg.wms.repository.service.IQmsPdiInspectionResultsService; import com.nflg.wms.repository.service.IQmsPdiTaskRecordService; import jakarta.annotation.Resource; @@ -59,6 +61,9 @@ public class QmsPdiInspectionResultsControllerService { @Resource private IQmsPdiDetectionRulesDeliveryItemService deliveryItemService; + @Resource + private IQmsPdiDetectionRulesStatusItemService statusItemService; + @Resource private QmsPdiTaskRecordControllerService taskRecordControllerService; @@ -238,14 +243,14 @@ public class QmsPdiInspectionResultsControllerService { } /** - * 将 QmsPdiInspectionResults 列表转换为 QmsPdiInspectionResultVO 列表(图片转为List格式) + * 将 QmsPdiInspectionResults 列表转换为 QmsPdiInspectionResultVO 列表(图片转为List格式,补充检测项信息) */ private List buildInspectionResultVOList(List items) { if (items == null || items.isEmpty()) { return null; } - // 收集所有图片ID + // 收集所有现场图片ID Set imageIds = items.stream() .map(QmsPdiInspectionResults::getInspectionItemImage) .filter(cn.hutool.core.util.StrUtil::isNotBlank) @@ -254,7 +259,7 @@ public class QmsPdiInspectionResultsControllerService { .map(Long::valueOf) .collect(Collectors.toSet()); - // 查询图片文件信息 + // 查询现场图片文件信息 Map imageMap = new HashMap<>(); if (!imageIds.isEmpty()) { List records = fileUploadRecordService.lambdaQuery() @@ -264,8 +269,47 @@ public class QmsPdiInspectionResultsControllerService { .collect(Collectors.toMap(FileUploadRecord::getId, r -> r, (a, b) -> a)); } + // 收集所有检测项ID(仅type=0/1/3需要查询status_item) + Set statusItemIds = items.stream() + .filter(item -> item.getInspectionItemType() != null && item.getInspectionItemType() != 2) + .map(QmsPdiInspectionResults::getInspectionItemId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 查询检测项信息 + Map statusItemMap = new HashMap<>(); + if (!statusItemIds.isEmpty()) { + List statusItems = statusItemService.lambdaQuery() + .in(QmsPdiDetectionRulesStatusItem::getId, statusItemIds) + .list(); + statusItemMap = statusItems.stream() + .collect(Collectors.toMap(QmsPdiDetectionRulesStatusItem::getId, s -> s, (a, b) -> a)); + } + + // 收集所有示例图ID + Set exampleImageIds = statusItemMap.values().stream() + .map(QmsPdiDetectionRulesStatusItem::getInspectionImage) + .filter(cn.hutool.core.util.StrUtil::isNotBlank) + .flatMap(imageStr -> Arrays.stream(imageStr.split(","))) + .filter(cn.hutool.core.util.StrUtil::isNotBlank) + .map(Long::valueOf) + .collect(Collectors.toSet()); + + // 查询示例图文件信息 + Map exampleImageMap = new HashMap<>(); + if (!exampleImageIds.isEmpty()) { + List records = fileUploadRecordService.lambdaQuery() + .in(FileUploadRecord::getId, exampleImageIds) + .list(); + exampleImageMap = records.stream() + .collect(Collectors.toMap(FileUploadRecord::getId, r -> r, (a, b) -> a)); + } + // 构建返回值 final Map finalImageMap = imageMap; + final Map finalStatusItemMap = statusItemMap; + final Map finalExampleImageMap = exampleImageMap; + return items.stream().map(item -> { QmsPdiInspectionResultVO vo = new QmsPdiInspectionResultVO(); vo.setId(item.getId()); @@ -279,7 +323,29 @@ public class QmsPdiInspectionResultsControllerService { vo.setInspectionTime(item.getInspectionTime()); vo.setInspectionBy(item.getInspectionBy()); - // 解析图片为 FileDetailVO 列表 + // 填充检测项信息(仅type=0/1/3) + if (item.getInspectionItemType() != null && item.getInspectionItemType() != 2) { + QmsPdiDetectionRulesStatusItem statusItem = finalStatusItemMap.get(item.getInspectionItemId()); + if (statusItem != null) { + vo.setComponentsDes(statusItem.getComponentsDes()); + vo.setInspectionContent(statusItem.getInspectionContent()); + // 解析示例图URL + if (cn.hutool.core.util.StrUtil.isNotBlank(statusItem.getInspectionImage())) { + String exampleUrl = Arrays.stream(statusItem.getInspectionImage().split(",")) + .filter(cn.hutool.core.util.StrUtil::isNotBlank) + .map(String::trim) + .map(Long::valueOf) + .map(finalExampleImageMap::get) + .filter(Objects::nonNull) + .map(FileUploadRecord::getUrl) + .findFirst() + .orElse(null); + vo.setInspectionExampleImage(exampleUrl); + } + } + } + + // 解析现场图片为 FileDetailVO 列表 if (cn.hutool.core.util.StrUtil.isNotBlank(item.getInspectionItemImage())) { List imageList = Arrays.stream(item.getInspectionItemImage().split(",")) .filter(cn.hutool.core.util.StrUtil::isNotBlank) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultVO.java index cb991ef0..0b9564a1 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultVO.java @@ -36,6 +36,21 @@ public class QmsPdiInspectionResultVO { */ private Integer inspectionItemType; + /** + * 部件描述(仅type=0/1/3有) + */ + private String componentsDes; + + /** + * 检查核实内容(仅type=0/1/3有) + */ + private String inspectionContent; + + /** + * 检测示例图URL(仅type=0/1/3有) + */ + private String inspectionExampleImage; + /** * 检验现场图片详情列表 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java index 675895bc..9d913606 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiInspectionResultsPageVO.java @@ -54,4 +54,9 @@ public class QmsPdiInspectionResultsPageVO { * 质检状态:0=待检查,1=检验中,2=已完成,3=待流转 */ private Integer inspectionEnable; + + /** + * 是否超期 + */ + private Boolean overdue; } diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketDetailVO.java index 5a054017..6dbee3c3 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketDetailVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketDetailVO.java @@ -55,6 +55,21 @@ public class QmsPdiTicketDetailVO { */ private Integer inspectionItemType; + /** + * 部件描述(仅type=0/1/3有) + */ + private String componentsDes; + + /** + * 检查核实内容(仅type=0/1/3有) + */ + private String inspectionContent; + + /** + * 检测示例图URL(仅type=0/1/3有) + */ + private String inspectionExampleImage; + /** * 检验现场图片详情列表 */ @@ -144,6 +159,11 @@ public class QmsPdiTicketDetailVO { */ private LocalDateTime approvalTime; + /** + * 处理时间(使用审批时间) + */ + private LocalDateTime processTime; + /** * 上级领导审批结果:0=驳回,1=同意 */ diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java index 500ff2d5..0b56f9b9 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/QmsPdiTicketMyDetailVO.java @@ -188,6 +188,11 @@ public class QmsPdiTicketMyDetailVO { */ private LocalDateTime approvalTime; + /** + * 处理时间(使用审批时间) + */ + private LocalDateTime processTime; + /** * 上级领导审批结果:0=驳回,1=同意 */ diff --git a/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml b/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml index 85046063..3d3ef3db 100644 --- a/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/QmsPdiInspectionResultsMapper.xml @@ -13,7 +13,8 @@ r.inspection_version AS inspectionVersion, t.submission_time AS submissionTime, t.required_completion_time AS requiredCompletionTime, - t.inspection_enable AS inspectionEnable + t.inspection_enable AS inspectionEnable, + t.overdue FROM qms_pdi_task_record t LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id @@ -48,7 +49,8 @@ r.inspection_version AS inspectionVersion, t.submission_time AS submissionTime, t.required_completion_time AS requiredCompletionTime, - t.inspection_enable AS inspectionEnable + t.inspection_enable AS inspectionEnable, + t.overdue FROM qms_pdi_task_record t LEFT JOIN qms_pdi_detection_rules r ON r.id = t.detection_rules_id