|
@@ -0,0 +1,116 @@
|
|
|
+package com.ruoyi;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.ruoyi.ucp.entity.PointData;
|
|
|
+import com.ruoyi.ucp.entity.PointInfo;
|
|
|
+import com.ruoyi.ucp.feign.AdapterApi;
|
|
|
+import org.junit.Test;
|
|
|
+import org.junit.runner.RunWith;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.boot.test.context.SpringBootTest;
|
|
|
+import org.springframework.test.context.junit4.SpringRunner;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Author: malijun
|
|
|
+ * Data : 2024: 07: 01
|
|
|
+ * 指标计算
|
|
|
+ **/
|
|
|
+
|
|
|
+@SpringBootTest
|
|
|
+@RunWith(SpringRunner.class)
|
|
|
+public class ZhiBiaoCalculation {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private JavaFunctionJobHandler javaFunctionJobHandler;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PointInfo pointInfo;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AdapterApi adapter;
|
|
|
+
|
|
|
+
|
|
|
+ //切入切出风速
|
|
|
+ @Test
|
|
|
+ public void cutInWindSpeed() {
|
|
|
+ //date当天零点
|
|
|
+ DateTime timeNow = DateUtil.beginOfDay(new Date());
|
|
|
+ //date昨天零点
|
|
|
+ DateTime timeBegin = DateUtil.offsetDay(timeNow, -1);
|
|
|
+ List<PointInfo> turbineZt = javaFunctionJobHandler.calcTurbineAizt(timeBegin, timeNow, 60);
|
|
|
+ List<PointInfo> turbineZtDI = javaFunctionJobHandler.calcTurbineDizt(timeBegin, timeNow, 60);
|
|
|
+ turbineZt.addAll(turbineZtDI);
|
|
|
+
|
|
|
+ //所有风机的风速测点
|
|
|
+ QueryWrapper<PointInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("uniformCode", "AI066");
|
|
|
+ List<PointInfo> pointInfos = pointInfo.selectList(queryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ //遍历每台风机,取出每台风机的pointDatas
|
|
|
+ turbineZt.forEach(turbine -> {
|
|
|
+ List<PointData> pointDatas = turbine.getPointDatas();
|
|
|
+
|
|
|
+ //风速测点key
|
|
|
+ AtomicReference<String> windSpeedKey = null;
|
|
|
+
|
|
|
+ //遍历pointInfos,找出pointData1的id和pointInfos中相等的,取出pointInfo的pointKey
|
|
|
+ pointInfos.forEach(pointInfo -> {
|
|
|
+ if (Objects.equals(turbine.getTurbineId(), pointInfo.getTurbineId())) {
|
|
|
+ windSpeedKey.set(pointInfo.getPointKey());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ //遍历pointDatas,取出当前状态和后一个状态
|
|
|
+ for (int i = 1; i < pointDatas.size(); i++) {
|
|
|
+ PointData pointData1 = pointDatas.get(i);
|
|
|
+ PointData pointData2 = pointDatas.get(i + 1);
|
|
|
+ double value1 = pointData1.getValue();
|
|
|
+ double value2 = pointData2.getValue();
|
|
|
+ //切入时间
|
|
|
+ long ts1;
|
|
|
+ //切出时间
|
|
|
+ long ts2;
|
|
|
+
|
|
|
+ //如果1的值为0,2的值为2,则为切入状态
|
|
|
+ if (value1 == 0 && value2 == 2) {
|
|
|
+ ts1 = pointData2.getTs();
|
|
|
+ String stringDate = DateUtil.date(ts1).toString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ System.out.println(turbine.getTurbineId() + "切入" + stringDate);
|
|
|
+ //切入时间前5分钟
|
|
|
+ long ts11 = ts1 - 300000;
|
|
|
+ //根据风速key,从适配器取切入前5分钟的所有风速
|
|
|
+ List<PointData> pointDatas1 = adapter.getHistorySnap(javaFunctionJobHandler.goldenUri(), windSpeedKey.get(), ts11, ts1, 10);
|
|
|
+ //平均所有风速即为平均切入风速
|
|
|
+ double avgCutInWindSpeed = pointDatas1.stream().mapToDouble(PointData::getValue).average().orElse(0);
|
|
|
+ System.out.println(turbine.getTurbineId() + "切入风速" + avgCutInWindSpeed);
|
|
|
+ }
|
|
|
+
|
|
|
+ //切出
|
|
|
+ if (value1 == 2 && value2 != 2) {
|
|
|
+ ts2 = pointData2.getTs();
|
|
|
+ String stringDate = DateUtil.date(ts2).toString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ System.out.println(turbine.getTurbineId() + "切出" + stringDate);
|
|
|
+ //切出时间前5分钟
|
|
|
+ long ts22 = ts2 - 300000;
|
|
|
+ List<PointData> pointDatas2 = adapter.getHistorySnap(javaFunctionJobHandler.goldenUri(), windSpeedKey.get(), ts22, ts2, 10);
|
|
|
+ double avgCutOutWindSpeed = pointDatas2.stream().mapToDouble(PointData::getValue).average().orElse(0);
|
|
|
+ System.out.println(turbine.getTurbineId() + "切出风速" + avgCutOutWindSpeed);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|