From 80aace69506a46f93519fa583d8c04ab861498d2 Mon Sep 17 00:00:00 2001 From: zhangnaisong <2434969829@qq.com> Date: 星期五, 02 八月 2024 23:05:23 +0800 Subject: [PATCH] 电磁锁临时电子围栏加入服务器重启生效创建提交 --- ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java | 139 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 137 insertions(+), 2 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java index ad8b921..e288e1d 100644 --- a/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankWallTemporaryServiceImpl.java @@ -6,14 +6,20 @@ 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.domain.ArdTankLock; import com.ruoyi.sy.domain.ArdTankWallLockTemporary; import com.ruoyi.sy.gps31.PositionContainer; +import com.ruoyi.sy.mapper.ArdSyUserMapper; import com.ruoyi.sy.mapper.ArdTankLockMapper; import com.ruoyi.sy.mapper.ArdTankWallLockTemporaryMapper; +import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysUserMapper; +import com.ruoyi.utils.forest.SYClient; import com.ruoyi.utils.websocket.util.WebSocketUtils; +import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,6 +53,15 @@ @Resource private SysUserMapper sysUserMapper; + + @Resource + private ArdSyUserMapper ardSyUserMapper; + + @Resource + private SysConfigMapper sysConfigMapper; + + @Resource + private SYClient sYClient; private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -120,6 +135,21 @@ @Override public int insertArdTankWallTemporary(String userId, String userName, Map<String, Object> para) { + ArdSyUser ardSyUser = ardSyUserMapper.userById(userId); + if(ardSyUser == null){ + return 0; + } + List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); + String syURL = ""; + if(syURLResult.size() != 0){ + syURL = syURLResult.get(0).getConfigValue(); + }else{ + return 0; + } + /*String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword()); + Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId()); + String sessionId = (String) LogInResult.get("sessionId");*/ + ArdTankWallTemporary ardTankWallTemporary = new ArdTankWallTemporary(); ardTankWallTemporary.setId(IdUtils.simpleUUID()); ardTankWallTemporary.setWallName((String) para.get("wallName")); @@ -151,6 +181,7 @@ ardTankWallLockTemporaryMapper.insertArdTankWallLockTemporaryList(ardTankWallLockTemporaryList); } //鍒涘缓瀹氭椂绾跨▼ + String finalSyURL = syURL; Thread thread = new Thread(){ @Override public void run() { @@ -160,13 +191,23 @@ //e.printStackTrace(); return; } + String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword()); + Map<String, Object> LogInResult = sYClient.logIn(finalSyURL, passwordMd5, ardSyUser.getUserId()); + String sessionId = (String) LogInResult.get("sessionId"); + Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(finalSyURL, (String) para.get("carId"), ardSyUser.getUserId(), sessionId); + String carPlate = ""; + if(((String)syResult.get("rspCode")).equals("1")){ + Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0); + carPlate = (String) carMap.get("carPlate"); + } + List<String> userIdList = sysUserMapper.selectUserIdByCarId((String) para.get("carId"));//鏌ョ湅鍝簺鐢ㄦ埛鏉冮檺涓嬫湁杩欎釜杞� for (String key : ONLINE_USER_SESSIONS.keySet()){ String userId = key.split("_")[0]; if(userIdList.contains(userId)){ Map<String,Object> data = new HashMap(); - data.put("40003",(String) para.get("wallName") + "宸插埌鏈�"); + data.put("40003","杞﹁締-" + carPlate + ": '" + (String) para.get("wallName") + "'"+ "涓存椂鐢靛瓙鍥存爮锛屽凡澶辨晥"); WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data)); } } @@ -182,6 +223,21 @@ @Override public int updateArdTankWallTemporary(String userId, String userName, Map<String, Object> para) { + ArdSyUser ardSyUser = ardSyUserMapper.userById(userId); + if(ardSyUser == null){ + return 0; + } + List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); + String syURL = ""; + if(syURLResult.size() != 0){ + syURL = syURLResult.get(0).getConfigValue(); + }else{ + return 0; + } + /*String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword()); + Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId()); + String sessionId = (String) LogInResult.get("sessionId");*/ + ArdTankWallTemporary ardTankWallTemporary = new ArdTankWallTemporary(); ardTankWallTemporary.setId((String) para.get("id")); ardTankWallTemporary.setProcessTime((String) para.get("processTime") + "/" + this.sdf.format(new Date())); @@ -197,12 +253,22 @@ }catch (Exception e){ e.printStackTrace(); } + String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword()); + Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId()); + String sessionId = (String) LogInResult.get("sessionId"); + Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(syURL, (String) para.get("carId"), ardSyUser.getUserId(), sessionId); + String carPlate = ""; + if(((String)syResult.get("rspCode")).equals("1")){ + Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0); + carPlate = (String) carMap.get("carPlate"); + } + List<String> userIdList = sysUserMapper.selectUserIdByCarId((String) para.get("carId"));//鏌ョ湅鍝簺鐢ㄦ埛鏉冮檺涓嬫湁杩欎釜杞� for (String key : ONLINE_USER_SESSIONS.keySet()){ String usersId = key.split("_")[0]; if(userIdList.contains(usersId)){ Map<String,Object> data = new HashMap(); - data.put("40003",(String) para.get("wallName") + "宸茶" + userName + "鎾ら攢"); + data.put("40003","杞﹁締-" + carPlate + ":'" + (String) para.get("wallName") + "'" + "涓存椂鐢靛瓙鍥存爮锛�" + "宸茶" + userName + "鎾ら攢"); WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data)); } } @@ -266,4 +332,73 @@ return resultMap; } + @Override + public void restartArdTankWallTemporaryThread(String userId, String password) { + List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT"); + String syURL = ""; + if(syURLResult.size() != 0){ + syURL = syURLResult.get(0).getConfigValue(); + }else{ + return; + } + + List<Map<String,Object>> result = ardTankWallTemporaryMapper.getAliveArdTankWallTemporaryWithCarId(); + Date now = new Date(); + try{ + String finalSyURL = syURL; + for(Map<String,Object> map : result){ + if(now.getTime() - sdf.parse((String)map.get("processTime")).getTime() < Long.parseLong((String)map.get("interval")) * 60 * 1000){ + //鏃堕棿娌℃湁杩囨湡锛屼粠鏂板垱寤虹嚎绋� + Thread thread = new Thread(){ + @Override + public void run() { + try { + //璁℃椂浠庣粨鏉熸椂闂村埌褰撳墠鏃堕棿 + Thread.sleep( sdf.parse((String)map.get("processTime")).getTime() + Long.parseLong((String)map.get("interval")) * 60 * 1000 - now.getTime()); + } catch (InterruptedException e) { + //e.printStackTrace(); + return; + } catch (ParseException e) { + //e.printStackTrace(); + return; + } + String passwordMd5 = DigestUtils.md5Hex(password); + Map<String, Object> LogInResult = sYClient.logIn(finalSyURL, passwordMd5, userId); + String sessionId = (String) LogInResult.get("sessionId"); + Map<String,Object> syResult = sYClient.getCarNearPositionByCarId(finalSyURL, (String) map.get("carId"), userId, sessionId); + String carPlate = ""; + if(((String)syResult.get("rspCode")).equals("1")){ + Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0); + carPlate = (String) carMap.get("carPlate"); + } + + List<String> userIdList = sysUserMapper.selectUserIdByCarId((String) map.get("carId"));//鏌ョ湅鍝簺鐢ㄦ埛鏉冮檺涓嬫湁杩欎釜杞� + + for (String key : ONLINE_USER_SESSIONS.keySet()){ + String userId = key.split("_")[0]; + if(userIdList.contains(userId)){ + Map<String,Object> data = new HashMap(); + data.put("40003","杞﹁締-" + carPlate + ": '" + (String) map.get("wallName") + "'"+ "涓存椂鐢靛瓙鍥存爮锛屽凡澶辨晥"); + WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(key), JSON.toJSONString(data)); + } + } + ArdTankWallTemporary ardTankWallTemporary = new ArdTankWallTemporary(); + ardTankWallTemporary.setId((String) map.get("id")); + ardTankWallTemporary.setProcessMark("-1");//-1涓哄埌鏈� + ardTankWallTemporaryMapper.updateArdTankWallTemporary(ardTankWallTemporary); + PositionContainer.getCarWallThreadMap().remove((String) map.get("carId")); + } + }; + thread.start(); + PositionContainer.getCarWallThreadMap().put((String) map.get("carId"), thread); + }else{ + //蹇界暐瓒呮椂 + continue; + } + } + }catch (Exception e){ + + } + } + } -- Gitblit v1.9.3