|
|
@ -2815,63 +2815,57 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<HuzhouProjectinfo> queryProjectTimeOutInfo() { |
|
|
|
// 记录开始时间
|
|
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
// 获取所有项目信息
|
|
|
|
List<HuzhouProjectinfo> projectInfoList = this.list(); |
|
|
|
for (HuzhouProjectinfo projectInfo : projectInfoList) { |
|
|
|
String projectId = projectInfo.getId(); |
|
|
|
// 1.获取当且任务所处的节点名称
|
|
|
|
String currentPointName = planinfoMapper.getCurrentPointName(projectId); |
|
|
|
if (StringUtils.isNotBlank(currentPointName)) { |
|
|
|
projectInfo.setCurrentPointName(currentPointName); |
|
|
|
LambdaQueryWrapper<HuzhouPlaninfo> qw = new LambdaQueryWrapper<>(); |
|
|
|
qw.eq(HuzhouPlaninfo::getTaskName, currentPointName) |
|
|
|
.eq(HuzhouPlaninfo::getProjectId, projectId); |
|
|
|
HuzhouPlaninfo planInfo = planinfoMapper.selectOne(qw); |
|
|
|
|
|
|
|
Date actualStartTime = planInfo.getActualStartTime(); |
|
|
|
Date scheduledEndTime = planInfo.getScheduledEndTime(); |
|
|
|
if (actualStartTime != null) { |
|
|
|
LocalDate realUpFileDate = actualStartTime.toInstant().atZone(java.time.ZoneId.of("Asia/Shanghai")).toLocalDate(); |
|
|
|
LocalDate scheduledEndDate = scheduledEndTime.toInstant().atZone(java.time.ZoneId.of("Asia/Shanghai")).toLocalDate(); |
|
|
|
// 计算相差天数
|
|
|
|
long daysBetween = ChronoUnit.DAYS.between(scheduledEndDate, realUpFileDate); |
|
|
|
if (daysBetween > 0) { |
|
|
|
projectInfo.setProjectTimeOutSituation(String.valueOf(daysBetween)); |
|
|
|
log.info("项目:{}->当且节点:{}->超时完成天数为:{}", projectInfo.getProjectName(),currentPointName, daysBetween); |
|
|
|
log.info("计划结束时间为:{}->实际开始提交时间为:{}", scheduledEndDate,realUpFileDate); |
|
|
|
}else { |
|
|
|
projectInfo.setProjectTimeOutSituation("未超时"); |
|
|
|
try { |
|
|
|
// 记录开始时间
|
|
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
// 获取所有项目信息
|
|
|
|
List<HuzhouProjectinfo> projectInfoList = this.list(); |
|
|
|
for (HuzhouProjectinfo projectInfo : projectInfoList) { |
|
|
|
String projectId = projectInfo.getId(); |
|
|
|
// 1.获取当且任务所处的节点名称
|
|
|
|
String currentPointName = planinfoMapper.getCurrentPointName(projectId); |
|
|
|
if (StringUtils.isNotBlank(currentPointName)) { |
|
|
|
projectInfo.setCurrentPointName(currentPointName); |
|
|
|
LambdaQueryWrapper<HuzhouPlaninfo> qw = new LambdaQueryWrapper<>(); |
|
|
|
qw.eq(HuzhouPlaninfo::getTaskName, currentPointName) |
|
|
|
.eq(HuzhouPlaninfo::getProjectId, projectId); |
|
|
|
HuzhouPlaninfo planInfo = planinfoMapper.selectOne(qw); |
|
|
|
|
|
|
|
Date actualStartTime = planInfo.getActualStartTime(); |
|
|
|
Date scheduledEndTime = planInfo.getScheduledEndTime(); |
|
|
|
if (actualStartTime != null) { |
|
|
|
LocalDate realUpFileDate = actualStartTime.toInstant().atZone(java.time.ZoneId.of("Asia/Shanghai")).toLocalDate(); |
|
|
|
LocalDate scheduledEndDate = scheduledEndTime.toInstant().atZone(java.time.ZoneId.of("Asia/Shanghai")).toLocalDate(); |
|
|
|
// 计算相差天数
|
|
|
|
long daysBetween = ChronoUnit.DAYS.between(scheduledEndDate, realUpFileDate); |
|
|
|
if (daysBetween > 0) { |
|
|
|
projectInfo.setProjectTimeOutSituation(String.valueOf(daysBetween)); |
|
|
|
log.info("项目:{}->当且节点:{}->超时完成天数为:{}", projectInfo.getProjectName(),currentPointName, daysBetween); |
|
|
|
log.info("计划结束时间为:{}->实际开始提交时间为:{}", scheduledEndDate,realUpFileDate); |
|
|
|
} else { |
|
|
|
projectInfo.setProjectTimeOutSituation("未超时"); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
projectInfo.setCurrentPointName("未执行"); |
|
|
|
} |
|
|
|
} else { |
|
|
|
projectInfo.setCurrentPointName("未执行"); |
|
|
|
} |
|
|
|
|
|
|
|
// 2.设置整体资金支付情况:上级资金支付比例=(实际支付上级资金/计划支付上级资金)*100%
|
|
|
|
fillSuperiorFundPayRate(projectInfo); |
|
|
|
// 其他设置操作...
|
|
|
|
} |
|
|
|
// 按照责任工作地点排序
|
|
|
|
projectInfoList = projectInfoList.stream() |
|
|
|
.sorted(Comparator.comparing(HuzhouProjectinfo::getReformName)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
// 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()); |
|
|
|
long endTime = System.currentTimeMillis(); |
|
|
|
long duration = endTime - startTime; |
|
|
|
log.info("方法执行耗时:{} ms", duration); |
|
|
|
return projectInfoList; |
|
|
|
} catch (Exception e) { |
|
|
|
// 记录错误日志
|
|
|
|
log.error("查询时发生错误: ", e); |
|
|
|
throw new EasyException("导出异常:"+e); |
|
|
|
} |
|
|
|
// 按照责任工作地点排序
|
|
|
|
projectInfoList = projectInfoList.stream() |
|
|
|
.sorted(Comparator.comparing(HuzhouProjectinfo::getReformName)) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
long endTime = System.currentTimeMillis(); |
|
|
|
long duration = endTime - startTime; |
|
|
|
log.info("方法执行耗时:{} ms",duration); |
|
|
|
return projectInfoList; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|