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

View File

@ -1,5 +1,6 @@
package com.nflg.wms.common.pojo.qo; package com.nflg.wms.common.pojo.qo;
import com.nflg.wms.common.pojo.vo.FileUploadVO;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; 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; private Boolean qualified;
/** /**
* 图片列表多个逗号分隔 * 图片id列表多个逗号分隔
*/ */
private String images; private String images;
} }