冀北终端在线率代码提交
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
package com.njcn.device.pq.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pqs
|
||||||
|
*
|
||||||
|
* @author cdf
|
||||||
|
* @date 2022/1/4
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
public enum JbPowerFlagEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统拓扑各层级描述
|
||||||
|
*/
|
||||||
|
GRID_SIDE(0, "电网侧"),
|
||||||
|
NO_GRID_SIDE(1, "非电网侧"),
|
||||||
|
SEND_NETWORK(2, "上送国网"),
|
||||||
|
NOT_NETWORK(3, "非上送国网"),
|
||||||
|
unknown(4, "未知"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
private final String message;
|
||||||
|
|
||||||
|
JbPowerFlagEnum(Integer code, String message) {
|
||||||
|
this.code = code;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static JbPowerFlagEnum getPowerFlagEnumByCode(Integer code) {
|
||||||
|
return Arrays.stream(JbPowerFlagEnum.values())
|
||||||
|
.filter(x -> x.getCode().equals(code))
|
||||||
|
.findAny()
|
||||||
|
.orElse(unknown);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ package com.njcn.device.pq.pojo.vo.common;
|
|||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -71,11 +71,14 @@ public class DeviceOnlineRate {
|
|||||||
@ApiModelProperty("终端IP")
|
@ApiModelProperty("终端IP")
|
||||||
private String ip;
|
private String ip;
|
||||||
|
|
||||||
@ApiModelProperty("终端运行状态")
|
@ApiModelProperty("终端运行状态(0:运行;1:检修;2:停运;3:调试;4:退运)")
|
||||||
private Integer runFlag;
|
private String runFlag;
|
||||||
|
|
||||||
@ApiModelProperty("终端运行状态")
|
@ApiModelProperty("终端通讯状态(0:中断;1:正常)")
|
||||||
private Integer comFlag;
|
private String comFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty("最新数据时间")
|
||||||
|
private LocalDateTime timeID;
|
||||||
|
|
||||||
@ApiModelProperty("在线率")
|
@ApiModelProperty("在线率")
|
||||||
private String onlineRate;
|
private String onlineRate;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import com.njcn.device.common.mapper.TopMsgMapper;
|
|||||||
import com.njcn.device.device.mapper.DeviceMapper;
|
import com.njcn.device.device.mapper.DeviceMapper;
|
||||||
import com.njcn.device.line.mapper.LineMapper;
|
import com.njcn.device.line.mapper.LineMapper;
|
||||||
import com.njcn.device.line.service.DeptLineService;
|
import com.njcn.device.line.service.DeptLineService;
|
||||||
|
import com.njcn.device.pq.enums.JbPowerFlagEnum;
|
||||||
import com.njcn.device.pq.enums.LineBaseEnum;
|
import com.njcn.device.pq.enums.LineBaseEnum;
|
||||||
import com.njcn.device.pq.enums.PowerFlagEnum;
|
import com.njcn.device.pq.enums.PowerFlagEnum;
|
||||||
import com.njcn.device.pq.pojo.bo.DeviceType;
|
import com.njcn.device.pq.pojo.bo.DeviceType;
|
||||||
@@ -320,7 +321,7 @@ public class GeneralDeviceService {
|
|||||||
} else {
|
} else {
|
||||||
deviceType.setRunFlag(runFlag);
|
deviceType.setRunFlag(runFlag);
|
||||||
}
|
}
|
||||||
if(ObjectUtil.isNotNull(deviceInfoParam.getComFlagStatus())){
|
if (ObjectUtil.isNotNull(deviceInfoParam.getComFlagStatus())) {
|
||||||
deviceType.setComFlag(Arrays.asList(deviceInfoParam.getComFlagStatus()));
|
deviceType.setComFlag(Arrays.asList(deviceInfoParam.getComFlagStatus()));
|
||||||
}
|
}
|
||||||
filterDataType(deviceType, deviceInfoParam.getServerName());
|
filterDataType(deviceType, deviceInfoParam.getServerName());
|
||||||
@@ -375,6 +376,8 @@ public class GeneralDeviceService {
|
|||||||
return filterDataByManufacturer(deviceInfos, deviceInfoParam.getManufacturer());
|
return filterDataByManufacturer(deviceInfos, deviceInfoParam.getManufacturer());
|
||||||
case POWER_FLAG:
|
case POWER_FLAG:
|
||||||
return filterDataByPowerFlag(deviceInfos, deviceInfoParam.getManufacturer());
|
return filterDataByPowerFlag(deviceInfos, deviceInfoParam.getManufacturer());
|
||||||
|
case JB_POWER_FLAG:
|
||||||
|
return filterDataByJbPowerFlag(deviceInfos, deviceInfoParam.getManufacturer());
|
||||||
default:
|
default:
|
||||||
return deviceInfos;
|
return deviceInfos;
|
||||||
}
|
}
|
||||||
@@ -418,17 +421,17 @@ public class GeneralDeviceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//1.筛选出母线id,理论上监测点的pids中第六个id为母线id 联查: pq_line t1 ,pq_voltage t2
|
//1.筛选出母线id,理论上监测点的pids中第六个id为母线id 联查: pq_line t1 ,pq_voltage t2
|
||||||
List<String> voltageIds=lines.stream().map(Line::getPid).distinct().collect(Collectors.toList());
|
List<String> voltageIds = lines.stream().map(Line::getPid).distinct().collect(Collectors.toList());
|
||||||
//再根据电压等级筛选合法母线信息
|
//再根据电压等级筛选合法母线信息
|
||||||
List<Line> voltages = terminalBaseService.getVoltageByCondition(voltageIds, deviceInfoParam.getScale());
|
List<Line> voltages = terminalBaseService.getVoltageByCondition(voltageIds, deviceInfoParam.getScale());
|
||||||
|
|
||||||
//2.筛选出终端id,理论上监测点的pids中第五个id为终端id
|
//2.筛选出终端id,理论上监测点的pids中第五个id为终端id
|
||||||
List<String> devIds=voltages.stream().map(Line::getPid).distinct().collect(Collectors.toList());
|
List<String> devIds = voltages.stream().map(Line::getPid).distinct().collect(Collectors.toList());
|
||||||
// 再根据终端条件筛选合法终端信息 联查:pq_line t1,pq_device t2
|
// 再根据终端条件筛选合法终端信息 联查:pq_line t1,pq_device t2
|
||||||
List<Line> devices = terminalBaseService.getDeviceByCondition(devIds, deviceType, deviceInfoParam.getManufacturer());
|
List<Line> devices = terminalBaseService.getDeviceByCondition(devIds, deviceType, deviceInfoParam.getManufacturer());
|
||||||
|
|
||||||
//3.筛选出变电站id,理论上监测点的pids中第四个id为变电站id 联查: pq_line t1 ,pq_substation t2
|
//3.筛选出变电站id,理论上监测点的pids中第四个id为变电站id 联查: pq_line t1 ,pq_substation t2
|
||||||
List<String> subIds=devices.stream().map(Line::getPid).distinct().collect(Collectors.toList());
|
List<String> subIds = devices.stream().map(Line::getPid).distinct().collect(Collectors.toList());
|
||||||
List<Line> sub = terminalBaseService.getSubByCondition(subIds, new ArrayList<>());
|
List<Line> sub = terminalBaseService.getSubByCondition(subIds, new ArrayList<>());
|
||||||
|
|
||||||
//筛选最终的数据
|
//筛选最终的数据
|
||||||
@@ -453,7 +456,7 @@ public class GeneralDeviceService {
|
|||||||
String[] idsArray = line.getPids().split(",");
|
String[] idsArray = line.getPids().split(",");
|
||||||
//监测点同时满足条件筛选后的终端、母线信息,才是最终的结果
|
//监测点同时满足条件筛选后的终端、母线信息,才是最终的结果
|
||||||
if (devIds.contains(idsArray[LineBaseEnum.DEVICE_LEVEL.getCode()]) &&
|
if (devIds.contains(idsArray[LineBaseEnum.DEVICE_LEVEL.getCode()]) &&
|
||||||
volIds.contains(idsArray[LineBaseEnum.SUB_V_LEVEL.getCode()])&&
|
volIds.contains(idsArray[LineBaseEnum.SUB_V_LEVEL.getCode()]) &&
|
||||||
subIds.contains(idsArray[LineBaseEnum.SUB_LEVEL.getCode()])
|
subIds.contains(idsArray[LineBaseEnum.SUB_LEVEL.getCode()])
|
||||||
) {
|
) {
|
||||||
gdIndexes.add(idsArray[LineBaseEnum.GD_LEVEL.getCode()]);
|
gdIndexes.add(idsArray[LineBaseEnum.GD_LEVEL.getCode()]);
|
||||||
@@ -557,8 +560,8 @@ public class GeneralDeviceService {
|
|||||||
|
|
||||||
private List<GeneralDeviceDTO> filterDataByPowerFlag(List<GeneralDeviceDTO> deviceInfos, List<SimpleDTO> manufacturer) {
|
private List<GeneralDeviceDTO> filterDataByPowerFlag(List<GeneralDeviceDTO> deviceInfos, List<SimpleDTO> manufacturer) {
|
||||||
List<GeneralDeviceDTO> generalDeviceDTOS = new ArrayList<>();
|
List<GeneralDeviceDTO> generalDeviceDTOS = new ArrayList<>();
|
||||||
List<String> deviceIds = deviceInfos.stream().flatMap(x->x.getLineIndexes().stream()).collect(Collectors.toList());
|
List<String> deviceIds = deviceInfos.stream().flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList());
|
||||||
List<String> lineIds = deviceInfos.stream().flatMap(x->x.getLineIndexes().stream()).collect(Collectors.toList());
|
List<String> lineIds = deviceInfos.stream().flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList());
|
||||||
//监测点为空,则返回空的分类数据
|
//监测点为空,则返回空的分类数据
|
||||||
if (CollectionUtil.isEmpty(lineIds)) {
|
if (CollectionUtil.isEmpty(lineIds)) {
|
||||||
return assembleCommonData(manufacturer);
|
return assembleCommonData(manufacturer);
|
||||||
@@ -567,15 +570,36 @@ public class GeneralDeviceService {
|
|||||||
List<Line> lines = terminalBaseService.getLineById(lineIds);
|
List<Line> lines = terminalBaseService.getLineById(lineIds);
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
List<String> powerFlagIds = terminalBaseService.getDeviceIdByPowerFlag(deviceIds, i);
|
List<String> powerFlagIds = terminalBaseService.getDeviceIdByPowerFlag(deviceIds, i);
|
||||||
dto=new SimpleDTO();
|
dto = new SimpleDTO();
|
||||||
PowerFlagEnum enumByCode = PowerFlagEnum.getPowerFlagEnumByCode(i);
|
PowerFlagEnum enumByCode = PowerFlagEnum.getPowerFlagEnumByCode(i);
|
||||||
dto.setId(enumByCode.getCode().toString());
|
dto.setId(enumByCode.getCode().toString());
|
||||||
dto.setName(enumByCode.getMessage());
|
dto.setName(enumByCode.getMessage());
|
||||||
generalDeviceDTOS.add(assembleDataByLine(dto, lines, powerFlagIds, LineBaseEnum.LINE_LEVEL.getCode()));
|
generalDeviceDTOS.add(assembleDataByLine(dto, lines, powerFlagIds, LineBaseEnum.LINE_LEVEL.getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return generalDeviceDTOS;
|
return generalDeviceDTOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<GeneralDeviceDTO> filterDataByJbPowerFlag(List<GeneralDeviceDTO> deviceInfos, List<SimpleDTO> manufacturer) {
|
||||||
|
List<GeneralDeviceDTO> generalDeviceDTOS = new ArrayList<>();
|
||||||
|
List<String> deviceIds = deviceInfos.stream().flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList());
|
||||||
|
List<String> lineIds = deviceInfos.stream().flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList());
|
||||||
|
//监测点为空,则返回空的分类数据
|
||||||
|
if (CollectionUtil.isEmpty(lineIds)) {
|
||||||
|
return assembleCommonData(manufacturer);
|
||||||
|
}
|
||||||
|
SimpleDTO dto;
|
||||||
|
List<Line> lines = terminalBaseService.getLineById(lineIds);
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
List<String> powerFlagIds = terminalBaseService.getDeviceIdByJbPowerFlag(deviceIds, i);
|
||||||
|
dto = new SimpleDTO();
|
||||||
|
JbPowerFlagEnum enumByCode = JbPowerFlagEnum.getPowerFlagEnumByCode(i);
|
||||||
|
dto.setId(enumByCode.getCode().toString());
|
||||||
|
dto.setName(enumByCode.getMessage());
|
||||||
|
generalDeviceDTOS.add(assembleDataByLine(dto, lines, powerFlagIds, LineBaseEnum.LINE_LEVEL.getCode()));
|
||||||
|
}
|
||||||
|
return generalDeviceDTOS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 当该部门不存在监测点时,返回空的分类数据
|
* 当该部门不存在监测点时,返回空的分类数据
|
||||||
*
|
*
|
||||||
@@ -725,7 +749,7 @@ public class GeneralDeviceService {
|
|||||||
/*实际运行*/
|
/*实际运行*/
|
||||||
QueryWrapper<Device> query = new QueryWrapper<>();
|
QueryWrapper<Device> query = new QueryWrapper<>();
|
||||||
query.in("Id", DeviceIds).
|
query.in("Id", DeviceIds).
|
||||||
eq("Run_Flag", 0).eq("Com_Flag",1);
|
eq("Run_Flag", 0).eq("Com_Flag", 1);
|
||||||
Integer runDeviceCount = deviceMapper.selectCount(query);
|
Integer runDeviceCount = deviceMapper.selectCount(query);
|
||||||
BigDecimal rate = BigDecimal.valueOf(runDeviceCount).divide(BigDecimal.valueOf(deviceCount), 4, BigDecimal.ROUND_HALF_UP);
|
BigDecimal rate = BigDecimal.valueOf(runDeviceCount).divide(BigDecimal.valueOf(deviceCount), 4, BigDecimal.ROUND_HALF_UP);
|
||||||
deptDeviceDetailVO.setDeviceCount(deviceCount);
|
deptDeviceDetailVO.setDeviceCount(deviceCount);
|
||||||
@@ -757,17 +781,17 @@ public class GeneralDeviceService {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param deptId 部门id
|
* @param deptId 部门id
|
||||||
* @param runFlag 设备运行状态 0:投运 1.热备用 2.停运
|
* @param runFlag 设备运行状态 0:投运 1.热备用 2.停运
|
||||||
* @param dataType 系统 0:暂态系统;1:稳态系统;2:两个系统
|
* @param dataType 系统 0:暂态系统;1:稳态系统;2:两个系统
|
||||||
* @author cdf
|
* @author cdf
|
||||||
* @date 2023/7/20
|
* @date 2023/7/20
|
||||||
*/
|
*/
|
||||||
public List<String> deptGetRunLine(String deptId,List<Integer> runFlag,List<Integer> dataType) {
|
public List<String> deptGetRunLine(String deptId, List<Integer> runFlag, List<Integer> dataType) {
|
||||||
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(deptId, Stream.of(0, 1).collect(Collectors.toList())).getData();
|
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(deptId, Stream.of(0, 1).collect(Collectors.toList())).getData();
|
||||||
if (CollUtil.isNotEmpty(deptDTOList)) {
|
if (CollUtil.isNotEmpty(deptDTOList)) {
|
||||||
List<String> deptIds = deptDTOList.stream().map(DeptDTO::getId).distinct().collect(Collectors.toList());
|
List<String> deptIds = deptDTOList.stream().map(DeptDTO::getId).distinct().collect(Collectors.toList());
|
||||||
return deptLineService.getLineByDeptIds(deptIds,null,runFlag,dataType,null);
|
return deptLineService.getLineByDeptIds(deptIds, null, runFlag, dataType, null);
|
||||||
}
|
}
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
@@ -779,12 +803,12 @@ public class GeneralDeviceService {
|
|||||||
* @date 2023/7/20
|
* @date 2023/7/20
|
||||||
*/
|
*/
|
||||||
public List<String> deptGetRunDev(String deptId) {
|
public List<String> deptGetRunDev(String deptId) {
|
||||||
List<String> runLineIds = this.deptGetRunLine(deptId,Stream.of(0).collect(Collectors.toList()),Stream.of(0,2).collect(Collectors.toList()));
|
List<String> runLineIds = this.deptGetRunLine(deptId, Stream.of(0).collect(Collectors.toList()), Stream.of(0, 2).collect(Collectors.toList()));
|
||||||
List<Line> lines = lineMapper.selectList(new LambdaQueryWrapper<Line>()
|
List<Line> lines = lineMapper.selectList(new LambdaQueryWrapper<Line>()
|
||||||
.select(Line::getPids)
|
.select(Line::getPids)
|
||||||
.in(Line::getId,runLineIds)
|
.in(Line::getId, runLineIds)
|
||||||
);
|
);
|
||||||
if(CollUtil.isNotEmpty(lines)){
|
if (CollUtil.isNotEmpty(lines)) {
|
||||||
return lines.stream().map(line -> {
|
return lines.stream().map(line -> {
|
||||||
String[] idsArray = line.getPids().split(",");
|
String[] idsArray = line.getPids().split(",");
|
||||||
return idsArray[4];
|
return idsArray[4];
|
||||||
@@ -805,15 +829,15 @@ public class GeneralDeviceService {
|
|||||||
List<DevDetail> devDetails = deviceMapper.selectDevByIds(devIds);
|
List<DevDetail> devDetails = deviceMapper.selectDevByIds(devIds);
|
||||||
for (DevDetail devDetail : devDetails) {
|
for (DevDetail devDetail : devDetails) {
|
||||||
//终端等级
|
//终端等级
|
||||||
if(gradeMap.containsKey(devDetail.getLineGrade())){
|
if (gradeMap.containsKey(devDetail.getLineGrade())) {
|
||||||
devDetail.setLineGrade(String.valueOf(gradeMap.get(devDetail.getLineGrade())));
|
devDetail.setLineGrade(String.valueOf(gradeMap.get(devDetail.getLineGrade())));
|
||||||
}
|
}
|
||||||
//部门
|
//部门
|
||||||
if(deptMap.containsKey(devDetail.getDeptName())){
|
if (deptMap.containsKey(devDetail.getDeptName())) {
|
||||||
devDetail.setDeptName(deptMap.get(devDetail.getDeptName()));
|
devDetail.setDeptName(deptMap.get(devDetail.getDeptName()));
|
||||||
}
|
}
|
||||||
//终端厂商
|
//终端厂商
|
||||||
if(manufacturerMap.containsKey(devDetail.getManufacturer())){
|
if (manufacturerMap.containsKey(devDetail.getManufacturer())) {
|
||||||
devDetail.setManufacturer(manufacturerMap.get(devDetail.getManufacturer()));
|
devDetail.setManufacturer(manufacturerMap.get(devDetail.getManufacturer()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -188,6 +188,8 @@ public interface TerminalBaseService {
|
|||||||
*/
|
*/
|
||||||
List<String> getDeviceIdByPowerFlag(List<String> lineIds, Integer manufacturer);
|
List<String> getDeviceIdByPowerFlag(List<String> lineIds, Integer manufacturer);
|
||||||
|
|
||||||
|
List<String> getDeviceIdByJbPowerFlag(List<String> lineIds, Integer powerFlag);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据监测点集合查询基础信息
|
* 根据监测点集合查询基础信息
|
||||||
|
|||||||
@@ -1666,6 +1666,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
|||||||
return this.baseMapper.getDeviceIdByPowerFlag(lineIds, manufacturer);
|
return this.baseMapper.getDeviceIdByPowerFlag(lineIds, manufacturer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getDeviceIdByJbPowerFlag(List<String> lineIds, Integer powerFlag) {
|
||||||
|
return this.baseMapper.getDeviceIdByJbPowerFlag(lineIds, powerFlag);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BaseLineInfo> getBaseLineInfo(List<String> lineIndex) {
|
public List<BaseLineInfo> getBaseLineInfo(List<String> lineIndex) {
|
||||||
return this.baseMapper.getBaseLineInfo(lineIndex);
|
return this.baseMapper.getBaseLineInfo(lineIndex);
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import com.njcn.common.pojo.response.HttpResult;
|
|||||||
import com.njcn.common.utils.HttpResultUtil;
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
import com.njcn.device.device.service.OnLineRateService;
|
import com.njcn.device.device.service.OnLineRateService;
|
||||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
|
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||||
|
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
||||||
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -16,6 +18,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,5 +45,14 @@ public class OnLineRateController extends BaseController {
|
|||||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe);
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||||
|
@PostMapping("/getOnlineRateByDevIds")
|
||||||
|
@ApiOperation("通用终端在线率(冀北)")
|
||||||
|
public HttpResult<List<RStatOnlinerateVO>> getOnlineRateByDevIds(@RequestBody OnlineRateParam deviceInfoParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("deviceOnlineRateInfo");
|
||||||
|
List<RStatOnlinerateVO> rate = onLineRateService.getOnlineRateByDevIds(deviceInfoParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rate, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,12 @@ package com.njcn.device.device.service;
|
|||||||
|
|
||||||
|
|
||||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
|
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||||
|
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
||||||
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
import com.njcn.device.pq.pojo.vo.common.DeviceOnlineRate;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 终端在线率
|
* @Description: 终端在线率
|
||||||
* @Author: wr
|
* @Author: wr
|
||||||
@@ -14,8 +18,18 @@ public interface OnLineRateService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端详情列表
|
* 终端详情列表
|
||||||
|
*
|
||||||
* @param deviceInfoParam
|
* @param deviceInfoParam
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
DeviceOnlineRate deviceOnlineRateInfo(DeviceInfoParam.BusinessParam deviceInfoParam);
|
DeviceOnlineRate deviceOnlineRateInfo(DeviceInfoParam.BusinessParam deviceInfoParam);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 终端详情列表
|
||||||
|
*
|
||||||
|
* @param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<RStatOnlinerateVO> getOnlineRateByDevIds(OnlineRateParam onlineRateParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.njcn.device.common.service.GeneralDeviceService;
|
import com.njcn.device.common.service.GeneralDeviceService;
|
||||||
import com.njcn.device.device.service.OnLineRateService;
|
import com.njcn.device.device.service.OnLineRateService;
|
||||||
import com.njcn.device.common.mapper.onlinerate.OnLineRateMapper;
|
import com.njcn.device.common.mapper.onlinerate.OnLineRateMapper;
|
||||||
|
import com.njcn.device.pq.enums.RunFlagEnum;
|
||||||
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.OnlineRateParam;
|
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||||
@@ -51,9 +52,9 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
|
|||||||
|
|
||||||
//获取所有终端信息
|
//获取所有终端信息
|
||||||
List<DevDetail> devInfoByIds = deviceService.getDevInfoByIds(deviceIds);
|
List<DevDetail> devInfoByIds = deviceService.getDevInfoByIds(deviceIds);
|
||||||
rate.setBelowNum(CollUtil.isNotEmpty(onlineRateByDev)?calculateOnLineRate(onlineRateByDev,90):deviceIds.size());
|
rate.setBelowNum(CollUtil.isNotEmpty(onlineRateByDev) ? calculateOnLineRate(onlineRateByDev, 90) : deviceIds.size());
|
||||||
rate.setTotalOnlineRate(calculateOnLineRate(onlineRateByDev,deviceIds));
|
rate.setTotalOnlineRate(calculateOnLineRate(onlineRateByDev, deviceIds));
|
||||||
List<DeviceOnlineRate.CitDetail> citDetailList=new ArrayList<>();
|
List<DeviceOnlineRate.CitDetail> citDetailList = new ArrayList<>();
|
||||||
DeviceOnlineRate.CitDetail citDetail;
|
DeviceOnlineRate.CitDetail citDetail;
|
||||||
DeviceOnlineRate.Detail detail;
|
DeviceOnlineRate.Detail detail;
|
||||||
for (GeneralDeviceDTO dto : deviceInfo) {
|
for (GeneralDeviceDTO dto : deviceInfo) {
|
||||||
@@ -61,15 +62,15 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
|
|||||||
List<RStatOnlinerateVO> citDevOnRate = onlineRateByDev.stream().filter(x -> dto.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
|
List<RStatOnlinerateVO> citDevOnRate = onlineRateByDev.stream().filter(x -> dto.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
|
||||||
Map<String, Float> onlineRateByDevMap = citDevOnRate.stream()
|
Map<String, Float> onlineRateByDevMap = citDevOnRate.stream()
|
||||||
.collect(Collectors.toMap(RStatOnlinerateVO::getDevIndex, RStatOnlinerateVO::getOnlineRate));
|
.collect(Collectors.toMap(RStatOnlinerateVO::getDevIndex, RStatOnlinerateVO::getOnlineRate));
|
||||||
citDetail=new DeviceOnlineRate.CitDetail();
|
citDetail = new DeviceOnlineRate.CitDetail();
|
||||||
citDetail.setCitName(dto.getName());
|
citDetail.setCitName(dto.getName());
|
||||||
citDetail.setCitTotalNum(dto.getDeviceIndexes().size());
|
citDetail.setCitTotalNum(dto.getDeviceIndexes().size());
|
||||||
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate)?calculateOnLineRate(onlineRateByDev,90):dto.getDeviceIndexes().size());
|
citDetail.setCitBelowNum(CollUtil.isNotEmpty(citDevOnRate) ? calculateOnLineRate(onlineRateByDev, 90) : dto.getDeviceIndexes().size());
|
||||||
citDetail.setCitTotalOnlineRate(calculateOnLineRate(onlineRateByDev,dto.getDeviceIndexes()));
|
citDetail.setCitTotalOnlineRate(calculateOnLineRate(onlineRateByDev, dto.getDeviceIndexes()));
|
||||||
List<DeviceOnlineRate.Detail> detailList = new ArrayList<>();
|
List<DeviceOnlineRate.Detail> detailList = new ArrayList<>();
|
||||||
List<DevDetail> details = devInfoByIds.stream().filter(x -> dto.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
|
List<DevDetail> details = devInfoByIds.stream().filter(x -> dto.getDeviceIndexes().contains(x.getDevIndex())).collect(Collectors.toList());
|
||||||
for (DevDetail dev : details) {
|
for (DevDetail dev : details) {
|
||||||
detail=new DeviceOnlineRate.Detail();
|
detail = new DeviceOnlineRate.Detail();
|
||||||
detail.setCit(dev.getDeptName());
|
detail.setCit(dev.getDeptName());
|
||||||
detail.setCompany(dev.getGdName());
|
detail.setCompany(dev.getGdName());
|
||||||
detail.setSubStation(dev.getBdzName());
|
detail.setSubStation(dev.getBdzName());
|
||||||
@@ -77,9 +78,10 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
|
|||||||
detail.setDeviceName(dev.getDevName());
|
detail.setDeviceName(dev.getDevName());
|
||||||
detail.setManufacturer(dev.getManufacturer());
|
detail.setManufacturer(dev.getManufacturer());
|
||||||
detail.setIp(dev.getIp());
|
detail.setIp(dev.getIp());
|
||||||
detail.setRunFlag(dev.getRunFlag());
|
detail.setRunFlag(RunFlagEnum.getRunFlagRemarkByStatus(dev.getRunFlag()));
|
||||||
detail.setComFlag(dev.getComFlag());
|
detail.setComFlag(dev.getComFlag() == 0 ? "中断" : "正常");
|
||||||
detail.setOnlineRate(onlineRateByDevMap.containsKey(dev.getDevIndex())?onlineRateByDevMap.get(dev.getDevIndex()).toString():"0");
|
detail.setTimeID(dev.getTimeID());
|
||||||
|
detail.setOnlineRate(onlineRateByDevMap.containsKey(dev.getDevIndex()) ? onlineRateByDevMap.get(dev.getDevIndex()).toString() : "0");
|
||||||
detailList.add(detail);
|
detailList.add(detail);
|
||||||
}
|
}
|
||||||
citDetail.setDetailList(detailList);
|
citDetail.setDetailList(detailList);
|
||||||
@@ -90,18 +92,23 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
|
|||||||
return rate;
|
return rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev ,List<String> deviceIds){
|
@Override
|
||||||
|
public List<RStatOnlinerateVO> getOnlineRateByDevIds(OnlineRateParam onlineRateParam) {
|
||||||
|
return this.baseMapper.getOnlineRateByDevIds(onlineRateParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev, List<String> deviceIds) {
|
||||||
List<RStatOnlinerateVO> list = onlineRateByDev.stream().filter(x -> deviceIds.contains(x.getDevIndex())).collect(Collectors.toList());
|
List<RStatOnlinerateVO> list = onlineRateByDev.stream().filter(x -> deviceIds.contains(x.getDevIndex())).collect(Collectors.toList());
|
||||||
if(CollUtil.isNotEmpty(list)){
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
BigDecimal onlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatOnlinerateVO::getOnlineMin).sum());
|
BigDecimal onlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatOnlinerateVO::getOnlineMin).sum());
|
||||||
BigDecimal offlineMin =BigDecimal.valueOf( list.stream().mapToLong(RStatOnlinerateVO::getOfflineMin).sum());
|
BigDecimal offlineMin = BigDecimal.valueOf(list.stream().mapToLong(RStatOnlinerateVO::getOfflineMin).sum());
|
||||||
BigDecimal sumMin= onlineMin.add(offlineMin);
|
BigDecimal sumMin = onlineMin.add(offlineMin);
|
||||||
return onlineMin.divide(sumMin,2).toString();
|
return onlineMin.divide(sumMin, 2).toString();
|
||||||
}
|
}
|
||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
private Integer calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev,Integer limit){
|
private Integer calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev, Integer limit) {
|
||||||
return onlineRateByDev.stream().filter(x -> x.getOnlineRate() < limit).collect(Collectors.toList()).size();
|
return onlineRateByDev.stream().filter(x -> x.getOnlineRate() < limit).collect(Collectors.toList()).size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -548,6 +548,8 @@ public interface LineMapper extends BaseMapper<Line> {
|
|||||||
|
|
||||||
List<String> getDeviceIdByPowerFlag(@Param("lineIds")List<String> lineIds, @Param("powerFlag")Integer manufacturer);
|
List<String> getDeviceIdByPowerFlag(@Param("lineIds")List<String> lineIds, @Param("powerFlag")Integer manufacturer);
|
||||||
|
|
||||||
|
List<String> getDeviceIdByJbPowerFlag(@Param("lineIds")List<String> lineIds, @Param("powerFlag")Integer manufacturer);
|
||||||
|
|
||||||
DeviceVO getDeviceDetailData(@Param("id")String id);
|
DeviceVO getDeviceDetailData(@Param("id")String id);
|
||||||
|
|
||||||
List<LineDetailVO.Detail> getDeptDeviceDetailData(@Param("ids")List<String> ids,
|
List<LineDetailVO.Detail> getDeptDeviceDetailData(@Param("ids")List<String> ids,
|
||||||
|
|||||||
@@ -1884,5 +1884,28 @@
|
|||||||
<select id="getSubIdByPid" resultType="String">
|
<select id="getSubIdByPid" resultType="String">
|
||||||
SELECT id from pq_line where pid = #{pid}
|
SELECT id from pq_line where pid = #{pid}
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getDeviceIdByJbPowerFlag" resultType="java.lang.String">
|
||||||
|
select
|
||||||
|
t1.id
|
||||||
|
from
|
||||||
|
pq_line t1 ,
|
||||||
|
pq_line_detail t2
|
||||||
|
where
|
||||||
|
t1.id = t2.id
|
||||||
|
and
|
||||||
|
t1.id in
|
||||||
|
<foreach collection="lineIds" separator="," open="(" close=")" item="item">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
<if test=" powerFlag ==0 || powerFlag ==1">
|
||||||
|
AND t2.Power_Flag = #{powerFlag}
|
||||||
|
</if>
|
||||||
|
<if test="powerFlag ==2 ">
|
||||||
|
AND t2.Monitor_Flag = 1
|
||||||
|
</if>
|
||||||
|
<if test="powerFlag ==3">
|
||||||
|
AND t2.Monitor_Flag = 0
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user