傅行帆 пре 5 година
родитељ
комит
3959acc2ab

+ 11
- 0
src/main/java/com/huiju/estateagents/controller/StatisticalController.java Прегледај датотеку

173
                                             HttpServletRequest request) {
173
                                             HttpServletRequest request) {
174
         return iStatisticalService.selectPersonFrom(getOrgId(request), startDate,endDate);
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
 package com.huiju.estateagents.entity;
1
 package com.huiju.estateagents.entity;
2
 
2
 
3
+import com.baomidou.mybatisplus.annotation.TableField;
3
 import lombok.Data;
4
 import lombok.Data;
4
 import lombok.EqualsAndHashCode;
5
 import lombok.EqualsAndHashCode;
5
 import lombok.experimental.Accessors;
6
 import lombok.experimental.Accessors;
42
     private String sceneAlias;
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
      * @return
115
      * @return
116
      */
116
      */
117
     ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate);
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
 package com.huiju.estateagents.service.impl;
1
 package com.huiju.estateagents.service.impl;
2
 
2
 
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
3
 import com.baomidou.mybatisplus.core.metadata.IPage;
4
 import com.baomidou.mybatisplus.core.metadata.IPage;
4
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
 import com.huiju.estateagents.base.ResponseBean;
6
 import com.huiju.estateagents.base.ResponseBean;
6
 import com.huiju.estateagents.common.CommConstant;
7
 import com.huiju.estateagents.common.CommConstant;
7
 import com.huiju.estateagents.entity.TaPersonVisitRecord;
8
 import com.huiju.estateagents.entity.TaPersonVisitRecord;
9
+import com.huiju.estateagents.entity.TdWxDict;
8
 import com.huiju.estateagents.exception.EstaException;
10
 import com.huiju.estateagents.exception.EstaException;
9
 import com.huiju.estateagents.mapper.*;
11
 import com.huiju.estateagents.mapper.*;
10
 import com.huiju.estateagents.po.PersonPO;
12
 import com.huiju.estateagents.po.PersonPO;
16
 import org.springframework.stereotype.Service;
18
 import org.springframework.stereotype.Service;
17
 
19
 
18
 import java.time.LocalDate;
20
 import java.time.LocalDate;
21
+import java.time.LocalDateTime;
22
+import java.time.format.DateTimeFormatter;
23
+import java.time.temporal.ChronoUnit;
19
 import java.util.*;
24
 import java.util.*;
25
+import java.util.stream.Collectors;
26
+import java.util.stream.Stream;
20
 
27
 
21
 /**
28
 /**
22
  * 数据统计
29
  * 数据统计
47
     @Autowired
54
     @Autowired
48
     private TsPersonFromStatisticMapper tsPersonFromStatisticMapper;
55
     private TsPersonFromStatisticMapper tsPersonFromStatisticMapper;
49
 
56
 
57
+    @Autowired
58
+    private TdWxDictMapper tdWxDictMapper;
59
+
50
 
60
 
51
     @Override
61
     @Override
52
     public ResponseBean indexStatistical(Integer orgId) {
62
     public ResponseBean indexStatistical(Integer orgId) {
318
      */
328
      */
319
     @Override
329
     @Override
320
     public ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate) {
330
     public ResponseBean selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate) {
331
+        ResponseBean responseBean = new ResponseBean();
321
         List<TsPersonFromStatistic> list = tsPersonFromStatisticMapper.selectPersonFrom(orgId,startDate,endDate);
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
 package com.huiju.estateagents.statistic.entity;
1
 package com.huiju.estateagents.statistic.entity;
2
 
2
 
3
 import com.baomidou.mybatisplus.annotation.IdType;
3
 import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
4
 import com.baomidou.mybatisplus.annotation.TableId;
5
 import com.baomidou.mybatisplus.annotation.TableId;
5
 import lombok.Data;
6
 import lombok.Data;
6
 import lombok.EqualsAndHashCode;
7
 import lombok.EqualsAndHashCode;
59
      * 注册数量
60
      * 注册数量
60
      */
61
      */
61
     private Integer registeredNum;
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
     void insertStatisticList(List<TsPersonFromStatistic> list);
21
     void insertStatisticList(List<TsPersonFromStatistic> list);
22
 
22
 
23
     List<TsPersonFromStatistic> selectPersonFrom(Integer orgId, LocalDate startDate, LocalDate endDate);
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
         SELECT
13
         SELECT
14
             *
14
             *
15
         FROM
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
         <if test="startDate != null or endDate != null">
18
         <if test="startDate != null or endDate != null">
19
             AND  tp.create_date BETWEEN #{startDate} and #{endDate}
19
             AND  tp.create_date BETWEEN #{startDate} and #{endDate}
20
         </if>
20
         </if>
22
             AND tp.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
22
             AND tp.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
23
         </if>
23
         </if>
24
     </select>
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
 </mapper>
44
 </mapper>