fix(export): 修复检验项目导出时物料类别字段显示问题

- 将导出DTO中的materialTypeId字段改为materialTypeCode字符串类型
- 更新Excel列标题从"物料类别ID*"为"物料类别*"
- 在导出服务中通过关联查询获取物料类别编码并设置到导出对象
- 修复详情流处理中的物料类别赋值逻辑
- 清理VO转换中的多余空行代码格式化
This commit is contained in:
曹鹏飞 2026-06-10 14:52:07 +08:00
parent 76c3ee5a74
commit b400f0a1a7
2 changed files with 15 additions and 7 deletions

View File

@ -11,10 +11,10 @@ import org.ttzero.excel.annotation.MediaColumn;
public class QmsInspectionItemExportDTO {
/**
* 物料类别ID
* 物料类别
*/
@ExcelColumn("物料类别ID*")
private Long materialTypeId;
@ExcelColumn("物料类别*")
private String materialTypeCode;
/**
* 检测类型0=定向1=定量

View File

@ -247,12 +247,20 @@ public class QmsInspectionItemServiceImpl extends ServiceImpl<QmsInspectionItemM
}
List<QmsInspectionItem> items = query.orderByAsc(QmsInspectionItem::getCreateTime).list();
List<QmsQcMaterialCategory> categories= materialCategoryService.lambdaQuery()
.in(QmsQcMaterialCategory::getId, items.stream().map(QmsInspectionItem::getMaterialTypeId).collect(Collectors.toList()))
.list();
// 按主表记录展开到明细行一行一条明细无明细也输出主表行
return items.stream().flatMap(item -> {
List<QmsInspectionItemDetails> details = detailsService.listByItemId(item.getId());
QmsQcMaterialCategory category=categories.stream()
.filter(c -> c.getId().equals(item.getMaterialTypeId()))
.findFirst()
.get();
if (details.isEmpty()) {
QmsInspectionItemExportDTO dto = new QmsInspectionItemExportDTO();
dto.setMaterialTypeId(item.getMaterialTypeId());
dto.setMaterialTypeCode(category.getCategoryCode());
dto.setDetectionType(item.getDetectionType());
dto.setInspectionItemName(item.getInspectionItemName());
dto.setInspectionNo(item.getInspectionNo());
@ -260,7 +268,7 @@ public class QmsInspectionItemServiceImpl extends ServiceImpl<QmsInspectionItemM
}
return details.stream().map(d -> {
QmsInspectionItemExportDTO dto = new QmsInspectionItemExportDTO();
dto.setMaterialTypeId(item.getMaterialTypeId());
dto.setMaterialTypeCode(category.getCategoryCode());
dto.setDetectionType(item.getDetectionType());
dto.setInspectionItemName(item.getInspectionItemName());
dto.setInspectionNo(item.getInspectionNo());