From 2799314298467be9ed68d9e19891e35cb3c3edad Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期四, 01 八月 2024 08:14:18 +0800
Subject: [PATCH] 电磁锁动作状态改为操控中...提交
---
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockServiceImpl.java | 520 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 500 insertions(+), 20 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..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
@@ -1,25 +1,33 @@
package com.ruoyi.sy.service.impl;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
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.ArdSyUser;
-import com.ruoyi.sy.mapper.ArdSyUserMapper;
-import com.ruoyi.sy.mapper.ArdTankWallLockMapper;
-import com.ruoyi.sy.mapper.ArdTankWallLockTemporaryMapper;
+import com.ruoyi.sy.domain.*;
+import com.ruoyi.sy.gps31.PositionContainer;
+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 okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
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涓氬姟灞傚鐞�
@@ -45,7 +53,18 @@
private SysConfigMapper sysConfigMapper;
@Resource
+ private ArdSyCarMapper ardSyCarMapper;
+
+ @Resource
+ private ArdTankLockStateMapper ardTankLockStateMapper;
+
+ @Resource
+ private ArdTankLockPasswordMapper ardTankLockPasswordMapper;
+
+ @Resource
private SYClient sYClient;
+
+ //private Map<String,Thread> alarmMap = new HashMap();//鐢电閿佸巻鍙叉姤璀︾嚎绋嬪鍣�
/**
* 鏌ヨ鐢电閿�
@@ -88,6 +107,7 @@
ardTankLock.setImgPositionLeft(map.get("imgPositionLeft"));
ardTankLock.setCarId(carId);
ardTankLock.setEnable(map.get("enable"));
+ ardTankLock.setRestartState(map.get("restartState"));
ardTankLocks.add(ardTankLock);
}
return ardTankLockMapper.insertArdTankLocks(ardTankLocks);
@@ -138,22 +158,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 +221,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 +283,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 +326,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){//鏈変富閿紝鍋氫慨鏀规搷浣�
@@ -297,8 +347,9 @@
ardTankLock.setImgPositionLeft((String) map.get("imgPositionLeft"));
ardTankLock.setCarId((String) map.get("carId"));
ardTankLock.setEnable((String) map.get("enable"));
+ ardTankLock.setRestartState((String) map.get("restartState"));
result = result + ardTankLockMapper.updateArdTankLock(ardTankLock);
- }else{//鏃犱富閿紝鍋氫慨鏀规搷浣�
+ }else{//鏃犱富閿紝鍋氭柊澧炴搷浣�
ArdTankLock ardTankLock = new ArdTankLock();
ardTankLock.setId(IdUtils.simpleUUID());
ardTankLock.setLockNum((String) map.get("lockNum"));
@@ -306,6 +357,7 @@
ardTankLock.setImgPositionTop((String) map.get("imgPositionTop"));
ardTankLock.setImgPositionLeft((String) map.get("imgPositionLeft"));
ardTankLock.setCarId(carId);
+ ardTankLock.setRestartState((String) map.get("restartState"));
ardTankLock.setEnable((String) map.get("enable"));
ardTankLocks.add(ardTankLock);
}
@@ -320,36 +372,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 +432,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 +461,430 @@
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);*/
+ 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("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);*/
+ String alarmInfo = "";
+ lockMap.put("lockState",ardTankLockStateResult.getLockState());
+ if(ardTankLockStateResult.getLockState().equals("寮傚父鐘舵��")){
+ alarmInfo = alarmInfo + "閿佽姱寮傚父;";
+ }
+ lockMap.put("lockPositionState",ardTankLockStateResult.getLockPositionState());
+ if(ardTankLockStateResult.getLockPositionState().equals("寮傚父")){
+ alarmInfo = alarmInfo + "浣嶇疆寮傚父;";
+ }
+ lockMap.put("lockShellState",ardTankLockStateResult.getLockShellState());
+ if(ardTankLockStateResult.getLockShellState().equals("寮傚父")){
+ alarmInfo = alarmInfo + "澶栧3寮傚父;";
+ }
+ 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);
+ }
+ 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));
+ }
+ return;
+ }
+
+ @Override
+ public void readPassword(String userId,String password) {
+ List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
+ String syURL = "";
+ if(syURLResult.size() != 0){
+ syURL = syURLResult.get(0).getConfigValue();
+ }else{
+ return;
+ }
+ String passwordMd5 = DigestUtils.md5Hex(password);
+ Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
+ String sessionId = (String) LogInResult.get("sessionId");
+
+ String finalSyURL = syURL;
+ Thread passwordThread = new Thread(syURL){
+ @Override
+ public void run() {
+ List<ArdTankLock> ardTankLockResult = ardTankLockMapper.selectArdTankLockWithPassword();
+ for(ArdTankLock ardTankLock : ardTankLockResult){
+ Thread lockThread = new Thread(){//璇诲彇瀵嗙爜
+ @Override
+ public void run() {
+ if(ardTankLock.getArdTankLockPasswords().isEmpty()){//鏃犲彲鐢ㄥ瘑鐮�
+ if(PositionContainer.getCarLockPasswordMap().get(ardTankLock.getLockNum()) != null){//鏂拌缃殑10缁勫瘑鐮�
+ Set<String> passwordSet = PositionContainer.getCarLockPasswordMap().get(ardTankLock.getLockNum());
+ //璁剧疆鏂板瘑鐮�
+ String lockNumHead = ardTankLock.getLockNum().substring(0,2);
+ String lockNumTail = ardTankLock.getLockNum().substring(2,4);
+ String code = "04";
+ Integer check = Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt(code, 16);;
+ for(String password : passwordSet){
+ String[] passwordArray = password.split("");
+ for(String p : passwordArray){
+ check = check + Integer.parseInt(p);
+ }
+ }
+ String checkNum = Integer.toHexString(check);
+ if(checkNum.length() == 1){
+ checkNum = "0" + checkNum;
+ }else if(checkNum.length() > 2){
+ checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+ }
+ String data = ardTankLock.getLockNum() + "04";
+ for(String password : passwordSet){
+ String[] passwordArray = password.split("");
+ for(String p : passwordArray){
+ data = data + "0" + p;
+ }
+ }
+ data = data + checkNum;
+ String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + data + "%22%7D";
+ Map<String,Object> syResult = sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+ if(((String)syResult.get("rspCode")).equals("0")){
+ List<ArdTankLockPassword> ardTankLockPasswordList = new ArrayList();
+ int i = 0;
+ for(String password : passwordSet){
+ ArdTankLockPassword ardTankLockPassword = new ArdTankLockPassword();
+ ardTankLockPassword.setId(IdUtils.simpleUUID());
+ ardTankLockPassword.setLockId(ardTankLock.getLockNum());//鏆傚瓨閿佺紪鍙�
+ ardTankLockPassword.setPassword(password);
+ ardTankLockPassword.setNo(String.valueOf(i));
+ ardTankLockPasswordList.add(ardTankLockPassword);
+ i = i + 1;
+ }
+ int result = ardTankLockPasswordMapper.insertArdTankLockPasswordList(ardTankLockPasswordList);
+ PositionContainer.getCarLockPasswordMap().remove(ardTankLock.getLockNum());
+ }
+ }else{//璇诲彇瀵嗙爜
+ /*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("05", 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() + "05" + checkNum + "%22%7D";
+
+ sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);*/
+ Set<String> passwordSet = new HashSet();
+ while(passwordSet.size() != 10){
+ String password = "";
+ for(int i = 0;i <= 5;i++){
+ password = password + String.valueOf(10 * Math.random()).split("\\.")[0];
+ }
+ passwordSet.add(password);
+ }
+ System.out.println("1111111111111111");
+ System.out.println(passwordSet);
+ //璁剧疆鏂板瘑鐮�
+ String lockNumHead = ardTankLock.getLockNum().substring(0,2);
+ String lockNumTail = ardTankLock.getLockNum().substring(2,4);
+ String code = "04";
+ Integer check = Integer.parseInt(lockNumHead, 16) + Integer.parseInt(lockNumTail, 16) + Integer.parseInt(code, 16);;
+ for(String password : passwordSet){
+ String[] passwordArray = password.split("");
+ for(String p : passwordArray){
+ check = check + Integer.parseInt(p);
+ }
+ }
+ String checkNum = Integer.toHexString(check);
+ if(checkNum.length() == 1){
+ checkNum = "0" + checkNum;
+ }else if(checkNum.length() > 2){
+ checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+ }
+ String data = ardTankLock.getLockNum() + "04";
+ for(String password : passwordSet){
+ String[] passwordArray = password.split("");
+ for(String p : passwordArray){
+ data = data + "0" + p;
+ }
+ }
+ data = data + checkNum;
+ String paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + data + "%22%7D";
+ Map<String,Object> syResult = sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+ if(((String)syResult.get("rspCode")).equals("0")){
+ List<ArdTankLockPassword> ardTankLockPasswordList = new ArrayList();
+ int i = 0;
+ for(String password : passwordSet){
+ ArdTankLockPassword ardTankLockPassword = new ArdTankLockPassword();
+ ardTankLockPassword.setId(IdUtils.simpleUUID());
+ ardTankLockPassword.setLockId(ardTankLock.getLockNum());//鏆傚瓨閿佺紪鍙�
+ ardTankLockPassword.setPassword(password);
+ ardTankLockPassword.setNo(String.valueOf(i));
+ ardTankLockPasswordList.add(ardTankLockPassword);
+ i = i + 1;
+ }
+ int result = ardTankLockPasswordMapper.insertArdTankLockPasswordList(ardTankLockPasswordList);
+ }
+ }
+ }else{
+ 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("05", 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() + "05" + checkNum + "%22%7D";
+
+ sendCmd(finalSyURL,userId,ardTankLock.getCarId(),199,"DataDownTransfer", paramsStr,sessionId);
+ }
+ }
+ };
+ lockThread.start();
+ }
+
+ }
+ };
+ 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");
+ 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();
+ }
+ }
}
--
Gitblit v1.9.3