|
|
|
@ -110,19 +110,30 @@ public class RunMonthServiceImpl extends BaseServiceImpl<RunMonthMapper, RunMont
|
|
|
|
|
} |
|
|
|
|
RunDataShowVo data = new RunDataShowVo(); |
|
|
|
|
BeanUtil.copyProperties(entity,data); |
|
|
|
|
List<RunDataVo> run = JSONObject.parseObject(entity.getRunData(),new TypeReference<List<RunDataVo>>(){}); |
|
|
|
|
if(CollectionUtil.isEmpty(run)){ |
|
|
|
|
List<RunDataVo> runs = JSONObject.parseObject(entity.getRunData(),new TypeReference<List<RunDataVo>>(){}); |
|
|
|
|
if(CollectionUtil.isEmpty(runs)){ |
|
|
|
|
return data; |
|
|
|
|
} |
|
|
|
|
double monSumGenerate = run.stream().mapToDouble(RunDataVo::getGenerate).sum(); |
|
|
|
|
double monSumPlan = run.stream().mapToDouble(RunDataVo::getPlan).sum(); |
|
|
|
|
// 保留两位小数
|
|
|
|
|
data.setRunData(JSONObject.toJSONString(runs.stream().map(run->{ |
|
|
|
|
// 月发电量
|
|
|
|
|
run.setGenerate(BigDecimal.valueOf(run.getGenerate()).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
|
|
|
|
// 年发电量
|
|
|
|
|
run.setGenerateYear(BigDecimal.valueOf(run.getGenerateYear()).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
|
|
|
|
return run; |
|
|
|
|
}).collect(Collectors.toList()))); |
|
|
|
|
|
|
|
|
|
// 月发电量完成率
|
|
|
|
|
double monSumGenerate = runs.stream().mapToDouble(RunDataVo::getGenerate).sum(); |
|
|
|
|
double monSumPlan = runs.stream().mapToDouble(RunDataVo::getPlan).sum(); |
|
|
|
|
data.setMonSumGenerate(monSumGenerate); |
|
|
|
|
data.setMonSumPlan(monSumPlan); |
|
|
|
|
if(Math.abs(monSumGenerate) > 0 && Math.abs(monSumPlan) > 0){ |
|
|
|
|
data.setMonRate(BigDecimal.valueOf(monSumGenerate / monSumPlan * 100L).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
|
|
|
|
} |
|
|
|
|
double yearSumGenerate = run.stream().mapToDouble(RunDataVo::getGenerateYear).sum(); |
|
|
|
|
double yearSumPlan = run.stream().mapToDouble(RunDataVo::getPlanYear).sum(); |
|
|
|
|
// 年发电量完成率
|
|
|
|
|
double yearSumGenerate = runs.stream().mapToDouble(RunDataVo::getGenerateYear).sum(); |
|
|
|
|
double yearSumPlan = runs.stream().mapToDouble(RunDataVo::getPlanYear).sum(); |
|
|
|
|
data.setYearSumGenerate(yearSumGenerate); |
|
|
|
|
data.setYearSumPlan(yearSumPlan); |
|
|
|
|
if(Math.abs(yearSumGenerate) > 0 && Math.abs(yearSumPlan) > 0){ |
|
|
|
@ -131,7 +142,6 @@ public class RunMonthServiceImpl extends BaseServiceImpl<RunMonthMapper, RunMont
|
|
|
|
|
return data; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 导出站点月报文件 |
|
|
|
|
* @param mon |
|
|
|
@ -149,6 +159,17 @@ public class RunMonthServiceImpl extends BaseServiceImpl<RunMonthMapper, RunMont
|
|
|
|
|
if(ObjectUtil.isEmpty(data)){ |
|
|
|
|
throw new ServiceException("站点" + mon + "月份未生成运行月报数据!"); |
|
|
|
|
} |
|
|
|
|
List<RunDataVo> runs = JSONObject.parseObject(data.getRunData(),new TypeReference<List<RunDataVo>>(){}); |
|
|
|
|
if(CollectionUtil.isNotEmpty(runs)){ |
|
|
|
|
// 保留两位小数
|
|
|
|
|
data.setRunData(JSONObject.toJSONString(runs.stream().map(run->{ |
|
|
|
|
// 月发电量
|
|
|
|
|
run.setGenerate(BigDecimal.valueOf(run.getGenerate()).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
|
|
|
|
// 年发电量
|
|
|
|
|
run.setGenerateYear(BigDecimal.valueOf(run.getGenerateYear()).setScale(2, RoundingMode.HALF_UP).doubleValue()); |
|
|
|
|
return run; |
|
|
|
|
}).collect(Collectors.toList()))); |
|
|
|
|
} |
|
|
|
|
// 创建Excel文件
|
|
|
|
|
// 表头、sheet页、文件名
|
|
|
|
|
String headerName = data.getStationName() + "运行月报(" + mon + ")"; |
|
|
|
@ -211,7 +232,15 @@ public class RunMonthServiceImpl extends BaseServiceImpl<RunMonthMapper, RunMont
|
|
|
|
|
String end = DateUtil.format(calendar.getTime(),DateUtil.PATTERN_DATETIME); |
|
|
|
|
// 告警数据
|
|
|
|
|
run.setAlarmData(this.alarmData(station.getCode(),start,end)); |
|
|
|
|
CountDownLatch countDownLatch = new CountDownLatch(devices.size()); |
|
|
|
|
List<RunDataVo> runDatas = new ArrayList<>(); |
|
|
|
|
List<CurveEchartVo> curveEcharts = new ArrayList<>(); |
|
|
|
|
for (RideDeviceVo device : devices){ |
|
|
|
|
// 运行数据
|
|
|
|
|
runDatas.add(this.runData(station.getCode(),device,plans,start,end)); |
|
|
|
|
// 月度运行曲线
|
|
|
|
|
curveEcharts.add(this.curveData(device,start,end)); |
|
|
|
|
} |
|
|
|
|
/*CountDownLatch countDownLatch = new CountDownLatch(devices.size()); |
|
|
|
|
List<RunDataVo> runDatas = new CopyOnWriteArrayList<>(); |
|
|
|
|
List<CurveEchartVo> curveEcharts = new CopyOnWriteArrayList<>(); |
|
|
|
|
for (RideDeviceVo device : devices){ |
|
|
|
@ -220,8 +249,8 @@ public class RunMonthServiceImpl extends BaseServiceImpl<RunMonthMapper, RunMont
|
|
|
|
|
runDatas.add(this.runData(station.getCode(),device,plans,start,end)); |
|
|
|
|
// 月度运行曲线
|
|
|
|
|
curveEcharts.add(this.curveData(device,start,end)); |
|
|
|
|
}); |
|
|
|
|
countDownLatch.countDown(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
//所有模板数据获取完成后释放锁
|
|
|
|
|
try { |
|
|
|
@ -229,11 +258,11 @@ public class RunMonthServiceImpl extends BaseServiceImpl<RunMonthMapper, RunMont
|
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
Thread.currentThread().interrupt(); |
|
|
|
|
} |
|
|
|
|
if(CollectionUtil.isEmpty(runDatas)){ |
|
|
|
|
}*/ |
|
|
|
|
if(!CollectionUtil.isEmpty(runDatas)){ |
|
|
|
|
run.setRunData(JSONObject.toJSONString(runDatas)); |
|
|
|
|
} |
|
|
|
|
if(CollectionUtil.isEmpty(curveEcharts)){ |
|
|
|
|
if(!CollectionUtil.isEmpty(curveEcharts)){ |
|
|
|
|
run.setCurveData(JSONObject.toJSONString(curveEcharts)); |
|
|
|
|
} |
|
|
|
|
// TODO 运行数据分析
|
|
|
|
|