From 3fe15180a031cb87a940c0489847b7155ab0635d Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Tue, 25 Aug 2026 11:28:38 +0800 Subject: [PATCH] =?UTF-8?q?qms=E9=87=87=E9=9B=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gaotao/modules/pms/mapper/QcMapper.java | 6 +++ .../Impl/EquipmentDataImportServiceImpl.java | 41 +++++-------------- .../main/resources/mapper/pms/QcMapper.xml | 41 +++++++++++++++++-- 3 files changed, 54 insertions(+), 34 deletions(-) diff --git a/cclqms-java/src/main/java/com/gaotao/modules/pms/mapper/QcMapper.java b/cclqms-java/src/main/java/com/gaotao/modules/pms/mapper/QcMapper.java index 2ce7097..34f233d 100644 --- a/cclqms-java/src/main/java/com/gaotao/modules/pms/mapper/QcMapper.java +++ b/cclqms-java/src/main/java/com/gaotao/modules/pms/mapper/QcMapper.java @@ -706,6 +706,12 @@ public interface QcMapper { @Param("buNo") String buNo, @Param("equipmentNo") String equipmentNo); + List listLatestEquipmentDataDetailByColumn(@Param("site") String site, + @Param("buNo") String buNo, + @Param("equipmentNo") String equipmentNo, + @Param("fileColumnNo") Integer fileColumnNo, + @Param("collectionDataContent") String collectionDataContent); + String getDefaultItemObjectId(@Param("site") String site, @Param("buNo") String buNo, @Param("itemNo") String itemNo); diff --git a/cclqms-java/src/main/java/com/gaotao/modules/pms/service/Impl/EquipmentDataImportServiceImpl.java b/cclqms-java/src/main/java/com/gaotao/modules/pms/service/Impl/EquipmentDataImportServiceImpl.java index c58f00a..d6bedc4 100644 --- a/cclqms-java/src/main/java/com/gaotao/modules/pms/service/Impl/EquipmentDataImportServiceImpl.java +++ b/cclqms-java/src/main/java/com/gaotao/modules/pms/service/Impl/EquipmentDataImportServiceImpl.java @@ -131,10 +131,9 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic } int fileMaxColumn = resolveFileMaxColumn(parsedRows); - Map> columnDataMap = groupByColumn(parsedRows); for (QcPartFileCollectData mapping : targetMappings) { - importMapping(data, mapping, target, fileMaxColumn, columnDataMap, accumulate); + importMapping(data, mapping, target, fileMaxColumn, accumulate); imported = true; } } @@ -293,12 +292,9 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic } for (SubDetailValues row : rows) { String acquiredValue = extractAcquiredValue(row, i); - if (StringUtils.isBlank(acquiredValue)) { - continue; - } SubDetailValues merged = mergedByNum.computeIfAbsent(row.getNum(), num -> newStandardSubDetail(data, target, num)); - applyAcquiredValue(merged, i, acquiredValue.trim()); + applyAcquiredValue(merged, i, acquiredValue != null ? acquiredValue.trim() : ""); } } @@ -309,13 +305,9 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic List fileNameRows = qcMapper.dataAcquisition(query); if (!CollectionUtils.isEmpty(fileNameRows)) { for (SubDetailValues row : fileNameRows) { - String fileName = StringUtils.trimToEmpty(row.getSubDetailValue()); - if (StringUtils.isBlank(fileName)) { - continue; - } SubDetailValues merged = mergedByNum.computeIfAbsent(row.getNum(), num -> newStandardSubDetail(data, target, num)); - merged.setFileName(fileName); + merged.setFileName(StringUtils.trimToEmpty(row.getSubDetailValue())); } } } @@ -387,8 +379,7 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic } private void importMapping(QcFAIRecordData data, QcPartFileCollectData mapping, ItemImportTarget target, - int fileMaxColumn, Map> columnDataMap, - boolean accumulate) { + int fileMaxColumn, boolean accumulate) { Integer fileColumnNo = mapping.getFileColumnNo(); if (fileColumnNo == null || fileColumnNo <= 0) { return; @@ -400,11 +391,10 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic String.format("项目【%s】对应列号【%d】不存在。", itemLabel, fileColumnNo), 400); } - List columnRows = columnDataMap.getOrDefault(fileColumnNo, Collections.emptyList()); - List validRows = columnRows.stream() - .filter(row -> StringUtils.isNotBlank(row.getValue0())) - .collect(Collectors.toList()); - if (validRows.isEmpty()) { + List columnRows = qcMapper.listLatestEquipmentDataDetailByColumn( + data.getSite(), data.getBuNo(), target.getEquipmentNo(), fileColumnNo, + target.getCollectionDataContent()); + if (columnRows.isEmpty()) { throw new XJException( String.format("项目【%s】未获取到有效数据。", itemLabel), 400); } @@ -414,13 +404,13 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic .anyMatch(COLLECTION_SOURCE_FILE_NAME::equalsIgnoreCase); List subDetails = new ArrayList<>(); - for (EquipmentDataDetail row : validRows) { + for (EquipmentDataDetail row : columnRows) { SubDetailValues sub = new SubDetailValues(); sub.setSite(data.getSite()); sub.setBuNo(data.getBuNo()); sub.setInspectionNo(data.getInspectionNo()); sub.setItemNo(mapping.getItemNo()); - sub.setSubDetailValue(row.getValue0().trim()); + sub.setSubDetailValue(row.getValue0() != null ? row.getValue0().trim() : ""); sub.setNum(row.getNum()); if (StringUtils.isNotBlank(row.getSerialNo())) { sub.setSamplingLocation(row.getSerialNo()); @@ -525,17 +515,6 @@ public class EquipmentDataImportServiceImpl implements EquipmentDataImportServic .orElse(0); } - private static Map> groupByColumn(List parsedRows) { - Map> map = new HashMap<>(); - for (EquipmentDataDetail row : parsedRows) { - if (row.getSourceColumnNo() == null || row.getSourceColumnNo() <= 0) { - continue; - } - map.computeIfAbsent(row.getSourceColumnNo(), k -> new ArrayList<>()).add(row); - } - return map; - } - private static class ItemImportTarget { private String itemNo; private String itemDesc; diff --git a/cclqms-java/src/main/resources/mapper/pms/QcMapper.xml b/cclqms-java/src/main/resources/mapper/pms/QcMapper.xml index 6028d3e..8dc84b1 100644 --- a/cclqms-java/src/main/resources/mapper/pms/QcMapper.xml +++ b/cclqms-java/src/main/resources/mapper/pms/QcMapper.xml @@ -3207,7 +3207,7 @@ #{collectionSource} as collectionSource, #{collectionMethod} as collectionMethod from Equipment_data_detail - where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo} and ${collectionSource} is not null and ${collectionSource} ]]> '' + where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo} AND inspection_no = #{inspectionNo} @@ -3235,13 +3235,16 @@ num, #{collectionSource} as collectionSource from Equipment_data_detail - where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo} and ${collectionSource} is not null and ${collectionSource} ]]> '' + where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo} AND inspection_no = #{inspectionNo} AND (inspection_no is null or inspection_no = '') + + AND ${collectionSource} ${collectionDataContent} + and batch_no = (select MAX(batch_no) from Equipment_data_detail where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo}) @@ -3253,7 +3256,10 @@ #{itemNo} as orderRef3, ${collectionSource} as url from Equipment_data_detail - where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo} and ${collectionSource} is not null and ${collectionSource} ]]> '' + where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo} + + AND ${collectionSource} ${collectionDataContent} + and batch_no = (select MAX(batch_no) from Equipment_data_detail where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo}) @@ -5663,6 +5669,35 @@ ORDER BY source_column_no, num + + + UPDATE qc_iqc_detailed_record