diff --git a/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java b/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java index e8c5d55..981f9f7 100644 --- a/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java +++ b/hzims-service/assets/src/main/java/com/hnac/hzims/spare/aspect/LimitRemindAspect.java @@ -171,9 +171,9 @@ public class LimitRemindAspect { private void warningPush(String alert, User pusher,Long warehouseId) { MessagePushRecordDto message = new MessagePushRecordDto(); - message.setBusinessClassify("business"); - message.setBusinessKey(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); - message.setSubject(MessageConstants.BusinessClassifyEnum.ASSETS.getDescription()); + message.setBusinessClassify(MessageConstants.BusinessClassifyEnum.ASSETS.getKey()); + message.setBusinessKey("资产预警"); + message.setSubject("资产预警"); message.setTaskId(warehouseId); message.setTenantId("200000"); message.setTypes(Arrays.asList(MessageConstants.APP_PUSH, MessageConstants.WS_PUSH)); @@ -191,7 +191,7 @@ public class LimitRemindAspect { } message.setPusher(userId.toString()); message.setPusherName(pusher.getName()); - message.setAccount(pusher.getAccount()); + message.setAccount(pusher.getId().toString()); message.setCreateUser(userId); messageClient.sendMessage(message); diff --git a/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/systemlog/service/impl/StatisticsServiceImpl.java b/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/systemlog/service/impl/StatisticsServiceImpl.java index 581533f..6a279e0 100644 --- a/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/systemlog/service/impl/StatisticsServiceImpl.java +++ b/hzims-service/hzims-middle/src/main/java/com/hnac/hzims/middle/systemlog/service/impl/StatisticsServiceImpl.java @@ -109,8 +109,12 @@ public class StatisticsServiceImpl extends ServiceImpl selectPage(Page page1, StatisticsVo statistics) { - statistics.setCreateTime(statistics.getCreateTime().substring(0, 10)); - statistics.setEndTime(statistics.getEndTime().substring(0, 10)); + if (statistics.getCreateTime() != null) { + statistics.setCreateTime(statistics.getCreateTime().substring(0, 10)); + } + if (statistics.getEndTime() != null) { + statistics.setEndTime(statistics.getEndTime().substring(0, 10)); + } IPage statisticsResponseVoIPage = baseMapper.selectPages(page1, statistics); // List records = statisticsResponseVoIPage.getRecords(); // List collect = records.stream().sorted(Comparator.comparing(StatisticsResponseVo::getSort)).collect(Collectors.toList()); diff --git a/hzims-service/hzims-middle/src/main/resources/db/1.0.1.sql b/hzims-service/hzims-middle/src/main/resources/db/1.0.1.sql index 31cd566..a4d1b49 100644 --- a/hzims-service/hzims-middle/src/main/resources/db/1.0.1.sql +++ b/hzims-service/hzims-middle/src/main/resources/db/1.0.1.sql @@ -1,3 +1,5 @@ +alter table hzims_workflow_operation_log add is_operation_log tinyint(1) comment '1 正常日志 0 错误日志'; +alter table hzims_statistics add sort int comment '排序'; create table log_options_module_name ( id bigint primary key auto_increment, diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AreaMonthReportController.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AreaMonthReportController.java index 38638c5..d0db6d4 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AreaMonthReportController.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/controller/AreaMonthReportController.java @@ -123,11 +123,11 @@ public class AreaMonthReportController extends BladeController { @ApiOperation("导出水电站月报") @GetMapping("/exportHydropowerStationMonthReport") public R exportHydropowerStationMonthReport(HttpServletResponse response, @ApiParam(value = "日期-年", required = true) Integer year,@ApiParam(value = "日期-月", required = true) Integer month, - @ApiParam(value = "日期-日", required = true) Integer date,@ApiParam(value = "站点Id", required = true) Long stationId,@ApiParam(value = "月报类型", required = true) Long type) { + @ApiParam(value = "站点Id", required = true) Long deptId,@ApiParam(value = "月报类型", required = true) Long type) { HashMap map = new HashMap<>(); if (type==1){ - service.exportHydropowerStationMonthReport(response, map,year,month,date,stationId); + service.exportHydropowerStationMonthReport(response, map,year,month,deptId); //word模板相对路径、word生成路径、word生成的文件名称、数据源 } XWPFDocument xwpfDocument = WordUtils.exportWordV2("template/waterMonReport.docx", map); diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IAreaMonthReportService.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IAreaMonthReportService.java index 3cf0c3a..e8007a3 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IAreaMonthReportService.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/IAreaMonthReportService.java @@ -18,5 +18,5 @@ public interface IAreaMonthReportService { R export(HttpServletResponse response, String date); - R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap map, Integer year, Integer month, Integer date,Long stationId); + R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap map, Integer year, Integer month,Long deptId); } diff --git a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java index 4ff4e8e..67ec81b 100644 --- a/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java +++ b/hzims-service/operational/src/main/java/com/hnac/hzims/operational/main/service/impl/AreaMonthReportServiceImpl.java @@ -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 map, Integer year, Integer month, Integer date, Long deptId) { + public R exportHydropowerStationMonthReport(HttpServletResponse response, HashMap map, Integer year, Integer month, Long deptId) { R> 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 deptList = deptR.getData().stream().filter(s -> s.getStationId() != null).collect(Collectors.toList()); - List deptByUser = deptByCurrentUser.getData().stream().map(Dept::getId).collect(Collectors.toList()); + if (deptList == null) { + return R.fail("该机构不包含水站信息"); + } + List 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 stationIds = stationEntityList.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List 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> 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 deptIdsString = deptIds.stream().map(String::valueOf).collect(Collectors.toList()); - List planYearData = planGenertionClient.getPlanGenerationByParam(null, deptIdsString, year.toString()); - List powerPercentageVoList = new ArrayList<>(); - //水电站,光伏站和带代运维数据近三年数据 - Map> powerMapThree = (Map>) redisTemplate.opsForValue().get(RECENT_YEAR_POWER_DATA); - List listByYear = TimeUtils.getListByYear(year); - List 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> deviceMap : powerMapThree.entrySet()) { - String deptNameByKey; - if (stationIds.contains(deviceMap.getKey())) { - MonPowerPercentageVo powerVo = new MonPowerPercentageVo(); - powerVo.setDeptId(deviceMap.getKey()); - List collect = stationEntityList.stream().filter(s -> deviceMap.getKey().equals(s.getId())).collect(Collectors.toList()); - Long dept = collect.get(0).getRefDept(); - List 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 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 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 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> powerMap = new ArrayList<>(powerPercentageVoList.size()); - for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { - HashMap 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> powerMap = new ArrayList<>(powerPercentageVoList.size()); + for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { + HashMap 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 planYearAll = planGenertionClient.getPlanGenerationByParam(null, Collections.singletonList(deptId.toString()), year.toString()); - List planMonAll = planGenertionClient.getPlanGenerationByParam(null, Collections.singletonList(deptId.toString()), year + "-" + month); + List planYearAll = planGenertionClient.getPlanGenerationByParam(null, Arrays.asList(deptId.toString()), year.toString()); + List planMonAll = planGenertionClient.getPlanGenerationByParam(null, Arrays.asList(deptId.toString()), year + "-" + month); getTabelSum(deptId, powerPercentageVoList, planYearAll, planMonAll, map); //发电情况统计表数据 - ArrayList> list = new ArrayList<>(powerPercentageVoList.size()); - for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { - HashMap 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> list = new ArrayList<>(powerPercentageVoList.size()); + for (MonPowerPercentageVo monPowerPercentageVo : powerPercentageVoList) { + HashMap 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 monPhenomenonList = operPhenomenonService.list(wrapper); monPhenomenonList = monPhenomenonList.stream().filter(s -> s.getDefectLevel() != null).collect(Collectors.toList()); - List monConclusionList = monPhenomenonList.stream().filter(s -> "1".equals(s.getConclusionStatus())).collect(Collectors.toList()); + List monConclusionList = monPhenomenonList.stream().filter(s -> s.getConclusionStatus().equals("1")).collect(Collectors.toList()); // 只填写二类及以上缺陷 - List monConclusionListBy = monConclusionList.stream().filter(s -> !"1".equals(s.getDefectGrading())).collect(Collectors.toList()); + List monConclusionListBy = monConclusionList.stream().filter(s -> !s.getDefectGrading().equals("1")).collect(Collectors.toList()); // 各电站缺陷处理统计表 monConclusionListBy.stream().sorted(Comparator.comparing(OperPhenomenonEntity::getCreateDept).reversed().thenComparing(OperPhenomenonEntity::getDefectGrading)); ArrayList> checkList = new ArrayList<>(); @@ -431,13 +371,13 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { HashMap 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>> deptMapEntry : phenomenonMap.entrySet()) { R deptName1 = sysClient.getDeptName(deptMapEntry.getKey()); for (Map.Entry> 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> levelPhenomenonList = yearPhenomenonEntities.stream().collect(Collectors.groupingBy(OperPhenomenonEntity::getDefectGrading)); for (Map.Entry> 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 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 ticketIds = yearTicketCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List ticketIds = yearTicketCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); R 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 monthTicketIds = monthTicketCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List monthTicketIds = monthTicketCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); R 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 ticketIds = yearOperateCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List ticketIds = yearOperateCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); R 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 monthTicketIds = monthOperateCollect.stream().map(BaseEntity::getId).collect(Collectors.toList()); + List monthTicketIds = monthOperateCollect.stream().map(s -> s.getId()).collect(Collectors.toList()); R 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 getMonPowerPercentageVos(Integer year, Integer month, List deptList, List deptIds, List stationEntityList, List stationIds, Integer yearBefore, Integer monthBefore) { + List deptIdsString = deptIds.stream().map(s -> String.valueOf(s)).collect(Collectors.toList()); + List planYearData = planGenertionClient.getPlanGenerationByParam(null, deptIdsString, year.toString()); + List powerPercentageVoList = new ArrayList<>(); + //水电站,光伏站和带代运维数据近三年数据 + Map> powerMapThree = (Map>) redisTemplate.opsForValue().get(RECENT_YEAR_POWER_DATA); + List listByYear = TimeUtils.getListByYear(year); + List 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> deviceMap : powerMapThree.entrySet()) { + String deptNameByKey = ""; + if (stationIds.contains(deviceMap.getKey())) { + MonPowerPercentageVo powerVo = new MonPowerPercentageVo(); + powerVo.setDeptId(deviceMap.getKey()); + List collect = stationEntityList.stream().filter(s -> deviceMap.getKey().equals(s.getId())).collect(Collectors.toList()); + if (collect!=null) { + Long dept = collect.get(0).getRefDept(); + List 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 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 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 deptList, String yearStart, String yearEnd, String yearBeforeStart, String yearBeforeEnd, String monthStart, String monthEnd, String beforeMonthStart, String beforeMonthEnd, String monthStartBeforeYear, String monthEndBeforeYear, List devices, List planYearData, List powerPercentageVoList) { for (Dept dept : deptList) { MonPowerPercentageVo powerVo = new MonPowerPercentageVo(); @@ -704,7 +717,7 @@ public class AreaMonthReportServiceImpl implements IAreaMonthReportService { List 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 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 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 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 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); } diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java index ab8a946..4da8447 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java @@ -729,7 +729,9 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl createDept = userClient.getDataScope(bladeUser.getUserId()); - + log.info("================================================================"); + log.info("获取权限Id =======================> ", createDept); + log.info("================================================================"); StandardTicketInfoDto standardTicketInfoDto = new StandardTicketInfoDto(); BeanUtils.copyProperties(ticketCountQueryVo, standardTicketInfoDto); LambdaQueryWrapper queryWrapper = this.getQueryWrapper(standardTicketInfoDto); diff --git a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketCountServiceImpl.java b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketCountServiceImpl.java index 1b94fa1..915a6ea 100644 --- a/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketCountServiceImpl.java +++ b/hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/service/impl/TicketCountServiceImpl.java @@ -405,7 +405,8 @@ public class TicketCountServiceImpl extends BaseServiceImpl getStandardTicketCountList(List createDept, List items, String ticketType, String dateTime, BladeUser user) { + private List + getStandardTicketCountList(List createDept, List items, String ticketType, String dateTime, BladeUser user) { List ticketInfoEntities = standardTicketInfoService.selectStandardTicketByDeptIdWithTicketType(createDept, ticketType, dateTime); if (CollectionUtils.isEmpty(ticketInfoEntities)) { @@ -459,6 +460,7 @@ public class TicketCountServiceImpl extends BaseServiceImpl evaluateEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); evaluateEntityLambdaQueryWrapper.in(TicketInfoEvaluateEntity::getTicketId, ticketIdList); evaluateEntityLambdaQueryWrapper.eq(BaseEntity::getStatus, 1); + evaluateEntityLambdaQueryWrapper.groupBy(TicketInfoEvaluateEntity::getTicketId); List evaluateEntities = ticketInfoEvaluateService.list(evaluateEntityLambdaQueryWrapper); ticketCount.setTicketProportionNum(evaluateEntities.size()); @@ -549,6 +551,7 @@ public class TicketCountServiceImpl extends BaseServiceImpl evaluateEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); evaluateEntityLambdaQueryWrapper.in(TicketInfoEvaluateEntity::getTicketId, ticketIdList); evaluateEntityLambdaQueryWrapper.eq(BaseEntity::getStatus, 1); + evaluateEntityLambdaQueryWrapper.groupBy(TicketInfoEvaluateEntity::getTicketId); List evaluateEntities = ticketInfoEvaluateService.list(evaluateEntityLambdaQueryWrapper); ticketCount.setTicketProportionNum(evaluateEntities.size()); diff --git a/hzims-service/ticket/src/main/resources/db/2.0.0.sql b/hzims-service/ticket/src/main/resources/db/2.0.0.sql index 28979e5..ecd99b4 100644 --- a/hzims-service/ticket/src/main/resources/db/2.0.0.sql +++ b/hzims-service/ticket/src/main/resources/db/2.0.0.sql @@ -100,29 +100,35 @@ SET FOREIGN_KEY_CHECKS=1; -- auto-generated definition +-- auto-generated definition create table hzims_ticket_count ( - id bigint auto_increment comment '主键ID' + id bigint auto_increment comment '主键ID' primary key, - date_time varchar(20) null comment '日期', - dept_id bigint null comment '站点Id', - dept_name varchar(100) null comment '站点名称', - ticket_type varchar(255) null comment '票据类型', - ticket_number int null comment '开票数量', - ticket_complete_num int null comment '完成数量', - ticket_delay_num int null comment '延期数量', - ticket_proportion_num int null comment '合格数量', - create_time datetime default CURRENT_TIMESTAMP null comment '创建时间', - update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间', - is_deleted tinyint(1) default 0 null comment '逻辑删除', - tenant_id varchar(12) null comment '租户ID', - create_dept varchar(30) null comment '创建部门', - status tinyint null, - create_user bigint not null comment '创建人', - update_user bigint null + date_time varchar(20) null comment '日期', + dept_id bigint null comment '站点Id', + dept_name varchar(100) null comment '站点名称', + ticket_type varchar(255) null comment '票据类型', + ticket_number int null comment '开票数量', + ticket_complete_num int null comment '完成数量', + ticket_delay_num int null comment '延期数量', + ticket_proportion_num int null comment '合格数量', + create_time datetime default CURRENT_TIMESTAMP null comment '创建时间', + update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间', + is_deleted tinyint(1) default 0 null comment '逻辑删除', + tenant_id varchar(12) null comment '租户ID', + create_dept varchar(30) null comment '创建部门', + status tinyint null, + create_user bigint not null comment '创建人', + update_user bigint null, + invalidated_ticket_num int null comment '废票数量', + wrong_ticket_num int null comment '错票数量', + percent_pass_ticket varchar(50) null comment '合格率' ) comment '两票统计分析' row_format = DYNAMIC; + + insert into hzims_work_ticket_finish(ticket_id, ground_num, brake_number) select ticket_id, ground_switch_count,ground_wire_code from hzims_work_ticket_flow;