暂态模块格式化时间处理

This commit is contained in:
2023-04-20 10:44:18 +08:00
parent bdffafbf56
commit 4b3ff6e3ff
8 changed files with 47 additions and 287 deletions

View File

@@ -1,10 +1,14 @@
package com.njcn.event.pojo.po; package com.njcn.event.pojo.po;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.influxdb.annotation.Column; import org.influxdb.annotation.Column;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/** /**
* @author cdf * @author cdf
@@ -13,81 +17,79 @@ import java.math.BigDecimal;
*/ */
@Data @Data
//@Measurement(name = "pqs_eventdetail")
public class EventDetailNew { public class EventDetailNew {
@Column(name = "line_id")
private String lineId; private String lineId;
@Column(name = "time")
@ApiModelProperty(value = "开始时间") @ApiModelProperty(value = "开始时间")
private String startTime; private String startTime;
@Column(name = "event_describe")
@ApiModelProperty(value = "事件描述") @ApiModelProperty(value = "事件描述")
private String eventDescribe; private String eventDescribe;
@Column(name = "wave_type")
@ApiModelProperty(value = "统计类型") @ApiModelProperty(value = "统计类型")
private String eventType; private String eventType;
@Column(name = "persist_time")
@ApiModelProperty(value = "持续时间,单位秒") @ApiModelProperty(value = "持续时间,单位秒")
private Double duration; private Double duration;
@Column(name = "event_value")
@ApiModelProperty(value = "特征幅值") @ApiModelProperty(value = "特征幅值")
private Double featureAmplitude; private Double featureAmplitude;
@Column(name = "event_reason")
@ApiModelProperty(value = "暂降原因Event_Reason") @ApiModelProperty(value = "暂降原因Event_Reason")
private String advanceReason; private String advanceReason;
@Column(name = "event_type")
@ApiModelProperty(value = "暂降类型Event_Type") @ApiModelProperty(value = "暂降类型Event_Type")
private String advanceType; private String advanceType;
@Column(name = "eventass_index")
private String eventassIndex; private String eventassIndex;
@Column(name = "dq_time")
private Integer dqTime; private Integer dqTime;
@Column(name = "deal_time")
private String dealTime; private String dealTime;
@Column(name = "deal_flag")
private Integer dealFlag; private Integer dealFlag;
@Column(name = "num")
private Integer num; private Integer num;
@Column(name = "file_flag")
private Integer fileFlag; private Integer fileFlag;
@Column(name = "first_time")
private String firstTime; private String firstTime;
@Column(name = "first_type")
private String firstType; private String firstType;
@Column(name = "first_ms")
private Integer firstMs; private Integer firstMs;
@Column(name = "wave_name")
@ApiModelProperty(value = "波形路径") @ApiModelProperty(value = "波形路径")
private String wavePath; private String wavePath;
@Column(name = "energy")
private Double energy; private Double energy;
@Column(name = "severity")
private Double severity; private Double severity;
@Column(name = "sagsource")
private String sagSource; private String sagSource;
@Column(name = "create_time")
private String createTime; private String createTime;
private String lineName; private String lineName;
@@ -107,4 +109,14 @@ public class EventDetailNew {
@ApiModelProperty(value = "暂时事件ID") @ApiModelProperty(value = "暂时事件ID")
private String eventId; private String eventId;
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
//时间处理,LocalDateTime转string多一个T
startTime = startTime.replace("T"," ");
this.startTime = startTime;
}
} }

View File

