From 7a880de423619dc266a60dc643794ba626f7131f Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 22 八月 2023 10:48:55 +0800
Subject: [PATCH] 修复sdk请求用户为null的bug

---
 ard-work/src/main/java/com/ruoyi/utils/tools/Point.java                                   |   23 +++++++++++
 ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java              |   19 +++++++++
 ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java                                 |   26 ++++++------
 ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java          |    4 +-
 ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java                   |    4 +-
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java |    5 +-
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java    |    5 +-
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java           |    4 ++
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java                 |    8 ++-
 9 files changed, 74 insertions(+), 24 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
index 905531f..a9d10ef 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ruoyi.scheduling.domian.SchedulingParam;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.utils.tools.GisTool;
+import com.ruoyi.utils.tools.Point;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -183,7 +184,7 @@
         List<SysUser> filteredList = new ArrayList<>();
         try {
             Long deptId = SecurityUtils.getLoginUser().getUser().getDeptId();
-            List<Point2D> partitionLocation = param.getPartitionLocation();
+            List<Point> partitionLocation = param.getPartitionLocation();
 
             SysUser user = new SysUser();
             user.setDeptId(deptId);
@@ -201,7 +202,7 @@
                     if (lon == null || lat == null) {
                         continue;
                     }
-                    Point2D point2D=new Point2D.Double(lon,lat);
+                    Point point2D=new Point(lon,lat);
                     boolean inPolygon = GisTool.isInPolygon(point2D, partitionLocation);
                     if (inPolygon) {
                         Map<String, Object> params = new HashMap<>();
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 6792122..1af864c 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -26,6 +26,7 @@
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.utils.tools.GisTool;
+import com.ruoyi.utils.tools.Point;
 import com.sun.org.apache.bcel.internal.generic.NEW;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -357,7 +358,7 @@
     public List<ArdCameras> getNearCamerasWithPolygon(SchedulingParam param) {
         try {
             Long deptId=SecurityUtils.getLoginUser().getUser().getDeptId();
-            List<Point2D> partitionLocation = param.getPartitionLocation();
+            List<Point> partitionLocation = param.getPartitionLocation();
             if(partitionLocation==null)
             {
                 log.debug("澶氳竟褰㈠潗鏍囬泦鍚堜负绌�");
@@ -374,7 +375,7 @@
                     continue;
                 }
                 /*鍒ゆ柇鍧愭爣鏄惁鍦ㄥ杈瑰舰鑼冨洿鍐�*/
-                Point2D camPosition=new Point2D.Double(camera.getLongitude(), camera.getLatitude());
+                Point camPosition=new Point(camera.getLongitude(), camera.getLatitude());
                 boolean inPolygon = GisTool.isInPolygon(camPosition, partitionLocation);
                 if (inPolygon) {
                     /*鑾峰彇閫氶亾鍒楄〃*/
diff --git a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
index 8bd7d2f..5ea793d 100644
--- a/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/hiksdk/controller/SdkController.java
@@ -83,6 +83,7 @@
     @Log(title = "鍦ㄧ嚎鐘舵��", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult getOnlineState(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.isOnLine(cmd));
     }
 
@@ -104,6 +105,7 @@
     @Log(title = "璋冪敤棰勭疆鐐�", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult gotoPreset(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.gotoPreset(cmd));
     }
 
@@ -113,6 +115,7 @@
     @Log(title = "璁剧疆棰勭疆鐐�", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult setPreset(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.setPreset(cmd));
     }
 
@@ -122,6 +125,7 @@
     @Log(title = "鑾峰彇鑱氱劍鍊�", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult getFocusPos(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         Map<String, Object> Map = sdk.getFocusPos(cmd);
         return AjaxResult.success("鑾峰彇鑱氱劍鍊�", Map);
     }
@@ -132,6 +136,7 @@
     @Log(title = "璁剧疆鑱氱劍鍊�", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult setFocusPos(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.setFocusPos(cmd));
     }
 
@@ -141,6 +146,7 @@
     @Log(title = "鑾峰彇PTZ", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult GetPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         Map<String, Object> ptzMap = sdk.getPtz(cmd);
         return AjaxResult.success("鑾峰彇ptz", ptzMap);
     }
@@ -151,6 +157,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"})
     public @ResponseBody
     AjaxResult GetPTZScope(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         Map<String, Object> ptzMap = sdk.getPtzScope(cmd);
         return AjaxResult.success("鑾峰彇ptz鑼冨洿", ptzMap);
     }
@@ -171,6 +178,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.targetPosition"})
     public @ResponseBody
     AjaxResult setTargetPosition(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.guideTargetPosition(cmd));
     }
 
@@ -181,6 +189,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"})
     public @ResponseBody
     AjaxResult SetZeroPTZ(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.setZeroPtz(cmd));
     }
 
@@ -210,6 +219,7 @@
     @Log(title = "鑾峰彇浜戝彴閿佸畾淇℃伅", businessType = BusinessType.CONTROL)
     public @ResponseBody
     AjaxResult getPTZLockInfo(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         int byWorkMode = sdk.getPTZLockInfo(cmd);
         if (byWorkMode == 0) {
             return AjaxResult.success("浜戝彴閿佸畾鐘舵�侊細瑙i攣");
@@ -226,6 +236,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"})
     public @ResponseBody
     AjaxResult defogcfg(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.controlDefogcfg(cmd));
     }
 
@@ -235,6 +246,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"})
     public @ResponseBody
     AjaxResult infrarecfg(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.controlInfrarecfg(cmd));
     }
 
@@ -244,6 +256,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"})
     public @ResponseBody
     AjaxResult enableFocusMode(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.controlFocusMode(cmd));
     }
 
@@ -251,6 +264,7 @@
     @PostMapping("/getFocusMode")
     public @ResponseBody
     AjaxResult getFocusMode(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         String focusMode = sdk.getFocusMode(cmd);
         return AjaxResult.success(focusMode);
     }
@@ -261,6 +275,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"})
     public @ResponseBody
     AjaxResult HeateRpwron(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.controlPTHeateRpwron(cmd));
     }
 
@@ -271,12 +286,14 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"})
     public @ResponseBody
     AjaxResult CameraDeicing(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         return toAjax(sdk.controlCameraDeicing(cmd));
     }
 
     @PostMapping("/captureJPEGPicture")
     public @ResponseBody
     AjaxResult captureJPEGPicture(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         String base64Str = sdk.captureJPEGPicture(cmd);
         return toAjaxString(base64Str, "鐩告満鎶撳浘");
     }
@@ -287,6 +304,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum"})
     public @ResponseBody
     AjaxResult picCutCate(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         String path = sdk.picCutCate(cmd);
         return toAjaxString(path, "鐩告満鎶撳浘");
     }
@@ -297,6 +315,7 @@
     @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.channelNum", "cmd.enable"})
     public @ResponseBody
     AjaxResult record(@RequestBody CameraCmd cmd) {
+        cmd.setOperator(SecurityUtils.getUserId());
         String path = sdk.record(cmd);
         return toAjaxString(path, "鎵嬪姩褰曞儚");
     }
diff --git a/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java b/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java
index 5a75f3b..4727673 100644
--- a/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java
+++ b/ard-work/src/main/java/com/ruoyi/scheduling/controller/SchedulingController.java
@@ -51,9 +51,9 @@
 
         return AjaxResult.success(nearMap);
     }
-    @GetMapping("/getPolygonVehiPersonCam")
+    @PostMapping("/getPolygonVehiPersonCam")
     @ApiOperation("鑾峰彇闄勮繎鐨勮溅浜虹浉鏈�(澶氳竟褰�)")
-    AjaxResult getPolygonVehiPersonCam(SchedulingParam param) {
+    AjaxResult getPolygonVehiPersonCam(@RequestBody SchedulingParam param) {
         Map<String, Object> nearMap = new HashMap<>();
         List<Map<String, Object>> Cars = iArdSyCarService.getNearCarWithPolygon(param);
         nearMap.put("car", Cars);
diff --git a/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java b/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
index 0c85e9d..63840af 100644
--- a/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
+++ b/ard-work/src/main/java/com/ruoyi/scheduling/domian/SchedulingParam.java
@@ -1,8 +1,8 @@
 package com.ruoyi.scheduling.domian;
 
+import com.ruoyi.utils.tools.Point;
 import lombok.Data;
 
-import java.awt.geom.Point2D;
 import java.util.List;
 
 /**
@@ -20,5 +20,5 @@
     Double longitude;
     Double latitude;
     //澶氳竟褰㈠潗鏍囬泦鍚�
-    List<Point2D> partitionLocation;
+    List<Point> partitionLocation;
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
index cb494e3..6624a81 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdSyCarServiceImpl.java
@@ -6,6 +6,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.function.Predicate;
@@ -17,6 +18,7 @@
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.utils.tools.Point;
 import com.ruoyi.scheduling.domian.SchedulingParam;
 import com.ruoyi.sy.domain.ArdSyCarDay;
 import com.ruoyi.sy.mapper.ArdSyCarDayMapper;
@@ -1099,7 +1101,7 @@
     public List<Map<String, Object>> getNearCarWithPolygon(SchedulingParam param) {
         List<Map<String, Object>> filteredList = new ArrayList<>();
         try {
-            List<Point2D> partitionLocation = param.getPartitionLocation();
+            List<Point> partitionLocation = param.getPartitionLocation();
             if (partitionLocation == null) {
                 log.debug("澶氳竟褰㈠潗鏍囬泦鍚堜负绌�");
                 return null;
@@ -1141,8 +1143,8 @@
                 List<Map<String, Object>> carGPSMap = (List<Map<String, Object>>) carGPSTrack.get("list");
                 Double lng = Double.valueOf((String) carGPSMap.get(0).get("lng"));
                 Double lat = Double.valueOf((String) carGPSMap.get(0).get("lat"));
-                Point2D point2D = new Point2D.Double(lng, lat);
-                boolean inPolygon = GisTool.isInPolygon(point2D, partitionLocation);
+                Point point = new Point(lng, lat);
+                boolean inPolygon = GisTool.isInPolygon(point, partitionLocation);
                 if (inPolygon) {
                     carMap.put("longitude", lng);
                     carMap.put("latitude", lat);
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
index bb36308..4682ff7 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/GisTool.java
@@ -36,14 +36,14 @@
 
     public static void main(String[] args) {
         // 琚娴嬬殑缁忕含搴︾偣
-        Point2D point2D= new Point2D.Double(126.649261,45.687377);
+        Point point= new Point(126.649261,45.687377);
         // 鍟嗕笟鍖哄煙锛堢櫨搴﹀杈瑰舰鍖哄煙缁忕含搴﹂泦鍚堬級
-        List<Point2D> partitionLocation = new ArrayList<>();
-        partitionLocation.add(new Point2D.Double(126.64459,45.688548));
-        partitionLocation.add(new Point2D.Double(126.653376,45.68938));
-        partitionLocation.add(new Point2D.Double(126.645776,45.685048));
-        partitionLocation.add(new Point2D.Double(126.654184,45.685778));
-        System.out.println(isInPolygon(point2D,partitionLocation));
+        List<Point> partitionLocation = new ArrayList<>();
+        partitionLocation.add(new Point(126.64459,45.688548));
+        partitionLocation.add(new Point(126.653376,45.68938));
+        partitionLocation.add(new Point(126.645776,45.685048));
+        partitionLocation.add(new Point(126.654184,45.685778));
+        System.out.println(isInPolygon(point,partitionLocation));
     }
 
     /**
@@ -52,17 +52,17 @@
      * @param partitionLocation 鍖哄煙椤剁偣
      * @return
      */
-    public static boolean isInPolygon(Point2D orderLocation,List<Point2D> partitionLocation){
+    public static boolean isInPolygon(Point orderLocation,List<Point> partitionLocation){
 
-        double p_x =orderLocation.getX();
-        double p_y =orderLocation.getY();
+        double p_x =orderLocation.getLongitude();
+        double p_y =orderLocation.getLatitude();
         Point2D.Double point = new Point2D.Double(p_x, p_y);
 
         List<Point2D.Double> pointList= new ArrayList<Point2D.Double>();
 
-        for (Point2D points : partitionLocation){
-            double polygonPoint_x=points.getX();
-            double polygonPoint_y=points.getY();
+        for (Point points : partitionLocation){
+            double polygonPoint_x=points.getLongitude();
+            double polygonPoint_y=points.getLatitude();
             Point2D.Double polygonPoint = new Point2D.Double(polygonPoint_x,polygonPoint_y);
             pointList.add(polygonPoint);
         }
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java b/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
new file mode 100644
index 0000000..6035a64
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/Point.java
@@ -0,0 +1,23 @@
+package com.ruoyi.utils.tools;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @Description:
+ * @ClassName: Point
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�08鏈�22鏃�9:56:58
+ * @Version: 1.0
+ **/
+@Data
+public class Point{
+    private static final long serialVersionUID = 1L;
+    private Double longitude;
+    private Double latitude;
+
+    public Point(Double x, Double y) {
+        this.longitude = x;
+        this.latitude = y;
+    }
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
index 156446a..79b736c 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/SdkOperateAspect.java
@@ -100,6 +100,10 @@
                     } else {
                         /*褰撳墠鎺у埗鑰呬负鏅�氱敤鎴�*/
                         SysUser sysUser = sysUserService.selectUserById(currentOperator);
+                        if(StringUtils.isNull(sysUser))
+                        {
+                            return false;
+                        }
                         currentLevel = Integer.valueOf(sysUser.getCameraPriority());
                     }
                     Integer operatorLevel = 0;//鑾峰彇鐢宠鑰呯殑浼樺厛绾�

--
Gitblit v1.9.3