|
|
@ -2869,7 +2869,8 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
|
.sorted(Comparator.comparing((HuzhouProjectinfo p) -> Optional.ofNullable(p.getReformName()).orElse("")) |
|
|
|
.thenComparing(p -> Optional.ofNullable(p.getCurrentStage()).orElse(""))) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
// 存在子项目的重新计算上级资金执行率
|
|
|
|
this.fillSuperiorFundPayRateByChildren(projectInfoList); |
|
|
|
stringRedisTemplate.opsForValue().set(redisKey, JSON.toJSONString(projectInfoList)); |
|
|
|
stringRedisTemplate.expire(redisKey, CommonConstant.REDIS_EXPIRE_TIME, TimeUnit.MINUTES); |
|
|
|
|
|
|
@ -3033,6 +3034,77 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void fillSuperiorFundPayRateByChildren(List<HuzhouProjectinfo> projectInfoList) { |
|
|
|
List<HuzhouSubProjectinfo> records = subProjectinfoService.list(); |
|
|
|
// 获取子项目对应的 主项目id集合
|
|
|
|
List<String> hasSubProjectIds = records.stream() |
|
|
|
.map(HuzhouSubProjectinfo::getProjectId) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
// 对所有存在子项目的主项目进行填充上级资金执行率
|
|
|
|
List<HuzhouProjectinfo> waitFillProjectInfoList = new ArrayList<>(); |
|
|
|
waitFillProjectInfoList= projectInfoList.stream() |
|
|
|
.filter(project -> hasSubProjectIds.contains(project.getId())) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
waitFillProjectInfoList.forEach(item ->log.info("有子项目的项目名称:{}",item.getProjectName())); |
|
|
|
|
|
|
|
for (HuzhouProjectinfo projectInfo : waitFillProjectInfoList) { |
|
|
|
// 分子
|
|
|
|
Double totalCentralMoney =0.0; |
|
|
|
Double totalProvincialMoney =0.0; |
|
|
|
// 分母
|
|
|
|
Double totalContractProvincialMoney =0.0; |
|
|
|
Double totalContractCentralMoney =0.0; |
|
|
|
// 基本信息
|
|
|
|
String projectId = projectInfo.getId(); |
|
|
|
LambdaQueryWrapper<HuzhouSubProjectinfo> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
queryWrapper.eq(HuzhouSubProjectinfo::getProjectId,projectId); |
|
|
|
//获取对应的子项目数据
|
|
|
|
List<HuzhouSubProjectinfo> subProjectInfos = subProjectinfoMapper.selectList(queryWrapper); |
|
|
|
for (HuzhouSubProjectinfo subProjectInfo : subProjectInfos) { |
|
|
|
String subProjectName = subProjectInfo.getProjectName(); |
|
|
|
String subProjectId = subProjectInfo.getProjectId(); |
|
|
|
|
|
|
|
// 合同金额(实际)
|
|
|
|
Map<String, Double> actualFunds = calculateActualFunds(subProjectInfo.getId()); |
|
|
|
Double centralMoney = actualFunds.get("centralMoney"); |
|
|
|
Double provincialMoney = actualFunds.get("provincialMoney"); |
|
|
|
totalCentralMoney += centralMoney; |
|
|
|
totalProvincialMoney += provincialMoney; |
|
|
|
log.info("子项目名称:{}", subProjectName); |
|
|
|
log.info("合同金额(实际累加):{}+{}", totalCentralMoney,totalProvincialMoney); |
|
|
|
|
|
|
|
// 合同金额(计划)
|
|
|
|
Boolean flag = planinfoService.taskNameIsFinished(subProjectId); |
|
|
|
HuzhouProjectinfoMoney contractMoneyInfo = huzhouProjectinfoMoneyService.getById(subProjectId); |
|
|
|
|
|
|
|
if (contractMoneyInfo != null) { |
|
|
|
Double contractCentralMoney = contractMoneyInfo.getContractCentralMoney(); |
|
|
|
Double contractProvincialMoney = contractMoneyInfo.getContractProvincialMoney(); |
|
|
|
if (!flag){ |
|
|
|
contractCentralMoney = 0.0; |
|
|
|
contractProvincialMoney = 0.0; |
|
|
|
} |
|
|
|
totalContractCentralMoney += (contractCentralMoney != null ) ? contractCentralMoney : 0.0; |
|
|
|
totalContractProvincialMoney += (contractProvincialMoney != null ) ? contractProvincialMoney : 0.0; |
|
|
|
log.info("计划合同金额(中央+省级):{}--{}", contractCentralMoney, contractProvincialMoney); |
|
|
|
} |
|
|
|
if (totalContractProvincialMoney == 0.0 && totalContractCentralMoney == 0.0){ |
|
|
|
projectInfo.setSuperiorFundPayRate(0.0); |
|
|
|
}else { |
|
|
|
double rate = (totalCentralMoney + totalProvincialMoney) / (totalContractProvincialMoney + totalContractCentralMoney); |
|
|
|
double formattedRate = Math.round(rate * 100.0) / 100.0; |
|
|
|
int percentageRate = (int)(formattedRate * 100); |
|
|
|
projectInfo.setSuperiorFundPayRate((double) percentageRate); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
log.info("存在子项目的:{}:上级资金执行率:{}", projectInfo.getProjectName(), projectInfo.getSuperiorFundPayRate()); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void fillSuperiorFundPayRate(HuzhouProjectinfo projectInfo) { |
|
|
|
String projectId = projectInfo.getId(); |
|
|
@ -3197,7 +3269,8 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
|
Double provincialMoney = 0.0; |
|
|
|
|
|
|
|
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); |
|
|
|
qw.eq(HuzhouContractinfo::getProjectId, projectId).eq(HuzhouContractinfo::getFlag, "实际"); |
|
|
|
qw.eq(HuzhouContractinfo::getProjectId, projectId) |
|
|
|
.eq(HuzhouContractinfo::getFlag, "实际"); |
|
|
|
List<HuzhouContractinfo> contractInfoList = contractinfoMapper.selectList(qw); |
|
|
|
|
|
|
|
for (HuzhouContractinfo huzhouContractinfo : contractInfoList) { |
|
|
|