Forráskód Böngészése

1.添加潜客池的统计分析job
2.修改品牌库的统计分析job

云殇忆 1 éve
szülő
commit
57723445ae

+ 22 - 0
benyun-core/src/main/java/com/ruoyi/benyun/job/AttentionPoolJob.java

@@ -0,0 +1,22 @@
+package com.ruoyi.benyun.job;
+
+import com.ruoyi.benyun.utils.statistics.AttentionPoolStat;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+public class AttentionPoolJob  implements Job {
+    @Autowired
+    AttentionPoolStat stat;
+
+    // 每天一次
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        stat.insert();
+    }
+}

+ 2 - 0
benyun-core/src/main/java/com/ruoyi/benyun/mapper/AttentionPoolDao.java

@@ -15,4 +15,6 @@ public interface AttentionPoolDao extends BaseMapper<AttentionPool> {
     AttentionPool searchByAttentionIdAndUserId(@Param("attentionId") String attentionId, @Param("userId") String userId);
     AttentionPool searchByBrandIdOrWdIdAndUserId(@Param("brandId") String brandId, @Param("wdId") String wdId, @Param("userId") String userId);
     int deleteByBrandIdOrWdIdAndUserId(@Param("brandId") String brandId, @Param("wdId") String wdId, @Param("userId") String userId);
+    Integer selectCount(@Param("userId") String userId);
+    List<String> selectAllUser();
 }

+ 1 - 0
benyun-core/src/main/java/com/ruoyi/benyun/mapper/BrandDao.java

@@ -18,4 +18,5 @@ public interface BrandDao extends BaseMapper<Brand> {
     void updateCommentCountByBrandId(String brandId);
     void updateIndexScoreByBrandId(String brandId);
     List<Brand> searchNotIns(@Param("notIns") List<String> notIns);
+    List<String> selectAllId();
 }

+ 1 - 1
benyun-core/src/main/java/com/ruoyi/benyun/mapper/BrandZoneDao.java

@@ -16,5 +16,5 @@ public interface BrandZoneDao extends BaseMapper<BrandZone> {
     Integer searchCityCountByBrandId(String brandId);
     Integer searchZoneCountByBrandId(String brandId);
     List<String> searchStatedBrandIds(@Param("month") String month);
-    List<BrandZone> searchQuicklyStatistics(@Param("notIns") List<String> notIns);
+    List<BrandZone> searchQuicklyStatistics(@Param("ins") List<String> ins);
 }

+ 1 - 0
benyun-core/src/main/java/com/ruoyi/benyun/mapper/BusinessOpportunitiesDao.java

@@ -14,4 +14,5 @@ public interface BusinessOpportunitiesDao extends BaseMapper<BusinessOpportuniti
     int deleteByAttentionIdAndUserId(@Param("attentionId")String attentionId, @Param("userId") String userId);
     List<BusinessOpportunitiesClue> searchAllByMulti(@Param("text") String text, @Param("userId") String userId);
     int updateFollowUpCountByClueIdAndUserId(@Param("clueId") String clueId, @Param("count") Integer count , @Param("userId") String userId);
+    Integer selectCount(@Param("userId") String userId);
 }

+ 1 - 0
benyun-core/src/main/java/com/ruoyi/benyun/mapper/FollowUpDao.java

@@ -13,4 +13,5 @@ public interface FollowUpDao extends BaseMapper<FollowUpRecord> {
     List<FollowUpRecord> searchAllByClueIdAndUserId(@Param("clueId") String clueId, @Param("userId") String userId);
     int deleteByClueIdAndUserId(@Param("clueId") String clueId, @Param("userId") String userId);
     List<FollowUpRecord> searchAllByMulti(@Param("clueId") String clueId,@Param("text") String text, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("userId") String userId);
+    Integer selectCountByWay(@Param("userId") String userId, @Param("way") String way);
 }

+ 41 - 0
benyun-core/src/main/java/com/ruoyi/benyun/utils/statistics/AttentionPoolStat.java

