傅行帆 5 years ago
parent
commit
a4b1589aba

+ 15
- 0
src/main/java/com/huiju/estateagents/common/CommConstant.java View File

@@ -457,4 +457,19 @@ public class CommConstant {
457 457
      * 活动以结束
458 458
      */
459 459
     public static final Integer ACTIVITY_STATUS_FINISH = 2;
460
+    
461
+    /**
462
+     * 客户统计类型:跟进客户
463
+     */
464
+	public static final String CUSTOMER_TYPE_FOLLOW = "follow";
465
+    
466
+    /**
467
+     * 客户统计类型:新增客户
468
+     */
469
+    public static final String CUSTOMER_TYPE_NEW = "new";
470
+    
471
+    /**
472
+     * 客户统计类型:到访客户
473
+     */
474
+    public static final String CUSTOMER_TYPE_VISITE = "visite";
460 475
 }

+ 72
- 0
src/main/java/com/huiju/estateagents/job/CustomerStatisticTimeJob.java View File

@@ -0,0 +1,72 @@
1
+package com.huiju.estateagents.job;
2
+
3
+import com.huiju.estateagents.base.BaseController;
4
+import com.huiju.estateagents.common.DateUtils;
5
+import com.huiju.estateagents.service.IHelpActivityService;
6
+import com.huiju.estateagents.service.IHelpInitiateRecordService;
7
+import com.huiju.estateagents.service.IHelpRecordService;
8
+import com.huiju.estateagents.service.ITaBuildingDynamicService;
9
+import com.huiju.estateagents.service.ITaShareActivityService;
10
+import com.huiju.estateagents.service.ITaShareChildRecordService;
11
+import com.huiju.estateagents.service.ITaShareRecordService;
12
+import com.huiju.estateagents.statistic.service.ITaCustomerGenderStatisticService;
13
+import com.huiju.estateagents.statistic.service.ITaCustomerStatisticDailyService;
14
+import org.slf4j.Logger;
15
+import org.slf4j.LoggerFactory;
16
+import org.springframework.beans.factory.annotation.Autowired;
17
+import org.springframework.context.annotation.Configuration;
18
+import org.springframework.scheduling.annotation.EnableScheduling;
19
+import org.springframework.scheduling.annotation.Scheduled;
20
+import org.springframework.stereotype.Component;
21
+
22
+import java.time.LocalDateTime;
23
+
24
+/**
25
+ * @author fxf
26
+ * @Title: CustomerStatisticTimeJob
27
+ * @Description: 盘客数据分析统计
28
+ * @date 2019/11/08
29
+ */
30
+@Component
31
+@Configuration
32
+@EnableScheduling
33
+public class CustomerStatisticTimeJob extends BaseController {
34
+
35
+    private final Logger logger = LoggerFactory.getLogger(CustomerStatisticTimeJob.class);
36
+
37
+    @Autowired
38
+    private ITaCustomerStatisticDailyService customerStatisticDailyService;
39
+    
40
+    @Autowired
41
+    private ITaCustomerGenderStatisticService taCustomerGenderStatisticService;
42
+
43
+    /**
44
+     *
45
+     * 盘客工具数据统计
46
+     *
47
+     * 开启定时任务,每天23:50执行
48
+     */
49
+    @Scheduled(cron = "* 50 23 * * ?")
50
+    private void configureTasks() {
51
+        LocalDateTime nowDate = LocalDateTime.now();
52
+    
53
+        //每天的新增客户统计并入表
54
+        customerStatisticDailyService.newCustomerStatisticDaily(nowDate);
55
+        
56
+        //每天的跟进客户统计并入表
57
+        customerStatisticDailyService.followUpStatisticDaily(nowDate);
58
+        
59
+        //每天的到访客户统计并入表
60
+        customerStatisticDailyService.visiteStatisticDaily(nowDate);
61
+    
62
+        //每天的新增客户性别统计并入表
63
+        taCustomerGenderStatisticService.newCustomerSexStatisticDaily(nowDate);
64
+    
65
+        //每天的跟进客户性别统计并入表
66
+        taCustomerGenderStatisticService.followUpSexStatisticDaily(nowDate);
67
+    
68
+        //每天的到访客户性别统计并入表
69
+        taCustomerGenderStatisticService.visiteSexStatisticDaily(nowDate);
70
+    }
71
+
72
+}

+ 5
- 2
src/main/java/com/huiju/estateagents/statistic/entity/TaCustomerFollowUpRecord.java View File

