|
|
@ -1046,45 +1046,33 @@ public class SampleProofTrackingServiceImpl implements SampleProofTrackingServic |
|
|
} |
|
|
} |
|
|
return rows; |
|
|
return rows; |
|
|
} |
|
|
} |
|
|
Map<String, ProofTrackingProcessColumnData> buRowMap = new HashMap<>(); |
|
|
|
|
|
for (ProofTrackingProcessColumnData item : buRows) { |
|
|
|
|
|
if (item == null || isBlank(item.getCode())) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
String code = item.getCode().trim(); |
|
|
|
|
|
if (!buRowMap.containsKey(code)) { |
|
|
|
|
|
buRowMap.put(code, item); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
List<ProofTrackingProcessColumnData> rows = new ArrayList<>(); |
|
|
List<ProofTrackingProcessColumnData> rows = new ArrayList<>(); |
|
|
Set<String> usedCodeSet = new LinkedHashSet<>(); |
|
|
Set<String> usedCodeSet = new LinkedHashSet<>(); |
|
|
// 以默认工序顺序为骨架,BU 有配置时覆盖;缺失项继承默认配置,避免“不可见即消失”。 |
|
|
|
|
|
for (ProofTrackingProcessColumnData defaultRow : defaultRows) { |
|
|
|
|
|
if (defaultRow == null || isBlank(defaultRow.getCode())) { |
|
|
|
|
|
|
|
|
// 回显顺序以 BU 已保存的 sort_no 为准,避免弹窗重开后被默认顺序覆盖。 |
|
|
|
|
|
for (ProofTrackingProcessColumnData buRow : buRows) { |
|
|
|
|
|
if (buRow == null || isBlank(buRow.getCode())) { |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
String code = defaultRow.getCode().trim(); |
|
|
|
|
|
ProofTrackingProcessColumnData merged = buRowMap.get(code); |
|
|
|
|
|
if (merged == null) { |
|
|
|
|
|
merged = cloneProcessColumn(defaultRow); |
|
|
|
|
|
merged.setSite(site); |
|
|
|
|
|
merged.setBuNo(buNo); |
|
|
|
|
|
} else { |
|
|
|
|
|
merged = cloneProcessColumn(merged); |
|
|
|
|
|
|
|
|
String code = buRow.getCode().trim(); |
|
|
|
|
|
if (usedCodeSet.contains(code)) { |
|
|
|
|
|
continue; |
|
|
} |
|
|
} |
|
|
rows.add(merged); |
|
|
|
|
|
|
|
|
rows.add(cloneProcessColumn(buRow)); |
|
|
usedCodeSet.add(code); |
|
|
usedCodeSet.add(code); |
|
|
} |
|
|
} |
|
|
// 追加 BU 独有工序,确保定制工序不丢失。 |
|
|
|
|
|
for (ProofTrackingProcessColumnData buRow : buRows) { |
|
|
|
|
|
if (buRow == null || isBlank(buRow.getCode())) { |
|
|
|
|
|
|
|
|
// 默认工序仅用于补齐 BU 缺失项,确保新增工序不会在配置弹窗中丢失。 |
|
|
|
|
|
for (ProofTrackingProcessColumnData defaultRow : defaultRows) { |
|
|
|
|
|
if (defaultRow == null || isBlank(defaultRow.getCode())) { |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
String code = buRow.getCode().trim(); |
|
|
|
|
|
|
|
|
String code = defaultRow.getCode().trim(); |
|
|
if (usedCodeSet.contains(code)) { |
|
|
if (usedCodeSet.contains(code)) { |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
rows.add(cloneProcessColumn(buRow)); |
|
|
|
|
|
|
|
|
ProofTrackingProcessColumnData merged = cloneProcessColumn(defaultRow); |
|
|
|
|
|
merged.setSite(site); |
|
|
|
|
|
merged.setBuNo(buNo); |
|
|
|
|
|
rows.add(merged); |
|
|
usedCodeSet.add(code); |
|
|
usedCodeSet.add(code); |
|
|
} |
|
|
} |
|
|
return rows; |
|
|
return rows; |
|
|
|