From 1636f02b9cf3f408ebf8b3c4e377237e5b74bf4a Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: Fri, 26 Jul 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 "车辆正在行驶中";
+ return AjaxResult.error("车辆正在行驶中");
}
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 "当前车辆正处在" + ardTankWall.getWallName() + "中";
+ return AjaxResult.error("当前车辆正处在" + ardTankWall.getWallName() + "中");
}
}
- return "当前车辆正处在电子围栏外";
+ return AjaxResult.error("当前车辆正处在电子围栏外");
}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 + "外壳异常;";
+ }
+ 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