代码修改

This commit is contained in:
2023-03-29 09:44:32 +08:00
parent 3b00fb2d59
commit 0a5573804c
20 changed files with 276 additions and 31 deletions

View File

@@ -79,6 +79,12 @@ public class DeviceInfoParam implements Serializable {
@Range(min = 0, max = 2, message = "电网侧标识" + ValidMessage.PARAM_FORMAT_ERROR)
private Integer powerFlag;
/**
* 0-极重要
* 1-重要
* 2-普通
* 3-不重要
*/
@ApiModelProperty("监测点等级")
private String lineGrade;

View File

@@ -0,0 +1,35 @@
package com.njcn.device.pq.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 数据完整性日表
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
@Data
@TableName("r_stat_integrity_d")
public class RStatIntegrityD {
private static final long serialVersionUID = 1L;
private LocalDateTime timeId;
private String lineIndex;
private Integer dueTime;
private Integer realTime;
}

View File

@@ -0,0 +1,34 @@
package com.njcn.device.pq.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 在线率日表
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
@Getter
@Setter
@TableName("r_stat_onlinerate_d")
public class RStatOnlinerateD extends BaseEntity {
private static final long serialVersionUID = 1L;
private LocalDateTime timeId;
private String devIndex;
private Integer onlineMin;
private Integer offlineMin;
}

View File

@@ -5,6 +5,7 @@ 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.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
@@ -33,7 +34,7 @@ import java.util.List;
@RequestMapping("/terminalOnlineRateData")
@RequiredArgsConstructor
public class TerminalOnlineRateDataController extends BaseController {
private final TerminalOnlineRateDataService terminalOnlineRateDataService;
/**

View File

@@ -0,0 +1,17 @@
package com.njcn.device.pq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
/**
* <p>
* 数据完整性日表 Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
public interface RStatIntegrityDMapper extends BaseMapper<RStatIntegrityD> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.device.pq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
/**
* <p>
* 在线率日表 Mapper 接口
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
public interface RStatOnlinerateDMapper extends BaseMapper<RStatOnlinerateD> {
}

View File

@@ -19,7 +19,7 @@ public interface TerminalMaintainMapper {
* @author cdf
* @date 2022/5/11
*/
List<TerminalMaintainVO> getTerminalDevInfo();
List<TerminalMaintainVO> getTerminalDevInfo(@Param("devIds")List<String> devIds);
/**
* 获取区域

View File

@@ -1,11 +1,13 @@
package com.njcn.device.pq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.TerminalOnlineRateData;
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -59,4 +61,13 @@ public interface TerminalOnlineRateDataMapper extends BaseMapper<TerminalOnlineR
@Param("searchBeginTime") String searchBeginTime,
@Param("searchEndTime") String searchEndTime);
/**
* 根据装置获取装置在线率
* @author cdf
* @date 2023/3/28
*/
List<TerminalOnlineRateData> getDevOnlineByDevIds(@Param("devIds")List<String> devIds, @Param("startTime")String startTime,@Param("endTime")String endTime);
}

View File

@@ -26,7 +26,10 @@ FROM
LEFT JOIN cld_version g on f.version_id = g.id
LEFT JOIN
(select * from cld_month_flow where date_format(time_id,'%Y-%m' ) = date_format(CURRENT_TIME(),'%Y-%m')) mo on a.id = mo.line_id
where b.dev_model = 1
where a.id in
<foreach collection="devIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="getGdAndSubList" resultType="TerminalMaintainVO">

View File

@@ -169,4 +169,16 @@
and date_format(line.update_Time,'%y%m%d') &lt;= date_format(#{searchEndTime},'%y%m%d')
</if>
</select>
<select id="getDevOnlineByDevIds" resultType="TerminalOnlineRateData">
select dev_index,avg(offline_min) offlineRate
from r_stat_onlinerate_d
where dev_index in
<foreach collection="devIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
and time_id between #{startTime} and #{endTime}
group by dev_index
</select>
</mapper>

View File

@@ -0,0 +1,17 @@
package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
/**
* <p>
* 数据完整性日表 服务类
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
public interface IRStatIntegrityDService extends IService<RStatIntegrityD> {
}

View File

@@ -0,0 +1,17 @@
package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
/**
* <p>
* 在线率日表 服务类
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
public interface IRStatOnlinerateDService extends IService<RStatOnlinerateD> {
}

View File

@@ -1,5 +1,6 @@
package com.njcn.device.pq.service;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.TerminalMainQueryParam;
import com.njcn.device.pq.pojo.param.TerminalParam;
import com.njcn.device.pq.pojo.vo.TerminalMaintainVO;

View File

@@ -1,5 +1,6 @@
package com.njcn.device.pq.service;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;

View File

@@ -0,0 +1,21 @@
package com.njcn.device.pq.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pq.mapper.RStatIntegrityDMapper;
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
import com.njcn.device.pq.service.IRStatIntegrityDService;
import org.springframework.stereotype.Service;
/**
* <p>
* 数据完整性日表 服务实现类
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
@Service
public class RStatIntegrityDServiceImpl extends ServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
}

View File

@@ -0,0 +1,21 @@
package com.njcn.device.pq.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pq.mapper.RStatOnlinerateDMapper;
import com.njcn.device.pq.pojo.po.RStatOnlinerateD;
import com.njcn.device.pq.service.IRStatOnlinerateDService;
import org.springframework.stereotype.Service;
/**
* <p>
* 在线率日表 服务实现类
* </p>
*
* @author hongawen
* @since 2023-03-28
*/
@Service
public class RStatOnlinerateDServiceImpl extends ServiceImpl<RStatOnlinerateDMapper, RStatOnlinerateD> implements IRStatOnlinerateDService {
}

View File

@@ -1,10 +1,14 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.enums.DeviceResponseEnum;
import com.njcn.device.pq.mapper.TerminalMaintainMapper;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.TerminalMainQueryParam;
import com.njcn.device.pq.pojo.param.TerminalParam;
import com.njcn.device.pq.pojo.po.DevMeal;
@@ -15,12 +19,16 @@ import com.njcn.device.pq.service.IDevMealService;
import com.njcn.device.pq.service.IDevStrategyService;
import com.njcn.device.pq.service.IDeviceService;
import com.njcn.device.pq.service.TerminalMaintainService;
import com.njcn.system.pojo.enums.StatisticsEnum;
import com.njcn.user.api.DeptFeignClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -42,34 +50,51 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
private final IDevStrategyService iDevStrategyService;
private final GeneralDeviceService generalDeviceService;
private final DeptFeignClient deptFeignClient;
@Override
public List<TerminalMaintainVO> getTerminalMainList(TerminalMainQueryParam terminalMainQueryParam) {
List<TerminalMaintainVO> devList = terminalMaintainMapper.getTerminalDevInfo();
if(CollectionUtil.isEmpty(devList)){
throw new BusinessException(DeviceResponseEnum.DEVICE_EMPTY);
}
List<String> subIndexes = devList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList());
List<TerminalMaintainVO> subList = terminalMaintainMapper.getPqLineGdAndSubList(subIndexes);
if(CollectionUtil.isEmpty(subList)){
throw new BusinessException(DeviceResponseEnum.SUB_NO);
}
List<String> gdIds = subList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList());
List<TerminalMaintainVO> gdList = terminalMaintainMapper.getPqLineGdAndSubList(gdIds);
if(CollectionUtil.isEmpty(gdList)){
throw new BusinessException(DeviceResponseEnum.GD_NO);
}
List<String> proIds = gdList.stream().map(TerminalMaintainVO::getPid).collect(Collectors.toList());
List<TerminalMaintainVO> proList = terminalMaintainMapper.getPqLineProvList(proIds);
if(CollectionUtil.isEmpty(proList)){
throw new BusinessException(DeviceResponseEnum.PROVINCE_EMPTY);
}
List<TerminalMaintainVO> resList = new ArrayList<>();
List<TerminalMaintainVO> subListTem = subList.stream().peek(item->item.setChildren(getChildren(item.getId(),devList))).collect(Collectors.toList());
List<TerminalMaintainVO> gdListTem = gdList.stream().peek(item->item.setChildren(getChildren(item.getId(),subListTem))).collect(Collectors.toList());
return proList.stream().peek(item->item.setChildren(getChildren(item.getId(),gdListTem))).collect(Collectors.toList());
DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
deviceInfoParam.setLineGrade(terminalMainQueryParam.getLineGrade());
deviceInfoParam.setDeptIndex(deptFeignClient.getRootDept().getData().getId());
SimpleDTO simpleDTO = new SimpleDTO();
simpleDTO.setCode(StatisticsEnum.POWER_NETWORK.getCode());
deviceInfoParam.setStatisticalType(simpleDTO);
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Objects.isNull(terminalMainQueryParam.getRunFlag())?null: CollUtil.newArrayList(terminalMainQueryParam.getRunFlag()), CollUtil.newArrayList(1));
if(CollectionUtil.isNotEmpty(generalDeviceDTOList)){
for(GeneralDeviceDTO generalDeviceDTO:generalDeviceDTOList){
List<String> devIds = generalDeviceDTO.getDeviceIndexes();
if (CollectionUtils.isEmpty(devIds)) {
continue;
}
TerminalMaintainVO terminalMaintainVO = new TerminalMaintainVO();
terminalMaintainVO.setName(generalDeviceDTO.getName());
terminalMaintainVO.setId(generalDeviceDTO.getIndex());
terminalMaintainVO.setLevel(1);
List<TerminalMaintainVO> devList = terminalMaintainMapper.getTerminalDevInfo(devIds);
List<TerminalMaintainVO> subList = terminalMaintainMapper.getPqLineGdAndSubList(generalDeviceDTO.getSubIndexes());
List<TerminalMaintainVO> gdList = terminalMaintainMapper.getPqLineGdAndSubList(generalDeviceDTO.getGdIndexes());
dealTerminalData(subList,devList);
dealTerminalData(gdList,subList);
terminalMaintainVO.setChildren(gdList);
resList.add(terminalMaintainVO);
}
}
return resList;
}
List<TerminalMaintainVO> dealTerminalData(List<TerminalMaintainVO> parent,List<TerminalMaintainVO> children){
return parent.stream().peek(item->item.setChildren(getChildren(item.getId(),children))).collect(Collectors.toList());
}
@Override

