From fb486d8c2447a9a18eb929d81094bfd46c78fe27 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期二, 06 八月 2024 08:09:52 +0800
Subject: [PATCH] 电磁锁加入电子围栏自动开关提交
---
ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java | 258 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 197 insertions(+), 61 deletions(-)
diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
index 14c3c3c..d1d5335 100644
--- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java
@@ -217,64 +217,69 @@
return AjaxResult.error("褰撳墠杞﹁締姝e鍦ㄧ數瀛愬洿鏍忓");
}else{
try{
- 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("02", 16)//璁剧疆閿佽姱鐘舵�佸姛鑳界爜02
- + Integer.parseInt(process, 16));//鎿嶄綔
- if(checkNum.length() == 1){
- checkNum = "0" + checkNum;
- }
- if(checkNum.length() > 2){
- checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
- }
-
- String paramsStr = lockNum + "02" + process + checkNum;
- paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
- PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
- Map<String,Object> result = sendCmd(syURL, ardSyUser.getUserId(), carId, 199, "DataDownTransfer", paramsStr, sessionId);
- PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).remove("lockProcess");//绉婚櫎瀹瑰櫒
- if(((String)result.get("rspCode")).equals("0")){
- ArdTankLockProcessLog ardTankLockProcessLog = new ArdTankLockProcessLog();
- ardTankLockProcessLog.setId(IdUtils.simpleUUID());
- ardTankLockProcessLog.setLockId(lockId);
- ardTankLockProcessLog.setLockNum(lockNum);
- ardTankLockProcessLog.setCarId(carId);
- ardTankLockProcessLog.setCarPlate(carPlate);
- ardTankLockProcessLog.setUserId(userId);
- ardTankLockProcessLog.setUserName(username);
- if(process.equals("01")){
- ardTankLockProcessLog.setProcess("寮�鍔ㄤ綔");
- }else if(process.equals("02")){
- ardTankLockProcessLog.setProcess("鍏冲姩浣�");
+ if(PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).get("lockProcess") != null){
+ PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
+ 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("02", 16)//璁剧疆閿佽姱鐘舵�佸姛鑳界爜02
+ + Integer.parseInt(process, 16));//鎿嶄綔
+ if(checkNum.length() == 1){
+ checkNum = "0" + checkNum;
}
- ardTankLockProcessLog.setProcessReason(processReason);
- ardTankLockProcessLog.setLongitude(lng);
- ardTankLockProcessLog.setLatitude(lat);
- ardTankLockProcessLog.setProcessTime(this.sdf.format(new Date()));
- ardTankLockProcessLogMapper.insertArdTankLockProcessLog(ardTankLockProcessLog);
- return AjaxResult.success("鍙戦�佹垚鍔�");
- }else if(((String)result.get("rspCode")).equals("-6")){
- return AjaxResult.error("鎵句笉鍒拌溅杈�");
- }else if(((String)result.get("rspCode")).equals("-5")){
- return AjaxResult.error("鎵句笉鍒扮敤鎴�");
- }else if(((String)result.get("rspCode")).equals("-4")){
- return AjaxResult.error("鎵句笉鍒版寚浠�");
- }else if(((String)result.get("rspCode")).equals("-3")){
- return AjaxResult.error("鎸囦护鍙戦�佽秴鏃�");
- }else if(((String)result.get("rspCode")).equals("-2")){
- return AjaxResult.error("绂荤嚎寰呭彂");
- }else if(((String)result.get("rspCode")).equals("-1")){
- return AjaxResult.error("杞﹁締绂荤嚎");
- }else if(((String)result.get("rspCode")).equals("1")){
- return AjaxResult.error("鍙戦�佸け璐�");
- }else if(((String)result.get("rspCode")).equals("2")){
- return AjaxResult.error("娑堟伅鏈夎");
- }else if(((String)result.get("rspCode")).equals("3")){
- return AjaxResult.error("涓嶆敮鎸�");
+ if(checkNum.length() > 2){
+ checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+ }
+
+ String paramsStr = lockNum + "02" + process + checkNum;
+ paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
+ //PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
+ Map<String,Object> result = sendCmd(syURL, ardSyUser.getUserId(), carId, 199, "DataDownTransfer", paramsStr, sessionId);
+ PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).remove("lockProcess");//绉婚櫎瀹瑰櫒
+ if(((String)result.get("rspCode")).equals("0")){
+ ArdTankLockProcessLog ardTankLockProcessLog = new ArdTankLockProcessLog();
+ ardTankLockProcessLog.setId(IdUtils.simpleUUID());
+ ardTankLockProcessLog.setLockId(lockId);
+ ardTankLockProcessLog.setLockNum(lockNum);
+ ardTankLockProcessLog.setCarId(carId);
+ ardTankLockProcessLog.setCarPlate(carPlate);
+ ardTankLockProcessLog.setUserId(userId);
+ ardTankLockProcessLog.setUserName(username);
+ if(process.equals("01")){
+ ardTankLockProcessLog.setProcess("寮�鍔ㄤ綔");
+ }else if(process.equals("02")){
+ ardTankLockProcessLog.setProcess("鍏冲姩浣�");
+ }
+ ardTankLockProcessLog.setProcessReason(processReason);
+ ardTankLockProcessLog.setLongitude(lng);
+ ardTankLockProcessLog.setLatitude(lat);
+ ardTankLockProcessLog.setProcessTime(this.sdf.format(new Date()));
+ ardTankLockProcessLogMapper.insertArdTankLockProcessLog(ardTankLockProcessLog);
+ return AjaxResult.success("鍙戦�佹垚鍔�");
+ }else if(((String)result.get("rspCode")).equals("-6")){
+ return AjaxResult.error("鎵句笉鍒拌溅杈�");
+ }else if(((String)result.get("rspCode")).equals("-5")){
+ return AjaxResult.error("鎵句笉鍒扮敤鎴�");
+ }else if(((String)result.get("rspCode")).equals("-4")){
+ return AjaxResult.error("鎵句笉鍒版寚浠�");
+ }else if(((String)result.get("rspCode")).equals("-3")){
+ return AjaxResult.error("鎸囦护鍙戦�佽秴鏃�");
+ }else if(((String)result.get("rspCode")).equals("-2")){
+ return AjaxResult.error("绂荤嚎寰呭彂");
+ }else if(((String)result.get("rspCode")).equals("-1")){
+ return AjaxResult.error("杞﹁締绂荤嚎");
+ }else if(((String)result.get("rspCode")).equals("1")){
+ return AjaxResult.error("鍙戦�佸け璐�");
+ }else if(((String)result.get("rspCode")).equals("2")){
+ return AjaxResult.error("娑堟伅鏈夎");
+ }else if(((String)result.get("rspCode")).equals("3")){
+ return AjaxResult.error("涓嶆敮鎸�");
+ }else{
+ return AjaxResult.error("鍏朵粬鍘熷洜鍙戦�佸け璐�");
+ }
}else{
- return AjaxResult.error("鍏朵粬鍘熷洜鍙戦�佸け璐�");
+ return AjaxResult.error("鍏朵粬鎿嶆帶姝e湪杩涜涓�,璇风◢鍚�");
}
}catch(Exception e){
e.printStackTrace();
@@ -315,9 +320,10 @@
for(ArdTankLock ardTankLock : ardTankLockResult){
ArdTankLockState ardTankLockState = ardTankLock.getArdTankLockState();
if(ardTankLockState != null){
- if(ardTankLockState.getLockState().equals("寮�閿佺姸鎬�")){
+ if(ardTankLockState.getLockState().equals("寮�閿佺姸鎬�") || ardTankLockState.getLockState().equals("寮傚父鐘舵��")){
String lockNum = ardTankLock.getLockNum();
if(PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum) == null){
+ PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
String lockNumHead = lockNum.substring(0,2);
String lockNumTail = lockNum.substring(2,4);
String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16)//閿佺紪鍙烽珮8浣�
@@ -333,8 +339,7 @@
String paramsStr = lockNum + "02" + "02" + checkNum;
paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
- PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
- //String syURL = "http://" + ip + ":9999";
+ //PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
String passwordMd5 = DigestUtils.md5Hex(password);
Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
String sessionId = (String) LogInResult.get("sessionId");
@@ -388,9 +393,10 @@
for(ArdTankLock ardTankLock : ardTankLockResult){
ArdTankLockState ardTankLockState = ardTankLock.getArdTankLockState();
if(ardTankLockState != null){
- if(ardTankLockState.getLockState().equals("鍏抽攣鐘舵��")){
+ if(ardTankLockState.getLockState().equals("鍏抽攣鐘舵��") || ardTankLockState.getLockState().equals("寮傚父鐘舵��")){
String lockNum = ardTankLock.getLockNum();
if(PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).get("lockProcess") == null){
+ PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
String lockNumHead = lockNum.substring(0,2);
String lockNumTail = lockNum.substring(2,4);
String checkNum = Integer.toHexString(Integer.parseInt(lockNumHead, 16)//閿佺紪鍙烽珮8浣�
@@ -406,7 +412,7 @@
String paramsStr = lockNum + "02" + "01" + checkNum;
paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
- PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
+ //PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
String passwordMd5 = DigestUtils.md5Hex(password);
Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
String sessionId = (String) LogInResult.get("sessionId");
@@ -444,11 +450,141 @@
continue;
}
}
+ break;//澶勫湪浠绘剰鐢靛瓙鍥存爮涓�
}
}
}
//鐢靛瓙鍥存爮閫昏緫
+ Point2D.Double point = new Point2D.Double(((Number) gpsMap.get("lng")).doubleValue(), ((Number) gpsMap.get("lat")).doubleValue());//杞﹁締褰撳墠浣嶇疆
+ List<ArdTankLock> ardTankLockList = ardTankLockMapper.selectArdTankLockWithWallAndStateByCarId((String) gpsMap.get("carId"));
+ for(ArdTankLock ardTankLock : ardTankLockList){
+ ArdTankLockState ardTankLockState = ardTankLock.getArdTankLockState();
+ if(ardTankLockState == null){
+ break;
+ }
+ String lockState = ardTankLockState.getLockState();
+ String lockNum = ardTankLock.getLockNum();
+
+ List<ArdTankWallLock> ardTankWallLockList = ardTankLock.getArdTankWallLockList();//涓棿琛�
+ if(ardTankWallLockList.isEmpty()){//娌℃湁鎸傛帴鐢靛瓙鍥存爮
+ break;
+ }
+ for(ArdTankWallLock ardTankWallLock : ardTankWallLockList){
+ ArdTankWall ardTankWall = ardTankWallLock.getArdTankWall();//鐢靛瓙鍥存爮
+
+ List<Point2D.Double> pts = new ArrayList<Point2D.Double>();
+ String[] wallpoiArro = ardTankWall.getWallPoi().split(",");
+ for (int j = 0; j < wallpoiArro.length; j = j + 3) {//鏋勫缓澶氳竟褰�
+ pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
+ }
+ if(GeoTools.IsPtInPoly(point, pts)){//鍦ㄧ數瀛愬洿鏍忓唴
+ if(ardTankWallLock.getProcessType().equals("1")){//鐢靛瓙鍥存爮鎿嶄綔鏄惁涓哄紑閿�
+ if(lockState.equals("鍏抽攣鐘舵��") || lockState.equals("寮傚父鐘舵��")){
+ //鎵ц寮�閿佸姩浣�
+ if(PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).get("lockProcess") == null){
+ PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
+ 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("02", 16)//璁剧疆閿佽姱鐘舵�佸姛鑳界爜02
+ + Integer.parseInt("01", 16));//鎿嶄綔
+ if(checkNum.length() == 1){
+ checkNum = "0" + checkNum;
+ }
+ if(checkNum.length() > 2){
+ checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+ }
+
+ String paramsStr = lockNum + "02" + "01" + checkNum;
+ paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
+ //PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
+ String passwordMd5 = DigestUtils.md5Hex(password);
+ Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
+ String sessionId = (String) LogInResult.get("sessionId");
+ try{
+ Map<String,Object> result = sendCmd(syURL, userId, (String) gpsMap.get("carId"), 199, "DataDownTransfer", paramsStr, sessionId);
+ if(((String)result.get("rspCode")).equals("0")){
+ ArdTankLockAutoProcessLog ardTankLockAutoProcessLog = new ArdTankLockAutoProcessLog();
+ ardTankLockAutoProcessLog.setId(IdUtils.simpleUUID());
+ ardTankLockAutoProcessLog.setLockId(ardTankLock.getId());
+ ardTankLockAutoProcessLog.setLockNum(ardTankLock.getLockNum());
+ ardTankLockAutoProcessLog.setCarId(ardTankLock.getCarId());
+ ardTankLockAutoProcessLog.setCarPlate((String) gpsMap.get("carName"));
+ ardTankLockAutoProcessLog.setWallId(ardTankWall.getId());
+ ardTankLockAutoProcessLog.setWallName(ardTankWall.getWallName());
+ ardTankLockAutoProcessLog.setWallType("姘镐箙");
+ ardTankLockAutoProcessLog.setProcess("寮�鍔ㄤ綔");
+ ardTankLockAutoProcessLog.setProcessReason("閫熷害灏忎簬" + electromagneticLockVelocity +",骞惰繘鍏ョ數瀛愬洿鏍�'" + ardTankWall.getWallName() + "'" + ",寮�閿�");
+ ardTankLockAutoProcessLog.setLongitude(String.valueOf(gpsMap.get("lng")));
+ ardTankLockAutoProcessLog.setLatitude(String.valueOf(gpsMap.get("lat")));
+ ardTankLockAutoProcessLog.setVelocity(String.valueOf(gpsMap.get("speed")));
+ ardTankLockAutoProcessLog.setProcessTime(this.sdf.format(new Date()));
+ ardTankLockAutoProcessLogMapper.insertArdTankLockAutoProcessLog(ardTankLockAutoProcessLog);
+ }
+ }catch(Exception e){
+
+ }
+ PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).remove("lockProcess");//绉婚櫎瀹瑰櫒
+ }
+ }
+ }else if(ardTankWallLock.getProcessType().equals("-1")){//鐢靛瓙鍥存爮鎿嶄綔鏄惁涓哄叧閿�
+ if(lockState.equals("寮�閿佺姸鎬�") || lockState.equals("寮傚父鐘舵��")){
+ //鎵ц鍏抽攣鍔ㄤ綔
+ if(PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).get("lockProcess") == null){
+ 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("02", 16)//璁剧疆閿佽姱鐘舵�佸姛鑳界爜02
+ + Integer.parseInt("02", 16));//鎿嶄綔
+ if(checkNum.length() == 1){
+ checkNum = "0" + checkNum;
+ }
+ if(checkNum.length() > 2){
+ checkNum = checkNum.substring(checkNum.length() - 2,checkNum.length());
+ }
+
+ String paramsStr = lockNum + "02" + "02" + checkNum;
+ paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
+ PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).put("lockProcess",new Thread());//鍔犲叆瀹瑰櫒
+ String passwordMd5 = DigestUtils.md5Hex(password);
+ Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, userId);
+ String sessionId = (String) LogInResult.get("sessionId");
+ try{
+ Map<String,Object> result = sendCmd(syURL, userId, (String) gpsMap.get("carId"), 199, "DataDownTransfer", paramsStr, sessionId);
+ if(((String)result.get("rspCode")).equals("0")){
+ ArdTankLockAutoProcessLog ardTankLockAutoProcessLog = new ArdTankLockAutoProcessLog();
+ ardTankLockAutoProcessLog.setId(IdUtils.simpleUUID());
+ ardTankLockAutoProcessLog.setLockId(ardTankLock.getId());
+ ardTankLockAutoProcessLog.setLockNum(ardTankLock.getLockNum());
+ ardTankLockAutoProcessLog.setCarId(ardTankLock.getCarId());
+ ardTankLockAutoProcessLog.setCarPlate((String) gpsMap.get("carName"));
+ ardTankLockAutoProcessLog.setWallId(ardTankWall.getId());
+ ardTankLockAutoProcessLog.setWallName(ardTankWall.getWallName());
+ ardTankLockAutoProcessLog.setWallType("姘镐箙");
+ ardTankLockAutoProcessLog.setProcess("鍏冲姩浣�");
+ ardTankLockAutoProcessLog.setProcessReason("閫熷害灏忎簬" + electromagneticLockVelocity +",骞惰繘鍏ョ數瀛愬洿鏍�'" + ardTankWall.getWallName() + "'" + ",鍏抽攣");
+ ardTankLockAutoProcessLog.setLongitude(String.valueOf(gpsMap.get("lng")));
+ ardTankLockAutoProcessLog.setLatitude(String.valueOf(gpsMap.get("lat")));
+ ardTankLockAutoProcessLog.setVelocity(String.valueOf(gpsMap.get("speed")));
+ ardTankLockAutoProcessLog.setProcessTime(this.sdf.format(new Date()));
+ ardTankLockAutoProcessLogMapper.insertArdTankLockAutoProcessLog(ardTankLockAutoProcessLog);
+ }
+ }catch(Exception e){
+
+ }
+ PositionContainer.getCarLockProcessThreadMap().get((String) gpsMap.get("carId")).get(lockNum).remove("lockProcess");//绉婚櫎瀹瑰櫒
+ }
+ }
+ }
+ break;//澶勫湪浠绘剰鐢靛瓙鍥存爮涓�
+ }else{
+ continue;
+ }
+ }
+ }
}
}
--
Gitblit v1.9.3