From b06ac186d84a7cb758314004d1e7328671b3db55 Mon Sep 17 00:00:00 2001
From: aijinhui <aijinhui>
Date: 星期四, 02 十一月 2023 17:30:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ard-work/pom.xml                                                                      |    5 -
 ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java    |   73 ++++++++++++++
 ard-work/src/main/java/com/ruoyi/alarm/radar/service/ArdRadarService.java             |    5 +
 ruoyi-admin/src/main/resources/i18n/messages_en_US.properties                         |   37 +++++++
 ard-work/src/main/java/com/ruoyi/device/radar/controller/ArdEquipRadarController.java |   16 ++
 ard-work/src/main/java/com/ruoyi/utils/forest/RadarClient.java                        |   16 +++
 ruoyi-admin/src/main/java/com/ruoyi/web/core/config/I18nConfig.java                   |   46 +++++++++
 ard-work/src/main/java/com/ruoyi/device/radar/domain/GuideInfo.java                   |   15 +++
 ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties                         |   37 +++++++
 ruoyi-common/src/main/java/com/ruoyi/common/filter/MyI18nInterceptor.java             |   41 ++++++++
 ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java                 |    6 +
 11 files changed, 290 insertions(+), 7 deletions(-)

diff --git a/ard-work/pom.xml b/ard-work/pom.xml
index cb6af83..de2d1f7 100644
--- a/ard-work/pom.xml
+++ b/ard-work/pom.xml
@@ -32,11 +32,6 @@
         </dependency>
         <!--娴峰悍褰曞儚鏈轰簩娆″紑鍙戜緷璧杍ar鍖�-->
         <dependency>
-            <groupId>net.java.jna</groupId>
-            <artifactId>jna</artifactId>
-            <version>1.0.0</version>
-        </dependency>
-        <dependency>
             <groupId>net.java.examples</groupId>
             <artifactId>examples</artifactId>
             <version>1.0.0</version>
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radar/service/ArdRadarService.java b/ard-work/src/main/java/com/ruoyi/alarm/radar/service/ArdRadarService.java
new file mode 100644
index 0000000..1e51b9f
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radar/service/ArdRadarService.java
@@ -0,0 +1,5 @@
+package com.ruoyi.alarm.radar.service;
+
+public interface ArdRadarService {
+    void forceGuide(String msg);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java b/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
new file mode 100644
index 0000000..8abcf5c
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/alarm/radar/service/impl/ArdRadarServiceImpl.java
@@ -0,0 +1,73 @@
+package com.ruoyi.alarm.radar.service.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.alarm.radar.service.ArdRadarService;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.service.ICameraSdkService;
+import com.ruoyi.device.radar.mapper.ArdEquipRadarMapper;
+import com.ruoyi.storage.minio.domain.jsonbean.JsonsRootBean;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: 闆疯揪涓氬姟
+ * @ClassName: ArdRadarServiceImpl
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�11鏈�02鏃�9:00:08
+ **/
+@Slf4j(topic = "guideQueue")
+@Service
+public class ArdRadarServiceImpl implements ArdRadarService {
+    @Resource
+    ICameraSdkService iCameraSdkService;
+    @Resource
+    ArdEquipRadarMapper ardEquipRadarMapper;
+
+    /**
+     * 寮傛鎵ц寮哄埗寮曞
+     * 鍒樿嫃涔�
+     * 2023/11/2 9:00:55
+     */
+    @Override
+    @Async
+    public void forceGuide(String msg) {
+        try {
+            Map<String, Object> msgMap = JSONObject.parseObject(msg, Map.class);
+            if (msgMap != null) {
+                Double p = Double.parseDouble(msgMap.get("p").toString());
+                Double t = Double.parseDouble(msgMap.get("t").toString());
+                Double z = Double.parseDouble(msgMap.get("z").toString());
+                String radarId = msgMap.get("radarId").toString();
+                //鑾峰彇闆疯揪鎵�鍦ㄥ涓婄殑澶у厜鐢�
+                String cameraIdWithTower = ardEquipRadarMapper.getCameraByRadar(radarId);
+                if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
+                    log.debug("鑾峰彇鍒伴浄杈惧涓婄殑鍏夌數:" + cameraIdWithTower);
+                    //濡傛灉闆疯揪濉斾笂鏈夊厜鐢�
+                    CameraCmd cmd = new CameraCmd(cameraIdWithTower, 1);
+                    cmd.setOperator("sys_radar_force");
+                    Map<String, Double> ptzMap = new HashMap<>();
+                    ptzMap.put("p", p);
+                    ptzMap.put("t", t);
+                    ptzMap.put("z", z);
+                    cmd.setPtzMap(ptzMap);
+                    boolean res = iCameraSdkService.setPtz(cmd);
+                    if (res) {
+                        log.debug("寮哄埗寮曞鎴愬姛");
+                    } else {
+                        log.debug("寮哄埗寮曞澶辫触");
+                    }
+                } else {
+                    log.debug("鏈幏鍙栧埌闆疯揪濉斾笂鐨勫厜鐢�");
+                }
+            }
+        } catch (Exception ex) {
+            log.error("寮哄埗寮曞寮傚父:"+ ex.getMessage());
+        }
+    }
+}
diff --git a/ard-work/src/main/java/com/ruoyi/device/radar/controller/ArdEquipRadarController.java b/ard-work/src/main/java/com/ruoyi/device/radar/controller/ArdEquipRadarController.java
index ccbbc0a..62de8d8 100644
--- a/ard-work/src/main/java/com/ruoyi/device/radar/controller/ArdEquipRadarController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/radar/controller/ArdEquipRadarController.java
@@ -1,9 +1,12 @@
 package com.ruoyi.device.radar.controller;
 
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.radar.domain.GuideInfo;
+import com.ruoyi.utils.forest.RadarClient;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -36,9 +39,10 @@
 @Api(tags = "闆疯揪绠$悊鎺ュ彛")
 public class ArdEquipRadarController extends BaseController
 {
-    @Autowired
+    @Resource
     private IArdEquipRadarService ardEquipRadarService;
-
+    @Resource
+    private RadarClient radarClient;
     /**
      * 鏌ヨradar鍒楄〃
      */
@@ -112,4 +116,12 @@
     {
         return toAjax(ardEquipRadarService.deleteArdEquipRadarByIds(ids));
     }
+
+    @ApiOperation(value = "瑙掑害寮曞淇℃伅鍙嶉")
+    @PostMapping("/guideInfo")
+    public AjaxResult guideInfoBack(@RequestBody GuideInfo guideInfo)
+    {
+        return radarClient.guideInfoBack(guideInfo);
+    }
+
 }
