瀏覽代碼

用户来源新需求

傅行帆 5 年之前
父節點
當前提交
3959acc2ab

+ 11
- 0
src/main/java/com/huiju/estateagents/controller/StatisticalController.java 查看文件

@@ -173,4 +173,15 @@ public class StatisticalController extends BaseController {
173 173
                                             HttpServletRequest request) {
174 174
         return iStatisticalService.selectPersonFrom(getOrgId(request), startDate,endDate);
175 175
     }
176
+
177
+    /**
178
+     * 用户来源  折线图 首页
179
+     * @return
180
+     */
181
+    @GetMapping(value = "/admin/selectPersonFromGroupByDay")
182
+    public ResponseBean selectPersonFromGroupByDay(@RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
183
+                                         @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate endDate,
184
+                                         HttpServletRequest request) {
185
+        return iStatisticalService.selectPersonFromGroupByDay(getOrgId(request), startDate,endDate);
186
+    }
176 187
 }

+ 12
- 0
src/main/java/com/huiju/estateagents/entity/TdWxDict.java 查看文件

@@ -1,5 +1,6 @@
1 1
 package com.huiju.estateagents.entity;
2 2
 
3
+import com.baomidou.mybatisplus.annotation.TableField;
3 4
 import lombok.Data;
4 5
 import lombok.EqualsAndHashCode;
5 6
 import lombok.experimental.Accessors;
@@ -42,4 +43,15 @@ public class TdWxDict implements Serializable {
42 43
     private String sceneAlias;
43 44
 
44 45
 
46
+    /**
47
+     * 来源人数合集
48
+     */
49
+    @TableField(exist = false)
50
+    private Integer fromData;
51
+
52
+    /**
53
+     * 注册人数合集
54
+     */
55
+    @TableField(exist = false)
56
+    private Integer registerSum;
45 57
 }

+ 9
- 0
src/main/java/com/huiju/estateagents/service/IStatisticalService.java 查看文件

@@ -115,4 +115,13 @@ public interface IStatisticalService {
115 115
      * @return
116 116
      */
117 117
     ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate);
118
+
119
+    /**
120
+     * 用户来源数据统计折线图
121
+     * @param orgId
122
+     * @param startDate
123
+     * @param endDate
124
+     * @return
125
+     */
126
+    ResponseBean selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate);
118 127
 }

+ 76
- 1
src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java 查看文件

@@ -1,10 +1,12 @@
1 1
 package com.huiju.estateagents.service.impl;
2 2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3 4
 import com.baomidou.mybatisplus.core.metadata.IPage;
4 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5 6
 import com.huiju.estateagents.base.ResponseBean;
6 7
 import com.huiju.estateagents.common.CommConstant;
7 8
 import com.huiju.estateagents.entity.TaPersonVisitRecord;
9
+import com.huiju.estateagents.entity.TdWxDict;
8 10
 import com.huiju.estateagents.exception.EstaException;
9 11
 import com.huiju.estateagents.mapper.*;
10 12
 import com.huiju.estateagents.po.PersonPO;
@@ -16,7 +18,12 @@ import org.springframework.beans.factory.annotation.Autowired;
16 18
 import org.springframework.stereotype.Service;
17 19
 
18 20
 import java.time.LocalDate;
21
+import java.time.LocalDateTime;
22
+import java.time.format.DateTimeFormatter;
23
+import java.time.temporal.ChronoUnit;
19 24
 import java.util.*;
25
+import java.util.stream.Collectors;
26
+import java.util.stream.Stream;
20 27
 
21 28
 /**
22 29
  * 数据统计
@@ -47,6 +54,9 @@ public class StatisticalServiceImpl implements IStatisticalService {
47 54
     @Autowired
48 55
     private TsPersonFromStatisticMapper tsPersonFromStatisticMapper;
49 56
 
57
+    @Autowired
58
+    private TdWxDictMapper tdWxDictMapper;
59
+
50 60
 
51 61
     @Override
52 62
     public ResponseBean indexStatistical(Integer orgId) {
@@ -318,7 +328,72 @@ public class StatisticalServiceImpl implements IStatisticalService {
318 328
      */
319 329
     @Override
