From d643b649afb5318ea939855def096b6ae9073c0c Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期二, 30 七月 2024 15:15:28 +0800
Subject: [PATCH] 电磁锁加入复位状态提交

---
 ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockMapper.java            |    2 +
 ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java         |    2 +
 ard-work/src/main/resources/mapper/sy/ArdTankLockMapper.xml                  |   25 ++++++++++++
 ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java       |   75 +++++++++++++++++++++++++++++++++++++
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java |    6 +++
 5 files changed, 110 insertions(+), 0 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 25dfa7a..3ed0961 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
@@ -316,6 +316,81 @@
         };
         passwordTimer.scheduleAtFixedRate(passwordTask,date,11000);
 
+        Timer lockRestartStateTimer = new Timer();//瀹氭椂鍚勪釜閿佺殑澶嶄綅鐘舵��
+        TimerTask lockRestartStateTask =new TimerTask(){
+            @Override
+            public void run(){
+                Thread thread = new Thread(){
+                    @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;
+
+                        List<ArdTankLock> result = ardTankLockService.getArdTankLockAllWithState();//鏌ヨ鍏ㄩ儴鐢电閿佸強鏈�缁堢姸鎬�
+                        for(ArdTankLock ardTankLock : result){
+                            String restartState = ardTankLock.getRestartState();
+                            String sRestartState = "";
+                            if(ardTankLock.getArdTankLockState() != null){
+                                sRestartState = ardTankLock.getArdTankLockState().getRestartState();
+                            }
+
+                            if(sRestartState.equals("")){
+                                continue;
+                            }else{
+                                sRestartState = sRestartState.substring(0,2);
+                                if(!restartState.equals(sRestartState)){
+                                    Thread lockThread = new Thread(finalSyURL){
+                                        @Override
+                                        public void run() {
+                                            String process = "";
+                                            if(restartState.equals("寮�閿�")){
+                                                process = "01";
+                                            }else if(restartState.equals("鍏抽攣")){
+                                                process = "02";
+                                            }else{
+                                                return;
+                                            }
+
+                                            String lockNumHead = ardTankLock.getLockNum().substring(0,2);
+                                            String lockNumTail = ardTankLock.getLockNum().substring(2,4);
+                                            //璁$畻鏍¢獙
+                                            String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt("03", 16) + Integer.parseInt(process, 16));
+
+                                            if(checkNum.length() == 1){
+                                                checkNum = "0" + checkNum;
+                                            }else if(checkNum.length() > 2){
+                                                checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+                                            }
+
+                                            String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + ardTankLock.getLockNum() + "03" + process + checkNum + "%22%7D";
+
+                                            sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+                                        }
+                                    };
+                                    lockThread.start();
+                                }
+                            }
+                        }
+                    }
+                };
+                thread.start();
+            }
+        };
+        lockRestartStateTimer.scheduleAtFixedRate(lockRestartStateTask,date,9000);
+
     }
 
     /**
diff --git a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockMapper.java b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockMapper.java
index 65ac051..8a9fa90 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockMapper.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/mapper/ArdTankLockMapper.java
@@ -85,4 +85,6 @@
     public String getIdByLockNum(String lockNum);
 
     public List<ArdTankLock> selectArdTankLockWithPassword();
+
+    public List<ArdTankLock> getArdTankLockAllWithState();
 }
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java
index 740fc63..0d1d224 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java
@@ -79,5 +79,7 @@
 
     public void readPassword(String userId,String password);
 
+    public List<ArdTankLock> getArdTankLockAllWithState();
+
     //public void getAlarm(String syUserId,String syPassword);
 }
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 1d55048..b7a27df 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
@@ -803,6 +803,12 @@
         passwordThread.start();
     }
 
+    @Override
+    public List<ArdTankLock> getArdTankLockAllWithState() {
+        List<ArdTankLock> result = ardTankLockMapper.getArdTankLockAllWithState();
+        return result;
+    }
+
     /*@Override
     public void getAlarm(String syUserId,String syPassword) {
         List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
diff --git a/ard-work/src/main/resources/mapper/sy/ArdTankLockMapper.xml b/ard-work/src/main/resources/mapper/sy/ArdTankLockMapper.xml
index 768041d..5dd0480 100644
--- a/ard-work/src/main/resources/mapper/sy/ArdTankLockMapper.xml
+++ b/ard-work/src/main/resources/mapper/sy/ArdTankLockMapper.xml
@@ -240,4 +240,29 @@
         atlp.create_time,atlp.use_time  from ard_tank_lock atl
         left join ard_tank_lock_password atlp on atl.id = atlp.lock_id and use_time is null
     </select>
+
+    <select id="getArdTankLockAllWithState" resultMap="ArdTankLockWithStateResult" >
+        select t.id,t.lock_num,t.lock_name,t.img_position_top,t.img_position_left,
+        t.car_id,t.enable,t.restart_state,t.online_time,t.sid,t.lock_id,t.slock_num,
+        t.lock_state,t.lock_position_state,t.lock_shell_state,t.srestart_state,
+        t.batter_voltage,t.power_voltage,t.upload_time,t.unique_mark,
+        t.lock_state_mark from (select atl.id,atl.lock_num,atl.lock_name,atl.img_position_top,
+        atl.img_position_left,atl.car_id,atl.enable,atl.restart_state,
+        coalesce(atl.online_time,'') as online_time,coalesce(atls.id,'') as sid,
+        coalesce(atls.lock_id,'') as lock_id,coalesce(atls.lock_num,'') as slock_num,
+        coalesce(atls.lock_state,'') as lock_state,coalesce(atls.lock_position_state,'') as lock_position_state,
+        coalesce(atls.lock_shell_state,'') as lock_shell_state,coalesce(atls.restart_state,'') as srestart_state,
+        coalesce(atls.batter_voltage,'') as batter_voltage,coalesce(atls.power_voltage,'') as power_voltage,
+        coalesce(atls.upload_time,'') as upload_time,coalesce(atls.unique_mark,'') as unique_mark,
+        case atls.lock_state
+            when '鍏抽攣鐘舵��' then false
+            when '寮傚父鐘舵��' then false
+            when '鍔ㄤ綔鐘舵��' then false
+            when '寮�閿佺姸鎬�' then true
+            else false
+            end as lock_state_mark,
+        rank() over(partition by atl.lock_num order by atls.upload_time desc,atl.lock_num) rn
+        from ard_tank_lock atl
+        left join ard_tank_lock_state atls on atl."id" = atls.lock_id)t where t.rn = 1
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.3