@@ -85,7 +85,7 @@ public class RmpEventDetailPO implements Serializable {
private String sagsource; private String sagsource;
@ApiModelProperty(value = "开始时间") @ApiModelProperty(value = "开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private LocalDateTime startTime; private LocalDateTime startTime;
@@ -106,7 +106,7 @@ public class RmpEventDetailPO implements Serializable {
private Double transientValue; private Double transientValue;
private String createTime; private LocalDateTime createTime;

View File

@@ -121,37 +121,6 @@ public class EventDetailServiceImpl extends ServiceImpl<EventDetailMapper, RmpEv
return BeanUtil.copyToList(pageInfo.getRecords(), EventDetail.class); return BeanUtil.copyToList(pageInfo.getRecords(), EventDetail.class);
// //组装sql语句
// StringBuilder stringBuilder = new StringBuilder();
// stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and (");
// for (int i = 0; i < lineIndexes.size(); i++) {
// if (lineIndexes.size() - i != 1) {
// stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' or ");
// } else {
// stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' ");
// }
// }
// stringBuilder.append(") and (");
// for (int i = 0; i < waveType.size(); i++) {
// if (waveType.size() - i != 1) {
// stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' or ");
// } else {
// stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' ");
// }
// }
// stringBuilder.append(") order by time desc");
// int i = (pageNum - 1)*pageSize;
// stringBuilder.append(" LIMIT ").append(pageSize).append(" OFFSET ").append(i).append(" tz('Asia/Shanghai')");
// //sql语句
// String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder;
// System.out.println(sql);
// //结果集
// QueryResult result = influxDbUtils.query(sql);
// //结果集映射到对象中
// InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
// List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class);
//
// return eventDetailList;
} }
} }

View File

