暂态模块格式化时间处理
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
package com.njcn.event.pojo.po;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.influxdb.annotation.Column;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
/**
|
||||
* @author cdf
|
||||
@@ -13,81 +17,79 @@ import java.math.BigDecimal;
|
||||
*/
|
||||
|
||||
@Data
|
||||
//@Measurement(name = "pqs_eventdetail")
|
||||
public class EventDetailNew {
|
||||
|
||||
@Column(name = "line_id")
|
||||
|
||||
private String lineId;
|
||||
|
||||
@Column(name = "time")
|
||||
|
||||
@ApiModelProperty(value = "开始时间")
|
||||
private String startTime;
|
||||
|
||||
@Column(name = "event_describe")
|
||||
|
||||
@ApiModelProperty(value = "事件描述")
|
||||
private String eventDescribe;
|
||||
|
||||
@Column(name = "wave_type")
|
||||
|
||||
@ApiModelProperty(value = "统计类型")
|
||||
private String eventType;
|
||||
|
||||
@Column(name = "persist_time")
|
||||
|
||||
@ApiModelProperty(value = "持续时间,单位秒")
|
||||
private Double duration;
|
||||
|
||||
@Column(name = "event_value")
|
||||
|
||||
@ApiModelProperty(value = "特征幅值")
|
||||
private Double featureAmplitude;
|
||||
|
||||
@Column(name = "event_reason")
|
||||
|
||||
@ApiModelProperty(value = "暂降原因(Event_Reason)")
|
||||
private String advanceReason;
|
||||
|
||||
@Column(name = "event_type")
|
||||
|
||||
@ApiModelProperty(value = "暂降类型(Event_Type)")
|
||||
private String advanceType;
|
||||
|
||||
@Column(name = "eventass_index")
|
||||
|
||||
private String eventassIndex;
|
||||
|
||||
@Column(name = "dq_time")
|
||||
|
||||
private Integer dqTime;
|
||||
|
||||
@Column(name = "deal_time")
|
||||
|
||||
private String dealTime;
|
||||
|
||||
@Column(name = "deal_flag")
|
||||
|
||||
private Integer dealFlag;
|
||||
|
||||
@Column(name = "num")
|
||||
private Integer num;
|
||||
|
||||
@Column(name = "file_flag")
|
||||
|
||||
private Integer fileFlag;
|
||||
|
||||
@Column(name = "first_time")
|
||||
|
||||
private String firstTime;
|
||||
|
||||
@Column(name = "first_type")
|
||||
|
||||
private String firstType;
|
||||
|
||||
@Column(name = "first_ms")
|
||||
|
||||
private Integer firstMs;
|
||||
|
||||
@Column(name = "wave_name")
|
||||
|
||||
@ApiModelProperty(value = "波形路径")
|
||||
private String wavePath;
|
||||
|
||||
@Column(name = "energy")
|
||||
|
||||
private Double energy;
|
||||
|
||||
@Column(name = "severity")
|
||||
|
||||
private Double severity;
|
||||
|
||||
@Column(name = "sagsource")
|
||||
|
||||
private String sagSource;
|
||||
|
||||
@Column(name = "create_time")
|
||||
|
||||
private String createTime;
|
||||
|
||||
private String lineName;
|
||||
@@ -107,4 +109,14 @@ public class EventDetailNew {
|
||||
@ApiModelProperty(value = "暂时事件ID")
|
||||
private String eventId;
|
||||
|
||||
|
||||
public String getStartTime() {
|
||||
return startTime;
|
||||
}
|
||||
|
||||
public void setStartTime(String startTime) {
|
||||
//时间处理,LocalDateTime转string多一个T
|
||||
startTime = startTime.replace("T"," ");
|
||||
this.startTime = startTime;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ public class RmpEventDetailPO implements Serializable {
|
||||
private String sagsource;
|
||||
|
||||
@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;
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ public class RmpEventDetailPO implements Serializable {
|
||||
|
||||
private Double transientValue;
|
||||
|
||||
private String createTime;
|
||||
private LocalDateTime createTime;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -121,37 +121,6 @@ public class EventDetailServiceImpl extends ServiceImpl<EventDetailMapper, RmpEv
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -110,13 +110,7 @@ public class TransientServiceImpl implements TransientService {
|
||||
List<String> LineIndexes = deviceList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList());
|
||||
|
||||
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());
|
||||
|
||||
if (!CollectionUtils.isEmpty(eventDetailData)) {
|
||||
@@ -331,14 +325,11 @@ public class TransientServiceImpl implements TransientService {
|
||||
page= BeanUtil.copyProperties(pageInfo,Page.class);
|
||||
|
||||
if (CollUtil.isNotEmpty(eventDetailData)) {
|
||||
List<String> lineIds = eventDetailData.stream().map(EventDetailNew::getLineId).collect(Collectors.toList());
|
||||
lineIds = lineIds.stream().distinct().collect(Collectors.toList());
|
||||
|
||||
List<String> lineIds = eventDetailData.stream().map(EventDetailNew::getLineId).distinct().collect(Collectors.toList());
|
||||
List<AreaLineInfoVO> r = lineFeignClient.getBaseLineAreaInfo(lineIds).getData();
|
||||
List<DictData> reasonList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_REASON.getName()).getData();
|
||||
List<DictData> typeList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.EVENT_TYPE.getName()).getData();
|
||||
|
||||
|
||||
for (EventDetailNew eventDetail : eventDetailData) {
|
||||
for (AreaLineInfoVO areaLineInfoVO : r) {
|
||||
if (eventDetail.getLineId().equals(areaLineInfoVO.getLineId())) {
|
||||
@@ -383,114 +374,7 @@ public class TransientServiceImpl implements TransientService {
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制保存文件
|
||||
|
||||
Reference in New Issue
Block a user