diff --git a/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java new file mode 100644 index 0000000..f6e5fbe --- /dev/null +++ b/app-cloud/app-cloud-api/src/main/java/com/njcn/cloud/pojo/vo/AdminStatistic/StaticInfo.java @@ -0,0 +1,53 @@ +package com.njcn.cloud.pojo.vo.AdminStatistic; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +/** + * @Description: 终端在线率统计 + * @Author: wr + * @Date: 2024/1/5 10:44 + */ +@Data +public class StaticInfo { + + @ApiModelProperty("统计开始时间") + private Date timeStart; + + @ApiModelProperty("统计结束时间") + private Date timeEnd; + + @ApiModelProperty("终端总在线率") + private Float onlineRatez; + + @ApiModelProperty("终端通讯异常数") + private Long comError; + + @ApiModelProperty("各终端信息集合") + private List list; + + + @Data + public static class DevStatic { + + @ApiModelProperty("终端编号") + private String devIndex; + @ApiModelProperty("终端名称") + private String devName; + @ApiModelProperty("ip") + private String ip; + @ApiModelProperty("在线率") + private Float onlineRate; + @ApiModelProperty("供电公司") + private String gdName; + @ApiModelProperty("变电站信息") + private String subName; + @ApiModelProperty("最后更新时间") + private LocalDateTime timeId; + } + +} \ No newline at end of file diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/AdminStatistic/StaticController.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/AdminStatistic/StaticController.java new file mode 100644 index 0000000..2688305 --- /dev/null +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/AdminStatistic/StaticController.java @@ -0,0 +1,42 @@ +package com.njcn.cloud.controller.AdminStatistic; + +import com.njcn.cloud.pojo.vo.AdminStatistic.StaticInfo; +import com.njcn.cloud.service.AdminStatistic.StaticService; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + + +@RestController +@RequestMapping("/dataIntegrity") +@Api(tags = "统计装置在线率接口") +@RequiredArgsConstructor +public class StaticController extends BaseController { + + private final StaticService staticService; + + + /** + * 统计数据完整性率 + */ + @PostMapping("/getDevStatus") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "query"), + }) + @ApiOperation(value = "统计装置在线率入口", notes = "统计装置在线率列表") + public HttpResult getDevStatus(String userId) { + String methodDescribe = getMethodDescribe("getDevStatus"); + StaticInfo aStatic = staticService.getStatic(userId); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, aStatic, methodDescribe); + } +} \ No newline at end of file diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java index 60479ba..856ca85 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/controller/task/SteadyMsgTask.java @@ -146,11 +146,9 @@ public class SteadyMsgTask { */ public void statisticsData(String time, String startTime, String endTime) { LocalDateTime timeDay = LocalDateTimeUtil.parse(time, DatePattern.NORM_DATE_PATTERN); - List users = userFeignClient.getUserByIdList(new ArrayList<>()).getData(); -// List users = userFeignClient.getUserByIdList(Arrays.asList("5434cc08dc9d4b7cba5e856de52f0dda")).getData(); +// List users = userFeignClient.getUserByIdList(new ArrayList<>()).getData(); + List users = userFeignClient.getUserByIdList(Arrays.asList("5434cc08dc9d4b7cba5e856de52f0dda")).getData(); if (CollUtil.isNotEmpty(users)) { - StatSubstationBizBaseParam baseParam; - EventCountParam param; for (User user : users) { //根据单位获取投运监测点 List lineIds = generalDeviceInfoClient.deptGetRunLine(user.getDeptId()).getData(); @@ -199,7 +197,7 @@ public class SteadyMsgTask { param = new EventCountParam(); param.setIds(Collections.singletonList(lineId)); List detailPOList = eventDetailFeignClient.getAppEventDetailLtAmplitude(param).getData(); - if (CollUtil.isNotEmpty(limitRates)) { + if (CollUtil.isNotEmpty(detailPOList)) { dates.addAll(detailPOList.stream().map(x -> x.getStartTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))) .distinct().collect(Collectors.toList())); } @@ -230,7 +228,7 @@ public class SteadyMsgTask { param.setEndTime(endTime); //获取特征增幅小于0.9的暂态信息 List detailPOList = eventDetailFeignClient.getAppEventDetailLtAmplitude(param).getData(); - saveStatistics(lineId, timeDay, detailPOList.size(), limitRates.get(0)); + saveStatistics(lineId, timeDay, detailPOList.size(), CollUtil.isNotEmpty(limitRates)?limitRates.get(0):null); return detailPOList.stream().map(RmpEventDetailPO::getEventId).distinct().collect(Collectors.toList()); } diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/AdminStatistic/StaticService.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/AdminStatistic/StaticService.java new file mode 100644 index 0000000..5104bb9 --- /dev/null +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/AdminStatistic/StaticService.java @@ -0,0 +1,21 @@ +package com.njcn.cloud.service.AdminStatistic; + + +import com.njcn.cloud.pojo.vo.AdminStatistic.StaticInfo; + + +/** + * @description: StaticService + * @author: denghuajun + * @time: 2020-01-02 10:07:01 + **/ + +public interface StaticService { + + /** + * 统计数据终端在线率统计 + * @param userID + * @return + */ + StaticInfo getStatic(String userID); +} diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AdminStatistic/StaticServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AdminStatistic/StaticServiceImpl.java new file mode 100644 index 0000000..b5791dc --- /dev/null +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AdminStatistic/StaticServiceImpl.java @@ -0,0 +1,83 @@ +package com.njcn.cloud.service.impl.AdminStatistic; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateUtil; +import com.njcn.cloud.enums.app.UserCodeEnum; +import com.njcn.cloud.pojo.vo.AdminStatistic.StaticInfo; +import com.njcn.cloud.service.AdminStatistic.StaticService; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.device.pq.api.GeneralDeviceInfoClient; +import com.njcn.device.pq.pojo.param.OnlineRateParam; +import com.njcn.device.pq.pojo.vo.DevDetail; +import com.njcn.device.pq.pojo.vo.RStatOnlinerateVO; +import com.njcn.user.api.UserFeignClient; +import com.njcn.user.pojo.po.User; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @description: StaticServiceImpl + * @author: denghuajun + * @time: 2020-01-02 10:07:27 + **/ +@Service +@RequiredArgsConstructor +public class StaticServiceImpl implements StaticService { + + private final GeneralDeviceInfoClient generalDeviceInfoClient; + private final UserFeignClient userFeignClient; + + + @Override + public StaticInfo getStatic(String userID) { + Date date = new Date(); + //开始时间 +// Date startTime = DateUtil.beginOfDay(date); + Date startTime = DateUtil.offset(date, DateField.YEAR,-3); + //根据用户id获取用户部门 + List users = userFeignClient.getUserByIdList(Collections.singletonList(userID)).getData(); + if(CollUtil.isEmpty(users)){ + throw new BusinessException(UserCodeEnum.NO_USER.getMsg()); + } + //获取终端ids + List devIds = generalDeviceInfoClient.deptGetRunDev(users.get(0).getDeptId()).getData(); + //获取总终端在线率 + OnlineRateParam param=new OnlineRateParam(); + param.setIds(devIds); + param.setStartTime(startTime.toString()); + param.setEndTime(date.toString()); + Float data = generalDeviceInfoClient.getTotalOnlineRates(param).getData(); + //获取终端信息 + List devDetails = generalDeviceInfoClient.getDevInfoByIds(new ArrayList<>()).getData(); + //获取终端在线率 + List onlineRates = generalDeviceInfoClient.getOnlineRateByDevIds(param).getData(); + //异常终端数据 + long count = devDetails.stream().filter(x -> 0==x.getComFlag()).count(); + StaticInfo info=new StaticInfo(); + info.setTimeStart(startTime); + info.setTimeEnd(date); + info.setOnlineRatez(data); + info.setComError(count); + List list=new ArrayList<>(); + Map onlineRateMap = onlineRates.stream().collect(Collectors.toMap(RStatOnlinerateVO::getDevIndex, RStatOnlinerateVO::getOnlineRate)); + StaticInfo.DevStatic devStatic; + for (DevDetail devDetail : devDetails) { + devStatic=new StaticInfo.DevStatic(); + devStatic.setDevIndex(devDetail.getDevIndex()); + devStatic.setDevName(devDetail.getDevName()); + devStatic.setIp(devDetail.getIp()); + devStatic.setOnlineRate(onlineRateMap.get(devDetail.getDevIndex())); + devStatic.setGdName(devDetail.getGdName()); + devStatic.setSubName(devDetail.getBdzName()); + devStatic.setTimeId(devDetail.getTimeID()); + list.add(devStatic); + } + info.setList(list); + return info; + } + +} \ No newline at end of file diff --git a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java index 08081bc..216301d 100644 --- a/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java +++ b/app-cloud/app-cloud-boot/src/main/java/com/njcn/cloud/service/impl/AppStatisticsServiceImpl.java @@ -291,7 +291,6 @@ public class AppStatisticsServiceImpl extends ServiceImpl eventDetailList = eventDetailFeignClient.getAppEventDetailLtAmplitude(param).getData(); if (CollUtil.isNotEmpty(eventDetailList)) { for (RmpEventDetailPO event : eventDetailList) { diff --git a/pom.xml b/pom.xml index 95b2804..948e5ca 100644 --- a/pom.xml +++ b/pom.xml @@ -20,11 +20,11 @@ pom - 192.168.1.13 + 192.168.1.22 - 127.0.0.1 + 192.168.1.121 - 192.168.1.13 + 192.168.1.22 ${middle.server.url}:18848