Browse Source

针对存在子项目的主项目填充上级资金执行率

master
gjh 2 weeks ago
parent
commit
242af3dc16
  1. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java
  2. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java
  3. 77
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java

@ -141,6 +141,8 @@ public class HuzhouProjectController {
} }
@GetMapping("/queryProjectTimeOutInfo") @GetMapping("/queryProjectTimeOutInfo")
public Result<?> queryProjectTimeOutInfo(){ public Result<?> queryProjectTimeOutInfo(){
//获取项目入库数据 //获取项目入库数据

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java

@ -246,5 +246,7 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo> {
ProjectResultExportDTO queryProjectResultCount(); ProjectResultExportDTO queryProjectResultCount();
void fillSuperiorFundPayRateByChildren(List<HuzhouProjectinfo> projectInfoList);
} }

77
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -2869,7 +2869,8 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
.sorted(Comparator.comparing((HuzhouProjectinfo p) -> Optional.ofNullable(p.getReformName()).orElse("")) .sorted(Comparator.comparing((HuzhouProjectinfo p) -> Optional.ofNullable(p.getReformName()).orElse(""))
.thenComparing(p -> Optional.ofNullable(p.getCurrentStage()).orElse(""))) .thenComparing(p -> Optional.ofNullable(p.getCurrentStage()).orElse("")))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 存在子项目的重新计算上级资金执行率
this.fillSuperiorFundPayRateByChildren(projectInfoList);
stringRedisTemplate.opsForValue().set(redisKey, JSON.toJSONString(projectInfoList)); stringRedisTemplate.opsForValue().set(redisKey, JSON.toJSONString(projectInfoList));
stringRedisTemplate.expire(redisKey, CommonConstant.REDIS_EXPIRE_TIME, TimeUnit.MINUTES); stringRedisTemplate.expire(redisKey, CommonConstant.REDIS_EXPIRE_TIME, TimeUnit.MINUTES);
@ -3033,6 +3034,77 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return result; 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) { private void fillSuperiorFundPayRate(HuzhouProjectinfo projectInfo) {
String projectId = projectInfo.getId(); String projectId = projectInfo.getId();
@ -3197,7 +3269,8 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
Double provincialMoney = 0.0; Double provincialMoney = 0.0;
LambdaQueryWrapper<HuzhouContractinfo> qw = new LambdaQueryWrapper<>(); 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); List<HuzhouContractinfo> contractInfoList = contractinfoMapper.selectList(qw);
for (HuzhouContractinfo huzhouContractinfo : contractInfoList) { for (HuzhouContractinfo huzhouContractinfo : contractInfoList) {

Loading…
Cancel
Save