From a6205cbf1a93ea8f77a771de2dbd68c8f1e52ebe Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期五, 02 八月 2024 13:25:46 +0800
Subject: [PATCH] 电磁锁新增临时电子围栏查询修改提交

---
 ard-work/src/main/java/com/ruoyi/sy/service/impl/ArdTankLockProcessLogServiceImpl.java |   83 +++++++++++++++++++++++++++++++++++------
 1 files changed, 70 insertions(+), 13 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 99aacaa..e39bf04 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
@@ -1,20 +1,27 @@
 package com.ruoyi.sy.service.impl;
 
 import java.awt.geom.Point2D;
+import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
+import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.core.domain.AjaxResult;
 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.ArdTankWall;
+import com.ruoyi.sy.gps31.PositionContainer;
 import com.ruoyi.sy.mapper.ArdSyUserMapper;
 import com.ruoyi.sy.mapper.ArdTankLockMapper;
 import com.ruoyi.sy.mapper.ArdTankWallMapper;
 import com.ruoyi.system.mapper.SysConfigMapper;
 import com.ruoyi.utils.forest.SYClient;
 import com.ruoyi.utils.gps.GeoTools;
+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;
@@ -54,6 +61,8 @@
     private SYClient sYClient;
 
     private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    private Map<String,Timer> timerMap = new HashMap();
 
     /**
      * 鏌ヨ缃愯溅閿佹搷鎺ф棩蹇�
@@ -124,7 +133,7 @@
     }
 
     @Override
-    public String processArdTankLockByLockId(String userId, String username, Map<String,String> para) {
+    public AjaxResult processArdTankLockByLockId(String userId, String username, Map<String,String> para) {
         String lockId = para.get("lockId");
         String lockNum = para.get("lockNum");
         String carId = para.get("carId");
@@ -134,19 +143,19 @@
         //鍒ゆ柇浣胯兘
         ArdTankLock ardTankLock = ardTankLockMapper.selectArdTankLockById(lockId);
         if(ardTankLock.getEnable().equals("false")){
-            return "璇ラ攣浣胯兘鍏抽棴锛屾棤娉曟搷鎺�";
+            return AjaxResult.error("璇ラ攣浣胯兘鍏抽棴锛屾棤娉曟搷鎺�");
         }
 
         ArdSyUser ardSyUser = ardSyUserMapper.userById(userId);
         if(ardSyUser == null){
-            return "鏈寕鎺ヤ笁涓�璐﹀彿";
+            return AjaxResult.error("鏈寕鎺ヤ笁涓�璐﹀彿");
         }
         List<SysConfig> syURLResult = sysConfigMapper.selectByType("syCarPT");
         String syURL = "";
         if(syURLResult.size() != 0){
             syURL = syURLResult.get(0).getConfigValue();
         }else{
-            return "涓変竴骞冲彴鏈綍鍏�";
+            return AjaxResult.error("涓変竴骞冲彴鏈綍鍏�");
         }
         String passwordMd5 = DigestUtils.md5Hex(ardSyUser.getPassword());
         Map<String, Object> LogInResult = sYClient.logIn(syURL, passwordMd5, ardSyUser.getUserId());
@@ -159,13 +168,13 @@
         if(((String)syResult.get("rspCode")).equals("1")){
             Map<String,Object> carMap = ((List<Map<String,Object>>)syResult.get("list")).get(0);
             if(Integer.parseInt((String)carMap.get("speed")) != 0){
-                return "杞﹁締姝e湪琛岄┒涓�";
+                return AjaxResult.error("杞﹁締姝e湪琛岄┒涓�");
             }
             lng = (String) carMap.get("lng");
             lat = (String) carMap.get("lat");
             carPlate = (String) carMap.get("carName");
         }else{
-            return "涓変竴骞冲彴鎶ラ敊";
+            return AjaxResult.error("涓変竴骞冲彴鎶ラ敊");
         }
 
         List<ArdTankWall> ardTankWallList = ardTankWallMapper.getArdTankWallProcessByLockId(lockId);//鏌ヨ閿佹寕鎺ョ殑鍏ㄩ儴闇�瑕佸姩浣滅殑鐢靛瓙鍥存爮
@@ -179,10 +188,10 @@
                     pts.add(new Point2D.Double(Double.parseDouble(wallpoiArro[j]), Double.parseDouble(wallpoiArro[j+1])));
                 }
                 if(GeoTools.IsPtInPoly(point, pts)){//鍦ㄤ换鎰忕數瀛愬洿鏍忓唴锛屼笉鎶ヨ
-                    return "褰撳墠杞﹁締姝e鍦�" + ardTankWall.getWallName() + "涓�";
+                    return AjaxResult.error("褰撳墠杞﹁締姝e鍦�" + ardTankWall.getWallName() + "涓�");
                 }
             }
-            return "褰撳墠杞﹁締姝e鍦ㄧ數瀛愬洿鏍忓";
+            return AjaxResult.error("褰撳墠杞﹁締姝e鍦ㄧ數瀛愬洿鏍忓");
         }else{
             try{
                 String lockNumHead = lockNum.substring(0,2);
@@ -200,8 +209,9 @@
 
                 String paramsStr = lockNum + "02" + process + checkNum;
                 paramsStr = "%7B%22type%22%3A%22ff%22%2C%22dataCnt%22%3A%22" + paramsStr + "%22%7D";
-                Map<String,Object> result = sYClient.sendCmd(syURL, ardSyUser.getUserId(), carId, 199, "DataDownTransfer", paramsStr, sessionId);
-
+                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());
@@ -221,14 +231,61 @@
                     ardTankLockProcessLog.setLatitude(lat);
                     ardTankLockProcessLog.setProcessTime(this.sdf.format(new Date()));
                     ardTankLockProcessLogMapper.insertArdTankLockProcessLog(ardTankLockProcessLog);
-                    return "鍙戦�佹垚鍔�";
+                    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 "鍙戦�佸け璐�";
+                    return AjaxResult.error("鍏朵粬鍘熷洜鍙戦�佸け璐�");
                 }
             }catch(Exception e){
                 e.printStackTrace();
-                return "鍙戦�佸け璐�";
+                PositionContainer.getCarLockProcessThreadMap().get(carId).get(lockNum).remove("lockProcess");//绉婚櫎瀹瑰櫒
+                return AjaxResult.error("鍙戦�佸け璐�" + e.toString());
             }
         }
     }
+
+    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>) JSON.parse(message);
+            return map;
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+            return new HashMap();
+        }
+    }
 }

--
Gitblit v1.9.3