|
|
@ -884,8 +884,9 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM |
|
|
|
@Autowired |
|
|
|
private BsSgcJsjdBuiProgressPlanService bsSgcJsjdBuiProgressPlanService; |
|
|
|
|
|
|
|
private Map<String, HashMap<String, BigDecimal>> map = new ConcurrentHashMap<>(); // 使用 ConcurrentHashMap 确保线程安全
|
|
|
|
|
|
|
|
public HashMap<String,HashMap<String,BigDecimal>>getSourceFundsNum(String year){ |
|
|
|
Map<String, HashMap<String, BigDecimal>> map = new ConcurrentHashMap<>(); |
|
|
|
SysUser sysUser = UserUtils.getUser(); |
|
|
|
String deptId = sysUser.getDeptId(); |
|
|
|
SysDept sysDept = sysDeptService.get(deptId); |
|
|
@ -919,8 +920,7 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM |
|
|
|
} else { |
|
|
|
HashMap<String, BigDecimal> stringBigDecimalHashMap = map.get(adcd); |
|
|
|
LambdaQueryWrapper<BsSgcJsjdBuiProgressPlan> lw = new LambdaQueryWrapper<>(); |
|
|
|
List<BsSgcJsjdBuiProgressPlan> bsSgcJsjdBuiProgressPlans = bsSgcJsjdBuiProgressPlanMapper.selectList(lw.eq(BsSgcJsjdBuiProgressPlan::getProNo, bs.getProNo()) |
|
|
|
.eq(BsSgcJsjdBuiProgressPlan::getPlanYear, year)); |
|
|
|
List<BsSgcJsjdBuiProgressPlan> bsSgcJsjdBuiProgressPlans = bsSgcJsjdBuiProgressPlanMapper.selectList(lw.eq(BsSgcJsjdBuiProgressPlan::getProNo, bs.getProNo())); |
|
|
|
for (BsSgcJsjdBuiProgressPlan pp : bsSgcJsjdBuiProgressPlans) { |
|
|
|
BigDecimal progressPlan = getProgressPlan(pp); |
|
|
|
BigDecimal actualCompletion = getActualCompletion(pp); |
|
|
@ -940,16 +940,19 @@ public class BsSgcjsjdBuiProInfoService extends BaseService<BsSgcjsjdBuiProInfoM |
|
|
|
} catch (InterruptedException e) { |
|
|
|
throw new RuntimeException(e); |
|
|
|
} |
|
|
|
HashMap<String, HashMap<String, BigDecimal>> sortedMap = map.entrySet() |
|
|
|
.stream() |
|
|
|
List<Map.Entry<String, HashMap<String, BigDecimal>>> entries = new ArrayList<>(map.entrySet()); |
|
|
|
|
|
|
|
// 使用 Stream API 对 List 进行排序,并获取最大的 10 个元素
|
|
|
|
List<Map.Entry<String, HashMap<String, BigDecimal>>> sortedEntries = entries.stream() |
|
|
|
.sorted((e1, e2) -> e2.getValue().get("actual").compareTo(e1.getValue().get("actual"))) |
|
|
|
.limit(10) |
|
|
|
.collect(Collectors.toMap( |
|
|
|
Map.Entry::getKey, |
|
|
|
Map.Entry::getValue, |
|
|
|
(existing, replacement) -> existing, |
|
|
|
LinkedHashMap::new // 保持插入顺序
|
|
|
|
)); |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
// 将排序后的 List 转换回 Map
|
|
|
|
HashMap<String, HashMap<String, BigDecimal>> sortedMap = new LinkedHashMap<>(); |
|
|
|
for (Map.Entry<String, HashMap<String, BigDecimal>> entry : sortedEntries) { |
|
|
|
sortedMap.put(entry.getKey(), entry.getValue()); |
|
|
|
} |
|
|
|
return sortedMap; |
|
|
|
} |
|
|
|
|
|
|
|