@@ -54,6 +54,9 @@ public class TaCustomerFollowUpRecord implements Serializable {
54 54
      * 记录内容
55 55
      */
56 56
     private String recordContent;
57
-
58
-
57
+    
58
+    /**
59
+     * 跟进人ID
60
+     */
61
+    private Integer followerId;
59 62
 }

+ 5
- 2
src/main/java/com/huiju/estateagents/statistic/entity/TaCustomerGenderStatistic.java View File

@@ -59,6 +59,9 @@ public class TaCustomerGenderStatistic implements Serializable {
59 59
      * 更新时间
60 60
      */
61 61
     private LocalDateTime updateDate;
62
-
63
-
62
+    
63
+    /**
64
+     * 客户类型 visite 到访客户, new 新增客户 ,follow跟进客户
65
+     */
66
+    private String customerType;
64 67
 }

+ 28
- 1
src/main/java/com/huiju/estateagents/statistic/mapper/TaCustomerStatisticDailyMapper.java View File

@@ -3,6 +3,11 @@ package com.huiju.estateagents.statistic.mapper;
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 4
 import com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily;
5 5
 import org.apache.ibatis.annotations.Mapper;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+import java.time.LocalDateTime;
9
+import java.util.List;
10
+import java.util.Map;
6 11
 
7 12
 /**
8 13
  * <p>
@@ -14,5 +19,27 @@ import org.apache.ibatis.annotations.Mapper;
14 19
  */
15 20
 @Mapper
16 21
 public interface TaCustomerStatisticDailyMapper extends BaseMapper<TaCustomerStatisticDaily> {
17
-
22
+	
23
+	/**
24
+	 * 获取当天跟进客户数
25
+	 * @param nowDate
26
+	 * @return
27
+	 */
28
+	List<TaCustomerStatisticDaily> getFollowUpData(@Param("nowDate") LocalDateTime nowDate);
29
+	
30
+	/**
31
+	 * 获取当天新增客户数
32
+	 * @param nowDate
33
+	 * @param status
34
+	 * @return
35
+	 */
36
+	List<TaCustomerStatisticDaily> getNewCustomerData(@Param("nowDate") LocalDateTime nowDate,@Param("status") int status);
37
+	
38
+	/**
39
+	 * 获取当天到访客户数
40
+	 * @param nowDate
41
+	 * @param checkin
42
+	 * @return
43
+	 */
44
+	List<TaCustomerStatisticDaily> getVisiteCustomerData(@Param("nowDate") LocalDateTime nowDate,@Param("checkin") int checkin);
18 45
 }

+ 20
- 1
src/main/java/com/huiju/estateagents/statistic/service/ITaCustomerGenderStatisticService.java View File

@@ -3,6 +3,8 @@ package com.huiju.estateagents.statistic.service;
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4 4
 import com.huiju.estateagents.statistic.entity.TaCustomerGenderStatistic;
5 5
 
6
+import java.time.LocalDateTime;
7
+
6 8
 /**
7 9
  * <p>
8 10
  * 客户分析性别统计表 小程序盘客工具客户分析 服务类
@@ -12,5 +14,22 @@ import com.huiju.estateagents.statistic.entity.TaCustomerGenderStatistic;
12 14
  * @since 2019-11-08
13 15
  */
14 16
 public interface ITaCustomerGenderStatisticService extends IService<TaCustomerGenderStatistic> {
15
-
17
+	
18
+	/**
19
+	 * 每天的新增客户性别统计
20
+	 * @param nowDate
21
+	 */
22
+	void newCustomerSexStatisticDaily(LocalDateTime nowDate);
23
+	
24
+	/**
25
+	 * 每天的跟进客户性别统计
26
+	 * @param nowDate
27
+	 */
28
+	void followUpSexStatisticDaily(LocalDateTime nowDate);
29
+	
30
+	/**
31
+	 * 每天的到访客户性别统计
32
+	 * @param nowDate
33
+	 */
34
+	void visiteSexStatisticDaily(LocalDateTime nowDate);
16 35
 }

+ 20
- 1
src/main/java/com/huiju/estateagents/statistic/service/ITaCustomerStatisticDailyService.java View File

@@ -3,6 +3,8 @@ package com.huiju.estateagents.statistic.service;
3 3
 import com.baomidou.mybatisplus.extension.service.IService;
4 4
 import com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily;
5 5
 
6
+import java.time.LocalDateTime;
7
+
6 8
 /**
7 9
  * <p>
8 10
  * 客户分析日统计表 小程序盘客工具客户分析 服务类
@@ -12,5 +14,22 @@ import com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily;
12 14
  * @since 2019-11-08
13 15
  */
