6 コミット de7aeda911 ... 3d57f2a375

作者 SHA1 メッセージ 日付
  云殇忆 3d57f2a375 优化 1 年間 前
  dzk 207c679bf8 重写SSE推送数据的代码 1 年間 前
  JensionDzero 620c84dcfe 添加注释 1 年間 前
  JensionDzero cd8e3d51cb 添加注释 1 年間 前
  JensionDzero c8de09f12b 优化 1 年間 前
  JensionDzero 2d6d8c38fe 修改map接口,使用ssr技术 1 年間 前
48 ファイル変更938 行追加408 行削除
  1. 2 2
      .run/ruoyi-monitor-admin.run.xml
  2. 2 2
      .run/ruoyi-xxl-job-admin.run.xml
  3. 2 2
      pom.xml
  4. 3 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ChannelAnalyseController.java
  5. 8 8
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ChannelMapController.java
  6. 30 4
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/CommonController.java
  7. 28 6
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalBuildWdController.java
  8. 85 6
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalCommonController.java
  9. 12 5
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalEnterpriseWdController.java
  10. 2 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalHouseWdController.java
  11. 5 5
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalStoreWdController.java
  12. 46 13
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/WdRecycleController.java
  13. 3 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/controller/WorkTableController.java
  14. 30 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/AddrCategory.java
  15. 18 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/BuildWd.java
  16. 3 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/Category.java
  17. 3 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/CityTierBody.java
  18. 79 5
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/Enterprise.java
  19. 9 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/EnterpriseWd.java
  20. 15 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/HouseWd.java
  21. 15 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/IndustryCategory.java
  22. 18 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/ManageType.java
  23. 57 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/StoreWd.java
  24. 0 21
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalBuildWdStatisticsCategory.java
  25. 39 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalBuildingWd.java
  26. 39 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalEnterpriseWd.java
  27. 42 10
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalHouseWd.java
  28. 15 4
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalHouseWdStatisticsData.java
  29. 30 4
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalStoreWd.java
  30. 12 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalStoreWdStatisticsCategory.java
  31. 9 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TrafficWd.java
  32. 18 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TypeBy.java
  33. 78 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/WdInfo.java
  34. 0 20
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/WdToologicalItem.java
  35. 12 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/PointBo.java
  36. 6 0
      ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/WdInfoDao.java
  37. 3 1
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/TopologicalCommonService.java
  38. 4 2
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/BusinessOpportunitiesServiceImpl.java
  39. 25 23
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelAnalyseServiceImpl.java
  40. 17 172
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelMapServiceImpl.java
  41. 41 8
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/CommonServiceImpl.java
  42. 6 6
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalBuildWdSereviceImpl.java
  43. 14 13
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalCommonServiceImpl.java
  44. 5 5
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalEnterpriseWdServiceImpl.java
  45. 3 3
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalHouseServiceWdImpl.java
  46. 20 23
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalStoreWdServiceImpl.java
  47. 21 13
      ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/WdRecycleServiceImpl.java
  48. 4 0
      ruoyi-demo/src/main/resources/mapper/demo/WdInfoDaoMapper.xml

+ 2 - 2
.run/ruoyi-monitor-admin.run.xml

@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="ruoyi-monitor-admin" type="docker-deploy" factoryName="dockerfile" server-name="lbjzys">
+  <configuration default="false" name="ruoyi-monitor-admin" type="docker-deploy" factoryName="dockerfile">
     <deployment type="dockerfile">
       <settings>
         <option name="imageTag" value="ruoyi/ruoyi-monitor-admin:4.8.0" />
@@ -26,4 +26,4 @@
     </deployment>
     <method v="2" />
   </configuration>
-</component>
+</component>

+ 2 - 2
.run/ruoyi-xxl-job-admin.run.xml

@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="ruoyi-xxl-job-admin" type="docker-deploy" factoryName="dockerfile" server-name="lbjzys">
+  <configuration default="false" name="ruoyi-xxl-job-admin" type="docker-deploy" factoryName="dockerfile">
     <deployment type="dockerfile">
       <settings>
         <option name="imageTag" value="ruoyi/ruoyi-xxl-job-admin:4.8.0" />
@@ -26,4 +26,4 @@
     </deployment>
     <method v="2" />
   </configuration>
-</component>
+</component>

+ 2 - 2
pom.xml

@@ -74,7 +74,7 @@
             </properties>
             <activation>
                 <!-- 默认环境 -->
-                <activeByDefault>false</activeByDefault>
+                <activeByDefault>true</activeByDefault>
             </activation>
         </profile>
         <profile>
@@ -85,7 +85,7 @@
             </properties>
             <activation>
                 <!-- 默认环境 -->
-                <activeByDefault>true</activeByDefault>
+                <activeByDefault>false</activeByDefault>
             </activation>
         </profile>
         <profile>

+ 3 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ChannelAnalyseController.java

