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/service/impl/ArdTankLockServiceImpl.java | 671 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 643 insertions(+), 28 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 ff8c7f2..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,30 +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.dtflys.forest.annotation.Var; +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.result.Results; +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.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.stream.Collectors; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.SecurityUtils; -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涓氬姟灞傚鐞� @@ -50,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();//鐢电閿佸巻鍙叉姤璀︾嚎绋嬪鍣� /** * 鏌ヨ鐢电閿� @@ -77,7 +91,6 @@ /** * 鏂板鐢电閿� * - * @param ardTankLock 鐢电閿� * @return 缁撴灉 */ @Override @@ -94,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); @@ -144,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 Results.error("娌℃湁鎸傛帴涓変竴杞﹁締鐢ㄦ埛"); - }*/ + if(ardSyUser == null){ + return new HashMap(); + } List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); String syURL = ""; if(syURLResult.size() != 0){ syURL = syURLResult.get(0).getConfigValue(); - }/*else{ - return Results.error("涓変竴杞﹁締鍦板潃鏈綍鍏�"); - }*/ + }else{ + 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(); @@ -206,23 +221,26 @@ } } } - //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 public Map<String, Object> getLockByCarId(String carId, String usersId) { ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId); - /*if(ardSyUser == null){ - return Results.error("娌℃湁鎸傛帴涓変竴杞﹁締鐢ㄦ埛"); - }*/ + if(ardSyUser == null){ + return new HashMap(); + } List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); String syURL = ""; if(syURLResult.size() != 0){ syURL = syURLResult.get(0).getConfigValue(); - }/*else{ - return Results.error("涓変竴杞﹁締鍦板潃鏈綍鍏�"); - }*/ + }else{ + 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"); @@ -265,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); @@ -272,4 +308,583 @@ resultMap.put("lockList",result); return resultMap; } + + @Override + public int deleteLockByCarId(String carId) { + int result = ardTankLockMapper.deleteLockByCarId(carId); + return result; + } + + @Override + public int updateLockByCarId(Map<String, Object> para) { + int result = 0; + String carId = (String) para.get("carId"); + List<ArdTankLock> ardTankLockOldList = ardTankLockMapper.getLockByCarId(carId); + Set<String> idSet = new HashSet();//涔嬪墠鐨勪富閿� + for(ArdTankLock ardTankLock : ardTankLockOldList){ + idSet.add(ardTankLock.getId()); + } + //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){//鏈変富閿紝鍋氫慨鏀规搷浣� + //newIdSet.add((String) map.get("id")); + idSet.remove((String) map.get("id")); + ArdTankLock ardTankLock = new ArdTankLock(); + ardTankLock.setId((String) map.get("id")); + ardTankLock.setLockNum((String) map.get("lockNum")); + ardTankLock.setLockName((String) map.get("lockName")); + ardTankLock.setImgPositionTop((String) map.get("imgPositionTop")); + 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{//鏃犱富閿紝鍋氭柊澧炴搷浣� + ArdTankLock ardTankLock = new ArdTankLock(); + ardTankLock.setId(IdUtils.simpleUUID()); + ardTankLock.setLockNum((String) map.get("lockNum")); + ardTankLock.setLockName((String) map.get("lockName")); + 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); + } + } + if(ardTankLocks.size() != 0){ + result = result + ardTankLockMapper.insertArdTankLocks(ardTankLocks); + } + if(!idSet.isEmpty()){ + result = result + ardTankLockMapper.deleteArdTankLockByIdSet(idSet); + } + return result; + } + + @Override + public Map<String,Object> getLockByCarPlate(String usersId, String carPlate, Integer pageNum, Integer pageSize) { + ArdSyUser ardSyUser = ardSyUserMapper.userById(usersId); + if(ardSyUser == null){ + return new HashMap(); + } + List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); + String syURL = ""; + if(syURLResult.size() != 0){ + syURL = syURLResult.get(0).getConfigValue(); + }else{ + 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 = 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 HashMap(); + } + //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(); + map.put("id",ardTankLock.getId()); + map.put("lockNum",ardTankLock.getLockNum()); + map.put("lockName",ardTankLock.getLockName()); + map.put("imgPositionTop",ardTankLock.getImgPositionTop()); + map.put("imgPositionLeft",ardTankLock.getImgPositionLeft()); + map.put("carId",ardTankLock.getCarId()); + map.put("enable",ardTankLock.getEnable()); + if(ardTankLock.getRestartState() == null){ + map.put("restartState",""); + }else{ + map.put("restartState",ardTankLock.getRestartState()); + } + if(ardTankLock.getOnlineTime() == null){ + map.put("onlineTime",""); + }else{ + map.put("onlineTime",ardTankLock.getOnlineTime()); + } + Map<String,Object> car = carList.stream().filter(mapCar -> ((String)mapCar.get("carId")).equals(ardTankLock.getCarId())).collect(Collectors.toList()).get(0); + map.put("carPlate", (String) car.get("carPlate")); + result.add(map); + }else{ + continue; + } + } + }else{ + PageHelper.startPage(pageNum, pageSize);//鍒嗛〉 + ardTankLockList = ardTankLockMapper.getAll(); + for(ArdTankLock ardTankLock : ardTankLockList){ + Map<String,Object> map = new HashMap(); + map.put("id",ardTankLock.getId()); + map.put("lockNum",ardTankLock.getLockNum()); + map.put("lockName",ardTankLock.getLockName()); + map.put("imgPositionTop",ardTankLock.getImgPositionTop()); + map.put("imgPositionLeft",ardTankLock.getImgPositionLeft()); + map.put("carId",ardTankLock.getCarId()); + map.put("enable",ardTankLock.getEnable()); + if(ardTankLock.getRestartState() == null){ + map.put("restartState",""); + }else{ + map.put("restartState",ardTankLock.getRestartState()); + } + if(ardTankLock.getOnlineTime() == null){ + map.put("onlineTime",""); + }else{ + map.put("onlineTime",ardTankLock.getOnlineTime()); + } + Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, ardTankLock.getCarId(), ardSyUser.getUserId(), 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")); + } + 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