feat(inspection): 丰富质检结果及工单详情的检测项信息和示例图展示
- 新增 IQmsPdiDetectionRulesStatusItemService 资源,支持检测项状态信息查询 - 在 QmsPdiInspectionResultsControllerService 中补充检测项部件描述、核实内容及示例图URL - 在 QmsIssueTicketControllerService 中完善不合格项详情填充检测项信息及示例图展示 - 新增处理时间字段 processTime,使用审批时间赋值以明确工单处理时点 - 扩展质检结果相关 VO 类,加入检测项描述、核实内容及示例图字段支持 - 修改数据库 Mapper,增加 overdue 字段支持质检任务超期标识 - 完善文件上传记录查询逻辑,增强示例图文件的关联与映射处理
This commit is contained in:
parent
d81aaea6e6
commit
858726758d
|
|
@ -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<Long> statusItemIds = unqualifiedResults.stream()
|
||||
.filter(r -> r.getInspectionItemType() != null && r.getInspectionItemType() != 2)
|
||||
.map(QmsPdiInspectionResults::getInspectionItemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 查询检测项信息
|
||||
Map<Long, QmsPdiDetectionRulesStatusItem> statusItemMap = new HashMap<>();
|
||||
if (!statusItemIds.isEmpty()) {
|
||||
List<QmsPdiDetectionRulesStatusItem> statusItems = pdiStatusItemService.lambdaQuery()
|
||||
.in(QmsPdiDetectionRulesStatusItem::getId, statusItemIds)
|
||||
.list();
|
||||
statusItemMap = statusItems.stream()
|
||||
.collect(Collectors.toMap(QmsPdiDetectionRulesStatusItem::getId, s -> s, (a, b) -> a));
|
||||
}
|
||||
|
||||
// 收集示例图ID
|
||||
Set<Long> 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<Long, FileUploadRecord> exampleImageMap = new HashMap<>();
|
||||
if (!exampleImageIds.isEmpty()) {
|
||||
List<FileUploadRecord> records = fileUploadRecordService.lambdaQuery()
|
||||
.in(FileUploadRecord::getId, exampleImageIds)
|
||||
.list();
|
||||
exampleImageMap = records.stream()
|
||||
.collect(Collectors.toMap(FileUploadRecord::getId, r -> r, (a, b) -> a));
|
||||
}
|
||||
|
||||
final Map<Long, QmsPdiDetectionRulesStatusItem> finalStatusItemMap = statusItemMap;
|
||||
final Map<Long, FileUploadRecord> 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<QmsPdiTicketMyDetailVO.ProcessVO> processVOList = processes.stream().map(process -> {
|
||||
QmsPdiTicketMyDetailVO.ProcessVO processVO = new QmsPdiTicketMyDetailVO.ProcessVO();
|
||||
BeanUtil.copyProperties(process, processVO);
|
||||
// 设置处理时间(使用审批时间)
|
||||
processVO.setProcessTime(process.getApprovalTime());
|
||||
|
||||
// 查询该处理记录下的措施列表
|
||||
List<QmsIssueTicketProcessMeasure> measures = issueTicketProcessMeasureService.lambdaQuery()
|
||||
|
|
|
|||
|
|
@ -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<QmsPdiInspectionResultVO> buildInspectionResultVOList(List<QmsPdiInspectionResults> items) {
|
||||
if (items == null || items.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 收集所有图片ID
|
||||
// 收集所有现场图片ID
|
||||
Set<Long> 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<Long, FileUploadRecord> imageMap = new HashMap<>();
|
||||
if (!imageIds.isEmpty()) {
|
||||
List<FileUploadRecord> 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<Long> statusItemIds = items.stream()
|
||||
.filter(item -> item.getInspectionItemType() != null && item.getInspectionItemType() != 2)
|
||||
.map(QmsPdiInspectionResults::getInspectionItemId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 查询检测项信息
|
||||
Map<Long, QmsPdiDetectionRulesStatusItem> statusItemMap = new HashMap<>();
|
||||
if (!statusItemIds.isEmpty()) {
|
||||
List<QmsPdiDetectionRulesStatusItem> statusItems = statusItemService.lambdaQuery()
|
||||
.in(QmsPdiDetectionRulesStatusItem::getId, statusItemIds)
|
||||
.list();
|
||||
statusItemMap = statusItems.stream()
|
||||
.collect(Collectors.toMap(QmsPdiDetectionRulesStatusItem::getId, s -> s, (a, b) -> a));
|
||||
}
|
||||
|
||||
// 收集所有示例图ID
|
||||
Set<Long> 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<Long, FileUploadRecord> exampleImageMap = new HashMap<>();
|
||||
if (!exampleImageIds.isEmpty()) {
|
||||
List<FileUploadRecord> records = fileUploadRecordService.lambdaQuery()
|
||||
.in(FileUploadRecord::getId, exampleImageIds)
|
||||
.list();
|
||||
exampleImageMap = records.stream()
|
||||
.collect(Collectors.toMap(FileUploadRecord::getId, r -> r, (a, b) -> a));
|
||||
}
|
||||
|
||||
// 构建返回值
|
||||
final Map<Long, FileUploadRecord> finalImageMap = imageMap;
|
||||
final Map<Long, QmsPdiDetectionRulesStatusItem> finalStatusItemMap = statusItemMap;
|
||||
final Map<Long, FileUploadRecord> 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<QmsPdiTaskRecordDetailVO.FileDetailVO> imageList = Arrays.stream(item.getInspectionItemImage().split(","))
|
||||
.filter(cn.hutool.core.util.StrUtil::isNotBlank)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
/**
|
||||
* 检验现场图片详情列表
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -54,4 +54,9 @@ public class QmsPdiInspectionResultsPageVO {
|
|||
* 质检状态:0=待检查,1=检验中,2=已完成,3=待流转
|
||||
*/
|
||||
private Integer inspectionEnable;
|
||||
|
||||
/**
|
||||
* 是否超期
|
||||
*/
|
||||
private Boolean overdue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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=同意
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -188,6 +188,11 @@ public class QmsPdiTicketMyDetailVO {
|
|||
*/
|
||||
private LocalDateTime approvalTime;
|
||||
|
||||
/**
|
||||
* 处理时间(使用审批时间)
|
||||
*/
|
||||
private LocalDateTime processTime;
|
||||
|
||||
/**
|
||||
* 上级领导审批结果:0=驳回,1=同意
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
<where>
|
||||
|
|
@ -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
|
||||
<where>
|
||||
|
|
|
|||
Loading…
Reference in New Issue