|
|
|
|
@@ -0,0 +1,143 @@
|
|
|
|
|
package com.njcn.influx.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
import com.njcn.influx.mapper.DataFlickerMapper;
|
|
|
|
|
import com.njcn.influx.pojo.dto.DataFlickerDTO;
|
|
|
|
|
import com.njcn.influx.pojo.po.DataFlicker;
|
|
|
|
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
|
|
|
|
import com.njcn.influx.service.DataFlickerService;
|
|
|
|
|
import com.njcn.influx.utils.InfluxDbUtil;
|
|
|
|
|
import org.influxdb.dto.QueryResult;
|
|
|
|
|
import org.influxdb.impl.InfluxDBResultMapper;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author hongawen
|
|
|
|
|
* @version 1.0.0
|
|
|
|
|
* @date 2023年05月05日 09:05
|
|
|
|
|
*/
|
|
|
|
|
@Service
|
|
|
|
|
public class DataFlickerServiceImpl implements DataFlickerService {
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private DataFlickerMapper dataFlickerMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<DataFlickerDTO> getDataFlicker(String lineIndex, String startTime, String endTime) {
|
|
|
|
|
InfluxDbUtil influxDbUtils = new InfluxDbUtil("admin", "123456", "http://192.168.1.16:8086", "pqsbase_sjzx", "autogen");
|
|
|
|
|
|
|
|
|
|
List<DataFlickerDTO> result = new ArrayList<>();
|
|
|
|
|
// StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
|
// stringBuilder.append("line_id='").append(lineIndex).append("' and ");
|
|
|
|
|
// //最小值
|
|
|
|
|
// String sql1 = "select min(fluc) AS fluc,min(plt) AS plt,min(pst) AS pst from data_flicker where " + stringBuilder + " time >= '" + startTime + "' and time <= '" + endTime + "' group by line_id,phasic_type,quality_flag tz('Asia/Shanghai')";
|
|
|
|
|
// QueryResult sqlResult1 = influxDbUtils.query(sql1);
|
|
|
|
|
// InfluxDBResultMapper resultMapper1 = new InfluxDBResultMapper();
|
|
|
|
|
// List<DataFlickerDTO> list1 = resultMapper1.toPOJO(sqlResult1, DataFlickerDTO.class);
|
|
|
|
|
// list1.forEach(item -> {
|
|
|
|
|
// item.setValueType("MIN");
|
|
|
|
|
// });
|
|
|
|
|
// //最大值
|
|
|
|
|
// String sql2 = "select max(fluc) AS fluc,max(plt) AS plt,max(pst) AS pst from data_flicker where " + stringBuilder + " time >= '" + startTime + "' and time <= '" + endTime + "' group by line_id,phasic_type,quality_flag tz('Asia/Shanghai')";
|
|
|
|
|
// QueryResult sqlResult2 = influxDbUtils.query(sql2);
|
|
|
|
|
// InfluxDBResultMapper resultMapper2 = new InfluxDBResultMapper();
|
|
|
|
|
// List<DataFlickerDTO> list2 = resultMapper2.toPOJO(sqlResult2, DataFlickerDTO.class);
|
|
|
|
|
// list2.forEach(item -> {
|
|
|
|
|
// item.setValueType("MAX");
|
|
|
|
|
// });
|
|
|
|
|
// //平均值
|
|
|
|
|
// String sql3 = "select mean(fluc) AS fluc,mean(plt) AS plt,mean(pst) AS pst from data_flicker where " + stringBuilder + " time >= '" + startTime + "' and time <= '" + endTime + "' group by line_id,phasic_type,quality_flag tz('Asia/Shanghai')";
|
|
|
|
|
// QueryResult sqlResult3 = influxDbUtils.query(sql3);
|
|
|
|
|
// InfluxDBResultMapper resultMapper3 = new InfluxDBResultMapper();
|
|
|
|
|
// List<DataFlickerDTO> list3 = resultMapper3.toPOJO(sqlResult3, DataFlickerDTO.class);
|
|
|
|
|
// list3.forEach(item -> {
|
|
|
|
|
// item.setValueType("AVG");
|
|
|
|
|
// });
|
|
|
|
|
// //CP95值
|
|
|
|
|
// String sql4 = "select percentile(fluc,95) AS fluc,percentile(plt,95) AS plt,percentile(pst,95) AS pst from data_flicker where " + stringBuilder + " time >= '" + startTime + "' and time <= '" + endTime + "' group by line_id,phasic_type,quality_flag tz('Asia/Shanghai')";
|
|
|
|
|
// QueryResult sqlResult4 = influxDbUtils.query(sql4);
|
|
|
|
|
// InfluxDBResultMapper resultMapper4 = new InfluxDBResultMapper();
|
|
|
|
|
// List<DataFlickerDTO> list4 = resultMapper4.toPOJO(sqlResult4, DataFlickerDTO.class);
|
|
|
|
|
// list4.forEach(item -> {
|
|
|
|
|
// item.setValueType("CP95");
|
|
|
|
|
// });
|
|
|
|
|
// result.addAll(list1);
|
|
|
|
|
// result.addAll(list2);
|
|
|
|
|
// result.addAll(list3);
|
|
|
|
|
// result.addAll(list4);
|
|
|
|
|
|
|
|
|
|
/////改造前↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑改造后↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
|
|
|
|
//最小值
|
|
|
|
|
List<DataFlickerDTO> result1 ;
|
|
|
|
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFlicker.class, DataFlickerDTO.class);
|
|
|
|
|
influxQueryWrapper.eq(DataFlicker::getLineId, lineIndex)
|
|
|
|
|
.min(DataFlicker::getFluc)
|
|
|
|
|
.min(DataFlicker::getPlt)
|
|
|
|
|
.min(DataFlicker::getPst)
|
|
|
|
|
.groupBy(DataFlicker::getLineId,DataFlicker::getPhaseType,DataFlicker::getQualityFlag)
|
|
|
|
|
.between(DataFlicker::getTime, startTime, endTime);
|
|
|
|
|
result1 = dataFlickerMapper.getStatisticsByWraper(influxQueryWrapper);
|
|
|
|
|
result1.forEach(item -> {
|
|
|
|
|
item.setValueType("MIN");
|
|
|
|
|
});
|
|
|
|
|
//最大值
|
|
|
|
|
List<DataFlickerDTO> result2 ;
|
|
|
|
|
influxQueryWrapper.initSql();
|
|
|
|
|
influxQueryWrapper.eq(DataFlicker::getLineId, lineIndex)
|
|
|
|
|
.max(DataFlicker::getFluc)
|
|
|
|
|
.max(DataFlicker::getPlt)
|
|
|
|
|
.max(DataFlicker::getPst)
|
|
|
|
|
.groupBy(DataFlicker::getLineId,DataFlicker::getPhaseType,DataFlicker::getQualityFlag)
|
|
|
|
|
.between(DataFlicker::getTime, startTime, endTime);
|
|
|
|
|
result2 = dataFlickerMapper.getStatisticsByWraper(influxQueryWrapper);
|
|
|
|
|
result2.forEach(item -> {
|
|
|
|
|
item.setValueType("MAX");
|
|
|
|
|
});
|
|
|
|
|
//平均值
|
|
|
|
|
List<DataFlickerDTO> result3 ;
|
|
|
|
|
influxQueryWrapper.initSql();
|
|
|
|
|
influxQueryWrapper.eq(DataFlicker::getLineId, lineIndex)
|
|
|
|
|
.mean(DataFlicker::getFluc)
|
|
|
|
|
.mean(DataFlicker::getPlt)
|
|
|
|
|
.mean(DataFlicker::getPst)
|
|
|
|
|
.groupBy(DataFlicker::getLineId,DataFlicker::getPhaseType,DataFlicker::getQualityFlag)
|
|
|
|
|
.between(DataFlicker::getTime, startTime, endTime);
|
|
|
|
|
result3 = dataFlickerMapper.getStatisticsByWraper(influxQueryWrapper);
|
|
|
|
|
result3.forEach(item -> {
|
|
|
|
|
item.setValueType("AVG");
|
|
|
|
|
});
|
|
|
|
|
List<DataFlickerDTO> result4 ;
|
|
|
|
|
influxQueryWrapper.initSql();
|
|
|
|
|
influxQueryWrapper.eq(DataFlicker::getLineId, lineIndex)
|
|
|
|
|
.percentile(DataFlicker::getFluc, 95)
|
|
|
|
|
.percentile(DataFlicker::getPlt, 95)
|
|
|
|
|
.percentile(DataFlicker::getPst, 95)
|
|
|
|
|
.groupBy(DataFlicker::getLineId,DataFlicker::getPhaseType,DataFlicker::getQualityFlag)
|
|
|
|
|
.between(DataFlicker::getTime, startTime, endTime);
|
|
|
|
|
//CP95值
|
|
|
|
|
result4 = dataFlickerMapper.getStatisticsByWraper(influxQueryWrapper);
|
|
|
|
|
result4.forEach(item -> {
|
|
|
|
|
item.setValueType("CP95");
|
|
|
|
|
});
|
|
|
|
|
List<DataFlickerDTO> result5 = new ArrayList<>();
|
|
|
|
|
result5.addAll(result1);
|
|
|
|
|
result5.addAll(result2);
|
|
|
|
|
result5.addAll(result3);
|
|
|
|
|
result5.addAll(result4);
|
|
|
|
|
|
|
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
|
try {
|
|
|
|
|
System.out.println(objectMapper.writeValueAsString(result));
|
|
|
|
|
System.out.println(objectMapper.writeValueAsString(result5));
|
|
|
|
|
} catch (JsonProcessingException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|