|
|
|
@ -202,7 +202,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
return R.data("success"); |
|
|
|
|
} |
|
|
|
|
@Override |
|
|
|
|
public R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap<String, Object> map, Integer year, Integer month, Integer date, Long deptId) { |
|
|
|
|
public R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap<String, Object> map, Integer year, Integer month, Long deptId) { |
|
|
|
|
R<List<Dept>> deptByCurrentUser = sysClient.getDeptByCurrentUser(); |
|
|
|
|
if (!deptByCurrentUser.isSuccess()||deptByCurrentUser.getData()!=null){ |
|
|
|
|
return R.fail("用户权限查询失败"); |
|
|
|
@ -239,7 +239,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
map.put("month", month); |
|
|
|
|
Integer monthBefore = month - 1; |
|
|
|
|
map.put("monthBefore", monthBefore); |
|
|
|
|
map.put("date", date); |
|
|
|
|
// map.put("date", date);
|
|
|
|
|
map.put("commissionTime", commissionTime.toString()); |
|
|
|
|
map.put("stationName", deptName); |
|
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); |
|
|
|
@ -274,6 +274,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
.mapToDouble(HydropowerUnitRealVo::getInstalledCapacity).sum(); |
|
|
|
|
BigDecimal sumData=new BigDecimal(sum).divide(new BigDecimal(1000),2,BigDecimal.ROUND_UP); |
|
|
|
|
map.put("installedCapacity", sumData); |
|
|
|
|
|
|
|
|
|
//各站点分组
|
|
|
|
|
Map<Long, List<HydropowerUnitRealVo>> listMap = Optional.ofNullable(realsByDept) |
|
|
|
|
.orElse(new ArrayList<>()).stream() |
|
|
|
@ -295,75 +296,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
ImageEntity capacityProportionChart = JFreeUtil.pieChartByDouble("水电项目装机容量占比图", capacityProportionMap, 500, 400); |
|
|
|
|
map.put("capacityProportionChart", capacityProportionChart); |
|
|
|
|
//各发电站发电量环比图+表格数据组装
|
|
|
|
|
List<String> deptIdsString = deptIds.stream().map(s -> String.valueOf(s)).collect(Collectors.toList()); |
|
|
|
|
List<PlanGenerationEntity> planYearData = planGenertionClient.getPlanGenerationByParam(null, deptIdsString, year.toString()); |
|
|
|
|
List<MonPowerPercentageVo> powerPercentageVoList = new ArrayList<>(); |
|
|
|
|
//水电站,光伏站和带代运维数据近三年数据
|
|
|
|
|
Map<Long, Map<String, Float>> powerMapThree = (Map<Long, Map<String, Float>>) redisTemplate.opsForValue().get(RECENT_YEAR_POWER_DATA); |
|
|
|
|
List<String> listByYear = TimeUtils.getListByYear(year); |
|
|
|
|
List<String> listByYearBefore = TimeUtils.getListByYear(yearBefore); |
|
|
|
|
String monStart = TimeUtils.getMon(year, month); |
|
|
|
|
String monStartYearBefore = TimeUtils.getMon(yearBefore, month); |
|
|
|
|
String monStartMonBefore = TimeUtils.getMon(year, monthBefore); |
|
|
|
|
for (Map.Entry<Long, Map<String, Float>> deviceMap : powerMapThree.entrySet()) { |
|
|
|
|
String deptNameByKey = ""; |
|
|
|
|
if (stationIds.contains(deviceMap.getKey())) { |
|
|
|
|
MonPowerPercentageVo powerVo = new MonPowerPercentageVo(); |
|
|
|
|
powerVo.setDeptId(deviceMap.getKey()); |
|
|
|
|
List<StationEntity> collect = stationEntityList.stream().filter(s -> deviceMap.getKey().equals(s.getId())).collect(Collectors.toList()); |
|
|
|
|
if (collect!=null) { |
|
|
|
|
Long dept = collect.get(0).getRefDept(); |
|
|
|
|
List<Dept> dep = deptList.stream().filter(s -> dept.equals(s.getId())).collect(Collectors.toList()); |
|
|
|
|
deptNameByKey=dep.get(0).getDeptName(); |
|
|
|
|
} |
|
|
|
|
powerVo.setDeptName(deptNameByKey); |
|
|
|
|
BigDecimal powerYear = new BigDecimal(0); |
|
|
|
|
BigDecimal powerYearBefore = new BigDecimal(0); |
|
|
|
|
BigDecimal powerMonth = new BigDecimal(0); |
|
|
|
|
BigDecimal powerMonthBefore = new BigDecimal(0); |
|
|
|
|
BigDecimal powerMonthYearBefore = new BigDecimal(0); |
|
|
|
|
Double planGeneration = 0d; |
|
|
|
|
List<PlanGenerationEntity> planGenerationById = planYearData.stream().filter(s -> collect.get(0).getRefDept().equals(s.getStationDeptId())).collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(planGenerationById)) { |
|
|
|
|
planGeneration = Double.valueOf(planGenerationById.get(0).getPlanGeneration()); |
|
|
|
|
} |
|
|
|
|
//当前机构近三年的数据
|
|
|
|
|
Map<String, Float> value = deviceMap.getValue(); |
|
|
|
|
//今年发电量
|
|
|
|
|
powerYear=value.entrySet().stream().filter(s->listByYear.contains(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
//转换单位kwh-》万Kwh
|
|
|
|
|
powerYear=powerYear.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerYearBefore=value.entrySet().stream().filter(s->listByYearBefore.contains(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerYearBefore=powerYearBefore.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerMonth=value.entrySet().stream().filter(s->monStart.equals(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonth=powerMonth.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerMonthBefore=value.entrySet().stream().filter(s->monStartMonBefore.equals(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonthBefore=powerMonthBefore.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerMonthYearBefore=value.entrySet().stream().filter(s->monStartYearBefore.equals(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonthYearBefore=powerMonthYearBefore.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerVo.setPowerYear(powerYear.doubleValue()); |
|
|
|
|
powerVo.setPowerYearBefore(powerYearBefore.doubleValue()); |
|
|
|
|
BigDecimal yearPercentage = new BigDecimal(0); |
|
|
|
|
BigDecimal planPercentage = new BigDecimal(0); |
|
|
|
|
if (powerYearBefore.compareTo(BigDecimal.ZERO) != 0) { |
|
|
|
|
yearPercentage = (powerYear.subtract(powerYearBefore)).divide(powerYearBefore, 2, BigDecimal.ROUND_UP); |
|
|
|
|
} |
|
|
|
|
if (BigDecimal.valueOf(planGeneration).compareTo(BigDecimal.ZERO) != 0) { |
|
|
|
|
planPercentage = powerYear.divide(BigDecimal.valueOf(planGeneration), 2, BigDecimal.ROUND_UP); |
|
|
|
|
} |
|
|
|
|
powerVo.setPlanPercentage(planPercentage.doubleValue()); |
|
|
|
|
powerVo.setPowerYearPercentage(yearPercentage.doubleValue()); |
|
|
|
|
powerVo.setPowerMon(powerMonth.doubleValue()); |
|
|
|
|
powerVo.setPowerMonBefore(powerMonthBefore.doubleValue()); |
|
|
|
|
powerVo.setPowerMonYearBefore(powerMonthYearBefore.doubleValue()); |
|
|
|
|
BigDecimal monPercentage = new BigDecimal(0); |
|
|
|
|
if (powerMonthYearBefore.compareTo(BigDecimal.ZERO) != 0) { |
|
|
|
|
monPercentage = (powerMonth.subtract(powerMonthYearBefore)).divide(powerMonthYearBefore, 2, BigDecimal.ROUND_UP); |
|
|
|
|
} |
|
|
|
|
powerVo.setPowerMonPercentage(monPercentage.doubleValue()); |
|
|
|
|
powerPercentageVoList.add(powerVo); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
List<MonPowerPercentageVo> powerPercentageVoList = getMonPowerPercentageVos(year, month, deptList, deptIds, stationEntityList, stationIds, yearBefore, monthBefore); |
|
|
|
|
// getPowerData(deptList, yearStart, yearEnd, yearBeforeStart, yearBeforeEnd, monthStart, monthEnd, beforeMonthStart, beforeMonthEnd, monthStartBeforeYear, monthEndBeforeYear, devices, planYearData, powerPercentageVoList);
|
|
|
|
|
// 各发电站发电量环比图数据组装
|
|
|
|
|
//柱状图图数据
|
|
|
|
@ -688,6 +621,79 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
return R.success("成功"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private List<MonPowerPercentageVo> getMonPowerPercentageVos(Integer year, Integer month, List<Dept> deptList, List<Long> deptIds, List<StationEntity> stationEntityList, List<Long> stationIds, Integer yearBefore, Integer monthBefore) { |
|
|
|
|
List<String> deptIdsString = deptIds.stream().map(s -> String.valueOf(s)).collect(Collectors.toList()); |
|
|
|
|
List<PlanGenerationEntity> planYearData = planGenertionClient.getPlanGenerationByParam(null, deptIdsString, year.toString()); |
|
|
|
|
List<MonPowerPercentageVo> powerPercentageVoList = new ArrayList<>(); |
|
|
|
|
//水电站,光伏站和带代运维数据近三年数据
|
|
|
|
|
Map<Long, Map<String, Float>> powerMapThree = (Map<Long, Map<String, Float>>) redisTemplate.opsForValue().get(RECENT_YEAR_POWER_DATA); |
|
|
|
|
List<String> listByYear = TimeUtils.getListByYear(year); |
|
|
|
|
List<String> listByYearBefore = TimeUtils.getListByYear(yearBefore); |
|
|
|
|
String monStart = TimeUtils.getMon(year, month); |
|
|
|
|
String monStartYearBefore = TimeUtils.getMon(yearBefore, month); |
|
|
|
|
String monStartMonBefore = TimeUtils.getMon(year, monthBefore); |
|
|
|
|
for (Map.Entry<Long, Map<String, Float>> deviceMap : powerMapThree.entrySet()) { |
|
|
|
|
String deptNameByKey = ""; |
|
|
|
|
if (stationIds.contains(deviceMap.getKey())) { |
|
|
|
|
MonPowerPercentageVo powerVo = new MonPowerPercentageVo(); |
|
|
|
|
powerVo.setDeptId(deviceMap.getKey()); |
|
|
|
|
List<StationEntity> collect = stationEntityList.stream().filter(s -> deviceMap.getKey().equals(s.getId())).collect(Collectors.toList()); |
|
|
|
|
if (collect!=null) { |
|
|
|
|
Long dept = collect.get(0).getRefDept(); |
|
|
|
|
List<Dept> dep = deptList.stream().filter(s -> dept.equals(s.getId())).collect(Collectors.toList()); |
|
|
|
|
deptNameByKey=dep.get(0).getDeptName(); |
|
|
|
|
} |
|
|
|
|
powerVo.setDeptName(deptNameByKey); |
|
|
|
|
BigDecimal powerYear = new BigDecimal(0); |
|
|
|
|
BigDecimal powerYearBefore = new BigDecimal(0); |
|
|
|
|
BigDecimal powerMonth = new BigDecimal(0); |
|
|
|
|
BigDecimal powerMonthBefore = new BigDecimal(0); |
|
|
|
|
BigDecimal powerMonthYearBefore = new BigDecimal(0); |
|
|
|
|
Double planGeneration = 0d; |
|
|
|
|
List<PlanGenerationEntity> planGenerationById = planYearData.stream().filter(s -> collect.get(0).getRefDept().equals(s.getStationDeptId())).collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(planGenerationById)) { |
|
|
|
|
planGeneration = Double.valueOf(planGenerationById.get(0).getPlanGeneration()); |
|
|
|
|
} |
|
|
|
|
//当前机构近三年的数据
|
|
|
|
|
Map<String, Float> value = deviceMap.getValue(); |
|
|
|
|
//今年发电量
|
|
|
|
|
powerYear=value.entrySet().stream().filter(s->listByYear.contains(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
//转换单位kwh-》万Kwh
|
|
|
|
|
powerYear=powerYear.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerYearBefore=value.entrySet().stream().filter(s->listByYearBefore.contains(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerYearBefore=powerYearBefore.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerMonth=value.entrySet().stream().filter(s->monStart.equals(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonth=powerMonth.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerMonthBefore=value.entrySet().stream().filter(s->monStartMonBefore.equals(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonthBefore=powerMonthBefore.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerMonthYearBefore=value.entrySet().stream().filter(s->monStartYearBefore.equals(s.getKey())).map(s->BigDecimal.valueOf(s.getValue())).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonthYearBefore=powerMonthYearBefore.divide(new BigDecimal(10000),2,BigDecimal.ROUND_UP); |
|
|
|
|
powerVo.setPowerYear(powerYear.doubleValue()); |
|
|
|
|
powerVo.setPowerYearBefore(powerYearBefore.doubleValue()); |
|
|
|
|
BigDecimal yearPercentage = new BigDecimal(0); |
|
|
|
|
BigDecimal planPercentage = new BigDecimal(0); |
|
|
|
|
if (powerYearBefore.compareTo(BigDecimal.ZERO) != 0) { |
|
|
|
|
yearPercentage = (powerYear.subtract(powerYearBefore)).divide(powerYearBefore, 2, BigDecimal.ROUND_UP); |
|
|
|
|
} |
|
|
|
|
if (BigDecimal.valueOf(planGeneration).compareTo(BigDecimal.ZERO) != 0) { |
|
|
|
|
planPercentage = powerYear.divide(BigDecimal.valueOf(planGeneration), 2, BigDecimal.ROUND_UP); |
|
|
|
|
} |
|
|
|
|
powerVo.setPlanPercentage(planPercentage.doubleValue()); |
|
|
|
|
powerVo.setPowerYearPercentage(yearPercentage.doubleValue()); |
|
|
|
|
powerVo.setPowerMon(powerMonth.doubleValue()); |
|
|
|
|
powerVo.setPowerMonBefore(powerMonthBefore.doubleValue()); |
|
|
|
|
powerVo.setPowerMonYearBefore(powerMonthYearBefore.doubleValue()); |
|
|
|
|
BigDecimal monPercentage = new BigDecimal(0); |
|
|
|
|
if (powerMonthYearBefore.compareTo(BigDecimal.ZERO) != 0) { |
|
|
|
|
monPercentage = (powerMonth.subtract(powerMonthYearBefore)).divide(powerMonthYearBefore, 2, BigDecimal.ROUND_UP); |
|
|
|
|
} |
|
|
|
|
powerVo.setPowerMonPercentage(monPercentage.doubleValue()); |
|
|
|
|
powerPercentageVoList.add(powerVo); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return powerPercentageVoList; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void getPowerData(List<Dept> deptList, String yearStart, String yearEnd, String yearBeforeStart, String yearBeforeEnd, String monthStart, String monthEnd, String beforeMonthStart, String beforeMonthEnd, String monthStartBeforeYear, String monthEndBeforeYear, List<EminfoAndEmParamVo> devices, List<PlanGenerationEntity> planYearData, List<MonPowerPercentageVo> powerPercentageVoList) { |
|
|
|
|
for (Dept dept : deptList) { |
|
|
|
|
MonPowerPercentageVo powerVo = new MonPowerPercentageVo(); |
|
|
|
|