@@ -166,7 +166,7 @@ public class ChannelAnalyseController {
 
     /**
      * 获取 楼宇类型数量统计
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @GetMapping("/aroundBuildAnalyse")
@@ -189,7 +189,7 @@ public class ChannelAnalyseController {
 
     /**
      * 获取 人均消费统计
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @GetMapping("/perCapitaConsumpAnalyse")
@@ -213,7 +213,7 @@ public class ChannelAnalyseController {
 
     /**
      * 获取 店龄/经营时长统计
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @GetMapping("/operateTimeAnalyse")

+ 8 - 8
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ChannelMapController.java

@@ -46,7 +46,7 @@ public class ChannelMapController {
 
     /**
      * 地图模式:查看省级别的网点数量
-     * @param channel
+     * @param channel 渠道地图过滤请求接收体
      * @return
      */
     @RequestMapping("/getAreaProvince")
@@ -72,7 +72,7 @@ public class ChannelMapController {
 
     /**
      * 地图模式:查看市级别的网点数量
-     * @param channel
+     * @param channel 渠道地图过滤请求接收体
      * @return
      */
     @RequestMapping("/getAreaCity")
@@ -98,7 +98,7 @@ public class ChannelMapController {
 
     /**
      * 地图模式:查看区级别的网点数量
-     * @param channel
+     * @param channel 渠道地图过滤请求接收体
      * @return
      */
     @RequestMapping("/getAreaZone")
@@ -125,7 +125,7 @@ public class ChannelMapController {
 
     /**
      * 地图模式:查看所有地区的网点数量
-     * @param channel
+     * @param channel 渠道地图过滤请求接收体
      * @return
      */
     @RequestMapping("/getArea")
@@ -151,7 +151,7 @@ public class ChannelMapController {
 
     /**
      * 获取网点列表
-     * @param channel
+     * @param channel 渠道地图过滤请求接收体
      * @return
      */
     @RequestMapping("/list")
@@ -183,7 +183,7 @@ public class ChannelMapController {
 
     /**
      * 获取区下的具体网点信息
-     * @param channel
+     * @param channel 渠道地图过滤请求接收体
      * @return
      */
     @RequestMapping("/point")
@@ -208,7 +208,7 @@ public class ChannelMapController {
 
     /**
      * 标记网点关注列表
-     * @param wdTopologicalInfoBos
+     * @param wdTopologicalInfoBos 网点信息列表
      */
     public void attention(List<WdTopologicalInfoBo> wdTopologicalInfoBos){
         //需要标志关注的网点Id
@@ -243,7 +243,7 @@ public class ChannelMapController {
 
     /**
      * 获取网点详细信息
-     * @param wdId
+     * @param wdId 网点Id
      * @return
      */
     @GetMapping("/getWdInfo")

+ 30 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/CommonController.java

@@ -17,6 +17,9 @@ import org.springframework.web.bind.annotation.RestController;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+/**
+ * 基础功能-下拉框
+ */
 @RestController
 @RequestMapping("/common")
 public class CommonController {
@@ -25,44 +28,67 @@ public class CommonController {
 
     @Autowired
     RedisTemplate redisTemplate;
-    //获取网点标签
+
+    /**
+     * 获取犇云分类下拉框
+     * @return
+     */
     @GetMapping("/tag")
     public R tag(){
+        //1.查看redis中是否已存在
         List<TypeByBody>  wdCount = (List<TypeByBody>) redisTemplate.boundValueOps(RedisContant.COMMON_TAG).get();
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.查询数据
         List<TypeByBody> tag = commonService.tag();
-        //4.保存到redis中
+
+        //3.保存到redis中
         redisTemplate.boundValueOps(RedisContant.COMMON_TAG).set(tag);
         redisTemplate.expire(RedisContant.COMMON_TAG,RedisContant.COMMON_TAG_TIME, TimeUnit.MINUTES); //30分钟
         return R.ok(tag);
     }
 
-    //获取网点标签
+    /**
+     * 获取地区码下拉框
+     * @return
+     */
     @GetMapping("/addrCodeMap")
     public R addrCodeMap(){
+        //1.查看redis中是否存在数据
         List<AddrCategoryBody>  wdCount = (List<AddrCategoryBody>) redisTemplate.boundValueOps(RedisContant.COMMON_ADDR_CODE_MAP).get();
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.查询数据
         List<AddrCategoryBody> addrCategoryBodies = commonService.addrCodeMap();
+
+        //3.存入redis
         redisTemplate.boundValueOps(RedisContant.COMMON_ADDR_CODE_MAP).set(wdCount);
         redisTemplate.expire(RedisContant.COMMON_ADDR_CODE_MAP,RedisContant.COMMON_ADDR_CODE_MAP_TIME, TimeUnit.MINUTES); //30分钟
         return R.ok(addrCategoryBodies);
     }
 
+    /**
+     * 分等级(省、市、区)查询地区
+     * @param code 地区Code:level=province(不需要)、level=city(code=省码)、level=zone(code=市码)
+     * @param level 搜索等级:province(查询全省)、city(查某个省的市)、zone(查某个市的区)
+     * @return
+     */
     @GetMapping("/addrCodeLevel")
     public R addrCodeLevel(String code,String level){
-        //2.查看redis中是否存在有缓存
+        //1.查看redis中是否存在数据
         List<AddrCategory>  wdCount = (List<AddrCategory> ) redisTemplate.boundHashOps(RedisContant.COMMON_LEVEL).get(code+level);
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2查询数据
         List<AddrCategory> addrCategories = commonService.addrCodeLevel(code,level);
+
+        //3.存入redis
         redisTemplate.boundHashOps(RedisContant.COMMON_LEVEL).put(code+level,addrCategories);
         redisTemplate.expire(RedisContant.COMMON_LEVEL,RedisContant.COMMON_LEVEL_TIME, TimeUnit.MINUTES); //30分钟
         return R.ok(addrCategories);

+ 28 - 6
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalBuildWdController.java

@@ -20,6 +20,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+/**
+ * 点位评估-周边楼宇网点
+ */
 @RestController
 @RequestMapping("/poi/topologicalBuildWd")
 public class TopologicalBuildWdController {
@@ -29,54 +32,73 @@ public class TopologicalBuildWdController {
     @Autowired
     RedisTemplate redisTemplate;
 
+
+    /**
+     * 周边楼宇物业类别
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @return
+     */
     @RequestMapping("/buildingLevel")
     public R buildingLevel(@Validated(value = {TopologicalWdListGroup.class}) TopologicalWdAceeptVo topologicalWdAceeptVo){
+        //1.查看redis中是否存在有缓存
         String md5 = topologicalWdAceeptVo.getHash();
-        //2.查看redis中是否存在有缓存
         List<BuildWdCategoryCount> wdCount = (List<BuildWdCategoryCount>) redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_BUILD_WD_CATEGORY).get(md5);
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.获取数据
         List<BuildWdCategoryCount> list = topologicalBuildWdSerevice.buildingLevel(topologicalWdAceeptVo);
 
+        //3.保存到redis
         redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_BUILD_WD_CATEGORY).put(md5,list);
         redisTemplate.expire(RedisContant.TOPOLOGICAL_BUILD_WD_CATEGORY, RedisContant.TOPOLOGICAL_BUILD_WD_CATEGORY_TIME, TimeUnit.MINUTES); //30分钟
-
         return R.ok(list);
     }
 
+    /**
+     * 获取周边楼宇列表
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @return
+     */
     @RequestMapping("/list")
     public R list(@Validated(value = {TopologicalWdListGroup.class}) TopologicalWdAceeptVo topologicalWdAceeptVo){
+        //1.查看redis中是否存在有缓存
         String md5 = topologicalWdAceeptVo.getHash();
-        //2.查看redis中是否存在有缓存
         Page<TopologicalBuildingWd>  wdCount = (Page<TopologicalBuildingWd>)redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_BUILD_WD_LIST).get(md5);
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.获取数据
         Page<TopologicalBuildingWd> list = topologicalBuildWdSerevice.list(topologicalWdAceeptVo);
 
+        //3.存入redis
         redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_BUILD_WD_LIST).put(md5,list);
         redisTemplate.expire(RedisContant.TOPOLOGICAL_BUILD_WD_LIST,RedisContant.TOPOLOGICAL_BUILD_WD_LIST_TIME, TimeUnit.MINUTES); //30分钟
-
         return R.ok(list);
     }
 
+    /**
+     * 周边楼宇物业分类统计
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @return
+     */
     @RequestMapping("/buildingHistogram")
     public R buildingHistogram(@Validated(value = {TopologicalWdListGroup.class}) TopologicalWdAceeptVo topologicalWdAceeptVo){
+        //1.查看redis中是否存在有缓存
         String md5 = topologicalWdAceeptVo.getHash();
-        //2.查看redis中是否存在有缓存
         List<Histogram> wdCount = (List<Histogram>) redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_BUILD_WD_BUILDING_HISTOGRAM).get(md5);
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.获取数据
         List<Histogram> list = topologicalBuildWdSerevice.buildingHistogram(topologicalWdAceeptVo);
 
+        //3.存入redis
         redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_BUILD_WD_BUILDING_HISTOGRAM).put(md5,list);
         redisTemplate.expire(RedisContant.TOPOLOGICAL_BUILD_WD_BUILDING_HISTOGRAM, RedisContant.TOPOLOGICAL_BUILD_WD_BUILDING_HISTOGRAM_TIME, TimeUnit.MINUTES); //30分钟
-
         return R.ok(list);
     }
 }

+ 85 - 6
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalCommonController.java

@@ -1,23 +1,44 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaIgnore;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.PageUtil;
+import cn.hutool.json.JSONString;
+import cn.hutool.json.JSONUtil;
+import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.helper.LoginHelper;
+import com.ruoyi.common.utils.JsonUtils;
 import com.ruoyi.demo.constant.RedisContant;
 import com.ruoyi.demo.entity.WdInfo;
+import com.ruoyi.demo.entity.bo.PointBo;
 import com.ruoyi.demo.entity.vo.TopologicalWdAceeptVo;
 import com.ruoyi.demo.service.TopologicalCommonService;
 import com.ruoyi.demo.service.WdInfoService;
 import io.swagger.v3.oas.models.security.SecurityScheme;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.geo.Point;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 
+/**
+ * 点位评估-基本功能
+ */
 @RestController
 @RequestMapping("/poi/common")
+@Slf4j
 public class TopologicalCommonController {
     @Autowired
     TopologicalCommonService topologicalCommonService;
@@ -29,11 +50,22 @@ public class TopologicalCommonController {
     @Autowired
     RedisTemplate redisTemplate;
 
+    /**
+     * 搜索栏——前缀查询
+     * @param searchText 搜索关键字
+     * @param size 返回数量
+     * @return
+     */
     @RequestMapping("/prefixSearch")
     public R prefixSearch(String searchText,Integer size){
         List<WdInfo> wdInfos = topologicalCommonService.prefixSearch(searchText,size);
         return R.ok(wdInfos);
     }
+
+    /**
+     * 获取半径范围下拉框
+     * @return
+     */
     @RequestMapping("/range")
     public R range(){
         HashMap hashMap = new HashMap<>();
@@ -43,20 +75,67 @@ public class TopologicalCommonController {
         return R.ok(hashMap);
     }
 
-    @RequestMapping("/map")
-    public R map(TopologicalWdAceeptVo topologicalWdAceeptVo){
+    /**
+     * 获取中心点相邻点坐标(使用SSE连接)
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @return
+     * @throws IOException
+     */
+    @SaIgnore
+    @GetMapping(path = "/map",produces = {MediaType.TEXT_EVENT_STREAM_VALUE})
+    public SseEmitter map(TopologicalWdAceeptVo topologicalWdAceeptVo) throws IOException {
         String md5 = topologicalWdAceeptVo.getHash();
+
         //2.查看redis中是否存在有缓存
-        List<WdInfo> wdCount = (List<WdInfo>) redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_COMMON_MAP).get(md5);
+        List<PointBo> wdCount = (List<PointBo>) redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_COMMON_MAP).get(md5);
         if (wdCount != null) {
-            return R.ok(wdCount);
+            SseEmitter sseEmitter = getSseEmitter();
+            sendFragment(sseEmitter,wdCount);
+            return sseEmitter;
         }
 
-        List<WdInfo> map = topologicalCommonService.map(topologicalWdAceeptVo);
+        List<PointBo> map = topologicalCommonService.map(topologicalWdAceeptVo);
         redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_COMMON_MAP).put(md5,map);
         redisTemplate.expire(RedisContant.TOPOLOGICAL_COMMON_MAP,RedisContant.TOPOLOGICAL_COMMON_MAP_TIME, TimeUnit.MINUTES); //30分钟
+        SseEmitter sseEmitter = getSseEmitter();
+        sendFragment(sseEmitter,map);
+        return sseEmitter;
+    }
 
-        return R.ok(map);
+    /**
+     * SSE连接:获取连接实体类SseEmitter
+     * @return
+     */
+    public SseEmitter getSseEmitter(){
+        SseEmitter sseEmitter = new SseEmitter();
+        sseEmitter.onTimeout(() -> log.info("SSE推送超时"));
+        sseEmitter.onCompletion(() -> log.info("SSE推送完成"));
+        sseEmitter.onError((e) -> log.error("SSE推送异常",e));
+        return sseEmitter;
+    }
+
+    /**
+     * SSE连接:发送信息
+     * @param sseEmitter
+     * @param wdCount 点位信息
+     */
+    public void sendFragment(SseEmitter sseEmitter,List<PointBo> wdCount){
+        int size = 500;
+        int pages = PageUtil.totalPage(wdCount.size(), size);
+        for (int i = 0; i < pages; i++) {
+            try {
+                List<PointBo> boList = CollUtil.page(i + 1, size, wdCount);
+                if (!boList.isEmpty()) sseEmitter.send(SseEmitter.event().name("message").data(JSONUtil.toJsonStr(boList)));
+            } catch (IOException e) {
+                sseEmitter.completeWithError(e);
+            }
+        }
+        try {
+            sseEmitter.send(SseEmitter.event().name("finish").data("数据推送完成"));
+        } catch (IOException e) {
+            sseEmitter.completeWithError(e);
+        }
+        sseEmitter.complete();
     }
 
 }

+ 12 - 5
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalEnterpriseWdController.java

@@ -33,40 +33,47 @@ public class TopologicalEnterpriseWdController {
 
     /**
      * 获取周边企业网点列表
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @GetMapping("/list")
     public R list(@Validated(value = {TopologicalWdListGroup.class}) TopologicalWdAceeptVo topologicalWdAceeptVo){
+        //1.查看redis中是否存在数据
         String md5 = topologicalWdAceeptVo.getHash();
-        //2.查看redis中是否存在有缓存
         HashMap<String,Object> wdCount = (HashMap<String,Object>) redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LIST).get(md5);
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.获取数据
         HashMap<String,Object> list = topologicalEnterpriseWdService.list(topologicalWdAceeptVo);
 
+        //3.存入redis
         redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LIST).put(md5,list);
         redisTemplate.expire(RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LIST,RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LIST_TIME, TimeUnit.MINUTES); //30分钟
-
         return R.ok(list);
     }
 
+    /**
+     * 获取中心网点周边物流园列表
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @return
+     */
     @GetMapping("/logisticsList")
     public R logisticsList(@Validated(value = {TopologicalWdListGroup.class}) TopologicalWdAceeptVo topologicalWdAceeptVo){
+        //1.查看redis中是否存在数据
         String md5 = topologicalWdAceeptVo.getHash();
-        //2.查看redis中是否存在有缓存
         HashMap<String,Object> wdCount = (HashMap<String,Object>) redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LOGISTICS_LIST).get(md5);
         if (wdCount != null) {
             return R.ok(wdCount);
         }
 
+        //2.获取数据
         HashMap<String,Object> list = topologicalEnterpriseWdService.logisticsList(topologicalWdAceeptVo);
 
+        //3.存入redis
         redisTemplate.boundHashOps(RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LOGISTICS_LIST).put(md5,list);
         redisTemplate.expire(RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LOGISTICS_LIST,RedisContant.TOPOLOGICAL_ENTERPRISE_WD_LOGISTICS_LIST_TIME, TimeUnit.MINUTES);
-
         return R.ok(list);
     }
 }

+ 2 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalHouseWdController.java

@@ -31,7 +31,7 @@ public class TopologicalHouseWdController {
 
     /**
      * 获取小区网点关键信息
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @RequestMapping("/info")
@@ -55,7 +55,7 @@ public class TopologicalHouseWdController {
 
     /**
      * 获取小区网点列表
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @RequestMapping("/list")

+ 5 - 5
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TopologicalStoreWdController.java

@@ -37,7 +37,7 @@ public class TopologicalStoreWdController {
 
     /**
      * 获取周边网点分类
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @GetMapping("/category")
@@ -60,7 +60,7 @@ public class TopologicalStoreWdController {
 
     /**
      * 获取周边门店网点列表
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @GetMapping("/list")
@@ -83,7 +83,7 @@ public class TopologicalStoreWdController {
 
     /**
      * 获取商业网点分类数量统计
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @GetMapping("/storeHistogram")
@@ -106,7 +106,7 @@ public class TopologicalStoreWdController {
 
     /**
      * 获取门店人均消费
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @GetMapping("/perCapitaConsumpHistogram")
@@ -129,7 +129,7 @@ public class TopologicalStoreWdController {
 
     /**
      * 获取门店人均消费
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @GetMapping("/heatMap")

+ 46 - 13
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/WdRecycleController.java

@@ -9,6 +9,9 @@ import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
 
+/**
+ * 精准营销管理中心——数据回收站
+ */
 @RestController
 @RequestMapping("/recycle/wd")
 public class WdRecycleController {
@@ -33,65 +36,95 @@ public class WdRecycleController {
     EnterpriseWdService enterpriseWdService;
 
 
-    //获取网点回收站列表
+    /**
+     * 获取网点回收站列表
+     * @param wdInfoVo 网点信息接受体
+     * @return
+     */
     @GetMapping("/list")
     public R list(WdInfoVo wdInfoVo){
         HashMap<String, Object> list = wdRecycleService.list(wdInfoVo);
         return R.ok(list);
     }
 
-    //获取门店网点类型明细
+    /**
+     * 获取门店网点类型明细
+     * @param wdId 网点Id
+     * @return
+     */
     @GetMapping("/storeWdInfo")
     public R storeWdInfo(String wdId){
         StoreWd storeWd = storeWdService.storeWdInfo(wdId);
         return R.ok(storeWd);
     }
 
-    //获取小区网点类型明细
+    /**
+     * 获取小区网点类型明细
+     * @param wdId 网点Id
+     * @return
+     */
     @GetMapping("/houseWdInfo")
     public R houseWddInfo(String wdId){
         HouseWd houseWd = houseWdService.houseWddInfo(wdId);
         return R.ok(houseWd);
     }
 
-    //获取楼宇网点类型明细
+    /**
+     * 获取楼宇网点类型明细
+     * @param wdId 网点Id
+     * @return
+     */
     @GetMapping("/buildWdInfo")
     public R buildWdInfo(String wdId){
         BuildWd buildWd = buildWdService.buildWdInfo(wdId);
         return R.ok(buildWd);
     }
 
-    //获取交通设施网点类型明细
+    /**
+     * 获取交通设施网点类型明细
+     * @param wdId 网点Id
+     * @return
+     */
     @GetMapping("/trafficWdInfo")
     public R trafficWdInfo(String wdId){
         TrafficWd trafficWd = trafficWdService.trafficWdInfo(wdId);
         return R.ok(trafficWd);
     }
 
-    //获取公司网点类型明细
+    /**
+     * 获取公司网点类型明细
+     * @param wdId 网点Id
+     * @return
+     */
     @GetMapping("/enterpriseWdInfo")
     public R enterpriseWdInfo(String wdId){
         EnterpriseWd enterpriseWd = enterpriseWdService.enterpriseWdInfo(wdId);
         return R.ok(enterpriseWd);
     }
 
-    //移除
+    /**
+     * 移除网点
+     * @param wdId 网点Id
+     * @return
+     */
     @DeleteMapping("/deleteWd/{wdId}")
     public R deleteWd(@PathVariable("wdId") String wdId){
         wdRecycleService.deleteWd(wdId);
         return R.ok();
     }
 
-    //恢复
+    /**
+     * 恢复网点
+     * @param wdInfoVo
+     * @return
+     */
     @PutMapping("/recoverWd")
-    public R recoverWd(@RequestBody HashMap<String,String> hashMap){
-        if (hashMap.get("wdId") == null)
+    public R recoverWd(@RequestBody WdInfoVo wdInfoVo){
+        if (wdInfoVo.getWdId() == null)
             return R.fail(400,"wdId不能为空");
 
-        wdRecycleService.recoverWd(hashMap.get("wdId"));
+        wdRecycleService.recoverWd(wdInfoVo.getWdId());
         return R.ok();
     }
 
-
-
 }

+ 3 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/WorkTableController.java

@@ -153,6 +153,9 @@ public class WorkTableController {
         String userId = userid.toString();
         if (userId == null || userId.equals(""))
             return R.fail("请登录");
+        if (vo.getClueId() != null)
+            if ("".equals(vo.getClueId()))
+                return R.fail("线索id不能为空");
         return R.ok(businessOpportunitiesService.searchFollowList(vo, userId));
     }
 

+ 30 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/AddrCategory.java

@@ -6,26 +6,55 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 
+/**
+ * 地区划分
+ */
 @Data
 @TableName("ddt_addr_category")
 public class AddrCategory {
+    /**
+     * 区码
+     */
     @TableField("addr_code")
     private String addrCode;
+    /**
+     * 省/直辖市
+     */
     @TableField("province")
     private String province;
+    /**
+     * 市
+     */
     @TableField("city")
     private String city;
+    /**
+     * 区
+     */
     @TableField("district")
     private String district;
+    /**
+     * 完整地区信息
+     */
     @TableField("addr_info")
     private String addrInfo;
+    /**
+     * 中心纬度
+     */
     @TableField("lat_gd")
     private BigDecimal latGd;
+    /**
+     * 中心经度
+     */
     @TableField("lng_gd")
     private BigDecimal lngGd;
-
+    /**
+     * 城市等级
+     */
     @TableField("city_tier")
     private String cityTier;
+    /**
+     * 类型(province/city/zone)
+     */
     @TableField("type")
     private String type;
 }

+ 18 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/BuildWd.java

@@ -7,20 +7,35 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 楼宇网点
+ */
 @Data
 @TableName("ddt_build_wd")
 public class BuildWd implements Serializable {
+    /**
+     * 网点基本信息_Id
+     */
     @TableId("wd_id")
     private String wdId;
+    /**
+     * 物业类型
+     */
     @TableField("property_type")
     private String propertyType;
-
+    /**
+     * 楼宇类型
+     */
     @TableField("build_type")
     private String buildType;
-
+    /**
+     * 小区住户户数(户)
+     */
     @TableField("households")
     private int households;
-
+    /**
+     * 居住人口规模(人)
+     */
     @TableField("people_count")
     private int peopleCount;
 }

+ 3 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/Category.java

@@ -5,6 +5,9 @@ import lombok.Data;
 import java.io.Serializable;
 import java.util.List;
 
+/**
+ * 分类结果实体类
+ */
 @Data
 public class Category implements Serializable {
     private String code;

+ 3 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/CityTierBody.java

@@ -4,6 +4,9 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 城市等级结果实体类
+ */
 @Data
 public class CityTierBody implements Serializable {
     private String name;

+ 79 - 5
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/Enterprise.java

@@ -12,66 +12,140 @@ import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
+/**
+ * 企业
+ */
 @Data
 @TableName("ddt_enterprise")
 public class Enterprise implements Serializable {
+    /**
+     * 统一社会信用代码
+     */
     @TableId("enterprise_usci")
     private String enterpriseUsci;
+    /**
+     * 企业图片
+     */
     @TableField("enterprise_img")
     private String enterpriseImg;
+    /**
+     * 企业名称
+     */
     @TableField("enterprise_name")
     private String enterpriseName;
+    /**
+     * 企业简称
+     */
     @TableField("enterprise_name_short")
     private String enterpriseNameShort;
+    /**
+     * 地址信息
+     */
     @TableField("addr_info")
     private String addrInfo;
+    /**
+     * 地区信息
+     */
     @TableField("addr_code")
     private String addrCode;
+    /**
+     * 公司简介
+     */
     @TableField("enterprise_info")
     private String enterpriseInfo;
+    /**
+     * 经营范围描述
+     */
     @TableField("manage_range_info")
     private String manageRangeInfo;
+    /**
+     * 企业规模
+     */
     @TableField("enterprise_scale")
     private String enterpriseScale;
+    /**
+     * 注册资本
+     */
     @TableField("registered_capital")
     private BigDecimal registeredCapital;
+    /**
+     * 企业法人_id
+     */
     @TableField("linkmen_id")
     private String linkmenId;
+    /**
+     * 法定代表人名字
+     */
     @TableField("linkmen_name")
     private String linkmenName;
+    /**
+     * 成立日期
+     */
     @TableField("create_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-
     private Date createTime;
+    /**
+     * 纳税人识别号
+     */
     @TableField("enterprise_itin")
     private String enterpriseItin;
+    /**
+     * 经营状态
+     */
     @TableField("business_status")
     private String businessStatus;
+    /**
+     * 行业分类(关联行业分类表)
+     */
     @TableField("industry_code")
     private String industryCode;
+    /**
+     * 企业类型
+     */
     @TableField("enterprise_type")
     private String enterpriseType;
+    /**
+     * 信用评分
+     */
     @TableField("credit_score")
     private int creditScore;
+    /**
+     * 验证状态
+     */
     @TableField("audit")
     private int audit;
+    /**
+     * 采集人用户id
+     */
     @TableField("collect_user_id")
     private String collectUserId;
+    /**
+     * 采集人
+     */
     @TableField("collect_person")
     private String collectPerson;
+    /**
+     * 采集时间
+     */
     @TableField("collect_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date collectTime;
+    /**
+     * 入库时间
+     */
     @TableField("enter_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date enterTime;
+    /**
+     * 最近更新时间
+     */
     @TableField("update_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
+    /**
+     * Hash
+     */
     @TableField("hash")
     private String hash;
-//    @TableField("telephone")
-//    private String telephone;
-//    @TableField("website")
-//    private String website;
+
 }

+ 9 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/EnterpriseWd.java

@@ -7,11 +7,20 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 企业网点
+ */
 @Data
 @TableName("ddt_enterprise_wd")
 public class EnterpriseWd implements Serializable {
+    /**
+     * 网点基本信息_id(外键)
+     */
     @TableId("wd_id")
     private String wdId;
+    /**
+     * 统一社会信用代码
+     */
     @TableField("enterprise_usci")
     private String enterpriseUsci;
 

+ 15 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/HouseWd.java

@@ -7,17 +7,30 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 小区网点
+ */
 @Data
 @TableName("ddt_house_wd")
 public class HouseWd implements Serializable {
+    /**
+     * 网点基本信息_id(外键)
+     */
     @TableId("wd_id")
     private String wdId;
+    /**
+     * 物业类型
+     */
     @TableField("property_type")
     private String propertyType;
-
+    /**
+     * 小区住户户数(户)
+     */
     @TableField("households")
     private int households;
-
+    /**
+     * 居住人口规模(人)
+     */
     @TableField("people_count")
     private int peopleCount;
 }

+ 15 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/IndustryCategory.java

@@ -4,15 +4,30 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+/**
+ * 行业分类表
+ */
 @Data
 @TableName("ddt_industry_category")
 public class IndustryCategory {
+    /**
+     * 行业分类_id
+     */
     @TableField("industry_code")
     private String industryCode;
+    /**
+     * 大类
+     */
     @TableField("big_category")
     private String bigCategory;
+    /**
+     * 中类
+     */
     @TableField("mid_category")
     private String midCategory;
+    /**
+     * 小类
+     */
     @TableField("sub_category")
     private String subCategory;
 }

+ 18 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/ManageType.java

@@ -6,17 +6,35 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 经营类别
+ */
 @Data
 @TableName("ddt_manage_type")
 public class ManageType implements Serializable {
+    /**
+     * 类别代码
+     */
     @TableField("manage_type_code")
     private String manageTypeCode;
+    /**
+     * 大类
+     */
     @TableField("big_category")
     private String bigCategory;
+    /**
+     * 中类
+     */
     @TableField("mid_category")
     private String midCategory;
+    /**
+     * 小类
+     */
     @TableField("sub_category")
     private String subCategory;
+    /**
+     * 完整类型信息
+     */
     @TableField("full_info")
     private String fullInfo;
 }

+ 57 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/StoreWd.java

@@ -7,46 +7,100 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 门店网点
+ */
 @Data
 @TableName("ddt_store_wd")
 public class StoreWd implements Serializable {
+    /**
+     * 网点基本信息_id(外键)
+     */
     @TableId("wd_id")
     private String wdId;
+    /**
+     * 品牌_id(外键)
+     */
     @TableField("brand_id")
     private String brandId;
-
+    /**
+     * 品牌名字
+     */
     @TableField("brand_name")
     private String brandName;
+    /**
+     * 人均消费
+     */
     @TableField("per_capita_consumption")
     private Double perCapitaConsumption;
+    /**
+     * 经营类别
+     */
     @TableField("manage_type_code")
     private String manageTypeCode;
+    /**
+     * 行业分类(关联行业分类表)
+     */
     @TableField("industry_code")
     private String industryCode;
+    /**
+     * 门店规模(连锁)
+     */
     @TableField("organization_code")
     private String organizationCode;
+    /**
+     * 网点评论数
+     */
     @TableField("comment_count")
     private int commentCount;
+    /**
+     * 网点评分
+     */
     @TableField("score")
     private Double score;
+    /**
+     * 网点团购信息
+     */
     @TableField("buy_info")
     private String buyInfo;
+    /**
+     * 旺店指数
+     */
     @TableField("index_score")
     private double indexScore;
+    /**
+     * 营业状态(正常、暂停、尚未营业)
+     */
     @TableField("business_status")
     private String businessStatus;
+    /**
+     * 营业时间
+     */
     @TableField("business_time")
     private String businessTime;
+    /**
+     * 联系电话
+     */
     @TableField("telephone")
     private String telephone;
+    /**
+     * 联系人
+     */
     @TableField("contact")
     private String contact;
-
+    /**
+     * 渠道商类型
+     */
     @TableField("channel_type")
     private String channelType;
-
+    /**
+     * 开店时间
+     */
     @TableField("opentime")
     private String opentime;
+    /**
+     * 关店时间
+     */
     @TableField("closetime")
     private String closetime;
 }

+ 0 - 21
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalBuildWdStatisticsCategory.java

@@ -1,21 +0,0 @@
-package com.ruoyi.demo.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
-@Data
-@TableName("bl_topological_build_wd_statistics_category")
-public class TopologicalBuildWdStatisticsCategory implements Serializable {
-
-    @TableField("center_wd_id")
-    private String centerWdId;
-    @TableField("radius")
-    private int radius;
-    @TableField("property_type_statistics")
-    private String propertyTypeStatistics;
-
-}

+ 39 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalBuildingWd.java

@@ -8,23 +8,60 @@ import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.Date;
 
+/**
+ * 周边楼宇网点结果实体类
+ */
 @Data
 @TableName("bl_topological_building_wd_list")
 public class TopologicalBuildingWd implements Serializable {
 
+    /**
+     * 周边网点Id
+     */
     private String aroundWdId;
+    /**
+     * 周边网点名称
+     */
     private String aroundWdName;
+    /**
+     * 周边网点类型
+     */
     private String aroundWdTypeCode;
+    /**
+     * 距离
+     */
     private double distance;
+    /**
+     * 地区Code
+     */
     private String addrCode;
+    /**
+     * 地区信息
+     */
     private String addrCodeInfo;
+    /**
+     * 地址信息
+     */
     private String addrInfo;
+    /**
+     * 租金
+     */
     private double rent;
+    /**
+     * 楼宇类型
+     */
     private String buildType;
+    /**
+     * 物业类型
+     */
     private String propertyType;
-
+    /**
+     * 纬度
+     */
     private double lat;
-
+    /**
+     * 经度
+     */
     private double lng;
 
     public TopologicalBuildingWd(WdInfo wdInfo) {

+ 39 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalEnterpriseWd.java

@@ -9,32 +9,69 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
 
+/**
+ * 周边企业网点结果实体类
+ */
 @Data
 @TableName("bl_topological_enterprise_wd_list")
 public class TopologicalEnterpriseWd implements Serializable {
+    /**
+     * 周边网点Id
+     */
     @TableField("around_wd_id")
     private String aroundWdId;
+    /**
+     * 周边网点名称
+     */
     @TableField("around_wd_name")
     private String aroundWdName;
+    /**
+     * 周边网点类型
+     */
     @TableField("around_wd_type_code")
     private String aroundWdTypeCode;
+    /**
+     * 距离
+     */
     @TableField("distance")
     private double distance;
+    /**
+     * 地区Code
+     */
     @TableField("addr_code")
     private String addrCode;
+    /**
+     * 地区信息
+     */
     @TableField("addr_code_info")
     private String addrCodeInfo;
+    /**
+     * 地址
+     */
     @TableField("addr_info")
     private String addrInfo;
-
+    /**
+     * 行业Code
+     */
     @TableField("industry_code")
     private String industryCode;
+    /**
+     * 注册资本
+     */
     @TableField("registered_capital")
     private BigDecimal registeredCapital;
+    /**
+     * 企业规模
+     */
     @TableField("enterprise_scale")
     private String enterpriseScale;
-
+    /**
+     * 纬度
+     */
     private double lat;
+    /**
+     * 经度
+     */
     private double lng;
 
     public TopologicalEnterpriseWd(WdInfo wdInfo) {

+ 42 - 10
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalHouseWd.java

@@ -7,31 +7,63 @@ import lombok.Data;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
+/**
+ * 周边小区网点结果实体类
+ */
 @Data
 @TableName("bl_topological_house_wd_list")
 public class TopologicalHouseWd implements Serializable {
-
+    /**
+     * 周边网点Id
+     */
     public String aroundWdId;
+    /**
+     * 网点名称
+     */
     public String aroundWdName;
+    /**
+     * 网点类型Code
+     */
     public String aroundWdTypeCode;
+    /**
+     * 距离
+     */
     public double distance;
-
+    /**
+     * 地区Code
+     */
     public String addrCode;
-
+    /**
+     * 地区信息
+     */
     public String addrCodeInfo;
-
+    /**
+     * 地址信息
+     */
     public String addrInfo;
-
+    /**
+     * 租金
+     */
     public double rent;
-
+    /**
+     * 物业类型
+     */
     public String propertyType;
-
+    /**
+     * 户数
+     */
     public int households;
-
+    /**
+     * 人口数量
+     */
     public int peopleCount;
-
+    /**
+     * 纬度
+     */
     private double lat;
-
+    /**
+     * 经度
+     */
     private double lng;
 
     public TopologicalHouseWd(WdInfo wdInfo) {

+ 15 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalHouseWdStatisticsData.java

@@ -6,6 +6,9 @@ import lombok.Data;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
+/**
+ * 周边小区网点关键信息
+ */
 @Data
 public class TopologicalHouseWdStatisticsData implements Serializable {
 
@@ -14,16 +17,24 @@ public class TopologicalHouseWdStatisticsData implements Serializable {
 
     @TableField("radius")
     private int radius;
-
+    /**
+     * 小区数量
+     */
     @TableField("house_wd_count")
     private int houseWdCount;
-
+    /**
+     * 总户数
+     */
     @TableField("total_households")
     private int totalHouseholds;
-
+    /**
+     * 总人数
+     */
     @TableField("total_people_count")
     private int totalPeopleCount;
-
+    /**
+     * 平均租金
+     */
     @TableField("average_rent")
     private double averageRent;
 

+ 30 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalStoreWd.java

@@ -6,20 +6,46 @@ import lombok.Data;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
+/**
+ * 周边门店网点结果实体类
+ */
 @Data
 public class TopologicalStoreWd implements Serializable {
+    /**
+     * 周边网点Id
+     */
     private String aroundWdId;
+    /**
+     * 周边网点名称
+     */
     private String aroundWdName;
+    /**
+     * 周边网点类型Code
+     */
     private String aroundWdTypeCode;
+    /**
+     * 距离
+     */
     private double distance;
-
+    /**
+     * 地区Code
+     */
     private String addrCode;
-
+    /**
+     * 地区信息
+     */
     private String addrCodeInfo;
-
+    /**
+     * 地址信息
+     */
     private String addrInfo;
-
+    /**
+     * 经度
+     */
     private double lng;
+    /**
+     * 纬度
+     */
     private double lat;
 
     public TopologicalStoreWd(WdInfo wdInfo) {

+ 12 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TopologicalStoreWdStatisticsCategory.java

@@ -7,6 +7,9 @@ import lombok.Data;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 
+/**
+ * 门店网点分类统计结果实体类
+ */
 @Data
 @TableName("bl_topological_store_wd_statistics_category")
 public class TopologicalStoreWdStatisticsCategory implements Serializable {
@@ -16,13 +19,19 @@ public class TopologicalStoreWdStatisticsCategory implements Serializable {
 
     @TableField("radius")
     private int radius;
-
+    /**
+     * 大类Code
+     */
     @TableField("big_manage_type_code")
     private String bigManageTypeCode;
-
+    /**
+     * 中类Code
+     */
     @TableField("mid_manage_type_code")
     private String midManageTypeCode;
-
+    /**
+     * 小类Code
+     */
     @TableField("sub_category_code_statistics")
     private String subCategoryCodeStatistics;
 

+ 9 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TrafficWd.java

@@ -8,12 +8,21 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 交通网点
+ */
 @Data
 @TableName("ddt_traffic_wd")
 public class TrafficWd implements Serializable {
+    /**
+     * 网点Id
+     */
     @TableId(value = "wd_id")
     private String wdId;
 
+    /**
+     * 途径车
+     */
     @TableField("cars")
     String cars;
 }

+ 18 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/TypeBy.java

@@ -6,17 +6,35 @@ import lombok.Data;
 
 import java.io.Serializable;
 
+/**
+ * 犇云分类
+ */
 @Data
 @TableName("ddt_type_by")
 public class TypeBy implements Serializable {
+    /**
+     * 犇云分类Code
+     */
     @TableField("type_code_by")
     private String typeCodeBy;
+    /**
+     * 大类Code
+     */
     @TableField("big_category")
     private String bigCategory;
+    /**
+     * 中类Code
+     */
     @TableField("mid_category")
     private String midCategory;
+    /**
+     * 小类Code
+     */
     @TableField("sub_category")
     private String subCategory;
+    /**
+     * 完整信息
+     */
     @TableField("full_info")
     private String fullInfo;
 }

+ 78 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/WdInfo.java

@@ -19,62 +19,139 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Date;
 
+/**
+ * 网点基本信息
+ */
 @Data
 @TableName("ddt_wd_info")
 public class WdInfo implements Serializable {
+    /**
+     * 网点Id
+     */
     @TableId("wd_id")
     private String wdId;
+    /**
+     * 图片
+     */
     @TableField("wd_img")
     private String wdImg;
+    /**
+     * 网点名称
+     */
     @TableField("wd_name")
     private String wdName;
+    /**
+     * 成立时间
+     */
     @TableField("create_date")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
+    /**
+     * 地址信息
+     */
     @TableField("addr_info")
     private String addrInfo;
+    /**
+     * 地区信息(关联地区表)
+     */
     @TableField("addr_code")
     private String addrCode;
+    /**
+     * 纬度
+     */
     @TableField("lat")
     private BigDecimal lat;
+    /**
+     * 经度
+     */
     @TableField("lng")
     private BigDecimal lng;
+    /**
+     * 网点所属分类_腾讯
+     */
     @TableField("type_code_tx")
     private String typeCodeTx;
+    /**
+     * 分类名字_腾讯
+     */
     @TableField("type_name_tx")
     private String typeNameTx;
+    /**
+     * 网点所属分类_高德
+     */
     @TableField("type_code_gd")
     private String typeCodeGd;
+    /**
+     * 分类名字_高德
+     */
     @TableField("type_name_gd")
     private String typeNameGd;
+    /**
+     * 网点所属分类_犇云
+     */
     @TableField("type_code_by")
     private String typeCodeBy;
+    /**
+     * 分类名字_犇云
+     */
     @TableField("type_name_by")
     private String typeNameBy;
+    /**
+     * 房租水平
+     */
     @TableField("rent")
     private Double rent;
+    /**
+     * 验证状态
+     */
     @TableField("audit")
     private int audit;
+    /**
+     * 网点类型
+     */
     @TableField("wd_type_code")
     private String wdTypeCode;
+    /**
+     * 入库时间
+     */
     @TableField("enter_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date enterTime;
+    /**
+     * 最近更新时间
+     */
     @TableField("update_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
+    /**
+     * 采集人用户id
+     */
     @TableField("collect_user_id")
     private String collectUserId;
+    /**
+     * 采集人
+     */
     @TableField("collect_person")
     private String collectPerson;
+    /**
+     * 采集时间
+     */
     @TableField("collect_time")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date collectTime;
+    /**
+     * 查重Hash
+     */
     @TableField("hash")
     private String hash;
+    /**
+     * geoHash编码
+     */
     @TableField("geo_hash")
     private String geoHash;
-
+    /**
+     * 逻辑删除
+     */
     @TableField("show_delete")
     @TableLogic
     private int showDelete;

+ 0 - 20
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/WdToologicalItem.java

@@ -1,20 +0,0 @@
-package com.ruoyi.demo.entity;
-
-import lombok.Data;
-
-import java.io.Serializable;
-import java.math.BigDecimal;
-
-@Data
-public class WdToologicalItem implements Serializable {
-    private String aroundWdId;
-    private String aroundWdName;
-    private String aroundWdTypeCode;
-    private String aroundTypeCodeBy;
-    private String addrCode;
-    private String addrCodeInfo;
-    private String addrInfo;
-    private BigDecimal lat;
-    private BigDecimal lng;
-    private double distance;
-}

+ 12 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/entity/bo/PointBo.java

@@ -0,0 +1,12 @@
+package com.ruoyi.demo.entity.bo;
+
+import lombok.Data;
+
+@Data
+public class PointBo {
+    private String wdId;
+    private String wdName;
+    private String addrCode;
+    private double lat;
+    private double lng;
+}

+ 6 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/WdInfoDao.java

@@ -7,12 +7,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.demo.entity.TopologicalBuildingWd;
 import com.ruoyi.demo.entity.TopologicalHouseWd;
 import com.ruoyi.demo.entity.WdInfo;
+import com.ruoyi.demo.entity.bo.PointBo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.data.geo.Point;
+
+import java.util.List;
 
 @Mapper
 public interface WdInfoDao extends BaseMapper<WdInfo> {
     Page<TopologicalBuildingWd> selectTopologicalBuildWdList(Page<WdInfo> page, @Param(Constants.WRAPPER) QueryWrapper<WdInfo> queryWrapper);
 
     Page<TopologicalHouseWd> selectTopologicalHouseList(Page<WdInfo> page,@Param(Constants.WRAPPER) QueryWrapper<WdInfo> queryWrapper);
+
+    List<PointBo> map(@Param(Constants.WRAPPER) QueryWrapper<WdInfo> queryWrapper);
 }

+ 3 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/TopologicalCommonService.java

@@ -3,12 +3,14 @@ package com.ruoyi.demo.service;
 
 
 import com.ruoyi.demo.entity.WdInfo;
+import com.ruoyi.demo.entity.bo.PointBo;
 import com.ruoyi.demo.entity.vo.TopologicalWdAceeptVo;
+import org.springframework.data.geo.Point;
 
 import java.util.List;
 
 public interface TopologicalCommonService {
     public List<WdInfo> prefixSearch(String searchText,Integer size);
 
-    List<WdInfo> map(TopologicalWdAceeptVo topologicalWdAceeptVo);
+    List<PointBo> map(TopologicalWdAceeptVo topologicalWdAceeptVo);
 }

+ 4 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/BusinessOpportunitiesServiceImpl.java

@@ -52,9 +52,11 @@ public class BusinessOpportunitiesServiceImpl implements BusinessOpportunitiesSe
     @Override
     public PageInfo<List<FollowUpRecordBo>> searchFollowList(WorkTableSearchVo workVo, String userId) {
         PageHelper.startPage(workVo.getPageNum(), workVo.getPageSize(), true);
-        if (workVo.getStartTime() != null || workVo.getStartTime().equals(""))
+        if (workVo.getStartTime() != null)
+            if (workVo.getStartTime().equals(""))
                 workVo.setStartTime(null);
-        if (workVo.getEndTime() != null || workVo.getEndTime().equals(""))
+        if (workVo.getEndTime() != null)
+            if (workVo.getEndTime().equals(""))
                 workVo.setEndTime(null);
 
         List<FollowUpRecord> records = followUpDao.searchAllByMulti(workVo.getClueId(), workVo.getText(), workVo.getStartTime(), workVo.getEndTime(), userId);

+ 25 - 23
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelAnalyseServiceImpl.java

@@ -70,7 +70,7 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
 
     /**
      * 网点城市等级分布统计
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -109,7 +109,7 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
 
     /**
      * 品牌列表
-     * @param channelAnalyseAceeptVo
+     * @param channelAnalyseAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -231,7 +231,7 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
 
     /**
      * 网点分类统计
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -315,7 +315,7 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
 
     /**
      * 网点营业状态统计
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -406,36 +406,36 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
         List<StoreWd> storeWds = storeWdDao.perCapitaConsumpAnalyse(queryWrapper);
 
         //初始化
-        LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
-        linkedHashMap.put("0~20",0);
-        linkedHashMap.put("20~50",0);
-        linkedHashMap.put("50~100",0);
-        linkedHashMap.put("100~200",0);
-        linkedHashMap.put("200以上",0);
+        //初始化
+        String[] arr = new String[]{"0~20","20~50","50~100","100~200","200以上"};
+        ArrayList<Histogram> list = new ArrayList<>();
+        for (String s:arr){
+            list.add(new Histogram(s,0));
+        }
 
         //2.统计各个人均消费的数量
         for (StoreWd storeWd : storeWds) {
             if (storeWd.getPerCapitaConsumption() != null){
                 if (storeWd.getPerCapitaConsumption() >= 0 && storeWd.getPerCapitaConsumption()<20){
-                    linkedHashMap.put("0~20",linkedHashMap.get("0~20")+1);
+                    Histogram histogram = list.get(0);
+                    histogram.setCount(histogram.getCount()+1);
                 }else if(storeWd.getPerCapitaConsumption() >= 20 && storeWd.getPerCapitaConsumption()<50){
-                    linkedHashMap.put("20~50",linkedHashMap.get("20~50")+1);
+                    Histogram histogram = list.get(1);
+                    histogram.setCount(histogram.getCount()+1);
                 }else if(storeWd.getPerCapitaConsumption() >= 50 && storeWd.getPerCapitaConsumption()< 100){
-                    linkedHashMap.put("50~100",linkedHashMap.get("50~100")+1);
+                    Histogram histogram = list.get(2);
+                    histogram.setCount(histogram.getCount()+1);
                 }else if(storeWd.getPerCapitaConsumption() >= 100 && storeWd.getPerCapitaConsumption()< 200){
-                    linkedHashMap.put("100~200",linkedHashMap.get("100~200")+1);
+                    Histogram histogram = list.get(3);
+                    histogram.setCount(histogram.getCount()+1);
                 }else {
-                    linkedHashMap.put("200以上",linkedHashMap.get("200以上")+1);
+                    Histogram histogram = list.get(4);
+                    histogram.setCount(histogram.getCount()+1);
                 }
             }
         }
 
         //3.分装统计结果
-        ArrayList<Histogram> list = new ArrayList<>();
-        for (String s : linkedHashMap.keySet()) {
-            Histogram histogram1 = new Histogram(s,linkedHashMap.get(s));
-            list.add(histogram1);
-        }
         return list;
     }
 
@@ -620,9 +620,11 @@ public class ChannelAnalyseServiceImpl implements ChannelAnalyseService {
                     tierCode.addAll(list);
                 }
             }
-            queryWrapper.and(wdInfoQueryWrapper -> {
-                wdInfoQueryWrapper.in("addr_code",tierCode);
-            });
+            if(!tierCode.isEmpty()){
+                queryWrapper.and(wdInfoQueryWrapper -> {
+                    wdInfoQueryWrapper.in("addr_code",tierCode);
+                });
+            }
         }
 
 

+ 17 - 172
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/ChannelMapServiceImpl.java

@@ -68,167 +68,10 @@ public class ChannelMapServiceImpl implements ChannelMapService {
     EnterpriseWdDao enterpriseWdDao;
 
 
-    /**
-     * 地图模式:查看所有地区的网点数量(v1.0)
-     * @param channelMapAceeptVo
-     * @return
-     */
-/*    @Override
-    public WdCount area(ChannelMapAceeptVo channelMapAceeptVo) {
-        //1.根据不同级别得到 需要封装的 地区码
-        List<String> addrCodeList = new ArrayList<>();
-        if ("province".equals(channelMapAceeptVo.getRankType())) {
-            //省码
-            for (String s : channelMapAceeptVo.getAddrCode()) {
-                String substring = s.substring(0, 2);
-                addrCodeList.add(substring);
-            }
-        } else if ("city".equals(channelMapAceeptVo.getRankType())) {
-            //省的所有市
-            for (String s : channelMapAceeptVo.getAddrCode()) {
-                String substring = s.substring(0, 2);
-                addrCodeList.add(substring);
-            }
-        } else if ("zone".equals(channelMapAceeptVo.getRankType())) {
-            //市的所有区
-            for (String s : channelMapAceeptVo.getAddrCode()) {
-                String substring = s.substring(0, 4);
-                addrCodeList.add(substring);
-            }
-        } else {
-            return null;
-        }
-
-
-        //2.找到所有需要封装的 地区信息
-        QueryWrapper<AddrCategory> queryWrapper = new QueryWrapper<>();
-        if ("province".equals(channelMapAceeptVo.getRankType())) {
-            queryWrapper.eq("city", "");
-        } else if ("city".equals(channelMapAceeptVo.getRankType())) {
-            queryWrapper.eq("district", "").and(addrCategoryQueryWrapper -> {
-                addrCategoryQueryWrapper.ne("city", "");
-            });
-        } else if ("zone".equals(channelMapAceeptVo.getRankType())) {
-            queryWrapper.ne("district", "");
-        }
-        queryWrapper.and(addrCategoryQueryWrapper -> {
-            addrCategoryQueryWrapper.or(addrCategoryQueryWrapper1 -> {
-                for (String s : addrCodeList) {
-                    addrCategoryQueryWrapper1.likeRight("addr_code", s).or();
-                }
-            });
-        });
-        List<AddrCategory> addrCategories = addrCategoryDao.selectList(queryWrapper);
-
-
-        //3.组装地区信息
-        List<WdCountBody> result = new ArrayList<>();
-        HashMap<String,Integer> statistics = new HashMap<>(); //统计信息
-        for (AddrCategory addrCategory : addrCategories) {
-            WdCountBody wdCountBody = new WdCountBody();
-
-            //组装
-            wdCountBody.setLat(addrCategory.getLatGd());
-            wdCountBody.setLng(addrCategory.getLngGd());
-            wdCountBody.setAddrCode(addrCategory.getAddrCode());
-            if ("province".equals(channelMapAceeptVo.getRankType())) {
-                wdCountBody.setName(addrCategory.getProvince());
-                statistics.put(addrCategory.getAddrCode().substring(0,2),0);
-            } else if ("city".equals(channelMapAceeptVo.getRankType())) {
-                wdCountBody.setName(addrCategory.getCity());
-                statistics.put(addrCategory.getAddrCode().substring(0,4),0);
-            } else if ("zone".equals(channelMapAceeptVo.getRankType())) {
-                wdCountBody.setName(addrCategory.getDistrict());
-                statistics.put(addrCategory.getAddrCode().substring(0,6),0);
-            }
-            result.add(wdCountBody);
-        }
-
-
-        //4.组装条件构造器找到网点信息网点
-        //2.1 渠道、地区分类
-        QueryWrapper<WdInfo> queryWrapper2 = new QueryWrapper<>();
-        queryWrapper2.select("addr_code","count(*) as audit");
-        queryWrapper2.in("wd_type_code", channelMapAceeptVo.getChannel()).and(originWdInfoQueryWrapper -> {
-            for (String s : addrCodeList) {
-                originWdInfoQueryWrapper.likeRight("addr_code", s).or();
-            }
-        });
-
-        //搜索字段
-        if (channelMapAceeptVo.getSearchText() != null && !channelMapAceeptVo.getSearchText().trim().equals("")) {
-            queryWrapper2.and(originWdInfoQueryWrapper -> {
-                originWdInfoQueryWrapper.like("wd_name", channelMapAceeptVo.getSearchText() );
-            });
-        }
-
-        //城市等级分类
-        if(channelMapAceeptVo.getCityTier() != null && channelMapAceeptVo.getCityTier().length > 0){
-            List<String> tierCode = new ArrayList<>();
-            for (String s : channelMapAceeptVo.getCityTier()) {
-                List<String> list = initMapUtil.getInitCityTierListMap(s);
-                if (list != null){
-                    tierCode.addAll(list);
-                }
-            }
-            queryWrapper.and(wdInfoQueryWrapper -> {
-                for (String s : tierCode) {
-                    wdInfoQueryWrapper.likeRight("addr_code", s).or();
-                }
-            });
-        }
-        queryWrapper2.groupBy("addr_code");
-
-        //5.统计
-        int total = 0;
-        List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper2);
-        for (WdInfo wdInfo : wdInfos) {
-            if("province".equals(channelMapAceeptVo.getRankType())){
-                statistics.put(wdInfo.getAddrCode().substring(0,2),statistics.get(wdInfo.getAddrCode().substring(0,2))+wdInfo.getAudit());
-            } else if ("city".equals(channelMapAceeptVo.getRankType())) {
-                statistics.put(wdInfo.getAddrCode().substring(0,4),statistics.get(wdInfo.getAddrCode().substring(0,4))+wdInfo.getAudit());
-            } else if ("zone".equals(channelMapAceeptVo.getRankType())) {
-                statistics.put(wdInfo.getAddrCode().substring(0,6),statistics.get(wdInfo.getAddrCode().substring(0,6))+wdInfo.getAudit());
-            }
-            total+=+wdInfo.getAudit();
-        }
-
-
-        //5.计算radio
-        for (WdCountBody wdCountBody : result) {
-            String code =  null;
-            if("province".equals(channelMapAceeptVo.getRankType())){
-                code = wdCountBody.getAddrCode().substring(0,2);
-            }else if("city".equals(channelMapAceeptVo.getRankType())){
-                code = wdCountBody.getAddrCode().substring(0,4);
-            }else if("zone".equals(channelMapAceeptVo.getRankType())){
-                code = wdCountBody.getAddrCode().substring(0,6);
-            }
-
-            if(statistics.get(code) != null){
-                wdCountBody.setCount(statistics.get(code));
-            }else {
-                wdCountBody.setCount(0);
-            }
-
-            if (total != 0){
-                BigDecimal bigDecimal = new BigDecimal((float) wdCountBody.getCount() / total);
-                float v = bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
-                wdCountBody.setRadio(v);
-            }
-            else
-                wdCountBody.setRadio(0.0f);
-        }
-        WdCount wdCount = new WdCount();
-        wdCount.setWdCountBodyList(result);
-        wdCount.setTotal(total);
-        return wdCount;
-    }*/
-
 
     /**
      * 地图模式:查看所有地区的网点数量(v2.0)
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -351,7 +194,7 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 地图模式:查看省级地区的网点数量(v2.0)
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -419,7 +262,7 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 地图模式:查看市级地区的网点数量(v2.0)
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -622,7 +465,7 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 获取网点列表
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -654,7 +497,7 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 获取区下的具体网点信息
-     * @param channelMapAceeptVo
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      * @return
      */
     @Override
@@ -679,7 +522,7 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 获取网点详细信息
-     * @param wdId
+     * @param wdId 网点Id
      * @return
      */
     @Override
@@ -749,8 +592,8 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 封装网点过滤条件(v2.0)
-     * @param queryWrapper
-     * @param channelMapAceeptVo
+     * @param queryWrapper 条件构造器
+     * @param channelMapAceeptVo 渠道地图过滤请求接收体
      */
     public void assembleQueryWrapper(QueryWrapper<WdInfo> queryWrapper,ChannelMapAceeptVo channelMapAceeptVo){
         //1.根据不同级别得到需要查询的 地区码
@@ -807,9 +650,11 @@ public class ChannelMapServiceImpl implements ChannelMapService {
                     tierCode.addAll(list);
                 }
             }
-            queryWrapper.and(wdInfoQueryWrapper -> {
-                wdInfoQueryWrapper.in("addr_code",tierCode);
-            });
+            if(!tierCode.isEmpty()){
+                queryWrapper.and(wdInfoQueryWrapper -> {
+                    wdInfoQueryWrapper.in("addr_code",tierCode);
+                });
+            }
         }
 
         //搜索字段
@@ -829,8 +674,8 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 找到所有满足条件的网点addrCode
-     * @param rankType
-     * @param addrCode
+     * @param rankType 搜索等级:province、city、zone
+     * @param addrCode 地区Codes
      * @return
      */
     private List<String> findWdAddrCode(String rankType,String[] addrCode){
@@ -871,8 +716,8 @@ public class ChannelMapServiceImpl implements ChannelMapService {
 
     /**
      * 找到需要展示的中心addrCode
-     * @param rankType
-     * @param addrCode
+     * @param rankType 搜索等级:province、city、zone
+     * @param addrCode 地区Codes
      * @return
      */
     private List<AddrCategory> findCenterAddrCode(String rankType,String[] addrCode){

+ 41 - 8
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/CommonServiceImpl.java

@@ -27,54 +27,72 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     AddrCategoryDao addrCategoryDao;
 
+    /**
+     * 获取犇云分类下拉框
+     * @return
+     */
     @Override
     public List<TypeByBody> tag() {
+        //1.获取所有分类数据
         List<TypeBy> typeBIES = typeByDao.selectList(null);
+
+        //2.找到所有根节点
         List<TypeBy> collect = typeBIES.stream().filter(typeBy -> {
             if (typeBy.getMidCategory() == null || typeBy.getMidCategory().equals(""))
                 return true;
             return false;
         }).collect(Collectors.toList());
 
+        //3.组装父子结构
         List<TypeByBody> typeByBodies = new ArrayList<>();
         for (TypeBy typeBy : collect) {
             TypeByBody typeByBody = new TypeByBody();
             typeByBody.setTypeCodeBy(typeBy.getTypeCodeBy());
             typeByBody.setTypeNameBy(typeBy.getBigCategory());
             typeByBody.setTypeByBodies(findChild(typeBIES, typeByBody.getTypeCodeBy(), 2));
-
             typeByBodies.add(typeByBody);
         }
 
         return typeByBodies;
     }
 
+    /**
+     * 分等级(省、市、区)查询地区
+     * @param code 地区Code:level=province(不需要)、level=city(code=省码)、level=zone(code=市码)
+     * @param level 搜索等级:province(查询全省)、city(查某个省的市)、zone(查某个市的区)
+     * @return
+     */
     @Override
     public List<AddrCategory> addrCodeLevel(String code,String level) {
         if ("province".equals(level)){
             QueryWrapper<AddrCategory> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("city","");
+            queryWrapper.eq("type","province");
             return addrCategoryDao.selectList(queryWrapper);
         }else if("city".equals(level)){
             QueryWrapper<AddrCategory> queryWrapper = new QueryWrapper<>();
-            queryWrapper.likeRight("addr_code",code.substring(0,2));
+            queryWrapper.eq("type","city");
             queryWrapper.and(categoryQueryWrapper -> {
-                categoryQueryWrapper.eq("district", "").and(addrCategoryQueryWrapper -> {
-                    addrCategoryQueryWrapper.ne("city", "");
-                });
+                categoryQueryWrapper.likeRight("addr_code",code.substring(0,2));
             });
             return addrCategoryDao.selectList(queryWrapper);
         }else if("zone".equals(level)){
             QueryWrapper<AddrCategory> queryWrapper = new QueryWrapper<>();
-            queryWrapper.likeRight("addr_code",code.substring(0,4));
+            queryWrapper.eq("type","zone");
             queryWrapper.and(categoryQueryWrapper -> {
-                categoryQueryWrapper.ne("district", "");
+                categoryQueryWrapper.likeRight("addr_code",code.substring(0,4));
             });
             return addrCategoryDao.selectList(queryWrapper);
         }
         return null;
     }
 
+    /**
+     * 找到 大类 下的所有 子类
+     * @param typeBIES 犇云分类数据集
+     * @param typeCodeBy 大类Code
+     * @param randType 子类等级(2是中类,4是小类)
+     * @return
+     */
     public List<TypeByBody> findChild(List<TypeBy> typeBIES, String typeCodeBy, int randType){
         String substring = typeCodeBy.substring(0, randType);
         if(randType == 2){
@@ -107,15 +125,23 @@ public class CommonServiceImpl implements CommonService {
         return null;
     }
 
+    /**
+     * 获取地区addrCodeMap,并组成父子结构
+     * @return
+     */
     @Override
     public List<AddrCategoryBody> addrCodeMap() {
+        //1.获取所有地区Code
         List<AddrCategory> addrCategories = addrCategoryDao.selectList(null);
+
+        //2.找到所有根节点
         List<AddrCategory> collect = addrCategories.stream().filter(addrCategory -> {
             if (addrCategory.getCity() == null || addrCategory.getCity().equals(""))
                 return true;
             return false;
         }).collect(Collectors.toList());
 
+        //3.组装父子结构
         List<AddrCategoryBody> addrCategoryBodies = new ArrayList<>();
         for (AddrCategory addrCategory : collect) {
             AddrCategoryBody addrCategoryBody = new AddrCategoryBody();
@@ -129,6 +155,13 @@ public class CommonServiceImpl implements CommonService {
         return addrCategoryBodies;
     }
 
+    /**
+     * 找到 大类 下的所有 子类
+     * @param addrCategories 地区数据集
+     * @param addrCore 大类Code
+     * @param randType 子类等级(2是中类,4是小类)
+     * @return
+     */
     public List<AddrCategoryBody> findChildAddr(List<AddrCategory> addrCategories, String addrCore, int randType){
         String substring = addrCore.substring(0, randType);
         if(randType == 2){

+ 6 - 6
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalBuildWdSereviceImpl.java

@@ -47,7 +47,7 @@ public class TopologicalBuildWdSereviceImpl implements TopologicalBuildWdSerevic
 
     /**
      * 周边楼宇物业类别统计
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @Override
@@ -82,7 +82,7 @@ public class TopologicalBuildWdSereviceImpl implements TopologicalBuildWdSerevic
 
     /**
      * 获取周边楼宇列表
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @Override
@@ -122,7 +122,7 @@ public class TopologicalBuildWdSereviceImpl implements TopologicalBuildWdSerevic
 
     /**
      * 获取楼宇分类统计
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @Override
@@ -181,9 +181,9 @@ public class TopologicalBuildWdSereviceImpl implements TopologicalBuildWdSerevic
 
     /**
      * 根据坐标获取周边网点Id
-     * @param topologicalWdAceeptVo
-     * @param aroundWdIdList
-     * @param wdDistMap 存 周边网点与中心网点直接的距离
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @param aroundWdIdList 存放结果存放的 网点Id集合
+     * @param wdDistMap 存放结果的 周边网点与中心网点直接的距离
      */
     public void getAroundWdIdList(TopologicalWdAceeptVo topologicalWdAceeptVo,List<String> aroundWdIdList,HashMap<String,Double> wdDistMap){
         //1.根据经纬度 找到 周边网点Id

+ 14 - 13
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalCommonServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.demo.entity.WdInfo;
+import com.ruoyi.demo.entity.bo.PointBo;
 import com.ruoyi.demo.entity.vo.TopologicalWdAceeptVo;
 import com.ruoyi.demo.mapper.WdInfoDao;
 import com.ruoyi.demo.service.TopologicalCommonService;
@@ -18,11 +19,10 @@ import org.springframework.data.redis.connection.RedisGeoCommands;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 @Service
 @Transactional
@@ -36,10 +36,11 @@ public class TopologicalCommonServiceImpl implements TopologicalCommonService {
     @Autowired
     RedisTemplate redisTemplate;
 
+
     /**
      * 点位评估中心点查询
-     * @param searchText
-     * @param size
+     * @param searchText 收索关键字
+     * @param size 返回条数
      * @return
      */
     @Override
@@ -59,11 +60,11 @@ public class TopologicalCommonServiceImpl implements TopologicalCommonService {
 
     /**
      * 获取周边点坐标
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @Override
-    public List<WdInfo> map(TopologicalWdAceeptVo topologicalWdAceeptVo) {
+    public List<PointBo> map(TopologicalWdAceeptVo topologicalWdAceeptVo) {
         List<String> aroundWdId = new ArrayList<>();
 
         //1.根据经纬度 找到 周边网点Id 及 距离
@@ -73,18 +74,18 @@ public class TopologicalCommonServiceImpl implements TopologicalCommonService {
 
         //2.查询符合的周边网点信息
         QueryWrapper<WdInfo> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("wd_id","wd_name","addr_info","addr_code","lat","lng","type_code_by","type_name_by","wd_type_code")
+        queryWrapper.select("wd_id","wd_name","lat","lng","addr_code")
                 .in("wd_id",aroundWdId);
-        List<WdInfo> wdInfos = wdInfoDao.selectList(queryWrapper);
+        List<PointBo> wdInfos = wdInfoDao.map(queryWrapper);
 
         return wdInfos;
     }
 
     /**
      * 根据坐标获取周边网点Id
-     * @param topologicalWdAceeptVo
-     * @param aroundWdIdList
-     * @param wdDistMap 存 周边网点与中心网点直接的距离
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @param aroundWdIdList 存放结果存放的 网点Id集合
+     * @param wdDistMap 存放结果的 周边网点与中心网点直接的距离
      */
     public void getAroundWdIdList(TopologicalWdAceeptVo topologicalWdAceeptVo, List<String> aroundWdIdList, HashMap<String,Double> wdDistMap){
         //1.根据经纬度 找到 周边网点Id

+ 5 - 5
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalEnterpriseWdServiceImpl.java

@@ -40,7 +40,7 @@ public class TopologicalEnterpriseWdServiceImpl implements TopologicalEnterprise
 
     /**
      * 获取周边企业网点列表
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @Override
@@ -89,7 +89,7 @@ public class TopologicalEnterpriseWdServiceImpl implements TopologicalEnterprise
 
     /**
      * 获取周边物流园
-     * @param topologicalWdAceeptVo
+     * @param topologicalWdAceeptVo 周边网点接受体
      * @return
      */
     @Override
@@ -141,9 +141,9 @@ public class TopologicalEnterpriseWdServiceImpl implements TopologicalEnterprise
 
     /**
      * 根据坐标获取周边网点Id
-     * @param topologicalWdAceeptVo
-     * @param aroundWdIdList
-     * @param wdDistMap 存 周边网点与中心网点直接的距离
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @param aroundWdIdList 存放结果存放的 网点Id集合
+     * @param wdDistMap 存放结果的 周边网点与中心网点直接的距离
      */
     public void getAroundWdIdList(TopologicalWdAceeptVo topologicalWdAceeptVo,List<String> aroundWdIdList,HashMap<String,Double> wdDistMap){
         //1.根据经纬度 找到 周边网点Id

+ 3 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalHouseServiceWdImpl.java

@@ -118,9 +118,9 @@ public class TopologicalHouseServiceWdImpl implements TopologicalHouseWdService
 
     /**
      * 根据坐标获取周边网点Id
-     * @param topologicalWdAceeptVo
-     * @param aroundWdIdList
-     * @param wdDistMap 存 周边网点与中心网点直接的距离
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @param aroundWdIdList 存放结果存放的 网点Id集合
+     * @param wdDistMap 存放结果的 周边网点与中心网点直接的距离
      */
     public void getAroundWdIdList(TopologicalWdAceeptVo topologicalWdAceeptVo,List<String> aroundWdIdList,HashMap<String,Double> wdDistMap){
         //1.根据经纬度 找到 周边网点Id

+ 20 - 23
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TopologicalStoreWdServiceImpl.java

@@ -257,39 +257,36 @@ public class TopologicalStoreWdServiceImpl implements TopologicalStoreWdService
         });
         List<StoreWd> storeWds = storeWdDao.perCapitaConsumpAnalyse(queryWrapper);
 
-        //统计初始化
-        HashMap<String, Integer> hashMap = new HashMap<>();
-        hashMap.put("0~20",0);
-        hashMap.put("20~50",0);
-        hashMap.put("50~100",0);
-        hashMap.put("100~200",0);
-        hashMap.put("200以上",0);
+        //初始化
+        String[] arr = new String[]{"0~20","20~50","50~100","100~200","200以上"};
+        ArrayList<Histogram> list = new ArrayList<>();
+        for (String s:arr){
+            list.add(new Histogram(s,0));
+        }
 
-        //3.统计
+        //2.统计各个人均消费的数量
         for (StoreWd storeWd : storeWds) {
             if (storeWd.getPerCapitaConsumption() != null){
                 if (storeWd.getPerCapitaConsumption() >= 0 && storeWd.getPerCapitaConsumption()<20){
-                    hashMap.put("0~20",hashMap.get("0~20")+1);
+                    Histogram histogram = list.get(0);
+                    histogram.setCount(histogram.getCount()+1);
                 }else if(storeWd.getPerCapitaConsumption() >= 20 && storeWd.getPerCapitaConsumption()<50){
-                    hashMap.put("20~50",hashMap.get("20~50")+1);
+                    Histogram histogram = list.get(1);
+                    histogram.setCount(histogram.getCount()+1);
                 }else if(storeWd.getPerCapitaConsumption() >= 50 && storeWd.getPerCapitaConsumption()< 100){
-                    hashMap.put("50~100",hashMap.get("50~100")+1);
+                    Histogram histogram = list.get(2);
+                    histogram.setCount(histogram.getCount()+1);
                 }else if(storeWd.getPerCapitaConsumption() >= 100 && storeWd.getPerCapitaConsumption()< 200){
-                    hashMap.put("100~200",hashMap.get("100~200")+1);
+                    Histogram histogram = list.get(3);
+                    histogram.setCount(histogram.getCount()+1);
                 }else {
-                    hashMap.put("200以上",hashMap.get("200以上")+1);
+                    Histogram histogram = list.get(4);
+                    histogram.setCount(histogram.getCount()+1);
                 }
             }
         }
 
         //4.组装返回结果
-        ArrayList<Histogram> list = new ArrayList<>();
-        for (String s : hashMap.keySet()) {
-            Histogram histogram = new Histogram();
-            histogram.setName(s);
-            histogram.setCount(hashMap.get(s));
-            list.add(histogram);
-        }
         return list;
     }
 
@@ -322,9 +319,9 @@ public class TopologicalStoreWdServiceImpl implements TopologicalStoreWdService
 
     /**
      * 根据坐标获取周边网点Id
-     * @param topologicalWdAceeptVo
-     * @param aroundWdIdList
-     * @param wdDistMap 存 周边网点与中心网点直接的距离
+     * @param topologicalWdAceeptVo 周边网点接受体
+     * @param aroundWdIdList 存放结果存放的 网点Id集合
+     * @param wdDistMap 存放结果的 周边网点与中心网点直接的距离
      */
     public void getAroundWdIdList(TopologicalWdAceeptVo topologicalWdAceeptVo,List<String> aroundWdIdList,HashMap<String,Double> wdDistMap){
         //1.根据经纬度 找到 周边网点Id

+ 21 - 13
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/WdRecycleServiceImpl.java

@@ -20,34 +20,34 @@ import java.util.stream.Collectors;
 @Transactional
 public class WdRecycleServiceImpl implements WdRecycleService {
 
-
-
     @Autowired
     WdInfoMapper wdInfoMapper;
 
-
     @Autowired
     InitMapUtil initMapUtil;
 
-
-
+    /**
+     * 获取网点列表
+     * @param wdInfoVo 网点信息接受体
+     * @return
+     */
     @Override
-    public HashMap<String, Object>  list(WdInfoVo wdInfoVo) {
+    public HashMap<String, Object> list(WdInfoVo wdInfoVo) {
 
         PageHelper.startPage(wdInfoVo.getPageNum(), wdInfoVo.getPageSize());
-        PageHelper.orderBy(wdInfoVo.getOrderBy()+" desc");
+        PageHelper.orderBy(wdInfoVo.getOrderBy() + " desc");
         List<WdInfo> wdInfos = wdInfoMapper.list(wdInfoVo);
         PageInfo<WdInfo> pageInfo = new PageInfo<>(wdInfos);
 
         List<WdInfoVo> collect = wdInfos.stream().map(wdInfo -> {
-            if(wdInfo.getTypeNameBy() != null){
+            if (wdInfo.getTypeNameBy() != null) {
                 String[] split = wdInfo.getTypeNameBy().split(":");
-                if(split.length == 3)
+                if (split.length == 3)
                     wdInfo.setTypeNameBy(split[2]);
-                else if(split.length == 2)
+                else if (split.length == 2)
                     wdInfo.setTypeNameBy(split[1]);
                 else
-                    wdInfo.setAddrInfo(wdInfo.getTypeNameBy().replace(":",""));
+                    wdInfo.setAddrInfo(wdInfo.getTypeNameBy().replace(":", ""));
             }
 
             WdInfoVo wdInfoVo1 = new WdInfoVo(wdInfo);
@@ -57,17 +57,25 @@ public class WdRecycleServiceImpl implements WdRecycleService {
 
         HashMap<String, Object> result = new HashMap<>();
         pageInfo.setList(null);
-        result.put("page",pageInfo);
-        result.put("data",collect);
+        result.put("page", pageInfo);
+        result.put("data", collect);
         return result;
     }
 
+    /**
+     * 移除网点
+     * @param wdId 网点Id
+     */
     @Override
     public void deleteWd(String wdId) {
         wdInfoMapper.deleteById(wdId);
         return;
     }
 
+    /**
+     * 恢复网点
+     * @param wdId 网点Id
+     */
     @Override
     public void recoverWd(String wdId) {
         wdInfoMapper.recoverWd(wdId);

+ 4 - 0
ruoyi-demo/src/main/resources/mapper/demo/WdInfoDaoMapper.xml

@@ -9,5 +9,9 @@
     <select id="selectTopologicalHouseList" resultType="com.ruoyi.demo.entity.TopologicalHouseWd">
         select ddt_wd_info.wd_id as around_wd_id,wd_name as around_wd_name,wd_type_code as aroundWdTypeCodee,addr_code,addr_info,rent,households,people_count,property_type,lat,lng from ddt_wd_info left join ddt_house_wd on ddt_wd_info.wd_id = ddt_house_wd.wd_id ${ew.customSqlSegment}
     </select>
+
+    <select id="map" resultType="com.ruoyi.demo.entity.bo.PointBo">
+        select ${ew.sqlSelect} from ddt_wd_info ${ew.customSqlSegment}
+    </select>
 </mapper>