Browse Source

回显顺序以 BU 已保存的 sort_no 为准,避免弹窗重开后被默认顺序覆盖

master
han\hanst 2 weeks ago
parent
commit
34677d6a74
  1. 42
      src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java

42
src/main/java/com/xujie/sys/modules/sampletracking/service/impl/SampleProofTrackingServiceImpl.java

@ -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;

Loading…
Cancel
Save