1.全景增加暂态信息和调整告警条件
2.增加暂态列表信息和冀北树污染值条件
This commit is contained in:
@@ -63,7 +63,7 @@ public class GridDiagramHarmController extends BaseController {
|
||||
@ApiOperation("变电站污染告警占比")
|
||||
public HttpResult<GridDiagramVO> getPollutionAlarmData(@RequestBody StatSubstationBizBaseParam param) {
|
||||
String methodDescribe = getMethodDescribe("getSubLineGiveAnAlarm");
|
||||
GridDiagramVO subLineGiveAnAlarm = pollutionSubstationService.getPollutionAlarmData(param);
|
||||
GridDiagramVO subLineGiveAnAlarm = pollutionSubstationService.getNewPollutionAlarmData(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, subLineGiveAnAlarm, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.njcn.common.utils.LogUtil;
|
||||
import com.njcn.device.biz.pojo.dto.PollutionLineDTO;
|
||||
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
|
||||
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.AreaPollution;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.LinePollution;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.SubstationPollution;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.UserLinePollution;
|
||||
@@ -174,4 +175,14 @@ public class PollutionSubstationController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, sumMap, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@ApiOperation(value = "区域污染值统计")
|
||||
@PostMapping(value = "/getAreaPollution")
|
||||
public HttpResult<List<AreaPollution>> getAreaPollution(@RequestBody StatSubstationBizBaseParam param) {
|
||||
String methodDescribe = getMethodDescribe("getAreaPollution");
|
||||
param.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString());
|
||||
param.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString());
|
||||
List<AreaPollution> areaPollution = pollutionSubstationService.getAreaPollution(param);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, areaPollution, methodDescribe);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,4 +73,14 @@ public interface RStatLimitTargetDMapper extends BaseMapper<RStatLimitTargetDPO>
|
||||
List<RStatLimitTargetCountVO> getSumTargetCountDayes(@Param("ids") List<String> ids,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
|
||||
/**
|
||||
* 获取谐波电压越线监测点
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<String> getLinesHarmTarget(@Param("ids") List<String> ids,
|
||||
@Param("startTime") String startTime,
|
||||
@Param("endTime") String endTime);
|
||||
|
||||
}
|
||||
|
||||
@@ -723,4 +723,56 @@
|
||||
GROUP BY
|
||||
A.lineId;
|
||||
</select>
|
||||
<select id="getLinesHarmTarget" resultType="java.lang.String">
|
||||
select
|
||||
my_index
|
||||
from (
|
||||
SELECT
|
||||
my_index,
|
||||
sum(if((
|
||||
uaberrance_overtime+
|
||||
uharm_2_overtime+
|
||||
uharm_3_overtime+
|
||||
uharm_4_overtime+
|
||||
uharm_5_overtime+
|
||||
uharm_6_overtime+
|
||||
uharm_7_overtime+
|
||||
uharm_8_overtime+
|
||||
uharm_9_overtime+
|
||||
uharm_10_overtime+
|
||||
uharm_11_overtime+
|
||||
uharm_12_overtime+
|
||||
uharm_13_overtime+
|
||||
uharm_14_overtime+
|
||||
uharm_15_overtime+
|
||||
uharm_16_overtime+
|
||||
uharm_17_overtime+
|
||||
uharm_18_overtime+
|
||||
uharm_19_overtime+
|
||||
uharm_20_overtime+
|
||||
uharm_21_overtime+
|
||||
uharm_22_overtime+
|
||||
uharm_23_overtime+
|
||||
uharm_24_overtime+
|
||||
uharm_25_overtime)>0,1,0)) AS allCount
|
||||
FROM
|
||||
r_stat_limit_rate_d
|
||||
<where>
|
||||
<if test=" ids != null and ids.size > 0">
|
||||
AND my_index IN
|
||||
<foreach collection='ids' item='item' index="index" open='(' separator=',' close=')'>
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test=" startTime != null and startTime !=''">
|
||||
AND time_id >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null and endTime != ''">
|
||||
AND time_id <= #{endTime}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY
|
||||
my_index
|
||||
) a where allCount>0
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -26,6 +26,13 @@ public interface IRStatLimitTargetDService extends IService<RStatLimitTargetDPO>
|
||||
*/
|
||||
List<String> getLinesTarget(StatSubstationBizBaseParam param);
|
||||
|
||||
/**
|
||||
* 获取谐波电压越线监测点
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
List<String> getLinesHarmTarget(StatSubstationBizBaseParam param);
|
||||
|
||||
/**
|
||||
* 根据监测点查询一个月各指标越线超标天数
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
|
||||
import com.njcn.device.pq.pojo.param.GridDiagramParam;
|
||||
import com.njcn.device.pq.pojo.param.OnlineRateParam;
|
||||
import com.njcn.device.pq.pojo.vo.GridDiagramVO;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.AreaPollution;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.LinePollution;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.SubstationPollution;
|
||||
import com.njcn.harmonic.pojo.excel.pollution.UserLinePollution;
|
||||
@@ -20,8 +21,8 @@ import com.njcn.harmonic.pojo.vo.PollutionVO;
|
||||
import com.njcn.harmonic.pojo.vo.SubstationVo;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
*
|
||||
|
||||
/**
|
||||
* Description:
|
||||
* 接口文档访问地址:http://serverIP:port/swagger-ui.html
|
||||
* Date: 2022/10/13 8:56【需求编号】
|
||||
@@ -29,60 +30,64 @@ import java.util.List;
|
||||
* @author clam
|
||||
* @version V1.0.0
|
||||
*/
|
||||
public interface PollutionSubstationService extends IService<RStatPollutionSubstationM>{
|
||||
public interface PollutionSubstationService extends IService<RStatPollutionSubstationM> {
|
||||
|
||||
|
||||
/**
|
||||
* @Description: getPollutionSubstationData
|
||||
* @Param: [pollutionSubstationQuryParam]
|
||||
* @return: java.util.List<com.njcn.harmonic.pojo.vo.PollutionSubstationVO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/10/13
|
||||
*/
|
||||
* @Description: getPollutionSubstationData
|
||||
* @Param: [pollutionSubstationQuryParam]
|
||||
* @return: java.util.List<com.njcn.harmonic.pojo.vo.PollutionSubstationVO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/10/13
|
||||
*/
|
||||
List<PollutionSubstationVO> getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam);
|
||||
|
||||
|
||||
/**
|
||||
* @Description: getDeptSubstationRelations
|
||||
* @Param: [param]
|
||||
* @return: java.util.List<com.njcn.harmonic.pojo.vo.PollutionVO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/3
|
||||
*/
|
||||
* @Description: getDeptSubstationRelations
|
||||
* @Param: [param]
|
||||
* @return: java.util.List<com.njcn.harmonic.pojo.vo.PollutionVO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/3
|
||||
*/
|
||||
List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam param);
|
||||
/**
|
||||
* @Description: getSubstationInfoById
|
||||
* @Param: [param]
|
||||
* @return: java.util.List<com.njcn.device.pq.pojo.dto.PollutionSubstationDTO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/3
|
||||
*/
|
||||
|
||||
/**
|
||||
* @Description: getSubstationInfoById
|
||||
* @Param: [param]
|
||||
* @return: java.util.List<com.njcn.device.pq.pojo.dto.PollutionSubstationDTO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/3
|
||||
*/
|
||||
List<PollutionSubstationDTO> getSubstationInfoById(HarmonicPublicParam param);
|
||||
|
||||
/**
|
||||
* @Description: getLineInfoById
|
||||
* @Param: [param]
|
||||
* @return: java.util.List<com.njcn.device.biz.pojo.dto.PollutionLineDTO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/3
|
||||
*/
|
||||
|
||||
/**
|
||||
* @Description: getLineInfoById
|
||||
* @Param: [param]
|
||||
* @return: java.util.List<com.njcn.device.biz.pojo.dto.PollutionLineDTO>
|
||||
* @Author: clam
|
||||
* @Date: 2022/11/3
|
||||
*/
|
||||
List<PollutionLineDTO> getLineInfoById(HarmonicPublicParam param);
|
||||
|
||||
|
||||
List<PollutionLineDTO> getLineRankTop10(HarmonicPublicParam param);
|
||||
|
||||
/**
|
||||
* @Description: 污染告警信息
|
||||
* @param param
|
||||
* @Description: 污染告警信息
|
||||
* @return: java.util.List<java.lang.String>
|
||||
* @Author: wr
|
||||
* @Date: 2024/4/22 11:00
|
||||
*/
|
||||
@Deprecated
|
||||
GridDiagramVO getPollutionAlarmData(StatSubstationBizBaseParam param);
|
||||
|
||||
GridDiagramVO getNewPollutionAlarmData(StatSubstationBizBaseParam param);
|
||||
|
||||
/**
|
||||
* @Description: 污染告警信息
|
||||
* @param param
|
||||
* @Description: 污染告警信息
|
||||
* @return: java.util.List<java.lang.String>
|
||||
* @Author: wr
|
||||
* @Date: 2024/4/22 11:00
|
||||
@@ -97,6 +102,7 @@ public interface PollutionSubstationService extends IService<RStatPollutionSubst
|
||||
|
||||
/**
|
||||
* 导出监测点谐波污染值
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
List<LinePollution> downPollutionLineCalc(StatSubstationBizBaseParam param);
|
||||
@@ -109,10 +115,20 @@ public interface PollutionSubstationService extends IService<RStatPollutionSubst
|
||||
|
||||
/**
|
||||
* 变电站谐波电压污染值
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
List<SubstationPollution> downPollutionSubCalc(StatSubstationBizBaseParam param);
|
||||
|
||||
|
||||
List<UserLinePollution> getSumList(OnlineRateParam.Info param);
|
||||
|
||||
/**
|
||||
* @param param
|
||||
* @Description: 区域污染值统计
|
||||
* @return: java.util.List<com.njcn.harmonic.pojo.excel.pollution.AreaPollution>
|
||||
* @Author: wr
|
||||
* @Date: 2025/12/10 17:53
|
||||
*/
|
||||
List<AreaPollution> getAreaPollution(StatSubstationBizBaseParam param);
|
||||
}
|
||||
|
||||
@@ -57,6 +57,7 @@ import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
import com.njcn.harmonic.pojo.vo.PollutionSubstationVO;
|
||||
import com.njcn.harmonic.pojo.vo.PollutionVO;
|
||||
import com.njcn.harmonic.pojo.vo.SubstationVo;
|
||||
import com.njcn.harmonic.pojo.vo.hebeinorth.AssessVo;
|
||||
import com.njcn.harmonic.rstatlimitrate.mapper.RStatLimitRateDMapper;
|
||||
import com.njcn.harmonic.service.PollutionSubstationService;
|
||||
import com.njcn.poi.excel.ExcelUtil;
|
||||
@@ -66,6 +67,7 @@ import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
import com.njcn.user.pojo.dto.DeptDTO;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
import com.njcn.web.utils.RequestUtil;
|
||||
|
||||
@@ -833,6 +835,37 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GridDiagramVO getNewPollutionAlarmData(StatSubstationBizBaseParam param) {
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
deptGetLineParam.setDeptId(param.getId());
|
||||
deptGetLineParam.setIsUpToGrid(param.getIsUpToGrid());
|
||||
List<DeptGetSubStationDTO.Info> detSub = commTerminalGeneralClient.deptGetSubStationInfo(deptGetLineParam).getData();
|
||||
//获取全部变电站信息
|
||||
List<SubGetBase> collect = detSub.stream().flatMap(x -> x.getStationIds().stream()).collect(Collectors.toList());
|
||||
GridDiagramVO vo = new GridDiagramVO();
|
||||
List<Double> info = new ArrayList<>();
|
||||
List<Double> gwInfo = new ArrayList<>();
|
||||
|
||||
|
||||
// if (CollUtil.isNotEmpty(subAll)) {
|
||||
// List<RStatPollutionSubstationM> substationMlist = pollutionSubstationMMapper.selectList(new LambdaQueryWrapper<RStatPollutionSubstationM>()
|
||||
// .select(RStatPollutionSubstationM::getSubstationId, RStatPollutionSubstationM::getValue)
|
||||
// .in(CollUtil.isNotEmpty(subAll), RStatPollutionSubstationM::getSubstationId, subAll)
|
||||
// .in(CollUtil.isNotEmpty(param.getIds()), RStatPollutionSubstationM::getPollutionType, param.getIds())
|
||||
// .ge(StrUtil.isNotBlank(param.getStartTime()), RStatPollutionSubstationM::getDataDate, DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
|
||||
// .le(StrUtil.isNotBlank(param.getEndTime()), RStatPollutionSubstationM::getDataDate, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
|
||||
// );
|
||||
// info.addAll(substationMlist.stream().map(RStatPollutionSubstationM::getValue).collect(Collectors.toList()));
|
||||
// gwInfo.addAll(substationMlist.stream()
|
||||
// .filter(x -> subGw.contains(x.getSubstationId()))
|
||||
// .map(RStatPollutionSubstationM::getValue).collect(Collectors.toList()));
|
||||
// }
|
||||
vo.setInfo(info);
|
||||
vo.setGwInfo(gwInfo);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<PollutionGridDiagramDTO> getPollutionAlarmPageData(StatSubstationBizBaseParam param) {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
@@ -889,7 +922,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
List<RMpPollutionDPO> rMpPollutionDPOS = rMpPollutionDPOMapper.selectSumList(lineIdList,
|
||||
Arrays.asList("b33a2946cb2d4f2641f485cf7720ecc7"),
|
||||
// Arrays.asList("b33a2946cb2d4f2641f485cf7720ecc7"),
|
||||
param.getIds(),
|
||||
DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(),
|
||||
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString());
|
||||
List<String> dept;
|
||||
@@ -1154,6 +1188,49 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
return info;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AreaPollution> getAreaPollution(StatSubstationBizBaseParam param) {
|
||||
List<AreaPollution> info = new ArrayList<>();
|
||||
DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
|
||||
deviceInfoParam.setLineRunFlag(0);
|
||||
deviceInfoParam.setDeptIndex(param.getId());
|
||||
deviceInfoParam.setStatisticalType(new SimpleDTO());
|
||||
deviceInfoParam.setMonitorFlag(param.getIsUpToGrid());
|
||||
List<GeneralDeviceDTO> deptData = generalDeviceInfoClient.getPracticalRunDeviceInfo(deviceInfoParam).getData();
|
||||
List<String> lineIdList = deptData.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(lineIdList)) {
|
||||
List<RMpPollutionDPO> pollutionList = rMpPollutionDPOMapper.selectSumList(lineIdList, param.getIds(), param.getStartTime(), param.getEndTime());
|
||||
Map<String, Double> pollutionMap = pollutionList.stream().collect(Collectors.toMap(RMpPollutionDPO::getLineId, RMpPollutionDPO::getValue));
|
||||
//获取监测点详细信息
|
||||
List<PollutionLineInfoDTO> lineInfoDTOList = commLineClient.getPollutionLineInfo(lineIdList).getData();
|
||||
List<PowerFlagPollution> linePollutionList;
|
||||
for (GeneralDeviceDTO item : deptData) {
|
||||
linePollutionList = new ArrayList<>();
|
||||
AreaPollution pollution = new AreaPollution();
|
||||
pollution.setDeptName(item.getName());
|
||||
pollution.setDeptId(item.getIndex());
|
||||
List<PollutionLineInfoDTO> lineDetails = lineInfoDTOList.stream().filter(x -> item.getLineIndexes().contains(x.getLineId())).collect(Collectors.toList());
|
||||
PowerFlagPollution pollution1;
|
||||
for (PollutionLineInfoDTO lineDetail : lineDetails) {
|
||||
pollution1 = new PowerFlagPollution();
|
||||
pollution1.setLineName(lineDetail.getLineName());
|
||||
pollution1.setDevName(lineDetail.getDevName());
|
||||
pollution1.setManufacturer(lineDetail.getManufacturer());
|
||||
pollution1.setDevType(lineDetail.getDevType());
|
||||
pollution1.setLoginTime(lineDetail.getLoginTime());
|
||||
pollution1.setInterval(lineDetail.getTimeInterval());
|
||||
pollution1.setPowerFlag(lineDetail.getPowerFlag());
|
||||
pollution1.setVHarmonicValue(pollutionMap.containsKey(lineDetail.getLineId())?NumberUtil.round(pollutionMap.get(lineDetail.getLineId()),2).doubleValue():0.0);
|
||||
linePollutionList.add(pollution1);
|
||||
}
|
||||
pollution.setPowerFlagPollutionList(linePollutionList.stream().sorted(Comparator.comparing(PowerFlagPollution::getVHarmonicValue).reversed()).collect(Collectors.toList()));
|
||||
pollution.setScore(NumberUtil.round(linePollutionList.stream().mapToDouble(PowerFlagPollution::getVHarmonicValue).sum(),2).doubleValue());
|
||||
info.add(pollution);
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
private List<String> addList(List<RMpPollutionDPO> pollLinelist, List<SubGetBase> notNum) {
|
||||
List<String> info = new ArrayList<>();
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.njcn.harmonic.service.IRStatLimitTargetDService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -30,6 +31,11 @@ public class RStatLimitTargetDServiceImpl extends ServiceImpl<RStatLimitTargetDM
|
||||
return this.baseMapper.getLinesTarget(param.getIds(),param.getStartTime(),param.getEndTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getLinesHarmTarget(StatSubstationBizBaseParam param) {
|
||||
return this.baseMapper.getLinesHarmTarget(param.getIds(), param.getStartTime(), param.getEndTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RStatLimitTargetCountVO getGridDiagramTargetData(StatisticsBizBaseParam param) {
|
||||
List<RStatLimitTargetCountVO> sumTargetDetails = this.baseMapper.getSumTargetCountDayes(Arrays.asList(param.getId()),
|
||||
|
||||
@@ -74,89 +74,88 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
private final DistributionMonitorClient distributionMonitorClient;
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<RStatLimitTargetDPO> monitorIdsGetLimitTargetInfo(String date, List<String> monitorIds) {
|
||||
return rStatLimitTargetDMapper.selectList(new LambdaQueryWrapper<RStatLimitTargetDPO>().in(RStatLimitTargetDPO::getLineId,monitorIds)
|
||||
.eq(RStatLimitTargetDPO::getTime,date).gt(RStatLimitTargetDPO::getAllTime,0));
|
||||
return rStatLimitTargetDMapper.selectList(new LambdaQueryWrapper<RStatLimitTargetDPO>().in(RStatLimitTargetDPO::getLineId, monitorIds)
|
||||
.eq(RStatLimitTargetDPO::getTime, date).gt(RStatLimitTargetDPO::getAllTime, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RStatLimitTargetVO> monitorOverLimitDays(String date, String endDate, List<String> monitorIds) {
|
||||
return rStatLimitTargetDMapper.getSumTargetDetails(monitorIds,date,endDate);
|
||||
return rStatLimitTargetDMapper.getSumTargetDetails(monitorIds, date, endDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GridDiagramVO.LineData> getGridDiagramLineData(DeviceInfoParam.BusinessParam deviceInfoParam) {
|
||||
List<GridDiagramVO.LineData> info=new ArrayList<>();
|
||||
List<GridDiagramVO.LineData> info = new ArrayList<>();
|
||||
deviceInfoParam.setLineRunFlag(0);
|
||||
List<GeneralDeviceDTO> data = generalDeviceInfoClient.getPracticalRunDeviceInfo(deviceInfoParam).getData();
|
||||
List<GeneralDeviceDTO> list = data.stream().sorted(Comparator.comparing(x -> x.getLineIndexes().size(),Comparator.reverseOrder())).collect(Collectors.toList());
|
||||
List<GeneralDeviceDTO> list = data.stream().sorted(Comparator.comparing(x -> x.getLineIndexes().size(), Comparator.reverseOrder())).collect(Collectors.toList());
|
||||
//终端总数量
|
||||
List<String> devIds = list.stream().flatMap(x -> x.getDeviceIndexes().stream()).distinct().collect(Collectors.toList());
|
||||
//监测点总数量
|
||||
List<String> lineIds = list.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
|
||||
//超标监测点信息
|
||||
List<RStatLimitTargetVO> limitTargetList =new ArrayList<>();
|
||||
List<RStatIntegrityD> integrityList =new ArrayList<>();
|
||||
if(CollUtil.isNotEmpty(lineIds)){
|
||||
List<RStatLimitTargetVO> limitTargetList = new ArrayList<>();
|
||||
List<RStatIntegrityD> integrityList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(lineIds)) {
|
||||
limitTargetList = rStatLimitTargetDMapper.getSumTargetDetails(lineIds,
|
||||
DateUtil.beginOfDay(DateUtil.parse(deviceInfoParam.getSearchBeginTime())).toString(),
|
||||
DateUtil.endOfDay(DateUtil.parse(deviceInfoParam.getSearchEndTime())).toString());
|
||||
integrityList = lineIntegrityClient.getIntegrityByLineIds(lineIds, deviceInfoParam.getSearchBeginTime(), deviceInfoParam.getSearchEndTime()).getData();
|
||||
}
|
||||
//终端在线率
|
||||
List<RStatOnlineRateVO> onlineRateList =new ArrayList<>();
|
||||
if(CollUtil.isNotEmpty(devIds)){
|
||||
OnlineRateParam param=new OnlineRateParam();
|
||||
List<RStatOnlineRateVO> onlineRateList = new ArrayList<>();
|
||||
if (CollUtil.isNotEmpty(devIds)) {
|
||||
OnlineRateParam param = new OnlineRateParam();
|
||||
param.setIds(devIds);
|
||||
param.setStartTime(deviceInfoParam.getSearchBeginTime());
|
||||
param.setEndTime(deviceInfoParam.getSearchEndTime());
|
||||
onlineRateList = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData();
|
||||
}
|
||||
List<GeneralDeviceDTO> topList=new ArrayList<>();
|
||||
List<GeneralDeviceDTO> otherList=new ArrayList<>();
|
||||
if(ObjectUtil.isNotNull(deviceInfoParam.getStatisticalType())){
|
||||
List<GeneralDeviceDTO> topList = new ArrayList<>();
|
||||
List<GeneralDeviceDTO> otherList = new ArrayList<>();
|
||||
if (ObjectUtil.isNotNull(deviceInfoParam.getStatisticalType())) {
|
||||
SimpleDTO statisticalType = deviceInfoParam.getStatisticalType();
|
||||
if(!StatisticsEnum.POWER_NETWORK.getCode().equals(statisticalType.getCode())){
|
||||
if(list.size()>4){
|
||||
if (!StatisticsEnum.POWER_NETWORK.getCode().equals(statisticalType.getCode())) {
|
||||
if (list.size() > 4) {
|
||||
topList.addAll(list.subList(0, 4));
|
||||
otherList.addAll(list.subList(4, list.size()));
|
||||
}else{
|
||||
if(list.size()>3){
|
||||
} else {
|
||||
if (list.size() > 3) {
|
||||
topList.addAll(list.subList(0, 3));
|
||||
otherList.addAll(list.subList(3, list.size()));
|
||||
}else{
|
||||
if(list.size()>2){
|
||||
} else {
|
||||
if (list.size() > 2) {
|
||||
topList.addAll(list.subList(0, 2));
|
||||
otherList.addAll(list.subList(2, list.size()));
|
||||
}else{
|
||||
} else {
|
||||
topList.addAll(list.subList(0, 1));
|
||||
otherList.addAll(list.subList(1, list.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
topList.addAll(list);
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
topList.addAll(list);
|
||||
}
|
||||
GridDiagramVO.LineData lineData;
|
||||
for (GeneralDeviceDTO dto : topList) {
|
||||
lineData=new GridDiagramVO.LineData();
|
||||
lineData = new GridDiagramVO.LineData();
|
||||
lineData.setOrgId(dto.getIndex());
|
||||
lineData.setOrgName(dto.getName()+"("+dto.getLineIndexes().size()+")");
|
||||
onLineAndIntegrity(dto.getLineIndexes(), integrityList, dto.getDeviceIndexes(), onlineRateList,limitTargetList, lineData);
|
||||
lineData.setOrgName(dto.getName() + "(" + dto.getLineIndexes().size() + ")");
|
||||
onLineAndIntegrity(dto.getLineIndexes(), integrityList, dto.getDeviceIndexes(), onlineRateList, limitTargetList, lineData);
|
||||
info.add(lineData);
|
||||
}
|
||||
if(CollUtil.isNotEmpty(otherList)){
|
||||
if (CollUtil.isNotEmpty(otherList)) {
|
||||
List<String> otherDevIds = otherList.stream().flatMap(x -> x.getDeviceIndexes().stream()).distinct().collect(Collectors.toList());
|
||||
List<String> otherLineIds = otherList.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
|
||||
lineData=new GridDiagramVO.LineData();
|
||||
lineData = new GridDiagramVO.LineData();
|
||||
lineData.setOrgId("123456");
|
||||
lineData.setOrgName("其他("+otherLineIds.size()+")");
|
||||
onLineAndIntegrity(otherLineIds, integrityList, otherDevIds, onlineRateList,limitTargetList, lineData);
|
||||
lineData.setOrgName("其他(" + otherLineIds.size() + ")");
|
||||
onLineAndIntegrity(otherLineIds, integrityList, otherDevIds, onlineRateList, limitTargetList, lineData);
|
||||
info.add(lineData);
|
||||
}
|
||||
return info;
|
||||
@@ -166,7 +165,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
public List<GridDiagramVO.AreaData> getGridDiagramAreaData(DeviceInfoParam.BusinessParam param) {
|
||||
List<GridDiagramVO.AreaData> info = new ArrayList<>();
|
||||
param.setLineRunFlag(0);
|
||||
GridDiagramVO.AreaData areaData ;
|
||||
GridDiagramVO.AreaData areaData;
|
||||
//监测点总数
|
||||
List<GeneralDeviceDTO> data = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
|
||||
//在线
|
||||
@@ -183,11 +182,11 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
List<DeptGetSubStationDTO.Info> deptGetChildrenMoreDTOS = commTerminalGeneralClient.deptGetSubStationInfo(deptGetLineParam).getData();
|
||||
Map<String, DeptGetSubStationDTO.Info> deptLineMap = deptGetChildrenMoreDTOS.stream().collect(Collectors.toMap(DeptGetSubStationDTO.Info::getUnitId, Function.identity()));
|
||||
|
||||
StatSubstationBizBaseParam baseParam=new StatSubstationBizBaseParam();
|
||||
StatSubstationBizBaseParam baseParam = new StatSubstationBizBaseParam();
|
||||
baseParam.setIds(onLine);
|
||||
baseParam.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString());
|
||||
baseParam.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString());
|
||||
List<String> linesTarget=targetDService.getLinesTarget(baseParam);
|
||||
List<String> linesTarget = targetDService.getLinesTarget(baseParam);
|
||||
List<RStatIntegrityD> integrityDS = lineIntegrityClient.getIntegrityByLineIds(onLine,
|
||||
DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(),
|
||||
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()).getData();
|
||||
@@ -200,7 +199,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
areaData.setLineNum(datum.getLineIndexes().size());
|
||||
areaData.setLineList(datum.getLineIndexes());
|
||||
areaData.setDeviceNum(datum.getDeviceIndexes().size());
|
||||
if(onMap.containsKey(datum.getIndex())){
|
||||
if (onMap.containsKey(datum.getIndex())) {
|
||||
GeneralDeviceDTO dto = onMap.get(datum.getIndex());
|
||||
areaData.setOnlineNum(dto.getLineIndexes().size());
|
||||
areaData.setOnlineList(dto.getLineIndexes());
|
||||
@@ -221,7 +220,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
if (0 == param.getMonitorFlag()) {
|
||||
lineIds.addAll(x.getUnitChildrenList());
|
||||
onlineIds.addAll(x.getUnitChildrenList().stream().filter(d -> onLine.contains(d)).collect(Collectors.toList()));
|
||||
}else {
|
||||
} else {
|
||||
lineIds.addAll(x.getGwUnitChildrenList());
|
||||
onlineIds.addAll(x.getGwUnitChildrenList().stream().filter(d -> onLine.contains(d)).collect(Collectors.toList()));
|
||||
}
|
||||
@@ -268,21 +267,20 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
List<GeneralDeviceDTO> onData = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
|
||||
List<String> online = onData.stream().flatMap(x -> x.getLineIndexes().stream()).distinct().collect(Collectors.toList());
|
||||
|
||||
StatSubstationBizBaseParam baseParam=new StatSubstationBizBaseParam();
|
||||
StatSubstationBizBaseParam baseParam = new StatSubstationBizBaseParam();
|
||||
baseParam.setIds(online);
|
||||
baseParam.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString());
|
||||
baseParam.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString());
|
||||
List<String> linesTarget=targetDService.getLinesTarget(baseParam);
|
||||
List<String> linesTarget = targetDService.getLinesHarmTarget(baseParam);
|
||||
List<RStatIntegrityD> integrityDS = lineIntegrityClient.getIntegrityByLineIds(online,
|
||||
DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(),
|
||||
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()).getData();
|
||||
List<String> integrityDS0 = integrityDS.stream().filter(x -> 0.9 <= x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList());
|
||||
//在线率大于90的点
|
||||
List<String> integrityDS90 = integrityDS.stream().filter(x -> 0.9 <= x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList());
|
||||
|
||||
//合格-告警
|
||||
GridDiagramVO.RunData alarmData=new GridDiagramVO.RunData();
|
||||
List<String> lineAlarm = new ArrayList<>();
|
||||
lineAlarm.addAll(integrityDS0.stream().filter(d -> !linesTarget.contains(d)).distinct().collect(Collectors.toList()));
|
||||
List<String> alarm = lineAlarm.stream().distinct().collect(Collectors.toList());
|
||||
GridDiagramVO.RunData alarmData = new GridDiagramVO.RunData();
|
||||
List<String> alarm = integrityDS90.stream().filter(d -> !linesTarget.contains(d)).distinct().collect(Collectors.toList());
|
||||
List<String> us = line.stream().filter(x -> !alarm.contains(x)).distinct().collect(Collectors.toList());
|
||||
alarmData.setLineNumOne(alarm.size());
|
||||
alarmData.setLineListOne(alarm);
|
||||
@@ -291,7 +289,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
info.add(alarmData);
|
||||
|
||||
//在线-离线
|
||||
GridDiagramVO.RunData runData=new GridDiagramVO.RunData();
|
||||
GridDiagramVO.RunData runData = new GridDiagramVO.RunData();
|
||||
List<String> Offline = line.stream().filter(x -> !online.contains(x)).distinct().collect(Collectors.toList());
|
||||
runData.setLineNumOne(online.size());
|
||||
runData.setLineListOne(online);
|
||||
@@ -300,8 +298,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
info.add(runData);
|
||||
|
||||
//数据完整性≥90% - <90%
|
||||
GridDiagramVO.RunData integrityData=new GridDiagramVO.RunData();
|
||||
List<String> integrityDS90 = integrityDS.stream().filter(x -> 0.9 <= x.getIntegrityData()).map(RStatIntegrityD::getLineIndex).collect(Collectors.toList());
|
||||
GridDiagramVO.RunData integrityData = new GridDiagramVO.RunData();
|
||||
List<String> integrity = online.stream().filter(x -> !integrityDS90.contains(x)).distinct().collect(Collectors.toList());
|
||||
integrityData.setLineNumOne(integrityDS90.size());
|
||||
integrityData.setLineListOne(integrityDS90);
|
||||
@@ -311,7 +308,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
|
||||
|
||||
//电能质量指标未超标-超标
|
||||
GridDiagramVO.RunData targetData=new GridDiagramVO.RunData();
|
||||
GridDiagramVO.RunData targetData = new GridDiagramVO.RunData();
|
||||
List<String> integrityS = online.stream().filter(x -> !linesTarget.contains(x)).distinct().collect(Collectors.toList());
|
||||
targetData.setLineNumOne(integrityS.size());
|
||||
targetData.setLineListOne(integrityS);
|
||||
@@ -324,63 +321,63 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
|
||||
@Override
|
||||
public Page<MonitorLimitRateVO> pwMonitorLimitData(PwUserMonitorParam pwUserMonitorParam) {
|
||||
Page<MonitorLimitRateVO> pageResult = new Page<>(PageFactory.getPageNum(pwUserMonitorParam),PageFactory.getPageSize(pwUserMonitorParam));
|
||||
Page<MonitorLimitRateVO> pageResult = new Page<>(PageFactory.getPageNum(pwUserMonitorParam), PageFactory.getPageSize(pwUserMonitorParam));
|
||||
List<PwUserMonitorDataVO> pwUserMonitorDataVOList = distributionMonitorClient.getPwUserIds(pwUserMonitorParam).getData();
|
||||
if(CollUtil.isEmpty(pwUserMonitorDataVOList)){
|
||||
if (CollUtil.isEmpty(pwUserMonitorDataVOList)) {
|
||||
return pageResult;
|
||||
}
|
||||
List<String> ids = pwUserMonitorDataVOList.stream().map(PwUserMonitorDataVO::getId).collect(Collectors.toList());
|
||||
|
||||
QueryWrapper<RStatLimitRateDPO> queryWrapper = new QueryWrapper<>();
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for(int i = 2;i<26;i++){
|
||||
if(i == 25){
|
||||
for (int i = 2; i < 26; i++) {
|
||||
if (i == 25) {
|
||||
stringBuilder.append("sum(uharm_").append(i).append("_overtime) as uharm_").append(i).append("_overtime ");
|
||||
}else {
|
||||
} else {
|
||||
stringBuilder.append("sum(uharm_").append(i).append("_overtime) as uharm_").append(i).append("_overtime").append(",");
|
||||
}
|
||||
}
|
||||
queryWrapper.select("my_index lineId ,sum(all_time) all_time,sum(flicker_all_time) flicker_all_time,sum(freq_dev_overtime) freq_dev_overtime,sum(voltage_dev_overtime) voltage_dev_overtime,sum(ubalance_overtime) ubalance_overtime,sum(flicker_overtime) flicker_overtime,sum(uaberrance_overtime) uaberrance_overtime",stringBuilder.toString())
|
||||
.in("my_index",ids).between("time_id",pwUserMonitorParam.getSearchBeginTime(),pwUserMonitorParam.getSearchEndTime()).eq("phasic_type","T").groupBy("my_index");
|
||||
queryWrapper.select("my_index lineId ,sum(all_time) all_time,sum(flicker_all_time) flicker_all_time,sum(freq_dev_overtime) freq_dev_overtime,sum(voltage_dev_overtime) voltage_dev_overtime,sum(ubalance_overtime) ubalance_overtime,sum(flicker_overtime) flicker_overtime,sum(uaberrance_overtime) uaberrance_overtime", stringBuilder.toString())
|
||||
.in("my_index", ids).between("time_id", pwUserMonitorParam.getSearchBeginTime(), pwUserMonitorParam.getSearchEndTime()).eq("phasic_type", "T").groupBy("my_index");
|
||||
|
||||
if(StrUtil.isNotBlank(pwUserMonitorParam.getOrderBy())){
|
||||
if (StrUtil.isNotBlank(pwUserMonitorParam.getOrderBy())) {
|
||||
String sortBy = strToSql(pwUserMonitorParam.getSortBy());
|
||||
if(pwUserMonitorParam.getOrderBy().equals("asc")){
|
||||
queryWrapper.orderBy(true,true,sortBy);
|
||||
}else {
|
||||
queryWrapper.orderBy(true,false,sortBy);
|
||||
if (pwUserMonitorParam.getOrderBy().equals("asc")) {
|
||||
queryWrapper.orderBy(true, true, sortBy);
|
||||
} else {
|
||||
queryWrapper.orderBy(true, false, sortBy);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Page<RStatLimitRateDPO> temPage = rStatLimitRateDMapper.selectPage(new Page<>(PageFactory.getPageNum(pwUserMonitorParam),PageFactory.getPageSize(pwUserMonitorParam)),queryWrapper);
|
||||
Page<RStatLimitRateDPO> temPage = rStatLimitRateDMapper.selectPage(new Page<>(PageFactory.getPageNum(pwUserMonitorParam), PageFactory.getPageSize(pwUserMonitorParam)), queryWrapper);
|
||||
pageResult.setTotal(temPage.getTotal());
|
||||
if(CollUtil.isNotEmpty(temPage.getRecords())){
|
||||
Map<String,PwUserMonitorDataVO> map = pwUserMonitorDataVOList.stream().collect(Collectors.toMap(PwUserMonitorDataVO::getId,Function.identity()));
|
||||
if (CollUtil.isNotEmpty(temPage.getRecords())) {
|
||||
Map<String, PwUserMonitorDataVO> map = pwUserMonitorDataVOList.stream().collect(Collectors.toMap(PwUserMonitorDataVO::getId, Function.identity()));
|
||||
List<MonitorLimitRateVO> resultList = new ArrayList<>();
|
||||
for(RStatLimitRateDPO item : temPage.getRecords()){
|
||||
for (RStatLimitRateDPO item : temPage.getRecords()) {
|
||||
MonitorLimitRateVO monitorLimitRateVO = new MonitorLimitRateVO();
|
||||
PwUserMonitorDataVO pwUserMonitorDataVO = map.get(item.getLineId());
|
||||
BeanUtil.copyProperties(pwUserMonitorDataVO,monitorLimitRateVO);
|
||||
if(item.getAllTime() == 0){
|
||||
BeanUtil.copyProperties(pwUserMonitorDataVO, monitorLimitRateVO);
|
||||
if (item.getAllTime() == 0) {
|
||||
monitorLimitRateVO.setFreqDevOvertime(BigDecimal.valueOf(3.14159));
|
||||
monitorLimitRateVO.setUaberranceOvertime(BigDecimal.valueOf(3.14159));
|
||||
monitorLimitRateVO.setUbalanceOvertime(BigDecimal.valueOf(3.14159));
|
||||
monitorLimitRateVO.setVoltageDevOvertime(BigDecimal.valueOf(3.14159));
|
||||
}else {
|
||||
monitorLimitRateVO.setFreqDevOvertime(calculatePercentage(item.getFreqDevOvertime(),item.getAllTime()));
|
||||
monitorLimitRateVO.setUaberranceOvertime(calculatePercentage(item.getUaberranceOvertime(),item.getAllTime()));
|
||||
monitorLimitRateVO.setUbalanceOvertime(calculatePercentage(item.getUbalanceOvertime(),item.getAllTime()));
|
||||
monitorLimitRateVO.setVoltageDevOvertime(calculatePercentage(item.getVoltageDevOvertime(),item.getAllTime()));
|
||||
} else {
|
||||
monitorLimitRateVO.setFreqDevOvertime(calculatePercentage(item.getFreqDevOvertime(), item.getAllTime()));
|
||||
monitorLimitRateVO.setUaberranceOvertime(calculatePercentage(item.getUaberranceOvertime(), item.getAllTime()));
|
||||
monitorLimitRateVO.setUbalanceOvertime(calculatePercentage(item.getUbalanceOvertime(), item.getAllTime()));
|
||||
monitorLimitRateVO.setVoltageDevOvertime(calculatePercentage(item.getVoltageDevOvertime(), item.getAllTime()));
|
||||
}
|
||||
|
||||
if(item.getFlickerAllTime() == 0){
|
||||
if (item.getFlickerAllTime() == 0) {
|
||||
monitorLimitRateVO.setFlickerOvertime(BigDecimal.valueOf(3.14159));
|
||||
}else {
|
||||
monitorLimitRateVO.setFlickerOvertime(calculatePercentage(item.getFlickerOvertime(),item.getFlickerAllTime()));
|
||||
} else {
|
||||
monitorLimitRateVO.setFlickerOvertime(calculatePercentage(item.getFlickerOvertime(), item.getFlickerAllTime()));
|
||||
}
|
||||
|
||||
setUharmOvertimeRatios(item,monitorLimitRateVO);
|
||||
setUharmOvertimeRatios(item, monitorLimitRateVO);
|
||||
resultList.add(monitorLimitRateVO);
|
||||
}
|
||||
pageResult.setRecords(resultList);
|
||||
@@ -393,7 +390,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
* 计算百分比,结果不超过100
|
||||
*
|
||||
* @param flickerOvertime 闪烁超时时间
|
||||
* @param flickerAllTime 总闪烁时间
|
||||
* @param flickerAllTime 总闪烁时间
|
||||
* @return 计算的百分比(如果结果超过100,则返回100)
|
||||
*/
|
||||
public BigDecimal calculatePercentage(Integer flickerOvertime, Integer flickerAllTime) {
|
||||
@@ -417,7 +414,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
@Override
|
||||
public List<PwLimitDataVO> pwMonitorLimitDataRange(PwUserMonitorParam pwUserMonitorParam) {
|
||||
List<PwLimitDataVO> result = new ArrayList<>();
|
||||
if(CollUtil.isEmpty(pwUserMonitorParam.getIds())){
|
||||
if (CollUtil.isEmpty(pwUserMonitorParam.getIds())) {
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -426,81 +423,77 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
LocalDate startDate = LocalDate.parse(pwUserMonitorParam.getSearchBeginTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate endDate = LocalDate.parse(pwUserMonitorParam.getSearchEndTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN));
|
||||
|
||||
lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId,RStatLimitTargetDPO::getTime,RStatLimitTargetDPO::getAllTime).in(RStatLimitTargetDPO::getLineId,pwUserMonitorParam.getIds());
|
||||
lambdaQueryWrapper.between(RStatLimitTargetDPO::getTime,pwUserMonitorParam.getSearchBeginTime(),pwUserMonitorParam.getSearchEndTime());
|
||||
List<RStatLimitTargetDPO> rStatLimitTargetDPOList = rStatLimitTargetDMapper.selectList(lambdaQueryWrapper);
|
||||
if(CollUtil.isNotEmpty(rStatLimitTargetDPOList)){
|
||||
Map<String,List<RStatLimitTargetDPO>> map = rStatLimitTargetDPOList.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId));
|
||||
processDateRange(startDate,endDate,map,result);
|
||||
}
|
||||
lambdaQueryWrapper.select(RStatLimitTargetDPO::getLineId, RStatLimitTargetDPO::getTime, RStatLimitTargetDPO::getAllTime).in(RStatLimitTargetDPO::getLineId, pwUserMonitorParam.getIds());
|
||||
lambdaQueryWrapper.between(RStatLimitTargetDPO::getTime, pwUserMonitorParam.getSearchBeginTime(), pwUserMonitorParam.getSearchEndTime());
|
||||
List<RStatLimitTargetDPO> rStatLimitTargetDPOList = rStatLimitTargetDMapper.selectList(lambdaQueryWrapper);
|
||||
if (CollUtil.isNotEmpty(rStatLimitTargetDPOList)) {
|
||||
Map<String, List<RStatLimitTargetDPO>> map = rStatLimitTargetDPOList.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId));
|
||||
processDateRange(startDate, endDate, map, result);
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void processDateRange(LocalDate startDate, LocalDate endDate,Map<String,List<RStatLimitTargetDPO>> map,List<PwLimitDataVO> result) {
|
||||
map.forEach((lineKey,list)->{
|
||||
PwLimitDataVO pwLimitDataVO = new PwLimitDataVO();
|
||||
pwLimitDataVO.setLineId(lineKey);
|
||||
pwLimitDataVO.setName(lineKey);
|
||||
List<PwLimitDataVO.LimitDetail> detailList = new ArrayList<>();
|
||||
public void processDateRange(LocalDate startDate, LocalDate endDate, Map<String, List<RStatLimitTargetDPO>> map, List<PwLimitDataVO> result) {
|
||||
map.forEach((lineKey, list) -> {
|
||||
PwLimitDataVO pwLimitDataVO = new PwLimitDataVO();
|
||||
pwLimitDataVO.setLineId(lineKey);
|
||||
pwLimitDataVO.setName(lineKey);
|
||||
List<PwLimitDataVO.LimitDetail> detailList = new ArrayList<>();
|
||||
|
||||
if (startDate.getYear() == endDate.getYear() && startDate.getMonth() == endDate.getMonth()) {
|
||||
Map<LocalDate, RStatLimitTargetDPO> targetDPOMap = list.stream().collect(Collectors.toMap(RStatLimitTargetDPO::getTime, Function.identity()));
|
||||
// 如果在同一个月,则遍历每一天
|
||||
for (LocalDate date = startDate; !date.isAfter(endDate.minusDays(1)); date = date.plusDays(1)) {
|
||||
PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail();
|
||||
if (targetDPOMap.containsKey(date)) {
|
||||
limitDetail.setLimitFlag(targetDPOMap.get(date).getAllTime() > 0 ? 2 : 1);
|
||||
} else {
|
||||
limitDetail.setLimitFlag(0);
|
||||
}
|
||||
limitDetail.setDay(date.getDayOfMonth() +"日");
|
||||
detailList.add(limitDetail);
|
||||
if (startDate.getYear() == endDate.getYear() && startDate.getMonth() == endDate.getMonth()) {
|
||||
Map<LocalDate, RStatLimitTargetDPO> targetDPOMap = list.stream().collect(Collectors.toMap(RStatLimitTargetDPO::getTime, Function.identity()));
|
||||
// 如果在同一个月,则遍历每一天
|
||||
for (LocalDate date = startDate; !date.isAfter(endDate.minusDays(1)); date = date.plusDays(1)) {
|
||||
PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail();
|
||||
if (targetDPOMap.containsKey(date)) {
|
||||
limitDetail.setLimitFlag(targetDPOMap.get(date).getAllTime() > 0 ? 2 : 1);
|
||||
} else {
|
||||
limitDetail.setLimitFlag(0);
|
||||
}
|
||||
limitDetail.setDay(date.getDayOfMonth() + "日");
|
||||
detailList.add(limitDetail);
|
||||
}
|
||||
|
||||
}else {
|
||||
Map<String,List<RStatLimitTargetDPO>> targetDPOMap = list.stream().collect(Collectors.groupingBy(it->LocalDateTimeUtil.format(it.getTime(),DatePattern.NORM_MONTH_PATTERN)));
|
||||
// 如果在同一个月,则遍历每一天
|
||||
} else {
|
||||
Map<String, List<RStatLimitTargetDPO>> targetDPOMap = list.stream().collect(Collectors.groupingBy(it -> LocalDateTimeUtil.format(it.getTime(), DatePattern.NORM_MONTH_PATTERN)));
|
||||
// 如果在同一个月,则遍历每一天
|
||||
|
||||
// 如果不在同一个月,则遍历每个月(这里简化处理,只打印月份和年份)
|
||||
LocalDate currentDate = startDate;
|
||||
while (!currentDate.isAfter(endDate)) {
|
||||
String date = LocalDateTimeUtil.format(currentDate,DatePattern.NORM_MONTH_PATTERN);
|
||||
// 如果不在同一个月,则遍历每个月(这里简化处理,只打印月份和年份)
|
||||
LocalDate currentDate = startDate;
|
||||
while (!currentDate.isAfter(endDate)) {
|
||||
String date = LocalDateTimeUtil.format(currentDate, DatePattern.NORM_MONTH_PATTERN);
|
||||
|
||||
PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail();
|
||||
if(targetDPOMap.containsKey(date)){
|
||||
boolean res = targetDPOMap.get(date).stream().anyMatch(item->item.getAllTime()>0);
|
||||
limitDetail.setLimitFlag(res ? 2:1);
|
||||
}else {
|
||||
limitDetail.setLimitFlag(0);
|
||||
}
|
||||
limitDetail.setDay(currentDate.getMonthValue() +"月");
|
||||
detailList.add(limitDetail);
|
||||
PwLimitDataVO.LimitDetail limitDetail = new PwLimitDataVO.LimitDetail();
|
||||
if (targetDPOMap.containsKey(date)) {
|
||||
boolean res = targetDPOMap.get(date).stream().anyMatch(item -> item.getAllTime() > 0);
|
||||
limitDetail.setLimitFlag(res ? 2 : 1);
|
||||
} else {
|
||||
limitDetail.setLimitFlag(0);
|
||||
}
|
||||
limitDetail.setDay(currentDate.getMonthValue() + "月");
|
||||
detailList.add(limitDetail);
|
||||
|
||||
|
||||
// 跳到下一个月的第一天(注意:这里简化了处理,没有实际遍历这个月的每一天)
|
||||
currentDate = currentDate.plusMonths(1).withDayOfMonth(1);
|
||||
|
||||
// 跳到下一个月的第一天(注意:这里简化了处理,没有实际遍历这个月的每一天)
|
||||
currentDate = currentDate.plusMonths(1).withDayOfMonth(1);
|
||||
|
||||
// 如果当前月已经超过了结束月,则退出循环
|
||||
if (currentDate.isAfter(endDate)) {
|
||||
break;
|
||||
}
|
||||
// 如果当前月已经超过了结束月,则退出循环
|
||||
if (currentDate.isAfter(endDate)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
pwLimitDataVO.setDetailList(detailList);
|
||||
result.add(pwLimitDataVO);
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
pwLimitDataVO.setDetailList(detailList);
|
||||
result.add(pwLimitDataVO);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public String strToSql(String originalString){
|
||||
public String strToSql(String originalString) {
|
||||
StringBuilder modifiedStringBuilder = new StringBuilder();
|
||||
|
||||
// 标记是否需要在下一个字符前添加下划线
|
||||
@@ -569,7 +562,7 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
monitorLimitRateVO.getClass().getMethod(setterName, BigDecimal.class)
|
||||
.invoke(monitorLimitRateVO, BigDecimal.valueOf(3.14159));
|
||||
} else {
|
||||
BigDecimal ratio = BigDecimal.valueOf((double) uharmOvertime / allTime*100)
|
||||
BigDecimal ratio = BigDecimal.valueOf((double) uharmOvertime / allTime * 100)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
ratio = ratio.compareTo(BigDecimal.valueOf(100)) > 0 ? BigDecimal.valueOf(100) : ratio;
|
||||
monitorLimitRateVO.getClass().getMethod(setterName, BigDecimal.class)
|
||||
@@ -583,13 +576,13 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
}
|
||||
|
||||
|
||||
private void onLineAndIntegrity(List<String> lineIds, List<RStatIntegrityD> onIntegrityByIds, List<String> devIds, List<RStatOnlineRateVO> onlineRateByDevIds, List<RStatLimitTargetVO> limitTargetList, GridDiagramVO.LineData lineData) {
|
||||
private void onLineAndIntegrity(List<String> lineIds, List<RStatIntegrityD> onIntegrityByIds, List<String> devIds, List<RStatOnlineRateVO> onlineRateByDevIds, List<RStatLimitTargetVO> limitTargetList, GridDiagramVO.LineData lineData) {
|
||||
//监测完整率
|
||||
List<RStatIntegrityD> integrityDS = onIntegrityByIds.stream().filter(x -> lineIds.contains(x.getLineIndex())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(integrityDS)) {
|
||||
double realTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getRealTime).sum();
|
||||
double dueTime = integrityDS.stream().mapToDouble(RStatIntegrityD::getDueTime).sum();
|
||||
lineData.setIntegrityRate(Math.min(NumberUtil.round(realTime * 100.0 / dueTime, 2).floatValue(),100));
|
||||
lineData.setIntegrityRate(Math.min(NumberUtil.round(realTime * 100.0 / dueTime, 2).floatValue(), 100));
|
||||
} else {
|
||||
lineData.setIntegrityRate(0.0f);
|
||||
}
|
||||
@@ -598,14 +591,14 @@ public class RStatLimitServiceImpl implements RStatLimitService {
|
||||
if (CollUtil.isNotEmpty(onlineRateDS)) {
|
||||
double onlineTime = onlineRateDS.stream().mapToDouble(RStatOnlineRateVO::getOnlineMin).sum();
|
||||
double offlineTime = onlineRateDS.stream().mapToDouble(RStatOnlineRateVO::getOfflineMin).sum();
|
||||
lineData.setOnLineRate(Math.min(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2).floatValue(),100));
|
||||
lineData.setOnLineRate(Math.min(NumberUtil.round(onlineTime * 100.0 / (onlineTime + offlineTime), 2).floatValue(), 100));
|
||||
} else {
|
||||
lineData.setOnLineRate(0.0f);
|
||||
}
|
||||
//监测点超标占比
|
||||
List<RStatLimitTargetVO> limitTarget = limitTargetList.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
|
||||
if (CollUtil.isNotEmpty(limitTarget)) {
|
||||
long count = limitTarget.stream().filter(o->o.getAllOvertime() > 0 || o.getFlickerAllTime()>0).count();
|
||||
long count = limitTarget.stream().filter(o -> o.getAllOvertime() > 0 || o.getFlickerAllTime() > 0).count();
|
||||
lineData.setOutOfStandardRate(NumberUtil.round(count * 100.0 / lineIds.size(), 2).floatValue());
|
||||
} else {
|
||||
lineData.setOutOfStandardRate(0.0f);
|
||||
|
||||
Reference in New Issue
Block a user