代码修改
This commit is contained in:
@@ -61,21 +61,9 @@ public class DataTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
InfluxDbUtils influxDBUtil = new InfluxDbUtils("admin", "njcnpqs", "http://192.168.1.18:8086", "PQSBASE", "");
|
InfluxDbUtils influxDBUtil = new InfluxDbUtils("admin", "123456", "http://192.168.1.18:8086", "pqsbase_sjzx", "");
|
||||||
String sql = "select * from pqs_eventdetail limit 10";
|
|
||||||
//获取暂降事件
|
|
||||||
QueryResult result = influxDBUtil.query(sql);
|
|
||||||
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
|
||||||
List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class);
|
|
||||||
String bodyStr = PubUtils.obj2json(eventDetailList.get(0));
|
|
||||||
//对结果进行转换
|
|
||||||
EventDetail o = PubUtils.json2obj(bodyStr, EventDetail.class);
|
|
||||||
Instant timeId = o.getTimeId();
|
|
||||||
System.out.println(timeId);
|
|
||||||
|
|
||||||
|
insert(influxDBUtil);
|
||||||
System.out.println(1);
|
|
||||||
//select(influxDBUtil);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void deleteDB(InfluxDbUtils influxDBUtil) {
|
public static void deleteDB(InfluxDbUtils influxDBUtil) {
|
||||||
@@ -85,13 +73,14 @@ public class DataTest {
|
|||||||
//单条数据插入
|
//单条数据插入
|
||||||
public static void insert(InfluxDbUtils influxDBUtil) {
|
public static void insert(InfluxDbUtils influxDBUtil) {
|
||||||
Map<String, String> tags = new HashMap<>();
|
Map<String, String> tags = new HashMap<>();
|
||||||
long time = Long.parseLong("1654239603000");
|
long time = Long.parseLong("1675958400000");
|
||||||
tags.put("dev_id", "6d53a38cc630675dbe7a179c44d9dc3c");
|
tags.put("dev_id", "57d121d45a26f3cc1d7b6ba541f895c0");
|
||||||
Map<String, Object> fields = new HashMap<>();
|
Map<String, Object> fields = new HashMap<>();
|
||||||
// fields.put("due",1440);
|
// fields.put("due",1440);
|
||||||
// fields.put("real",1200);
|
// fields.put("real",1200);
|
||||||
fields.put("onlinemin", 1123);
|
fields.put("online_min", 0);
|
||||||
fields.put("offlinemin", 377);
|
fields.put("offline_min", 1440);
|
||||||
|
fields.put("online_rate", 0.0000);
|
||||||
influxDBUtil.insert("pqs_onlinerate", tags, fields, time, TimeUnit.MILLISECONDS);
|
influxDBUtil.insert("pqs_onlinerate", tags, fields, time, TimeUnit.MILLISECONDS);
|
||||||
// long time = Long.parseLong("1655135328135");
|
// long time = Long.parseLong("1655135328135");
|
||||||
// Map<String, String> tags = new HashMap<>();
|
// Map<String, String> tags = new HashMap<>();
|
||||||
|
|||||||
@@ -18,15 +18,13 @@ import lombok.NoArgsConstructor;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class TerminalOnlineRateDataParam extends DeviceInfoParam.BusinessParam{
|
public class TerminalOnlineRateDataParam extends DeviceInfoParam.BusinessParam{
|
||||||
|
|
||||||
// 监测点合格率
|
|
||||||
// @ApiModelProperty(name = "devicePassRate",value = "终端在线率合格率")
|
|
||||||
// private Integer devicePassRate;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字段表监测点等级
|
* 字段表监测点等级
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要")
|
@ApiModelProperty(name = "lineGrade",value = "字段表监测点等级,0:极重要 1:重要 2:普通 3:不重要")
|
||||||
private Integer algoDescribe;
|
private String lineGrade;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,13 +26,13 @@ public class TerminalOnlineRateData implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 终端id
|
* 终端id
|
||||||
*/
|
*/
|
||||||
@Column(name = "dev_id")
|
@Column(name = "dev_id",tag = true)
|
||||||
private String devId;
|
private String devId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端在线率
|
* 终端在线率
|
||||||
*/
|
*/
|
||||||
@Column(name = "online_rate")
|
@Column(name = "online_rate")
|
||||||
private Double onlineRate;
|
private Double onlineRate = 3.14159;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public class DeviceVO implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 设备sim卡号
|
* 设备sim卡号
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(name = "contract",value = "装置sim卡")
|
@ApiModelProperty(name = "sim",value = "装置sim卡")
|
||||||
private String sim;
|
private String sim;
|
||||||
|
|
||||||
@ApiModelProperty(name = "sort",value = "排序",required = true)
|
@ApiModelProperty(name = "sort",value = "排序",required = true)
|
||||||
|
|||||||
@@ -49,4 +49,11 @@ public interface DeviceMapper extends BaseMapper<Device> {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
List<RunTimeVO> getRunManageDevList(@Param("list") List<String> list, @Param("comFlag")List<Integer> comFlag, @Param("runFlag")List<Integer> runFlag);
|
List<RunTimeVO> getRunManageDevList(@Param("list") List<String> list, @Param("comFlag")List<Integer> comFlag, @Param("runFlag")List<Integer> runFlag);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定等级的装置
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/2/10
|
||||||
|
*/
|
||||||
|
List<String> getDevByGrade(@Param("devId")List<String> devIds,@Param("lineGrade") String lineGrade);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,12 +24,10 @@ public interface TerminalOnlineRateDataMapper extends BaseMapper<TerminalOnlineR
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过部分终端等级信息查询终端信息
|
* 通过部分终端等级信息查询终端信息
|
||||||
* @param devGrade
|
* @param lineGrade
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<TerminalOnlineRateDataVO> getDevice(@Param("devGrade")List<TerminalOnlineRateDataVO> devGrade,
|
List<TerminalOnlineRateDataVO> getDevice(@Param("devIds")List<String> devIds, @Param("lineGrade")String lineGrade);
|
||||||
@Param("searchBeginTime") String searchBeginTime,
|
|
||||||
@Param("searchEndTime") String searchEndTime);
|
|
||||||
/**
|
/**
|
||||||
* 根据供电公司索引获取出省会的信息
|
* 根据供电公司索引获取出省会的信息
|
||||||
* @param gdIndexes 供电公司索引
|
* @param gdIndexes 供电公司索引
|
||||||
|
|||||||
@@ -36,8 +36,7 @@
|
|||||||
pdevice.Com_Flag AS comFlag,
|
pdevice.Com_Flag AS comFlag,
|
||||||
sddManufacturer.`Name` AS manufacturer,
|
sddManufacturer.`Name` AS manufacturer,
|
||||||
pdevice.Update_Time AS updateTime,
|
pdevice.Update_Time AS updateTime,
|
||||||
sddLineGrade.`Name` AS lineGrade,
|
max(sddLineGrade.Algo_Describe) as algoDescribe
|
||||||
sddLineGrade.Algo_Describe as algoDescribe
|
|
||||||
FROM
|
FROM
|
||||||
pq_line AS device
|
pq_line AS device
|
||||||
LEFT JOIN pq_line AS voltage ON device.id = voltage.pid
|
LEFT JOIN pq_line AS voltage ON device.id = voltage.pid
|
||||||
@@ -49,19 +48,23 @@
|
|||||||
WHERE
|
WHERE
|
||||||
device.`Level` = 4
|
device.`Level` = 4
|
||||||
AND device.id in
|
AND device.id in
|
||||||
<foreach collection="devGrade" item="item" open="(" close=")" separator=",">
|
<foreach collection="devIds" item="item" open="(" close=")" separator=",">
|
||||||
#{item.id}
|
#{item}
|
||||||
</foreach>
|
</foreach>
|
||||||
AND sddLineGrade.Algo_Describe in
|
<if test="lineGrade!='' and lineGrade!=null">
|
||||||
<foreach collection="devGrade" item="item" open="(" close=")" separator=",">
|
AND pld.line_grade = #{lineGrade}
|
||||||
#{item.algoDescribe}
|
|
||||||
</foreach>
|
|
||||||
<if test="searchBeginTime != null and searchBeginTime != ''"><!-- 开始创建时间 -->
|
|
||||||
and date_format(device.update_Time,'%y%m%d') >= date_format(#{searchBeginTime},'%y%m%d')
|
|
||||||
</if>
|
|
||||||
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
|
|
||||||
and date_format(device.update_Time,'%y%m%d') <= date_format(#{searchEndTime},'%y%m%d')
|
|
||||||
</if>
|
</if>
|
||||||
|
group by
|
||||||
|
device.id,
|
||||||
|
device.pid,
|
||||||
|
device.`Name`,
|
||||||
|
device.`Level`,
|
||||||
|
device.Sort,
|
||||||
|
pdevice.ip,
|
||||||
|
pdevice.Com_Flag,
|
||||||
|
sddManufacturer.`Name`,
|
||||||
|
pdevice.Update_Time
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!--根据供电公司索引获取出省会的信息-->
|
<!--根据供电公司索引获取出省会的信息-->
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.njcn.device.pq.service;
|
||||||
|
|
||||||
|
import com.njcn.device.pq.pojo.vo.LineDistributionVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pqs
|
||||||
|
* 运维中心
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/2/9
|
||||||
|
*/
|
||||||
|
public interface OperationService {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取监测点分布
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/2/9
|
||||||
|
*/
|
||||||
|
List<LineDistributionVO> getLineDistribution(String lineGrade);
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
package com.njcn.device.pq.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
|
import com.njcn.common.utils.LogUtil;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
|
import com.njcn.device.pq.pojo.vo.LineDistributionVO;
|
||||||
|
import com.njcn.device.pq.service.OperationService;
|
||||||
|
import com.njcn.user.api.DeptFeignClient;
|
||||||
|
import com.njcn.user.pojo.dto.DeptDTO;
|
||||||
|
import com.njcn.web.utils.RequestUtil;
|
||||||
|
import com.njcn.web.utils.WebUtil;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pqs
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/2/9
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Slf4j
|
||||||
|
public class OperationServiceImpl implements OperationService {
|
||||||
|
|
||||||
|
private final DeptFeignClient deptFeignClient;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取监测点分布
|
||||||
|
* @author cdf
|
||||||
|
* @date 2023/2/9
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<LineDistributionVO> getLineDistribution(String lineGrade) {
|
||||||
|
String deptIndex = RequestUtil.getDeptIndex();
|
||||||
|
//初始化部门筛选条件
|
||||||
|
List<Integer> deptType = WebUtil.filterDeptType();
|
||||||
|
//获取包括当前部门的后代所有部门信息
|
||||||
|
List<DeptDTO> deptInfos = deptFeignClient.getDeptDescendantIndexes(deptIndex, deptType).getData();
|
||||||
|
List<DeptDTO> directDeptInfos = deptInfos.stream()
|
||||||
|
.filter(deptDTO -> deptDTO.getPid().equals(deptIndex)).sorted(Comparator.comparing(DeptDTO::getSort))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
if (CollectionUtil.isEmpty(directDeptInfos)) {
|
||||||
|
//没有直接子部门,获取当前部门所有信息
|
||||||
|
List<DeptDTO> dept = deptInfos.stream()
|
||||||
|
.filter(deptDTO -> deptDTO.getId().equals(deptIndex))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
} else {
|
||||||
|
for (DeptDTO deptDTO : directDeptInfos) {
|
||||||
|
//筛选上级部门pids包含该id的所有部门
|
||||||
|
List<DeptDTO> descendantDeptDTO = deptInfos.stream()
|
||||||
|
.filter(d -> d.getPids().contains(deptDTO.getId()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
//形成需要查询监测点的部门索引
|
||||||
|
List<String> indexes = descendantDeptDTO.stream()
|
||||||
|
.map(DeptDTO::getId)
|
||||||
|
.distinct()
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
indexes.add(deptDTO.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -59,8 +59,6 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
|||||||
@Override
|
@Override
|
||||||
public List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam) {
|
public List<TerminalOnlineRateDataVO> getOnlineRateData(TerminalOnlineRateDataParam terminalOnlineRateDataParam) {
|
||||||
|
|
||||||
// TODO 部门id StatisticsEnum
|
|
||||||
// terminalOnlineRateDataParam.setDeptIndex(RequestUtil.getDeptIndex());
|
|
||||||
|
|
||||||
// 获取所有数据
|
// 获取所有数据
|
||||||
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(terminalOnlineRateDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(terminalOnlineRateDataParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
|
||||||
@@ -89,49 +87,41 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
|||||||
// 创建实体类
|
// 创建实体类
|
||||||
TerminalOnlineRateDataVO terminalOnlineRateDataVO = new TerminalOnlineRateDataVO();
|
TerminalOnlineRateDataVO terminalOnlineRateDataVO = new TerminalOnlineRateDataVO();
|
||||||
|
|
||||||
// 通过供电公司索引查询省会
|
|
||||||
List<TerminalOnlineRateDataVO> proList = terminalOnlineRateDataMapper.getProvinceList(generalDeviceDTO.getGdIndexes(),terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
|
||||||
|
|
||||||
// 通过供电公司索引查询供电公司信息
|
|
||||||
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(generalDeviceDTO.getGdIndexes(),terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
|
||||||
|
|
||||||
// 通过供电站索引查询供电站信息
|
|
||||||
List<TerminalOnlineRateDataVO> subList = terminalOnlineRateDataMapper.getSubList(generalDeviceDTO.getSubIndexes(),terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
|
||||||
|
|
||||||
// 通过终端的索引查询索引的等级和id
|
|
||||||
List<TerminalOnlineRateDataVO> deviceLevelAndId = terminalOnlineRateDataMapper.getDeviceLevelData(generalDeviceDTO.getDeviceIndexes());
|
|
||||||
|
|
||||||
// 通过部分终端等级信息查询终端信息
|
// 通过部分终端等级信息查询终端信息
|
||||||
List<TerminalOnlineRateDataVO> deviceList = terminalOnlineRateDataMapper.getDevice(deviceLevelAndId,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
List<TerminalOnlineRateDataVO> deviceList = terminalOnlineRateDataMapper.getDevice(generalDeviceDTO.getDeviceIndexes(),terminalOnlineRateDataParam.getLineGrade());
|
||||||
|
|
||||||
|
if(CollectionUtil.isEmpty(deviceList)){
|
||||||
// 判断前端出入的终端等级
|
continue;
|
||||||
if (terminalOnlineRateDataParam.getAlgoDescribe()!=null) {
|
|
||||||
switch (terminalOnlineRateDataParam.getAlgoDescribe()) {
|
|
||||||
case 0:
|
|
||||||
deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 0).collect(Collectors.toList());
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 1).collect(Collectors.toList());
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 2).collect(Collectors.toList());
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
deviceList = deviceList.stream().filter(dev -> dev.getAlgoDescribe() != null && dev.getAlgoDescribe() == 3).collect(Collectors.toList());
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> devIds = deviceList.stream().map(TerminalOnlineRateDataVO::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
// 通过工具类得到查询influxdb的条件(相当于mysql中的in)
|
// 通过工具类得到查询influxdb的条件(相当于mysql中的in)
|
||||||
StringBuilder devForInfluxdb = InfluxDBCommUtils.assToInfluxParam(generalDeviceDTO.getDeviceIndexes());
|
StringBuilder devForInfluxdb = InfluxDBCommUtils.assToInfluxParamDev(devIds);
|
||||||
// 通过监测点id集合查询influxdb监测点数据完整性
|
// 通过装置id
|
||||||
List<TerminalOnlineRateData> terminalOnlineRateData = getPercentageOfOnlineRate(terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime(), devForInfluxdb);
|
List<TerminalOnlineRateData> terminalOnlineRateData = getPercentageOfOnlineRate(terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime(), devForInfluxdb);
|
||||||
|
|
||||||
// 处理终端在线率
|
// 处理终端在线率
|
||||||
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData,deviceList);
|
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData,deviceList);
|
||||||
|
|
||||||
|
|
||||||
|
List<String> subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
||||||
|
// 通过供电站索引查询供电站信息
|
||||||
|
List<TerminalOnlineRateDataVO> subList = terminalOnlineRateDataMapper.getSubList(subIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
||||||
|
|
||||||
|
List<String> gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
|
||||||
|
// 通过供电公司索引查询供电公司信息
|
||||||
|
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(gdIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
||||||
|
|
||||||
|
List<String> proIds = gdList.stream().map(TerminalOnlineRateDataVO::getPid).collect(Collectors.toList());
|
||||||
|
|
||||||
|
// 通过供电公司索引查询省会
|
||||||
|
List<TerminalOnlineRateDataVO> proList = terminalOnlineRateDataMapper.getProvinceList(proIds,terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime());
|
||||||
|
|
||||||
|
|
||||||
//处理变电站
|
//处理变电站
|
||||||
dealChildrenData(subList, deviceList, false);
|
dealChildrenData(subList, deviceList, false);
|
||||||
//处理供电公司
|
//处理供电公司
|
||||||
@@ -219,12 +209,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
|
|||||||
.append(InfluxDBPublicParam.END_TIME)
|
.append(InfluxDBPublicParam.END_TIME)
|
||||||
.append("'");
|
.append("'");
|
||||||
//sql语句
|
//sql语句
|
||||||
String sql = "SELECT time,dev_id,online_rate FROM pqs_onlinerate WHERE " + queryCriteria + " group by dev_id " + InfluxDBPublicParam.TIME_ZONE;
|
String sql = "SELECT mean(online_rate) as online_rate FROM pqs_onlinerate WHERE " + queryCriteria + " group by dev_id " + InfluxDBPublicParam.TIME_ZONE;
|
||||||
// 结果集
|
// 结果集
|
||||||
QueryResult results = influxDbUtils.query(sql);
|
QueryResult results = influxDbUtils.query(sql);
|
||||||
|
|
||||||
System.out.println(results);
|
|
||||||
|
|
||||||
// 结果集映射到对象中
|
// 结果集映射到对象中
|
||||||
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
|
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
|
||||||
// 返回结果
|
// 返回结果
|
||||||
|
|||||||
@@ -121,43 +121,19 @@ public class DataStatisticsUtil {
|
|||||||
|
|
||||||
if (CollectionUtil.isNotEmpty(terminalOnlineRateData)) {
|
if (CollectionUtil.isNotEmpty(terminalOnlineRateData)) {
|
||||||
// 根据监测点id分类
|
// 根据监测点id分类
|
||||||
Map<String, List<TerminalOnlineRateData>> groupByDevId = terminalOnlineRateData.stream().collect(Collectors.groupingBy(TerminalOnlineRateData::getDevId));
|
|
||||||
// 新建集合处理数据
|
|
||||||
List<TerminalOnlineRateData> terminalOnlineRateDataArrayList = new ArrayList<>();
|
|
||||||
// 获取map中的key(监测点id集合)
|
|
||||||
Set<String> devIds = groupByDevId.keySet();
|
|
||||||
|
|
||||||
for (String devId : devIds) {
|
|
||||||
// 创建对象处理数据
|
|
||||||
TerminalOnlineRateData onlineRateData = new TerminalOnlineRateData();
|
|
||||||
|
|
||||||
double onlineRate = 0.0;
|
|
||||||
|
|
||||||
// 取出值
|
|
||||||
List<TerminalOnlineRateData> devOnlineRateData = groupByDevId.get(devId);
|
|
||||||
int size = devOnlineRateData.size();
|
|
||||||
for (TerminalOnlineRateData devOnlineRate : devOnlineRateData) {
|
|
||||||
onlineRate += devOnlineRate.getOnlineRate();
|
|
||||||
}
|
|
||||||
// 求出监测点数据完整性
|
|
||||||
double deviceOnlineRateDouble = onlineRate / size;
|
|
||||||
String deviceOnlineRateString = String.format("%.2f", deviceOnlineRateDouble);
|
|
||||||
onlineRateData.setOnlineRate(Double.parseDouble(deviceOnlineRateString));
|
|
||||||
onlineRateData.setDevId(devId);
|
|
||||||
terminalOnlineRateDataArrayList.add(onlineRateData);
|
|
||||||
}
|
|
||||||
|
|
||||||
deviceList = deviceList.stream().peek(onlineRateDataVO -> {
|
deviceList = deviceList.stream().peek(onlineRateDataVO -> {
|
||||||
for (TerminalOnlineRateData onlineRateData : terminalOnlineRateDataArrayList) {
|
boolean flag = false;
|
||||||
|
for (TerminalOnlineRateData onlineRateData : terminalOnlineRateData) {
|
||||||
if (onlineRateDataVO.getId().equals(onlineRateData.getDevId())) {
|
if (onlineRateDataVO.getId().equals(onlineRateData.getDevId())) {
|
||||||
if (onlineRateData.getOnlineRate() != null) {
|
flag = true;
|
||||||
onlineRateDataVO.setOnlineRate(onlineRateData.getOnlineRate());
|
onlineRateDataVO.setOnlineRate(onlineRateData.getOnlineRate());
|
||||||
} else {
|
break;
|
||||||
// 为空则给对应的监测点的监测点合设置为魔数
|
|
||||||
onlineRateDataVO.setOnlineRate(3.14159);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(!flag){
|
||||||
|
onlineRateDataVO.setOnlineRate(3.14159);
|
||||||
|
}
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
} else {
|
} else {
|
||||||
deviceList = deviceList.stream().peek(onlineRateDataVO -> onlineRateDataVO.setOnlineRate(3.14159)).collect(Collectors.toList());
|
deviceList = deviceList.stream().peek(onlineRateDataVO -> onlineRateDataVO.setOnlineRate(3.14159)).collect(Collectors.toList());
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class ReportController extends BaseController {
|
|||||||
|
|
||||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
@PostMapping("/getContinueTime")
|
@PostMapping("/getContinueTime")
|
||||||
@ApiOperation("详细时间列表")
|
@ApiOperation("详细事件列表")
|
||||||
@ApiImplicitParam(name = "businessParam", value = "详细时间列表参数", required = true)
|
@ApiImplicitParam(name = "businessParam", value = "详细时间列表参数", required = true)
|
||||||
public HttpResult<Page<DetailVO>> getContinueTime(@RequestBody @Validated WaveTypeParam businessParam){
|
public HttpResult<Page<DetailVO>> getContinueTime(@RequestBody @Validated WaveTypeParam businessParam){
|
||||||
String methodDescribe = getMethodDescribe("getContinueTime");
|
String methodDescribe = getMethodDescribe("getContinueTime");
|
||||||
|
|||||||
@@ -1503,8 +1503,7 @@ public class EventAnalysisServiceImpl implements EventAnalysisService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Page<WaveTypeVO> page = new Page<>();
|
Page<WaveTypeVO> page = new Page<>();
|
||||||
long total = new BigDecimal(resultTotal.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString()).longValue();
|
page.setTotal(eventDetailList.size());
|
||||||
page.setTotal(total);
|
|
||||||
page.setRecords(eventDetailList);
|
page.setRecords(eventDetailList);
|
||||||
page.setCurrent(eventBaseParam.getPageNum());
|
page.setCurrent(eventBaseParam.getPageNum());
|
||||||
page.setSize(eventBaseParam.getPageSize());
|
page.setSize(eventBaseParam.getPageSize());
|
||||||
@@ -1601,9 +1600,7 @@ public class EventAnalysisServiceImpl implements EventAnalysisService {
|
|||||||
//抛出异常,当前暂态原因为空
|
//抛出异常,当前暂态原因为空
|
||||||
throw new BusinessException(EventResponseEnum.EVENT_REASON_NOT_FOUND);
|
throw new BusinessException(EventResponseEnum.EVENT_REASON_NOT_FOUND);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
for (WaveTypeVO eventDetail : eventDetailList) {
|
|
||||||
if (eventDetail.getEventType() != null) {
|
if (eventDetail.getEventType() != null) {
|
||||||
for (DictData dictData : eventTypeList) {
|
for (DictData dictData : eventTypeList) {
|
||||||
//将字典数据id与VO中属性eventType对应的字符串进行比较
|
//将字典数据id与VO中属性eventType对应的字符串进行比较
|
||||||
@@ -1617,8 +1614,10 @@ public class EventAnalysisServiceImpl implements EventAnalysisService {
|
|||||||
throw new BusinessException(EventResponseEnum.EVENT_TYPE_NOT_FOUND);
|
throw new BusinessException(EventResponseEnum.EVENT_TYPE_NOT_FOUND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Page<WaveTypeVO> page = new Page<>();
|
Page<WaveTypeVO> page = new Page<>();
|
||||||
long total = new BigDecimal(resultTotal.getResults().get(0).getSeries().get(0).getValues().get(0).get(1).toString()).longValue();
|
long total = eventDetailList.size();
|
||||||
page.setTotal(total);
|
page.setTotal(total);
|
||||||
page.setRecords(eventDetailList);
|
page.setRecords(eventDetailList);
|
||||||
page.setCurrent(eventBaseParam.getPageNum());
|
page.setCurrent(eventBaseParam.getPageNum());
|
||||||
|
|||||||
@@ -84,18 +84,15 @@ public class EventDetailServiceImpl implements EventDetailService {
|
|||||||
stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' ");
|
stringBuilder.append("wave_type ='").append(waveType.get(i)).append("' ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stringBuilder.append(") order by time desc");
|
stringBuilder.append(") order by time desc tz('Asia/Shanghai");
|
||||||
stringBuilder.append(" tz('Asia/Shanghai')");
|
|
||||||
//sql语句
|
//sql语句
|
||||||
String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder;
|
String sql = "SELECT * FROM pqs_eventdetail WHERE " + stringBuilder;
|
||||||
System.out.println("sql------------->>>"+sql);
|
|
||||||
//结果集
|
//结果集
|
||||||
QueryResult result = influxDbUtils.query(sql);
|
QueryResult result = influxDbUtils.query(sql);
|
||||||
//结果集映射到对象中
|
//结果集映射到对象中
|
||||||
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
|
||||||
List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class);
|
List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class);
|
||||||
|
|
||||||
|
|
||||||
return eventDetailList;
|
return eventDetailList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -45,6 +45,7 @@ import java.time.LocalDateTime;
|
|||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -85,25 +86,18 @@ public class TransientServiceImpl implements TransientService {
|
|||||||
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(transientParam).getData();
|
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(transientParam).getData();
|
||||||
if (!CollectionUtils.isEmpty(deviceList)) {
|
if (!CollectionUtils.isEmpty(deviceList)) {
|
||||||
//获取按终端分类的监测点索引集合
|
//获取按终端分类的监测点索引集合
|
||||||
List<List<String>> LineIndexes = deviceList.stream().map(GeneralDeviceDTO::getLineIndexes).collect(Collectors.toList());
|
List<String> LineIndexes = deviceList.stream().flatMap(list->list.getLineIndexes().stream()).collect(Collectors.toList());
|
||||||
List<String> lineList = new ArrayList<>();
|
|
||||||
for (int i = 0; i < LineIndexes.size(); i++) {
|
if (!CollectionUtils.isEmpty(LineIndexes)) {
|
||||||
List<String> lineIds = LineIndexes.get(i);
|
|
||||||
for (int a = 0; a < lineIds.size(); a++) {
|
|
||||||
lineList.add(lineIds.get(a));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!CollectionUtils.isEmpty(lineList)) {
|
|
||||||
//influxDB查询待分页数据总量
|
//influxDB查询待分页数据总量
|
||||||
List<EventDetail> data = eventDetailService.getEventDetail(lineList, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(),transientParam.getWaveType());
|
/* List<EventDetail> data = eventDetailService.getEventDetail(LineIndexes, transientParam.getSearchBeginTime(), transientParam.getSearchEndTime(),transientParam.getWaveType());
|
||||||
page.setTotal(data.size());
|
page.setTotal(data.size());
|
||||||
//分页总页数
|
//分页总页数
|
||||||
int pages = (int) Math.ceil(data.size() * 1.0 / transientParam.getPageSize());
|
int pages = (int) Math.ceil(data.size() * 1.0 / transientParam.getPageSize());
|
||||||
page.setPages(pages);
|
page.setPages(pages);*/
|
||||||
//influxDB分页查询
|
//influxDB分页查询
|
||||||
List<EventDetail> eventDetailData = eventDetailService.getEventDetailLimit(lineList, 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());
|
||||||
// List<List<EventDetail>> partition = Lists.partition(eventDetailData, transientParam.getPageSize());
|
|
||||||
// List<EventDetail> detailList = partition.get(transientParam.getPageNum() - 1);
|
|
||||||
if (!CollectionUtils.isEmpty(eventDetailData)) {
|
if (!CollectionUtils.isEmpty(eventDetailData)) {
|
||||||
List<String> lineIds = eventDetailData.stream().map(EventDetail::getLineId).collect(Collectors.toList());
|
List<String> lineIds = eventDetailData.stream().map(EventDetail::getLineId).collect(Collectors.toList());
|
||||||
lineIds = lineIds.stream().distinct().collect(Collectors.toList());
|
lineIds = lineIds.stream().distinct().collect(Collectors.toList());
|
||||||
@@ -118,9 +112,6 @@ public class TransientServiceImpl implements TransientService {
|
|||||||
Instant timeId = eventDetail.getTimeId();
|
Instant timeId = eventDetail.getTimeId();
|
||||||
ZoneId zoneId = ZoneId.systemDefault();
|
ZoneId zoneId = ZoneId.systemDefault();
|
||||||
LocalDateTime localDateTime = LocalDateTime.ofInstant(timeId, zoneId);
|
LocalDateTime localDateTime = LocalDateTime.ofInstant(timeId, zoneId);
|
||||||
// //Instant转换long毫秒值
|
|
||||||
// long milli = localDateTime.atZone(zoneId).toInstant().toEpochMilli();
|
|
||||||
// System.out.println("milli==:" + milli);
|
|
||||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
String format = dateTimeFormatter.format(localDateTime);
|
String format = dateTimeFormatter.format(localDateTime);
|
||||||
|
|
||||||
|
|||||||
@@ -141,14 +141,15 @@ whitelist:
|
|||||||
- /*/v2/api-docs
|
- /*/v2/api-docs
|
||||||
- /favicon.ico
|
- /favicon.ico
|
||||||
- /system-boot/theme/getTheme
|
- /system-boot/theme/getTheme
|
||||||
# - /device-boot/**
|
|
||||||
# - /system-boot/**
|
- /device-boot/**
|
||||||
# - /harmonic-boot/**
|
- /system-boot/**
|
||||||
# - /energy-boot/**
|
- /harmonic-boot/**
|
||||||
# - /event-boot/**
|
- /energy-boot/**
|
||||||
# - /quality-boot/**
|
- /event-boot/**
|
||||||
# - /harmonic-prepare/**
|
- /quality-boot/**
|
||||||
# - /process-boot/**
|
- /harmonic-prepare/**
|
||||||
|
- /process-boot/**
|
||||||
|
|
||||||
|
|
||||||
mqtt:
|
mqtt:
|
||||||
|
|||||||
@@ -63,8 +63,8 @@
|
|||||||
sys_area.lng lng,
|
sys_area.lng lng,
|
||||||
sys_area.lat lat
|
sys_area.lat lat
|
||||||
FROM sys_area sys_area
|
FROM sys_area sys_area
|
||||||
WHERE sys_area.id = #{id}
|
WHERE (sys_area.id = #{id}
|
||||||
or sys_area.pid = #{id}
|
or sys_area.pid = #{id})
|
||||||
and sys_area.type = #{type}
|
and sys_area.type = #{type}
|
||||||
AND sys_area.state = #{state}
|
AND sys_area.state = #{state}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Reference in New Issue
Block a user