|
|
|
@ -48,7 +48,6 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
|
|
|
|
import org.apache.poi.ss.usermodel.VerticalAlignment; |
|
|
|
|
import org.apache.poi.ss.util.CellRangeAddress; |
|
|
|
|
import org.jfree.data.category.DefaultCategoryDataset; |
|
|
|
|
import org.springblade.core.mp.base.BaseEntity; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.core.tool.utils.CollectionUtil; |
|
|
|
|
import org.springblade.core.tool.utils.DateUtil; |
|
|
|
@ -82,7 +81,6 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 区域月报实现类 |
|
|
|
|
* @author ysj |
|
|
|
|
*/ |
|
|
|
|
@Service |
|
|
|
|
@RequiredArgsConstructor |
|
|
|
@ -187,7 +185,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
// 设置头信息
|
|
|
|
|
response.setCharacterEncoding("UTF-8"); |
|
|
|
|
response.setContentType("application/vnd.ms-excel"); |
|
|
|
|
ServletOutputStream outputStream; |
|
|
|
|
ServletOutputStream outputStream = null; |
|
|
|
|
try { |
|
|
|
|
//设置xlsx格式
|
|
|
|
|
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename + ".xlsx", "UTF-8")); |
|
|
|
@ -204,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("用户权限查询失败"); |
|
|
|
@ -219,7 +217,10 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
return R.fail("该机构不包含水站信息"); |
|
|
|
|
} |
|
|
|
|
List<Dept> deptList = deptR.getData().stream().filter(s -> s.getStationId() != null).collect(Collectors.toList()); |
|
|
|
|
List<Long> deptByUser = deptByCurrentUser.getData().stream().map(Dept::getId).collect(Collectors.toList()); |
|
|
|
|
if (deptList == null) { |
|
|
|
|
return R.fail("该机构不包含水站信息"); |
|
|
|
|
} |
|
|
|
|
List<Long> deptByUser = deptByCurrentUser.getData().stream().map(s -> s.getId()).collect(Collectors.toList()); |
|
|
|
|
if (!deptByUser.contains(deptId)){ |
|
|
|
|
return R.fail("该用户不包含该机构权限,请申请权限再试"); |
|
|
|
|
} |
|
|
|
@ -230,7 +231,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
Integer commissionTime = stationEntityList.stream().map(s -> { |
|
|
|
|
Duration dur = Duration.between(s.getCommissionTime(), LocalDateTime.now()); |
|
|
|
|
return (int) dur.toDays();}).reduce(Integer::max).get(); |
|
|
|
|
List<Long> stationIds = stationEntityList.stream().map(BaseEntity::getId).collect(Collectors.toList()); |
|
|
|
|
List<Long> stationIds = stationEntityList.stream().map(s -> s.getId()).collect(Collectors.toList()); |
|
|
|
|
//其它普通数据
|
|
|
|
|
map.put("year", year); |
|
|
|
|
Integer yearBefore = year - 1; |
|
|
|
@ -238,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日"); |
|
|
|
@ -273,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() |
|
|
|
@ -294,73 +296,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
ImageEntity capacityProportionChart = JFreeUtil.pieChartByDouble("水电项目装机容量占比图", capacityProportionMap, 500, 400); |
|
|
|
|
map.put("capacityProportionChart", capacityProportionChart); |
|
|
|
|
//各发电站发电量环比图+表格数据组装
|
|
|
|
|
List<String> deptIdsString = deptIds.stream().map(String::valueOf).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()); |
|
|
|
|
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; |
|
|
|
|
BigDecimal powerYearBefore; |
|
|
|
|
BigDecimal powerMonth; |
|
|
|
|
BigDecimal powerMonthBefore; |
|
|
|
|
BigDecimal powerMonthYearBefore; |
|
|
|
|
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);
|
|
|
|
|
// 各发电站发电量环比图数据组装
|
|
|
|
|
//柱状图图数据
|
|
|
|
@ -376,34 +312,38 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
ImageEntity powerChainHistogram = JFreeUtil.iCreateBarChart(powerTitle, powerDomainAxis, powerRangeAxis, powerDataset, 500, 400); |
|
|
|
|
map.put("powerChainHistogram", powerChainHistogram); |
|
|
|
|
//柱状图下添加的表格
|
|
|
|
|
ArrayList<HashMap<String, String>> powerMap = new ArrayList<>(powerPercentageVoList.size()); |
|
|
|
|
for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { |
|
|
|
|
HashMap<String, String> power = new HashMap<>(); |
|
|
|
|
power.put("name", monPowerPercentageVo.getDeptName()); |
|
|
|
|
power.put("monthBefore", monPowerPercentageVo.getPowerMonBefore()+"MW"); |
|
|
|
|
power.put("month",monPowerPercentageVo.getPowerMon()+"MW"); |
|
|
|
|
powerMap.add(power); |
|
|
|
|
if (powerPercentageVoList != null) { |
|
|
|
|
ArrayList<HashMap<String, String>> powerMap = new ArrayList<>(powerPercentageVoList.size()); |
|
|
|
|
for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { |
|
|
|
|
HashMap<String, String> power = new HashMap<>(); |
|
|
|
|
power.put("name", monPowerPercentageVo.getDeptName()); |
|
|
|
|
power.put("monthBefore", monPowerPercentageVo.getPowerMonBefore()+"MW"); |
|
|
|
|
power.put("month",monPowerPercentageVo.getPowerMon()+"MW"); |
|
|
|
|
powerMap.add(power); |
|
|
|
|
} |
|
|
|
|
map.put("power", powerMap); |
|
|
|
|
} |
|
|
|
|
map.put("power", powerMap); |
|
|
|
|
//表格总计
|
|
|
|
|
List<PlanGenerationEntity> planYearAll = planGenertionClient.getPlanGenerationByParam(null, Collections.singletonList(deptId.toString()), year.toString()); |
|
|
|
|
List<PlanGenerationEntity> planMonAll = planGenertionClient.getPlanGenerationByParam(null, Collections.singletonList(deptId.toString()), year + "-" + month); |
|
|
|
|
List<PlanGenerationEntity> planYearAll = planGenertionClient.getPlanGenerationByParam(null, Arrays.asList(deptId.toString()), year.toString()); |
|
|
|
|
List<PlanGenerationEntity> planMonAll = planGenertionClient.getPlanGenerationByParam(null, Arrays.asList(deptId.toString()), year + "-" + month); |
|
|
|
|
getTabelSum(deptId, powerPercentageVoList, planYearAll, planMonAll, map); |
|
|
|
|
//发电情况统计表数据
|
|
|
|
|
ArrayList<HashMap<String, String>> list = new ArrayList<>(powerPercentageVoList.size()); |
|
|
|
|
for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { |
|
|
|
|
HashMap<String, String> temp = new HashMap<>(8); |
|
|
|
|
temp.put("name", monPowerPercentageVo.getDeptName()); |
|
|
|
|
temp.put("powerMonBefore", String.valueOf(monPowerPercentageVo.getPowerMonYearBefore())); |
|
|
|
|
temp.put("powerYearBefore", String.valueOf(monPowerPercentageVo.getPowerYearBefore())); |
|
|
|
|
temp.put("mon", String.valueOf(monPowerPercentageVo.getPowerMon())); |
|
|
|
|
temp.put("year", String.valueOf(monPowerPercentageVo.getPowerYear())); |
|
|
|
|
temp.put("monPercentage", monPowerPercentageVo.getPowerMonPercentage() * 100 + "%"); |
|
|
|
|
temp.put("yearPercentage", monPowerPercentageVo.getPowerYearPercentage() * 100 + "%"); |
|
|
|
|
temp.put("plan", monPowerPercentageVo.getPlanPercentage() * 100 + "%"); |
|
|
|
|
list.add(temp); |
|
|
|
|
if (powerPercentageVoList != null) { |
|
|
|
|
ArrayList<HashMap<String, String>> list = new ArrayList<>(powerPercentageVoList.size()); |
|
|
|
|
for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { |
|
|
|
|
HashMap<String, String> temp = new HashMap<>(8); |
|
|
|
|
temp.put("name", monPowerPercentageVo.getDeptName()); |
|
|
|
|
temp.put("powerMonBefore", String.valueOf(monPowerPercentageVo.getPowerMonYearBefore())); |
|
|
|
|
temp.put("powerYearBefore", String.valueOf(monPowerPercentageVo.getPowerYearBefore())); |
|
|
|
|
temp.put("mon", String.valueOf(monPowerPercentageVo.getPowerMon())); |
|
|
|
|
temp.put("year", String.valueOf(monPowerPercentageVo.getPowerYear())); |
|
|
|
|
temp.put("monPercentage", monPowerPercentageVo.getPowerMonPercentage() * 100 + "%"); |
|
|
|
|
temp.put("yearPercentage", monPowerPercentageVo.getPowerYearPercentage() * 100 + "%"); |
|
|
|
|
temp.put("plan", monPowerPercentageVo.getPlanPercentage() * 100 + "%"); |
|
|
|
|
list.add(temp); |
|
|
|
|
} |
|
|
|
|
map.put("powerGeneration", list); |
|
|
|
|
} |
|
|
|
|
map.put("powerGeneration", list); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//本月缺陷
|
|
|
|
@ -415,9 +355,9 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
wrapper.in(OperPhenomenonEntity::getCreateDept, deptIds); |
|
|
|
|
List<OperPhenomenonEntity> monPhenomenonList = operPhenomenonService.list(wrapper); |
|
|
|
|
monPhenomenonList = monPhenomenonList.stream().filter(s -> s.getDefectLevel() != null).collect(Collectors.toList()); |
|
|
|
|
List<OperPhenomenonEntity> monConclusionList = monPhenomenonList.stream().filter(s -> "1".equals(s.getConclusionStatus())).collect(Collectors.toList()); |
|
|
|
|
List<OperPhenomenonEntity> monConclusionList = monPhenomenonList.stream().filter(s -> s.getConclusionStatus().equals("1")).collect(Collectors.toList()); |
|
|
|
|
// 只填写二类及以上缺陷
|
|
|
|
|
List<OperPhenomenonEntity> monConclusionListBy = monConclusionList.stream().filter(s -> !"1".equals(s.getDefectGrading())).collect(Collectors.toList()); |
|
|
|
|
List<OperPhenomenonEntity> monConclusionListBy = monConclusionList.stream().filter(s -> !s.getDefectGrading().equals("1")).collect(Collectors.toList()); |
|
|
|
|
// 各电站缺陷处理统计表
|
|
|
|
|
monConclusionListBy.stream().sorted(Comparator.comparing(OperPhenomenonEntity::getCreateDept).reversed().thenComparing(OperPhenomenonEntity::getDefectGrading)); |
|
|
|
|
ArrayList<HashMap<String, String>> checkList = new ArrayList<>(); |
|
|
|
@ -431,13 +371,13 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
HashMap<String, String> temp = new HashMap<>(); |
|
|
|
|
temp.put("name", createDeptName.getData()); |
|
|
|
|
String checkLevel=""; |
|
|
|
|
if("1".equals(operPhenomenonEntity.getDefectGrading())) { |
|
|
|
|
if(operPhenomenonEntity.getDefectGrading().equals("1")) { |
|
|
|
|
checkLevel="Ⅰ级缺陷"; |
|
|
|
|
} |
|
|
|
|
if("2".equals(operPhenomenonEntity.getDefectGrading()) ){ |
|
|
|
|
if(operPhenomenonEntity.getDefectGrading().equals("2") ){ |
|
|
|
|
checkLevel="Ⅱ级缺陷"; |
|
|
|
|
} |
|
|
|
|
if("3".equals(operPhenomenonEntity.getDefectGrading()) ){ |
|
|
|
|
if(operPhenomenonEntity.getDefectGrading().equals("3") ){ |
|
|
|
|
checkLevel="Ⅲ级缺陷"; |
|
|
|
|
} |
|
|
|
|
temp.put("level", checkLevel); |
|
|
|
@ -483,14 +423,14 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
for (Map.Entry<Long, Map<String, List<OperPhenomenonEntity>>> deptMapEntry : phenomenonMap.entrySet()) { |
|
|
|
|
R<String> deptName1 = sysClient.getDeptName(deptMapEntry.getKey()); |
|
|
|
|
for (Map.Entry<String, List<OperPhenomenonEntity>> levelList : deptMapEntry.getValue().entrySet()) { |
|
|
|
|
int findShortagesYear = levelList.getValue().size(); |
|
|
|
|
int shortagesYear = (int) yearConclusionList.stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).count(); |
|
|
|
|
double shortagesRate = 0d; |
|
|
|
|
Integer findShortagesYear = levelList.getValue().size(); |
|
|
|
|
Integer shortagesYear = yearConclusionList.stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).collect(Collectors.toList()).size(); |
|
|
|
|
Double shortagesRate = 0d; |
|
|
|
|
if (findShortagesYear != 0 && shortagesYear != 0) { |
|
|
|
|
shortagesRate = BigDecimal.valueOf(shortagesYear).divide(BigDecimal.valueOf(findShortagesYear), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
} |
|
|
|
|
Integer findShortagesMon = (int) Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).count(); |
|
|
|
|
Integer shortagesMon = (int) Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).count(); |
|
|
|
|
Integer findShortagesMon = Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).collect(Collectors.toList()).size(); |
|
|
|
|
Integer shortagesMon = Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelList.getKey())).collect(Collectors.toList()).size(); |
|
|
|
|
CheckChartVo checkChartVo = new CheckChartVo(deptName1.getData(), levelList.getKey(), findShortagesMon, shortagesMon, findShortagesYear, shortagesYear, shortagesRate); |
|
|
|
|
checkChartRes.add(checkChartVo); |
|
|
|
|
} |
|
|
|
@ -498,14 +438,14 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
// 总计
|
|
|
|
|
Map<String, List<OperPhenomenonEntity>> levelPhenomenonList = yearPhenomenonEntities.stream().collect(Collectors.groupingBy(OperPhenomenonEntity::getDefectGrading)); |
|
|
|
|
for (Map.Entry<String, List<OperPhenomenonEntity>> levelPhenomenon : levelPhenomenonList.entrySet()) { |
|
|
|
|
int findShortagesYear = levelPhenomenon.getValue().size(); |
|
|
|
|
int shortagesYear = (int) Optional.ofNullable(yearConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).count(); |
|
|
|
|
double shortagesRate = 0d; |
|
|
|
|
Integer findShortagesYear = levelPhenomenon.getValue().size(); |
|
|
|
|
Integer shortagesYear = Optional.ofNullable(yearConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).collect(Collectors.toList()).size(); |
|
|
|
|
Double shortagesRate = 0d; |
|
|
|
|
if (findShortagesYear != 0 && shortagesYear != 0) { |
|
|
|
|
shortagesRate = BigDecimal.valueOf(shortagesYear).divide(BigDecimal.valueOf(findShortagesYear), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
} |
|
|
|
|
Integer findShortagesMon = (int) Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).count(); |
|
|
|
|
Integer shortagesMon = (int) Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).count(); |
|
|
|
|
Integer findShortagesMon = Optional.ofNullable(monPhenomenonList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).collect(Collectors.toList()).size(); |
|
|
|
|
Integer shortagesMon = Optional.ofNullable(monConclusionList).orElse(new ArrayList<>()).stream().filter(s -> s.getDefectGrading().equals(levelPhenomenon.getKey())).collect(Collectors.toList()).size(); |
|
|
|
|
CheckChartVo checkChartVo = new CheckChartVo("总计", levelPhenomenon.getKey(), findShortagesMon, shortagesMon, findShortagesYear, shortagesYear, shortagesRate); |
|
|
|
|
checkChartRes.add(checkChartVo); |
|
|
|
|
} |
|
|
|
@ -514,13 +454,13 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
HashMap<String, String> temp = new HashMap<>(); |
|
|
|
|
temp.put("deptName", checkChartRe.getDeptName()); |
|
|
|
|
String checkLevel=null; |
|
|
|
|
if("1".equals(checkChartRe.getCheckLevel())) { |
|
|
|
|
if(checkChartRe.getCheckLevel().equals("1")) { |
|
|
|
|
checkLevel="Ⅰ级缺陷"; |
|
|
|
|
} |
|
|
|
|
if("2".equals(checkChartRe.getCheckLevel())) { |
|
|
|
|
if(checkChartRe.getCheckLevel().equals("2")) { |
|
|
|
|
checkLevel="Ⅱ级缺陷"; |
|
|
|
|
} |
|
|
|
|
if("3".equals(checkChartRe.getCheckLevel())) { |
|
|
|
|
if(checkChartRe.getCheckLevel().equals("3")) { |
|
|
|
|
checkLevel="Ⅲ级缺陷"; |
|
|
|
|
} |
|
|
|
|
temp.put("checkLevel", checkLevel); |
|
|
|
@ -564,23 +504,23 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
.filter(s -> s.getType().equals(value.getType())).collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(yearTicketCollect)) { |
|
|
|
|
//年合格率和数量
|
|
|
|
|
int count = yearTicketCollect.size(); |
|
|
|
|
Integer count = yearTicketCollect.size(); |
|
|
|
|
ticketChartCell.setTicketYear(count); |
|
|
|
|
List<Long> ticketIds = yearTicketCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); |
|
|
|
|
List<Long> ticketIds = yearTicketCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); |
|
|
|
|
R<Long> ticketPassCount = ticketInfoClient.getTicketPassByIds(ticketIds); |
|
|
|
|
if (ticketPassCount.isSuccess() && ticketPassCount.getData() != null && count != 0) { |
|
|
|
|
double ticketYearPerc = BigDecimal.valueOf(ticketPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
Double ticketYearPerc = BigDecimal.valueOf(ticketPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
ticketChartCell.setTicketYeaPercr(ticketYearPerc); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (CollectionUtils.isNotEmpty(monthTicketCollect)) { |
|
|
|
|
//月合格率和数量
|
|
|
|
|
int count = monthTicketCollect.size(); |
|
|
|
|
Integer count = monthTicketCollect.size(); |
|
|
|
|
ticketChartCell.setTicketMon(count); |
|
|
|
|
List<Long> monthTicketIds = monthTicketCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); |
|
|
|
|
List<Long> monthTicketIds = monthTicketCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); |
|
|
|
|
R<Long> ticketMonthPassCount = ticketInfoClient.getTicketPassByIds(monthTicketIds); |
|
|
|
|
if (ticketMonthPassCount.isSuccess() && ticketMonthPassCount.getData() != null && count != 0) { |
|
|
|
|
double ticketMonthPerc = BigDecimal.valueOf(ticketMonthPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
Double ticketMonthPerc = BigDecimal.valueOf(ticketMonthPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
ticketChartCell.setTicketMonPerc(ticketMonthPerc); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -594,23 +534,23 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
.filter(s -> s.getTicketType().equals(value.getType())).collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(yearOperateCollect)) { |
|
|
|
|
//年合格率和数量
|
|
|
|
|
int count = yearOperateCollect.size(); |
|
|
|
|
Integer count = yearOperateCollect.size(); |
|
|
|
|
ticketChartCell.setTicketYear(count); |
|
|
|
|
List<Long> ticketIds = yearOperateCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); |
|
|
|
|
List<Long> ticketIds = yearOperateCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); |
|
|
|
|
R<Long> ticketPassCount = ticketInfoClient.getTicketPassByIds(ticketIds); |
|
|
|
|
if (ticketPassCount.isSuccess() && ticketPassCount.getData() != null && count != 0) { |
|
|
|
|
double ticketYearPerc = BigDecimal.valueOf(ticketPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
Double ticketYearPerc = BigDecimal.valueOf(ticketPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
ticketChartCell.setTicketYeaPercr(ticketYearPerc); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (CollectionUtils.isNotEmpty(monthOperateCollect)) { |
|
|
|
|
//月合格率和数量
|
|
|
|
|
int count = monthOperateCollect.size(); |
|
|
|
|
Integer count = monthOperateCollect.size(); |
|
|
|
|
ticketChartCell.setTicketMon(count); |
|
|
|
|
List<Long> monthTicketIds = monthOperateCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); |
|
|
|
|
List<Long> monthTicketIds = monthOperateCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); |
|
|
|
|
R<Long> ticketMonthPassCount = ticketInfoClient.getTicketPassByIds(monthTicketIds); |
|
|
|
|
if (ticketMonthPassCount.isSuccess() && ticketMonthPassCount.getData() != null && count != 0) { |
|
|
|
|
double ticketMonthPerc = BigDecimal.valueOf(ticketMonthPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
Double ticketMonthPerc = BigDecimal.valueOf(ticketMonthPassCount.getData()).divide(BigDecimal.valueOf(count), 2, BigDecimal.ROUND_UP).doubleValue(); |
|
|
|
|
ticketChartCell.setTicketMonPerc(ticketMonthPerc); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -681,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(); |
|
|
|
@ -704,7 +717,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
List<AnalyseDataTaosVO> analyseData = analyseDataService.periodTargetData(yearStart, yearEnd, 3, EquipmentConstants.CycleTypeEnum.YEAR_CYCLE.getType(), device.getEmCode(), HomePageConstant.ELECTRICITY_CONSUMPTION); |
|
|
|
|
if (CollectionUtil.isNotEmpty(analyseData)) { |
|
|
|
|
BigDecimal yearPower = analyseData.stream().filter(ktv -> ktv.getVal() != null) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.parseDouble(ktv.getVal()))) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.valueOf(ktv.getVal()))) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerYear = powerYear.add(yearPower); |
|
|
|
|
} |
|
|
|
@ -712,7 +725,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
List<AnalyseDataTaosVO> analyseDataYearBefore = analyseDataService.periodTargetData(yearBeforeStart, yearBeforeEnd, 3, EquipmentConstants.CycleTypeEnum.YEAR_CYCLE.getType(), device.getEmCode(), HomePageConstant.ELECTRICITY_CONSUMPTION); |
|
|
|
|
if (CollectionUtil.isNotEmpty(analyseDataYearBefore)) { |
|
|
|
|
BigDecimal powerBefore = analyseDataYearBefore.stream().filter(ktv -> ktv.getVal() != null) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.parseDouble(ktv.getVal()))) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.valueOf(ktv.getVal()))) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerYearBefore = powerYearBefore.add(powerBefore); |
|
|
|
|
} |
|
|
|
@ -720,7 +733,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
List<AnalyseDataTaosVO> analyseDataMonth = analyseDataService.periodTargetData(monthStart, monthEnd, 3, EquipmentConstants.CycleTypeEnum.MONTH_CYCLE.getType(), device.getEmCode(), HomePageConstant.ELECTRICITY_CONSUMPTION); |
|
|
|
|
if (CollectionUtil.isNotEmpty(analyseDataMonth)) { |
|
|
|
|
BigDecimal powerBefore = analyseDataMonth.stream().filter(ktv -> ktv.getVal() != null) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.parseDouble(ktv.getVal()))) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.valueOf(ktv.getVal()))) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonth = powerMonth.add(powerBefore); |
|
|
|
|
} |
|
|
|
@ -728,7 +741,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
List<AnalyseDataTaosVO> analyseDataMonthBefore = analyseDataService.periodTargetData(beforeMonthStart, beforeMonthEnd, 3, EquipmentConstants.CycleTypeEnum.MONTH_CYCLE.getType(), device.getEmCode(), HomePageConstant.ELECTRICITY_CONSUMPTION); |
|
|
|
|
if (CollectionUtil.isNotEmpty(analyseDataMonthBefore)) { |
|
|
|
|
BigDecimal powerBefore = analyseDataMonthBefore.stream().filter(ktv -> ktv.getVal() != null) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.parseDouble(ktv.getVal()))) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.valueOf(ktv.getVal()))) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonthBefore = powerMonthBefore.add(powerBefore); |
|
|
|
|
} |
|
|
|
@ -736,7 +749,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService {
|
|
|
|
|
List<AnalyseDataTaosVO> analyseDataMonthBeforeYear = analyseDataService.periodTargetData(monthStartBeforeYear, monthEndBeforeYear, 3, EquipmentConstants.CycleTypeEnum.MONTH_CYCLE.getType(), device.getEmCode(), HomePageConstant.ELECTRICITY_CONSUMPTION); |
|
|
|
|
if (CollectionUtil.isNotEmpty(analyseDataMonthBeforeYear)) { |
|
|
|
|
BigDecimal powerBefore = analyseDataMonthBeforeYear.stream().filter(ktv -> ktv.getVal() != null) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.parseDouble(ktv.getVal()))) |
|
|
|
|
.map(ktv -> BigDecimal.valueOf(Double.valueOf(ktv.getVal()))) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
powerMonthYearBefore = powerMonthYearBefore.add(powerBefore); |
|
|
|
|
} |
|
|
|
|