From 675075c8e140ee0882c5277bd68468fe6194b207 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期三, 24 七月 2024 21:41:47 +0800
Subject: [PATCH] 电磁锁实时状态提交
---
ard-work/src/main/resources/mapper/sy/ArdTankLockStateMapper.xml | 7 +-
ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml | 2
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java | 28 ++-------
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java | 100 ++++++++++++++++++++++++++++++--
4 files changed, 102 insertions(+), 35 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 9441272..2428e11 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,41 +290,25 @@
}
}
};
- lockCheckTimeTimer.scheduleAtFixedRate(lockCheckTimeTask,date,10000);
+ lockCheckTimeTimer.scheduleAtFixedRate(lockCheckTimeTask,date,13000);
Timer sendTimer = new Timer();//瀹氭椂鍙戦�侀攣鐘舵��
- TimerTask sendLockStateTask =new TimerTask(){
+ TimerTask sendLockStateTask = new TimerTask(){
@Override
public void run() {
- SysConfig config = new SysConfig();
- config.setConfigKey("syCarPT");
- List<SysConfig> sysConfigResult = sysConfigService.selectConfigList(config);
- String syURL = "";
-
- if(sysConfigResult.size() == 0){
- return;
- }else{
- syURL = sysConfigResult.get(0).getConfigValue();
- }
- String passwordMd5 = DigestUtils.md5Hex(password);
- Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
- String sessionId = (String) LogInResult.get("sessionId");
-
- String finalSyURL = syURL;
-
for (String key : ONLINE_USER_SESSIONS.keySet()){
- Thread lockThread = new Thread(finalSyURL) {
+ Thread lockThread = new Thread() {
@Override
public void run() {
- String usersId = key.split("_")[0];
- ardTankLockService.sendLockState(usersId,userId,password);
+ //String usersId = key.split("_")[0];
+ ardTankLockService.sendLockState(key,userId,password);
}
};
lockThread.start();
}
}
};
- //sendTimer.scheduleAtFixedRate(sendLockStateTask,date,3000);
+ sendTimer.scheduleAtFixedRate(sendLockStateTask,date,3000);
}
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 f3eeefd..d68c81b 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
@@ -2,6 +2,7 @@
import java.util.*;
+import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.domain.entity.SysConfig;
import com.ruoyi.common.utils.uuid.IdUtils;
@@ -11,6 +12,7 @@
import com.ruoyi.sy.mapper.*;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.utils.forest.SYClient;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Service;
@@ -20,6 +22,8 @@
import com.ruoyi.sy.service.IArdTankLockService;
import javax.annotation.Resource;
+
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
/**
* 鐢电閿丼ervice涓氬姟灞傚鐞�
@@ -465,7 +469,7 @@
@Override
public void sendLockState(String userId, String syUserId, String syPassword) {
- /*List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
+ List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
String syURL = "";
if(syURLResult.size() != 0){
syURL = syURLResult.get(0).getConfigValue();
@@ -475,10 +479,21 @@
String passwordMd5 = DigestUtils.md5Hex(syPassword);
Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, syUserId);
String sessionId = (String) LogInResult.get("sessionId");
- Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, carId, syUserId, sessionId);
+
+ List<SysConfig> lockBatteryVoltageResult = sysConfigMapper.selectByType("lockBatteryVoltage");
+ Integer lockBatteryVoltage = 9;
+ if(!lockBatteryVoltageResult.isEmpty()){
+ lockBatteryVoltage = Integer.parseInt(lockBatteryVoltageResult.get(0).getConfigValue());
+ }
+
+ List<SysConfig> lockPowerVoltageResult = sysConfigMapper.selectByType("lockPowerVoltage");
+ Integer lockPowerVoltage = 5;
+ if(!lockPowerVoltageResult.isEmpty()){
+ lockPowerVoltage = Integer.parseInt(lockPowerVoltageResult.get(0).getConfigValue());
+ }
List<Map<String,Object>> result = new ArrayList();
- List<ArdSyCar> ardSyCarResult = ardSyCarMapper.selectArdSyCarAndTankLockByUserId(userId);
+ List<ArdSyCar> ardSyCarResult = ardSyCarMapper.selectArdSyCarAndTankLockByUserId(userId.split("_")[0]);
for(ArdSyCar ardSyCar : ardSyCarResult){
Map<String,Object> map = new HashMap();
map.put("id",ardSyCar.getId());
@@ -487,14 +502,83 @@
map.put("carType",ardSyCar.getCarType());
map.put("carBrand",ardSyCar.getCarBrand());
map.put("deptId",ardSyCar.getDeptId());
-
-
-
-
+ map.put("carPicture",ardSyCar.getCarPicture());
+ Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, ardSyCar.getCarId(), syUserId, sessionId);
+ if(((String)syResult.get("rspCode")).equals("1")){
+ Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
+ map.put("carPlate", (String) carMap.get("carPlate"));
+ }
+ List<Map<String,Object>> lockList = new ArrayList();
List<ArdTankLock> ardTankLockList = ardSyCar.getArdTankLockList();
for(ArdTankLock ardTankLock : ardTankLockList){
+ Map<String,Object> lockMap = new HashMap();
+ lockMap.put("id",ardTankLock.getId());
+ lockMap.put("lockNum",ardTankLock.getLockNum());
+ lockMap.put("lockName",ardTankLock.getLockName());
+ lockMap.put("imgPositionTop",ardTankLock.getImgPositionTop());
+ lockMap.put("imgPositionLeft",ardTankLock.getImgPositionLeft());
+ lockMap.put("carId",ardTankLock.getCarId());
+ lockMap.put("enable",ardTankLock.getEnable());
+ if(ardTankLock.getRestartState() == null){
+ lockMap.put("restartState","");
+ }else{
+ lockMap.put("restartState",ardTankLock.getRestartState());
+ }
+ if(ardTankLock.getOnlineTime() == null){
+ lockMap.put("onlineTime","");
+ }else{
+ lockMap.put("onlineTime",ardTankLock.getOnlineTime());
+ }
+ Map<String,Object> ardTankLockState = new HashMap();
ArdTankLockState ardTankLockStateResult = ardTankLockStateMapper.selectArdTankLockStateByLockIdLimitOne(ardTankLock.getId());
+ if(ardTankLockStateResult == null){
+ ardTankLockState.put("id","");
+ ardTankLockState.put("lockId","");
+ ardTankLockState.put("lockNum","");
+ ardTankLockState.put("lockState","");
+ ardTankLockState.put("lockPositionState","");
+ ardTankLockState.put("lockShellState","");
+ ardTankLockState.put("restartState","");
+ ardTankLockState.put("batterVoltage","");
+ ardTankLockState.put("batterVoltageAlarm",false);
+ ardTankLockState.put("powerVoltage","");
+ ardTankLockState.put("powerVoltageAlarm",false);
+ ardTankLockState.put("uploadTime","");
+ ardTankLockState.put("uniqueMark","");
+ ardTankLockState.put("lockStateMark",false);
+ lockMap.put("ardTankLockState",ardTankLockState);
+ }else{
+ ardTankLockState.put("id",ardTankLockStateResult.getId());
+ ardTankLockState.put("lockId",ardTankLockStateResult.getLockId());
+ 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());
+ ardTankLockState.put("batterVoltage",ardTankLockStateResult.getBatterVoltage());
+ if(Double.parseDouble(ardTankLockStateResult.getBatterVoltage()) <= lockBatteryVoltage){
+ ardTankLockState.put("batterVoltageAlarm",true);
+ }else{
+ ardTankLockState.put("batterVoltageAlarm",false);
+ }
+ ardTankLockState.put("powerVoltage",ardTankLockStateResult.getPowerVoltage());
+ if(Double.parseDouble(ardTankLockStateResult.getPowerVoltage()) <= lockPowerVoltage){
+ ardTankLockState.put("powerVoltageAlarm",true);
+ }else{
+ ardTankLockState.put("powerVoltageAlarm",false);
+ }
+ ardTankLockState.put("uploadTime",ardTankLockStateResult.getUploadTime());
+ ardTankLockState.put("uniqueMark",ardTankLockStateResult.getUniqueMark());
+ ardTankLockState.put("lockStateMark",ardTankLockStateResult.getLockStateMark());
+ lockMap.put("ardTankLockState",ardTankLockState);
+ }
+ lockList.add(lockMap);
}
- }*/
+ map.put("lockList",lockList);
+ result.add(map);
+ Map<String,Object> data = new HashMap();
+ data.put("40002",result);
+ WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(userId), JSON.toJSONString(data));
+ }
}
}
diff --git a/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
index 19c8ba2..104d743 100644
--- a/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
+++ b/ard-work/src/main/resources/mapper/sy/ArdSyCarMapper.xml
@@ -163,7 +163,7 @@
#{deptId}
</foreach>
</select>
- <select id="selectArdSyCarAndTankLockByUserId" resultMap="ArdSyCarLockResult">
+ <select id="selectArdSyCarAndTankLockByUserId" resultMap="ArdSyCarLockResult" parameterType="java.lang.String">
select "asc".id,"asc".car_id,"asc".car_model,"asc".car_type,
"asc".car_brand,"asc".dept_id,"asc".car_picture,atl.id as lid,
atl.lock_num,atl.lock_name,atl.img_position_top,atl.img_position_left,
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankLockStateMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankLockStateMapper.xml
index d8ef601..8ad2d69 100644
--- a/ard-work/src/main/resources/mapper/sy/ArdTankLockStateMapper.xml
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankLockStateMapper.xml
@@ -112,10 +112,9 @@
</insert>
<select id="selectArdTankLockStateByLockIdLimitOne" parameterType="java.lang.String" resultMap="ArdTankLockStateResult">
- select atls.id,atls.lock_id,atls.lock_num as slock_num,
- atls.lock_state,atls.lock_position_state,atls.lock_shell_state,
- atls.restart_state as srestart_state,atls.batter_voltage,
- atls.power_voltage,atls.upload_time,atls.unique_mark,
+ select atls.id,atls.lock_id,atls.lock_num,atls.lock_state,
+ atls.lock_position_state,atls.lock_shell_state,atls.restart_state,
+ atls.batter_voltage,atls.power_voltage,atls.upload_time,atls.unique_mark,
case atls.lock_state
when '鍏抽攣鐘舵��' then false
when '寮傚父鐘舵��' then false
--
Gitblit v1.9.3