|
@@ -17,10 +17,7 @@ import thyyxxk.webserver.utils.ResultVoUtil;
|
|
import thyyxxk.webserver.utils.TokenUtil;
|
|
import thyyxxk.webserver.utils.TokenUtil;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.Comparator;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -45,6 +42,9 @@ public class YzChangeService {
|
|
List<YzChangeData> result = new ArrayList<>();
|
|
List<YzChangeData> result = new ArrayList<>();
|
|
dealYzChangeParam(param);
|
|
dealYzChangeParam(param);
|
|
List<YzChangeData> list = dao.listYzActOrder(param);
|
|
List<YzChangeData> list = dao.listYzActOrder(param);
|
|
|
|
+ // 调用groupFlag处理方法
|
|
|
|
+ processGroupFlags(list);
|
|
|
|
+
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
if (CollUtil.isNotEmpty(list)) {
|
|
result.addAll(list);
|
|
result.addAll(list);
|
|
}
|
|
}
|
|
@@ -62,6 +62,75 @@ public class YzChangeService {
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void processGroupFlags(List<YzChangeData> list) {
|
|
|
|
+ if (CollUtil.isEmpty(list)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 1. 建立映射关系:actOrderNo -> 元素(用于快速查找主项b)
|
|
|
|
+ Map<BigDecimal, YzChangeData> actOrderMap = new HashMap<>();
|
|
|
|
+ // 2. 建立映射关系:parentNo -> 子元素列表(用于快速查找主项b的所有子项)
|
|
|
|
+ Map<BigDecimal, List<YzChangeData>> childMap = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ // 初始化映射关系
|
|
|
|
+ for (YzChangeData item : list) {
|
|
|
|
+ // 建立actOrderNo到元素的映射(用于找主项b)
|
|
|
|
+ BigDecimal actOrderNo = item.getActOrderNo();
|
|
|
|
+ if (actOrderNo != null) {
|
|
|
|
+ actOrderMap.put(actOrderNo, item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 建立parentNo到子元素列表的映射(用于找b的子项)
|
|
|
|
+ BigDecimal parentNo = item.getParentNo();
|
|
|
|
+ if (parentNo != null) {
|
|
|
|
+ childMap.computeIfAbsent(parentNo, k -> new ArrayList<>()).add(item);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 记录已处理的主项actOrderNo,避免重复处理
|
|
|
|
+ Set<BigDecimal> processedMainActOrderNos = new HashSet<>();
|
|
|
|
+
|
|
|
|
+ // 遍历列表,寻找符合条件的元素a
|
|
|
|
+ for (YzChangeData a : list) {
|
|
|
|
+ String serial = a.getSerial();
|
|
|
|
+ BigDecimal parentNo = a.getParentNo();
|
|
|
|
+
|
|
|
|
+ // 判断元素a是否符合条件:serial为'01'或'99',且parentNo不为空
|
|
|
|
+ if (parentNo != null && ("01".equals(serial) || "99".equals(serial))) {
|
|
|
|
+ // 找到主项b:actOrderNo等于a的parentNo
|
|
|
|
+ YzChangeData b = actOrderMap.get(parentNo);
|
|
|
|
+ if (b == null) {
|
|
|
|
+ continue; // 主项b不存在,跳过处理
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 避免重复处理同一个主项b
|
|
|
|
+ if (processedMainActOrderNos.contains(b.getActOrderNo())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 3. 给主项b设置groupFlag为'┌'
|
|
|
|
+ b.setGroupFlag("┌");
|
|
|
|
+
|
|
|
|
+ // 4. 找到主项b的所有子项(parentNo等于b的actOrderNo的元素)
|
|
|
|
+ BigDecimal bActOrderNo = b.getActOrderNo();
|
|
|
|
+ List<YzChangeData> bChildren = childMap.getOrDefault(bActOrderNo, new ArrayList<>());
|
|
|
|
+
|
|
|
|
+ // 5. 处理子项的groupFlag:最后一个设为'└',其余设为'丨'
|
|
|
|
+ for (int i = 0; i < bChildren.size(); i++) {
|
|
|
|
+ YzChangeData child = bChildren.get(i);
|
|
|
|
+ if (i == bChildren.size() - 1) {
|
|
|
|
+ child.setGroupFlag("└");
|
|
|
|
+ } else {
|
|
|
|
+ child.setGroupFlag("丨");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 标记主项b已处理
|
|
|
|
+ processedMainActOrderNos.add(bActOrderNo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private void dealYzChangeParam(YzChangeParam param) {
|
|
private void dealYzChangeParam(YzChangeParam param) {
|
|
if(CollUtil.newArrayList(YzChangeParam.ChangeClassEnum.CQ_KF.getCode(),YzChangeParam.ChangeClassEnum.LS_KF.getCode()).contains(param.getChangeClass())){
|
|
if(CollUtil.newArrayList(YzChangeParam.ChangeClassEnum.CQ_KF.getCode(),YzChangeParam.ChangeClassEnum.LS_KF.getCode()).contains(param.getChangeClass())){
|
|
param.setTypeClass("1");
|
|
param.setTypeClass("1");
|