Browse Source

上传合同金额校验,针对同阶段多笔交易进行修改

master
gjh 3 months ago
parent
commit
c5f811ea0d
  1. 45
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java
  2. 24
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

45
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouContractinfoServiceImpl.java

@ -493,25 +493,54 @@ public class HuzhouContractinfoServiceImpl extends ServiceImpl<HuzhouContractinf
List<HuzhouContractinfo> planContractInfoList = contractinfoService.getPlanContractinfoByprojectId(contractInfo.getProjectId()); List<HuzhouContractinfo> planContractInfoList = contractinfoService.getPlanContractinfoByprojectId(contractInfo.getProjectId());
// 合同实际金额(contractList) <= 计划金额 (planContractInfoList) // 合同实际金额(contractList) <= 计划金额 (planContractInfoList)
// [{"projectId":"1828610662885105665","payDate":"2025-02-13","taskName":"首付支付","totalMoney":600,"centralMoney":600,"provincialMoney":0,"cityMoney":0,"countyMoney":0,"selfMoney":0}] // [{"projectId":"1828610662885105665","payDate":"2025-02-13","taskName":"首付支付","totalMoney":600,"centralMoney":600,"provincialMoney":0,"cityMoney":0,"countyMoney":0,"selfMoney":0}]
if (planContractInfoList.size() > 0){
if (planContractInfoList.size() > 0) {
// 存在计划金额则比较实际金额 // 存在计划金额则比较实际金额
Map<String, HuzhouContractinfo> realContractMap = new HashMap<>(); Map<String, List<HuzhouContractinfo>> realContractMap = new HashMap<>();
for (HuzhouContractinfo realContract : contractList) { for (HuzhouContractinfo realContract : contractList) {
realContractMap.put(realContract.getTaskName(), realContract); // 使用 computeIfAbsent 方法确保每个任务名称都有一个对应的列表
realContractMap.computeIfAbsent(realContract.getTaskName(), k -> new ArrayList<>())
.add(realContract); // 将当前合同添加到列表中
} }
// 遍历计划合同信息列表,并比较实际金额和计划金额
for (HuzhouContractinfo planContractInfo : planContractInfoList) { for (HuzhouContractinfo planContractInfo : planContractInfoList) {
HuzhouContractinfo realContract = realContractMap.get(planContractInfo.getTaskName()); String taskNameFromContract = planContractInfo.getTaskName();
if ( realContract != null){ List<HuzhouContractinfo> realContracts = realContractMap.get(taskNameFromContract);
if ( realContract.getTotalMoney() >planContractInfo.getTotalMoney() ) {
if (realContracts != null && !realContracts.isEmpty()) {
// 对实际合同信息列表按 payDate 排序
realContracts.sort(Comparator.comparing(HuzhouContractinfo::getPayDate));
// 假设计划合同信息列表也需要按某种顺序排序,这里假设也是按 payDate
List<HuzhouContractinfo> sortedPlanContracts = planContractInfoList.stream()
.filter(contract -> contract.getTaskName().equals(taskNameFromContract))
.sorted(Comparator.comparing(HuzhouContractinfo::getPayDate))
.collect(Collectors.toList());
// 同步遍历两个列表进行比较
for (int i = 0; i < Math.min(realContracts.size(), sortedPlanContracts.size()); i++) {
HuzhouContractinfo realContract = realContracts.get(i);
HuzhouContractinfo planContract = sortedPlanContracts.get(i);
Double RealTotalMoney = realContract.getTotalMoney();
Double PlanTotalMoney = planContract.getTotalMoney();
log.info("real:{}--->plan:{}", RealTotalMoney, PlanTotalMoney);
if (RealTotalMoney > PlanTotalMoney) {
throw new EasyException("合同实际金额大于计划金额!请重新填写合同信息 "); throw new EasyException("合同实际金额大于计划金额!请重新填写合同信息 ");
} }
} }
}
// 如果实际合同数量多于计划合同数量,也可以在此处处理这种情况
if (realContracts.size() > sortedPlanContracts.size()) {
throw new EasyException("存在未匹配的实际合同,请检查输入数据!");
}
} else {
log.warn("未找到任务名称 '{}' 的实际合同信息", taskNameFromContract);
}
}
} }
} }
return flag; return flag;
} }

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

@ -2815,6 +2815,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
@Override @Override
public List<HuzhouProjectinfo> queryProjectTimeOutInfo() { public List<HuzhouProjectinfo> queryProjectTimeOutInfo() {
try {
// 记录开始时间 // 记录开始时间
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
// 获取所有项目信息 // 获取所有项目信息
@ -2841,7 +2842,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
projectInfo.setProjectTimeOutSituation(String.valueOf(daysBetween)); projectInfo.setProjectTimeOutSituation(String.valueOf(daysBetween));
log.info("项目:{}->当且节点:{}->超时完成天数为:{}", projectInfo.getProjectName(),currentPointName, daysBetween); log.info("项目:{}->当且节点:{}->超时完成天数为:{}", projectInfo.getProjectName(),currentPointName, daysBetween);
log.info("计划结束时间为:{}->实际开始提交时间为:{}", scheduledEndDate,realUpFileDate); log.info("计划结束时间为:{}->实际开始提交时间为:{}", scheduledEndDate,realUpFileDate);
}else { } else {
projectInfo.setProjectTimeOutSituation("未超时"); projectInfo.setProjectTimeOutSituation("未超时");
} }
} }
@ -2849,19 +2850,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
projectInfo.setCurrentPointName("未执行"); projectInfo.setCurrentPointName("未执行");
} }
// 2.设置整体资金支付情况:上级资金支付比例=(实际支付上级资金/计划支付上级资金)*100% // 其他设置操作...
fillSuperiorFundPayRate(projectInfo);
// 3.设置节点资金支付情况:资金支付超时时间=实际支付时间-计划支付时间
ContractPayInfoDTO tmp = contractinfoService.queryContractPaySituation(projectInfo);
projectInfo.setTimeOutPaySituation(tmp.getTimeOutPaySituation());
// 4.设置超时支付次数:超时支付次数=超时完成天数/7
projectInfo.setTimeOutPayCount(tmp.getTimeOutPayCount());
// 5.设置文件上传占用率
projectInfo.setUploadFileRate(planinfofileService.getUploadFileRate(projectId));
// 6设置变更次数
projectInfo.setUpdateCount(fieldchangehistoryService.queryUpdateCount(projectId));
log.info("项目:{}->超时支付次数为:{}", projectInfo.getProjectName(),projectInfo.getUpdateCount());
} }
// 按照责任工作地点排序 // 按照责任工作地点排序
projectInfoList = projectInfoList.stream() projectInfoList = projectInfoList.stream()
@ -2870,8 +2859,13 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
long endTime = System.currentTimeMillis(); long endTime = System.currentTimeMillis();
long duration = endTime - startTime; long duration = endTime - startTime;
log.info("方法执行耗时:{} ms",duration); log.info("方法执行耗时:{} ms", duration);
return projectInfoList; return projectInfoList;
} catch (Exception e) {
// 记录错误日志
log.error("查询时发生错误: ", e);
throw new EasyException("导出异常:"+e);
}
} }
@Override @Override

Loading…
Cancel
Save