Ver código fonte

Merge branch 'dev' of http://git.ycjcjy.com/zhiyuxing/estateagents into dev

魏超 5 anos atrás
pai
commit
1cdb647b38
29 arquivos alterados com 1740 adições e 30 exclusões
  1. 25
    0
      src/main/java/com/huiju/estateagents/common/StringUtils.java
  2. 2
    8
      src/main/java/com/huiju/estateagents/controller/ExtendContentController.java
  3. 104
    0
      src/main/java/com/huiju/estateagents/controller/StatisticalController.java
  4. 461
    0
      src/main/java/com/huiju/estateagents/controller/TsConsultantKpiController.java
  5. 6
    12
      src/main/java/com/huiju/estateagents/drainage/controller/TaDrainageController.java
  6. 6
    0
      src/main/java/com/huiju/estateagents/drainage/entity/TaDrainage.java
  7. 8
    3
      src/main/java/com/huiju/estateagents/entity/ExtendContent.java
  8. 15
    0
      src/main/java/com/huiju/estateagents/entity/TaPerson.java
  9. 10
    0
      src/main/java/com/huiju/estateagents/entity/TaShareCount.java
  10. 5
    0
      src/main/java/com/huiju/estateagents/entity/TaSharePersonFrom.java
  11. 117
    0
      src/main/java/com/huiju/estateagents/entity/TsConsultantKpi.java
  12. 84
    0
      src/main/java/com/huiju/estateagents/excel/ConsultantKPIExport.java
  13. 38
    0
      src/main/java/com/huiju/estateagents/excel/IntentionUser.java
  14. 3
    0
      src/main/java/com/huiju/estateagents/mapper/TaPersonIntentionRecordMapper.java
  15. 9
    4
      src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java
  16. 7
    0
      src/main/java/com/huiju/estateagents/mapper/TaRecommendCustomerMapper.java
  17. 197
    0
      src/main/java/com/huiju/estateagents/mapper/TsConsultantKpiMapper.java
  18. 19
    0
      src/main/java/com/huiju/estateagents/service/IStatisticalService.java
  19. 44
    0
      src/main/java/com/huiju/estateagents/service/ITsConsultantKpiService.java
  20. 31
    2
      src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java
  21. 1
    0
      src/main/java/com/huiju/estateagents/service/impl/TaShareServiceImpl.java
  22. 111
    0
      src/main/java/com/huiju/estateagents/service/impl/TsConsultantKpiServiceImpl.java
  23. 2
    0
      src/main/java/com/huiju/estateagents/statistic/mapper/TsPersonFromStatisticMapper.java
  24. 1
    1
      src/main/resources/application-blue.yml
  25. 28
    0
      src/main/resources/mapper/TaPersonIntentionRecordMapper.xml
  26. 9
    0
      src/main/resources/mapper/TaPersonMapper.xml
  27. 17
    0
      src/main/resources/mapper/TaRecommendCustomerMapper.xml
  28. 356
    0
      src/main/resources/mapper/TsConsultantKpiMapper.xml
  29. 24
    0
      src/main/resources/mapper/statistic/TsPersonFromStatisticMapper.xml

+ 25
- 0
src/main/java/com/huiju/estateagents/common/StringUtils.java Ver arquivo

@@ -3,8 +3,12 @@ package com.huiju.estateagents.common;
3 3
 import java.io.UnsupportedEncodingException;
4 4
 import java.net.URLEncoder;
5 5
 import java.util.Random;
6
+import java.util.regex.Matcher;
7
+import java.util.regex.Pattern;
6 8
 
7 9
 public class StringUtils {
10
+    private static Pattern humpPattern = Pattern.compile("[A-Z]");
11
+
8 12
     public static boolean isEmpty(String str) {
9 13
         return null == str || "".equals(str.trim()) || "null".equals(str) || "undefined".equals(str);
10 14
     }
@@ -44,4 +48,25 @@ public class StringUtils {
44 48
             return str;
45 49
         }
46 50
     }
51
+
52
+    public static String humpToLine(String str) {
53
+        if (null == str || "".equals(str)) return "";
54
+
55
+        Matcher matcher = humpPattern.matcher(str);
56
+        StringBuffer sb = new StringBuffer();
57
+        while (matcher.find()) {
58
+            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
59
+        }
60
+        matcher.appendTail(sb);
61
+        return sb.toString();
62
+    }
63
+
64
+    public static String strToUnicode(String str) {
65
+        char[] chars = str.toCharArray();
66
+        String returnStr = "";
67
+        for (int i = 0; i < chars.length; i++) {
68
+            returnStr += "\\u" + Integer.toString(chars[i], 16);
69
+        }
70
+        return returnStr;
71
+    }
47 72
 }

+ 2
- 8
src/main/java/com/huiju/estateagents/controller/ExtendContentController.java Ver arquivo

@@ -5,20 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
5 5
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 6
 import com.huiju.estateagents.base.BaseController;
7 7
 import com.huiju.estateagents.base.ResponseBean;
8
-import com.huiju.estateagents.center.taUser.entity.TaUser;
9
-import com.huiju.estateagents.common.CommConstant;
10
-import com.huiju.estateagents.common.MD5Utils;
11 8
 import com.huiju.estateagents.entity.*;
12 9
 import com.huiju.estateagents.service.*;
13 10
 import com.huiju.estateagents.service.impl.HelpActivityServiceImpl;
14
-import io.jsonwebtoken.lang.Collections;
15 11
 import io.swagger.annotations.Api;
16 12
 import io.swagger.annotations.ApiImplicitParam;
17 13
 import io.swagger.annotations.ApiImplicitParams;
18 14
 import io.swagger.annotations.ApiOperation;
19
-import jodd.util.StringUtil;
20 15
 import org.apache.commons.lang3.StringUtils;
21
-import org.apache.ibatis.annotations.Param;
22 16
 import org.slf4j.Logger;
23 17
 import org.slf4j.LoggerFactory;
24 18
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +20,6 @@ import org.springframework.web.bind.annotation.*;
26 20
 
27 21
 import javax.servlet.http.HttpServletRequest;
28 22
 import java.time.LocalDateTime;
29
-import java.util.Collection;
30 23
 import java.util.List;
31 24
 import java.util.stream.Collectors;
32 25
 
@@ -104,7 +97,7 @@ public class ExtendContentController extends BaseController {
104 97
             queryWrapper.ne("status",9);
105 98
             queryWrapper.eq(status != null, "status", status);
106 99
             queryWrapper.eq( "org_id", getOrgId(request));
107
-            queryWrapper.and(taPersonBuildingList.size() > 0, wapper -> wapper.in("building_id",taPersonBuildingList.stream().map(TaPersonBuilding::getBuildingId).collect(Collectors.toList())).or().isNull("building_id"));
100
+            queryWrapper.and(taPersonBuildingList.size() > 0, wapper -> wapper.in("building_id",taPersonBuildingList.stream().map(TaPersonBuilding::getBuildingId).collect(Collectors.toList())).or().eq("create_user",getUserId(request)));
108 101
             queryWrapper.orderByDesc("order_no");
109 102
             queryWrapper.orderByDesc("create_date");
110 103
             IPage<ExtendContent> result = iExtendContentService.page(pg, queryWrapper);
@@ -192,6 +185,7 @@ public class ExtendContentController extends BaseController {
192 185
         if (StringUtils.isEmpty(extendContent.getContentType())){
193 186
             extendContent.setContentType("nothing");
194 187
         }
188
+        extendContent.setCreateUser(getUserId(request));
195 189
         responseBean = iExtendContentService.extendContentAdd(extendContent);
196 190
         responseBean.addSuccess(extendContent);
197 191
         return responseBean;

+ 104
- 0
src/main/java/com/huiju/estateagents/controller/StatisticalController.java Ver arquivo

@@ -5,10 +5,13 @@ import com.alibaba.excel.ExcelWriter;
5 5
 import com.alibaba.excel.write.metadata.WriteSheet;
6 6
 import com.huiju.estateagents.base.BaseController;
7 7
 import com.huiju.estateagents.base.ResponseBean;
8
+import com.huiju.estateagents.entity.TdWxDict;
9
+import com.huiju.estateagents.excel.IntentionUser;
8 10
 import com.huiju.estateagents.excel.StatsBuilding;
9 11
 import com.huiju.estateagents.excel.StatsTimeBuilding;
10 12
 import com.huiju.estateagents.excel.handler.CustomCellWriteHandler;
11 13
 import com.huiju.estateagents.service.IStatisticalService;
14
+import com.huiju.estateagents.statistic.entity.TsPersonFromStatistic;
12 15
 import org.springframework.beans.factory.annotation.Autowired;
13 16
 import org.springframework.format.annotation.DateTimeFormat;
14 17
 import org.springframework.web.bind.annotation.GetMapping;
@@ -20,7 +23,9 @@ import javax.servlet.http.HttpServletRequest;
20 23
 import javax.servlet.http.HttpServletResponse;
21 24
 import java.io.IOException;
22 25
 import java.time.LocalDate;
26
+import java.util.ArrayList;
23 27
 import java.util.List;
28
+import java.util.Map;
24 29
 
25 30
 /**
26 31
  * 数据统计
@@ -64,6 +69,17 @@ public class StatisticalController extends BaseController {
64 69
         return iStatisticalService.selectNewsUserCount(getOrgId(request), startDate, endDate);
65 70
     }
66 71
 
72
+    /**
73
+     * 新增用户数
74
+     * @return
75
+     */
76
+    @GetMapping(value = "/admin/changeNewsUserCount")
77
+    public ResponseBean changeNewsUserCount(@RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
78
+                                            @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)  LocalDate endDate,
79
+                                            HttpServletRequest request) {
80
+        return iStatisticalService.changeNewsUserCount(getOrgId(request), startDate, endDate);
81
+    }
82
+
67 83
     /**
68 84
      * 转化率 统计
69 85
      * @return
@@ -175,6 +191,25 @@ public class StatisticalController extends BaseController {
175 191
         return iStatisticalService.selectIntentionUser(pageNum, pageSize, getOrgId(request), buildingId, getTaPersonBuildingListByUserId(request));
176 192
     }
177 193
 
194
+    /**
195
+     * 意向用户 导出
196
+     * @return
197
+     */
198
+    @GetMapping(value = "/admin/exportIntentionUser")
199
+    public void getBuildingTimeTableList(@RequestParam(value = "buildingId", required = false) String buildingId,
200
+                                         HttpServletRequest request, HttpServletResponse response) throws IOException {
201
+        response.setContentType("application/octet-stream");
202
+        response.setCharacterEncoding("utf-8");
203
+        response.setHeader("Content-disposition", "attachment;filename=意向客户.xlsx");
204
+        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), IntentionUser.class).registerWriteHandler(new CustomCellWriteHandler()).build();
205
+        // 设置 sheet, 同一个sheet只需要设置一次
206
+        WriteSheet writeSheet = EasyExcel.writerSheet("项目详情统计").build();
207
+        List<IntentionUser> list = iStatisticalService.getExportIntentionUser(getOrgId(request), buildingId, getTaPersonBuildingListByUserId(request));
208
+        excelWriter.write(list, writeSheet);
209
+        // finish 会帮忙关闭流
210
+        excelWriter.finish();
211
+    }
212
+
178 213
     /**
179 214
      * 用户来源  首页
180 215
      * @return
@@ -295,4 +330,73 @@ public class StatisticalController extends BaseController {
295 330
         excelWriter.finish();
296 331
     }
297 332
 
333
+
334
+
335
+    /**
336
+     * 新增用户导出
337
+     * @return
338
+     */
339
+    @GetMapping(value = "/admin/exportUserStats")
340
+    public void exportUserStats(@RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDate startDate,
341
+                                         @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)  LocalDate endDate,
342
+                                         @RequestParam(value = "userType", required = false) String userType,
343
+                                         HttpServletRequest request, HttpServletResponse response) throws IOException {
344
+        response.setContentType("application/octet-stream");
345
+        response.setCharacterEncoding("utf-8");
346
+        response.setHeader("Content-disposition", "attachment;filename=新增用户.xlsx");
347
+        ResponseBean responseBean = iStatisticalService.selectPersonFrom(getOrgId(request), startDate, endDate);
348
+        List<List<String>> headerList = headerList(responseBean.getData());
349
+        List<List<String>> dataList = dataList(responseBean.getData(),userType);
350
+        EasyExcel.write(response.getOutputStream()).head(headerList).sheet("新增用户").doWrite(dataList);
351
+    }
352
+
353
+    /**
354
+     * 构建表数据
355
+     * @param data
356
+     * @return
357
+     */
358
+    private List<List<String>> dataList(Object data,String userType) {
359
+        Map<String, Object> map = (Map<String, Object>) data;
360
+        List<TsPersonFromStatistic> list = (List<TsPersonFromStatistic>) map.get("list");
361
+        List<List<String>> dataList = new ArrayList<>();
362
+        List<TdWxDict> tdWxDicts = (List<TdWxDict>) map.get("tdWxDicts");
363
+        list.forEach(l -> {
364
+            List<String> columlist = new ArrayList<>();
365
+            columlist.add(l.getCreateTime());
366
+            tdWxDicts.forEach(e -> {
367
+                if (e.getSceneType().equals(l.getSceneType())){
368
+                    if (userType.equals("registered")){
369
+                        columlist.add(l.getRegisteredNum().toString());
370
+                    }else {
371
+                        columlist.add(l.getFromNum().toString());
372
+                    }
373
+                }else {
374
+                    columlist.add("0");
375
+                }
376
+            });
377
+            dataList.add(columlist);
378
+        });
379
+        return dataList;
380
+    }
381
+
382
+    /**
383
+     * 构造表头
384
+     * @param data
385
+     * @return
386
+     */
387
+    private List<List<String>> headerList(Object data) {
388
+        Map<String, Object> map = (Map<String, Object>) data;
389
+        List<TdWxDict> tdWxDicts = (List<TdWxDict>) map.get("tdWxDicts");
390
+        List<List<String>> headerList = new ArrayList<>();
391
+        List<String> rqHeader = new ArrayList<>();
392
+        rqHeader.add("日期");
393
+        headerList.add(rqHeader);
394
+        tdWxDicts.forEach(e -> {
395
+            List<String> header = new ArrayList<>();
396
+            header.add(e.getSceneAlias());
397
+            headerList.add(header);
398
+        });
399
+        return headerList;
400
+    }
401
+
298 402
 }

