冀北终端在线率代码提交

This commit is contained in:
wr
2025-11-27 11:01:24 +08:00
parent 62c3c09a6b
commit 9b9d75e463
10 changed files with 176 additions and 43 deletions

View File

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

View File

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

View File

@@ -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;
@@ -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;
} }
@@ -573,9 +576,30 @@ public class GeneralDeviceService {
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;
}
/** /**
* 当该部门不存在监测点时,返回空的分类数据 * 当该部门不存在监测点时,返回空的分类数据
* *

View File

@@ -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);
/** /**
* 根据监测点集合查询基础信息 * 根据监测点集合查询基础信息

View File

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

View File

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

View File

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

View File

@@ -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;
@@ -77,8 +78,9 @@ 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.setTimeID(dev.getTimeID());
detail.setOnlineRate(onlineRateByDevMap.containsKey(dev.getDevIndex()) ? onlineRateByDevMap.get(dev.getDevIndex()).toString() : "0"); detail.setOnlineRate(onlineRateByDevMap.containsKey(dev.getDevIndex()) ? onlineRateByDevMap.get(dev.getDevIndex()).toString() : "0");
detailList.add(detail); detailList.add(detail);
} }
@@ -90,6 +92,11 @@ public class OnLineRateServiceImpl extends ServiceImpl<OnLineRateMapper, RStatOn
return rate; return rate;
} }
@Override
public List<RStatOnlinerateVO> getOnlineRateByDevIds(OnlineRateParam onlineRateParam) {
return this.baseMapper.getOnlineRateByDevIds(onlineRateParam);
}
private String calculateOnLineRate(List<RStatOnlinerateVO> onlineRateByDev, List<String> deviceIds) { 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)) {

View File

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

View File

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