From 8f43ce26799c7c1b490507061fcc3c7d1b9e84e2 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期四, 10 四月 2025 15:30:37 +0800
Subject: [PATCH] 电池温度告警更新

---
 src/main/java/com/whyc/service/BattStationTempAlarmService.java |   66 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/whyc/service/BattStationTempAlarmService.java b/src/main/java/com/whyc/service/BattStationTempAlarmService.java
index a9d4e23..cafb8e0 100644
--- a/src/main/java/com/whyc/service/BattStationTempAlarmService.java
+++ b/src/main/java/com/whyc/service/BattStationTempAlarmService.java
@@ -8,18 +8,25 @@
 import com.whyc.dto.Response;
 import com.whyc.mapper.BattStationTempAlarmMapper;
 import com.whyc.pojo.db_alarm.BattStationTempAlarm;
+import com.whyc.pojo.db_batt.BattMonsLocation;
 import com.whyc.util.HikTempUtil;
 import com.whyc.util.PointUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class BattStationTempAlarmService {
 
     @Resource
     private BattStationTempAlarmMapper mapper;
+
+    @Autowired
+    private BattMonsLocationService battMonsLocationService;
+
 
     public Response<PageInfo<BattStationTempAlarm>> getPage(int pageNum, int pageSize, Integer level) {
         PageHelper.startPage(pageNum,pageSize);
@@ -55,10 +62,69 @@
             alarm.setPointPercentage(pointPercentage);
 
         });*/
+        /**鍒ゆ柇 鏈�楂樻俯搴︾偣 鍦� 鍥涗釜鐐瑰舰鎴愮殑妗� 鍐呴儴*/
+        List<BattMonsLocation> batteryLocations  = battMonsLocationService.getList();
+        list.forEach(alarm->{
+            String maxTempPointStr = alarm.getMaxTempPoint();
+            if(maxTempPointStr.contains(",")){ // 涓囦竴鏈夊涓偣,鍙栫涓�涓偣
+                maxTempPointStr = maxTempPointStr.split(",")[0];
+            }
+            String[] split = maxTempPointStr.split("\\*");
+            Point tempPoint = new Point(Integer.valueOf(split[0]),Integer.valueOf(split[1]));
+            List<BattMonsLocation> battGroupLocations = batteryLocations.stream().filter(location -> location.getBattGroupId().intValue() == alarm.getBattGroupId()).collect(Collectors.toList());
+            for (int i = 0; i < battGroupLocations.size(); i++) {
+                BattMonsLocation battMonsLocation = batteryLocations.get(i);
+                String battMonsPoints = battMonsLocation.getBattMonsPoints();
+                //battMonsPoints涓哄洓杈瑰舰鐨勫洓涓潗鏍囩偣,绀轰緥: x1*y1,x2*y2,x3*y3,x4*y4
+
+                // 瑙f瀽鍥涜竟褰㈢殑鍥涗釜椤剁偣鍧愭爣
+                String[] points = battMonsPoints.split(",");
+                int[] pointsX = new int[4];
+                int[] pointsY = new int[4];
+                for (int j = 0; j < points.length; j++) {
+                    String[] xy = points[j].split("\\*");
+                    pointsX[j] = Integer.parseInt(xy[0]);
+                    pointsY[j] = Integer.parseInt(xy[1]);
+                }
+
+                // 鍒ゆ柇鐐规槸鍚﹀湪鍥涜竟褰㈠唴
+                boolean isInside = PointUtil.isPointInQuadrilateral(tempPoint.getX(), tempPoint.getY(),pointsX, pointsY);
+                //System.out.println("鐐规槸鍚﹀湪鍥涜竟褰㈠唴: " + isInside);
+                if(isInside){
+                    alarm.setBattMonsLocation(battMonsLocation);
+                    break;
+                }
+            }
+
+        });
         PageInfo<BattStationTempAlarm> pageInfo = new PageInfo<>(list);
         return new Response<PageInfo<BattStationTempAlarm>>().set(1,pageInfo);
     }
 
+    public static void main(String[] args) {
+            String battMonsPoints = "0*0,0*4,4*4,4*0";
+            String tempPointStr = "1*4";
+
+            // 瑙f瀽鍥涜竟褰㈢殑鍥涗釜椤剁偣鍧愭爣
+            String[] points = battMonsPoints.split(",");
+            int[] pointsX = new int[4];
+            int[] pointsY = new int[4];
+            for (int i = 0; i < points.length; i++) {
+                String[] xy = points[i].split("\\*");
+                pointsX[i] = Integer.parseInt(xy[0]);
+                pointsY[i] = Integer.parseInt(xy[1]);
+            }
+
+            // 瑙f瀽寰呭垽鏂殑鐐瑰潗鏍�
+            String[] tempPointArray = tempPointStr.split("\\*");
+            int tx = Integer.parseInt(tempPointArray[0]);
+            int ty = Integer.parseInt(tempPointArray[1]);
+
+            // 鍒ゆ柇鐐规槸鍚﹀湪鍥涜竟褰㈠唴
+            boolean isInside = PointUtil.isPointInQuadrilateral(tx, ty,pointsX, pointsY);
+            System.out.println("鐐规槸鍚﹀湪鍥涜竟褰㈠唴: " + isInside);
+    }
+
     public Response<PageInfo<BattStationTempAlarm>> getHisPage(int pageNum, int pageSize, Integer level) {
         PageHelper.startPage(pageNum,pageSize);
         List<BattStationTempAlarm> list = mapper.getHisList(level);

--
Gitblit v1.9.1