Browse Source

qms采集修改

master
shenzhouyu 4 weeks ago
parent
commit
3fe15180a0
  1. 6
      cclqms-java/src/main/java/com/gaotao/modules/pms/mapper/QcMapper.java
  2. 41
      cclqms-java/src/main/java/com/gaotao/modules/pms/service/Impl/EquipmentDataImportServiceImpl.java
  3. 41
      cclqms-java/src/main/resources/mapper/pms/QcMapper.xml

6
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<EquipmentDataDetail> 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);

41
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<Integer, List<EquipmentDataDetail>> 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<SubDetailValues> 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<Integer, List<EquipmentDataDetail>> 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<EquipmentDataDetail> columnRows = columnDataMap.getOrDefault(fileColumnNo, Collections.emptyList());
List<EquipmentDataDetail> validRows = columnRows.stream()
.filter(row -> StringUtils.isNotBlank(row.getValue0()))
.collect(Collectors.toList());
if (validRows.isEmpty()) {
List<EquipmentDataDetail> 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<SubDetailValues> 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<Integer, List<EquipmentDataDetail>> groupByColumn(List<EquipmentDataDetail> parsedRows) {
Map<Integer, List<EquipmentDataDetail>> 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;

41
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} <![CDATA[<>]]> ''
where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo}
<if test='collectionMethod == "plc"'>
AND inspection_no = #{inspectionNo}
</if>
@ -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} <![CDATA[<>]]> ''
where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo}
<if test='collectionMethod == "plc"'>
AND inspection_no = #{inspectionNo}
</if>
<if test='collectionMethod == "RS232"'>
AND (inspection_no is null or inspection_no = '')
</if>
<if test = "collectionDataContent != null and collectionDataContent != ''">
AND ${collectionSource} ${collectionDataContent}
</if>
and batch_no = (select MAX(batch_no) from Equipment_data_detail where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo})
</select>
@ -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} <![CDATA[<>]]> ''
where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo}
<if test = "collectionDataContent != null and collectionDataContent != ''">
AND ${collectionSource} ${collectionDataContent}
</if>
and batch_no = (select MAX(batch_no) from Equipment_data_detail where site = #{site} and bu_no = #{buNo} and equipment_no = #{equipmentNo})
</select>
@ -5663,6 +5669,35 @@
ORDER BY source_column_no, num
</select>
<!-- 按列号查询设备最新批次解析数据;collectionDataContent 非空时作为 value0 的 SQL 过滤条件 -->
<select id="listLatestEquipmentDataDetailByColumn" resultType="com.gaotao.modules.reader.entity.EquipmentDataDetail">
SELECT
id,
site,
bu_no AS buNo,
equipment_no AS equipmentNo,
value0,
source_column_no AS sourceColumnNo,
num,
serial_no AS serialNo,
batch_no AS batchNo,
file_name AS fileName
FROM Equipment_data_detail
WHERE site = #{site}
AND bu_no = #{buNo}
AND equipment_no = #{equipmentNo}
AND source_column_no = #{fileColumnNo}
AND batch_no = (
SELECT MAX(batch_no)
FROM Equipment_data_detail
WHERE site = #{site} AND bu_no = #{buNo} AND equipment_no = #{equipmentNo}
)
<if test="collectionDataContent != null and collectionDataContent != ''">
AND value0 ${collectionDataContent}
</if>
ORDER BY num
</select>
<!-- 数据采集后更新明细不合格数量与项目检验结果 -->
<update id="updateIQCDetailUnqualifiedResult" parameterType="com.gaotao.modules.pms.data.QcFAIRecordData">
UPDATE qc_iqc_detailed_record

Loading…
Cancel
Save