From ff93a75e1ede2f3a66de84efd822cfa94b0ac821 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期四, 01 二月 2024 15:59:59 +0800
Subject: [PATCH] 三一车辆追踪修改提交

---
 ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java |  161 +++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 137 insertions(+), 24 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java
index 14f8653..4fc1bcf 100644
--- a/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/application/service/impl/ArdAppApplicationServiceImpl.java
@@ -2,9 +2,10 @@
 
 import java.util.*;
 
-import com.alibaba.fastjson2.JSON;
-import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.mapper.SysRoleMapper;
+import com.ruoyi.utils.websocket.util.WebSocketUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -16,17 +17,23 @@
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
+import javax.websocket.Session;
+
+import static com.ruoyi.utils.websocket.util.WebSocketUtils.ONLINE_USER_SESSIONS;
 
 /**
  * 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆Service涓氬姟灞傚鐞�
  *
  * @author ard
- * @date 2024-01-23
+ * @date 2024-01-25
  */
 @Service
 public class ArdAppApplicationServiceImpl implements IArdAppApplicationService {
     @Resource
     private ArdAppApplicationMapper ardAppApplicationMapper;
+
+    @Resource
+    private SysRoleMapper sysRoleMapper;
 
     private Map<String,Thread> threadMap = new HashMap();
 
@@ -75,12 +82,12 @@
     /**
      * 鏌ヨ鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆
      *
-     * @param applicationId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭
+     * @param soilderId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭
      * @return 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆
      */
     @Override
-    public ArdAppApplication selectArdAppApplicationByApplicationId(String applicationId) {
-        return ardAppApplicationMapper.selectArdAppApplicationByApplicationId(applicationId);
+    public ArdAppApplication selectArdAppApplicationBySoilderId(String soilderId) {
+        return ardAppApplicationMapper.selectArdAppApplicationBySoilderId(soilderId);
     }
 
     /**
@@ -119,23 +126,23 @@
     /**
      * 鎵归噺鍒犻櫎鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆
      *
-     * @param applicationIds 闇�瑕佸垹闄ょ殑鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭
+     * @param soilderIds 闇�瑕佸垹闄ょ殑鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteArdAppApplicationByApplicationIds(String[] applicationIds) {
-        return ardAppApplicationMapper.deleteArdAppApplicationByApplicationIds(applicationIds);
+    public int deleteArdAppApplicationBySoilderIds(String[] soilderIds) {
+        return ardAppApplicationMapper.deleteArdAppApplicationBySoilderIds(soilderIds);
     }
 
     /**
      * 鍒犻櫎鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆淇℃伅
      *
-     * @param applicationId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭
+     * @param soilderId 鍗曞叺绔敵璇锋煡鐪嬫寚鎸ョ浣嶇疆鎴栦笁涓�杞﹁締浣嶇疆涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteArdAppApplicationByApplicationId(String applicationId) {
-        return ardAppApplicationMapper.deleteArdAppApplicationByApplicationId(applicationId);
+    public int deleteArdAppApplicationBySoilderId(String soilderId) {
+        return ardAppApplicationMapper.deleteArdAppApplicationBySoilderId(soilderId);
     }
 
     @Override
@@ -151,6 +158,7 @@
             ardAppApplication.setApplicationType("Commander");
             ardAppApplication.setBegin("");
             ardAppApplication.setState("0");
+            ardAppApplication.setSoilderCheck("true");//鎸囨尌绔湭瀹℃壒涔熻涓簍rue,涓嶉渶瑕佸崟鍏电鏌ョ湅
             int resultSingle = ardAppApplicationMapper.updateArdAppApplicationByCommanderIdAndSoilderIdAndType(ardAppApplication);
             result = result + resultSingle;
             if(resultSingle == 0){
@@ -175,12 +183,30 @@
             ardAppApplication.setApplicationType("SYCar");
             ardAppApplication.setBegin("");
             ardAppApplication.setState("0");
+            ardAppApplication.setSoilderCheck("true");//鎸囨尌绔湭瀹℃壒涔熻涓簍rue,涓嶉渶瑕佸崟鍏电鏌ョ湅
             int resultSingle = ardAppApplicationMapper.updateArdAppApplicationByCommanderIdAndSoilderIdAndType(ardAppApplication);
             result = result + resultSingle;
             if(resultSingle == 0){
                 ardAppApplication.setApplicationId(IdUtils.simpleUUID());
                 resultSingle = ardAppApplicationMapper.insertArdAppApplication(ardAppApplication);
                 result = result + resultSingle;
+            }
+            //鍔犲叆缁檖c绔痺ebsocket杞彂
+            List<SysRole> sysRoleList = sysRoleMapper.selectRolePermissionByUserId(commanderId);
+            for(SysRole sysRole : sysRoleList){
+                if(!sysRole.getRoleKey().equals("appLeader")){
+                    Map<String,Object> resultMap = ardAppApplicationMapper.selectSYCarApplicationByPCIdAndSoilderId(commanderId,usersId);
+                    Map<String,Map<String,Object>> msg = new HashMap();
+                    msg.put("60000",resultMap);
+                    for(String id : ONLINE_USER_SESSIONS.keySet()){
+                        if(id.startsWith(commanderId)){
+                            Session session = ONLINE_USER_SESSIONS.get(id);
+                            WebSocketUtils.sendMessage(session,msg);
+                            break;
+                        }
+                    }
+                    break;//涓�涓猵c绔敤鎴峰彲鑳芥寕鎺ュ涓鑹诧紝姣忎釜pc绔彧杞彂涓�娆�
+                }
             }
         }
         return result;
@@ -265,16 +291,6 @@
         Date date = new Date();
         //鏌ョ湅鎸囨尌绔綅缃敵璇�
         List<Map<String, Object>> resultCommanderPosition = new ArrayList();
-        for(Map<String, Object> map : ardAppApplicationList){
-            Long interval = date.getTime() - Long.parseLong((String)map.get("begin"));
-            interval = 24 * 60 * 60 * 1000 - interval;
-            Long hour = interval / (60 * 60 * 1000);
-            Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000);
-            map.put("time",hour + "鏃�" + min + "鍒�");
-            if(((String)map.get("applicationType")).equals("Commander")){
-                resultCommanderPosition.add(map);
-            }
-        }
         //鏌ョ湅杞﹁締浣嶇疆鐢宠
         List<Map<String, Object>> resultSYCarsPosition = new ArrayList();
         for(Map<String, Object> map : ardAppApplicationList){
@@ -282,8 +298,11 @@
             interval = 24 * 60 * 60 * 1000 - interval;
             Long hour = interval / (60 * 60 * 1000);
             Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000);
-            map.put("time",hour + "鏃�" + min + "鍒�");
-            if(((String)map.get("applicationType")).equals("SYCar")){
+            Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000;
+            map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�");
+            if(((String)map.get("applicationType")).equals("Commander")){
+                resultCommanderPosition.add(map);
+            }else if(((String)map.get("applicationType")).equals("SYCar")){
                 resultSYCarsPosition.add(map);
             }
         }
@@ -291,4 +310,98 @@
         result.put("SYCars",resultSYCarsPosition);
         return result;
     }
+
+    @Override
+    public Map<String, List<Map<String, Object>>> getSendPositionTrue(String soilderId) {
+        Map<String, List<Map<String, Object>>> result = new HashMap();
+        List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationBySoilderIdTrue(soilderId);
+        Date date = new Date();
+        //鏌ョ湅鎸囨尌绔綅缃敵璇�
+        List<Map<String, Object>> resultCommanderPosition = new ArrayList();
+        //鏌ョ湅杞﹁締浣嶇疆鐢宠
+        List<Map<String, Object>> resultSYCarsPosition = new ArrayList();
+        for(Map<String, Object> map : ardAppApplicationList){
+            Long interval = date.getTime() - Long.parseLong((String)map.get("begin"));
+            interval = 24 * 60 * 60 * 1000 - interval;
+            Long hour = interval / (60 * 60 * 1000);
+            Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000);
+            Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000;
+            map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�");
+            if(((String)map.get("applicationType")).equals("Commander")){
+                resultCommanderPosition.add(map);
+            }else if(((String)map.get("applicationType")).equals("SYCar")){
+                resultSYCarsPosition.add(map);
+            }
+        }
+        result.put("commander",resultCommanderPosition);
+        result.put("SYCars",resultSYCarsPosition);
+        return result;
+    }
+
+    @Override
+    public Map<String, List<Map<String, Object>>> getCheckPositionOwn(String soilderId) {
+        Map<String, List<Map<String, Object>>> result = new HashMap();
+        List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationBySoilderIdFalse(soilderId);
+        Date date = new Date();
+        //鏌ョ湅鎸囨尌绔綅缃敵璇�
+        List<Map<String, Object>> resultCommanderPosition = new ArrayList();
+        //鏌ョ湅杞﹁締浣嶇疆鐢宠
+        List<Map<String, Object>> resultSYCarsPosition = new ArrayList();
+        for(Map<String, Object> map : ardAppApplicationList){
+            /*if(((String)map.get("state")).equals("1")){
+                Long interval = date.getTime() - Long.parseLong((String)map.get("begin"));
+                interval = 24 * 60 * 60 * 1000 - interval;
+                Long hour = interval / (60 * 60 * 1000);
+                Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000);
+                map.put("time",hour + "鏃�" + min + "鍒�");
+                if(((String)map.get("applicationType")).equals("Commander")){
+                    resultCommanderPosition.add(map);
+                }else if(((String)map.get("applicationType")).equals("SYCar")){
+                    resultSYCarsPosition.add(map);
+                }
+            }else{
+                map.put("time","");
+                if(((String)map.get("applicationType")).equals("Commander")){
+                    resultCommanderPosition.add(map);
+                }else if(((String)map.get("applicationType")).equals("SYCar")){
+                    resultSYCarsPosition.add(map);
+                }
+            }*/
+            if(((String)map.get("applicationType")).equals("Commander")){
+                resultCommanderPosition.add(map);
+            }else if(((String)map.get("applicationType")).equals("SYCar")){
+                resultSYCarsPosition.add(map);
+            }
+        }
+        result.put("commander",resultCommanderPosition);
+        result.put("SYCars",resultSYCarsPosition);
+        return result;
+    }
+
+    @Override
+    public int approvalCheckPositionOwn(String soilderId, Map<String, String> para) {
+        String applicationType = para.get("applicationType");
+        String commanderId = para.get("commanderId");
+        int result = ardAppApplicationMapper.updateSoilderCheckByCommanderIdAndSoilderIdAndType(soilderId,commanderId,applicationType);
+        return result;
+    }
+
+    @Override
+    public List<Map<String, Object>> getCheckPositionNo(String commanderId) {///
+        List<Map<String,Object>> ardAppApplicationList = ardAppApplicationMapper.selectArdAppApplicationByCommanderIdNoCheck(commanderId);
+        Date date = new Date();
+        for(Map<String, Object> map : ardAppApplicationList){
+            if(((String)map.get("begin")).equals("")){
+                map.put("time","");
+            }else{
+                Long interval = date.getTime() - Long.parseLong((String)map.get("begin"));
+                interval = 24 * 60 * 60 * 1000 - interval;
+                Long hour = interval / (60 * 60 * 1000);
+                Long min = (interval - hour * 60 * 60 * 1000) / (60 * 1000);
+                Long second = (interval - hour * 60 * 60 * 1000 - min * 60 * 1000) / 1000;
+                map.put("time",hour + "鏃�" + min + "鍒�" + second + "绉�");
+            }
+        }
+        return ardAppApplicationList;
+    }
 }

--
Gitblit v1.9.3