|
@@ -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,75 @@ 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
|
+ Map<String,Object> map = new HashMap<>();
|
|
343
|
+ map.put("tdWxDicts",tdWxDicts);
|
|
344
|
+ List<TsPersonFromStatistic> tableList = tsPersonFromStatisticMapper.selectPersonFromGroupByData(orgId,startDate,endDate);
|
|
345
|
+ map.put("list",tableList);
|
|
346
|
+ responseBean.addSuccess(map);
|
|
347
|
+ return responseBean;
|
|
348
|
+ }
|
|
349
|
+
|
|
350
|
+ /**
|
|
351
|
+ * 用户来源数据统计折线图
|
|
352
|
+ *
|
|
353
|
+ * @param orgId
|
|
354
|
+ * @param startDate
|
|
355
|
+ * @param endDate
|
|
356
|
+ * @return
|
|
357
|
+ */
|
|
358
|
+ @Override
|
|
359
|
+ public ResponseBean selectPersonFromGroupByDay(Integer orgId, LocalDate startDate, LocalDate endDate) {
|
|
360
|
+ List<TsPersonFromStatistic> dayList = getDayList(startDate, endDate);
|
|
361
|
+ List<TsPersonFromStatistic> list = tsPersonFromStatisticMapper.selectPersonFromGroupByDay(orgId,startDate,endDate);
|
|
362
|
+ dayList.forEach(e -> {
|
|
363
|
+ list.forEach(l -> {
|
|
364
|
+ if (e.getCreateTime().equals(l.getCreateTime())){
|
|
365
|
+ e.setFromNum(l.getFromNum());
|
|
366
|
+ e.setRegisteredNum(l.getRegisteredNum());
|
|
367
|
+ }
|
|
368
|
+ });
|
|
369
|
+ });
|
|
370
|
+ return ResponseBean.success(dayList);
|
|
371
|
+ }
|
|
372
|
+
|
|
373
|
+ /**
|
|
374
|
+ * 返回时间区间格式
|
|
375
|
+ * @param startDate
|
|
376
|
+ * @param endDate
|
|
377
|
+ * @return
|
|
378
|
+ */
|
|
379
|
+ private List<TsPersonFromStatistic> getDayList(LocalDate startDate, LocalDate endDate) {
|
|
380
|
+ if (null == startDate || null == endDate){
|
|
381
|
+ endDate = LocalDate.now();
|
|
382
|
+ startDate = LocalDate.now().plusDays(-7);
|
|
383
|
+ }
|
|
384
|
+
|
|
385
|
+ //获取时间区间
|
|
386
|
+ List<LocalDate> dates = Stream.iterate(startDate, date -> date.plusDays(1))
|
|
387
|
+ .limit(ChronoUnit.DAYS.between(startDate, endDate))
|
|
388
|
+ .collect(Collectors.toList());
|
|
389
|
+
|
|
390
|
+ //格式化时间
|
|
391
|
+ List<TsPersonFromStatistic> dataList = new ArrayList<>();
|
|
392
|
+ DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
393
|
+ dates.forEach(e -> {
|
|
394
|
+ TsPersonFromStatistic tsPersonFromStatistic = new TsPersonFromStatistic();
|
|
395
|
+ tsPersonFromStatistic.setRegisteredNum(0);
|
|
396
|
+ tsPersonFromStatistic.setFromNum(0);
|
|
397
|
+ tsPersonFromStatistic.setCreateTime(dtf3.format(e));
|
|
398
|
+ dataList.add(tsPersonFromStatistic);
|
|
399
|
+ });
|
|
400
|
+ return dataList;
|
323
|
401
|
}
|
324
|
402
|
}
|