Browse Source

测试切入切出风速

malijun 8 months ago
parent
commit
0d8c9a979a

+ 116 - 0
ruoyi-admin/src/test/java/com/ruoyi/ZhiBiaoCalculation.java

@@ -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);
+
+                }
+
+            }
+
+        });
+    }
+
+
+}

+ 4 - 1
universal-computing-platform/src/main/java/com/ruoyi/ucp/entity/PointInfo.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
 import lombok.Data;
+import org.springframework.stereotype.Component;
 
 import java.io.Serializable;
 import java.util.List;
@@ -19,7 +21,8 @@ import java.util.List;
  */
 @Data
 @TableName("point_info")
-public class PointInfo implements Serializable {
+@Component
+public class PointInfo extends Model<PointInfo> {
 
     private static final long serialVersionUID = 1L;