14 16
 public interface ITaCustomerStatisticDailyService extends IService<TaCustomerStatisticDaily> {
15
-
17
+	
18
+	/**
19
+	 * 每天的跟进客户统计
20
+	 * @param nowDate
21
+	 */
22
+	void followUpStatisticDaily(LocalDateTime nowDate);
23
+	
24
+	/**
25
+	 * 每天的新增客户统计
26
+	 * @param nowDate
27
+	 */
28
+	void newCustomerStatisticDaily(LocalDateTime nowDate);
29
+	
30
+	/**
31
+	 * 每天的到访客户统计
32
+	 * @param nowDate
33
+	 */
34
+	void visiteStatisticDaily(LocalDateTime nowDate);
16 35
 }

+ 36
- 1
src/main/java/com/huiju/estateagents/statistic/service/impl/TaCustomerGenderStatisticServiceImpl.java View File

@@ -4,8 +4,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 4
 import com.huiju.estateagents.statistic.entity.TaCustomerGenderStatistic;
5 5
 import com.huiju.estateagents.statistic.mapper.TaCustomerGenderStatisticMapper;
6 6
 import com.huiju.estateagents.statistic.service.ITaCustomerGenderStatisticService;
7
+import org.springframework.beans.factory.annotation.Autowired;
7 8
 import org.springframework.stereotype.Service;
8 9
 
10
+import java.time.LocalDateTime;
11
+
9 12
 /**
10 13
  * <p>
11 14
  * 客户分析性别统计表 小程序盘客工具客户分析 服务实现类
@@ -16,5 +19,37 @@ import org.springframework.stereotype.Service;
16 19
  */
17 20
 @Service
18 21
 public class TaCustomerGenderStatisticServiceImpl extends ServiceImpl<TaCustomerGenderStatisticMapper, TaCustomerGenderStatistic> implements ITaCustomerGenderStatisticService {
19
-
22
+	
23
+	@Autowired
24
+	private TaCustomerGenderStatisticMapper customerGenderStatisticMapper;
25
+	
26
+	/**
27
+	 * 每天的新增客户性别统计
28
+	 *
29
+	 * @param nowDate
30
+	 */
31
+	@Override
32
+	public void newCustomerSexStatisticDaily(LocalDateTime nowDate) {
33
+	
34
+	}
35
+	
36
+	/**
37
+	 * 每天的跟进客户性别统计
38
+	 *
39
+	 * @param nowDate
40
+	 */
41
+	@Override
42
+	public void followUpSexStatisticDaily(LocalDateTime nowDate) {
43
+	
44
+	}
45
+	
46
+	/**
47
+	 * 每天的到访客户性别统计
48
+	 *
49
+	 * @param nowDate
50
+	 */
51
+	@Override
52
+	public void visiteSexStatisticDaily(LocalDateTime nowDate) {
53
+	
54
+	}
20 55
 }

+ 71
- 1
src/main/java/com/huiju/estateagents/statistic/service/impl/TaCustomerStatisticDailyServiceImpl.java View File

@@ -1,11 +1,19 @@
1 1
 package com.huiju.estateagents.statistic.service.impl;
2 2
 
3 3
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4
+import com.huiju.estateagents.common.CommConstant;
5
+import com.huiju.estateagents.common.StringUtils;
4 6
 import com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily;
5 7
 import com.huiju.estateagents.statistic.mapper.TaCustomerStatisticDailyMapper;
6 8
 import com.huiju.estateagents.statistic.service.ITaCustomerStatisticDailyService;
9
+import org.springframework.beans.factory.annotation.Autowired;
7 10
 import org.springframework.stereotype.Service;
8 11
 
12
+import java.time.LocalDateTime;
13
+import java.util.ArrayList;
14
+import java.util.List;
15
+import java.util.Map;
16
+
9 17
 /**
10 18
  * <p>
11 19
  * 客户分析日统计表 小程序盘客工具客户分析 服务实现类
@@ -16,5 +24,67 @@ import org.springframework.stereotype.Service;
16 24
  */
17 25
 @Service