+ 461
- 0
src/main/java/com/huiju/estateagents/controller/TsConsultantKpiController.java Ver arquivo

@@ -0,0 +1,461 @@
1
+package com.huiju.estateagents.controller;
2
+
3
+import com.alibaba.excel.EasyExcel;
4
+import com.alibaba.excel.ExcelWriter;
5
+import com.alibaba.excel.write.metadata.WriteSheet;
6
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
7
+import com.baomidou.mybatisplus.core.metadata.IPage;
8
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
9
+import com.huiju.estateagents.base.BaseController;
10
+import com.huiju.estateagents.base.ResponseBean;
11
+import com.huiju.estateagents.common.DateUtils;
12
+import com.huiju.estateagents.common.StringUtils;
13
+import com.huiju.estateagents.entity.*;
14
+import com.huiju.estateagents.excel.ConsultantKPIExport;
15
+import com.huiju.estateagents.excel.TaActivityDynamicEnlistExport;
16
+import com.huiju.estateagents.excel.handler.CustomCellWriteHandler;
17
+import org.slf4j.Logger;
18
+import org.slf4j.LoggerFactory;
19
+import org.springframework.beans.factory.annotation.Autowired;
20
+import org.springframework.web.bind.annotation.*;
21
+import com.huiju.estateagents.service.ITsConsultantKpiService;
22
+
23
+import javax.servlet.http.HttpServletRequest;
24
+import javax.servlet.http.HttpServletResponse;
25
+import java.time.LocalDateTime;
26
+import java.util.ArrayList;
27
+import java.util.HashMap;
28
+import java.util.List;
29
+
30
+/**
31
+ * <p>
32
+    * 置业顾问KPI  前端控制器
33
+    * </p>
34
+ *
35
+ * @author yansen
36
+ * @since 2020-04-14
37
+ */
38
+@RestController
39
+@RequestMapping("/api/admin/stats")
40
+public class TsConsultantKpiController extends BaseController {
41
+
42
+    private final Logger logger = LoggerFactory.getLogger(TsConsultantKpiController.class);
43
+
44
+    @Autowired
45
+    public ITsConsultantKpiService iTsConsultantKpiService;
46
+
47
+    /**
48
+     * 分页查询列表
49
+     * @param pageNum
50
+     * @param pageSize
51
+     * @param startDate
52
+     * @param endDate
53
+     * @param buildingId
54
+     * @param asc
55
+     * @param desc
56
+     * @param request
57
+     * @return
58
+     */
59
+    @RequestMapping(value="/consultant/kpi",method= RequestMethod.GET)
60
+    public ResponseBean stsConsultantKpiList(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
61
+                                            @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
62
+                                            // startDate 默认格式 YYYYMMDD
63
+                                            @RequestParam(value ="startDate", required = false) String startDate,
64
+                                            @RequestParam(value ="endDate", required = false) String endDate,
65
+                                            @RequestParam(value ="buildingId", required = false) String buildingId,
66
+                                            @RequestParam(value ="asc", required = false) String asc,
67
+                                            @RequestParam(value ="desc", required = false) String desc,
68
+                                            HttpServletRequest request
69
+        ){
70
+        if (null == startDate || "".equals(startDate)) {
71
+            return ResponseBean.error("开始日期不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
72
+        }
73
+        if (null == endDate || "".equals(endDate)) {
74
+            endDate = DateUtils.today();
75
+        }
76
+
77
+        Integer orgId = getOrgId(request);
78
+        try {
79
+            // 汇总明细
80
+            IPage<TsConsultantKpi> result = iTsConsultantKpiService.stsKPIDaily(pageNum, pageSize, orgId, buildingId, startDate, endDate, StringUtils.humpToLine(asc), StringUtils.humpToLine(desc));
81
+            // 汇总
82
+            TsConsultantKpi total = iTsConsultantKpiService.stsKPITotalByOrg(orgId, buildingId, startDate, endDate);
83
+            return ResponseBean.success(new HashMap<String, Object>(){{
84
+                put("paged", result);
85
+                put("total", total);
86
+            }});
87
+        }catch (Exception e){
88
+//            e.printStackTrace();
89
+            return ResponseBean.error("查询出错, 请重试 : " + e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
90
+        }
91
+    }
92
+
93
+
94
+    /**
95
+     * 导出
96
+     * @param startDate
97
+     * @param endDate
98
+     * @param buildingId
99
+     * @param request
100
+     * @return
101
+     */
102
+    @RequestMapping(value="/consultant/kpi",method= RequestMethod.POST)
103
+    public ResponseBean stsConsultantKpiExport(// startDate 默认格式 YYYYMMDD
104
+                                            @RequestParam(value ="startDate", required = false) String startDate,
105
+                                            @RequestParam(value ="endDate", required = false) String endDate,
106
+                                            @RequestParam(value ="buildingId", required = false) String buildingId,
107
+                                            HttpServletRequest request,
108
+                                            HttpServletResponse response
109
+    ){
110
+        if (null == startDate || "".equals(startDate)) {
111
+            return ResponseBean.error("开始日期不能为空", ResponseBean.ERROR_ILLEGAL_PARAMS);
112
+        }
113
+        if (null == endDate || "".equals(endDate)) {
114
+            endDate = DateUtils.today();
115
+        }
116
+
117
+        Integer orgId = getOrgId(request);
118
+        try {
119
+            response.setContentType("application/octet-stream");
120
+            response.setCharacterEncoding("utf-8");
121
+            response.setHeader("Content-disposition", "attachment;filename="+StringUtils.strToUnicode("置业顾问KPI统计")+DateUtils.today()+".xlsx");
122
+
123
+            // 汇总明细
124
+            List<ConsultantKPIExport> result = iTsConsultantKpiService.stsKPIDailyExport(orgId, buildingId, startDate, endDate);
125
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), ConsultantKPIExport.class).registerWriteHandler(new CustomCellWriteHandler()).build();
126
+            WriteSheet sheet1 = EasyExcel.writerSheet("sheet1").build();
127
+            excelWriter.write(result, sheet1);
128
+            excelWriter.finish();
129
+        } catch (Exception e){
130
+//            e.printStackTrace();
131
+            return ResponseBean.error("查询出错, 请重试 : " + e.getMessage(), ResponseBean.ERROR_UNAVAILABLE);
132
+        }
133
+
134
+        return null;
135
+    }
136
+
137
+    private LocalDateTime[] getLocalTimeRangeBy(String startDate, String endDate) throws Exception {
138
+        LocalDateTime startTime = null;
139
+        LocalDateTime endTime = null;
140
+
141
+        if (!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
142
+            if (startDate.length() != 8 && endDate.length() != 8) {
143
+                throw new Exception("日期格式必须为YYYYMMDD");
144
+            }
145
+
146
+            startTime = DateUtils.day2LocalDateime(startDate.substring(0,4) + "-" + startDate.substring(4, 6) + "-" + startDate.substring(6, 8));
147
+            endTime = DateUtils.day2LocalDateime(endDate.substring(0,4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8));
148
+        }
149
+
150
+        return new LocalDateTime[]{startTime, endTime};
151
+    }
152
+
153
+    /**
154
+     * 查询置业的客户
155
+     * startDate 存在则统计新增客户, 不存在则统计所有
156
+     * @param pageNum
157
+     * @param pageSize
158
+     * @param buildingId
159
+     * @param userId
160
+     * @param startDate
161
+     * @param endDate
162
+     * @param request
163
+     * @return
164
+     */
165
+    @GetMapping("/consultant/customer")
166
+    public ResponseBean getConsultantCustomers(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
167
+                                            @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
168
+                                            @RequestParam(value ="buildingId", required = false) String buildingId,
169
+                                            @RequestParam(value ="userId") String userId,
170
+                                            @RequestParam(value ="startDate", required = false) String startDate,
171
+                                            @RequestParam(value ="endDate", required = false) String endDate,
172
+                                            HttpServletRequest request
173
+    ){
174
+        LocalDateTime[] dateRange = {null, null};
175
+        try {
176
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
177
+        } catch (Exception e) {
178
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
179
+        }
180
+
181
+        Integer orgId = getOrgId(request);
182
+        IPage<TaRecommendCustomer> page = new Page<>(pageNum, pageSize);
183
+        IPage<TaRecommendCustomer> result = iTsConsultantKpiService.getCustomerListOfConsultant(page, orgId, userId, buildingId, dateRange[0], dateRange[1]);
184
+        return ResponseBean.success(result);
185
+    }
186
+
187
+    /**
188
+     * 置业分享拓客
189
+     * @param pageNum
190
+     * @param pageSize
191
+     * @param buildingId
192
+     * @param userId
193
+     * @param startDate
194
+     * @param endDate
195
+     * @param request
196
+     * @return
197
+     */
198
+    @GetMapping("/consultant/share/customer")
199
+    public ResponseBean getConsultantShareCustomers(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
200
+                                                    @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
201
+                                                    @RequestParam(value ="buildingId", required = false) String buildingId,
202
+                                                    @RequestParam(value ="userId") String userId,
203
+                                                    @RequestParam(value ="startDate", required = false) String startDate,
204
+                                                    @RequestParam(value ="endDate", required = false) String endDate,
205
+                                                    HttpServletRequest request) {
206
+
207
+        LocalDateTime[] dateRange = {null, null};
208
+        try {
209
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
210
+        } catch (Exception e) {
211
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
212
+        }
213
+
214
+        Integer orgId = getOrgId(request);
215
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
216
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantShareCustomers(page, orgId, userId, buildingId, dateRange[0], dateRange[1]);
217
+        return ResponseBean.success(result);
218
+    }
219
+
220
+    /**
221
+     * 置业首页访问人数
222
+     * @param pageNum
223
+     * @param pageSize
224
+     * @param buildingId
225
+     * @param userId
226
+     * @param startDate
227
+     * @param endDate
228
+     * @param request
229
+     * @return
230
+     */
231
+    @GetMapping("/consultant/homepage/persons")
232
+    public ResponseBean getConsultantHomePagePersons(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
233
+                                                     @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
234
+                                                     @RequestParam(value ="buildingId", required = false) String buildingId,
235
+                                                     @RequestParam(value ="userId") String userId,
236
+                                                     @RequestParam(value ="startDate", required = false) String startDate,
237
+                                                     @RequestParam(value ="endDate", required = false) String endDate,
238
+                                                     HttpServletRequest request) {
239
+        LocalDateTime[] dateRange = {null, null};
240
+        try {
241
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
242
+        } catch (Exception e) {
243
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
244
+        }
245
+
246
+        Integer orgId = getOrgId(request);
247
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
248
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantHomePagePersons(page, orgId, userId, buildingId, dateRange[0], dateRange[1]);
249
+        return ResponseBean.success(result);
250
+    }
251
+
252
+    /**
253
+     * 置业首页访问次数
254
+     * @param pageNum
255
+     * @param pageSize
256
+     * @param buildingId
257
+     * @param userId
258
+     * @param startDate
259
+     * @param endDate
260
+     * @param request
261
+     * @return
262
+     */
263
+    @GetMapping("/consultant/homepage/times")
264
+    public ResponseBean getConsultantHomePageTimes(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
265
+                                                     @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
266
+                                                     @RequestParam(value ="buildingId", required = false) String buildingId,
267
+                                                     @RequestParam(value ="userId") String userId,
268
+                                                     @RequestParam(value ="startDate", required = false) String startDate,
269
+                                                     @RequestParam(value ="endDate", required = false) String endDate,
270
+                                                   @RequestParam(value ="personId", required = false) String personId,
271
+                                                     HttpServletRequest request) {
272
+        LocalDateTime[] dateRange = {null, null};
273
+        try {
274
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
275
+        } catch (Exception e) {
276
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
277
+        }
278
+
279
+        Integer orgId = getOrgId(request);
280
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
281
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantHomePageTimes(page, orgId, userId, buildingId, dateRange[0], dateRange[1], personId);
282
+        return ResponseBean.success(result);
283
+    }
284
+
285
+    /**
286
+     * 咨询置业次数
287
+     * @param pageNum
288
+     * @param pageSize
289
+     * @param buildingId
290
+     * @param userId
291
+     * @param startDate
292
+     * @param endDate
293
+     * @param request
294
+     * @return
295
+     */
296
+    @GetMapping("/consultant/chat/persons")
297
+    public ResponseBean getConsultantChatPersons(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
298
+                                                 @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
299
+                                                 @RequestParam(value ="buildingId", required = false) String buildingId,
300
+                                                 @RequestParam(value ="userId") String userId,
301
+                                                 @RequestParam(value ="startDate", required = false) String startDate,
302
+                                                 @RequestParam(value ="endDate", required = false) String endDate,
303
+                                                 HttpServletRequest request) {
304
+        LocalDateTime[] dateRange = {null, null};
305
+        try {
306
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
307
+        } catch (Exception e) {
308
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
309
+        }
310
+
311
+        Integer orgId = getOrgId(request);
312
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
313
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantChatPersons(page, orgId, userId, buildingId, dateRange[0], dateRange[1]);
314
+        return ResponseBean.success(result);
315
+    }
316
+
317
+    /**
318
+     * 点赞详情
319
+     * @param pageNum
320
+     * @param pageSize
321
+     * @param buildingId
322
+     * @param userId
323
+     * @param startDate
324
+     * @param endDate
325
+     * @param request
326
+     * @return
327
+     */
328
+    @GetMapping("/consultant/favor")
329
+    public ResponseBean getConsultantFavor(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
330
+                                                 @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
331
+                                                 @RequestParam(value ="buildingId", required = false) String buildingId,
332
+                                                 @RequestParam(value ="userId") String userId,
333
+                                                 @RequestParam(value ="startDate", required = false) String startDate,
334
+                                                 @RequestParam(value ="endDate", required = false) String endDate,
335
+                                                 HttpServletRequest request) {
336
+        LocalDateTime[] dateRange = {null, null};
337
+        try {
338
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
339
+        } catch (Exception e) {
340
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
341
+        }
342
+
343
+        Integer orgId = getOrgId(request);
344
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
345
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantFavor(page, orgId, userId, buildingId, dateRange[0], dateRange[1]);
346
+        return ResponseBean.success(result);
347
+    }
348
+
349
+    /**
350
+     * 置业分享次数
351
+     * @param pageNum
352
+     * @param pageSize
353
+     * @param buildingId
354
+     * @param userId
355
+     * @param startDate
356
+     * @param endDate
357
+     * @param targetType
358
+     * @param targetName
359
+     * @param request
360
+     * @return
361
+     */
362
+    @GetMapping("/consultant/share/targets")
363
+    public ResponseBean getConsultantShareTargets(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
364
+                                                   @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
365
+                                                   @RequestParam(value ="buildingId", required = false) String buildingId,
366
+                                                   @RequestParam(value ="userId") String userId,
367
+                                                   @RequestParam(value ="startDate", required = false) String startDate,
368
+                                                   @RequestParam(value ="endDate", required = false) String endDate,
369
+                                                  @RequestParam(value ="targetType", required = false) String targetType,
370
+                                                  @RequestParam(value ="targetName", required = false) String targetName,
371
+                                                   HttpServletRequest request) {
372
+        LocalDateTime[] dateRange = {null, null};
373
+        try {
374
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
375
+        } catch (Exception e) {
376
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
377
+        }
378
+
379
+        Integer orgId = getOrgId(request);
380
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
381
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantShareTargets(page, orgId, userId, buildingId, dateRange[0], dateRange[1], targetType, targetName);
382
+        return ResponseBean.success(result);
383
+    }
384
+
385
+    /**
386
+     * 置业分享访问人数
387
+     * @param pageNum
388
+     * @param pageSize
389
+     * @param buildingId
390
+     * @param userId
391
+     * @param startDate
392
+     * @param endDate
393
+     * @param request
394
+     * @return
395
+     */
396
+    @GetMapping("/consultant/share/persons")
397
+    public ResponseBean getConsultantSharePersons(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
398
+                                                  @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
399
+                                                  @RequestParam(value ="buildingId", required = false) String buildingId,
400
+                                                  @RequestParam(value ="userId") String userId,
401
+                                                  @RequestParam(value ="startDate", required = false) String startDate,
402
+                                                  @RequestParam(value ="endDate", required = false) String endDate,
403
+                                                  HttpServletRequest request) {
404
+        LocalDateTime[] dateRange = {null, null};
405
+        try {
406
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
407
+        } catch (Exception e) {
408
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
409
+        }
410
+
411
+        Integer orgId = getOrgId(request);
412
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
413
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantSharePersons(page, orgId, userId, buildingId, dateRange[0], dateRange[1]);
414
+        return ResponseBean.success(result);
415
+    }
416
+
417
+    /**
418
+     * 置业分享访问次数
419
+     * @param pageNum
420
+     * @param pageSize
421
+     * @param buildingId
422
+     * @param userId
423
+     * @param startDate
424
+     * @param endDate
425
+     * @param targetType
426
+     * @param targetName
427
+     * @param request
428
+     * @return
429
+     */
430
+    @GetMapping("/consultant/share/times")
431
+    public ResponseBean getConsultantShareTimes(@RequestParam(value ="pageNum",defaultValue = "1") Integer pageNum,
432
+                                                  @RequestParam(value ="pageSize",defaultValue = "10") Integer pageSize,
433
+                                                  @RequestParam(value ="buildingId", required = false) String buildingId,
434
+                                                  @RequestParam(value ="userId") String userId,
435
+                                                  @RequestParam(value ="startDate", required = false) String startDate,
436
+                                                  @RequestParam(value ="endDate", required = false) String endDate,
437
+                                                  @RequestParam(value ="targetType", required = false) String targetType,
438
+                                                  @RequestParam(value ="targetName", required = false) String targetName,
439
+                                                @RequestParam(value ="userName", required = false) String userName,
440
+                                                @RequestParam(value ="personId", required = false) String personId,
441
+                                                  HttpServletRequest request) {
442
+        LocalDateTime[] dateRange = {null, null};
443
+        try {
444
+            dateRange = getLocalTimeRangeBy(startDate, endDate);
445
+        } catch (Exception e) {
446
+            return ResponseBean.error(e.getMessage(), ResponseBean.ERROR_ILLEGAL_PARAMS);
447
+        }
448
+
449
+        // 如果 personId 与 userName 同时存在, 以 personId 为准
450
+        if (!StringUtils.isEmpty(personId)) {
451
+            userName = null;
452
+        }
453
+
454
+        Integer orgId = getOrgId(request);
455
+        IPage<TaPerson> page = new Page<>(pageNum, pageSize);
456
+        IPage<TaPerson> result = iTsConsultantKpiService.getConsultantShareTimes(page, orgId, userId, buildingId, dateRange[0], dateRange[1], targetType, targetName, userName, personId);
457
+        return ResponseBean.success(result);
458
+    }
459
+
460
+
461
+}

