|
@@ -29,6 +29,7 @@ import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
|
|
|
import org.springblade.manager.entity.*;
|
|
|
import org.springblade.manager.mapper.*;
|
|
|
import org.springblade.manager.service.IContractInfoService;
|
|
|
+import org.springblade.manager.utils.ComplexStringComparator;
|
|
|
import org.springblade.manager.vo.*;
|
|
|
import org.springblade.meter.entity.MeterContractInfo;
|
|
|
import org.springblade.meter.feign.MeterContractInfoClient;
|
|
@@ -836,7 +837,17 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
|
|
|
public List<WbsTreeContractTreeAllVO> buildWbsTreeByStreamByTreeAll(List<WbsTreeContractTreeAllVO> wbsTreeVO2s) {
|
|
|
List<WbsTreeContractTreeAllVO> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
|
|
|
- Map<Long, List<WbsTreeContractTreeAllVO>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractTreeAllVO::getParentId));
|
|
|
+ // 修改比较器链,处理空值情况
|
|
|
+ Comparator<WbsTreeContractTreeAllVO> safeComparator = Comparator
|
|
|
+ .comparing(WbsTreeContractTreeAllVO::getSort, Comparator.nullsFirst(Comparator.naturalOrder()))
|
|
|
+ .thenComparing(new ComplexStringComparator<>(obj ->
|
|
|
+ obj.getTitle() != null ? obj.getTitle() : ""))
|
|
|
+ .thenComparing(
|
|
|
+ WbsTreeContractTreeAllVO::getId,
|
|
|
+ Comparator.nullsLast(Comparator.reverseOrder()));
|
|
|
+ list.sort(safeComparator);
|
|
|
+ Map<Long, List<WbsTreeContractTreeAllVO>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractTreeAllVO::getParentId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), items -> items.stream().sorted(safeComparator).collect(Collectors.toList()))));
|
|
|
this.recursionFnTreeAll(list, map);
|
|
|
return list;
|
|
|
}
|
|
@@ -844,7 +855,16 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
|
|
|
String[] split = position.split("\\\\");
|
|
|
if (split.length > 1 && split[1] != null && !split[1].isEmpty()) {
|
|
|
List<WbsTreeContractTreeAllVO> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
|
|
|
- Map<Long, List<WbsTreeContractTreeAllVO>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractTreeAllVO::getParentId));
|
|
|
+ // 修改比较器链,处理空值情况
|
|
|
+ Comparator<WbsTreeContractTreeAllVO> safeComparator = Comparator
|
|
|
+ .comparing(WbsTreeContractTreeAllVO::getSort, Comparator.nullsFirst(Comparator.naturalOrder()))
|
|
|
+ .thenComparing(new ComplexStringComparator<>(obj ->
|
|
|
+ obj.getTitle() != null ? obj.getTitle() : ""))
|
|
|
+ .thenComparing(
|
|
|
+ WbsTreeContractTreeAllVO::getId,
|
|
|
+ Comparator.nullsLast(Comparator.reverseOrder()));
|
|
|
+ Map<Long, List<WbsTreeContractTreeAllVO>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractTreeAllVO::getParentId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), items -> items.stream().sorted(safeComparator).collect(Collectors.toList()))));
|
|
|
this.recursionFnTreeAll(list, map, split, 0);
|
|
|
return list;
|
|
|
}
|