320 330
     public ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate) {
331
+        ResponseBean responseBean = new ResponseBean();
321 332
         List<TsPersonFromStatistic> list = tsPersonFromStatisticMapper.selectPersonFrom(orgId,startDate,endDate);
322
-        return null;
333
+        QueryWrapper<TdWxDict> tdWxDictQueryWrapper = new QueryWrapper<>();
334
+        tdWxDictQueryWrapper.groupBy("scene_type");
335
+        List<TdWxDict> tdWxDicts = tdWxDictMapper.selectList(tdWxDictQueryWrapper);
336
+        tdWxDicts.forEach(e -> {
337
+            int fromSum = list.stream().filter(l -> e.getSceneType().equals(l.getSceneType())).mapToInt(TsPersonFromStatistic::getFromNum).sum();
338
+            int registerSum = list.stream().filter(l -> e.getSceneType().equals(l.getSceneType())).mapToInt(TsPersonFromStatistic::getRegisteredNum).sum();
339
+            e.setFromData(fromSum);
340
+            e.setRegisterSum(registerSum);
341
+        });
342
+
343
+        responseBean.addSuccess(tdWxDicts);
344
+        return responseBean;
345
+    }
346
+
347
+    /**
348
+     * 用户来源数据统计折线图
349
+     *
350
+     * @param orgId
351
+     * @param startDate
352
+     * @param endDate
353
+     * @return
354
+     */
355
+    @Override
356
+    public ResponseBean selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate) {
357
+        List<TsPersonFromStatistic> dayList = getDayList(startDate, endDate);
358
+        List<TsPersonFromStatistic> list = tsPersonFromStatisticMapper.selectPersonFromGroupByDay(orgId,startDate,endDate);
359
+        dayList.forEach(e -> {
360
+            list.forEach(l -> {
361
+                if (e.getCreateTime().equals(l.getCreateTime())){
362
+                    e.setFromNum(l.getFromNum());
363
+                    e.setRegisteredNum(l.getRegisteredNum());
364
+                }
365
+            });
366
+        });
367
+        return ResponseBean.success(dayList);
368
+    }
369
+
370
+    /**
371
+     * 返回时间区间格式
372
+     * @param startDate
373
+     * @param endDate
374
+     * @return
375
+     */
376
+    private List<TsPersonFromStatistic> getDayList(LocalDate startDate, LocalDate endDate) {
377
+        if (null == startDate || null == endDate){
378
+            endDate = LocalDate.now();
379
+            startDate = LocalDate.now().plusDays(-7);
380
+        }
381
+
382
+        //获取时间区间
383
+        List<LocalDate> dates = Stream.iterate(startDate, date -> date.plusDays(1))
384
+                .limit(ChronoUnit.DAYS.between(startDate, endDate))
385
+                .collect(Collectors.toList());
386
+
387
+        //格式化时间
388
+        List<TsPersonFromStatistic> dataList = new ArrayList<>();
389
+        DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
390
+        dates.forEach(e -> {
391
+            TsPersonFromStatistic tsPersonFromStatistic = new TsPersonFromStatistic();
392
+            tsPersonFromStatistic.setRegisteredNum(0);
393
+            tsPersonFromStatistic.setFromNum(0);
394
+            tsPersonFromStatistic.setCreateTime(dtf3.format(e));
395
+            dataList.add(tsPersonFromStatistic);
396
+        });
397
+        return dataList;
323 398
     }
324 399
 }

+ 7
- 0
src/main/java/com/huiju/estateagents/statistic/entity/TsPersonFromStatistic.java 查看文件

@@ -1,6 +1,7 @@
1 1
 package com.huiju.estateagents.statistic.entity;
2 2
 
3 3
 import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
4 5
 import com.baomidou.mybatisplus.annotation.TableId;
5 6
 import lombok.Data;
6 7
 import lombok.EqualsAndHashCode;
@@ -59,4 +60,10 @@ public class TsPersonFromStatistic implements Serializable {
59 60
      * 注册数量
60 61
      */
61 62
     private Integer registeredNum;
63
+
64
+    /**
65
+     * 时间
66
+     */
67
+    @TableField(exist = false)
68
+    private String createTime;
62 69
 }

+ 2
- 0
src/main/java/com/huiju/estateagents/statistic/mapper/TsPersonFromStatisticMapper.java 查看文件

@@ -21,4 +21,6 @@ public interface TsPersonFromStatisticMapper extends BaseMapper<TsPersonFromStat
21 21
     void insertStatisticList(List<TsPersonFromStatistic> list);
22 22
 
23 23
     List<TsPersonFromStatistic> selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate);
24
+
25
+    List<TsPersonFromStatistic> selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate);
24 26
 }

+ 21
- 2
src/main/resources/mapper/statistic/TsPersonFromStatisticMapper.xml 查看文件

@@ -13,8 +13,8 @@
13 13
         SELECT
14 14
             *
15 15
         FROM
16
-        ta_person_from_record tp
17
-        where tp.org_id = #{org}
16
+        ts_person_from_statistic tp
17
+        where tp.org_id = #{orgId}
18 18
         <if test="startDate != null or endDate != null">
19 19
             AND  tp.create_date BETWEEN #{startDate} and #{endDate}
20 20
         </if>
@@ -22,4 +22,23 @@
22 22
             AND tp.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
23 23
         </if>
24 24
     </select>
25
+    <select id="selectPersonFromGroupByDay"
26
+            resultType="com.huiju.estateagents.statistic.entity.TsPersonFromStatistic">
27
+        SELECT
28
+            sum( tp.from_num ) AS from_num,
29
+            sum( tp.registered_num ) AS registered_num,
30
+            DATE_FORMAT( tp.create_date, '%Y-%m-%d' ) AS create_time
31
+        FROM
32
+            ts_person_from_statistic tp
33
+        WHERE
34
+            tp.org_id = #{orgId}
35
+        <if test="startDate != null or endDate != null">
36
+            AND  tp.create_date BETWEEN #{startDate} and #{endDate}
37
+        </if>
38
+        <if test="startDate == null or endDate == null">
39
+            AND tp.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
40
+        </if>
41
+        GROUP BY
42
+            DATE_FORMAT( tp.create_date, '%Y-%m-%d' )
43
+    </select>
25 44
 </mapper>