+ 6
- 12
src/main/java/com/huiju/estateagents/drainage/controller/TaDrainageController.java Ver arquivo

@@ -9,35 +9,26 @@ import com.huiju.estateagents.common.CommConstant;
9 9
 import com.huiju.estateagents.common.DateUtils;
10 10
 import com.huiju.estateagents.common.StringUtils;
11 11
 import com.huiju.estateagents.drainage.entity.TaDrainage;
12
-import com.huiju.estateagents.drainage.entity.TaDrainageRecord;
13 12
 import com.huiju.estateagents.drainage.service.ITaDrainageRecordService;
14 13
 import com.huiju.estateagents.drainage.service.ITaDrainageService;
15 14
 import com.huiju.estateagents.entity.ExtendContent;
16 15
 import com.huiju.estateagents.entity.TaMiniapp;
16
+import com.huiju.estateagents.entity.TaPersonBuilding;
17 17
 import com.huiju.estateagents.mapper.TaMiniappMapper;
18 18
 import com.huiju.estateagents.service.IExtendContentService;
19 19
 import com.huiju.estateagents.service.IMiniAppService;
20 20
 import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
21 21
 import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
22
-import io.swagger.models.auth.In;
23 22
 import org.slf4j.Logger;
24 23
 import org.slf4j.LoggerFactory;
25 24
 import org.springframework.beans.factory.annotation.Autowired;
26
-import org.springframework.boot.json.YamlJsonParser;
27
-import org.springframework.web.bind.annotation.PathVariable;
28
-import org.springframework.web.bind.annotation.RequestBody;
29
-import org.springframework.web.bind.annotation.RequestMapping;
30
-import org.springframework.web.bind.annotation.RequestMethod;
31
-import org.springframework.web.bind.annotation.RequestParam;
32
-import org.springframework.web.bind.annotation.ResponseBody;
33
-import org.springframework.web.bind.annotation.RestController;
25
+import org.springframework.web.bind.annotation.*;
34 26
 
35 27
 import javax.servlet.http.HttpServletRequest;
36
-import java.text.DateFormat;
37 28
 import java.time.LocalDateTime;
38
-import java.time.format.DateTimeFormatter;
39 29
 import java.util.List;
40 30
 import java.util.UUID;
31
+import java.util.stream.Collectors;
41 32
 
42 33
 
