代码修改

This commit is contained in:
2023-02-10 16:40:43 +08:00
parent 034738c634
commit fd9edd3225
18 changed files with 568 additions and 519 deletions

View File

@@ -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<>();

View File

@@ -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;
} }

View File

@@ -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;
} }

View File

@@ -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)

View File

@@ -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);
} }

View File

@@ -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 供电公司索引

View File

@@ -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') &gt;= date_format(#{searchBeginTime},'%y%m%d')
</if>
<if test="searchEndTime != null and searchEndTime != ''"><!-- -->
and date_format(device.update_Time,'%y%m%d') &lt;= 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>
<!--根据供电公司索引获取出省会的信息--> <!--根据供电公司索引获取出省会的信息-->

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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;
}
List<String> devIds = deviceList.stream().map(TerminalOnlineRateDataVO::getId).collect(Collectors.toList());
// 判断前端出入的终端等级
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;
}
}
// 通过工具类得到查询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();
// 返回结果 // 返回结果

View File

@@ -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;
// 为空则给对应的监测点的监测点合设置为魔数 }
}
if(!flag){
onlineRateDataVO.setOnlineRate(3.14159); 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());

View File

@@ -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");

View File

@@ -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());

View File

@@ -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;
} }

View File

@@ -23,6 +23,7 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.pq.api.GeneralDeviceInfoClient; import com.njcn.device.pq.api.GeneralDeviceInfoClient;
import com.njcn.device.pq.api.LineFeignClient; 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.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam; import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.LineBaseQueryParam; import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
@@ -128,7 +129,9 @@ public class ReportServiceImpl implements ReportService {
//结果集映射到对象中 //结果集映射到对象中
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(queryResult, EventDetail.class); List<EventDetail> eventDetailList = influxDBResultMapper.toPOJO(queryResult, EventDetail.class);
eventDetailList.stream().forEach(a -> {info.add(a);}); eventDetailList.stream().forEach(a -> {
info.add(a);
});
return info; return info;
} }
@@ -148,7 +151,9 @@ public class ReportServiceImpl implements ReportService {
//结果集映射到对象中 //结果集映射到对象中
InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn();
List<EventDetailNew> eventDetailList = influxDBResultMapper.toPOJO(queryResult, EventDetailNew.class); List<EventDetailNew> eventDetailList = influxDBResultMapper.toPOJO(queryResult, EventDetailNew.class);
eventDetailList.stream().forEach(a -> {info.add(a);}); eventDetailList.stream().forEach(a -> {
info.add(a);
});
} }
} }
return info; return info;
@@ -323,6 +328,7 @@ public class ReportServiceImpl implements ReportService {
public List<WaveTypeVO> getSeverity(DeviceInfoParam.BusinessParam businessParam) { public List<WaveTypeVO> getSeverity(DeviceInfoParam.BusinessParam businessParam) {
List<WaveTypeVO> result = new ArrayList<>(); List<WaveTypeVO> result = new ArrayList<>();
List<EventDetailNew> info = getED2(businessParam); List<EventDetailNew> info = getED2(businessParam);
if (CollectionUtil.isNotEmpty(info)) {
List<String> idlist = new ArrayList<>(); List<String> idlist = new ArrayList<>();
//根据严重度进行排序并取前二十个数据 //根据严重度进行排序并取前二十个数据
info.sort(((o1, o2) -> o1.getSeverity().compareTo(o2.getSeverity()))); info.sort(((o1, o2) -> o1.getSeverity().compareTo(o2.getSeverity())));
@@ -346,6 +352,7 @@ public class ReportServiceImpl implements ReportService {
} }
} }
} }
}
return result; return result;
} }
@@ -411,24 +418,19 @@ public class ReportServiceImpl implements ReportService {
public Page<DetailVO> getContinueTime(WaveTypeParam waveTypeParam) { public Page<DetailVO> getContinueTime(WaveTypeParam waveTypeParam) {
List<DetailVO> result = new ArrayList<>(); List<DetailVO> result = new ArrayList<>();
List<EventDetailNew> count = getED2(waveTypeParam); List<EventDetailNew> count = getED2(waveTypeParam);
StringBuilder stringBuilder = new StringBuilder(Param.SELECT+Param.EVENT_DETAIL+Param.WHERE+" 1=1 "); StringBuilder stringBuilder = new StringBuilder(Param.SELECT + Param.EVENT_DETAIL + Param.WHERE + " ");
List<GeneralDeviceDTO> deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData(); List<GeneralDeviceDTO> deviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(waveTypeParam).getData();
String substring = ""; List<String> lineIds = deviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList());
for (GeneralDeviceDTO dto : deviceDTOList) { if (CollectionUtil.isEmpty(lineIds)) {
if (dto.getLineIndexes().size()>0){ throw new BusinessException(DeviceResponseEnum.DEPT_LINE_EMPTY);
stringBuilder.append(" or ");
dto.getLineIndexes().stream().forEach(line -> {
stringBuilder.append("line_id = '").append(line + "' ").append("or ");
});
stringBuilder.delete(stringBuilder.length()-3,stringBuilder.length()+1);
}
} }
StringBuilder lineSting = InfluxDBCommUtils.assToInfluxParam(lineIds);
Integer s = (waveTypeParam.getPageNum() - 1) * waveTypeParam.getPageSize(); Integer s = (waveTypeParam.getPageNum() - 1) * waveTypeParam.getPageSize();
substring = stringBuilder.toString() + "limit "+waveTypeParam.getPageSize()+" offset "+s+ Param.TZ_ASIA_SHANGHAI; stringBuilder.append(lineSting).append("limit ").append(waveTypeParam.getPageSize() + " offset " + s + Param.TZ_ASIA_SHANGHAI);
QueryResult query = influxDbUtils.query(substring); QueryResult query = influxDbUtils.query(stringBuilder.toString());
InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn(); InfluxDBResultMapperCn influxDBResultMapper = new InfluxDBResultMapperCn();
List<EventDetailNew> info = influxDBResultMapper.toPOJO(query, EventDetailNew.class); List<EventDetailNew> info = influxDBResultMapper.toPOJO(query, EventDetailNew.class);
//id集合 if (CollectionUtil.isNotEmpty(info)) {
ArrayList<String> idlist = new ArrayList<>(); ArrayList<String> idlist = new ArrayList<>();
for (EventDetailNew eventDetail : info) { for (EventDetailNew eventDetail : info) {
DetailVO vo = new DetailVO(); DetailVO vo = new DetailVO();
@@ -454,6 +456,7 @@ public class ReportServiceImpl implements ReportService {
} }
} }
} }
}
Page<DetailVO> page = new Page<>(); Page<DetailVO> page = new Page<>();
page.setTotal(count.size()); page.setTotal(count.size());
page.setRecords(result); page.setRecords(result);
@@ -1294,6 +1297,7 @@ public class ReportServiceImpl implements ReportService {
doc.write(outputStream); doc.write(outputStream);
outputStream.close(); outputStream.close();
} }
public String getStr(String barName, Map<String, Object> map) throws TemplateException, IOException { public String getStr(String barName, Map<String, Object> map) throws TemplateException, IOException {
String s = FreemarkerUtil.generateString(barName, "com/njcn/event/template", map); String s = FreemarkerUtil.generateString(barName, "com/njcn/event/template", map);
return EchartsUtil.generateEchartsBase64(s, "8910"); return EchartsUtil.generateEchartsBase64(s, "8910");
@@ -1504,7 +1508,6 @@ public class ReportServiceImpl implements ReportService {
} }
/** /**
*
* @param bar * @param bar
* @param position 位置 * @param position 位置
* @param color 颜色 * @param color 颜色
@@ -3828,7 +3831,6 @@ public class ReportServiceImpl implements ReportService {
createPic(doc, yftj, "" + typeName + "事件图形"); createPic(doc, yftj, "" + typeName + "事件图形");
//创建部门与监测点次数的map集合 //创建部门与监测点次数的map集合
List<GeneralDeviceDTO> areaParamList = generalDeviceInfoClient.getPracticalAllDeviceInfo(areaParam).getData(); List<GeneralDeviceDTO> areaParamList = generalDeviceInfoClient.getPracticalAllDeviceInfo(areaParam).getData();
Map<String, Integer> lineCount1 = new HashMap<>(); Map<String, Integer> lineCount1 = new HashMap<>();
@@ -3921,7 +3923,6 @@ public class ReportServiceImpl implements ReportService {
createPic(doc, yftj, "" + typeName + "事件图形"); createPic(doc, yftj, "" + typeName + "事件图形");
//创建部门与监测点次数的map集合 //创建部门与监测点次数的map集合
Map<String, Integer> lineCount1 = new HashMap<>(); Map<String, Integer> lineCount1 = new HashMap<>();
List<GeneralDeviceDTO> areaParamList = generalDeviceInfoClient.getPracticalAllDeviceInfo(areaParam).getData(); List<GeneralDeviceDTO> areaParamList = generalDeviceInfoClient.getPracticalAllDeviceInfo(areaParam).getData();

View File

@@ -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);

View File

@@ -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:

View File

@@ -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>