From 1636f02b9cf3f408ebf8b3c4e377237e5b74bf4a Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 26 七月 2024 10:57:30 +0800
Subject: [PATCH] 电磁锁实时状态加入报警详情提交

---
 ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java         |    3 +
 ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java              |    2 
 ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java                |   14 +++++++
 ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java                 |    2 
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java |   26 ++++++-------
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java           |   65 ++++++++++++++++++++++++++++----
 6 files changed, 86 insertions(+), 26 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
index de58874..f525c5c 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -290,7 +290,7 @@
                 }
             }
         };
-        lockCheckTimeTimer.scheduleAtFixedRate(lockCheckTimeTask,date,13000);
+        lockCheckTimeTimer.scheduleAtFixedRate(lockCheckTimeTask,date,7000);
 
         Timer sendTimer = new Timer();//瀹氭椂鍙戦�侀攣鐘舵��
         TimerTask sendLockStateTask = new TimerTask(){
diff --git a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
index fe15822..079d6b9 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/controller/ArdTankLockController.java
@@ -333,6 +333,6 @@
     public AjaxResult processArdTankLockByLockId(@RequestBody Map<String,String> para) {
         String userId = SecurityUtils.getUserId();
         String username = SecurityUtils.getUsername();
-        return AjaxResult.success(ardTankLockProcessLogService.processArdTankLockByLockId(userId,username,para));
+        return ardTankLockProcessLogService.processArdTankLockByLockId(userId,username,para);
     }
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
index f4c1eb8..d0af9ea 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
@@ -113,6 +113,20 @@
                     Date now = new Date();
                     try {
                         String data = (String) dataMap.get("data");
+                        if(data.length() %2 != 0){//闀垮害涓嶆槸鍋舵暟锛屽氨杩斿洖
+                            return;
+                        }
+
+                        Integer sum = 0;
+                        for(int i = 0;i <= data.length() - 4;i = i + 2){
+                            String str = data.substring(i, i + 2);
+                            sum = sum + Integer.parseInt(str, 16);
+                        }
+                        String checkNum = data.substring(data.length() - 2, data.length());
+                        if(!checkNum.equals(Integer.toHexString(sum).toUpperCase())){//鏍¢獙涓嶉�氳繃锛屽氨杩斿洖
+                            return;
+                        }
+
                         String lockNum = data.substring(0, 4);
                         String code = data.substring(4, 6);
                         if(code.equals("01")){//鍔熻兘鐮�01涓洪攣瀹炴椂鐘舵��
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java
index 28cfcce..bc4ee17 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockProcessLogService.java
@@ -3,6 +3,7 @@
 import java.util.List;
 import java.util.Map;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.sy.domain.ArdTankLockProcessLog;
 
 /**
@@ -61,5 +62,5 @@
      */
     public int deleteArdTankLockProcessLogById(String id);
 
-    public String processArdTankLockByLockId(String userId, String username, Map<String,String> para);
+    public AjaxResult processArdTankLockByLockId(String userId, String username, Map<String,String> para);
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
index 9f2ab56..f912eaf 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
@@ -6,6 +6,7 @@
 import java.util.*;
 
 import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysConfig;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.sy.domain.ArdSyUser;
@@ -129,7 +130,7 @@
     }
 
     @Override
-    public String processArdTankLockByLockId(String userId, String username, Map<String,String> para) {
+    public AjaxResult processArdTankLockByLockId(String userId, String username, Map<String,String> para) {
         String lockId = para.get("lockId");
         String lockNum = para.get("lockNum");
         String carId = para.get("carId");
@@ -139,19 +140,19 @@
         //鍒ゆ柇浣胯兘
         ArdTankLock ardTankLock = ardTankLockMapper.selectArdTankLockById(lockId);
         if(ardTankLock.getEnable().equals("false")){
-            return "璇ラ攣浣胯兘鍏抽棴锛屾棤娉曟搷鎺�";
+            return AjaxResult.error("璇ラ攣浣胯兘鍏抽棴锛屾棤娉曟搷鎺�");
         }
 
         ArdSyUser ardSyUser = ardSyUserMapper.userById(userId);
         if(ardSyUser == null){
-            return "鏈寕鎺ヤ笁涓�璐﹀彿";
+            return AjaxResult.error("鏈寕鎺ヤ笁涓�璐﹀彿");
         }
         List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
         String syURL = "";
         if(syURLResult.size() != 0){
             syURL = syURLResult.get(0).getConfigValue();
         }else{
-            return "涓変竴骞冲彴鏈綍鍏�";
+            return AjaxResult.error("涓変竴骞冲彴鏈綍鍏�");
         }
         String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
         Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
@@ -164,13 +165,13 @@
         if(((String)syResult.get("rspCode")).equals("1")){
             Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
             if(Integer.parseInt((String)carMap.get("speed")) != 0){
-                return "杞﹁締姝e湪琛岄┒涓�";
+                return AjaxResult.error("杞﹁締姝e湪琛岄┒涓�");
             }
             lng = (String) carMap.get("lng");
             lat = (String) carMap.get("lat");
             carPlate = (String) carMap.get("carName");
         }else{
-            return "涓変竴骞冲彴鎶ラ敊";
+            return AjaxResult.error("涓変竴骞冲彴鎶ラ敊");
         }
 
         List<ArdTankWall> ardTankWallList = ardTankWallMapper.getArdTankWallProcessByLockId(lockId);//鏌ヨ閿佹寕鎺ョ殑鍏ㄩ儴闇�瑕佸姩浣滅殑鐢靛瓙鍥存爮
@@ -184,10 +185,10 @@
                     pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
                 }
                 if(GeoTools.IsPtInPoly(point, pts)){//鍦ㄤ换鎰忕數瀛愬洿鏍忓唴锛屼笉鎶ヨ
-                    return "褰撳墠杞﹁締姝e鍦�" + ardTankWall.getWallName() + "涓�";
+                    return AjaxResult.error("褰撳墠杞﹁締姝e鍦�" + ardTankWall.getWallName() + "涓�");
                 }
             }
-            return "褰撳墠杞﹁締姝e鍦ㄧ數瀛愬洿鏍忓";
+            return AjaxResult.error("褰撳墠杞﹁締姝e鍦ㄧ數瀛愬洿鏍忓");
         }else{
             try{
                 String lockNumHead = lockNum.substring(0,2);
@@ -205,10 +206,7 @@
 
                 String paramsStr = lockNum + "02" + process + checkNum;
                 paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
-                //System.out.println(paramsStr);
                 Map<String,Object> result = sendCmd(syURL, ardSyUser.getUserId(), carId, 199, "DataDownTransfer", paramsStr, sessionId);
-                //System.out.println("111111111111");
-                //System.out.println(result);
                 if(((String)result.get("rspCode")).equals("0")){
                     ArdTankLockProcessLog ardTankLockProcessLog = new ArdTankLockProcessLog();
                     ardTankLockProcessLog.setId(IdUtils.simpleUUID());
@@ -228,13 +226,13 @@
                     ardTankLockProcessLog.setLatitude(lat);
                     ardTankLockProcessLog.setProcessTime(this.sdf.format(new Date()));
                     ardTankLockProcessLogMapper.insertArdTankLockProcessLog(ardTankLockProcessLog);
-                    return "鍙戦�佹垚鍔�";
+                    return AjaxResult.success("鍙戦�佹垚鍔�");
                 }else{
-                    return "鍙戦�佸け璐�";
+                    return AjaxResult.error("鍙戦�佸け璐�");
                 }
             }catch(Exception e){
                 e.printStackTrace();
-                return "鍙戦�佸け璐�";
+                return AjaxResult.error("鍙戦�佸け璐�");
             }
         }
     }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