diff --git a/ard-work/src/main/java/com/ruoyi/device/radar/domain/GuideInfo.java b/ard-work/src/main/java/com/ruoyi/device/radar/domain/GuideInfo.java
new file mode 100644
index 0000000..552aa5b
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/device/radar/domain/GuideInfo.java
@@ -0,0 +1,15 @@
+package com.ruoyi.device.radar.domain;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @ClassName: GuideInfo
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�11鏈�01鏃�15:45:10
+ **/
+@Data
+public class GuideInfo {
+    String radarId;
+    double[] targetPosition;
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/forest/RadarClient.java b/ard-work/src/main/java/com/ruoyi/utils/forest/RadarClient.java
new file mode 100644
index 0000000..6c62313
--- /dev/null
+++ b/ard-work/src/main/java/com/ruoyi/utils/forest/RadarClient.java
@@ -0,0 +1,16 @@
+package com.ruoyi.utils.forest;
+
+import com.dtflys.forest.annotation.BaseRequest;
+import com.dtflys.forest.annotation.JSONBody;
+import com.dtflys.forest.annotation.Post;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.device.radar.domain.GuideInfo;
+
+@BaseRequest(baseURL = "http://127.0.0.1:8088/radar")
+public interface RadarClient {
+    /**
+     * 瑙掑害寮曞淇℃伅鍙嶉
+     */
+    @Post("/guideInfoBack")
+    public AjaxResult guideInfoBack(@JSONBody GuideInfo guideInfo);
+}
diff --git a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
index 7e2a2d3..29965fa 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/mqtt/MqttConsumerCallback.java
@@ -1,6 +1,7 @@
 package com.ruoyi.utils.mqtt;
 
 import com.ruoyi.alarm.global.service.impl.GlobalAlarmServiceImpl;
+import com.ruoyi.alarm.radar.service.ArdRadarService;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.statistical.service.StatisticalService;
 import com.ruoyi.storage.minio.service.IStorageMinioEventService;
@@ -85,6 +86,11 @@
                 StatisticalService statisticalService = SpringUtils.getBean(StatisticalService.class);
                 statisticalService.data(new String(message.getPayload(), StandardCharsets.UTF_8));
             }
+            if (topic.equals("radarForceGuide"))
+            {
+                ArdRadarService ardRadarService = SpringUtils.getBean(ArdRadarService.class);
+                ardRadarService.forceGuide(new String(message.getPayload(), StandardCharsets.UTF_8));
+            }
         } catch (Exception e) {
             log.debug("澶勭悊mqtt娑堟伅寮傚父:" + e);
         }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/I18nConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/I18nConfig.java
