refactor(incoming-inspection): 优化检验记录图片上传与展示逻辑

- 新增依赖注入 IFileUploadRecordService 用于文件上传记录管理
- 注释掉来料检验任务检验记录的查询方法,暂时停止使用该方法
- 优化检验数据图片字段处理,保存时存储图片ID逗号分隔字符串
- 查询时根据图片ID列表查询文件详细信息并映射为 FileUploadVO 对象列表
- 更新相关实体及数据传输对象,图片字段由字符串列表改为 FileUploadVO 对象列表
- 调整导入语句,统一通配符导入 VO 包,添加注解 @Qualifier
- 修改图片列表字段注释,更准确描述为图片ID列表
This commit is contained in:
曹鹏飞 2026-04-25 13:45:19 +08:00
parent d6211aac84
commit 5464981d5f
5 changed files with 141 additions and 124 deletions

View File

@ -40,6 +40,7 @@ import java.util.zip.ZipOutputStream;
public class FileControllerService {
private final OkHttpClient client = new OkHttpClient();
@Resource
private IFileUploadRecordService fileUploadRecordService;

View File

@ -7,14 +7,7 @@ import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapp
import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskCheckDetailVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskCheckItemVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskCountVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordItemDataVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordItemDetailVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordItemVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskRecordVO;
import com.nflg.wms.common.pojo.vo.QmsIncomingInspectionTaskVO;
import com.nflg.wms.common.pojo.vo.*;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.*;
@ -23,6 +16,7 @@ import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -103,6 +97,9 @@ public class IncomingInspectionTaskControllerService {
@Resource
private IQmsInspectionStandardItemContentService inspectionStandardItemContentService;
@Resource
private IFileUploadRecordService fileUploadRecordService;
/**
* 来料检验申请对外接口
* 业务规则
@ -600,115 +597,115 @@ public class IncomingInspectionTaskControllerService {
.list();
}
/**
* 查询来料检验任务检验记录含检验项和检验数据
*/
public List<QmsIncomingInspectionTaskRecordVO> getInspectionRecords(Long taskId) {
// 1. 查询该任务下所有检验记录
List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
.eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
.list();
if (CollectionUtil.isEmpty(records)) {
return List.of();
}
// 2. 收集所有记录ID
List<Long> recordIds = records.stream()
.map(QmsIncomingInspectionTaskRecord::getId)
.toList();
// 3. 查询所有记录下的检验项
List<QmsIncomingInspectionTaskRecordItem> allItems = incomingInspectionTaskRecordItemService.lambdaQuery()
.in(QmsIncomingInspectionTaskRecordItem::getRecordId, recordIds)
.list();
// 4. 收集所有检验项ID并构建 recordId -> items 映射
Map<Long, List<QmsIncomingInspectionTaskRecordItem>> recordItemMap = allItems.stream()
.collect(Collectors.groupingBy(QmsIncomingInspectionTaskRecordItem::getRecordId));
// 5. 查询检验标准项内容获取检测项名称标准等信息
List<Long> contentIds = allItems.stream()
.map(QmsIncomingInspectionTaskRecordItem::getInspectionStandardItemContentId)
.filter(Objects::nonNull)
.distinct()
.toList();
Map<Long, QmsInspectionStandardItemContent> contentMap = Map.of();
if (!contentIds.isEmpty()) {
contentMap = inspectionStandardItemContentService.lambdaQuery()
.in(QmsInspectionStandardItemContent::getId, contentIds)
.list()
.stream()
.collect(Collectors.toMap(QmsInspectionStandardItemContent::getId, Function.identity()));
}
// 6. 查询所有检验项下的检验数据
List<Long> itemIds = allItems.stream()
.map(QmsIncomingInspectionTaskRecordItem::getId)
.toList();
Map<Long, List<QmsIncomingInspectionTaskRecordItemData>> itemDataMap = Map.of();
if (!itemIds.isEmpty()) {
itemDataMap = incomingInspectionTaskRecordItemDataService.lambdaQuery()
.in(QmsIncomingInspectionTaskRecordItemData::getItemId, itemIds)
.list()
.stream()
.collect(Collectors.groupingBy(QmsIncomingInspectionTaskRecordItemData::getItemId));
}
// 7. 组装返回VO
Map<Long, QmsInspectionStandardItemContent> finalContentMap = contentMap;
Map<Long, List<QmsIncomingInspectionTaskRecordItemData>> finalItemDataMap = itemDataMap;
return records.stream().map(record -> {
QmsIncomingInspectionTaskRecordVO vo = new QmsIncomingInspectionTaskRecordVO();
vo.setId(record.getId());
vo.setTaskId(record.getTaskId());
vo.setMaterialUniqueNo(record.getMaterialUniqueNo());
vo.setQualified(record.getQualified());
vo.setInspectionQty(record.getInspectionQty());
vo.setQualifiedQty(record.getQualifiedQty());
vo.setUnqualifiedQty(record.getUnqualifiedQty());
vo.setCreateUserId(record.getCreateUserId());
vo.setCreateUserName(record.getCreateUserName());
vo.setCreateTime(record.getCreateTime());
// 组装检验项
List<QmsIncomingInspectionTaskRecordItem> items = recordItemMap.getOrDefault(record.getId(), List.of());
List<QmsIncomingInspectionTaskRecordItemVO> itemVOs = items.stream().map(item -> {
QmsIncomingInspectionTaskRecordItemVO itemVO = new QmsIncomingInspectionTaskRecordItemVO();
itemVO.setId(item.getId());
itemVO.setRecordId(item.getRecordId());
itemVO.setInspectionStandardItemContentId(item.getInspectionStandardItemContentId());
itemVO.setRemark(item.getRemark());
// 填充检验标准项内容信息
QmsInspectionStandardItemContent content = finalContentMap.get(item.getInspectionStandardItemContentId());
if (content != null) {
itemVO.setName(content.getName());
itemVO.setTestStandard(content.getTestStandard());
itemVO.setJudgmentType(content.getJudgmentType());
}
// 组装检验数据
List<QmsIncomingInspectionTaskRecordItemData> datas = finalItemDataMap.getOrDefault(item.getId(), List.of());
List<QmsIncomingInspectionTaskRecordItemDataVO> dataVOs = datas.stream().map(data -> {
QmsIncomingInspectionTaskRecordItemDataVO dataVO = new QmsIncomingInspectionTaskRecordItemDataVO();
dataVO.setId(data.getId());
dataVO.setTaskId(data.getTaskId());
dataVO.setItemId(data.getItemId());
dataVO.setMeasuredValue(data.getMeasuredValue());
dataVO.setQualified(data.getQualified());
dataVO.setImages(StrUtil.isNotBlank(data.getImages())
? List.of(data.getImages().split(","))
: List.of());
return dataVO;
}).toList();
itemVO.setDatas(dataVOs);
return itemVO;
}).toList();
vo.setItems(itemVOs);
return vo;
}).toList();
}
// /**
// * 查询来料检验任务检验记录含检验项和检验数据
// */
// public List<QmsIncomingInspectionTaskRecordVO> getInspectionRecords(Long taskId) {
// // 1. 查询该任务下所有检验记录
// List<QmsIncomingInspectionTaskRecord> records = incomingInspectionTaskRecordService.lambdaQuery()
// .eq(QmsIncomingInspectionTaskRecord::getTaskId, taskId)
// .list();
//
// if (CollectionUtil.isEmpty(records)) {
// return List.of();
// }
//
// // 2. 收集所有记录ID
// List<Long> recordIds = records.stream()
// .map(QmsIncomingInspectionTaskRecord::getId)
// .toList();
//
// // 3. 查询所有记录下的检验项
// List<QmsIncomingInspectionTaskRecordItem> allItems = incomingInspectionTaskRecordItemService.lambdaQuery()
// .in(QmsIncomingInspectionTaskRecordItem::getRecordId, recordIds)
// .list();
//
// // 4. 收集所有检验项ID并构建 recordId -> items 映射
// Map<Long, List<QmsIncomingInspectionTaskRecordItem>> recordItemMap = allItems.stream()
// .collect(Collectors.groupingBy(QmsIncomingInspectionTaskRecordItem::getRecordId));
//
// // 5. 查询检验标准项内容获取检测项名称标准等信息
// List<Long> contentIds = allItems.stream()
// .map(QmsIncomingInspectionTaskRecordItem::getInspectionStandardItemContentId)
// .filter(Objects::nonNull)
// .distinct()
// .toList();
// Map<Long, QmsInspectionStandardItemContent> contentMap = Map.of();
// if (!contentIds.isEmpty()) {
// contentMap = inspectionStandardItemContentService.lambdaQuery()
// .in(QmsInspectionStandardItemContent::getId, contentIds)
// .list()
// .stream()
// .collect(Collectors.toMap(QmsInspectionStandardItemContent::getId, Function.identity()));
// }
//
// // 6. 查询所有检验项下的检验数据
// List<Long> itemIds = allItems.stream()
// .map(QmsIncomingInspectionTaskRecordItem::getId)
// .toList();
// Map<Long, List<QmsIncomingInspectionTaskRecordItemData>> itemDataMap = Map.of();
// if (!itemIds.isEmpty()) {
// itemDataMap = incomingInspectionTaskRecordItemDataService.lambdaQuery()
// .in(QmsIncomingInspectionTaskRecordItemData::getItemId, itemIds)
// .list()
// .stream()
// .collect(Collectors.groupingBy(QmsIncomingInspectionTaskRecordItemData::getItemId));
// }
//
// // 7. 组装返回VO
// Map<Long, QmsInspectionStandardItemContent> finalContentMap = contentMap;
// Map<Long, List<QmsIncomingInspectionTaskRecordItemData>> finalItemDataMap = itemDataMap;
// return records.stream().map(record -> {
// QmsIncomingInspectionTaskRecordVO vo = new QmsIncomingInspectionTaskRecordVO();
// vo.setId(record.getId());
// vo.setTaskId(record.getTaskId());
// vo.setMaterialUniqueNo(record.getMaterialUniqueNo());
// vo.setQualified(record.getQualified());
// vo.setInspectionQty(record.getInspectionQty());
// vo.setQualifiedQty(record.getQualifiedQty());
// vo.setUnqualifiedQty(record.getUnqualifiedQty());
// vo.setCreateUserId(record.getCreateUserId());
// vo.setCreateUserName(record.getCreateUserName());
// vo.setCreateTime(record.getCreateTime());
//
// // 组装检验项
// List<QmsIncomingInspectionTaskRecordItem> items = recordItemMap.getOrDefault(record.getId(), List.of());
// List<QmsIncomingInspectionTaskRecordItemVO> itemVOs = items.stream().map(item -> {
// QmsIncomingInspectionTaskRecordItemVO itemVO = new QmsIncomingInspectionTaskRecordItemVO();
// itemVO.setId(item.getId());
// itemVO.setRecordId(item.getRecordId());
// itemVO.setInspectionStandardItemContentId(item.getInspectionStandardItemContentId());
// itemVO.setRemark(item.getRemark());
//
// // 填充检验标准项内容信息
// QmsInspectionStandardItemContent content = finalContentMap.get(item.getInspectionStandardItemContentId());
// if (content != null) {
// itemVO.setName(content.getName());
// itemVO.setTestStandard(content.getTestStandard());
// itemVO.setJudgmentType(content.getJudgmentType());
// }
//
// // 组装检验数据
// List<QmsIncomingInspectionTaskRecordItemData> datas = finalItemDataMap.getOrDefault(item.getId(), List.of());
// List<QmsIncomingInspectionTaskRecordItemDataVO> dataVOs = datas.stream().map(data -> {
// QmsIncomingInspectionTaskRecordItemDataVO dataVO = new QmsIncomingInspectionTaskRecordItemDataVO();
// dataVO.setId(data.getId());
// dataVO.setTaskId(data.getTaskId());
// dataVO.setItemId(data.getItemId());
// dataVO.setMeasuredValue(data.getMeasuredValue());
// dataVO.setQualified(data.getQualified());
// dataVO.setImages(StrUtil.isNotBlank(data.getImages())
// ? List.of(data.getImages().split(","))
// : List.of());
// return dataVO;
// }).toList();
// itemVO.setDatas(dataVOs);
// return itemVO;
// }).toList();
// vo.setItems(itemVOs);
// return vo;
// }).toList();
// }
public QmsIncomingInspectionTaskCheckDetailVO getItemsForCheck(@Valid QmsIncomingInspectionTaskTodoCheckItemsQO request) {
QmsIncomingInspectionTask task = incomingInspectionTaskService.getById(request.getTaskId());
@ -799,7 +796,14 @@ public class IncomingInspectionTaskControllerService {
.setItemId(ditem.getId())
.setQualified(data.getQualified())
.setMeasuredValue(data.getMeasuredValue())
.setImages(StrUtil.join(",",data.getImages()));
.setImages(
StrUtil.join(",",
data.getImages()
.stream()
.map(FileUploadVO::getId)
.toList()
)
);
incomingInspectionTaskRecordItemDataService.saveOrUpdate(ddata);
});
});
@ -1001,9 +1005,20 @@ public class IncomingInspectionTaskControllerService {
dataVO.setItemId(data.getItemId());
dataVO.setMeasuredValue(data.getMeasuredValue());
dataVO.setQualified(data.getQualified());
dataVO.setImages(StrUtil.isNotBlank(data.getImages())
? List.of(data.getImages().split(","))
: List.of());
if (StrUtil.isNotBlank(data.getImages())) {
dataVO.setImages(
fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, StrUtil.split(data.getImages(), ","))
.list()
.stream()
.map(file -> new FileUploadVO()
.setId(file.getId())
.setFileName(file.getFileName())
.setUrl(file.getUrl())
)
.collect(Collectors.toList())
);
}
return dataVO;
}).toList();
vo.setDatas(dataVOs);

View File

@ -1,5 +1,6 @@
package com.nflg.wms.common.pojo.qo;
import com.nflg.wms.common.pojo.vo.FileUploadVO;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@ -25,5 +26,5 @@ public class QmsIncomingInspectionTaskTodoCheckSubmitItemDataQO {
/**
* 图片列表
*/
private List<String> images;
private List<FileUploadVO> images;
}

View File

@ -36,5 +36,5 @@ public class QmsIncomingInspectionTaskRecordItemDataVO {
/**
* 图片列表
*/
private List<String> images;
private List<FileUploadVO> images;
}

View File

@ -49,7 +49,7 @@ public class QmsIncomingInspectionTaskRecordItemData {
private Boolean qualified;
/**
* 图片列表多个逗号分隔
* 图片id列表多个逗号分隔
*/
private String images;
}