index 670b9f5..5b23022 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
@@ -535,13 +535,13 @@
                 }else{
                     lockMap.put("onlineTime",ardTankLock.getOnlineTime());
                 }
-                Map<String,Object> ardTankLockState = new HashMap();
+                //Map<String,Object> ardTankLockState = new HashMap();
                 ArdTankLockState ardTankLockStateResult = ardTankLockStateMapper.selectArdTankLockStateByLockIdLimitOne(ardTankLock.getId());
                 if(ardTankLockStateResult == null){
-                    ardTankLockState.put("id","");
+                    /*ardTankLockState.put("id","");
                     ardTankLockState.put("lockId","");
-                    ardTankLockState.put("lockNum","");
-                    ardTankLockState.put("lockState","");
+                    ardTankLockState.put("lockNum","");*/
+                    /*ardTankLockState.put("lockState","");
                     ardTankLockState.put("lockPositionState","");
                     ardTankLockState.put("lockShellState","");
                     ardTankLockState.put("restartState","");
@@ -552,12 +552,25 @@
                     ardTankLockState.put("uploadTime","");
                     ardTankLockState.put("uniqueMark","");
                     ardTankLockState.put("lockStateMark",false);
-                    lockMap.put("ardTankLockState",ardTankLockState);
+                    lockMap.put("ardTankLockState",ardTankLockState);*/
+                    lockMap.put("lockState","");
+                    lockMap.put("lockPositionState","");
+                    lockMap.put("lockShellState","");
+                    lockMap.put("restartState","");
+                    lockMap.put("batterVoltage","");
+                    lockMap.put("batterVoltageAlarm",false);
+                    lockMap.put("powerVoltage","");
+                    lockMap.put("powerVoltageAlarm",false);
+                    lockMap.put("uploadTime","");
+                    lockMap.put("uniqueMark","");
+                    lockMap.put("lockStateMark",false);
+                    lockMap.put("alarmMark",false);
+                    lockMap.put("alarmInfo","");
                 }else{
-                    ardTankLockState.put("id",ardTankLockStateResult.getId());
+                    /*ardTankLockState.put("id",ardTankLockStateResult.getId());
                     ardTankLockState.put("lockId",ardTankLockStateResult.getLockId());
-                    ardTankLockState.put("lockNum",ardTankLockStateResult.getLockNum());
-                    ardTankLockState.put("lockState",ardTankLockStateResult.getLockState());
+                    ardTankLockState.put("lockNum",ardTankLockStateResult.getLockNum());*/
+                    /*ardTankLockState.put("lockState",ardTankLockStateResult.getLockState());
                     ardTankLockState.put("lockPositionState",ardTankLockStateResult.getLockPositionState());
                     ardTankLockState.put("lockShellState",ardTankLockStateResult.getLockShellState());
                     ardTankLockState.put("restartState",ardTankLockStateResult.getRestartState());
@@ -576,7 +589,41 @@
                     ardTankLockState.put("uploadTime",ardTankLockStateResult.getUploadTime());
                     ardTankLockState.put("uniqueMark",ardTankLockStateResult.getUniqueMark());
                     ardTankLockState.put("lockStateMark",ardTankLockStateResult.getLockStateMark());
-                    lockMap.put("ardTankLockState",ardTankLockState);
+                    lockMap.put("ardTankLockState",ardTankLockState);*/
+                    String alarmInfo = "";
+                    lockMap.put("lockState",ardTankLockStateResult.getLockState());
+                    lockMap.put("lockPositionState",ardTankLockStateResult.getLockPositionState());
+                    if(ardTankLockStateResult.getLockPositionState().equals("寮傚父")){
+                        alarmInfo = alarmInfo + "浣嶇疆寮傚父;";
+                    }
+                    lockMap.put("lockShellState",ardTankLockStateResult.getLockShellState());
+                    if(ardTankLockStateResult.getLockShellState().equals("寮傚父")){
+                        alarmInfo = alarmInfo + "澶栧3寮傚父;";
+                    }
+                    lockMap.put("restartState",ardTankLockStateResult.getRestartState());
+                    lockMap.put("batterVoltage",ardTankLockStateResult.getBatterVoltage());
+                    if(Double.parseDouble(ardTankLockStateResult.getBatterVoltage()) <= lockBatteryVoltage){
+                        lockMap.put("batterVoltageAlarm",true);
+                        alarmInfo = alarmInfo + "鐢垫睜鐢靛帇浣庝簬" + lockBatteryVoltage + ";";
+                    }else{
+                        lockMap.put("batterVoltageAlarm",false);
+                    }
+                    lockMap.put("powerVoltage",ardTankLockStateResult.getPowerVoltage());
+                    if(Double.parseDouble(ardTankLockStateResult.getPowerVoltage()) <= lockPowerVoltage){
+                        lockMap.put("powerVoltageAlarm",true);
+                        alarmInfo = alarmInfo + "鐢垫簮鐢靛帇浣庝簬" + lockBatteryVoltage + ";";
+                    }else{
+                        lockMap.put("powerVoltageAlarm",false);
+                    }
+                    lockMap.put("uploadTime",ardTankLockStateResult.getUploadTime());
+                    lockMap.put("uniqueMark",ardTankLockStateResult.getUniqueMark());
+                    lockMap.put("lockStateMark",ardTankLockStateResult.getLockStateMark());
+                    if(alarmInfo.equals("")){
+                        lockMap.put("alarmMark",false);
+                    }else{
+                        lockMap.put("alarmMark",true);
+                    }
+                    lockMap.put("alarmInfo",alarmInfo);
                 }
                 lockList.add(lockMap);
             }

--
Gitblit v1.9.3