new file mode 100644
index 0000000..d0cd0e1
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/I18nConfig.java
@@ -0,0 +1,46 @@
+package com.ruoyi.web.core.config;
+
+import com.ruoyi.common.filter.MyI18nInterceptor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.LocaleResolver;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
+import org.springframework.web.servlet.i18n.SessionLocaleResolver;
+
+import java.util.Locale;
+
+
+@Configuration
+@Slf4j
+public class I18nConfig implements WebMvcConfigurer {
+    @Bean
+    public LocaleResolver localeResolver()
+    {
+        SessionLocaleResolver slr = new SessionLocaleResolver();
+        // 榛樿璇█
+        slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
+        return slr;
+    }
+    //@Bean
+    //public LocaleChangeInterceptor localeChangeInterceptor()
+    //{
+    //    LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
+    //    // 鍙傛暟鍚�
+    //    lci.setParamName("lang");
+    //    return lci;
+    //}
+
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        // 娉ㄥ唽鎷︽埅鍣�
+        MyI18nInterceptor myHandlerInterceptor = new MyI18nInterceptor();
+        InterceptorRegistration loginRegistry = registry.addInterceptor(myHandlerInterceptor);
+        // 鎷︽埅璺緞
+        loginRegistry.addPathPatterns("/**");
+    }
+
+}
diff --git a/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
new file mode 100644
index 0000000..3b74bd8
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
@@ -0,0 +1,37 @@
+#\u9519\u8BEF\u6D88\u606F
+not.null=* Mandatory
+user.jcaptcha.error=Verification code error
+user.jcaptcha.expire=The verification code has expired
+user.not.exists=User does not exist/password error
+user.password.not.match=User does not exist/password error
+user.password.retry.limit.count=Password input error {0} times
+user.password.retry.limit.exceed=Password input error {0} times, account locked for {1} minutes
+user.password.delete=Sorry, your account has been deleted
+user.blocked=The user has been banned. Please contact the administrator
+role.blocked=The role has been banned. Please contact the administrator
+user.logout.success=Exit successfully
+
+length.not.valid=The length must be between {min} and {max} characters
+
+user.username.not.valid=*Composed of 2 to 20 Chinese characters, letters, numbers, or underscores, and must start with a non numeric character
+user.password.not.valid=*5-50 characters
+ 
+user.email.not.valid=Email format error
+user.mobile.phone.number.not.valid=Mobile number format error
+user.login.success=Login successful
+user.register.success=login was successful
+user.notfound=Please log in again
+user.forcelogout=Administrator forced exit, please log in again
+user.unknown.error=Unknown error, please log in again
+
+##\u6587\u4EF6\u4E0A\u4F20\u6D88\u606F
+upload.exceed.maxSize=The uploaded file size exceeds the limit file size< The maximum allowed file size is: {0}MB !
+upload.filename.exceed.length=The maximum length of the uploaded file name is {0} characters
+
+##\u6743\u9650
+no.permission=You do not have permission for data. Please contact the administrator to add permission [{0}]
+no.create.permission=You do not have permission to create data. Please contact the administrator to add permissions [{0}]
+no.update.permission=You do not have permission to modify data. Please contact the administrator to add permissions [{0}]
+no.delete.permission=You do not have permission to delete data. Please contact the administrator to add permissions [{0}]
+no.export.permission=You do not have permission to export data. Please contact the administrator to add permissions [{0}]
+no.view.permission=You do not have permission to view data. Please contact the administrator to add permissions [{0}]
diff --git a/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
new file mode 100644
index 0000000..4098fc9
--- /dev/null
+++ b/ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
@@ -0,0 +1,37 @@
+#閿欒娑堟伅
+not.null=* 蹇呴』濉啓
+user.jcaptcha.error=楠岃瘉鐮侀敊璇�
+user.jcaptcha.expire=楠岃瘉鐮佸凡澶辨晥
+user.not.exists=鐢ㄦ埛涓嶅瓨鍦�/瀵嗙爜閿欒
+user.password.not.match=鐢ㄦ埛涓嶅瓨鍦�/瀵嗙爜閿欒
+user.password.retry.limit.count=瀵嗙爜杈撳叆閿欒{0}娆�
+user.password.retry.limit.exceed=瀵嗙爜杈撳叆閿欒{0}娆★紝甯愭埛閿佸畾{1}鍒嗛挓
+user.password.delete=瀵逛笉璧凤紝鎮ㄧ殑璐﹀彿宸茶鍒犻櫎
+user.blocked=鐢ㄦ埛宸插皝绂侊紝璇疯仈绯荤鐞嗗憳
+role.blocked=瑙掕壊宸插皝绂侊紝璇疯仈绯荤鐞嗗憳
+user.logout.success=閫�鍑烘垚鍔�
+
+length.not.valid=闀垮害蹇呴』鍦▄min}鍒皗max}涓瓧绗︿箣闂�
+
+user.username.not.valid=* 2鍒�20涓眽瀛椼�佸瓧姣嶃�佹暟瀛楁垨涓嬪垝绾跨粍鎴愶紝涓斿繀椤讳互闈炴暟瀛楀紑澶�
+user.password.not.valid=* 5-50涓瓧绗�
+ 
+user.email.not.valid=閭鏍煎紡閿欒
+user.mobile.phone.number.not.valid=鎵嬫満鍙锋牸寮忛敊璇�
+user.login.success=鐧诲綍鎴愬姛
+user.register.success=娉ㄥ唽鎴愬姛
+user.notfound=璇烽噸鏂扮櫥褰�
+user.forcelogout=绠$悊鍛樺己鍒堕��鍑猴紝璇烽噸鏂扮櫥褰�
+user.unknown.error=鏈煡閿欒锛岃閲嶆柊鐧诲綍
+
+##鏂囦欢涓婁紶娑堟伅
+upload.exceed.maxSize=涓婁紶鐨勬枃浠跺ぇ灏忚秴鍑洪檺鍒剁殑鏂囦欢澶у皬锛�<br/>鍏佽鐨勬枃浠舵渶澶уぇ灏忔槸锛歿0}MB锛�
+upload.filename.exceed.length=涓婁紶鐨勬枃浠跺悕鏈�闀縶0}涓瓧绗�
+
+##鏉冮檺
+no.permission=鎮ㄦ病鏈夋暟鎹殑鏉冮檺锛岃鑱旂郴绠$悊鍛樻坊鍔犳潈闄� [{0}]
+no.create.permission=鎮ㄦ病鏈夊垱寤烘暟鎹殑鏉冮檺锛岃鑱旂郴绠$悊鍛樻坊鍔犳潈闄� [{0}]
+no.update.permission=鎮ㄦ病鏈変慨鏀规暟鎹殑鏉冮檺锛岃鑱旂郴绠$悊鍛樻坊鍔犳潈闄� [{0}]
+no.delete.permission=鎮ㄦ病鏈夊垹闄ゆ暟鎹殑鏉冮檺锛岃鑱旂郴绠$悊鍛樻坊鍔犳潈闄� [{0}]
+no.export.permission=鎮ㄦ病鏈夊鍑烘暟鎹殑鏉冮檺锛岃鑱旂郴绠$悊鍛樻坊鍔犳潈闄� [{0}]
+no.view.permission=鎮ㄦ病鏈夋煡鐪嬫暟鎹殑鏉冮檺锛岃鑱旂郴绠$悊鍛樻坊鍔犳潈闄� [{0}]
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/filter/MyI18nInterceptor.java b/ruoyi-common/src/main/java/com/ruoyi/common/filter/MyI18nInterceptor.java
new file mode 100644
index 0000000..836fba0
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/filter/MyI18nInterceptor.java
@@ -0,0 +1,41 @@
+package com.ruoyi.common.filter;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.i18n.LocaleContextHolder;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Locale;
+
+@Slf4j
+public class MyI18nInterceptor implements HandlerInterceptor {
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        final String key = "language";
+        String language = "en_US";//request.getHeader(key);
+        // 鍓嶇浼犻�掔殑language蹇呴』鏄痾h-CN鏍煎紡鐨勶紝涓棿鐨�-蹇呴』瑕佸畬鏁达紝涓嶈兘鍙紶閫抸h鎴杄n
+        log.info("褰撳墠璇█={}",language);
+        Locale locale = new Locale(language.split("_")[0],language.split("_")[1]);
+        // 杩欐牱璧嬪�间互鍚庯紝MessageUtils.message鏂规硶灏变笉鐢ㄤ慨鏀逛簡
+        LocaleContextHolder.setLocale(locale);
+        return true;
+    }
+
+    /**
+     * 璇锋眰澶勭悊涔嬪悗杩涜璋冪敤锛屼絾鏄湪瑙嗗浘琚覆鏌撲箣鍓嶏紙Controller鏂规硶璋冪敤涔嬪悗锛�
+     */
+    @Override
+    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
+    }
+
+    /**
+     * 鍦ㄦ暣涓姹傜粨鏉熶箣鍚庤璋冪敤锛屼篃灏辨槸鍦―ispatcherServlet 娓叉煋浜嗗搴旂殑瑙嗗浘涔嬪悗鎵ц锛堜富瑕佹槸鐢ㄤ簬杩涜璧勬簮娓呯悊宸ヤ綔锛�
+     */
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+    }
+
+}

--
Gitblit v1.9.3