From 20439bc0fa1ff714ed5f61e711272deebb76e2c9 Mon Sep 17 00:00:00 2001
From: Administrator <1144154118@qq.com>
Date: 星期四, 17 八月 2023 16:40:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
index 5fa11ea..e204a69 100644
--- a/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/app/position/service/impl/ArdAppPositionServiceImpl.java
@@ -3,12 +3,17 @@
 import com.ruoyi.app.position.domain.ArdAppPosition;
 import com.ruoyi.app.position.mapper.ArdAppPositionMapper;
 import com.ruoyi.app.position.service.IArdAppPositionService;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.scheduling.domian.SchedulingParam;
 import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.utils.tools.GisTool;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -17,6 +22,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -26,10 +32,12 @@
  * @date 2023-07-18
  */
 @Service
+@Slf4j
 public class ArdAppPositionServiceImpl implements IArdAppPositionService {
     @Resource
     private ArdAppPositionMapper ardAppPositionMapper;
-
+    @Resource
+    private ISysUserService iSysUserService;
 
     /**
      * 鏌ヨapp浣嶇疆
@@ -41,6 +49,7 @@
     public ArdAppPosition selectArdAppPositionById(String id) {
         return ardAppPositionMapper.selectArdAppPositionById(id);
     }
+
     /**
      * 鎸夌敤鎴穒d鏌ヨ鏈�鍚庣殑浣嶇疆淇℃伅
      *
@@ -48,9 +57,10 @@
      * @return app浣嶇疆
      */
     @Override
-    public ArdAppPosition selectLastArdAppPositionByUserId(String userId){
+    public ArdAppPosition selectLastArdAppPositionByUserId(String userId) {
         return ardAppPositionMapper.selectLastArdAppPositionByUserId(userId);
     }
+
     /**
      * 鏌ヨapp浣嶇疆鍒楄〃
      *
@@ -108,4 +118,50 @@
         return ardAppPositionMapper.deleteArdAppPositionById(id);
     }
 
+    /**
+     * 鑾峰彇灏佹帶鍦堝唴鎵�鏈夊湪绾縜pp鐢ㄦ埛
+     * 鍒樿嫃涔�
+     * 2023/8/17 13:56:36
+     */
+    @Override
+    public List<SysUser> getNearAppUsers(SchedulingParam param) {
+        Double longitude = param.getLongitude();
+        Double latitude = param.getLatitude();
+        if (longitude == null && latitude == null) {
+            log.debug("鍘熺偣鍧愭爣涓虹┖");
+            return null;
+        }
+        Integer radius = param.getSealingRadius();
+
+        if (radius == null) {
+            log.debug("鍗婂緞璺濈涓虹┖");
+            return null;
+        }
+
+        SysUser user = new SysUser();
+        List<SysUser> appUserList = iSysUserService.selectAllAppUserList(user);
+        //杩囨护鍦ㄧ嚎
+        List<SysUser> onLineList = appUserList.stream()
+                .filter(sysUser -> (sysUser.getAppOnlineState().equals("1")))
+                .collect(Collectors.toList());
+        //杩囨护鑼冨洿
+        List<SysUser> filteredList = new ArrayList<>();
+        for(SysUser sysUser:onLineList) {
+            ArdAppPosition ardAppPosition = ardAppPositionMapper.selectLastArdAppPositionByUserId(sysUser.getUserId());
+            if (ardAppPosition != null) {
+                Double lon = ardAppPosition.getLongitude();
+                Double lat = ardAppPosition.getLatitude();
+                if(longitude==null||latitude==null)
+                {
+                    continue;
+                }
+                double distance = GisTool.getDistance(new double[]{ longitude, latitude}, new double[]{ lon, lat});
+                if (distance <= radius) {
+                    filteredList.add(sysUser); // 灏嗘弧瓒虫潯浠剁殑鐢ㄦ埛娣诲姞鍒扮瓫閫夊垪琛ㄤ腑
+                }
+            }
+        }
+        return filteredList;
+    }
+
 }

--
Gitblit v1.9.3