43 34
 /**
@@ -89,6 +80,7 @@ public class TaDrainageController extends BaseController {
89 80
                                        HttpServletRequest request){
90 81
         ResponseBean responseBean = new ResponseBean();
91 82
         try {
83
+            List<TaPersonBuilding> taPersonBuildingList = getTaPersonBuildingListByUserId(request);
92 84
             //使用分页插件
93 85
 		    IPage<TaDrainage> pg = new Page<>(pageNum, pageSize);
94 86
             QueryWrapper<TaDrainage> queryWrapper = new QueryWrapper<>();
@@ -100,6 +92,7 @@ public class TaDrainageController extends BaseController {
100 92
             queryWrapper.eq(null != status,"status",status);
101 93
             queryWrapper.eq(!StringUtils.isEmpty(buildingId),"building_id",buildingId);
102 94
             queryWrapper.eq(null != drainageId,"drainage_id",drainageId);
95
+            queryWrapper.and(taPersonBuildingList.size() > 0, wapper -> wapper.in("building_id",taPersonBuildingList.stream().map(TaPersonBuilding::getBuildingId).collect(Collectors.toList())).or().eq("create_user",getUserId(request)));
103 96
             queryWrapper.like(!StringUtils.isEmpty(name),"name",name);
104 97
             queryWrapper.orderByDesc("create_date");
105 98
 
@@ -141,6 +134,7 @@ public class TaDrainageController extends BaseController {
141 134
             if (DateUtils.dayToLocalDateime(taDrainage.getEndDate()).isAfter(LocalDateTime.now())){
142 135
                 taDrainage.setStatus(CommConstant.STATUS_NORMAL);
143 136
             }
137
+            taDrainage.setCreateUser(getUserId(request));
144 138
             if (iTaDrainageService.save(taDrainage)){
145 139
                 // 根据ORGID查询当前小程序表的miniapp_id
146 140
                 QueryWrapper<TaMiniapp> taMiniappQuery= new QueryWrapper<>();

+ 6
- 0
src/main/java/com/huiju/estateagents/drainage/entity/TaDrainage.java Ver arquivo

@@ -61,6 +61,11 @@ public class TaDrainage implements Serializable {
61 61
      */
62 62
     private Integer enlistNum;
63 63
 
64
+    /**
65
+     * 创建人
66
+     */
67
+    private Integer createUser;
68
+
64 69
     /** 是否投放小程序 */
65 70
     private Boolean isMiniapp ;
66 71
     /** H5活动链接 */
@@ -80,4 +85,5 @@ public class TaDrainage implements Serializable {
80 85
     
81 86
     @TableField(exist = false)
82 87
     private String appSecret;
88
+
83 89
 }

+ 8
- 3
src/main/java/com/huiju/estateagents/entity/ExtendContent.java Ver arquivo

@@ -1,13 +1,13 @@
1 1
 package com.huiju.estateagents.entity;
2 2
 
3 3
 import com.baomidou.mybatisplus.annotation.*;
4
-
5
-import java.time.LocalDateTime;
6
-import java.io.Serializable;
7 4
 import lombok.Data;
8 5
 import lombok.EqualsAndHashCode;
9 6
 import lombok.experimental.Accessors;
10 7
 
8
+import java.io.Serializable;
9
+import java.time.LocalDateTime;
10
+
11 11
 /**
12 12
  * <p>
13 13
  * 辅助内容表 
@@ -99,6 +99,11 @@ public class ExtendContent implements Serializable {
99 99
 
100 100
     private Integer cityId;
101 101
 
102
+    /**
103
+     * 创建人id
104
+     */
105
+    private Integer createUser;
106
+
102 107
     /**
103 108
      * 排序
104 109
      */

+ 15
- 0
src/main/java/com/huiju/estateagents/entity/TaPerson.java Ver arquivo

@@ -312,4 +312,19 @@ public class TaPerson implements Serializable {
312 312
      */
313 313
     @TableField(exist = false)
314 314
     private String sceneAlias;
315
+
316
+    /**
317
+     * 访问内容类型
318
+     */
319
+    private String targetType;
320
+
321
+    /**
322
+     * 访问内容ID
323
+     */
324
+    private String targetId;
325
+
326
+    /**
327
+     * 访问内容名称
328
+     */
329
+    private String targetName;
315 330
 }

+ 10
- 0
src/main/java/com/huiju/estateagents/entity/TaShareCount.java Ver arquivo

@@ -43,11 +43,21 @@ public class TaShareCount implements Serializable {
43 43
      */
44 44
     private String tagertType;
45 45
 
46
+    /**
47
+     * 对象名称
48
+     */
49
+    private String targetName;
50
+
46 51
     /**
47 52
      * 创建时间
48 53
      */
49 54
     private LocalDateTime createDate;
50 55
 
56
+    /**
57
+     * orgId
58
+     */
59
+    private Integer orgId;
60
+
51 61
     @TableField(exist = false)
52 62
     private String shareTitle;
53 63
 

+ 5
- 0
src/main/java/com/huiju/estateagents/entity/TaSharePersonFrom.java Ver arquivo

@@ -56,6 +56,11 @@ public class TaSharePersonFrom implements Serializable {
56 56
      */
57 57
     private String targetId;
58 58
 
59
+    /**
60
+     * 目标名称
61
+     */
62
+    private String targetName;
63
+
59 64
     /**
60 65
      * 创建时间
61 66
      */

+ 117
- 0
src/main/java/com/huiju/estateagents/entity/TsConsultantKpi.java Ver arquivo

@@ -0,0 +1,117 @@
1
+package com.huiju.estateagents.entity;
2
+
3
+import com.baomidou.mybatisplus.annotation.IdType;
4
+import com.baomidou.mybatisplus.annotation.TableField;
5
+import com.baomidou.mybatisplus.annotation.TableId;
6
+import java.io.Serializable;
7
+import lombok.Data;
8
+import lombok.EqualsAndHashCode;
9
+import lombok.experimental.Accessors;
10
+
11
+/**
12
+ * <p>
13
+ * 置业顾问KPI 
14
+ * </p>
15
+ *
16
+ * @author yansen
17
+ * @since 2020-04-14
18
+ */
19
+@Data
20
+@EqualsAndHashCode(callSuper = false)
21
+@Accessors(chain = true)
22
+public class TsConsultantKpi implements Serializable {
23
+
24
+    private static final long serialVersionUID = 1L;
25
+
26
+    /**
27
+     * 序号
28
+     */
29
+    @TableId(value = "serial_no", type = IdType.AUTO)
30
+    private Integer serialNo;
31
+
32
+    /**
33
+     * 统计日期 格式YYYYMMDD
34
+     */
35
+    private String statisDate;
36
+
37
+    /**
38
+     * 公司id
39
+     */
40
+    private Integer orgId;
41
+
42
+    /**
43
+     * 楼盘id
44
+     */
45
+    private String buildingId;
46
+
47
+    /**
48
+     * 楼盘名称
49
+     */
50
+    private String buildingName;
51
+
52
+    /**
53
+     * 置业顾问ID
54
+     */
55
+    private Integer userId;
56
+
57
+    /**
58
+     * 置业顾问名称
59
+     */
60
+    private String userName;
61
+
62
+    /**
63
+     * 置业顾问手机号
64
+     */
65
+    private String phone;
66
+
67
+    /**
68
+     * 新增客户
69
+     */
70
+    private Integer newPersons;
71
+
72
+    /**
73
+     * 分享次数
74
+     */
75
+    private Integer shareNum;
76
+
77
+    /**
78
+     * 分享访问人数
79
+     */
80
+    private Integer visitPersons;
81
+
82
+    /**
83
+     * 分享访问次数
84
+     */
85
+    private Integer visitNum;
86
+
87
+    /**
88
+     * 分享拓客
89
+     */
90
+    private Integer sharePersons;
91
+
92
+    /**
93
+     * 主页访问人数
94
+     */
95
+    private Integer homePagePersons;
96
+
97
+    /**
98
+     * 主页访问次数
99
+     */
100
+    private Integer homePageNums;
101
+
102
+    /**
103
+     * 咨询数
104
+     */
105
+    private Integer chatPersons;
106
+
107
+    /**
108
+     * 点赞数
109
+     */
110
+    private Integer favorNum;
111
+
112
+    /**
113
+     * 客户总计
114
+     */
115
+    @TableField(exist = false)
116
+    private Integer totalPersons;
117
+}

+ 84
- 0
src/main/java/com/huiju/estateagents/excel/ConsultantKPIExport.java Ver arquivo

@@ -0,0 +1,84 @@
1
+package com.huiju.estateagents.excel;
2
+
3
+import com.alibaba.excel.annotation.ExcelProperty;
4
+import lombok.Data;
5
+
6
+@Data
7
+public class ConsultantKPIExport {
8
+
9
+    /**
10
+     * 楼盘名称
11
+     */
12
+    @ExcelProperty(value = "项目", index = 0)
13
+    private String buildingName;
14
+
15
+
16
+    /**
17
+     * 置业顾问名称
18
+     */
19
+    @ExcelProperty(value = "置业顾问名称", index = 1)
20
+    private String userName;
21
+
22
+    /**
23
+     * 置业顾问手机号
24
+     */
25
+    @ExcelProperty(value = "置业顾问电话", index = 2)
26
+    private String phone;
27
+
28
+    @ExcelProperty(value = "客户总计", index = 3)
29
+    private Integer totalPersons;
30
+
31
+    /**
32
+     * 新增客户
33
+     */
34
+    @ExcelProperty(value = "新增客户数", index = 4)
35
+    private Integer newPersons;
36
+
37
+    /**
38
+     * 分享次数
39
+     */
40
+    @ExcelProperty(value = "分享次数", index = 5)
41
+    private Integer shareNum;
42
+
43
+    /**
44
+     * 分享访问人数
45
+     */
46
+    @ExcelProperty(value = "访问人数", index = 6)
47
+    private Integer visitPersons;
48
+
49
+    /**
50
+     * 分享访问次数
51
+     */
52
+    @ExcelProperty(value = "访问次数", index = 7)
53
+    private Integer visitNum;
54
+
55
+    /**
56
+     * 分享拓客
57
+     */
58
+    @ExcelProperty(value = "分享拓客数", index = 8)
59
+    private Integer sharePersons;
60
+
61
+    /**
62
+     * 主页访问人数
63
+     */
64
+    @ExcelProperty(value = "访问主页人数", index = 9)
65
+    private Integer homePagePersons;
66
+
67
+    /**
68
+     * 主页访问次数
69
+     */
70
+    @ExcelProperty(value = "访问主页次数", index = 10)
71
+    private Integer homePageNums;
72
+
73
+    /**
74
+     * 咨询数
75
+     */
76
+    @ExcelProperty(value = "咨询数", index = 11)
77
+    private Integer chatPersons;
78
+
79
+    /**
80
+     * 点赞数
81
+     */
82
+    @ExcelProperty(value = "点赞数", index = 12)
83
+    private Integer favorNum;
84
+}

+ 38
- 0
src/main/java/com/huiju/estateagents/excel/IntentionUser.java Ver arquivo

@@ -0,0 +1,38 @@
1
+package com.huiju.estateagents.excel;
2
+
3
+import com.alibaba.excel.annotation.ExcelProperty;
4
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
5
+import lombok.Data;
6
+
7
+@Data
8
+public class IntentionUser {
9
+
10
+    /**
11
+     * 用户姓名
12
+     */
13
+    @ColumnWidth(15)
14
+    @ExcelProperty(value = "用户姓名", index = 0)
15
+    private String personName;
16
+
17
+    /**
18
+     * 手机号
19
+     */
20
+    @ColumnWidth(15)
21
+    @ExcelProperty(value = "手机号", index = 1)
22
+    private String phone;
23
+
24
+    /**
25
+     * 意向楼盘
26
+     */
27
+    @ColumnWidth(15)
28
+    @ExcelProperty(value = "意向楼盘", index = 2)
29
+    private String buildingName;
30
+
31
+    /**
32
+     * 意向值
33
+     */
34
+    @ColumnWidth(15)
35
+    @ExcelProperty(value = "意向值", index = 3)
36
+    private Integer intention;
37
+
38
+}

+ 3
- 0
src/main/java/com/huiju/estateagents/mapper/TaPersonIntentionRecordMapper.java Ver arquivo

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 5
 import com.baomidou.mybatisplus.core.metadata.IPage;
6 6
 import com.huiju.estateagents.entity.TaPersonBuilding;
7 7
 import com.huiju.estateagents.entity.TaPersonIntentionRecord;
8
+import com.huiju.estateagents.excel.IntentionUser;
8 9
 import org.apache.ibatis.annotations.Mapper;
9 10
 import org.apache.ibatis.annotations.Param;
10 11
 
@@ -35,4 +36,6 @@ public interface TaPersonIntentionRecordMapper extends BaseMapper<TaPersonIntent
35 36
                                                    @Param("orgId") Integer orgId,
36 37
                                                    @Param("buildingId") String buildingId,
37 38
                                                    @Param("personBuildingList") List<TaPersonBuilding> personBuildingList);
39
+
40
+    List<IntentionUser> selectExportIntentionUser(@Param("orgId") Integer orgId,@Param("buildingId") String buildingId,@Param("personBuildingList") List<TaPersonBuilding> taPersonBuildingListByUserId);
38 41
 }

