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/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java |  210 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 192 insertions(+), 18 deletions(-)

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 8b84e12..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,24 +2,28 @@
 
 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;
+import com.ruoyi.sy.domain.ArdSyCar;
 import com.ruoyi.sy.domain.ArdSyUser;
-import com.ruoyi.sy.mapper.ArdSyUserMapper;
-import com.ruoyi.sy.mapper.ArdTankWallLockMapper;
-import com.ruoyi.sy.mapper.ArdTankWallLockTemporaryMapper;
+import com.ruoyi.sy.domain.ArdTankLockState;
+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;
 
 import java.util.stream.Collectors;
 
-import com.ruoyi.sy.mapper.ArdTankLockMapper;
 import com.ruoyi.sy.domain.ArdTankLock;
 import com.ruoyi.sy.service.IArdTankLockService;
 
 import javax.annotation.Resource;
+
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
 
 /**
  * 鐢电閿丼ervice涓氬姟灞傚鐞�
@@ -43,6 +47,12 @@
 
     @Resource
     private SysConfigMapper sysConfigMapper;
+
+    @Resource
+    private ArdSyCarMapper ardSyCarMapper;
+
+    @Resource
+    private ArdTankLockStateMapper ardTankLockStateMapper;
 
     @Resource
     private SYClient sYClient;
@@ -138,22 +148,23 @@
 
     @Override
     //public Results List<Map<String,Object>> getAll(String usersId) {
-    public List<Map<String,Object>> getAll(String usersId) {
+    public Map<String,Object> getAll(String usersId) {
+        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
         ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
         if(ardSyUser == null){
-            return new ArrayList();
+            return new HashMap();
         }
         List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
         String syURL = "";
         if(syURLResult.size() != 0){
             syURL = syURLResult.get(0).getConfigValue();
         }else{
-            return new ArrayList();
+            return new HashMap();
         }
         String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
         Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
         String sessionId = (String) LogInResult.get("sessionId");
-        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
+        //List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
         List<Map<String,Object>> result = new ArrayList();
         for(ArdTankLock ardTankLock : ardTankLockList){
             Map<String,Object> map = new HashMap();
@@ -200,8 +211,11 @@
                 }
             }
         }
-        //return Results.succeed(result0);
-        return result0;
+        Long total = ardTankLockMapper.selectArdTankLockTotal();
+        Map<String,Object> resultMap = new HashMap();
+        resultMap.put("list",result0);
+        resultMap.put("total",total);
+        return resultMap;
     }
 
     @Override
@@ -259,6 +273,24 @@
             }else{
                 map.put("onlineTime",ardTankLock.getOnlineTime());
             }
+            if(ardTankLock.getArdTankLockState() != null){//鐢电閿佺姸鎬�
+                map.put("ardTankLockState",ardTankLock.getArdTankLockState());
+            }else{
+                ArdTankLockState ardTankLockState = new ArdTankLockState();
+                ardTankLockState.setId("");
+                ardTankLockState.setLockId("");
+                ardTankLockState.setLockNum("");
+                ardTankLockState.setLockState("");
+                ardTankLockState.setLockPositionState("");
+                ardTankLockState.setLockShellState("");
+                ardTankLockState.setRestartState("");
+                ardTankLockState.setBatterVoltage("");
+                ardTankLockState.setPowerVoltage("");
+                ardTankLockState.setUploadTime("");
+                ardTankLockState.setUniqueMark("");
+                ardTankLockState.setLockStateMark(false);
+                map.put("ardTankLockState",ardTankLockState);
+            }
             Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
             map.put("carPlate",carMap.get("carPlate"));
             result.add(map);
@@ -284,6 +316,14 @@
         }
         //Set<String> newIdSet = new HashSet();//浼犲弬鐨勪富閿�
         List<Map<String,Object>> lockList = (List<Map<String, Object>>) para.get("lockList");
+        if(lockList.isEmpty()){//鏁扮粍涓虹┖锛屽仛鍒犻櫎鎿嶄綔
+            if(ardTankLockOldList.isEmpty()){//鑻ユ病鏈夋寕鎺ワ紝涓嶅仛鎿嶄綔
+                return 1;
+            }
+            result = ardTankLockMapper.deleteLockByCarId(carId);
+            return result;
+        }
+
         List<ArdTankLock> ardTankLocks = new ArrayList();
         for(Map<String,Object> map : lockList){
             if(map.get("id") != null){//鏈変富閿紝鍋氫慨鏀规搷浣�
@@ -298,7 +338,7 @@
                 ardTankLock.setCarId((String) map.get("carId"));
                 ardTankLock.setEnable((String) map.get("enable"));
                 result = result + ardTankLockMapper.updateArdTankLock(ardTankLock);
-            }else{//鏃犱富閿紝鍋氫慨鏀规搷浣�
+            }else{//鏃犱富閿紝鍋氭柊澧炴搷浣�
                 ArdTankLock ardTankLock = new ArdTankLock();
                 ardTankLock.setId(IdUtils.simpleUUID());
                 ardTankLock.setLockNum((String) map.get("lockNum"));
@@ -320,36 +360,38 @@
     }
 
     @Override
-    public List<Map<String, Object>> getLockByCarPlate(String usersId, String carPlate) {
-        List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
+    public Map<String,Object> getLockByCarPlate(String usersId, String carPlate, Integer pageNum, Integer pageSize) {
         ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId);
         if(ardSyUser == null){
-            return new ArrayList();
+            return new HashMap();
         }
         List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
         String syURL = "";
         if(syURLResult.size() != 0){
             syURL = syURLResult.get(0).getConfigValue();
         }else{
-            return new ArrayList();
+            return new HashMap();
         }
         String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
         Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
         String sessionId = (String) LogInResult.get("sessionId");
-        //List<ArdTankLock> ardTankLockList = ardTankLockMapper.getAll();
+        List<ArdTankLock> ardTankLockList = new ArrayList();
         List<Map<String,Object>> result = new ArrayList();
+        List<String> carIdList = new ArrayList();//璁板綍涓変竴杞﹁締涓婚敭
         if(!carPlate.equals("")){
             Map<String,Object> carMap = sYClient.getCarListByPlate(syURL,carPlate,ardSyUser.getUserId(),sessionId);//杞︾墝鍙锋ā绯婃悳绱㈣溅杈�
             List<Map<String,Object>> carList = new ArrayList();
             if(((String)carMap.get("rspCode")).equals("1")){
                 carList = (List<Map<String, Object>>) carMap.get("list");
             }else{
-                return new ArrayList();
+                return new HashMap();
             }
-            List<String> carIdList = new ArrayList();//璁板綍涓変竴杞﹁締涓婚敭
+            //List<String> carIdList = new ArrayList();//璁板綍涓変竴杞﹁締涓婚敭
             for(Map<String,Object> map : carList){
                 carIdList.add((String) map.get("carId"));
             }
+            PageHelper.startPage(pageNum, pageSize);//鍒嗛〉
+            ardTankLockList = ardTankLockMapper.getLockByCarIdList(carIdList);
             for(ArdTankLock ardTankLock : ardTankLockList){
                 if(carIdList.contains(ardTankLock.getCarId())){//杩斿洖鐨勮溅杈嗗寘鍚暟鎹簱褰曞叆鐨勮溅杈�
                     Map<String,Object> map = new HashMap();
@@ -378,6 +420,8 @@
                 }
             }
         }else{
+            PageHelper.startPage(pageNum, pageSize);//鍒嗛〉
+            ardTankLockList = ardTankLockMapper.getAll();
             for(ArdTankLock ardTankLock : ardTankLockList){
                 Map<String,Object> map = new HashMap();
                 map.put("id",ardTankLock.getId());
@@ -405,6 +449,136 @@
                 result.add(map);
             }
         }
+        Long total = Long.valueOf(0);
+        if(!carPlate.equals("")){
+            total = ardTankLockMapper.selectArdTankLockTotalByCarIdList(carIdList);
+        }else{
+            total = ardTankLockMapper.selectArdTankLockAllTotal();
+        }
+        Map<String,Object> mapResult = new HashMap();
+        mapResult.put("list",result);
+        mapResult.put("total",total);
+        return mapResult;
+    }
+
+    @Override
+    public List<ArdTankLock> getArdTankLockAll() {
+        List<ArdTankLock> result = ardTankLockMapper.getAll();
         return result;
     }
+
+    @Override
+    public void sendLockState(String userId, String syUserId, String syPassword) {
+        List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
+        String syURL = "";
+        if(syURLResult.size() != 0){
+            syURL = syURLResult.get(0).getConfigValue();
+        }else{
+            return;
+        }
+        String passwordMd5 = DigestUtils.md5Hex(syPassword);
+        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, syUserId);
+        String sessionId = (String) LogInResult.get("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.split("_")[0]);
+        for(ArdSyCar ardSyCar : ardSyCarResult){
+            Map<String,Object> map = new HashMap();
+            map.put("id",ardSyCar.getId());
+            map.put("carId",ardSyCar.getCarId());
+            map.put("carModel",ardSyCar.getCarModel());
+            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));
+        }
+    }
 }

--
Gitblit v1.9.3