18 26
 public class TaCustomerStatisticDailyServiceImpl extends ServiceImpl<TaCustomerStatisticDailyMapper, TaCustomerStatisticDaily> implements ITaCustomerStatisticDailyService {
19
-
27
+	
28
+	@Autowired
29
+	private TaCustomerStatisticDailyMapper customerStatisticDailyMapper;
30
+	
31
+	/**
32
+	 * 每天的跟进客户统计
33
+	 *
34
+	 * @param nowDate
35
+	 */
36
+	@Override
37
+	public void followUpStatisticDaily(LocalDateTime nowDate) {
38
+		//按当前时间获取当天的跟进客户的数量,多一个客户进行多次跟进行为,只记录一次
39
+		List<TaCustomerStatisticDaily> list = customerStatisticDailyMapper.getFollowUpData(nowDate);
40
+		//批量保存
41
+		statisticDailySaveBatch(list,nowDate,CommConstant.CUSTOMER_TYPE_FOLLOW);
42
+	}
43
+	
44
+	/**
45
+	 * 每天的新增客户统计
46
+	 *
47
+	 * @param nowDate
48
+	 */
49
+	@Override
50
+	public void newCustomerStatisticDaily(LocalDateTime nowDate) {
51
+		//按当前时间获取当天的新增客户的数量,ta_recommend_customer 表的status 为1 的就是新增客户
52
+		List<TaCustomerStatisticDaily> list = customerStatisticDailyMapper.getNewCustomerData(nowDate,CommConstant.STATUS_NORMAL);
53
+		//批量保存
54
+		statisticDailySaveBatch(list,nowDate,CommConstant.CUSTOMER_TYPE_NEW);
55
+	}
56
+	
57
+	/**
58
+	 * 每天的到访客户统计
59
+	 *
60
+	 * @param nowDate
61
+	 */
62
+	@Override
63
+	public void visiteStatisticDaily(LocalDateTime nowDate) {
64
+		//按当前时间获取当天的到访客户的数量,同一天同一个项目只记录一次
65
+		List<TaCustomerStatisticDaily> list = customerStatisticDailyMapper.getVisiteCustomerData(nowDate,CommConstant.STATUS_NORMAL);
66
+		List<TaCustomerStatisticDaily> saveList = new ArrayList<>();
67
+		list.forEach(e -> {
68
+			if (null != e.getOrgId() && !e.getOrgId().equals("null")){
69
+				saveList.add(e);
70
+			}
71
+		});
72
+		//批量保存
73
+		statisticDailySaveBatch(saveList,nowDate,CommConstant.CUSTOMER_TYPE_VISITE);
74
+	}
75
+	
76
+	/**
77
+	 * 批量保存当天的统计数据
78
+	 * @param list
79
+	 * @param nowDate
80
+	 * @param customerType
81
+	 */
82
+	private void statisticDailySaveBatch(List<TaCustomerStatisticDaily> list, LocalDateTime nowDate, String customerType) {
83
+		list.forEach(e -> {
84
+			e.setCreateDate(nowDate);
85
+			e.setCustomerType(customerType);
86
+		});
87
+		//批量保存
88
+		this.saveBatch(list);
89
+	}
20 90
 }

+ 39
- 0
src/main/resources/mapper/statistic/TaCustomerStatisticDailyMapper.xml View File

@@ -2,4 +2,43 @@
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
 <mapper namespace="com.huiju.estateagents.statistic.mapper.TaCustomerStatisticDailyMapper">
4 4
 
5
+    <select id="getFollowUpData" resultType="com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily">
6
+        SELECT
7
+            org_id,
8
+            count( DISTINCT ( customer_id ) ) as customer_num
9
+        FROM
10
+            ta_customer_follow_up_record
11
+        WHERE
12
+            date_format( create_date, '%Y-%m-%d' ) = date_format( #{nowDate}, '%Y-%m-%d' )
13
+        GROUP BY
14
+            org_id
15
+    </select>
16
+
17
+    <select id="getNewCustomerData" resultType="com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily">
18
+        SELECT
19
+            org_id,
20
+            count( customer_id ) as customer_num
21
+        FROM
22
+            ta_recommend_customer
23
+        WHERE
24
+            `STATUS` = #{status}
25
+            AND date_format( create_date, '%Y-%m-%d' ) = date_format( #{nowDate}, '%Y-%m-%d' )
26
+        GROUP BY
27
+            org_id
28
+    </select>
29
+    <select id="getVisiteCustomerData" resultType="com.huiju.estateagents.statistic.entity.TaCustomerStatisticDaily">
30
+        SELECT
31
+            count( DISTINCT ( c.customer_id ) ) as customer_num,
32
+            c.org_id
33
+        FROM
34
+            ta_activity_dynamic_enlist t
35
+            LEFT JOIN ta_recommend_customer c ON t.person_id = c.person_id
36
+            AND t.building_id = c.building_id
37
+            AND t.org_id = c.org_id
38
+        WHERE
39
+            t.is_checkin = #{checkin}
40
+            AND date_format( t.create_date, '%Y-%m-%d' ) = date_format( #{nowDate}, '%Y-%m-%d' )
41
+        GROUP BY
42
+            c.org_id
43
+    </select>
5 44
 </mapper>