@@ -0,0 +1,41 @@
+package com.ruoyi.benyun.utils.statistics;
+
+import com.ruoyi.benyun.entity.AttentionPoolStatistics;
+import com.ruoyi.benyun.mapper.AttentionPoolDao;
+import com.ruoyi.benyun.mapper.AttentionPoolStatisticsDao;
+import com.ruoyi.benyun.mapper.BusinessOpportunitiesDao;
+import com.ruoyi.benyun.mapper.FollowUpDao;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.List;
+import java.util.UUID;
+
+@Component
+public class AttentionPoolStat {
+    @Autowired
+    AttentionPoolDao poolDao;
+    @Autowired
+    BusinessOpportunitiesDao opportunitiesDao;
+    @Autowired
+    FollowUpDao followUpDao;
+    @Autowired
+    AttentionPoolStatisticsDao statisticsDao;
+
+    public void insert(){
+        List<String> ins = poolDao.selectAllUser();
+        for (String userId : ins){
+            AttentionPoolStatistics statistics = new AttentionPoolStatistics();
+            statistics.setStatId(UUID.randomUUID().toString().replace("-",""));
+            statistics.setAttentionCount(poolDao.selectCount(userId));
+            statistics.setClueCount(opportunitiesDao.selectCount(userId));
+            statistics.setOnlineCount(followUpDao.selectCountByWay(userId,"线上电话"));
+            statistics.setOfflineCount(followUpDao.selectCountByWay(userId,"线下实地"));
+            statistics.setUserId(userId);
+            statistics.setStatTime(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
+            statisticsDao.insert(statistics);
+        }
+    }
+}

+ 12 - 8
benyun-core/src/main/java/com/ruoyi/benyun/utils/statistics/BrandZoneStat.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ruoyi.benyun.entity.AddrCategory;
 import com.ruoyi.benyun.entity.BrandZone;
 import com.ruoyi.benyun.mapper.AddrCategoryDao;
+import com.ruoyi.benyun.mapper.BrandDao;
 import com.ruoyi.benyun.mapper.BrandZoneDao;
 import com.ruoyi.benyun.mapper.StoreDao;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,11 +23,12 @@ public class BrandZoneStat {
     BrandZoneDao brandZoneDao;
     @Autowired
     AddrCategoryDao addrCategoryDao;
+    @Autowired
+    BrandDao brandDao;
 
     public void continueQuicklyInsert(){
-        List<String> notIns = brandZoneDao.searchStatedBrandIds(null);
-        System.out.println("已经处理:" + notIns.size() + "个品牌");
-        List<BrandZone> zones = brandZoneDao.searchQuicklyStatistics(notIns);
+        List<String> ins = brandDao.selectAllId();
+        List<BrandZone> zones = brandZoneDao.searchQuicklyStatistics(ins);
         int total = zones.size();
         int i = 0;
         for (BrandZone zone : zones) {
@@ -36,11 +38,13 @@ public class BrandZoneStat {
             QueryWrapper<AddrCategory> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("addr_code",zone.getAddrCode());
             AddrCategory one = addrCategoryDao.selectOne(queryWrapper);
-            zone.setZone(one.getDistrict());
-            zone.setCity(one.getCity());
-            zone.setProvince(one.getProvince());
-            zone.setLat(one.getLatGd());
-            zone.setLng(one.getLngGd());
+            if (one != null){
+                zone.setZone(one.getDistrict());
+                zone.setCity(one.getCity());
+                zone.setProvince(one.getProvince());
+                zone.setLat(one.getLatGd());
+                zone.setLng(one.getLngGd());
+            }
 
             i += brandZoneDao.insert(zone);
             System.out.println(i+"/"+total);

+ 14 - 0
benyun-core/src/main/resources/mapper/benyun/AttentionPoolMapper.xml

@@ -76,4 +76,18 @@
             and attention_id = #{attentionId}
         </trim>
     </select>
+    <select id="selectCount" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*) count
+        FROM
+            `bl_attention_pool`
+        WHERE
+            user_id = #{userId}
+    </select>
+    <select id="selectAllUser" resultType="java.lang.String">
+        SELECT DISTINCT
+            user_id
+        FROM
+            `bl_attention_pool`;
+    </select>
 </mapper>

+ 7 - 0
benyun-core/src/main/resources/mapper/benyun/BrandDao.xml

@@ -107,4 +107,11 @@
             </if>
         </where>
     </select>
+    <select id="selectAllId" resultType="java.lang.String">
+        SELECT DISTINCT
+            brand_id
+        FROM
+            `ddt_brand`
+        WHERE show_delete = 0;
+    </select>
 </mapper>

+ 3 - 3
benyun-core/src/main/resources/mapper/benyun/BrandZone2Mapper.xml

@@ -132,9 +132,9 @@
             dsw.wd_id = dwi.wd_id
         AND brand_id IS NOT NULL
         AND brand_id <![CDATA[<>]]> ''
-        <if test="notIns != null">
-            <foreach collection="notIns" item="notIn" open="and brand_id not in (" separator="," close=")">
-                #{notIn,jdbcType=VARCHAR}
+        <if test="ins != null">
+            <foreach collection="ins" item="in" open="and brand_id in (" separator="," close=")">
+                #{in,jdbcType=VARCHAR}
             </foreach>
         </if>
         GROUP BY

+ 8 - 0
benyun-core/src/main/resources/mapper/benyun/BusinessOpportunitiesMapper.xml

@@ -65,4 +65,12 @@
             </if>
         </trim>
     </select>
+    <select id="selectCount" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*) count
+        FROM
+            `bl_business_opportunities_clue`
+        WHERE
+            user_id = #{userId};
+    </select>
 </mapper>

+ 8 - 0
benyun-core/src/main/resources/mapper/benyun/FollowUpMapper.xml

@@ -59,4 +59,12 @@
             </if>
         </trim>
     </select>
+    <select id="selectCountByWay" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*)
+        FROM
+            `bl_follow_up_record`
+        WHERE user_id = #{userId}
+        AND follow_way = #{way};
+    </select>
 </mapper>