View File

@@ -1,7 +1,11 @@
package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.graphbuilder.math.func.AvgFunction;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pq.api.AlarmClient;
import com.njcn.device.pq.enums.DeviceResponseEnum;
@@ -9,9 +13,11 @@ import com.njcn.device.pq.enums.LineBaseEnum;
import com.njcn.device.pq.mapper.TerminalOnlineRateDataMapper;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.TerminalOnlineRateDataParam;
import com.njcn.device.pq.pojo.po.TerminalOnlineRateData;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import com.njcn.device.pq.pojo.vo.TerminalOnlineRateDataVO;
import com.njcn.device.pq.service.IRStatOnlinerateDService;
import com.njcn.device.pq.service.TerminalOnlineRateDataService;
import com.njcn.device.pq.utils.DataStatisticsUtil;
import com.njcn.influxdb.param.InfluxDBPublicParam;
@@ -29,6 +35,8 @@ import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -55,6 +63,8 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
private final DicDataFeignClient dicDataFeignClient;
private final IRStatOnlinerateDService irStatOnlinerateDService;
/**
* 终端在线率列表
*
@@ -101,10 +111,7 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
List<String> devIds = deviceList.stream().map(TerminalOnlineRateDataVO::getId).collect(Collectors.toList());
// 通过工具类得到查询influxdb的条件相当于mysql中的in
StringBuilder devForInfluxdb = InfluxDBCommUtils.assToInfluxParamDev(devIds);
// 通过装置id
List<TerminalOnlineRateData> terminalOnlineRateData = getPercentageOfOnlineRate(terminalOnlineRateDataParam.getSearchBeginTime(), terminalOnlineRateDataParam.getSearchEndTime(), devForInfluxdb);
List<TerminalOnlineRateData> terminalOnlineRateData = terminalOnlineRateDataMapper.getDevOnlineByDevIds(devIds,terminalOnlineRateDataParam.getSearchBeginTime(),terminalOnlineRateDataParam.getSearchEndTime());
// 处理终端在线率
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData, deviceList);