合并代码
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
package com.njcn.device.pms.service.majornetwork;
|
||||
|
||||
import com.njcn.event.pojo.po.EventDetail;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @date 2022年12月14日 09:39
|
||||
*/
|
||||
public interface EventDetailPmsService {
|
||||
|
||||
/**
|
||||
* 根据监测点id和时区时间time获取暂降事件
|
||||
*
|
||||
* @param id 监测点id
|
||||
* @return 暂降事件详情
|
||||
*/
|
||||
EventDetail getEventDetailByTime(String id, String time);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.njcn.device.pms.service.majornetwork;
|
||||
|
||||
import com.njcn.common.pojo.dto.wave.WaveDataDTO;
|
||||
|
||||
/**
|
||||
* TransientPmsService
|
||||
*
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @createTime 2022/12/14 - 15:09
|
||||
*/
|
||||
public interface TransientPmsService {
|
||||
/**
|
||||
* 功能描述: 暂态事件波形分析
|
||||
* @param timeId
|
||||
* @param lineId
|
||||
* @param lineType
|
||||
* @return
|
||||
*/
|
||||
WaveDataDTO getTransientAnalyseWavePms(String timeId, String lineId, Integer lineType);
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.njcn.device.pms.service.majornetwork.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.njcn.device.pms.service.majornetwork.EventDetailPmsService;
|
||||
import com.njcn.event.pojo.po.EventDetail;
|
||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.influxdb.dto.QueryResult;
|
||||
import org.influxdb.impl.InfluxDBResultMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author qijian
|
||||
* @version 1.0.0
|
||||
* @date 2022年12月14日 09:39
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class EventDetailPmsServiceImpl implements EventDetailPmsService {
|
||||
|
||||
private final InfluxDbUtils influxDbUtils;
|
||||
|
||||
@Override
|
||||
public EventDetail getEventDetailByTime(String id, String time) {
|
||||
EventDetail eventDetail = new EventDetail();
|
||||
//组装sql语句
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.append("time = '").append(time).append("' and ").append("line_id ='").append(id).append("' limit 1 tz('Asia/Shanghai')");
|
||||
|
||||
String sql = "select * from pqs_eventdetail where " + stringBuilder;
|
||||
//获取暂降事件
|
||||
QueryResult result = influxDbUtils.query(sql);
|
||||
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
||||
if (!Objects.isNull(result)) {
|
||||
List<EventDetail> detailList = influxDBResultMapper.toPOJO(result, EventDetail.class);
|
||||
if (!CollectionUtils.isEmpty(detailList)) {
|
||||
eventDetail = detailList.get(0);
|
||||
}
|
||||
}
|
||||
return eventDetail;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.njcn.device.pms.service.majornetwork.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.njcn.common.config.GeneralInfo;
|
||||
import com.njcn.common.pojo.dto.wave.WaveDataDTO;
|
||||
import com.njcn.common.pojo.enums.common.ServerEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.PubUtils;
|
||||
import com.njcn.common.utils.wave.AnalyWave;
|
||||
import com.njcn.device.pms.api.DistributionMonitorClient;
|
||||
import com.njcn.device.pms.api.MonitorClient;
|
||||
import com.njcn.device.pms.mapper.majornetwork.DistributionMonitorMapper;
|
||||
import com.njcn.device.pms.mapper.majornetwork.MonitorMapper;
|
||||
import com.njcn.device.pms.mapper.majornetwork.TerminalMapper;
|
||||
import com.njcn.device.pms.pojo.po.DistributionMonitor;
|
||||
import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pms.pojo.po.PmsTerminal;
|
||||
import com.njcn.device.pms.service.majornetwork.EventDetailPmsService;
|
||||
import com.njcn.device.pms.service.majornetwork.IMonitorService;
|
||||
import com.njcn.device.pms.service.majornetwork.TransientPmsService;
|
||||
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
|
||||
import com.njcn.device.pq.api.LineFeignClient;
|
||||
import com.njcn.device.pq.enums.DeviceResponseEnum;
|
||||
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
||||
import com.njcn.device.pq.pojo.vo.AreaLineInfoVO;
|
||||
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
||||
import com.njcn.event.enums.EventResponseEnum;
|
||||
import com.njcn.event.pojo.param.TransientParam;
|
||||
import com.njcn.event.pojo.param.WaveFileParam;
|
||||
import com.njcn.event.pojo.po.EventDetail;
|
||||
import com.njcn.event.pojo.po.EventDetailNew;
|
||||
import com.njcn.event.pojo.vo.TransientVO;
|
||||
import com.njcn.influxdb.mapper.InfluxDBResultMapperCn;
|
||||
import com.njcn.influxdb.param.InfluxDBPublicParam;
|
||||
import com.njcn.influxdb.utils.InfluxDBCommUtils;
|
||||
import com.njcn.influxdb.utils.InfluxDbUtils;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
import com.njcn.system.pojo.po.DictData;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.influxdb.dto.QueryResult;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
/**
|
||||
* @author: chenchao
|
||||
* @date: 2022/03/29 14:37
|
||||
* @Description: <描述>
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class TransientPmsServiceImpl implements TransientPmsService {
|
||||
|
||||
private final GeneralDeviceInfoClient generalDeviceInfoClient;
|
||||
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final EventDetailPmsService eventDetailPmsService;
|
||||
|
||||
private final GeneralInfo generalInfo;
|
||||
|
||||
private final DistributionMonitorMapper distributionMonitorMapper;
|
||||
|
||||
private final MonitorMapper monitorMapper;
|
||||
|
||||
private final TerminalMapper terminalMapper;
|
||||
|
||||
@Override
|
||||
public WaveDataDTO getTransientAnalyseWavePms(String timeId, String lineId,Integer lineType) {
|
||||
//初始化
|
||||
WaveDataDTO waveDataDTO;
|
||||
PmsTerminal pmsTerminal;
|
||||
DictData dictData;
|
||||
String ip = null;
|
||||
String ptTypeName = null;
|
||||
Float pt1 = null;
|
||||
Float pt2 = null;
|
||||
Float ct1 = null;
|
||||
Float ct2 = null;
|
||||
|
||||
//根据监测点id获取信息(1主网 2配网)
|
||||
if (lineType == 1){
|
||||
Monitor monitor = monitorMapper.selectById(lineId);
|
||||
//获取ip
|
||||
pmsTerminal = terminalMapper.selectById(monitor.getTerminalId());
|
||||
ip = pmsTerminal.getIp();
|
||||
//获取接线方式
|
||||
dictData = dicDataFeignClient.getDicDataById(monitor.getTerminalWiringMethod()).getData();
|
||||
ptTypeName = dictData.getName();
|
||||
//获取pt、ct
|
||||
pt1 = monitor.getPt1();
|
||||
pt2 = monitor.getPt1();
|
||||
ct1 = monitor.getCt1();
|
||||
ct2 = monitor.getCt2();
|
||||
}else{
|
||||
DistributionMonitor distributionMonitor = distributionMonitorMapper.selectById(lineId);
|
||||
//获取ip
|
||||
pmsTerminal = terminalMapper.selectById(distributionMonitor.getTerminalId());
|
||||
ip = pmsTerminal.getIp();
|
||||
//获取接线方式
|
||||
dictData = dicDataFeignClient.getDicDataById(distributionMonitor.getTerminalWiringMethod()).getData();
|
||||
ptTypeName = dictData.getName();
|
||||
//获取pt、ct
|
||||
pt1 = distributionMonitor.getPt1();
|
||||
pt2 = distributionMonitor.getPt1();
|
||||
ct1 = distributionMonitor.getCt1();
|
||||
ct2 = distributionMonitor.getCt2();
|
||||
}
|
||||
|
||||
EventDetail eventDetailByTime = eventDetailPmsService.getEventDetailByTime(lineId, timeId);
|
||||
String waveName = eventDetailByTime.getWaveName();
|
||||
|
||||
AnalyWave analyWave = new AnalyWave();
|
||||
WaveDataDTO comtrade = analyWave.getComtrade(generalInfo.getBusinessWavePath() + File.separator + ip + File.separator + waveName + ".CFG", 1);
|
||||
if (Objects.isNull(comtrade.getComtradeCfgDTO())) {
|
||||
throw new BusinessException(EventResponseEnum.ANALYSEWAVE_NOT_FOUND);
|
||||
}
|
||||
waveDataDTO = analyWave.getValidData(comtrade);
|
||||
waveDataDTO.setPtType(PubUtils.ptTypeName(ptTypeName));
|
||||
waveDataDTO.setPt((double) (pt1 / pt2));
|
||||
waveDataDTO.setCt((double) (ct1 / ct2));
|
||||
return waveDataDTO;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user