+ 9
- 4
src/main/java/com/huiju/estateagents/mapper/TaPersonMapper.java Ver arquivo

@@ -1,17 +1,15 @@
1 1
 package com.huiju.estateagents.mapper;
2 2
 
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
3 4
 import com.baomidou.mybatisplus.core.metadata.IPage;
4 5
 import com.huiju.estateagents.entity.TaChannel;
5 6
 import com.huiju.estateagents.entity.TaPerson;
6
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
7 7
 import com.huiju.estateagents.entity.TaPersonPositon;
8 8
 import com.huiju.estateagents.po.PersonPO;
9
-import io.swagger.models.auth.In;
10 9
 import org.apache.ibatis.annotations.*;
11 10
 
12
-import java.io.Serializable;
13 11
 import java.time.LocalDate;
14
-import java.util.Date;
12
+import java.time.LocalDateTime;
15 13
 import java.util.List;
16 14
 import java.util.Map;
17 15
 
@@ -249,4 +247,11 @@ public interface TaPersonMapper extends BaseMapper<TaPerson> {
249 247
      * @return
250 248
      */
251 249
     Integer savePersonPosition(TaPersonPositon record);
250
+
251
+    /**
252
+     * 今日新增人数
253
+     * @param orgId
254
+     * @return
255
+     */
256
+    Integer selectTodayRecentlyCount(@Param("orgId") Integer orgId, @Param("nowDate") LocalDateTime nowDate);
252 257
 }

+ 7
- 0
src/main/java/com/huiju/estateagents/mapper/TaRecommendCustomerMapper.java Ver arquivo

@@ -191,4 +191,11 @@ public interface TaRecommendCustomerMapper extends BaseMapper<TaRecommendCustome
191 191
     List<PersonIntention> getCustomerIntentions(@Param("personId")String personId,@Param("personBuildingList") List<TaPersonBuilding> personBuildingList);
192 192
 
193 193
     IPage<TaRecommendCustomer>getCustomersIRecommended(IPage<TaRecommendCustomer> page,@Param("customerId")String customerId,@Param("status")Integer status,@Param("orgId") Integer orgId,@Param("personBuildingList") List<TaPersonBuilding> personBuildingList);
194
+
195
+    IPage<TaRecommendCustomer> getCustomerListOfConsultant(IPage<TaRecommendCustomer> page,
196
+                                                           @Param("orgId") Integer orgId,
197
+                                                           @Param("userId") String userId,
198
+                                                           @Param("buildingId") String buildingId,
199
+                                                           @Param("startDate") LocalDateTime startDate,
200
+                                                           @Param("endDate") LocalDateTime endDate);
194 201
 }

+ 197
- 0
src/main/java/com/huiju/estateagents/mapper/TsConsultantKpiMapper.java Ver arquivo

@@ -0,0 +1,197 @@
1
+package com.huiju.estateagents.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.huiju.estateagents.entity.TaPerson;
5
+import com.huiju.estateagents.entity.TaShareCount;
6
+import com.huiju.estateagents.entity.TsConsultantKpi;
7
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
8
+import com.huiju.estateagents.excel.ConsultantKPIExport;
9
+import org.apache.ibatis.annotations.Mapper;
10
+import org.apache.ibatis.annotations.Param;
11
+
12
+import java.time.LocalDateTime;
13
+import java.util.List;
14
+
15
+/**
16
+ * <p>
17
+ * 置业顾问KPI  Mapper 接口
18
+ * </p>
19
+ *
20
+ * @author yansen
21
+ * @since 2020-04-14
22
+ */
23
+@Mapper
24
+public interface TsConsultantKpiMapper extends BaseMapper<TsConsultantKpi> {
25
+
26
+    IPage<TsConsultantKpi> stsKPIDaily(IPage<TsConsultantKpi> page,
27
+                                       @Param("orgId") Integer orgId,
28
+                                       @Param("buildingId") String buildingId,
29
+                                       @Param("startDate") String startDate,
30
+                                       @Param("endDate") String endDate,
31
+                                       @Param("asc") String asc,
32
+                                       @Param("desc") String desc);
33
+
34
+    TsConsultantKpi stsKPITotalByOrg(@Param("orgId") Integer orgId, @Param("buildingId") String buildingId, @Param("startDate") String startDate, @Param("endDate") String endDate);
35
+
36
+    List<ConsultantKPIExport> stsKPIDailyExport(@Param("orgId") Integer orgId, @Param("buildingId") String buildingId, @Param("startDate") String startDate, @Param("endDate") String endDate);
37
+
38
+    /**
39
+     * 统计当前时间段内的, 已经固化的置业数据的所有客户
40
+     * @param orgId
41
+     * @param buildingId
42
+     * @param startDate
43
+     * @param endDate
44
+     * @return
45
+     */
46
+    Integer stsAllCustomersByOrg(@Param("orgId") Integer orgId, @Param("buildingId") String buildingId, @Param("startDate") String startDate, @Param("endDate") String endDate);
47
+
48
+
49
+    /**
50
+     * 获取置业分享拓客
51
+     * buildingId 暂时没有用到
52
+     * @param page
53
+     * @param orgId
54
+     * @param userId
55
+     * @param buildingId
56
+     * @param startDate
57
+     * @param endDate
58
+     * @return
59
+     */
60
+    IPage<TaPerson> getConsultantShareCustomers(IPage<TaPerson> page,
61
+                                              @Param("orgId") Integer orgId,
62
+                                              @Param("userId") String userId,
63
+                                              @Param("buildingId") String buildingId,
64
+                                              @Param("startDate") LocalDateTime startDate,
65
+                                              @Param("endDate") LocalDateTime endDate);
66
+
67
+    /**
68
+     * 置业卡片访问人数明细
69
+     * @param page
70
+     * @param orgId
71
+     * @param userId
72
+     * @param buildingId
73
+     * @param startDate
74
+     * @param endDate
75
+     * @return
76
+     */
77
+    IPage<TaPerson> getConsultantHomePagePersons(IPage<TaPerson> page,
78
+                                                 @Param("orgId") Integer orgId,
79
+                                                 @Param("userId") String userId,
80
+                                                 @Param("buildingId") String buildingId,
81
+                                                 @Param("startDate") LocalDateTime startDate,
82
+                                                 @Param("endDate") LocalDateTime endDate);
83
+
84
+    /**
85
+     * 置业卡片访问次数明细
86
+     * @param page
87
+     * @param orgId
88
+     * @param userId
89
+     * @param buildingId
90
+     * @param startDate
91
+     * @param endDate
92
+     * @return
93
+     */
94
+    IPage<TaPerson> getConsultantHomePageTimes(IPage<TaPerson> page,
95
+                                               @Param("orgId") Integer orgId,
96
+                                               @Param("userId") String userId,
97
+                                               @Param("buildingId") String buildingId,
98
+                                               @Param("startDate") LocalDateTime startDate,
99
+                                               @Param("endDate") LocalDateTime endDate,
100
+                                               @Param("personId") String personId);
101
+
102
+    /**
103
+     * 咨询置业人员
104
+     * @param page
105
+     * @param orgId
106
+     * @param userId
107
+     * @param buildingId
108
+     * @param startDate
109
+     * @param endDate
110
+     * @return
111
+     */
112
+    IPage<TaPerson> getConsultantChatPersons(IPage<TaPerson> page,
113
+                                             @Param("orgId") Integer orgId,
114
+                                             @Param("userId") String userId,
115
+                                             @Param("buildingId") String buildingId,
116
+                                             @Param("startDate") LocalDateTime startDate,
117
+                                             @Param("endDate") LocalDateTime endDate);
118
+
119
+    /**
120
+     * 点赞详情
121
+     * @param page
122
+     * @param orgId
123
+     * @param userId
124
+     * @param buildingId
125
+     * @param startDate
126
+     * @param endDate
127
+     * @return
128
+     */
129
+    IPage<TaPerson> getConsultantFavor(IPage<TaPerson> page,
130
+                                       @Param("orgId") Integer orgId,
131
+                                       @Param("userId") String userId,
132
+                                       @Param("buildingId") String buildingId,
133
+                                       @Param("startDate") LocalDateTime startDate,
134
+                                       @Param("endDate") LocalDateTime endDate);
135
+
136
+
137
+    /**
138
+     * 置业分享记录
139
+     * @param page
140
+     * @param orgId
141
+     * @param userId
142
+     * @param buildingId
143
+     * @param startDate
144
+     * @param endDate
145
+     * @param targetType
146
+     * @param targetName
147
+     * @return
148
+     */
149
+    IPage<TaPerson> getConsultantShareTargets(IPage<TaPerson> page,
150
+                                                  @Param("orgId") Integer orgId,
151
+                                                  @Param("userId") String userId,
152
+                                                  @Param("buildingId") String buildingId,
153
+                                                  @Param("startDate") LocalDateTime startDate,
154
+                                                  @Param("endDate") LocalDateTime endDate,
155
+                                                  @Param("targetType") String targetType,
156
+                                                  @Param("targetName") String targetName);
157
+
158
+    /**
159
+     * 置业分享访问人
160
+     * @param page
161
+     * @param orgId
162
+     * @param userId
163
+     * @param buildingId
164
+     * @param startDate
165
+     * @param endDate
166
+     * @return
167
+     */
168
+    IPage<TaPerson> getConsultantSharePersons(IPage<TaPerson> page,
169
+                                              @Param("orgId") Integer orgId,
170
+                                              @Param("userId") String userId,
171
+                                              @Param("buildingId") String buildingId,
172
+                                              @Param("startDate") LocalDateTime startDate,
173
+                                              @Param("endDate") LocalDateTime endDate);
174
+
175
+    /**
176
+     * 置业分享访问明细
177
+     * @param page
178
+     * @param orgId
179
+     * @param userId
180
+     * @param buildingId
181
+     * @param startDate
182
+     * @param endDate
183
+     * @param targetType
184
+     * @param targetName
185
+     * @return
186
+     */
187
+    IPage<TaPerson> getConsultantShareTimes(IPage<TaPerson> page,
188
+                                            @Param("orgId") Integer orgId,
189
+                                            @Param("userId") String userId,
190
+                                            @Param("buildingId") String buildingId,
191
+                                            @Param("startDate") LocalDateTime startDate,
192
+                                            @Param("endDate") LocalDateTime endDate,
193
+                                            @Param("targetType") String targetType,
194
+                                            @Param("targetName") String targetName,
195
+                                            @Param("userName") String userName,
196
+                                            @Param("personId") String personId);
197
+}

+ 19
- 0
src/main/java/com/huiju/estateagents/service/IStatisticalService.java Ver arquivo

@@ -2,6 +2,7 @@ package com.huiju.estateagents.service;
2 2
 
3 3
 import com.huiju.estateagents.base.ResponseBean;
4 4
 import com.huiju.estateagents.entity.TaPersonBuilding;
5
+import com.huiju.estateagents.excel.IntentionUser;
5 6
 import com.huiju.estateagents.excel.StatsBuilding;
6 7
 import com.huiju.estateagents.excel.StatsTimeBuilding;
7 8
 
