From 8dda0820d51a205718cfefcc4e895227cbbb590f Mon Sep 17 00:00:00 2001 From: njcn_dhj <123456> Date: Fri, 26 Aug 2022 14:24:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E7=BA=A7=E7=AE=97=E6=B3=95=20?= =?UTF-8?q?=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 +- pqs-advance/advance-api/pom.xml | 19 ++ pqs-advance/advance-boot/pom.xml | 124 ++++++++ .../njcn/advance/AdvanceBootApplication.java | 22 ++ .../src/main/resources/bootstrap.yml | 53 ++++ .../src/main/resources/qvvr_balance.dll | Bin 0 -> 220672 bytes .../src/main/resources/qvvr_dll.dll | Bin 0 -> 50176 bytes .../src/main/resources/qvvr_dll_cause.dll | Bin 0 -> 47104 bytes pqs-advance/pom.xml | 24 ++ .../device/pojo/vo/AbnomalCommuncateVO.java | 27 ++ .../njcn/device/pojo/vo/DeviceAbnormalVO.java | 25 ++ .../device/pojo/vo/DeviceOnlineDataVO.java | 3 + .../controller/OperationContrController.java | 9 + .../com/njcn/device/service/LineService.java | 6 + .../device/service/impl/LineServiceImpl.java | 269 ++++++++++++++++-- pqs-event/event-api/pom.xml | 5 + .../com/njcn/event/pojo/po/BalanceInfo.java | 41 +++ .../java/com/njcn/event/pojo/po/QtIdx.java | 50 ++++ .../java/com/njcn/event/pojo/po/Sarifi.java | 18 ++ .../njcn/event/controller/AreaController.java | 20 ++ .../njcn/event/service/AreaLineService.java | 8 + .../service/Impl/AreaLineServiceImpl.java | 219 ++++++++++---- 22 files changed, 862 insertions(+), 92 deletions(-) create mode 100644 pqs-advance/advance-api/pom.xml create mode 100644 pqs-advance/advance-boot/pom.xml create mode 100644 pqs-advance/advance-boot/src/main/java/com/njcn/advance/AdvanceBootApplication.java create mode 100644 pqs-advance/advance-boot/src/main/resources/bootstrap.yml create mode 100644 pqs-advance/advance-boot/src/main/resources/qvvr_balance.dll create mode 100644 pqs-advance/advance-boot/src/main/resources/qvvr_dll.dll create mode 100644 pqs-advance/advance-boot/src/main/resources/qvvr_dll_cause.dll create mode 100644 pqs-advance/pom.xml create mode 100644 pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AbnomalCommuncateVO.java create mode 100644 pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceAbnormalVO.java create mode 100644 pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/BalanceInfo.java create mode 100644 pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/QtIdx.java create mode 100644 pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/Sarifi.java diff --git a/pom.xml b/pom.xml index 092453741..4cc0cc0eb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.njcn pqs @@ -21,6 +20,7 @@ pqs-job pqs-job/job-api pqs-quality + pqs-advance pom 灿能微服务生态系统 @@ -40,12 +40,12 @@ 192.168.1.13 - 192.168.1.111 + 192.168.1.130 ${middle.server.url}:18848 - fd74182b-1fce-4dba-afa7-2623b0376205 + 722a16dc-6988-419e-96e9-de885508296b ${middle.server.url}:8080 @@ -93,7 +93,6 @@ 1.2.7 4.4.0 - @@ -291,7 +290,6 @@ xxl-job-core ${xxl-job.version} - com.github.tocrhz mqtt-spring-boot-starter @@ -304,7 +302,6 @@ - @@ -316,7 +313,6 @@ true - org.apache.maven.plugins maven-compiler-plugin @@ -340,4 +336,4 @@ - + \ No newline at end of file diff --git a/pqs-advance/advance-api/pom.xml b/pqs-advance/advance-api/pom.xml new file mode 100644 index 000000000..5c1eb04b4 --- /dev/null +++ b/pqs-advance/advance-api/pom.xml @@ -0,0 +1,19 @@ + + + + pqs-advance + com.njcn + 1.0.0 + + 4.0.0 + + advance-api + + + 8 + 8 + + + \ No newline at end of file diff --git a/pqs-advance/advance-boot/pom.xml b/pqs-advance/advance-boot/pom.xml new file mode 100644 index 000000000..258498f1c --- /dev/null +++ b/pqs-advance/advance-boot/pom.xml @@ -0,0 +1,124 @@ + + + + pqs-advance + com.njcn + 1.0.0 + + 4.0.0 + + + + com.njcn + common-web + ${project.version} + + + com.njcn + common-swagger + ${project.version} + + + com.njcn + event-api + ${project.version} + + + com.njcn + device-api + ${project.version} + + + com.njcn + system-api + ${project.version} + + + com.njcn + user-api + 1.0.0 + compile + + + com.njcn + common-influxDB + 1.0.0 + compile + + + + advance-boot + + + 8 + 8 + + + + advanceboot + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + -Xlint:unchecked + + + + org.springframework.boot + spring-boot-maven-plugin + + + package + + repackage + + + + + + + com.spotify + docker-maven-plugin + 1.0.0 + + + + build-image + ${docker.operate} + + build + + + + + + http://${docker.repostory} + + ${docker.repostory}/${docker.registry.name}/${project.artifactId} + + + latest + + + ${docker.url} + ${basedir}/ + + + + /ROOT + + ${project.build.directory} + + ${project.build.finalName}.jar + + + + + + + + \ No newline at end of file diff --git a/pqs-advance/advance-boot/src/main/java/com/njcn/advance/AdvanceBootApplication.java b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/AdvanceBootApplication.java new file mode 100644 index 000000000..dcfd58792 --- /dev/null +++ b/pqs-advance/advance-boot/src/main/java/com/njcn/advance/AdvanceBootApplication.java @@ -0,0 +1,22 @@ +package com.njcn.advance; +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年08月18日 09:33 + */ +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@Slf4j +@MapperScan("com.njcn.**.mapper") +@EnableFeignClients(basePackages = "com.njcn") +@SpringBootApplication(scanBasePackages = "com.njcn") +public class +AdvanceBootApplication { + public static void main(String[] args) { + SpringApplication.run(AdvanceBootApplication.class, args); + } +} diff --git a/pqs-advance/advance-boot/src/main/resources/bootstrap.yml b/pqs-advance/advance-boot/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..d112d0ad1 --- /dev/null +++ b/pqs-advance/advance-boot/src/main/resources/bootstrap.yml @@ -0,0 +1,53 @@ +#当前服务的基本信息 +microservice: + ename: @artifactId@ + name: '@name@' + version: @version@ + sentinel: + url: @sentinel.url@ + gateway: + url: @gateway.url@ +server: + port: 10210 +#feign接口开启服务熔断降级处理 +feign: + sentinel: + enabled: true + +spring: + application: + name: @artifactId@ + #nacos注册中心以及配置中心的指定 + cloud: + nacos: + discovery: + ip: @service.server.url@ + server-addr: @nacos.url@ + namespace: @nacos.namespace@ + config: + server-addr: @nacos.url@ + namespace: @nacos.namespace@ + file-extension: yaml + shared-configs: + - data-id: share-config.yaml + refresh: true + - data-Id: share-config-datasource-db.yaml + refresh: true + main: + allow-bean-definition-overriding: true + + +#项目日志的配置 +logging: + config: http://@nacos.url@/nacos/v1/cs/configs?tenant=@nacos.namespace@&group=DEFAULT_GROUP&dataId=logback.xml + level: + root: info + + +#mybatis配置信息 +mybatis-plus: + #别名扫描 + type-aliases-package: com.njcn.advance.pojo + +mqtt: + client-id: @artifactId@${random.value} diff --git a/pqs-advance/advance-boot/src/main/resources/qvvr_balance.dll b/pqs-advance/advance-boot/src/main/resources/qvvr_balance.dll new file mode 100644 index 0000000000000000000000000000000000000000..97efdf1606263fe93985904ced11e0306de38a8a GIT binary patch literal 220672 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 PCV&ZG0+_)6ioo9hNKhsO literal 0 HcmV?d00001 diff --git a/pqs-advance/advance-boot/src/main/resources/qvvr_dll.dll b/pqs-advance/advance-boot/src/main/resources/qvvr_dll.dll new file mode 100644 index 0000000000000000000000000000000000000000..60d74a998a94f8e620aa44edecaaced69145fa1e GIT binary patch literal 50176 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 literal 0 HcmV?d00001 diff --git a/pqs-advance/advance-boot/src/main/resources/qvvr_dll_cause.dll b/pqs-advance/advance-boot/src/main/resources/qvvr_dll_cause.dll new file mode 100644 index 0000000000000000000000000000000000000000..95328f1aaad28f40e168cab87e1bca74a2e4f02f GIT binary patch literal 47104 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 V*yPyp@w4MUjnCh8!F%sz;BWbV9CQEx literal 0 HcmV?d00001 diff --git a/pqs-advance/pom.xml b/pqs-advance/pom.xml new file mode 100644 index 000000000..8bca4d039 --- /dev/null +++ b/pqs-advance/pom.xml @@ -0,0 +1,24 @@ + + + + pqs + com.njcn + 1.0.0 + + 4.0.0 + + pqs-advance + pom + + advance-api + advance-boot + + + + 8 + 8 + + + \ No newline at end of file diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AbnomalCommuncateVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AbnomalCommuncateVO.java new file mode 100644 index 000000000..5511a82b5 --- /dev/null +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/AbnomalCommuncateVO.java @@ -0,0 +1,27 @@ +package com.njcn.device.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年08月15日 14:03 + */ +@Data +public class AbnomalCommuncateVO implements Serializable { + + @ApiModelProperty("年份") + private String year; + + @ApiModelProperty("月份") + private String month; + + @ApiModelProperty("日期") + private String day; + + @ApiModelProperty("异常次数") + private String abnormalTimes; +} diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceAbnormalVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceAbnormalVO.java new file mode 100644 index 000000000..fb4d55378 --- /dev/null +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceAbnormalVO.java @@ -0,0 +1,25 @@ +package com.njcn.device.pojo.vo; + +import com.njcn.common.pojo.constant.PatternRegex; +import com.njcn.device.pojo.param.DeviceInfoParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.Pattern; +import java.io.Serializable; +import java.util.List; + +/** + * @author denghuajun + * @date 2022/8/14 + * + */ +@Data +public class DeviceAbnormalVO implements Serializable { + @ApiModelProperty("是否有下级") + private Boolean isPid; + + @ApiModelProperty("数值") + private List data; +} diff --git a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceOnlineDataVO.java b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceOnlineDataVO.java index 70ac730ae..ed0ec9c78 100644 --- a/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceOnlineDataVO.java +++ b/pqs-device/device-api/src/main/java/com/njcn/device/pojo/vo/DeviceOnlineDataVO.java @@ -21,6 +21,9 @@ public class DeviceOnlineDataVO implements Serializable { @ApiModelProperty("月") private String month; + @ApiModelProperty("日") + private String day; + @ApiModelProperty("在线率") private Float onlineRate; } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java b/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java index 7d3788fd1..64aa7de1c 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/controller/OperationContrController.java @@ -97,5 +97,14 @@ public class OperationContrController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getComunicateStatics") + @ApiOperation("获取中断异常统计") + @ApiImplicitParam(name = "conditionBusinessParam", value = "实体", required = true) + public HttpResult getComunicateStatics(@RequestBody @Validated DeviceInfoParam.ConditionBusinessParam conditionBusinessParam) { + String methodDescribe = getMethodDescribe("getComunicateStatics"); + DeviceAbnormalVO result = lineService.getComunicateStatics(conditionBusinessParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java index a5db41aa3..80b924bec 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/LineService.java @@ -141,5 +141,11 @@ public interface LineService { */ List getBaseLineList(List lineIndex); + /** + * 获取终端异常数据 + * @param deviceInfoParam 参数 + * @return 结果 + */ + DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.ConditionBusinessParam deviceInfoParam); } diff --git a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java index 73223d9b9..9cf7b2272 100644 --- a/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java +++ b/pqs-device/device-boot/src/main/java/com/njcn/device/service/impl/LineServiceImpl.java @@ -23,6 +23,8 @@ import com.njcn.device.pojo.param.DeviceInfoParam; import com.njcn.device.pojo.po.*; import com.njcn.device.pojo.vo.*; import com.njcn.device.service.LineService; +import com.njcn.device.utils.PublicDateUtil; +import com.njcn.event.pojo.po.EventDetail; import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.api.AreaFeignClient; @@ -42,7 +44,6 @@ import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.Instant; -import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -73,8 +74,6 @@ public class LineServiceImpl extends ServiceImpl implements Li private final SubstationMapper substationMapper; - private final CommunicateMapper communicateMapper; - private final GeneralDeviceService generalDeviceService; private final LineMapper lineMapper; @@ -158,7 +157,7 @@ public class LineServiceImpl extends ServiceImpl implements Li @Override public CommunicateVO getComFlagInfoData(String id, String searchBeginTime, String searchEndTime) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - List communicateList = getCommunicate(id,searchBeginTime,searchEndTime); + List communicateList = getCommunicate(id, searchBeginTime, searchEndTime); CommunicateVO communicateVOList = new CommunicateVO(); List updateTime = new ArrayList<>(); List comType = new ArrayList<>(); @@ -260,24 +259,23 @@ public class LineServiceImpl extends ServiceImpl implements Li List generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList())); for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { //根据部门id去获取省份信息 - Area area = areaFeignClient.areaDeptPro(generalDeviceDTO.getIndex()).getData(); LineDistributionVO lineDistributionVO = new LineDistributionVO(); lineDistributionVO.setName(generalDeviceDTO.getName()); lineDistributionVO.setValue(generalDeviceDTO.getLineIndexes().size()); lineDistributionVOList.add(lineDistributionVO); } - List result =new ArrayList(); + List result = new ArrayList(); Map map = new HashMap(); - for(LineDistributionVO lineDistributionVO:lineDistributionVOList){ + for (LineDistributionVO lineDistributionVO : lineDistributionVOList) { if (map.containsKey(lineDistributionVO.getName())) { - map.put(lineDistributionVO.getName(), map.get(lineDistributionVO.getName())+lineDistributionVO.getValue()); + map.put(lineDistributionVO.getName(), map.get(lineDistributionVO.getName()) + lineDistributionVO.getValue()); } else { map.put(lineDistributionVO.getName(), lineDistributionVO.getValue()); } } for (Map.Entry entry : map.entrySet()) { - result.add(new LineDistributionVO(entry.getKey(),entry.getValue())); + result.add(new LineDistributionVO(entry.getKey(), entry.getValue())); } return result; } @@ -383,9 +381,9 @@ public class LineServiceImpl extends ServiceImpl implements Li //根据监测点id获取终端id String devIndex = lineMapper.getDevIndex(lineId); //获取在线率 - List onlineRateValue = getDevOnline(devIndex,startTime,endTime); + List onlineRateValue = getDevOnline(devIndex, startTime, endTime); //获取数据完整性 - List integrityValue = getInegrity(lineId,startTime,endTime); + List integrityValue = getInegrity(lineId, startTime, endTime); //获取流量占比 List flowMealValue = new ArrayList<>(); //组装 @@ -415,8 +413,8 @@ public class LineServiceImpl extends ServiceImpl implements Li for (LineFlowMealDetailVO lineFlowMealDetailVO : monitorList) { for (LineInfluxDbInegrityVO lineInfluxDbInegrity : lineInfluxDbInegrityVO) { if (lineFlowMealDetailVO.getId().equals(lineInfluxDbInegrity.getLineId())) { - BigDecimal flow =new BigDecimal(lineInfluxDbInegrity.getIntegrity().floatValue()); - lineFlowMealDetailVO.setIntegrity(flow.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); + BigDecimal flow = new BigDecimal(lineInfluxDbInegrity.getIntegrity().floatValue()); + lineFlowMealDetailVO.setIntegrity(flow.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); } } } @@ -426,18 +424,18 @@ public class LineServiceImpl extends ServiceImpl implements Li List deviceList = lineMapper.getFlowLineRunStatistics(busBarList.stream().map(LineFlowMealDetailVO::getPid).distinct().collect(Collectors.toList()), DateUtil.endOfDay(DateUtil.parse(steadyParam.getSearchBeginTime())), DateUtil.beginOfDay(DateUtil.parse(steadyParam.getSearchEndTime()))); for (LineFlowMealDetailVO lineFlowMealDetailVO : deviceList) { System.out.println(lineFlowMealDetailVO.getId()); - Float staticsValue = getStatisValueFlow(lineFlowMealDetailVO.getId(),steadyParam); - BigDecimal b = new BigDecimal(staticsValue); - float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); + Float staticsValue = getStatisValueFlow(lineFlowMealDetailVO.getId(), steadyParam); + BigDecimal b = new BigDecimal(staticsValue); + float f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); lineFlowMealDetailVO.setStatisValue(f1); - BigDecimal flow =new BigDecimal(f1/lineFlowMealDetailVO.getFlowMeal()*100); + BigDecimal flow = new BigDecimal(f1 / lineFlowMealDetailVO.getFlowMeal() * 100); //获取流量占比 - lineFlowMealDetailVO.setFlowProportion(flow.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); + lineFlowMealDetailVO.setFlowProportion(flow.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); for (LineInfluxDbOnlineVO lineInfluxDbOnline : lineInfluxDbOnlineVO) { if (lineFlowMealDetailVO.getId().equals(lineInfluxDbOnline.getDevIndex())) { - BigDecimal flowValue =new BigDecimal(lineInfluxDbOnline.getOnlineRate().floatValue()); - lineFlowMealDetailVO.setOnlineRate(flowValue.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); + BigDecimal flowValue = new BigDecimal(lineInfluxDbOnline.getOnlineRate().floatValue()); + lineFlowMealDetailVO.setOnlineRate(flowValue.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue()); } } } @@ -589,7 +587,7 @@ public class LineServiceImpl extends ServiceImpl implements Li if (!CollectionUtils.isEmpty(list)) { List> listData = list.get(0).getValues(); for (int i = 0; i < listData.size(); i++) { - LineStaticsValueVO lineStaticsValueVO =new LineStaticsValueVO(); + LineStaticsValueVO lineStaticsValueVO = new LineStaticsValueVO(); List objectList = listData.get(i); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); lineStaticsValueVO.setTime(formatter.parse(objectList.get(0).toString()).toString()); @@ -614,7 +612,7 @@ public class LineServiceImpl extends ServiceImpl implements Li if (!CollectionUtils.isEmpty(list)) { List> listData = list.get(0).getValues(); for (int i = 0; i < listData.size(); i++) { - LineStaticsValueVO lineStaticsValueVO =new LineStaticsValueVO(); + LineStaticsValueVO lineStaticsValueVO = new LineStaticsValueVO(); List objectList = listData.get(i); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); lineStaticsValueVO.setTime(formatter.parse(objectList.get(0).toString()).toString()); @@ -626,7 +624,7 @@ public class LineServiceImpl extends ServiceImpl implements Li } @SneakyThrows - public Float getStatisValueFlow(String lineIndex,DeviceInfoParam.BusinessParam steadyParam) { + public Float getStatisValueFlow(String lineIndex, DeviceInfoParam.BusinessParam steadyParam) { //组装sql语句 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(steadyParam.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(steadyParam.getSearchEndTime()))).append("' and "); @@ -639,19 +637,19 @@ public class LineServiceImpl extends ServiceImpl implements Li if (!CollectionUtils.isEmpty(list)) { List> listData = list.get(0).getValues(); List objectList = listData.get(0); - staticsValue = ((Double)objectList.get(1)).floatValue(); - }else { + staticsValue = ((Double) objectList.get(1)).floatValue(); + } else { staticsValue = 0f; } return staticsValue; } - public List getCommunicate(String lineIndex, String startTime,String endTime) { + public List getCommunicate(String lineIndex, String startTime, String endTime) { //组装sql语句 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and "); stringBuilder.append("line_id = '").append(lineIndex).append("' group by line_id ").append(InfluxDBPublicParam.TIME_ZONE); - String sql = "select * from "+InfluxDBPublicParam.PQS_COMMUNICATE+" where " + stringBuilder.toString(); + String sql = "select * from " + InfluxDBPublicParam.PQS_COMMUNICATE + " where " + stringBuilder.toString(); //获取暂降事件 QueryResult result = influxDbUtils.query(sql); InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); @@ -661,15 +659,226 @@ public class LineServiceImpl extends ServiceImpl implements Li @Override - public List getBaseLineAreaInfo(List lineIndex,String searchValue,Integer comFlag) { - return this.baseMapper.getBaseLineAreaInfo(lineIndex,searchValue,comFlag); + public List getBaseLineAreaInfo(List lineIndex, String searchValue, Integer comFlag) { + return this.baseMapper.getBaseLineAreaInfo(lineIndex, searchValue, comFlag); } @Override public List getBaseLineList(List lineIndex) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(Line::getState, DataStateEnum.ENABLE.getCode()).in(Line::getId,lineIndex); + lambdaQueryWrapper.eq(Line::getState, DataStateEnum.ENABLE.getCode()).in(Line::getId, lineIndex); return this.list(lambdaQueryWrapper); } + @SneakyThrows + @Override + public DeviceAbnormalVO getComunicateStatics(DeviceInfoParam.ConditionBusinessParam conditionBusinessParam) { + DeviceAbnormalVO deviceAbnormalVO = new DeviceAbnormalVO(); + //获取所有监测点 + List generalDeviceDTOList = generalDeviceService.getDeviceInfo(conditionBusinessParam, null, Stream.of(1).collect(Collectors.toList())); + List lineIndexs = generalDeviceDTOList.stream().flatMap(dto -> dto.getLineIndexes().stream()).collect(Collectors.toList()); + if (conditionBusinessParam.getTimeFlag() == 0) { + List intervalTime = this.getIntervalTime(conditionBusinessParam.getSearchBeginTime(), conditionBusinessParam.getSearchEndTime()); + List abnomalCommuncateVOS = new ArrayList<>(); + deviceAbnormalVO.setIsPid(true); + for (String interTime : intervalTime) { + System.out.println(lineIndexs); + AbnomalCommuncateVO inter = new AbnomalCommuncateVO(); + String startTime, endTime; + inter.setMonth(interTime.substring(5)); + inter.setYear(interTime.substring(0, 4)); + startTime = PublicDateUtil.getFisrtDayOfMonth(Integer.parseInt(interTime.substring(0,4)),Integer.parseInt (interTime.substring(5))); + endTime = PublicDateUtil.getLastDayOfMonth(Integer.parseInt(interTime.substring(0,4)),Integer.parseInt(interTime.substring(5))); + List communicateList = getCommunicateAbnorm(lineIndexs,startTime,endTime); + inter.setDay("/"); + if (communicateList.size()==0){ + inter.setAbnormalTimes("3.14159"); + }else { + inter.setAbnormalTimes(String.valueOf(communicateList.size())); + } + abnomalCommuncateVOS.add(inter); + } + deviceAbnormalVO.setData(abnomalCommuncateVOS); + } else { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date dt = simpleDateFormat.parse(conditionBusinessParam.getSearchBeginTime()); + Date dtDate = simpleDateFormat.parse(conditionBusinessParam.getSearchEndTime()); + Integer year = Integer.valueOf(String.format("%tY", dt)); + Integer mon = Integer.valueOf(String.format("%tm", dt)); + Integer day = Integer.valueOf(String.format("%td", dtDate)); + List intervalTime = this.getIntervalDateTime(year, mon,day); + List abnomalCommuncateVOS = new ArrayList<>(); + deviceAbnormalVO.setIsPid(false); + for (String interTime : intervalTime) { + AbnomalCommuncateVO inter = new AbnomalCommuncateVO(); + String startTime, endTime; + inter.setMonth(interTime.substring(5,7)); + inter.setYear(interTime.substring(0, 4)); + inter.setDay(interTime.substring(8)); + startTime = sdf.format(DateUtil.beginOfDay(DateUtil.parse(interTime))); + endTime = sdf.format(DateUtil.endOfDay(DateUtil.parse(interTime))); + List communicateList = getCommunicateAbnorm(lineIndexs,startTime,endTime); + if (communicateList.size()==0){ + inter.setAbnormalTimes("3.14159"); + }else { + inter.setAbnormalTimes(String.valueOf(communicateList.size())); + } + abnomalCommuncateVOS.add(inter); + } + deviceAbnormalVO.setData(abnomalCommuncateVOS); + } + + return deviceAbnormalVO; + } + + /** + * 根据用户选择的时间区间返回月份日期 + */ + @SneakyThrows + private List getIntervalTime(String startTime, String endTime) { + List times = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + Date start = sdf.parse(startTime); + Date end = sdf.parse(endTime); + // 同月 + if (start.getTime() == end.getTime()) { + String time = startTime.substring(0, 7); + times.add(time); + } else if (start.getYear() == end.getYear()) { + // 同年 + int startM = start.getMonth() + 1; + int endM = end.getMonth() + 1; + int temp = endM - startM; + for (int i = 0; i <= temp; i++) { + String time = start.getYear() + 1900 + ""; + int month = startM + i; + if (month < 10) { + time = time + "-0" + month; + } else { + time = time + "-" + month; + } + times.add(time); + } + } else { + // 不同年!!!!这里忽略了年份之间跨年的情况 + int startY = start.getYear() + 1900; + int startM = start.getMonth() + 1; + int endY = end.getYear() + 1900; + int endM = end.getMonth() + 1; + int tempS = 12 - startM; + // 连续的年份 + if (endY - startY == 1) { + // 第一年的时间获取 + for (int i = 0; i <= tempS; i++) { + int month = startM + i; + String time = startY + "-"; + if (month < 10) { + time = time + "0" + month; + } else { + time = time + month; + } + times.add(time); + } + // 第二年的时间获取 + + for (int i = 1; i <= endM; i++) { + String time = endY + "-"; + if (i < 10) { + time = time + "0" + i; + } else { + time = time + i; + } + times.add(time); + } + } else { + // 不连续的年份 + // 第一年的时间获取 + for (int i = 0; i <= tempS; i++) { + int month = startM + i; + String time = startY + "-"; + if (month < 10) { + time = time + "0" + month; + } else { + time = time + month; + } + times.add(time); + } + int tempY = endY - startY; + // 中间年份的时间 + for (int i = 1; i < tempY; i++) { + for (int j = 1; j <= 12; j++) { + String time = startY + i + "-"; + if (j < 10) { + time = time + "0" + j; + } else { + time = time + j; + } + times.add(time); + } + } + // 最后一年的时间获取 + for (int i = 1; i <= endM; i++) { + String time = endY + "-"; + if (i < 10) { + time = time + "0" + i; + } else { + time = time + i; + } + times.add(time); + } + } + + } + return times; + } + + + @SneakyThrows + private List getIntervalDateTime(Integer startTime, Integer endTime,Integer dd) { + List list = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(Locale.CHINA); + calendar.set(startTime, endTime - 1, 1); + int year = calendar.get(Calendar.YEAR);//年份 + int month = calendar.get(Calendar.MONTH) + 1;//月份 + for (int i = 1; i <= dd; i++) { + String date = null; + if (month < 10 && i < 10) { + date = year + "-0" + month + "-0" + i; + } + if (month < 10 && i >= 10) { + date = year + "-0" + month + "-" + i; + } + if (month >= 10 && i < 10) { + date = year + "-" + month + "-0" + i; + } + if (month >= 10 && i >= 10) { + date = year + "-" + month + "-" + i; + } + + list.add(date); + } + return list; + } + + public List getCommunicateAbnorm(List lineIndex, String startTime, String endTime) { + //组装sql语句 + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and "); + stringBuilder.append("("); + for (int i = 0; i < lineIndex.size(); i++) { + if (lineIndex.size() - i != 1) { + stringBuilder.append("line_id = '").append(lineIndex.get(i)).append("' or "); + } else { + stringBuilder.append("line_id = '").append(lineIndex.get(i)).append("')"); + } + } + stringBuilder.append("and type = 0").append(" group by line_id ").append(InfluxDBPublicParam.TIME_ZONE); + String sql = "select * from " + InfluxDBPublicParam.PQS_COMMUNICATE + " where " + stringBuilder.toString(); + QueryResult result = influxDbUtils.query(sql); + InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); + List communicateList = influxDBResultMapper.toPOJO(result, Communicate.class); + return communicateList; + } + } diff --git a/pqs-event/event-api/pom.xml b/pqs-event/event-api/pom.xml index fb3f5cc49..0701d078d 100644 --- a/pqs-event/event-api/pom.xml +++ b/pqs-event/event-api/pom.xml @@ -42,6 +42,11 @@ org.influxdb influxdb-java + + com.sun.jna + jna + 3.0.9 + \ No newline at end of file diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/BalanceInfo.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/BalanceInfo.java new file mode 100644 index 000000000..f0c6ec0c6 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/BalanceInfo.java @@ -0,0 +1,41 @@ +package com.njcn.event.pojo.po; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年08月18日 13:42 + * 电压区域综合评估基本类 + */ + +@Data +public class BalanceInfo implements Serializable { + @Data + public class PointInfo { + private Integer pointId; + private String pointName; + private QtIdx qtIdx; + private float civ; + private int l; + + public PointInfo() { + super(); + qtIdx = new QtIdx(); + } + } + @ApiModelProperty("区域的index") + private String areaIndex; + @ApiModelProperty("区域名称") + private String areaName; + @ApiModelProperty("系统最终的评估分") + private float ci; + @ApiModelProperty("监测点的详细信息") + private List list; + @ApiModelProperty("标识是否经过计算,默认为0-未计算,1-计算") + private int isCount; +} diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/QtIdx.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/QtIdx.java new file mode 100644 index 000000000..efc10e332 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/QtIdx.java @@ -0,0 +1,50 @@ +package com.njcn.event.pojo.po; + +import com.sun.jna.Structure; +import io.swagger.annotations.ApiModelProperty; + +import java.util.List; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年08月18日 13:45 + * //单个监测点的暂降事件计算评价指标 + */ +public class QtIdx extends Structure { + @ApiModelProperty("暂降幅值") + public float r_esm; + @ApiModelProperty("sarifi-90") + public int sarfi_90; + @ApiModelProperty("sarifi-50") + public int sarifi_50; + @ApiModelProperty("暂降能量") + public float r_asei; + @ApiModelProperty("严重程度") + public float r_assi; + + public static class ByReference extends QtIdx implements Structure.ByReference { + + } + + public static class ByValue extends QtIdx implements Structure.ByValue { + + } + + @Override + protected List getFieldOrder() { + return null; + } + + @Override + public boolean equals(Object obj) { + if (obj == null || !(obj instanceof QtIdx)) + return false; + if (this == obj) + return true; + + QtIdx instance = (QtIdx) obj; + + return (r_esm == instance.r_esm) && (sarfi_90 == instance.sarfi_90) && (sarifi_50 == instance.sarifi_50) && (r_asei == instance.r_asei) && (r_assi == instance.r_assi); + } +} diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/Sarifi.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/Sarifi.java new file mode 100644 index 000000000..ec6e31371 --- /dev/null +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/po/Sarifi.java @@ -0,0 +1,18 @@ +package com.njcn.event.pojo.po; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022年08月19日 11:10 + */ +@Data +public class Sarifi implements Serializable { + private Float sarifiValue; + private Float time; + private Float pt1; + private Float pt2; +} diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/AreaController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/AreaController.java index 68dd80caa..7421efc3f 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/AreaController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/AreaController.java @@ -7,6 +7,7 @@ import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.LogUtil; import com.njcn.device.pojo.param.DeviceInfoParam; +import com.njcn.event.pojo.po.BalanceInfo; import com.njcn.event.pojo.vo.AreaLineVO; import com.njcn.event.pojo.vo.EventHeatMapVO; import com.njcn.event.pojo.vo.EventSeverityVO; @@ -24,6 +25,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * @author denghuajun * @version 1.0.0 @@ -106,5 +109,22 @@ public class AreaController extends BaseController { TerminalRunningStatisticsVO result = areaLineService.getTerminalRunningStatistics(deviceInfoParam); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); } + + /** + * 获取暂降严重度 + * + * @param deviceInfoParam 参数 + * @return 结果 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getBalanceInfo") + @ApiOperation("获取区域暂降综合评估") + @ApiImplicitParam(name = "deviceInfoParam", value = "参数", required = true) + public HttpResult> getBalanceInfo(@RequestBody @Validated DeviceInfoParam.BusinessParam deviceInfoParam) { + String methodDescribe = getMethodDescribe("getBalanceInfo"); + LogUtil.njcnDebug(log, "{},参数为:{}", methodDescribe, deviceInfoParam); + List result = areaLineService.getBalanceInfo(deviceInfoParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe); + } } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/AreaLineService.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/AreaLineService.java index 53f70e889..5c6a34028 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/AreaLineService.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/AreaLineService.java @@ -2,6 +2,7 @@ package com.njcn.event.service; import com.njcn.device.pojo.param.DeviceInfoParam; +import com.njcn.event.pojo.po.BalanceInfo; import com.njcn.event.pojo.vo.*; import java.util.List; @@ -42,4 +43,11 @@ public interface AreaLineService { */ TerminalRunningStatisticsVO getTerminalRunningStatistics(DeviceInfoParam.BusinessParam deviceInfoParam); + /** + * 获取区域暂降综合评估 + * @param deviceInfoParam 参数 + * @return 结果 + */ + List getBalanceInfo(DeviceInfoParam.BusinessParam deviceInfoParam); + } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java index dac59ead6..5df6680b5 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/Impl/AreaLineServiceImpl.java @@ -8,19 +8,22 @@ import com.njcn.device.api.GeneralDeviceInfoClient; import com.njcn.device.api.LineFeignClient; import com.njcn.device.pojo.dto.GeneralDeviceDTO; import com.njcn.device.pojo.param.DeviceInfoParam; +import com.njcn.device.pojo.vo.LineDetailDataVO; import com.njcn.device.pojo.vo.LineDetailVO; import com.njcn.device.pojo.vo.LineDeviceStateVO; import com.njcn.device.pojo.vo.SubstationDetailVO; import com.njcn.event.influxdb.PqsOnlinerateQuery; import com.njcn.event.mapper.PqDeviceMapper; -import com.njcn.event.pojo.po.PqDevice; -import com.njcn.event.pojo.po.PqsOnlinerate; +import com.njcn.event.pojo.po.*; import com.njcn.event.pojo.vo.*; import com.njcn.event.pojo.vo.TerminalRunningStatisticsVO.TerminalRunningInfoVO; import com.njcn.event.pojo.vo.TerminalRunningStatisticsVO.TerminalRunningVO; import com.njcn.event.service.AreaLineService; +import com.njcn.event.service.EventDetailService; +import com.njcn.influxdb.param.InfluxDBPublicParam; import com.njcn.influxdb.utils.InfluxDbUtils; import com.njcn.system.pojo.enums.StatisticsEnum; +import com.sun.org.apache.regexp.internal.RE; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.influxdb.dto.QueryResult; @@ -37,6 +40,8 @@ import java.util.stream.Collectors; import static com.njcn.event.influxdb.PqsOnlinerateQuery.devIdOr; import static com.njcn.event.influxdb.QueryBuilder.*; +import com.njcn.event.pojo.po.BalanceInfo.PointInfo; + /** * @author denghuajun * @version 1.0.0 @@ -46,17 +51,19 @@ import static com.njcn.event.influxdb.QueryBuilder.*; @Service @RequiredArgsConstructor public class AreaLineServiceImpl implements AreaLineService { - + private final GeneralDeviceInfoClient generalDeviceInfoClient; - + private final LineFeignClient lineFeignClient; - + private final InfluxDbUtils influxDbUtils; - + private final PqsOnlinerateQuery pqsOnlinerateQuery; - + private final PqDeviceMapper pqDeviceMapper; - + + private final EventDetailService eventDetailService; + @Override public AreaLineVO getAreaLineVO(DeviceInfoParam deviceInfoParam) { AreaLineVO areaLineVO = new AreaLineVO(); @@ -78,7 +85,7 @@ public class AreaLineServiceImpl implements AreaLineService { int stateZd = 0; // 总次数 int tail = 0; - + String color = ""; List substationDetailVOS = new ArrayList<>(); if (subIndexs.size() > 0) { @@ -104,7 +111,7 @@ public class AreaLineServiceImpl implements AreaLineService { int stateFalse = 0; // 次数 double r = 0.0035; - + int j = 0; // 总的监测点个数 int lineTail = lineDataVOList.size(); @@ -144,7 +151,7 @@ public class AreaLineServiceImpl implements AreaLineService { areaLineVO.setAreaValue(listObject); return areaLineVO; } - + @Override public EventHeatMapVO getEventHeatMap(DeviceInfoParam.BusinessParam deviceInfoParam) { EventHeatMapVO eventHeatMapVO = new EventHeatMapVO(); @@ -183,7 +190,7 @@ public class AreaLineServiceImpl implements AreaLineService { eventHeatMapVO.setEventHeatMapValue(eventHeatMapDetailList); return eventHeatMapVO; } - + @Override public EventSeverityVO getEventSeverity(DeviceInfoParam.BusinessParam deviceInfoParam) { EventSeverityVO eventSeverityVO = new EventSeverityVO(); @@ -222,7 +229,7 @@ public class AreaLineServiceImpl implements AreaLineService { eventSeverityVO.setEventSeverityValue(eventSeverityValueList); return eventSeverityVO; } - + /** * 获取终端运行统计 * @@ -233,60 +240,99 @@ public class AreaLineServiceImpl implements AreaLineService { public TerminalRunningStatisticsVO getTerminalRunningStatistics(DeviceInfoParam.BusinessParam deviceInfoParam) { // 区域计算 TerminalRunningVO area = analyzeTerminalRun(deviceInfoParam); - + // 厂家计算 deviceInfoParam.getStatisticalType().setCode(StatisticsEnum.MANUFACTURER.getCode()); TerminalRunningVO factory = analyzeTerminalRun(deviceInfoParam); - + return TerminalRunningStatisticsVO.buildVO(area, factory); } - + + @Override + public List getBalanceInfo(DeviceInfoParam.BusinessParam deviceInfoParam) { + List balanceInfos = new ArrayList<>(); + //获取符合条件的监测点 + List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); + if (CollUtil.isEmpty(generalDeviceDTOList)) { + return balanceInfos; + } + for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) { + BalanceInfo balanceInfo = new BalanceInfo(); + balanceInfo.setAreaName(generalDeviceDTO.getName()); + balanceInfo.setAreaIndex(generalDeviceDTO.getIndex()); + //监测点 + List lineList = generalDeviceDTO.getLineIndexes(); + List list = new ArrayList<>(); + for (String lineIndex : lineList) { + PointInfo pointInfo = balanceInfo.new PointInfo(); + Float value = getSarfiValue(deviceInfoParam.getSearchBeginTime(), deviceInfoParam.getSearchEndTime(), 0.9f, lineIndex); + pointInfo.getQtIdx().r_esm = (value == null ? 0f : value); + pointInfo.getQtIdx().sarfi_90 = getSarfiCount(deviceInfoParam.getSearchBeginTime(), deviceInfoParam.getSearchEndTime(), 0.9f, lineIndex); // 统计小于0.9的总数 + pointInfo.getQtIdx().sarifi_50 = getSarfiCount(deviceInfoParam.getSearchBeginTime(), deviceInfoParam.getSearchEndTime(), 0.5f, lineIndex); // 统计小于0.9的总数 // 统计小于0.5的总数 + //获取当前监测点的暂降信息 + List eventDetailList = getEventDetailInfo(lineIndex, 0.9f, deviceInfoParam.getSearchBeginTime(), deviceInfoParam.getSearchEndTime()); + if(eventDetailList.size()>0) { + //获取监测点信息 + LineDetailDataVO lineDetailVO = lineFeignClient.getLineDetailData(lineIndex).getData(); + List sarifis = new ArrayList<>(); + for (EventDetail eventDetail:eventDetailList){ + Sarifi sarifi = new Sarifi(); + sarifi.setTime(eventDetail.getPersistTime().floatValue()); + + } + } + + } + } + return balanceInfos; + } + private TerminalRunningVO analyzeTerminalRun(DeviceInfoParam.BusinessParam deviceInfoParam) { List generalDeviceDTOList = generalDeviceInfoClient.getPracticalAllDeviceInfo(deviceInfoParam).getData(); - + if (CollUtil.isEmpty(generalDeviceDTOList)) { return TerminalRunningVO.empty(); } List deviceIndexList = generalDeviceDTOList.stream().flatMap(dto -> dto.getDeviceIndexes().stream()).collect(Collectors.toList()); - + if (CollUtil.isEmpty(deviceIndexList)) { return TerminalRunningVO.empty(); } - + List pqsOnlinerateList = pqsOnlinerateQuery.selectList(Arrays.asList("dev_id", "offlinemin", "onlinemin"), devIdOr(deviceIndexList), timeAnd(beginOfDay(deviceInfoParam.getSearchBeginTime()), endOfDay(deviceInfoParam.getSearchEndTime()))); - + List pqDeviceList = pqDeviceMapper.queryRunFlagByDeviceIndexs(deviceIndexList); - + List terminalRun = generalDeviceDTOList.parallelStream().map(dto -> { - List deviceIndexes = dto.getDeviceIndexes(); - - TerminalRunningInfoVO terminalRunningInfoVO = new TerminalRunningInfoVO(); - terminalRunningInfoVO.setAreaName(dto.getName()); - terminalRunningInfoVO.setNumberOfTerminals(deviceIndexes.size()); - terminalRunningInfoVO.setNormal(countDeviceRunStatus(pqDeviceList).apply(0, deviceIndexes)); - terminalRunningInfoVO.setBreaks(countDeviceRunStatus(pqDeviceList).apply(1, deviceIndexes)); - terminalRunningInfoVO.setShutdown(countDeviceRunStatus(pqDeviceList).apply(2, deviceIndexes)); - if (deviceIndexes.size()==0) { - terminalRunningInfoVO.setNormalRate(0.0); - terminalRunningInfoVO.setBreaksRate(0.0); - terminalRunningInfoVO.setShutdownRate(0.0); - } else { - double normalRate = terminalRunningInfoVO.getNormal().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; - terminalRunningInfoVO.setNormalRate(new BigDecimal(normalRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); - double breaksRate = terminalRunningInfoVO.getBreaks().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; - terminalRunningInfoVO.setBreaksRate(new BigDecimal(breaksRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); - double shutdownRate = terminalRunningInfoVO.getShutdown().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; - terminalRunningInfoVO.setShutdownRate(new BigDecimal(shutdownRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); - } - terminalRunningInfoVO.setOnlineRate(computingDeviceOnlineRate(pqsOnlinerateList).apply(deviceIndexes)); - return terminalRunningInfoVO; - }).sorted(TerminalRunningInfoVO.sortAscAreaName()) + List deviceIndexes = dto.getDeviceIndexes(); + + TerminalRunningInfoVO terminalRunningInfoVO = new TerminalRunningInfoVO(); + terminalRunningInfoVO.setAreaName(dto.getName()); + terminalRunningInfoVO.setNumberOfTerminals(deviceIndexes.size()); + terminalRunningInfoVO.setNormal(countDeviceRunStatus(pqDeviceList).apply(0, deviceIndexes)); + terminalRunningInfoVO.setBreaks(countDeviceRunStatus(pqDeviceList).apply(1, deviceIndexes)); + terminalRunningInfoVO.setShutdown(countDeviceRunStatus(pqDeviceList).apply(2, deviceIndexes)); + if (deviceIndexes.size() == 0) { + terminalRunningInfoVO.setNormalRate(0.0); + terminalRunningInfoVO.setBreaksRate(0.0); + terminalRunningInfoVO.setShutdownRate(0.0); + } else { + double normalRate = terminalRunningInfoVO.getNormal().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; + terminalRunningInfoVO.setNormalRate(new BigDecimal(normalRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); + double breaksRate = terminalRunningInfoVO.getBreaks().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; + terminalRunningInfoVO.setBreaksRate(new BigDecimal(breaksRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); + double shutdownRate = terminalRunningInfoVO.getShutdown().doubleValue() / terminalRunningInfoVO.getNumberOfTerminals() * 100; + terminalRunningInfoVO.setShutdownRate(new BigDecimal(shutdownRate).setScale(2, RoundingMode.HALF_UP).doubleValue()); + } + terminalRunningInfoVO.setOnlineRate(computingDeviceOnlineRate(pqsOnlinerateList).apply(deviceIndexes)); + return terminalRunningInfoVO; + }).sorted(TerminalRunningInfoVO.sortAscAreaName()) .collect(Collectors.toCollection(() -> Collections.synchronizedList(new ArrayList<>()))); - + Integer terminalSum = terminalRun.stream().mapToInt(TerminalRunningInfoVO::getNumberOfTerminals) .sum(); Long normalSum = terminalRun.stream().mapToLong(TerminalRunningInfoVO::getNormal) @@ -295,17 +341,17 @@ public class AreaLineServiceImpl implements AreaLineService { .sum(); Long shutdownSum = terminalRun.stream().mapToLong(TerminalRunningInfoVO::getShutdown) .sum(); - Double normalRateSum = 0.0,breaksRateSum = 0.0,shutdownRateSum = 0.0; - if (terminalSum!=0) { - normalRateSum = new BigDecimal(normalSum.doubleValue() / terminalSum *100).setScale(2, RoundingMode.HALF_UP).doubleValue(); - breaksRateSum = new BigDecimal(breaksSum.doubleValue() / terminalSum *100).setScale(2, RoundingMode.HALF_UP).doubleValue(); - shutdownRateSum = new BigDecimal(shutdownSum.doubleValue() / terminalSum *100).setScale(2, RoundingMode.HALF_UP).doubleValue(); + Double normalRateSum = 0.0, breaksRateSum = 0.0, shutdownRateSum = 0.0; + if (terminalSum != 0) { + normalRateSum = new BigDecimal(normalSum.doubleValue() / terminalSum * 100).setScale(2, RoundingMode.HALF_UP).doubleValue(); + breaksRateSum = new BigDecimal(breaksSum.doubleValue() / terminalSum * 100).setScale(2, RoundingMode.HALF_UP).doubleValue(); + shutdownRateSum = new BigDecimal(shutdownSum.doubleValue() / terminalSum * 100).setScale(2, RoundingMode.HALF_UP).doubleValue(); } Double onlineRateAvg = computingDeviceOnlineRate(pqsOnlinerateList).apply(deviceIndexList); return TerminalRunningVO.buildVO(terminalSum, normalSum, normalRateSum, breaksSum, breaksRateSum, shutdownSum, shutdownRateSum, onlineRateAvg, terminalRun); } - + /** * 计算装置在线率,在线率计算公式 * OnlineRate = OnLineMin/( OnLineMin+ OffLineMin) * 100%; @@ -318,7 +364,7 @@ public class AreaLineServiceImpl implements AreaLineService { List value = pqsOnlinerateList.stream() .filter(t -> deviceIndexes.contains(t.getDevId())) .collect(Collectors.toList()); - + int onlineSum = value.stream().mapToInt(PqsOnlinerate::getOnlinemin).sum(); int offlineSum = value.stream().mapToInt(PqsOnlinerate::getOfflinemin).sum(); BigDecimal b1 = new BigDecimal(onlineSum); @@ -330,7 +376,7 @@ public class AreaLineServiceImpl implements AreaLineService { return b1.divide(b1.add(b2), 4, RoundingMode.HALF_UP).multiply(c).doubleValue(); }; } - + /** * 根据终端运行状态(0:投运;1:热备用;2:停运)查询数据数量 * @@ -343,7 +389,7 @@ public class AreaLineServiceImpl implements AreaLineService { .filter(t -> deviceIndexes.contains(t.getId())) .count(); } - + public List getContion(DeviceInfoParam.BusinessParam deviceInfoParam, List lineIndexs) { // 组装sql语句 StringBuilder stringBuilder = new StringBuilder(); @@ -366,4 +412,69 @@ public class AreaLineServiceImpl implements AreaLineService { List eventdetailList = influxDBResultMapper.toPOJO(result, EventHeatDeatilVO.class); return eventdetailList; } + + public Float getSarfiValue(String startTime, String endTime, Float fvalue, String id) { + Float retList = 0f; + //组装sql语句 + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and "); + stringBuilder.append("line_id = '").append(id).append("'").append(" and event_value <=").append(fvalue).append(InfluxDBPublicParam.TIME_ZONE); + String sql = "select mean(event_value) from " + InfluxDBPublicParam.PQS_EVENT_DETAIL + " where " + stringBuilder.toString(); + QueryResult queryResult = influxDbUtils.query(sql); + List results = queryResult.getResults(); + if (results == null || results.isEmpty()) { + return retList; + } + QueryResult.Result result = results.get(0); + List seriess = result.getSeries(); + if (seriess == null || seriess.isEmpty()) { + return retList; + } + QueryResult.Series series = seriess.get(0); + List> values = series.getValues(); + for (List columnValue : values) { + retList = BigDecimal.valueOf(Float.parseFloat(columnValue.get(1).toString())).setScale(4, BigDecimal.ROUND_HALF_UP).floatValue(); + } + return retList; + } + + public Integer getSarfiCount(String startTime, String endTime, Float fvalue, String id) { + Integer retList = 0; + //组装sql语句 + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and "); + stringBuilder.append("line_id = '").append(id).append("'").append(" and event_value <=").append(fvalue).append(" and persist_time<6000").append(InfluxDBPublicParam.TIME_ZONE); + String sql = "select count(*) from " + InfluxDBPublicParam.PQS_EVENT_DETAIL + " where " + stringBuilder.toString(); + QueryResult queryResult = influxDbUtils.query(sql); + List results = queryResult.getResults(); + if (results == null || results.isEmpty()) { + return retList; + } + QueryResult.Result result = results.get(0); + List seriess = result.getSeries(); + if (seriess == null || seriess.isEmpty()) { + return retList; + } + QueryResult.Series series = seriess.get(0); + List> values = series.getValues(); + for (List columnValue : values) { + retList = (Integer) columnValue.get(1); + } + return retList; + } + + public List getEventDetailInfo(String id, Float fvalue, String startTime, String endTime) { + //组装sql语句 + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(startTime))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(endTime))).append("' and "); + //sql语句 + stringBuilder.append("line_id ='").append(id).append("'").append(" and event_value <=").append(fvalue).append(" and persist_time < 60000").append(" tz('Asia/Shanghai')"); + + String sql = "select * from pqs_eventdetail where " + stringBuilder; + //获取暂降事件 + QueryResult result = influxDbUtils.query(sql); + InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper(); + List eventDetailList = influxDBResultMapper.toPOJO(result, EventDetail.class); + return eventDetailList; + } }