zhangnaisong
2024-07-25 a17551833794cceabddff337bf185dbfb97b44ae
电磁锁打印注释提交
已修改5个文件
117 ■■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/sy/controller/ArdSyCarController.java
@@ -300,7 +300,6 @@
                    Thread lockThread = new Thread() {
                        @Override
                        public void run() {
                            //String usersId = key.split("_")[0];
                            ardTankLockService.sendLockState(key,userId,password);
                        }
                    };
@@ -310,6 +309,27 @@
        };
        sendTimer.scheduleAtFixedRate(sendLockStateTask,date,3000);
        try{
            Thread.sleep(3000);
        }catch(Exception e){
        }
        Timer alarmTimer = new Timer();//定时获取报警
        TimerTask alarmTask = new TimerTask(){
            @Override
            public void run() {
                Thread alarmThread = new Thread() {
                    @Override
                    public void run() {
                        ardTankLockService.getAlarm(userId,password);
                    }
                };
                alarmThread.start();
            }
        };
        alarmTimer.scheduleAtFixedRate(alarmTask,date,3000);
    }
ard-work/src/main/java/com/ruoyi/sy/gps31/PushClientImplSerialPort.java
@@ -314,6 +314,8 @@
                                ardTankLockState.setUniqueMark(uniqueMark);
                                ((ArdTankLockStateServiceImpl)SpringUtils.getBean("ardTankLockStateServiceImpl")).insertOrUpdateArdTankLockState(ardTankLockState);
                            }
                        }else if(code.equals("06")){//功能码06为锁历史报警
                        }
                    }catch (Exception e){
                        e.printStackTrace();
ard-work/src/main/java/com/ruoyi/sy/service/IArdTankLockService.java
@@ -76,4 +76,6 @@
    public List<ArdTankLock> getArdTankLockAll();
    public void sendLockState(String userId,String syUserId,String syPassword);
    public void getAlarm(String syUserId,String syPassword);
}
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
@@ -205,10 +205,10 @@
                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);
                //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);
                //System.out.println("111111111111");
                //System.out.println(result);
                if(((String)result.get("rspCode")).equals("0")){
                    ArdTankLockProcessLog ardTankLockProcessLog = new ArdTankLockProcessLog();
                    ardTankLockProcessLog.setId(IdUtils.simpleUUID());
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.sy.service.impl;
import java.io.IOException;
import java.util.*;
import com.alibaba.fastjson.JSON;
@@ -13,6 +14,9 @@
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.utils.forest.SYClient;
import com.ruoyi.utils.websocket.util.WebSocketUtils;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Service;
@@ -56,6 +60,8 @@
    @Resource
    private SYClient sYClient;
    private Map<String,Thread> alarmMap = new HashMap();//电磁锁历史报警线程容器
    /**
     * 查询电磁锁
@@ -581,4 +587,83 @@
            WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(userId), JSON.toJSONString(data));
        }
    }
    @Override
    public void getAlarm(String syUserId,String syPassword) {
        List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
        String syURL = "";
        if(syURLResult.size() != 0){
            syURL = syURLResult.get(0).getConfigValue();
        }else{
            return;
        }
        String finalSyURL = syURL;
        String passwordMd5 = DigestUtils.md5Hex(syPassword);
        Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, syUserId);
        String sessionId = (String) LogInResult.get("sessionId");
        List<ArdTankLock> ardTankLockResult = ardTankLockMapper.getAll();
        for(ArdTankLock ardTankLock : ardTankLockResult){
            if(this.alarmMap.get(ardTankLock.getLockNum()) != null){
                continue;//当前锁已在获取报警,不在创建线程
            }
            Thread thread = new Thread(finalSyURL){
                @Override
                public void run() {
                    try{
                        String lockNum = ardTankLock.getLockNum();
                        String lockNumHead = lockNum.substring(0,2);
                        String lockNumTail = lockNum.substring(2,4);
                        String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16)//锁编号高8位
                                + Integer.parseInt(lockNumTail, 16)//锁编号低8位
                                + Integer.parseInt("06", 16));//设置锁芯状态功能码06
                        if(checkNum.length() == 1){
                            checkNum = "0" + checkNum;
                        }
                        if(checkNum.length() > 2){
                            checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
                        }
                        String paramsStr = lockNum + "06" + checkNum;
                        paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
                        Map<String,Object> result = sendCmd(finalSyURL, syUserId, ardTankLock.getCarId(), 199, "DataDownTransfer", paramsStr, sessionId);
                        alarmMap.remove(ardTankLock.getLockNum());
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            };
            thread.start();
            alarmMap.put(ardTankLock.getLockNum(),thread);
        }
    }
    public Map<String,Object> sendCmd(String syURL,String userId,String carId,Integer cmdId,String cmd,String paramsStr,String sessionId){
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder()
                .url(syURL + "/gps-web/api/send_cmd.jsp?params="+paramsStr+"&userId="+userId+"&carId="+carId+"&cmdId="+cmdId+"&cmd="+cmd+"&sessionId="+sessionId)
                .build();
        //System.out.println("url = " + syURL + "/gps-web/api/send_cmd.jsp?params="+paramsStr+"&userId="+userId+"&carId="+carId+"&cmdId="+cmdId+"&cmd="+cmd+"&sessionId="+sessionId);
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        okhttp3.ResponseBody responseBody = response.body();
        try {
            String message = responseBody.string();// 响应体
            Map<String,Object> map = (Map<String, Object>) com.alibaba.fastjson2.JSON.parse(message);
            return map;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return new HashMap();
        }
    }
}