diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsStatationStatInfoDTO.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsStatationStatInfoDTO.java index 478c12800..f3a7bb3fd 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsStatationStatInfoDTO.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/dto/PmsStatationStatInfoDTO.java @@ -25,15 +25,6 @@ public class PmsStatationStatInfoDTO implements Serializable { */ private String orgName; - /** - * 母线id - */ - private String generatrixId; - - /** - * 母线名称 - */ - private String generatrixName; /** * 监测点id diff --git a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java index 051f8c59d..0ae1bbffb 100644 --- a/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java +++ b/pqs-device/pms-device/pms-device-api/src/main/java/com/njcn/device/pms/pojo/po/SubstationExpend.java @@ -79,11 +79,11 @@ public class SubstationExpend implements Serializable { private List sites; -// public SubstationExpend(String name, String type, BigDecimal lng, BigDecimal lat, String deptId) { -// this.name = name; -// this.type = type; -// this.lng = lng; -// this.lat = lat; -// this.deptId = deptId; -// } + public SubstationExpend(String name, String type, BigDecimal lng, BigDecimal lat, String deptId) { + this.name = name; + this.type = type; + this.lng = lng; + this.lat = lat; + this.deptId = deptId; + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java index 53bda4b1a..c4192a4f1 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/SubstationExpendController.java @@ -24,6 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.njcn.web.controller.BaseController; +import java.math.BigDecimal; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -38,7 +40,7 @@ import java.util.Map; @Slf4j @Api(tags = "冀北变电站地图信息") @RestController -@RequestMapping("/substationExpend") +@RequestMapping("/pms/substationExpend") @RequiredArgsConstructor public class SubstationExpendController extends BaseController { @@ -46,7 +48,7 @@ public class SubstationExpendController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @PostMapping("/getPVSubstationExpendInfo") + @PostMapping("/getSubstationExpendInfo") @ApiOperation("冀北变电站地图信息") @ApiImplicitParam(name = "param", value = "冀北变电站地图信息参数", required = true) public HttpResult>> getSubstationExpendInfo(@RequestBody StatisticsBizBaseParam param) { @@ -74,5 +76,31 @@ public class SubstationExpendController extends BaseController { List communicationStatus = substationExpendService.getCommunicationStatus(param); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, communicationStatus, methodDescribe); } + + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/insert") + @ApiOperation("变电站信息") + @ApiImplicitParam(name = "insert", value = "变电站信息", required = true) + public HttpResult insert(@RequestBody StatisticsBizBaseParam param) { + String methodDescribe = getMethodDescribe("insert"); + List list = Arrays.asList( + new SubstationExpend("500kV天马变电站", "1fa650685c77db1656c70f9db4a2edc6",new BigDecimal(119.292327),new BigDecimal(40.215015),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("500kV昌黎变电站", "1fa650685c77db1656c70f9db4a2edc6",new BigDecimal(118.990809),new BigDecimal(40.016014),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV陈官屯变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(118.998356),new BigDecimal(39.990971),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV小营变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.298044),new BigDecimal(39.814401),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV深河变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.453054),new BigDecimal(39.940208),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV杜庄变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.540182),new BigDecimal(40.026883),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV平方变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.173903),new BigDecimal(39.730601),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV肖营子变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(118.866099),new BigDecimal(40.279209),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV丰钢变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(118.913885),new BigDecimal(39.663569),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV碣石变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.191153),new BigDecimal(39.723464),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV龙家店变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.062243),new BigDecimal(39.719279),"17439407bfee299b7e38f2e54a8f6d28"), + new SubstationExpend("220kV仙螺岛变电站", "1b7b58ed8fcc2992b95334eaa9010c41",new BigDecimal(119.446926),new BigDecimal(39.792502),"17439407bfee299b7e38f2e54a8f6d28") + ); + + boolean b = substationExpendService.saveBatch(list); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, b, methodDescribe); + } } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java index d6a334d24..aa2fc6ade 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/DistributionMonitorMapper.java @@ -3,6 +3,7 @@ package com.njcn.device.pms.mapper.majornetwork; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO; import com.njcn.device.pms.pojo.dto.PmsSimpleDTO; import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO; @@ -73,9 +74,9 @@ public interface DistributionMonitorMapper extends BaseMapper statisticTerminal(@Param("list") List terminalIds); - List getOnlineRate(@Param("list") List terminalIds); + List getOnlineRate(@Param("list") List terminalIds,@Param("param") StatisticsBizBaseParam param); - List getIntegrity(@Param("list") List terminalIds); + List getIntegrity(@Param("list") List terminalIds,@Param("param")StatisticsBizBaseParam param); List getDisMonitorAllList(@Param("subId") String subId,@Param("type") Integer type); diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml index 947963699..5b7a1d305 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/DistributionMonitorMapper.xml @@ -229,11 +229,19 @@ pm.Voltage_Level name, IFNULL(SUM(rmded.dev_effective_rate),0) doubleValue FROM pms_monitor pm - LEFT JOIN r_mp_dev_evaluate_detail rmded ON pm.Terminal_Id = rmded.device_id - WHERE pm.Terminal_Id IN - - #{item} - + INNER JOIN r_mp_dev_evaluate_detail rmded ON pm.Terminal_Id = rmded.device_id + + pm.Terminal_Id IN + + #{item} + + + AND DATE_FORMAT(data_date, '%Y-%m-%d') >= DATE_FORMAT(#{param.startTime}, '%Y-%m-%d') + + + AND DATE_FORMAT(data_date, '%Y-%m-%d') <= DATE_FORMAT(#{param.endTime}, '%Y-%m-%d') + + GROUP BY pm.Voltage_Level diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/StatationStatMapper.xml b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/StatationStatMapper.xml index 8e5c14b0a..69d0850ca 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/StatationStatMapper.xml +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/mapper/majornetwork/mapping/StatationStatMapper.xml @@ -9,8 +9,6 @@ pm.Org_Name AS orgName, pm.Powerr_Id AS powerId, pm.Powerr_Name AS powerName, - pm.Generatrix_Id AS generatrixId, - pm.Generatrix_Name AS generatrixName, pm.Id AS monitorId, pm.`Name` AS monitorName, pss.Voltage_Level AS powerVoltageLevel diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java index 321c9f1e7..fca85d0a1 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/impl/SubstationExpendServiceImpl.java @@ -122,12 +122,20 @@ public class SubstationExpendServiceImpl extends ServiceImpl monitorIds = new ArrayList<>(); generalDeviceDTOS.stream().forEach(e -> monitorIds.addAll(e.getMonitorIdList())); List monitorStatistic = distributionMonitorMapper.statisticMonitor(monitorIds); - ledgerStaticDTO.setMonitorStatistics(monitorStatistic); + Map collect1 = monitorStatistic.stream().collect(Collectors.groupingBy(PmsSimpleDTO::getName, Collectors.counting())); + List monitor=new ArrayList<>(); + PmsSimpleDTO pDto; + for (Map.Entry stringLongEntry : collect1.entrySet()) { + pDto=new PmsSimpleDTO(); + pDto.setName(stringLongEntry.getKey()); + pDto.setStatistics(Math.toIntExact(stringLongEntry.getValue())); + monitor.add(pDto); + } + ledgerStaticDTO.setMonitorStatistics(monitor); //获取所有监测点信息 - List lineIds = generalDeviceDTOS.stream().flatMap(dto -> dto.getMonitorIdList().stream()).collect(Collectors.toList()); - List pmsSimpleDTOS = distributionMonitorMapper.statisticMonitor(lineIds); + List pmsSimpleDTOS = monitorStatistic; //根据电压等级进行分组 Map> voltageMap = pmsSimpleDTOS.stream().collect(Collectors.groupingBy( @@ -191,7 +199,7 @@ public class SubstationExpendServiceImpl extends ServiceImpl terminal=new ArrayList<>(); for (Map.Entry> stringListEntry : terminalMap.entrySet()) { if(StrUtil.isNotBlank(stringListEntry.getKey())){ - List monitorList = stringListEntry.getValue().stream().filter(x -> dto.getMonitorIdList().contains(x.getId())).collect(Collectors.toList()); + List monitorList = stringListEntry.getValue().stream().filter(x -> dto.getTerminalIdList().contains(x.getId())).collect(Collectors.toList()); PmsSimpleDTO.PmsSimpleOrg simpleDTO=new PmsSimpleDTO.PmsSimpleOrg(); if(CollUtil.isNotEmpty(monitorList)){ simpleDTO.setStatistics((int) monitorList.stream().mapToDouble(PmsSimpleDTO::getStatistics).sum()); @@ -213,22 +221,14 @@ public class SubstationExpendServiceImpl extends ServiceImpl> terminalsMap = new HashMap<>(); -// for (PmsGeneralDeviceDTO generalDeviceDTO : generalDeviceDTOS) { -// List terminals = distributionMonitorMapper.statisticTerminal(terminalIds); -// terminalsMap.put(generalDeviceDTO.getName(),terminals); -// } -// ledgerStaticDTO.setTerminalStatisticsByDept(terminalsMap); - // 统计在线率 - List onlineRateStatistic = distributionMonitorMapper.getOnlineRate(terminalIds); + List onlineRateStatistic = distributionMonitorMapper.getOnlineRate(terminalIds,param); double sum = onlineRateStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum()!=0?onlineRateStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum():3.14159; onlineRateStatistic.forEach(dto -> dto.setDoubleValue(new BigDecimal(dto.getDoubleValue() * 100 / sum).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())); ledgerStaticDTO.setOnlineRateStatistics(onlineRateStatistic); // 完整性 - List integrityStatistic = distributionMonitorMapper.getIntegrity(terminalIds); + List integrityStatistic = distributionMonitorMapper.getIntegrity(monitorIds,param); double s = integrityStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum()!=0?integrityStatistic.stream().mapToDouble(PmsSimpleDTO::getDoubleValue).sum():3.14159; integrityStatistic.forEach(dto -> dto.setDoubleValue(new BigDecimal(dto.getDoubleValue() * 100 / s).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue())); ledgerStaticDTO.setIntegrityStatistics(integrityStatistic); @@ -247,16 +247,16 @@ public class SubstationExpendServiceImpl extends ServiceImpl info =new ArrayList<>(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))).append("' "); -// if(CollUtil.isNotEmpty(terminalIds)){ -// stringBuilder.append(" and ").append("("); -// for (int i = 0; i < terminalIds.size(); i++) { -// if (terminalIds.size() - i != 1) { -// stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("' or "); -// } else { -// stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("')"); -// } -// } -// } + if(CollUtil.isNotEmpty(terminalIds)){ + stringBuilder.append(" and ").append("("); + for (int i = 0; i < terminalIds.size(); i++) { + if (terminalIds.size() - i != 1) { + stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("' or "); + } else { + stringBuilder.append("dev_id = '").append(terminalIds.get(i)).append("')"); + } + } + } stringBuilder.append(" limit "+param.getLimit()); String sql = "select * from " + InfluxDBPublicParam.PQS_COMMUNICATE + " where " + stringBuilder + InfluxDBPublicParam.TIME_ZONE; // 获取暂降事件 diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/EventLogParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/EventLogParam.java index be351fd13..174ce2e99 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/EventLogParam.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/EventLogParam.java @@ -1,13 +1,10 @@ package com.njcn.device.pq.pojo.param; -import com.njcn.common.pojo.constant.PatternRegex; +import com.njcn.web.pojo.param.BaseParam; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.hibernate.validator.constraints.Range; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Pattern; /** * @version 1.0.0 @@ -16,34 +13,12 @@ import javax.validation.constraints.Pattern; */ @Data @ApiModel -public class EventLogParam { +public class EventLogParam extends BaseParam { /** * 推送状态 */ @ApiModelProperty("推送状态(0.全部1.成功2.失败)") private Integer result; - /** - * 开始时间 - */ - @ApiModelProperty("开始时间") - @Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误") - private String searchBeginTime; - /** - * 结束时间 - */ - @ApiModelProperty("结束时间") - @Pattern(regexp = PatternRegex.TIME_FORMAT, message = "时间格式错误") - private String searchEndTime; - - @ApiModelProperty("页码") - @NotNull(message = "页码不可为空") - @Range(min = 1,message = "页码必须大于0") - private Integer pageNum; - - @ApiModelProperty("条数") - @NotNull(message = "条数不可为空") - @Range(min = 1,message = "条数必须大于0") - private Integer pageSize; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/EventPushLogs.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/EventPushLogs.java index ffba6966c..5dc2a2688 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/EventPushLogs.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/EventPushLogs.java @@ -16,11 +16,14 @@ import java.time.LocalDateTime; @TableName("cld_event_push_log") public class EventPushLogs { - @TableId("Time_Id") - private LocalDateTime timeId; + @TableId("Event_Id") + private String eventId; - @TableField("Line_Id") - private String lineId; + @TableField("start_time") + private LocalDateTime startTime; + + @TableField("measurement_point_id") + private String measurementPointId; @TableField("Create_Time") private LocalDateTime createTime; diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java index 894de7deb..ea5be458a 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/LineMapper.java @@ -428,4 +428,12 @@ public interface LineMapper extends BaseMapper { * @date 2023/5/10 */ List getLineBySubStation(@Param("subId")String subId); + + + /** + * 根据条件进行监测筛选出监测点id + * @author wr + * @date 2023/5/25 + */ + List getLineByIDs(@Param("searchValue")String searchValue); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index 51e21bef9..2ad3c042e 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -1084,5 +1084,29 @@ + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LogManageServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LogManageServiceImpl.java index 38d57c702..0c08ee943 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LogManageServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/LogManageServiceImpl.java @@ -2,9 +2,12 @@ package com.njcn.device.pq.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Lists; +import com.njcn.db.constant.DbConstant; import com.njcn.device.pq.mapper.EventPushLogsMapper; import com.njcn.device.pq.mapper.LineMapper; import com.njcn.device.pq.mapper.LogManageMapper; @@ -97,6 +100,10 @@ public class LogManageServiceImpl implements LogManageService { @Override public Page getEventLogData(EventLogParam eventLogParam) { + + //查询全部时间 + List lineByIDs = lineMapper.getLineByIDs(eventLogParam.getSearchValue()); + Page page = new Page<>(); page.setSize(eventLogParam.getPageSize()); page.setCurrent(eventLogParam.getPageNum()); @@ -105,35 +112,44 @@ public class LogManageServiceImpl implements LogManageService { Page p = new Page<>(); p.setSize(eventLogParam.getPageSize()); p.setCurrent(eventLogParam.getPageNum()); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.between(EventPushLogs::getTimeId,DateUtil.beginOfDay(DateUtil.parse(eventLogParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(eventLogParam.getSearchEndTime()))); - wrapper.eq(EventPushLogs::getResult,eventLogParam.getResult()); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.between("start_time",DateUtil.beginOfDay(DateUtil.parse(eventLogParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(eventLogParam.getSearchEndTime()))); + wrapper.eq(eventLogParam.getResult()!=null,"Result",eventLogParam.getResult()); + wrapper.in("measurement_point_id",lineByIDs); + if (ObjectUtil.isAllNotEmpty(eventLogParam.getSortBy(), eventLogParam.getOrderBy())) { + wrapper.orderBy(true, eventLogParam.getOrderBy().equals(DbConstant.ASC), StrUtil.toUnderlineCase(eventLogParam.getSortBy())); + } else { + //没有排序参数,默认根据sort字段排序,没有排序字段的,根据updateTime更新时间排序 + wrapper.orderBy(true, false, "start_time"); + } Page rawPage = eventPushLogsMapper.selectPage(p, wrapper); List rawLogs = rawPage.getRecords(); if (CollectionUtil.isNotEmpty(rawLogs)) { - List lineIndexes = rawLogs.stream().map(EventPushLogs::getLineId).distinct().collect(Collectors.toList()); - List rawEventDetailData = eventDetailFeignClient.getEventDetailLimit(lineIndexes, eventLogParam.getSearchBeginTime(), eventLogParam.getSearchEndTime(), eventLogParam.getPageSize(), eventLogParam.getPageNum()).getData(); + List lineIndexes = rawLogs.stream().map(EventPushLogs::getMeasurementPointId).distinct().collect(Collectors.toList()); + + List rawEventDetailData = eventDetailFeignClient.getEventDetail(lineIndexes, eventLogParam.getSearchBeginTime(), eventLogParam.getSearchEndTime()).getData(); List eventDetails = rawEventDetailData.stream().filter(eventDetail -> filterLineIdAndTime(eventDetail, rawLogs)).collect(Collectors.toList()); + Map> eventDetailMap = eventDetails.stream().collect(Collectors.groupingBy(EventDetail::getLineId)); List lineList = eventDetails.stream().map(EventDetail::getLineId).collect(Collectors.toList()); List lineAreaInfos = lineMapper.getBaseLineAreaInfo(lineList, null, null); Map> areaMap = lineAreaInfos.stream().collect(Collectors.groupingBy(AreaLineInfoVO::getLineId)); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); for (EventPushLogs rawLog : rawLogs) { - if (Objects.isNull(areaMap.get(rawLog.getLineId()).get(0)) || Objects.isNull(eventDetailMap.get(rawLog.getLineId()).get(0))) { + if (Objects.isNull(areaMap.get(rawLog.getMeasurementPointId()).get(0)) || Objects.isNull(eventDetailMap.get(rawLog.getMeasurementPointId()).get(0))) { continue; } EventLogVO eventLogVO = new EventLogVO(); - eventLogVO.setLineId(rawLog.getLineId()); - eventLogVO.setTime(dateTimeFormatter.format(rawLog.getTimeId())); - eventLogVO.setLine(areaMap.get(rawLog.getLineId()).get(0).getLineName()); - eventLogVO.setSubstation(areaMap.get(rawLog.getLineId()).get(0).getSubName()); - eventLogVO.setPowerCompany(areaMap.get(rawLog.getLineId()).get(0).getGdName()); - Double e=eventDetailMap.get(rawLog.getLineId()).get(0).getFeatureAmplitude(); + eventLogVO.setLineId(rawLog.getMeasurementPointId()); + eventLogVO.setTime(dateTimeFormatter.format(rawLog.getStartTime())); + eventLogVO.setLine(areaMap.get(rawLog.getMeasurementPointId()).get(0).getLineName()); + eventLogVO.setSubstation(areaMap.get(rawLog.getMeasurementPointId()).get(0).getSubName()); + eventLogVO.setPowerCompany(areaMap.get(rawLog.getMeasurementPointId()).get(0).getGdName()); + Double e=eventDetailMap.get(rawLog.getMeasurementPointId()).get(0).getFeatureAmplitude(); BigDecimal bd = new BigDecimal(e); e= bd.setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); eventLogVO.setEventValue(String.valueOf(e*100)); - double i = eventDetailMap.get(rawLog.getLineId()).get(0).getDuration(); + double i = eventDetailMap.get(rawLog.getMeasurementPointId()).get(0).getDuration(); eventLogVO.setPersistTime(String.valueOf(i)); eventLogVO.setCreatTime(dateTimeFormatter.format(rawLog.getCreateTime())); eventLogVO.setCreatTimed(dateTimeFormatter.format(rawLog.getCreateTime())); @@ -155,72 +171,14 @@ public class LogManageServiceImpl implements LogManageService { page.setRecords(list); } return page; - - -// /** 查询event_push_logs表数据*/ -// List eventPushLogs = getEventPushLogs(eventLogParam.getSearchBeginTime(), eventLogParam.getSearchEndTime(), eventLogParam.getResult()); -// //待分页数据总量 -// page.setTotal(eventPushLogs.size()); -// //分页总页数 -// int pages = (int)Math.ceil(eventPushLogs.size()*1.0/eventLogParam.getPageSize()); -// page.setPages(pages); -// if (!CollectionUtils.isEmpty(eventPushLogs)) { -// List lineIndexes = eventPushLogs.stream().map(EventPushLogs::getLineId).collect(Collectors.toList()); -// lineIndexes = lineIndexes.stream().distinct().collect(Collectors.toList()); -// /** 分页查询pqs_eventdetail表数据*/ -// List eventDetailData = eventDetailFeignClient.getEventDetailLimit(lineIndexes, eventLogParam.getSearchBeginTime(), eventLogParam.getSearchEndTime(), eventLogParam.getPageSize(), eventLogParam.getPageNum()).getData(); -// if (!CollectionUtils.isEmpty(eventDetailData)) { -// for (EventPushLogs pushLogs: eventPushLogs) { -// for (EventDetail eventDetail: eventDetailData) { -// if (pushLogs.getLineId().equals(eventDetail.getLineId()) && pushLogs.getTimeId().equals(eventDetail.getStartTime())) { -// EventLogVO event = logManageMapper.getEventLogData(pushLogs.getLineId()); -// if (Objects.isNull(event)) { -// continue; -// } -// EventLogVO eventLogVO = new EventLogVO(); -// eventLogVO.setLineId(pushLogs.getLineId()); -// LocalDateTime localDateTime = LocalDateTime.ofInstant(pushLogs.getTimeId(), ZoneId.systemDefault()); -// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); -// String format = dateTimeFormatter.format(localDateTime); -// eventLogVO.setTime(format); -// eventLogVO.setLine(event.getLine()); -// eventLogVO.setSubstation(event.getSubstation()); -// eventLogVO.setPowerCompany(event.getPowerCompany()); -// Double e = eventDetail.getFeatureAmplitude(); -// BigDecimal bd = new BigDecimal(e); -// e= bd.setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); -// eventLogVO.setEventValue(String.valueOf(e*100)); -// double i = eventDetail.getDuration() / 1000; -// eventLogVO.setPersistTime(String.valueOf(i)); -// eventLogVO.setCreatTime(pushLogs.getCreateTime()); -// eventLogVO.setCreatTimed(pushLogs.getCreateTime()); -// eventLogVO.setPushFailed(pushLogs.getPushFailed()); -// if (pushLogs.getResult()==0) { -// eventLogVO.setResult("失败"); -// eventLogVO.setState("未推送"); -// } else { -// eventLogVO.setResult("成功"); -// eventLogVO.setState("已推送"); -// } -// eventLogVO.setUpdateTime(pushLogs.getUpdateTime()); -// -// list.add(eventLogVO); -// } -// } -// } -// } -// //当前页数据 -// page.setRecords(list); -// } -// return page; } private boolean filterLineIdAndTime(EventDetail eventDetail, List eventPushLogs) { boolean flag = false; String evenDetailTime = eventDetail.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); for (EventPushLogs log : eventPushLogs) { - String logTime = log.getTimeId().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - if (log.getLineId().equals(eventDetail.getLineId()) && evenDetailTime.equals(logTime)) { + String logTime = log.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + if (log.getMeasurementPointId().equals(eventDetail.getLineId())&& log.getEventId().equals(eventDetail.getEventId())&& evenDetailTime.equals(logTime)) { flag = true; } } diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/EventTypeParam.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/EventTypeParam.java new file mode 100644 index 000000000..42319902f --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/param/EventTypeParam.java @@ -0,0 +1,17 @@ +package com.njcn.event.pojo.param; + +import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author wr + * @description + * @date 2023/5/24 9:36 + */ +@Data +public class EventTypeParam extends StatisticsBizBaseParam { + + @ApiModelProperty(name = "type", value = "区分主配网") + private Integer pointType=0; //监测点名称 +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/RStatEventOrgController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/RStatEventOrgController.java index 43064f0cd..172e3c7cf 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/RStatEventOrgController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/RStatEventOrgController.java @@ -8,6 +8,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; +import com.njcn.event.pojo.param.EventTypeParam; import com.njcn.event.pojo.param.REventMParam; import com.njcn.event.pojo.vo.RArrayVO; import com.njcn.event.pojo.vo.RStatEventMVO; @@ -18,9 +19,7 @@ import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -101,6 +100,13 @@ public class RStatEventOrgController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, getAllRStatEventOrgIcon, methodDescribe); } - + @PostMapping("/getEventOrg") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("查询当前部门暂态指标信息") + public HttpResult> getEventOrg(@RequestBody EventTypeParam param) { + String methodDescribe = getMethodDescribe("getEventOrg"); + List list = rStatEventOrgMService.getEventOrg(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RStatEventOrgMServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RStatEventOrgMServiceImpl.java index d06fc3502..86ce58351 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RStatEventOrgMServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/RStatEventOrgMServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.event.mapper.majornetwork.RStatEventOrgMMapper; +import com.njcn.event.pojo.param.EventTypeParam; import com.njcn.event.pojo.param.REventMParam; import com.njcn.event.pojo.po.RStatEventOrgM; import com.njcn.event.pojo.vo.RArrayVO; @@ -21,6 +22,7 @@ import com.njcn.system.enums.DicDataTypeEnum; import com.njcn.system.pojo.po.DictData; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; +import com.njcn.user.pojo.po.Dept; import com.njcn.web.utils.WebUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -362,6 +364,66 @@ public class RStatEventOrgMServiceImpl extends ServiceImpl getEventOrg(EventTypeParam param) { + List info=new ArrayList<>(); + //获取当前部门信息 + Dept dept = deptFeignClient.getDeptById(param.getId()).getData(); + + List eventTypeData = dicDataFeignClient.getDicDataByTypeCode( + DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + Map eventTypeMap = eventTypeData.stream() + .collect(Collectors.toMap(DictData::getId, Function.identity())); + + DictData distributionData=new DictData(); + //获取配网信息 + if(param.getPointType()==0){ + distributionData = dicDataFeignClient.getDicDataByCode(DicDataEnum.MAINNET_POINT.getCode()).getData(); + }else{ + distributionData = dicDataFeignClient.getDicDataByCode(DicDataEnum.DISTRIBUTION_POINT.getCode()).getData(); + } + + List rStatEventOrgMS = statEventOrgMMapper.selectList(new LambdaQueryWrapper() + .eq(RStatEventOrgM::getDataType, distributionData.getId()) + .in(RStatEventOrgM::getOrgNo, dept.getCode()) + .ge(StrUtil.isNotBlank(param.getStartTime()), RStatEventOrgM::getDataDate, param.getStartTime()) + .le(StrUtil.isNotBlank(param.getEndTime()), RStatEventOrgM::getDataDate, param.getEndTime()) + ); + Map eventOrgMMap = rStatEventOrgMS.stream().collect(Collectors.toMap(RStatEventOrgM::getEventType, Function.identity(), (Key1, kye2) -> Key1)); + eventOrgMMap.forEach((key, value) -> { + if (eventTypeMap.containsKey(key)) { + RArrayVO arrayVO = new RArrayVO(); + DictData data = eventTypeMap.get(key); + arrayVO.setRowName(data.getName()); + arrayVO.setSort(data.getSort()); + List a=new ArrayList<>(); + //累计超标占比 + a.add(value.getEventMeasurementRatioAccrued()); + a.add(100-value.getEventMeasurementRatioAccrued()); + a.add(value.getEventMeasurementAccrued()); + arrayVO.setColumns(a); + info.add(arrayVO); + } + }); + + List notEventOrg = eventTypeData.stream().filter(r -> !eventOrgMMap.containsKey(r.getId())) + .collect(Collectors.toList()); + for (DictData dictData : notEventOrg) { + RArrayVO arrayVO = new RArrayVO(); + arrayVO.setRowName(dictData.getName()); + arrayVO.setSort(dictData.getSort()); + List a=new ArrayList<>(); + //累计超标占比 + a.add(0); + a.add(100); + a.add(0); + arrayVO.setColumns(a); + info.add(arrayVO); + } + info.sort(Comparator.comparing(rStatEventMVO -> rStatEventMVO.getSort())); + return info; + } + /** * 便利赋值 * diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java index a77f1cdbf..cde017b44 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/ReportServiceImpl.java @@ -442,20 +442,24 @@ public class ReportServiceImpl implements ReportService { @Override public Page getContinueTime(WaveTypeParam waveTypeParam) { List lineIds =new ArrayList<>(); - String eventType=""; List result = new ArrayList<>(); if(waveTypeParam.getType()==0){ //pq系统 List deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData(); lineIds =deviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList()); - }else{ + }else if(waveTypeParam.getType()==1){ //pms系统 PmsDeviceInfoParam param=new PmsDeviceInfoParam(); param.setDeptIndex(waveTypeParam.getDeptIndex()); param.setStatisticalType(waveTypeParam.getStatisticalType()); List data = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(param).getData(); lineIds =data.stream().flatMap(list -> list.getMonitorIdList().stream()).collect(Collectors.toList()); - eventType=dicDataFeignClient.getDicDataByCode(DicDataEnum.VOLTAGE_DIP.getCode()).getData().getId(); + }else{ + PmsDeviceInfoParam param=new PmsDeviceInfoParam(); + param.setDeptIndex(waveTypeParam.getDeptIndex()); + param.setStatisticalType(waveTypeParam.getStatisticalType()); + List data = pmsGeneralDeviceInfoClient.getPwPmsDeviceInfoWithOrgId(param).getData(); + lineIds =data.stream().flatMap(list -> list.getMonitorIdList().stream()).collect(Collectors.toList()); } if (CollectionUtil.isEmpty(lineIds)) { @@ -463,9 +467,10 @@ public class ReportServiceImpl implements ReportService { } Page pageInfo = eventDetailService.page(new Page<>(waveTypeParam.getPageNum(), waveTypeParam.getPageSize()), new LambdaQueryWrapper() .in(RmpEventDetailPO::getMeasurementPointId, lineIds) - .eq(StrUtil.isNotBlank(eventType),RmpEventDetailPO::getEventType,eventType) + .eq(StrUtil.isNotBlank(waveTypeParam.getStatisticalType().getId()),RmpEventDetailPO::getEventType,waveTypeParam.getStatisticalType().getId()) .ge(StringUtils.isNotBlank(waveTypeParam.getSearchBeginTime()), RmpEventDetailPO::getStartTime,DateUtil.beginOfDay(DateUtil.parse(waveTypeParam.getSearchBeginTime()))) .le(StringUtils.isNotBlank(waveTypeParam.getSearchEndTime()), RmpEventDetailPO::getStartTime, DateUtil.endOfDay(DateUtil.parse(waveTypeParam.getSearchEndTime()))) + .orderByDesc(RmpEventDetailPO::getStartTime) ); List info =BeanUtil.copyToList(pageInfo.getRecords(),EventDetailNew.class); if (CollectionUtil.isNotEmpty(info)) { diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/RStatEventOrgMService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/RStatEventOrgMService.java index 93dfe7cb1..32d852899 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/RStatEventOrgMService.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/RStatEventOrgMService.java @@ -2,6 +2,7 @@ package com.njcn.event.service.majornetwork; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.event.pojo.param.EventTypeParam; import com.njcn.event.pojo.param.REventMParam; import com.njcn.event.pojo.po.RStatEventOrgM; import com.njcn.event.pojo.vo.RArrayVO; @@ -50,4 +51,11 @@ public interface RStatEventOrgMService extends IService { * @return */ List getPwRStatHarmonicOrgMIcon(REventMParam param); + + /** + * 根据当前单位查询当前信息 + * @param param + * @return + */ + List getEventOrg(EventTypeParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/distribution/PwOverviewController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/distribution/PwOverviewController.java index af5c75fd0..42bb8af39 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/distribution/PwOverviewController.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/distribution/PwOverviewController.java @@ -3,6 +3,7 @@ package com.njcn.harmonic.controller.distribution; import com.njcn.common.pojo.annotation.OperateInfo; import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.harmonic.pojo.param.OverviewParam; @@ -91,4 +92,13 @@ public class PwOverviewController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, groupVOS, methodDescribe); } + @PostMapping("/getPVVoltage") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @ApiOperation("高低电压问题(冀北)") + @ApiImplicitParam(name = "param", value = "条件参数", required = true) + public HttpResult>> getPVVoltage(@RequestBody StatisticsBizBaseParam param) { + String methodDescribe = getMethodDescribe("getPVVoltage"); + List> pvVoltage = rStatOrgPvPowerQualityService.getPVVoltage(param); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pvVoltage, methodDescribe); + } } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/PVOverviewMapper.xml b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/PVOverviewMapper.xml index 57d8b9463..1a14b4626 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/PVOverviewMapper.xml +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/mapper/majornetwork/mapping/PVOverviewMapper.xml @@ -9,17 +9,16 @@ ( SELECT measurement_point_id, - data_date, sum( is_v_dev_warn + is_freq_warn + is_unbalance_warn + is_v_warn + is_flicker_warn + is_sag_warn + is_interrupt_warn + is_swell_warn ) AS num FROM - r_mp_target_warn_d + r_mp_target_warn_d rmtwd is_effective = 1 AND is_warn = 1 - AND rmphd.data_date >= #{param.startTime} AND rmshd.data_date >= #{param.startTime} + AND rmtwd.data_date >= #{param.startTime} AND rmtwd.data_date >= #{param.startTime} - AND rmphd.data_date <= #{param.endTime} AND rmshd.data_date <= #{param.endTime} + AND rmtwd.data_date <= #{param.endTime} AND rmtwd.data_date <= #{param.endTime} AND measurement_point_id IN @@ -29,10 +28,9 @@ GROUP BY - measurement_point_id, - data_date + measurement_point_id HAVING - num > 1 + num > 0 ) x UNION ALL SELECT count(*) @@ -40,17 +38,16 @@ ( SELECT measurement_point_id, - data_date, sum( is_v_dev_warn + is_freq_warn + is_unbalance_warn + is_v_warn + is_flicker_warn + is_sag_warn + is_interrupt_warn + is_swell_warn ) AS num FROM - r_mp_target_warn_d + r_mp_target_warn_d rmtwd is_effective = 1 AND is_harmonic = 1 - AND rmphd.data_date >= #{param.startTime} AND rmshd.data_date >= #{param.startTime} + AND rmtwd.data_date >= #{param.startTime} AND rmtwd.data_date >= #{param.startTime} - AND rmphd.data_date <= #{param.endTime} AND rmshd.data_date <= #{param.endTime} + AND rmtwd.data_date <= #{param.endTime} AND rmtwd.data_date <= #{param.endTime} AND measurement_point_id IN @@ -60,10 +57,9 @@ GROUP BY - measurement_point_id, - data_date + measurement_point_id HAVING - num > 1 + num > 0 ) x diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java index 67a1f64b2..213859c45 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/impl/PollutionSubstationServiceImpl.java @@ -543,7 +543,6 @@ public class PollutionSubstationServiceImpl extends ServiceImpl data = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData(); if(CollUtil.isNotEmpty(data)){ List monitorIds = data.stream().flatMap(dto -> dto.getLineIds().stream()).collect(Collectors.toList()); - return pvOverviewMapper.selectPVSynthesisCount(param, monitorIds); + List integers = pvOverviewMapper.selectPVSynthesisCount(param, monitorIds); + integers.add(monitorIds.size()); + return integers; } - return new ArrayList(2){{add(0);add(0);}}; + return new ArrayList(3){{add(0);add(0);add(0);}}; } @Override @@ -109,7 +111,6 @@ public class PVOverviewServiceImpl implements PVOverviewService { dto.setPowerCompany(power.getOrgName()); dto.setSubstation(power.getPowerName()); dto.setSubstationId(power.getPowerId()); - dto.setBusBar(power.getGeneratrixName()); dto.setPowerVoltageLevel(power.getPowerVoltageLevel()); dto.setData(substationDPO.getValue()); return dto; diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/RStatOrgPvPowerQualityService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/RStatOrgPvPowerQualityService.java index eb05ea264..ef62a5f48 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/RStatOrgPvPowerQualityService.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/RStatOrgPvPowerQualityService.java @@ -2,6 +2,7 @@ package com.njcn.harmonic.service.specialanalysis; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; import com.njcn.harmonic.pojo.param.OverviewParam; import com.njcn.harmonic.pojo.param.PowerQualityParam; import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityQPO; @@ -56,4 +57,11 @@ public interface RStatOrgPvPowerQualityService extends IService getBackTheTide(OverviewParam param); + + /** + * 高低电压问题(冀北) + * @param param + * @return + */ + List> getPVVoltage(StatisticsBizBaseParam param); } diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/impl/RStatOrgPvPowerQualityServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/impl/RStatOrgPvPowerQualityServiceImpl.java index 2b48c39e1..697bdcc5f 100644 --- a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/impl/RStatOrgPvPowerQualityServiceImpl.java +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/specialanalysis/impl/RStatOrgPvPowerQualityServiceImpl.java @@ -3,17 +3,26 @@ package com.njcn.harmonic.service.specialanalysis.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.param.StatisticsBizBaseParam; +import com.njcn.device.biz.commApi.CommTerminalGeneralClient; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO; +import com.njcn.device.biz.pojo.param.DeptGetLineParam; +import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient; import com.njcn.device.pms.api.PwMonitorClient; import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO; import com.njcn.device.pms.pojo.param.PwPmsMonitorParam; import com.njcn.harmonic.mapper.specialanalysis.*; import com.njcn.harmonic.pojo.param.OverviewParam; import com.njcn.harmonic.pojo.param.PowerQualityParam; +import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityMPO; import com.njcn.harmonic.pojo.po.RStatOrgPvPowerQualityQPO; import com.njcn.harmonic.pojo.vo.OverviewVO; import com.njcn.harmonic.pojo.vo.RStatOrgPvDetailVO; @@ -27,6 +36,7 @@ import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.po.Dept; import lombok.RequiredArgsConstructor; +import org.apache.commons.math3.analysis.function.Add; import org.springframework.stereotype.Service; import java.util.*; @@ -48,6 +58,8 @@ public class RStatOrgPvPowerQualityServiceImpl extends ServiceImpl getPowerQualityStream(PowerQualityParam param) { @@ -440,6 +452,90 @@ public class RStatOrgPvPowerQualityServiceImpl extends ServiceImpl> getPVVoltage(StatisticsBizBaseParam param) { + //获取部门信息 + Dept dept = deptFeignClient.getDeptById(param.getId()).getData(); + DeptGetLineParam deptGetLineParam =new DeptGetLineParam(); + deptGetLineParam.setDeptId(param.getId()); + List data = commTerminalGeneralClient.deptGetLineList(deptGetLineParam).getData(); + + List monitorIds = data.stream().flatMap(dto -> dto.getPwMonitorIds().stream()).collect(Collectors.toList()); + ArrayList> info = new ArrayList>(2) { + { + new ArrayList() {{ + add(0); + add(0); + add(monitorIds.size()); + }}; + } + + { + new ArrayList() {{ + add(0); + add(0); + add(monitorIds.size()); + }}; + } + }; + if(CollUtil.isNotEmpty(monitorIds)){ + //获取台区电能质量事件类型 + List areaType = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.AREA_PQ_EVENT_TYPE.getCode()).getData(); + //typeIDOne:高压 typeIDTwe是低压 + List typeIDOne=new ArrayList<>(); + //取出电压相关的字典 + for (DictData dictData : areaType) { + + //电压 电压越上限15%以上 + if (DicDataEnum.EVENT_TYPE_T.getCode().equals(dictData.getCode())) { + typeIDOne.add(dictData.getId()); + } + //电压 电压越上限7%-15% + if (DicDataEnum.EVENT_TYPE_R.getCode().equals(dictData.getCode())) { + typeIDOne.add(dictData.getId()); + } + //电压 超标3%-10% + if (DicDataEnum.EVENT_TYPE_Z.getCode().equals(dictData.getCode())) { + typeIDOne.add(dictData.getId()); + } + //电压 超标10%以下 + if (DicDataEnum.EVENT_TYPE_X.getCode().equals(dictData.getCode())) { + typeIDOne.add(dictData.getId()); + } + } + List rStatOrgPvPowerQualityMPOS = rStatOrgPvPowerQualityMMapper.selectList(new LambdaQueryWrapper() + .in(CollUtil.isNotEmpty(typeIDOne), RStatOrgPvPowerQualityMPO::getAreaPqEventType, typeIDOne) + .eq(ObjectUtil.isNotNull(dept), RStatOrgPvPowerQualityMPO::getOrgNo, dept.getCode()) + .ge(StrUtil.isNotBlank(param.getStartTime()), RStatOrgPvPowerQualityMPO::getDataDate, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime()))) + .le(StrUtil.isNotBlank(param.getEndTime()), RStatOrgPvPowerQualityMPO::getDataDate, DateUtil.endOfDay(DateUtil.parse(param.getEndTime()))) + ); + Map count = rStatOrgPvPowerQualityMPOS.stream().collect(Collectors.toMap(RStatOrgPvPowerQualityMPO::getAreaPqEventType, Function.identity(), (Key1, kye2) -> Key1)); + List list1=new ArrayList<>(); + List list2=new ArrayList<>(); + for (int i = 0; i < typeIDOne.size(); i++) { + if(i<2){ + if(count.containsKey(typeIDOne.get(i))){ + list1.add(count.get(typeIDOne.get(i)).getTotalMonitorNum()); + }else{ + list1.add(0); + } + }else{ + if(count.containsKey(typeIDOne.get(i))){ + list2.add(count.get(typeIDOne.get(i)).getTotalMonitorNum()); + }else{ + list2.add(0); + } + } + } + list1.add(monitorIds.size()); + list2.add(monitorIds.size()); + info.clear(); + info.add(list1); + info.add(list2); + } + return info; + } + /** * 潮流倒送对象赋值 * @param areaMap diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/AuditLogEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/AuditLogEnum.java index 7c996d1e6..4b6e2813d 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/AuditLogEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/AuditLogEnum.java @@ -1,19 +1,25 @@ package com.njcn.system.enums; +import lombok.Data; +import lombok.Getter; + /** * @version 1.0.0 * @author: chenchao * @date: 2022/07/15 16:21 */ +@Getter public enum AuditLogEnum { /** * 审计日志模块异常响应码 */ - NOT_FIND_FILE("A0300", "文件未备份,请先备份文件"), + NOT_FIND_FILE("A0300", "文件未备份或者备份文件为空,请先备份文件"), LOG_EXCEPTION("A0301", "导入旧日志文件异常"), LOG_EXCEPTIONTIME("A0302", "导入旧日志文件异常:缺少时间范围"), - DELETE_DATA("A0303", "导入旧日志文件异常:删除数据失败") + DELETE_DATA("A0303", "导入旧日志文件异常:删除数据失败"), + MULTIPLE_CLICKS_LOGFILEWRITER("A0304", "当前文件备份数据未结束,请勿多次点击"), + MULTIPLE_CLICKS_RECOVERLOGFILE("A0303", "当前文件恢复数据未结束,请勿多次点击") ; diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/excel/DemoDataListener.java b/pqs-system/system-boot/src/main/java/com/njcn/system/excel/DataListener.java similarity index 92% rename from pqs-system/system-boot/src/main/java/com/njcn/system/excel/DemoDataListener.java rename to pqs-system/system-boot/src/main/java/com/njcn/system/excel/DataListener.java index 2b1de75cc..aa6f78b46 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/excel/DemoDataListener.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/excel/DataListener.java @@ -8,13 +8,13 @@ import com.njcn.system.mapper.UserLogMapper; import java.util.List; // 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取excel都要new,然后里面用到spring可以构造方法传进去 -public class DemoDataListener implements ReadListener { +public class DataListener implements ReadListener { /** * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 */ - private static final int BATCH_COUNT = 5000; + private static final int BATCH_COUNT = 1000; /** * 缓存的数据 */ @@ -29,7 +29,7 @@ public class DemoDataListener implements ReadListener { * * @param userLogMapper */ - public DemoDataListener(UserLogMapper userLogMapper) { + public DataListener(UserLogMapper userLogMapper) { this.userLogMapper = userLogMapper; } diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/AuditMapper.java b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/AuditMapper.java index 267dc3ede..ac17afb72 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/AuditMapper.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/AuditMapper.java @@ -31,7 +31,7 @@ public interface AuditMapper { /** * 获取审计日志统计列表 */ - List selectCensusAuditLog(@Param("auditParam") AuditParam auditParam); + Page selectCensusAuditLog(Page page,@Param("auditParam") AuditParam auditParam); /** * 根据时间删除日志 */ diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AuditMapper.xml b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AuditMapper.xml index d702fe0e1..db8183d82 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AuditMapper.xml +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/mapper/mapping/AuditMapper.xml @@ -80,7 +80,7 @@ WHERE ${ew.sqlSegment} - SELECT login_name LoginName, operate_type operateType, diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/AuditService.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/AuditService.java index cd737607c..877552b2e 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/AuditService.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/AuditService.java @@ -28,7 +28,7 @@ public interface AuditService extends IService { /** * 日志文件数据恢复 */ - void recoverLogFile(); + void recoverLogFile() ; /** * 分页获取审计日志统计列表 diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java index e12d53340..01508e791 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; @@ -15,11 +16,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.google.common.collect.Lists; import com.njcn.common.config.GeneralInfo; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.redis.utils.RedisUtil; import com.njcn.system.enums.AuditLogEnum; -import com.njcn.system.excel.DemoDataListener; +import com.njcn.system.excel.DataListener; import com.njcn.system.excel.UserLogExcel; import com.njcn.system.mapper.AuditMapper; import com.njcn.system.mapper.UserLogMapper; @@ -37,7 +38,6 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; @@ -64,14 +64,15 @@ public class AuditServiceImpl extends ServiceImpl implem private String urls; private final GeneralInfo generalInfo; + private final RedisUtil redisUtil; @Override public Page getAuditLog(AuditParam auditParam) { List auditLogVOS = new ArrayList<>(); Page info = this.page(new Page<>(auditParam.getPageNum(), auditParam.getPageSize()), new LambdaQueryWrapper() .eq(StrUtil.isNotBlank(auditParam.getLoginName()), UserLog::getLoginName, auditParam.getLoginName()) - .eq(auditParam.getType() != null, UserLog::getLoginName, auditParam.getType()) - .eq(StrUtil.isNotBlank(auditParam.getOperateType()), UserLog::getLoginName, auditParam.getLoginName()) + .eq(auditParam.getType() != null, UserLog::getType, auditParam.getType()) + .eq(StrUtil.isNotBlank(auditParam.getOperateType()), UserLog::getOperateType, auditParam.getOperateType()) .ge(StrUtil.isNotBlank(auditParam.getSearchBeginTime()), UserLog::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(auditParam.getSearchBeginTime()))) .le(StrUtil.isNotBlank(auditParam.getSearchEndTime()), UserLog::getCreateTime, DateUtil.endOfDay(DateUtil.parse(auditParam.getSearchEndTime()))) ); @@ -118,6 +119,12 @@ public class AuditServiceImpl extends ServiceImpl implem @Override public void logFileWriter() { + //限制多次点击 + String logFileWriter = redisUtil.getStringByKey("logFileWriter"); + if(StrUtil.isNotBlank(logFileWriter)|| ObjectUtil.equals(logFileWriter,"1")){ + throw new BusinessException(AuditLogEnum.MULTIPLE_CLICKS_LOGFILEWRITER); + } + redisUtil.saveByKey("logFileWriter","1"); LocalDateTime nowDate = LocalDateTime.now(); LocalDateTime agoDate = nowDate.minusMonths(6).with(TemporalAdjusters.firstDayOfMonth()); String date = agoDate.format(DateTimeFormatter.ISO_LOCAL_DATE); @@ -125,6 +132,7 @@ public class AuditServiceImpl extends ServiceImpl implem String endTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH_mm_ss").format(nowDate); //文件名 QueryWrapper aa = new QueryWrapper<>(); + aa.select("id"); aa.ge("sys_user_log.update_time", date); aa.le("sys_user_log.update_time", endTime); String nowTime = date + "至" + endTime; @@ -169,10 +177,12 @@ public class AuditServiceImpl extends ServiceImpl implem } } catch (Exception e) { + redisUtil.delete("recoverLogFile"); e.printStackTrace(); } finally { excelWriter.finish(); } + redisUtil.delete("logFileWriter"); } @@ -193,8 +203,13 @@ public class AuditServiceImpl extends ServiceImpl implem @Override public void recoverLogFile() { + String logFileWriter = redisUtil.getStringByKey("recoverLogFile"); + if(StrUtil.isNotBlank(logFileWriter)|| ObjectUtil.equals(logFileWriter,"1")){ + throw new BusinessException(AuditLogEnum.MULTIPLE_CLICKS_LOGFILEWRITER); + } + redisUtil.saveByKey("recoverLogFile","1"); File newFile = getLastFile(); - if (!newFile.exists()) { + if (FileUtil.isEmpty(newFile)) { throw new BusinessException(AuditLogEnum.NOT_FIND_FILE); } FileInputStream in = null; @@ -211,38 +226,24 @@ public class AuditServiceImpl extends ServiceImpl implem .ge(UserLog::getCreateTime, DateUtil.beginOfDay(DateUtil.parse(splitTime[0]))) .le(UserLog::getCreateTime, splitTime[1].replace("_", ":")); this.remove(le); - EasyExcel.read(newFile, UserLogExcel.class, new DemoDataListener(this.getBaseMapper())) + EasyExcel.read(newFile, UserLogExcel.class, new DataListener(this.getBaseMapper())) .excelType(ExcelTypeEnum.XLSX).doReadAll(); } catch (Exception e) { + redisUtil.delete("recoverLogFile"); e.printStackTrace(); throw new ExcelImportException(e.getMessage(), e); } finally { IOUtils.closeQuietly(in); } + redisUtil.delete("recoverLogFile"); } @Override public Page censusAuditLog(AuditParam auditParam) { - List auditLogVOS = new ArrayList<>(); - - Page page = new Page<>(); - page.setSize(auditParam.getPageSize()); - page.setCurrent(auditParam.getPageNum()); //待分页数据总量 - List auditLogCusVOS = auditMapper.selectCensusAuditLog(auditParam); - page.setTotal(auditLogCusVOS.size()); - //分页总页数 - int pages = (int) Math.ceil(page.getTotal() * 1.0 / auditParam.getPageSize()); - page.setPages(pages); - - if (!CollectionUtils.isEmpty(auditLogCusVOS)) { - List> pageList = Lists.partition(auditLogCusVOS, auditParam.getPageSize()); - auditLogVOS = pageList.get(auditParam.getPageNum() - 1); - } - page.setRecords(auditLogVOS); - + Page page = auditMapper.selectCensusAuditLog(new Page<>(auditParam.getPageNum(), auditParam.getPageSize()), auditParam); return page; } @@ -259,7 +260,7 @@ public class AuditServiceImpl extends ServiceImpl implem @Override public Float getMemoInfo() { - String schema = urls.substring(urls.lastIndexOf("/")+1,urls.lastIndexOf("?")); + String schema = urls.substring(urls.lastIndexOf("/") + 1, urls.lastIndexOf("?")); return this.baseMapper.getMemoInfo(schema); } @@ -292,8 +293,6 @@ public class AuditServiceImpl extends ServiceImpl implem */ public File getLastFile() { File parentFile = new File(generalInfo.getBusinessTempPath()); -// Date date = FileUtil.lastModifiedTime(parentFile); -// System.out.println(">>>>>>>>>>当前文件夹最后修改时间>>>>>>>>>" + date); //文件夹下的所有子文件数组 File[] files = parentFile.listFiles();