@@ -110,13 +110,7 @@ public class TransientServiceImpl implements TransientService {
List<String> LineIndexes = deviceList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList()); List<String> LineIndexes = deviceList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(LineIndexes)) { if (!CollectionUtils.isEmpty(LineIndexes)) {
//influxDB查询待分页数据总量
/* List<EventDetail> data = eventDetailService.getEventDetail(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(),transientParam.getWaveType());
page.setTotal(data.size());
//分页总页数
int pages = (int) Math.ceil(data.size() * 1.0 / transientParam.getPageSize());
page.setPages(pages);*/
//influxDB分页查询
List<EventDetail> eventDetailData = eventDetailService.getEventDetailLimit(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(), transientParam.getPageSize(), transientParam.getPageNum(), transientParam.getWaveType()); List<EventDetail> eventDetailData = eventDetailService.getEventDetailLimit(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(), transientParam.getPageSize(), transientParam.getPageNum(), transientParam.getWaveType());
if (!CollectionUtils.isEmpty(eventDetailData)) { if (!CollectionUtils.isEmpty(eventDetailData)) {
@@ -331,14 +325,11 @@ public class TransientServiceImpl implements TransientService {
page= BeanUtil.copyProperties(pageInfo,Page.class); page= BeanUtil.copyProperties(pageInfo,Page.class);
if (CollUtil.isNotEmpty(eventDetailData)) { if (CollUtil.isNotEmpty(eventDetailData)) {
List<String> lineIds = eventDetailData.stream().map(EventDetailNew::getLineId).collect(Collectors.toList()); List<String> lineIds = eventDetailData.stream().map(EventDetailNew::getLineId).distinct().collect(Collectors.toList());
lineIds = lineIds.stream().distinct().collect(Collectors.toList());
List<AreaLineInfoVO> r = lineFeignClient.getBaseLineAreaInfo(lineIds).getData(); List<AreaLineInfoVO> r = lineFeignClient.getBaseLineAreaInfo(lineIds).getData();
List<DictData> reasonList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData(); List<DictData> reasonList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData();
List<DictData> typeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData(); List<DictData> typeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData();
for (EventDetailNew eventDetail : eventDetailData) { for (EventDetailNew eventDetail : eventDetailData) {
for (AreaLineInfoVO areaLineInfoVO : r) { for (AreaLineInfoVO areaLineInfoVO : r) {
if (eventDetail.getLineId().equals(areaLineInfoVO.getLineId())) { if (eventDetail.getLineId().equals(areaLineInfoVO.getLineId())) {
@@ -383,114 +374,7 @@ public class TransientServiceImpl implements TransientService {
return page; return page;
} }
/**
* 查询数据库
*/
private Long getTransientDetail(StringBuilder stringBuilder, TransientParam transientParam) {
Long total = 0L;
//组装sql语句
stringBuilder.append(" and time >= '").append(DateUtil.beginOfDay(DateUtil.parse(transientParam.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(transientParam.getSearchEndTime()))).append("'").append(InfluxDBPublicParam.TIME_ZONE);
//sql语句
String sql = "SELECT count(wave_type) FROM pqs_eventdetail WHERE " + stringBuilder;
System.out.println("sql------------->>>" + sql);
//结果集
QueryResult result = influxDbUtils.query(sql);
//结果集映射到对象中
List<QueryResult.Series> series = result.getResults().get(0).getSeries();
if (CollUtil.isNotEmpty(series)) {
Double tem = (Double) series.get(0).getValues().get(0).get(1);
total = tem.longValue();
}
return total;
}
/**
* 根据条件拼接sql语句
*/
private List<EventDetailNew> getTransientDetailLimit(List<String> lineIndexes, TransientParam transientParam) {
//查询数据是否为空不为空拼接sql语句
StringBuilder querySql = new StringBuilder();
if (Objects.nonNull(transientParam.getEventValueMin())) {
querySql.append(" and event_value >=").append(transientParam.getEventValueMin());
}
if (Objects.nonNull(transientParam.getEventValueMax())) {
querySql.append(" and event_value <=").append(transientParam.getEventValueMax());
}
if (Objects.nonNull(transientParam.getPersistMin())) {
querySql.append(" and persist_time >=").append(transientParam.getPersistMin());
}
if (Objects.nonNull(transientParam.getEventValueMax())) {
querySql.append(" and persist_time <=").append(transientParam.getPersistMax());
}
if (Objects.nonNull(transientParam.getSeverityMin())) {
querySql.append(" and severity >=").append(transientParam.getSeverityMin());
}
if (Objects.nonNull(transientParam.getSeverityMax())) {
querySql.append(" and severity <=").append(transientParam.getSeverityMax());
}
if (Objects.nonNull(transientParam.getFileFlag())) {
querySql.append(" and file_flag = ").append(transientParam.getFileFlag());
}
if (CollUtil.isNotEmpty(transientParam.getWaveType())) {
querySql.append(" and ( ");
for (int i = 0; i < transientParam.getWaveType().size(); i++) {
if (transientParam.getWaveType().size() - i != 1) {
querySql.append("wave_type =").append(transientParam.getWaveType().get(i)).append(" or ");
} else {
querySql.append("wave_type =").append(transientParam.getWaveType().get(i)).append(") ");
}
}
}
if (CollUtil.isNotEmpty(transientParam.getEventReason())) {
querySql.append(" and ( ");
for (int i = 0; i < transientParam.getEventReason().size(); i++) {
if (transientParam.getWaveType().size() - i != 1) {
querySql.append("event_reason =").append(transientParam.getEventReason().get(i)).append(" or ");
} else {
querySql.append("event_reason =").append(transientParam.getEventReason().get(i)).append(") ");
}
}
}
if (CollUtil.isNotEmpty(transientParam.getEventType())) {
querySql.append(" and ( ");
for (int i = 0; i < transientParam.getEventType().size(); i++) {
if (transientParam.getEventType().size() - i != 1) {
querySql.append("event_type =").append(transientParam.getEventType().get(i)).append(" or ");
} else {
querySql.append("event_type =").append(transientParam.getEventType().get(i)).append(") ");
}
}
}
//组装sql语句
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(transientParam.getSearchBeginTime())))
.append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(transientParam.getSearchEndTime()))).append("'")
.append(querySql);
stringBuilder.append(" and (");
for (int i = 0; i < lineIndexes.size(); i++) {
if (lineIndexes.size() - i != 1) {
stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("' or ");
} else {
stringBuilder.append("line_id ='").append(lineIndexes.get(i)).append("') ");
}
}
int i = (transientParam.getPageNum() - 1) * transientParam.getPageSize();
stringBuilder.append(" LIMIT ").append(transientParam.getPageSize()).append(" OFFSET ").append(i).append(" tz('Asia/Shanghai')");
//sql语句
String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder;
//结果集
QueryResult queryresult = influxDbUtils.query(sql);
//结果集映射到对象中
InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn();
List<EventDetailNew> eventDetailList = influxDBResultMapper.toPOJO(queryresult, EventDetailNew.class);
return eventDetailList;
}
/** /**
* 复制保存文件 * 复制保存文件

View File

@@ -56,6 +56,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -144,6 +145,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//修改模板数据 //修改模板数据
ExcelRptTemp excelRptTemp = new ExcelRptTemp(); ExcelRptTemp excelRptTemp = new ExcelRptTemp();
BeanUtils.copyProperties(reportTemplateParam, excelRptTemp); BeanUtils.copyProperties(reportTemplateParam, excelRptTemp);
excelRptTemp.setUpdateTime(LocalDateTime.now());
excelRptTempMapper.updateById(excelRptTemp); excelRptTempMapper.updateById(excelRptTemp);
return true; return true;
@@ -201,12 +203,13 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public boolean delTemplate(ReportSearchParam reportSearchParam) { public boolean delTemplate(ReportSearchParam reportSearchParam) {
//根据模板ID和部门ID删除绑定的数据 //根据模板ID和部门ID删除绑定的数据
LambdaQueryWrapper<SysDeptTemp> lambdaQuery = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysDeptTemp> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.eq(SysDeptTemp::getTempId, reportSearchParam.getTempId()).eq(SysDeptTemp::getDeptId, reportSearchParam.getDeptId()); lambdaQuery.eq(SysDeptTemp::getTempId, reportSearchParam.getTempId());
deptTempMapper.delete(lambdaQuery); deptTempMapper.delete(lambdaQuery);
excelRptTempMapper.deleteById(reportSearchParam.getTempId());
return true; return true;
} }

View File

@@ -513,43 +513,6 @@ public class SteadyExceedRateServiceImpl implements SteadyExceedRateService {
} }
return limitRatePOS; return limitRatePOS;
//组装sql语句
// StringBuilder string = new StringBuilder();
// string.append(Param.QualityFlag + "='1' and (" + Param.PHASIC_TYPE + "='" + Param.PHASIC_TYPEA + "' or " + Param.PHASIC_TYPE + "='" + Param.PHASIC_TYPEB + "' or " + Param.PHASIC_TYPE + "='" + Param.PHASIC_TYPEC + "') and "+ Param.VALUETYPE + "='AVG' and ");
// StringBuilder timeId = new StringBuilder();
// timeId.append(InfluxDBPublicParam.PHASIC_TYPE + "='" + InfluxDBPublicParam.PHASIC_TYPET + "' and " + InfluxDBPublicParam.TIME + " >= '" + startTime + InfluxDBPublicParam.START_TIME + "' and " + InfluxDBPublicParam.TIME + " <= '" + endTime + InfluxDBPublicParam.END_TIME + "' and ");
// for (int i = 0; i < lineIndexes.size(); i++) {
// if (lineIndexes.size() - i != 1) {
// timeId.append(InfluxDBPublicParam.LINE_ID + "='").append(lineIndexes.get(i)).append("' or ");
// } else {
// timeId.append(InfluxDBPublicParam.LINE_ID + "='").append(lineIndexes.get(i)).append("' tz('Asia/Shanghai')");
// }
// }
// //sql语句
// String sql = "SELECT * FROM "+ InfluxDBPublicParam.LIMIT_RATE +" WHERE " + timeId;
// //结果集
// QueryResult result = influxDbUtils.query(sql);
// // if (Objects.isNull(result.getResults().get(0).getSeries())) {
// // throw new BusinessException(HarmonicResponseEnum.LIMIT_RATE_ERROR);
// // }
// //结果集映射到对象中
// InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
// limitRatePOS = resultMapper.toPOJO(result, LimitRatePO.class);
// //将时间处理为年月日的字符串
// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
// limitRatePOS.forEach(item->{
// Instant instant = item.getTime();
// ZoneId zoneId = ZoneId.systemDefault();
// LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
// String dateStr = dateTimeFormatter.format(localDateTime);
// String monthStr = monthFormatter.format(localDateTime);
// item.setDayStr(dateStr);
// item.setMouthStr(monthStr);
// });
//
//
// return limitRatePOS;
} }
} }

View File

@@ -130,8 +130,8 @@ public class THDistortionServiceImpl implements THDistortionService {
deviceInfoParam.setDeptIndex(statisticsBizBaseParam.getId()); deviceInfoParam.setDeptIndex(statisticsBizBaseParam.getId());
deviceInfoParam.setStatisticalType(new SimpleDTO()); deviceInfoParam.setStatisticalType(new SimpleDTO());
deviceInfoParam.setServerName(generalInfo.getMicroServiceName()); deviceInfoParam.setServerName(generalInfo.getMicroServiceName());
deviceInfoParam.setPowerFlag(0); deviceInfoParam.setPowerFlag(2);
deviceInfoParam.setMonitorFlag(0); deviceInfoParam.setMonitorFlag(2);
/*获取按部门分类的实际所有终端综合信息*/ /*获取按部门分类的实际所有终端综合信息*/
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalAllDeviceInfoAsDept(deviceInfoParam).getData(); List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalAllDeviceInfoAsDept(deviceInfoParam).getData();
/*监测点ID扁平化*/ /*监测点ID扁平化*/
@@ -139,7 +139,7 @@ public class THDistortionServiceImpl implements THDistortionService {
QueryWrapper<RMpVThd> wrapper = new QueryWrapper<>(); QueryWrapper<RMpVThd> wrapper = new QueryWrapper<>();
wrapper.in("measurement_point_id", collect) wrapper.in("measurement_point_id", collect)
.between("data_date", statisticsBizBaseParam.getStartTime(), statisticsBizBaseParam.getEndTime()) .between("data_date", statisticsBizBaseParam.getStartTime(), statisticsBizBaseParam.getEndTime())
.eq("data_type", 1) .eq("data_type", 0)
.orderByDesc("v_thd"); .orderByDesc("v_thd");
List<RMpVThd> rMpVThdList = rMpVThdMapper.selectList(wrapper); List<RMpVThd> rMpVThdList = rMpVThdMapper.selectList(wrapper);
rMpVThdVOList = rMpVThdList.stream().limit(topNum).map(rMpVThd -> { rMpVThdVOList = rMpVThdList.stream().limit(topNum).map(rMpVThd -> {

View File

@@ -1,71 +0,0 @@
package com.njcn.prepare.harmonic.controller;
import com.njcn.harmonic.pojo.po.ExcelRptTemp;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.mapper.mysql.line.ExcelRptTempMapper;
import com.njcn.prepare.harmonic.pojo.influxdb.po.DataVPO;
import com.njcn.prepare.harmonic.service.mysql.Impl.line.LimitRateService;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import java.text.ParseException;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* Description:
* 接口文档访问地址http://serverIP:port/swagger-ui.html
* Date: 2022/10/18 20:15【需求编号】
*
* @author clam
* @version V1.0.0
*/
@RunWith(SpringRunner.class)
@WebAppConfiguration
@SpringBootTest
public class LimitRateServiceTest {
private @Autowired
LimitRateService limitRateService;
private @Autowired
InfluxDbUtils influxDbUtils;
private @Autowired
ExcelRptTempMapper excelRptTempMapper;
@Test
public void test() throws ParseException {
System.out.println("spring test start");
limitRateService.limitRateJobHandler (Stream.of ("8696be1d170e05b7d848accc059f4558" ).collect(Collectors.toList()), "2022-10-15 00:00:00", "2022-10-15 23:59:59");
}
@Test
public void test1(){
System.out.println("spring test start");
String sql ="SELECT * FROM data_v where time >= '2022-10-15 00:00:00' and time <= '2022-10-15 23:59:59' ";
influxDbUtils.setDbName ("pqsbase_test");
QueryResult sqlResult = influxDbUtils.query (sql);
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper ( );
List<DataVPO> list = resultMapper.toPOJO (sqlResult, DataVPO.class);
System.out.println ("spring test end" );
}
@Test
public void test3(){
System.out.println("spring test start");
ExcelRptTemp excelRptTemp = excelRptTempMapper.selectById ("8c7f0cb540904ddeb8fbedef288579d7");
System.out.println (excelRptTemp.getId () );
// limitRateService.limitRateJobHandler (Stream.of ("8696be1d170e05b7d848accc059f4558" ).collect(Collectors.toList()), "2022-10-15 00:00:00", "2022-10-15 23:59:59");
}
}