@@ -196,4 +197,22 @@ public interface IStatisticalService {
196 197
      * @return
197 198
      */
198 199
     List<StatsTimeBuilding> getExportTimeTableList(Integer orgId, LocalDate startDate, LocalDate endDate, String buildingId, List<TaPersonBuilding> taPersonBuildingListByUserId);
200
+
201
+    /**
202
+     * 意向客户导出
203
+     * @param orgId
204
+     * @param buildingId
205
+     * @param taPersonBuildingListByUserId
206
+     * @return
207
+     */
208
+    List<IntentionUser> getExportIntentionUser(Integer orgId, String buildingId, List<TaPersonBuilding> taPersonBuildingListByUserId);
209
+
210
+    /**
211
+     * 新调整--新增用户
212
+     * @param orgId
213
+     * @param startDate
214
+     * @param endDate
215
+     * @return
216
+     */
217
+    ResponseBean changeNewsUserCount(Integer orgId, LocalDate startDate, LocalDate endDate);
199 218
 }

+ 44
- 0
src/main/java/com/huiju/estateagents/service/ITsConsultantKpiService.java Ver arquivo

@@ -0,0 +1,44 @@
1
+package com.huiju.estateagents.service;
2
+
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.huiju.estateagents.entity.*;
5
+import com.baomidou.mybatisplus.extension.service.IService;
6
+import com.huiju.estateagents.excel.ConsultantKPIExport;
7
+
8
+import java.time.LocalDateTime;
9
+import java.util.List;
10
+
11
+/**
12
+ * <p>
13
+ * 置业顾问KPI  服务类
14
+ * </p>
15
+ *
16
+ * @author yansen
17
+ * @since 2020-04-14
18
+ */
19
+public interface ITsConsultantKpiService extends IService<TsConsultantKpi> {
20
+
21
+    IPage<TsConsultantKpi> stsKPIDaily(Integer pageNum, Integer pageSize, Integer orgId, String buildingId, String startDate, String endDate, String asc, String desc);
22
+
23
+    TsConsultantKpi stsKPITotalByOrg(Integer orgId, String buildingId, String startDate, String endDate);
24
+
25
+    List<ConsultantKPIExport> stsKPIDailyExport(Integer orgId, String buildingId, String startDate, String endDate);
26
+
27
+    IPage<TaRecommendCustomer> getCustomerListOfConsultant(IPage<TaRecommendCustomer> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate);
28
+
29
+    IPage<TaPerson> getConsultantShareCustomers(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate);
30
+
31
+    IPage<TaPerson> getConsultantHomePagePersons(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate);
32
+
33
+    IPage<TaPerson> getConsultantHomePageTimes(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate, String personId);
34
+
35
+    IPage<TaPerson> getConsultantChatPersons(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate);
36
+
37
+    IPage<TaPerson> getConsultantFavor(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate);
38
+
39
+    IPage<TaPerson> getConsultantShareTargets(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate, String targetType, String targetName);
40
+
41
+    IPage<TaPerson> getConsultantSharePersons(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate);
42
+
43
+    IPage<TaPerson> getConsultantShareTimes(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate, String targetType, String targetName, String userName, String personId);
44
+}

+ 31
- 2
src/main/java/com/huiju/estateagents/service/impl/StatisticalServiceImpl.java Ver arquivo

@@ -8,6 +8,7 @@ import com.huiju.estateagents.common.CommConstant;
8 8
 import com.huiju.estateagents.entity.TaPersonBuilding;
9 9
 import com.huiju.estateagents.entity.TaPersonVisitRecord;
10 10
 import com.huiju.estateagents.entity.TdWxDict;
11
+import com.huiju.estateagents.excel.IntentionUser;
11 12
 import com.huiju.estateagents.excel.StatsBuilding;
12 13
 import com.huiju.estateagents.excel.StatsTimeBuilding;
13 14
 import com.huiju.estateagents.mapper.*;
@@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
20 21
 import org.springframework.stereotype.Service;
21 22
 
22 23
 import java.time.LocalDate;
24
+import java.time.LocalDateTime;
23 25
 import java.time.format.DateTimeFormatter;
24 26
 import java.time.temporal.ChronoUnit;
25 27
 import java.util.ArrayList;
@@ -74,8 +76,8 @@ public class StatisticalServiceImpl implements IStatisticalService {
74 76
         // 注册数
75 77
         Integer selectRegisteredCount = taPersonMapper.selectRegisteredCount(orgId);
76 78
 
77
-        // 最近七天
78
-        Integer selectRecentlyCount = taPersonMapper.selectRecentlyCount(orgId, CommConstant.PERSON_REALTY_CONSULTANT, null, null);
79
+        // 最近七天--> 调整为今日新增
80
+        Integer selectRecentlyCount = taPersonMapper.selectTodayRecentlyCount(orgId, LocalDateTime.now());
79 81
 
80 82
         // -------  用户来源 end ------------
81 83
 
@@ -550,6 +552,33 @@ public class StatisticalServiceImpl implements IStatisticalService {
550 552
         return taBuildingMapper.getStatsTimeBarList(orgId,startDate,endDate,buildingId);
551 553
     }
552 554
 
555
+    /**
556
+     * 意向客户导出
557
+     *
558
+     * @param orgId
559
+     * @param buildingId
560
+     * @param taPersonBuildingListByUserId
561
+     * @return
562
+     */
563
+    @Override
564
+    public List<IntentionUser> getExportIntentionUser(Integer orgId, String buildingId, List<TaPersonBuilding> taPersonBuildingListByUserId) {
565
+        return taPersonIntentionRecordMapper.selectExportIntentionUser(orgId, buildingId, taPersonBuildingListByUserId);
566
+    }
567
+
568
+    /**
569
+     * 新调整--新增用户
570
+     *
571
+     * @param orgId
572
+     * @param startDate
573
+     * @param endDate
574
+     * @return
575
+     */
576
+    @Override
577
+    public ResponseBean changeNewsUserCount(Integer orgId, LocalDate startDate, LocalDate endDate) {
578
+        List<TsPersonFromStatistic> tableList = tsPersonFromStatisticMapper.selectNewLinePersonFromGroupByData(orgId, startDate, endDate);
579
+        return ResponseBean.success(tableList);
580
+    }
581
+
553 582
     /**
554 583
      * 项目公客排行折线图获取
555 584
      * @param orgId

+ 1
- 0
src/main/java/com/huiju/estateagents/service/impl/TaShareServiceImpl.java Ver arquivo

@@ -79,6 +79,7 @@ public class TaShareServiceImpl extends ServiceImpl<TaShareMapper, TaShare> impl
79 79
         taShareCount.setCreateDate(LocalDateTime.now());
80 80
         taShareCount.setPersonId(taPerson.getPersonId());
81 81
         taShareCount.setTagertType(typeOf);
82
+        taShareCount.setOrgId(taPerson.getOrgId());
82 83
         int countRow = taShareCountMapper.insert(taShareCount);
83 84
         if (countRow < 1) {
84 85
             return ResponseBean.error("分享增加失败", ResponseBean.ERROR_UNAVAILABLE);

+ 111
- 0
src/main/java/com/huiju/estateagents/service/impl/TsConsultantKpiServiceImpl.java Ver arquivo

@@ -0,0 +1,111 @@
1
+package com.huiju.estateagents.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.metadata.IPage;
4
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.huiju.estateagents.common.StringUtils;
6
+import com.huiju.estateagents.entity.*;
7
+import com.huiju.estateagents.excel.ConsultantKPIExport;
8
+import com.huiju.estateagents.mapper.TaRecommendCustomerMapper;
9
+import com.huiju.estateagents.mapper.TsConsultantKpiMapper;
10
+import com.huiju.estateagents.service.ITsConsultantKpiService;
11
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
12
+import org.springframework.beans.factory.annotation.Autowired;
13
+import org.springframework.stereotype.Service;
14
+
15
+import java.time.LocalDateTime;
16
+import java.util.List;
17
+
18
+/**
19
+ * <p>
20
+ * 置业顾问KPI  服务实现类
21
+ * </p>
22
+ *
23
+ * @author yansen
24
+ * @since 2020-04-14
25
+ */
26
+@Service
27
+public class TsConsultantKpiServiceImpl extends ServiceImpl<TsConsultantKpiMapper, TsConsultantKpi> implements ITsConsultantKpiService {
28
+    @Autowired
29
+    TsConsultantKpiMapper tsConsultantKpiMapper;
30
+
31
+    @Autowired
32
+    TaRecommendCustomerMapper taRecommendCustomerMapper;
33
+
34
+    @Override
35
+    public IPage<TsConsultantKpi> stsKPIDaily(Integer pageNum, Integer pageSize, Integer orgId, String buildingId, String startDate, String endDate, String asc, String desc) {
36
+        if (StringUtils.isEmpty(asc) && StringUtils.isEmpty(desc)) {
37
+            desc = "new_persons";
38
+        }
39
+
40
+        IPage<TsConsultantKpi> page = new Page<>(pageNum, pageSize);
41
+        return tsConsultantKpiMapper.stsKPIDaily(page, orgId, buildingId, startDate, endDate, asc, desc);
42
+    }
43
+
44
+    @Override
45
+    public TsConsultantKpi stsKPITotalByOrg(Integer orgId, String buildingId, String startDate, String endDate) {
46
+        // 合计数据, 但是不包含 客户总计 列
47
+        TsConsultantKpi result = tsConsultantKpiMapper.stsKPITotalByOrg(orgId, buildingId, startDate, endDate);
48
+
49
+        // 统计当前时间段内的已经固化的置业的客户
50
+        Integer totalPersons = tsConsultantKpiMapper.stsAllCustomersByOrg(orgId, buildingId, startDate, endDate);
51
+        result.setTotalPersons(totalPersons);
52
+
53
+        return result;
54
+    }
55
+
56
+    @Override
57
+    public List<ConsultantKPIExport> stsKPIDailyExport(Integer orgId, String buildingId, String startDate, String endDate) {
58
+        return tsConsultantKpiMapper.stsKPIDailyExport(orgId, buildingId, startDate, endDate);
59
+    }
60
+
61
+    @Override
62
+    public IPage<TaRecommendCustomer> getCustomerListOfConsultant(IPage<TaRecommendCustomer> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate) {
63
+        return taRecommendCustomerMapper.getCustomerListOfConsultant(page, orgId, userId, buildingId, startDate, endDate);
64
+    }
65
+
66
+    @Override
67
+    public IPage<TaPerson> getConsultantShareCustomers(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate) {
68
+        // buildingId 在表里不一定有数据, 实际执行 SQL 中没有这个条件
69
+        return tsConsultantKpiMapper.getConsultantShareCustomers(page, orgId, userId, buildingId, startDate, endDate);
70
+    }
71
+
72
+    @Override
73
+    public IPage<TaPerson> getConsultantHomePagePersons(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate) {
74
+        return tsConsultantKpiMapper.getConsultantHomePagePersons(page, orgId, userId, buildingId, startDate, endDate);
75
+    }
76
+
77
+    @Override
78
+    public IPage<TaPerson> getConsultantHomePageTimes(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate, String personId) {
79
+        return tsConsultantKpiMapper.getConsultantHomePageTimes(page, orgId, userId, buildingId, startDate, endDate, personId);
80
+    }
81
+
82
+    @Override
83
+    public IPage<TaPerson> getConsultantChatPersons(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate) {
84
+        // buildingId 在聊天表不存在, 因此没有用到这个字段
85
+        return tsConsultantKpiMapper.getConsultantChatPersons(page, orgId, userId, buildingId, startDate, endDate);
86
+    }
87
+
88
+    @Override
89
+    public IPage<TaPerson> getConsultantFavor(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate) {
90
+        // buildingId 在点赞表不存在, 因此没有用到这个字段
91
+        return tsConsultantKpiMapper.getConsultantFavor(page, orgId, userId, buildingId, startDate, endDate);
92
+    }
93
+
94
+    @Override
95
+    public IPage<TaPerson> getConsultantShareTargets(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate, String targetType, String targetName) {
96
+        return tsConsultantKpiMapper.getConsultantShareTargets(page, orgId, userId, buildingId, startDate, endDate, targetType, targetName);
97
+    }
98
+
99
+    @Override
100
+    public IPage<TaPerson> getConsultantSharePersons(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate) {
101
+        // buildingId 在表里不一定有数据, 实际执行 SQL 中没有这个条件
102
+        return tsConsultantKpiMapper.getConsultantSharePersons(page, orgId, userId, buildingId, startDate, endDate);
103
+    }
104
+
105
+    @Override
106
+    public IPage<TaPerson> getConsultantShareTimes(IPage<TaPerson> page, Integer orgId, String userId, String buildingId, LocalDateTime startDate, LocalDateTime endDate, String targetType, String targetName, String userName, String personId) {
107
+        // buildingId 在表里不一定有数据, 实际执行 SQL 中没有这个条件
108
+        return tsConsultantKpiMapper.getConsultantShareTimes(page, orgId, userId, buildingId, startDate, endDate, targetType, targetName, userName, personId);
109
+    }
110
+
111
+}

+ 2
- 0
src/main/java/com/huiju/estateagents/statistic/mapper/TsPersonFromStatisticMapper.java Ver arquivo

@@ -28,4 +28,6 @@ public interface TsPersonFromStatisticMapper extends BaseMapper<TsPersonFromStat
28 28
     List<TsPersonFromStatistic> selectPersonFromGroupByData(@Param("orgId") Integer orgId, @Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
29 29
 
30 30
     void deleteByData();
31
+
32
+    List<TsPersonFromStatistic> selectNewLinePersonFromGroupByData(@Param("orgId") Integer orgId,@Param("startDate") LocalDate startDate,@Param("endDate") LocalDate endDate);
31 33
 }

+ 1
- 1
src/main/resources/application-blue.yml Ver arquivo

@@ -6,7 +6,7 @@ spring:
6 6
   datasource:
7 7
     username: root
8 8
     password: LUfZGvh7j1^qA*2c
9
-    url: jdbc:mysql://123.57.65.31:3306/estateagents_test?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
9
+    url: jdbc:mysql://123.57.65.31:3306/estateagents_20200417?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull
10 10
     driver-class-name: com.mysql.cj.jdbc.Driver
11 11
     initial-size: 10 # 初始化连接数
12 12
     max-active: 20 # 最大连接数

+ 28
- 0
src/main/resources/mapper/TaPersonIntentionRecordMapper.xml Ver arquivo

@@ -42,4 +42,32 @@
42 42
             tpir.person_id, tpir.building_id
43 43
         ORDER BY SUM(tpir.intention) DESC
44 44
     </select>
45
+    <select id="selectExportIntentionUser" resultType="com.huiju.estateagents.excel.IntentionUser">
46
+        SELECT
47
+        tpir.person_name as  person_name,
48
+        tp.phone as phone,
49
+        tpir.building_name as building_name,
50
+        SUM(tpir.intention) as intention
51
+        FROM
52
+        ta_person_intention_record tpir
53
+        LEFT JOIN ta_person tp on tpir.person_id = tp.person_id
54
+        <trim prefix="where" prefixOverrides="and | or">
55
+            <if test="buildingId != null and buildingId != ''">
56
+                tpir.building_id = #{buildingId}
57
+            </if>
58
+            <if test="orgId != null">
59
+                AND tpir.org_id = #{orgId}
60
+                AND tp.org_id = #{orgId}
61
+            </if>
62
+            <if test="personBuildingList != null and personBuildingList.size > 0">
63
+                AND tpir.building_id in
64
+                <foreach collection="personBuildingList" item="personBuilding" open="(" close=")" separator=",">
65
+                    #{personBuilding.buildingId}
66
+                </foreach>
67
+            </if>
68
+        </trim>
69
+        GROUP BY
70
+        tpir.person_id, tpir.building_id
71
+        ORDER BY SUM(tpir.intention) DESC
72
+    </select>
45 73
 </mapper>

+ 9
- 0
src/main/resources/mapper/TaPersonMapper.xml Ver arquivo

@@ -605,6 +605,15 @@ FROM
605 605
             </if>
606 606
                 GROUP BY t.person_id) d
