终端运行评价接口
This commit is contained in:
@@ -452,14 +452,10 @@ public class EventRelevantAnalysisServiceImpl extends ServiceImpl<RmpEventAdvanc
|
|||||||
if (CollUtil.isEmpty(lineIds)) {
|
if (CollUtil.isEmpty(lineIds)) {
|
||||||
throw new BusinessException("当前部门下不存在监测点");
|
throw new BusinessException("当前部门下不存在监测点");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<LocalDateTime> vTime = PubUtils.checkLocalDate(baseParam.getSearchBeginTime(), baseParam.getSearchEndTime());
|
List<LocalDateTime> vTime = PubUtils.checkLocalDate(baseParam.getSearchBeginTime(), baseParam.getSearchEndTime());
|
||||||
LambdaQueryWrapper<RmpEventDetailPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<RmpEventDetailPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
lambdaQueryWrapper.and(i -> i.isNull(RmpEventDetailPO::getEventassIndex).or().eq(RmpEventDetailPO::getEventassIndex, ""))
|
lambdaQueryWrapper.and(i -> i.isNull(RmpEventDetailPO::getEventassIndex).or().eq(RmpEventDetailPO::getEventassIndex, ""))
|
||||||
.between(RmpEventDetailPO::getStartTime, vTime.get(0), vTime.get(1)).orderByAsc(RmpEventDetailPO::getStartTime)
|
.between(RmpEventDetailPO::getStartTime, vTime.get(0), vTime.get(1)).orderByAsc(RmpEventDetailPO::getStartTime);
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
Page<RmpEventDetailPO> poPage = eventAdvanceMapper.selectPage(new Page<>(PageFactory.getPageNum(baseParam), PageFactory.getPageSize(baseParam)), lambdaQueryWrapper);
|
Page<RmpEventDetailPO> poPage = eventAdvanceMapper.selectPage(new Page<>(PageFactory.getPageNum(baseParam), PageFactory.getPageSize(baseParam)), lambdaQueryWrapper);
|
||||||
List<RmpEventDetailPO> rmpEventDetailPOList = poPage.getRecords();
|
List<RmpEventDetailPO> rmpEventDetailPOList = poPage.getRecords();
|
||||||
|
|||||||
@@ -21,12 +21,18 @@ public enum PowerFlagEnum {
|
|||||||
NEW_ENERGY(2, "电网侧(新能源)"),
|
NEW_ENERGY(2, "电网侧(新能源)"),
|
||||||
NO_NEW_ENERGY(3, "非电网侧(新能源)"),
|
NO_NEW_ENERGY(3, "非电网侧(新能源)"),
|
||||||
SEND_NETWORK(4, "上送国网"),
|
SEND_NETWORK(4, "上送国网"),
|
||||||
PCC(5, "PCC");
|
PCC(5, "PCC"),
|
||||||
|
|
||||||
|
|
||||||
|
VIRTUAL_DEVICE(0,"虚拟终端"),
|
||||||
|
REAL_DEVICE(1,"实际终端"),
|
||||||
|
OFFLINE_DEICE(2,"离线终端")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
private final Integer code;
|
private final Integer code;
|
||||||
private final String message;
|
private final String message;
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package com.njcn.device.pq.pojo.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: cdf
|
||||||
|
* @CreateTime: 2025-05-08
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class MonitorInfoDTO {
|
||||||
|
/**
|
||||||
|
* 监测点Id
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父节点(0为根节点)
|
||||||
|
*/
|
||||||
|
private String pid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上层所有节点
|
||||||
|
*/
|
||||||
|
private String pids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 等级:0-项目名称;1- 工程名称;2-单位;3-部门;4-终端;5-母线;6-监测点
|
||||||
|
*/
|
||||||
|
private Integer level;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 排序(默认为0,有特殊排序需要时候人为输入)
|
||||||
|
*/
|
||||||
|
private Integer sort;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
private String objId;
|
||||||
|
|
||||||
|
private Integer powerFlag;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.njcn.device.pq.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: cdf
|
||||||
|
* @CreateTime: 2025-05-08
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class TerminalEvaluateAreaVO {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private Double score;
|
||||||
|
|
||||||
|
private Integer count;
|
||||||
|
|
||||||
|
private Double online;
|
||||||
|
|
||||||
|
private Double integrity;
|
||||||
|
|
||||||
|
private Double qualified;
|
||||||
|
}
|
||||||
@@ -7,6 +7,15 @@ import com.njcn.common.pojo.response.HttpResult;
|
|||||||
import com.njcn.common.utils.HttpResultUtil;
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
import com.njcn.device.pq.pojo.vo.DeviceRunEvaluateVO;
|
import com.njcn.device.pq.pojo.vo.DeviceRunEvaluateVO;
|
||||||
|
import com.njcn.common.pojo.annotation.OperateInfo;
|
||||||
|
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||||
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.common.utils.HttpResultUtil;
|
||||||
|
import com.njcn.device.pq.pojo.dto.DevComFlagDTO;
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
|
import com.njcn.device.pq.pojo.po.Device;
|
||||||
|
import com.njcn.device.pq.pojo.vo.TerminalEvaluateAreaVO;
|
||||||
import com.njcn.device.pq.service.DeviceRunEvaluateService;
|
import com.njcn.device.pq.service.DeviceRunEvaluateService;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -18,6 +27,10 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -45,4 +58,15 @@ public class DeviceRunEvaluateController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@OperateInfo(info = LogEnum.SYSTEM_COMMON)
|
||||||
|
@PostMapping("/areaTerminalStatistic")
|
||||||
|
@ApiOperation("根据部门获取不同层级的终端信息")
|
||||||
|
public HttpResult<List<TerminalEvaluateAreaVO>> areaTerminalStatistic(@RequestBody DeviceInfoParam.BusinessParam businessParam) {
|
||||||
|
String methodDescribe = getMethodDescribe("areaTerminalStatistic");
|
||||||
|
List<TerminalEvaluateAreaVO> result = deviceRunEvaluateService.areaTerminalStatistic(businessParam);
|
||||||
|
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,6 +100,8 @@ public interface LineMapper extends BaseMapper<Line> {
|
|||||||
List<TerminalTree> getProvinceList(@Param("pids") List<String> pids, @Param("type") Integer type);
|
List<TerminalTree> getProvinceList(@Param("pids") List<String> pids, @Param("type") Integer type);
|
||||||
|
|
||||||
|
|
||||||
|
List<MonitorInfoDTO> getLineListByIds(@Param("ids") List<String> ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回未绑定的监测点
|
* 返回未绑定的监测点
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.njcn.device.pq.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||||
import com.njcn.device.pq.pojo.po.OnlineRate;
|
|
||||||
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
||||||
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|||||||
@@ -131,8 +131,8 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="getAllLineList" resultType="TerminalTree">
|
<select id="getLineListByIds" resultType="com.njcn.device.pq.pojo.dto.MonitorInfoDTO">
|
||||||
select a.id,a.pid,a.name,a.level,a.sort,b.pt_type
|
select a.id,a.pid,a.pids,a.name,a.level,a.sort,b.obj_id,b.power_flag
|
||||||
from pq_line a
|
from pq_line a
|
||||||
inner join pq_line_detail b on a.id = b.id
|
inner join pq_line_detail b on a.id = b.id
|
||||||
where a.id in
|
where a.id in
|
||||||
|
|||||||
@@ -5,6 +5,11 @@ import com.njcn.device.pq.pojo.vo.DeviceRunEvaluateVO;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||||
|
import com.njcn.device.pq.pojo.vo.TerminalEvaluateAreaVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wr
|
* @author wr
|
||||||
* @description
|
* @description
|
||||||
@@ -18,4 +23,8 @@ public interface DeviceRunEvaluateService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<DeviceRunEvaluateVO> getRunEvaluate(DeviceInfoParam.CompareBusinessParam deviceInfoParam);
|
List<DeviceRunEvaluateVO> getRunEvaluate(DeviceInfoParam.CompareBusinessParam deviceInfoParam);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
List<TerminalEvaluateAreaVO> areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,19 +13,34 @@ import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
|||||||
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
||||||
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
|
||||||
import com.njcn.device.pq.pojo.vo.DeviceRunEvaluateVO;
|
import com.njcn.device.pq.pojo.vo.DeviceRunEvaluateVO;
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.njcn.device.pq.enums.LineBaseEnum;
|
||||||
|
import com.njcn.device.pq.enums.PowerFlagEnum;
|
||||||
|
import com.njcn.device.pq.enums.RunFlagEnum;
|
||||||
|
import com.njcn.device.pq.mapper.LineMapper;
|
||||||
|
import com.njcn.device.pq.pojo.dto.MonitorInfoDTO;
|
||||||
|
import com.njcn.device.pq.pojo.vo.TerminalEvaluateAreaVO;
|
||||||
import com.njcn.device.pq.service.DeviceRunEvaluateService;
|
import com.njcn.device.pq.service.DeviceRunEvaluateService;
|
||||||
import com.njcn.harmonic.api.RStatLimitRateDClient;
|
import com.njcn.harmonic.api.RStatLimitRateDClient;
|
||||||
import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
|
import com.njcn.harmonic.pojo.param.RStatLimitQueryParam;
|
||||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||||
|
import com.njcn.supervision.api.UserLedgerFeignClient;
|
||||||
|
import com.njcn.supervision.pojo.param.user.UserReportParam;
|
||||||
|
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author wr
|
* @author wr
|
||||||
* @description
|
* @description
|
||||||
@@ -35,24 +50,26 @@ import java.util.stream.Collectors;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据完整性:50%
|
|
||||||
*/
|
|
||||||
private static BigDecimal ONINTEGRITY = new BigDecimal(0.5);
|
|
||||||
/**
|
|
||||||
* 数据合格率:30%
|
|
||||||
*/
|
|
||||||
private static BigDecimal ONLINERATE = new BigDecimal(0.2);
|
|
||||||
/**
|
|
||||||
* 终端在线率:20%
|
|
||||||
*/
|
|
||||||
private static BigDecimal LIMITRATE = new BigDecimal(0.3);
|
|
||||||
|
|
||||||
|
|
||||||
private final GeneralDeviceService generalDeviceService;
|
private final GeneralDeviceService generalDeviceService;
|
||||||
private final RStatLimitRateDClient rStatLimitRateDClient;
|
private final RStatLimitRateDClient rStatLimitRateDClient;
|
||||||
private final RStatOnlinerateDMapper onLineRateDMapper;
|
private final RStatOnlinerateDMapper onLineRateDMapper;
|
||||||
private final RStatIntegrityDMapper integrityDMapper;
|
private final RStatIntegrityDMapper integrityDMapper;
|
||||||
|
private final LineMapper lineMapper;
|
||||||
|
private final UserLedgerFeignClient userLedgerFeignClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 数据完整性:50%
|
||||||
|
*/
|
||||||
|
private static final BigDecimal ONINTEGRITY = new BigDecimal("0.5");
|
||||||
|
/**
|
||||||
|
* 数据合格率:30%
|
||||||
|
*/
|
||||||
|
private static final BigDecimal ONLINERATE = new BigDecimal("0.2");
|
||||||
|
/**
|
||||||
|
* 终端在线率:20%
|
||||||
|
*/
|
||||||
|
private static final BigDecimal LIMITRATE = new BigDecimal("0.3");
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeviceRunEvaluateVO> getRunEvaluate(DeviceInfoParam.CompareBusinessParam param) {
|
public List<DeviceRunEvaluateVO> getRunEvaluate(DeviceInfoParam.CompareBusinessParam param) {
|
||||||
@@ -153,4 +170,109 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
|
|||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TerminalEvaluateAreaVO> areaTerminalStatistic(DeviceInfoParam.BusinessParam businessParam) {
|
||||||
|
List<TerminalEvaluateAreaVO> result = new ArrayList<>();
|
||||||
|
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(businessParam, Stream.of(RunFlagEnum.RUNNING.getStatus()).collect(Collectors.toList()), Stream.of(PowerFlagEnum.REAL_DEVICE.getCode()).collect(Collectors.toList()));
|
||||||
|
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
|
||||||
|
if (generalDeviceDTOList.size() == 1 && generalDeviceDTOList.get(0).getIndex().equals(businessParam.getDeptIndex())) {
|
||||||
|
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
|
||||||
|
Map<String, UserLedgerVO> userReportVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
|
||||||
|
//已经最底层,展示电站和用户场站
|
||||||
|
List<MonitorInfoDTO> lineDetailList = lineMapper.getLineListByIds(generalDeviceDTOList.get(0).getLineIndexes());
|
||||||
|
List<MonitorInfoDTO> detailList = lineDetailList.stream().filter(it -> StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
|
||||||
|
if (CollUtil.isNotEmpty(detailList)) {
|
||||||
|
List<String> ids = detailList.stream().map(MonitorInfoDTO::getId).distinct().collect(Collectors.toList());
|
||||||
|
List<String> devIds = detailList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
|
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
|
||||||
|
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
|
||||||
|
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
|
||||||
|
getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,ids,devIds,businessParam.getSearchBeginTime(),businessParam.getSearchEndTime());
|
||||||
|
Map<String, List<MonitorInfoDTO>> map = detailList.stream().collect(Collectors.groupingBy(MonitorInfoDTO::getObjId));
|
||||||
|
map.forEach((objId, list) -> {
|
||||||
|
UserLedgerVO userLedgerVO = userReportVOMap.get(objId);
|
||||||
|
List<String> lineIds = list.stream().map(MonitorInfoDTO::getId).collect(Collectors.toList());
|
||||||
|
List<String> devList = list.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).collect(Collectors.toList());
|
||||||
|
List<RStatIntegrityD> temIntegrityList = rStatIntegrityDList.stream().filter(it->lineIds.contains(it.getLineIndex())).collect(Collectors.toList());
|
||||||
|
List<RStatLimitRateDPO> temlimitList = rStatLimitRateDPOList.stream().filter(it->lineIds.contains(it.getLineId())).collect(Collectors.toList());
|
||||||
|
List<RStatOnlinerateD> onlineList = rStatOnlinerateDList.stream().filter(it->devList.contains(it.getDevIndex())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
result.add(getScoreData(userLedgerVO.getProjectName(),devList,temIntegrityList,onlineList,temlimitList));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
|
||||||
|
List<RStatIntegrityD> rStatIntegrityDList = new ArrayList<>();
|
||||||
|
List<RStatOnlinerateD> rStatOnlinerateDList = new ArrayList<>();
|
||||||
|
List<RStatLimitRateDPO> rStatLimitRateDPOList = new ArrayList<>();
|
||||||
|
getData(rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList,generalDeviceDTO.getLineIndexes(),generalDeviceDTO.getDeviceIndexes(),businessParam.getSearchBeginTime(),businessParam.getSearchEndTime());
|
||||||
|
result.add(getScoreData(generalDeviceDTO.getName(),generalDeviceDTO.getDeviceIndexes(),rStatIntegrityDList,rStatOnlinerateDList,rStatLimitRateDPOList));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TerminalEvaluateAreaVO getScoreData(String name,List<String> devIds,List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList) {
|
||||||
|
double integrityRate = 0;
|
||||||
|
double onlineRate = 0;
|
||||||
|
double qualifiedRate = 0;
|
||||||
|
TerminalEvaluateAreaVO terminalEvaluateAreaVO = new TerminalEvaluateAreaVO();
|
||||||
|
terminalEvaluateAreaVO.setName(name);
|
||||||
|
terminalEvaluateAreaVO.setCount(devIds.size());
|
||||||
|
if (CollectionUtil.isNotEmpty(rStatIntegrityDList)) {
|
||||||
|
integrityRate = rStatIntegrityDList.stream().mapToDouble(it -> (double) it.getRealTime() / it.getDueTime()).average().orElse(0);
|
||||||
|
terminalEvaluateAreaVO.setIntegrity(NumberUtil.round(integrityRate*100,2).doubleValue());
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(rStatOnlinerateDList)) {
|
||||||
|
onlineRate = rStatOnlinerateDList.stream().mapToDouble(it -> (double) it.getOnlineRate() / it.getOnlineRate() + it.getOfflineMin()).average().orElse(0);
|
||||||
|
terminalEvaluateAreaVO.setOnline(NumberUtil.round(onlineRate*100,2).doubleValue());
|
||||||
|
}
|
||||||
|
if (CollectionUtil.isNotEmpty(rStatLimitRateDPOList)) {
|
||||||
|
qualifiedRate = rStatLimitRateDPOList.stream().mapToDouble(it -> {
|
||||||
|
if (it.getAllTime() == 0) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
int limit = it.getUharm2Overtime() + it.getUharm3Overtime() + it.getUharm4Overtime() + it.getUharm5Overtime() + it.getUharm6Overtime() +
|
||||||
|
it.getUharm7Overtime() + it.getUharm8Overtime() + it.getUharm9Overtime() + it.getUharm10Overtime() + it.getUharm11Overtime() +
|
||||||
|
it.getUharm12Overtime() + it.getUharm13Overtime() + it.getUharm14Overtime() + it.getUharm15Overtime() + it.getUharm16Overtime() +
|
||||||
|
it.getUharm17Overtime() + it.getUharm18Overtime() + it.getUharm19Overtime() + it.getUharm20Overtime() + it.getUharm21Overtime() +
|
||||||
|
it.getUharm22Overtime() + it.getUharm23Overtime() + it.getUharm24Overtime() + it.getUharm25Overtime() + it.getUaberranceOvertime();
|
||||||
|
return 1 - ((double) (limit) / it.getAllTime() * 25);
|
||||||
|
}
|
||||||
|
}).average().orElse(0);
|
||||||
|
terminalEvaluateAreaVO.setQualified(NumberUtil.round(qualifiedRate*100,2).doubleValue());
|
||||||
|
double pingFen = integrityRate * 0.5 + onlineRate * 0.2 + qualifiedRate * 0.3;
|
||||||
|
terminalEvaluateAreaVO.setScore(BigDecimal.valueOf(pingFen*100).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||||
|
}
|
||||||
|
return terminalEvaluateAreaVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void getData(List<RStatIntegrityD> rStatIntegrityDList,List<RStatOnlinerateD> rStatOnlinerateDList,List<RStatLimitRateDPO> rStatLimitRateDPOList,List<String> lineIds,List<String> devIds,String startTime,String endTime){
|
||||||
|
if(CollUtil.isNotEmpty(lineIds)){
|
||||||
|
rStatIntegrityDList.addAll(integrityDMapper.selectList(new QueryWrapper<RStatIntegrityD>()
|
||||||
|
.select("sum(real_time) as realTime,sum(due_time) as dueTime,line_index as lineIndex")
|
||||||
|
.in(CollUtil.isNotEmpty(lineIds), "line_index", lineIds)
|
||||||
|
.between("time_id",startTime,endTime)
|
||||||
|
.groupBy("line_index")));
|
||||||
|
RStatLimitQueryParam rStatLimitQueryParam = new RStatLimitQueryParam();
|
||||||
|
rStatLimitQueryParam.setIds(lineIds);
|
||||||
|
rStatLimitQueryParam.setDate(startTime);
|
||||||
|
rStatLimitQueryParam.setEndDate(endTime);
|
||||||
|
rStatLimitRateDPOList.addAll(rStatLimitRateDClient.monitorIdsGetLimitInfo(rStatLimitQueryParam).getData());
|
||||||
|
}
|
||||||
|
if(CollectionUtil.isNotEmpty(devIds)) {
|
||||||
|
rStatOnlinerateDList.addAll(onLineRateDMapper.selectList(new QueryWrapper<RStatOnlinerateD>()
|
||||||
|
.select("sum(online_min) as onlineMin,sum(offline_min) as offlineMin,dev_index as devIndex")
|
||||||
|
.in(CollUtil.isNotEmpty(devIds), "dev_index", devIds)
|
||||||
|
.between("time_id",startTime,endTime)
|
||||||
|
.groupBy("dev_index")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user