607 607
     </select>
608
+    <select id="selectTodayRecentlyCount" resultType="java.lang.Integer">
609
+        SELECT
610
+            COUNT(1) as activity_count
611
+        FROM
612
+        ta_person tp
613
+        where tp.org_id = #{orgId} AND
614
+        tp.person_type IN ('customer','drift','estate agent')
615
+        AND DATE_FORMAT(tp.create_date,'%Y-%m-%d') = DATE_FORMAT(#{nowDate},'%Y-%m-%d')
616
+    </select>
608 617
 
609 618
     <insert id="savePersonPosition" parameterType="com.huiju.estateagents.entity.TaPersonPositon">
610 619
         insert into ta_person_position

+ 17
- 0
src/main/resources/mapper/TaRecommendCustomerMapper.xml Ver arquivo

@@ -823,4 +823,21 @@ FROM
823 823
         </if>
824 824
     </select>
825 825
 
826
+    <select id="getCustomerListOfConsultant" resultType="com.huiju.estateagents.entity.TaRecommendCustomer">
827
+        select s.*, t.avatarurl
828
+        from ta_recommend_customer s
829
+        left join ta_person t on t.person_id = s.person_id
830
+        where s.org_id = #{orgId}
831
+        and s.realty_consultant = #{userId}
832
+        <if test="startDate != null">
833
+            and s.create_date BETWEEN #{startDate} and #{endDate}
834
+        </if>
835
+        <if test="buildingId != null and buildingId !=''">
836
+        and s.building_id = #{buildingId}
837
+        </if>
838
+        and s.status &gt; 0
839
+        order by s.report_date desc
840
+    </select>
841
+
842
+
826 843
 </mapper>

+ 356
- 0
src/main/resources/mapper/TsConsultantKpiMapper.xml Ver arquivo

@@ -0,0 +1,356 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3
+<mapper namespace="com.huiju.estateagents.mapper.TsConsultantKpiMapper">
4
+
5
+    <!-- 按照项目, 置业分组统计, 注意查询与分组条件, 必须与下面的汇总,导出一致 -->
6
+    <select id="stsKPIDaily" resultType="com.huiju.estateagents.entity.TsConsultantKpi">
7
+        SELECT * FROM (
8
+            SELECT
9
+                1 AS serial_no,
10
+                '2020' AS statis_date,
11
+                t.org_id,
12
+                t.building_id,
13
+                t.building_name,
14
+                t.user_id,
15
+                t.user_name,
16
+                t.phone,
17
+                IFNULL(sum( t.new_persons ),0) AS new_persons,
18
+                IFNULL(sum( t.share_num ),0) AS share_num,
19
+                IFNULL(sum( t.visit_persons ),0) AS visit_persons,
20
+                IFNULL(sum( t.visit_num ),0) AS visit_num,
21
+                IFNULL(sum( t.share_persons ),0) AS share_persons,
22
+                IFNULL(sum( t.home_page_persons ),0) AS home_page_persons,
23
+                IFNULL(sum( t.home_page_nums ),0) AS home_page_nums,
24
+                IFNULL(sum( t.chat_persons ),0) AS chat_persons,
25
+                IFNULL(sum( t.favor_num ),0) AS favor_num,
26
+                (select count(DISTINCT s.customer_id) from ta_recommend_customer s
27
+                 where s.org_id = t.org_id and (s.realty_consultant = t.user_id or s.realty_consultant = m.person_id) and (s.building_id = t.building_id or IFNULL(t.building_id, '') = '') and s.status > 0) as total_persons
28
+            FROM
29
+                ts_consultant_kpi t
30
+            LEFT JOIN ta_person m on m.org_id = #{orgId} and m.user_id = t.user_id
31
+            WHERE
32
+                t.org_id = #{orgId}
33
+                AND t.statis_date BETWEEN #{startDate} AND #{endDate}
34
+            <if test="buildingId != null and buildingId != ''">
35
+                AND t.building_id = #{buildingId}
36
+            </if>
37
+            GROUP BY
38
+                t.user_id,
39
+                t.building_id
40
+        ) a
41
+
42
+        <if test="asc != null and asc != ''">
43
+            ORDER BY ${asc} asc
44
+        </if>
45
+        <if test="desc != null and desc != ''">
46
+            ORDER BY ${desc} desc
47
+        </if>
48
+    </select>
49
+
50
+    <!-- 按照小程序分组统计, 注意查询与分组条件, 必须与之前的汇总,导出一致 -->
51
+    <select id="stsKPITotalByOrg" resultType="com.huiju.estateagents.entity.TsConsultantKpi">
52
+        SELECT
53
+            1 AS serial_no,
54
+            '2020' AS statis_date,
55
+            t.org_id,
56
+            '' as building_id,
57
+            '-' as building_name,
58
+            0 as user_id,
59
+            '-' as user_name,
60
+            IFNULL(sum( t.new_persons ),0) AS new_persons,
61
+            IFNULL(sum( t.share_num ),0) AS share_num,
62
+            IFNULL(sum( t.visit_persons ),0) AS visit_persons,
63
+            IFNULL(sum( t.visit_num ),0) AS visit_num,
64
+            IFNULL(sum( t.share_persons ),0) AS share_persons,
65
+            IFNULL(sum( t.home_page_persons ),0) AS home_page_persons,
66
+            IFNULL(sum( t.home_page_nums ),0) AS home_page_nums,
67
+            IFNULL(sum( t.chat_persons ),0) AS chat_persons,
68
+            IFNULL(sum( t.favor_num ),0) AS favor_num,
69
+
70
+            <!-- 这一列单独统计 -->
71
+            0 as total_persons
72
+        FROM
73
+            ts_consultant_kpi t
74
+        WHERE
75
+            t.org_id = #{orgId}
76
+            AND t.statis_date BETWEEN #{startDate} AND #{endDate}
77
+        <if test="buildingId != null and buildingId != ''">
78
+            AND t.building_id = #{buildingId}
79
+        </if>
80
+    </select>
81
+
82
+    <!-- 导出 -->
83
+    <select id="stsKPIDailyExport" resultType="com.huiju.estateagents.excel.ConsultantKPIExport">
84
+        SELECT
85
+            1 AS serial_no,
86
+            '2020' AS statis_date,
87
+            t.org_id,
88
+            t.building_id,
89
+            t.building_name,
90
+            t.user_id,
91
+            t.user_name,
92
+            t.phone,
93
+            IFNULL(sum( t.new_persons ),0) AS new_persons,
94
+            IFNULL(sum( t.share_num ),0) AS share_num,
95
+            IFNULL(sum( t.visit_persons ),0) AS visit_persons,
96
+            IFNULL(sum( t.visit_num ),0) AS visit_num,
97
+            IFNULL(sum( t.share_persons ),0) AS share_persons,
98
+            IFNULL(sum( t.home_page_persons ),0) AS home_page_persons,
99
+            IFNULL(sum( t.home_page_nums ),0) AS home_page_nums,
100
+            IFNULL(sum( t.chat_persons ),0) AS chat_persons,
101
+            IFNULL(sum( t.favor_num ),0) AS favor_num,
102
+            (select count(DISTINCT s.customer_id) from ta_recommend_customer s
103
+             where s.org_id = t.org_id and (s.realty_consultant = t.user_id or s.realty_consultant = m.person_id) and (s.building_id = t.building_id or IFNULL(t.building_id, '') = '') and s.status > 0) as total_persons
104
+        FROM
105
+            ts_consultant_kpi t
106
+        LEFT JOIN ta_person m on m.org_id = #{orgId} and m.user_id = t.user_id
107
+        WHERE
108
+            t.org_id = #{orgId}
109
+        AND t.statis_date BETWEEN #{startDate} AND #{endDate}
110
+        <if test="buildingId != null and buildingId != ''">
111
+            AND t.building_id = #{buildingId}
112
+        </if>
113
+        GROUP BY
114
+            t.user_id,
115
+            t.building_id
116
+        ORDER BY sum( new_persons ) desc
117
+    </select>
118
+
119
+    <select id="stsAllCustomersByOrg" resultType="java.lang.Integer">
120
+        SELECT
121
+            count(DISTINCT p.customer_id)
122
+        FROM
123
+            ta_recommend_customer p
124
+        INNER JOIN ta_person s ON s.org_id = p.org_id
125
+            AND ( p.realty_consultant = s.user_id OR p.realty_consultant = s.person_id )
126
+        INNER JOIN ts_consultant_kpi t ON t.org_id = s.org_id
127
+            AND t.user_id = s.user_id
128
+            AND ( t.building_id = p.building_id OR IFNULL( t.building_id, '' ) = '' )
129
+        WHERE
130
+            p.org_id = #{orgId}
131
+            AND p.`status` > 0
132
+            AND t.statis_date BETWEEN #{startDate} AND #{endDate}
133
+        <if test="buildingId != null and buildingId != ''">
134
+            AND t.building_id = #{buildingId}
135
+        </if>
136
+    </select>
137
+
138
+    <select id="getConsultantShareCustomers" resultType="com.huiju.estateagents.entity.TaPerson">
139
+        SELECT
140
+        t.*
141
+        FROM ta_share_person_from e
142
+        INNER JOIN ta_person t ON t.person_id = e.person_id
143
+        WHERE e.org_id = #{orgId}
144
+        AND e.share_person = #{userId}
145
+        AND e.create_date BETWEEN #{startDate} and #{endDate}
146
+        <!-- building_id 字段数据不全
147
+        <if test="buildingId != null and buildingId !=''">
148
+            AND e.building_id = #{buildingId}
149
+        </if>
150
+        -->
151
+        AND e.is_first_time = 1
152
+
153
+        AND t.phone is not null
154
+
155
+<!--        为了与存储过程一致 -->
156
+<!--        AND t.`status` = 1-->
157
+        ORDER BY e.create_date DESC
158
+    </select>
159
+
160
+    <select id="getConsultantHomePagePersons" resultType="com.huiju.estateagents.entity.TaPerson">
161
+        SELECT
162
+            t.*,
163
+            count( * ) as visit_times,
164
+            MAX(f.visit_time) as visit_time
165
+        FROM
166
+            ta_person t
167
+        INNER JOIN ta_person_visit_record f ON f.org_id = #{orgId} AND f.person_id = t.person_id
168
+        INNER JOIN ta_person s on s.person_id = f.target_id
169
+        WHERE t.org_id = #{orgId}
170
+
171
+<!--        为了与存储过程一致 -->
172
+<!--            AND t.`status` = 1-->
173
+        <if test="buildingId != null and buildingId !=''">
174
+            AND f.building_id = #{buildingId}
175
+        </if>
176
+            AND f.event_type = 'card'
177
+            AND f.visit_time BETWEEN #{startDate} and #{endDate}
178
+            AND s.user_id = #{userId}
179
+
180
+<!--        为了与存储过程一致 -->
181
+<!--            AND s.`status` = 1-->
182
+        GROUP BY t.person_id, DATE_FORMAT(t.create_date, '%Y%m%d')
183
+        ORDER BY t.create_date DESC
184
+    </select>
185
+
186
+    <select id="getConsultantHomePageTimes" resultType="com.huiju.estateagents.entity.TaPerson">
187
+        SELECT
188
+            t.*,
189
+            f.visit_time as visit_time
190
+        FROM
191
+            ta_person t
192
+        INNER JOIN ta_person_visit_record f ON f.org_id = #{orgId} AND f.person_id = t.person_id
193
+        INNER JOIN ta_person s on s.person_id = f.target_id
194
+        WHERE t.org_id = #{orgId}
195
+
196
+<!--        为了与存储过程一致 -->
197
+<!--            AND t.`status` = 1-->
198
+        <if test="buildingId != null and buildingId !=''">
199
+            AND f.building_id = #{buildingId}
200
+        </if>
201
+            AND f.event_type = 'card'
202
+            AND f.visit_time BETWEEN #{startDate} and #{endDate}
203
+            AND s.user_id = #{userId}
204
+
205
+<!--        为了与存储过程一致 -->
206
+<!--            AND s.`status` = 1-->
207
+        <if test="personId != null and personId !=''">
208
+            AND t.person_id = #{personId}
209
+        </if>
210
+        ORDER BY t.create_date DESC
211
+    </select>
212
+
213
+    <select id="getConsultantChatPersons" resultType="com.huiju.estateagents.entity.TaPerson">
214
+        SELECT
215
+            t.*,
216
+            max( h.create_date ) AS visit_time
217
+        FROM
218
+            ta_person t
219
+        INNER JOIN ta_chat h ON h.send_person = t.person_id
220
+        INNER JOIN ta_person s ON s.person_id = h.receive_person
221
+        WHERE t.org_id = #{orgId}
222
+
223
+<!--        为了与存储过程一致 -->
224
+<!--            AND t.`status` = 1-->
225
+            AND h.create_date BETWEEN #{startDate} and #{endDate}
226
+            AND s.user_id = #{userId}
227
+
228
+<!--        为了与存储过程一致 -->
229
+<!--            AND s.`status` = 1-->
230
+        GROUP BY
231
+            t.person_id, DATE_FORMAT(h.create_date, '%Y%m%d')
232
+        ORDER BY
233
+            h.create_date DESC
234
+    </select>
235
+
236
+    <select id="getConsultantFavor" resultType="com.huiju.estateagents.entity.TaPerson">
237
+        SELECT
238
+            t.*,
239
+            i.create_date AS visit_time
240
+        FROM
241
+            ta_person t
242
+        INNER JOIN ta_favor i ON i.person_id = t.person_id
243
+        INNER JOIN ta_person s ON s.person_id = i.be_favor
244
+        WHERE t.org_id = #{orgId}
245
+
246
+<!--        为了与存储过程一致 -->
247
+<!--            AND t.`status` = 1-->
248
+            AND i.tagert_type = 'consultant'
249
+            AND i.create_date BETWEEN #{startDate} and #{endDate}
250
+            AND s.user_id = #{userId}
251
+
252
+<!--        为了与存储过程一致 -->
253
+<!--            AND s.`status` = 1-->
254
+        ORDER BY
255
+            i.create_date DESC
256
+    </select>
257
+
258
+    <select id="getConsultantShareTargets" resultType="com.huiju.estateagents.entity.TaPerson">
259
+        SELECT
260
+            s.*,
261
+            t.tagert_type as target_type,
262
+            t.target_name,
263
+            t.be_share as target_id,
264
+            t.create_date as visit_time
265
+        FROM
266
+            ta_share_count t
267
+        INNER JOIN ta_person s ON s.person_id = t.person_id
268
+        WHERE
269
+            t.org_id = #{orgId}
270
+
271
+        <!-- 没有设置 targetType 查询条件, 则只查询固定的几个 -->
272
+        <if test="targetType == null or targetType ==''">
273
+            AND (
274
+            t.tagert_type IN ( 'project', 'activity', 'group', 'h5', 'help', 'news', 'main' )
275
+            OR t.tagert_type like 'house%'
276
+            OR t.tagert_type like 'live%'
277
+            )
278
+        </if>
279
+        <if test="targetType != null and targetType !=''">
280
+            AND t.tagert_type like concat(#{targetType}, '%')
281
+        </if>
282
+
283
+            AND t.create_date BETWEEN #{startDate} and #{endDate}
284
+        <if test="targetName != null and targetName !=''">
285
+            AND t.target_name LIKE concat('%', #{targetName}, '%')
286
+        </if>
287
+            AND s.user_id = #{userId}
288
+
289
+<!--        为了与存储过程一致 -->
290
+<!--            AND s.`status` = 1-->
291
+        ORDER BY t.create_date DESC
292
+    </select>
293
+
294
+    <select id="getConsultantSharePersons" resultType="com.huiju.estateagents.entity.TaPerson">
295
+        SELECT
296
+            t.*,
297
+            count(*) as visit_times,
298
+            max(e.create_date) as visit_time
299
+        FROM ta_share_person_from e
300
+        INNER JOIN ta_person t ON t.person_id = e.person_id
301
+        WHERE e.org_id = #{orgId}
302
+            AND e.share_person = #{userId}
303
+            AND e.create_date BETWEEN #{startDate} and #{endDate}
304
+            <!-- building_id 字段数据不全
305
+            <if test="buildingId != null and buildingId !=''">
306
+                AND e.building_id = #{buildingId}
307
+            </if>
308
+            -->
309
+<!--            AND t.`status` = 1-->
310
+        GROUP BY t.person_id, DATE_FORMAT(e.create_date, '%Y%m%d')
311
+        ORDER BY e.create_date DESC
312
+    </select>
313
+
314
+    <select id="getConsultantShareTimes" resultType="com.huiju.estateagents.entity.TaPerson">
315
+        SELECT
316
+            t.*,
317
+            e.create_date as visit_time,
318
+            e.target_type,
319
+            e.target_id,
320
+            e.target_name
321
+        FROM ta_share_person_from e
322
+        INNER JOIN ta_person t ON t.person_id = e.person_id
323
+        WHERE e.org_id = #{orgId}
324
+            AND e.share_person = #{userId}
325
+
326
+        <!-- 没有设置 targetType 查询条件, 则只查询固定的几个 -->
327
+        <if test="targetType == null or targetType ==''">
328
+            AND (
329
+            e.target_type IN ( 'building_share', 'dynamic_share', 'group_share', 'h5_share', 'help_share', 'house_share', 'live_share', 'news_share' )
330
+            OR ( e.target_type = 'share' AND e.target_id = 'index' )
331
+            )
332
+        </if>
333
+        <if test="targetType != null and targetType !=''">
334
+            AND e.target_type = 'share'
335
+        </if>
336
+        <if test="targetType != null and targetType =='share'">
337
+            AND e.target_id = 'index'
338
+        </if>
339
+
340
+            AND e.create_date BETWEEN #{startDate} and #{endDate}
341
+            <!-- building_id 字段数据不全
342
+            <if test="buildingId != null and buildingId !=''">
343
+                AND e.building_id = #{buildingId}
344
+            </if>
345
+            -->
346
+
347
+        <if test="personId != null and personId !=''">
348
+            AND t.person_id = #{personId}
349
+        </if>
350
+        <if test="userName != null and userName !=''">
351
+            AND t.nickname like concat('%', #{userName} ,'%')
352
+        </if>
353
+            <!--            AND t.`status` = 1-->
354
+        ORDER BY e.create_date DESC
355
+    </select>
356
+</mapper>

+ 24
- 0
src/main/resources/mapper/statistic/TsPersonFromStatisticMapper.xml Ver arquivo

@@ -65,5 +65,29 @@
65 65
         GROUP BY
66 66
         DATE_FORMAT( tp.create_date, '%Y-%m-%d' ),
67 67
         tp.scene_type
68
+        ORDER BY tp.create_date
69
+    </select>
70
+    <select id="selectNewLinePersonFromGroupByData"
71
+            resultType="com.huiju.estateagents.statistic.entity.TsPersonFromStatistic">
72
+        SELECT
73
+        sum( tp.from_num ) AS from_num,
74
+        sum( tp.registered_num ) AS registered_num,
75
+        DATE_FORMAT( tp.create_date, '%Y-%m-%d' ) AS create_time,
76
+        tp.scene_type
77
+        FROM
78
+        ts_person_from_statistic tp
79
+        WHERE
80
+        tp.org_id = #{orgId}
81
+        and tp.scene_type != ''
82
+        and tp.scene_type is not null
83
+        <if test="startDate != null or endDate != null">
84
+            AND  DATE_FORMAT( tp.create_date, '%Y-%m-%d' ) BETWEEN #{startDate} and #{endDate}
85
+        </if>
86
+        <if test="startDate == null or endDate == null">
87
+            AND DATE_FORMAT( tp.create_date, '%Y-%m-%d' ) BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
88
+        </if>
89
+        GROUP BY
90
+        DATE_FORMAT( tp.create_date, '%Y-%m-%d' )
91
+        ORDER BY tp.create_date
68 92
     </select>
69 93
 </mapper>