瀏覽代碼

销售简报

傅行帆 3 年之前
父節點
當前提交
2bdebcd2a9

+ 1
- 1
src/main/java/com/yunzhi/marketing/dto/StatisticsDTO.java 查看文件

@@ -17,5 +17,5 @@ public class StatisticsDTO {
17 17
 
18 18
     private String personId;
19 19
 
20
-    private String channelId;
20
+    private Integer channelId;
21 21
 }

+ 8
- 0
src/main/java/com/yunzhi/marketing/po/CustomerRankListVO.java 查看文件

@@ -4,4 +4,12 @@ import lombok.Data;
4 4
 
5 5
 @Data
6 6
 public class CustomerRankListVO {
7
+
8
+    private Integer number;
9
+
10
+    private String recommendPerson;
11
+
12
+    private String name;
13
+
14
+    private String avatarurl;
7 15
 }

+ 7
- 0
src/main/java/com/yunzhi/marketing/service/ChannelCustomerStatisticsService.java 查看文件

@@ -5,4 +5,11 @@ import com.yunzhi.marketing.dto.StatisticsDTO;
5 5
 
6 6
 public interface ChannelCustomerStatisticsService {
7 7
     ResponseBean getRanklist(StatisticsDTO statisticsDTo);
8
+
9
+    /**
10
+     * 获取销售简报
11
+     * @param statisticsDTo
12
+     * @return
13
+     */
14
+    ResponseBean getBriefing(StatisticsDTO statisticsDTo);
8 15
 }

+ 47
- 6
src/main/java/com/yunzhi/marketing/service/impl/ChannelCustomerStatisticsServiceImpl.java 查看文件

@@ -3,16 +3,21 @@ package com.yunzhi.marketing.service.impl;
3 3
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 4
 import com.yunzhi.marketing.base.ResponseBean;
5 5
 import com.yunzhi.marketing.dto.StatisticsDTO;
6
+import com.yunzhi.marketing.entity.TaChannelPerson;
7
+import com.yunzhi.marketing.mapper.TaChannelPersonMapper;
6 8
 import com.yunzhi.marketing.po.CustomerRankListVO;
7 9
 import com.yunzhi.marketing.service.ChannelCustomerStatisticsService;
8 10
 import com.yunzhi.marketing.xlk.entity.BuildingChannel;
9 11
 import com.yunzhi.marketing.xlk.mapper.BuildingChannelMapper;
10 12
 import com.yunzhi.marketing.xlk.mapper.ChannelCustomerMapper;
13
+import com.yunzhi.marketing.xlk.mapper.CustomerVisitMapper;
11 14
 import org.ietf.jgss.ChannelBinding;
12 15
 import org.springframework.beans.factory.annotation.Autowired;
13 16
 import org.springframework.stereotype.Service;
14 17
 
18
+import java.util.HashMap;
15 19
 import java.util.List;
20
+import java.util.Map;
16 21
 
17 22
 @Service
18 23
 public class ChannelCustomerStatisticsServiceImpl implements ChannelCustomerStatisticsService {
@@ -23,17 +28,53 @@ public class ChannelCustomerStatisticsServiceImpl implements ChannelCustomerStat
23 28
     @Autowired
24 29
     private ChannelCustomerMapper channelCustomerMapper;
25 30
 
31
+    @Autowired
32
+    private TaChannelPersonMapper channelPersonMapper;
33
+
34
+    @Autowired
35
+    private CustomerVisitMapper customerVisitMapper;
36
+
26 37
     @Override
27 38
     public ResponseBean getRanklist(StatisticsDTO statisticsDTo) {
28
-        LambdaQueryWrapper<BuildingChannel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
29
-        lambdaQueryWrapper.eq(BuildingChannel::getBuildingId,statisticsDTo.getBuildingId());
30
-        BuildingChannel buildingChannel = buildingChannelMapper.selectOne(lambdaQueryWrapper);
39
+        LambdaQueryWrapper<TaChannelPerson> lambdaQueryWrapper = new LambdaQueryWrapper<>();
40
+        lambdaQueryWrapper.eq(TaChannelPerson::getPersonId,statisticsDTo.getPersonId());
41
+        TaChannelPerson taChannelPerson = channelPersonMapper.selectOne(lambdaQueryWrapper);
31 42
 
32
-        if (null == buildingChannel) {
33
-            return ResponseBean.error("此楼盘未绑定渠道商", ResponseBean.ERROR_UNAVAILABLE);
43
+        if (null == taChannelPerson) {
44
+            return ResponseBean.error("此用户未绑定渠道商", ResponseBean.ERROR_UNAVAILABLE);
34 45
         }
35
-        statisticsDTo.setChannelId(buildingChannel.getChannelId());
46
+        statisticsDTo.setChannelId(taChannelPerson.getChannelId());
36 47
         List<CustomerRankListVO> list = channelCustomerMapper.getRanklist(statisticsDTo);
37 48
         return ResponseBean.success(list);
38 49
     }
50
+
51
+    /**
52
+     * 获取销售简报
53
+     *
54
+     * @param statisticsDTo
55
+     * @return
56
+     */
57
+    @Override
58
+    public ResponseBean getBriefing(StatisticsDTO statisticsDTo) {
59
+        LambdaQueryWrapper<TaChannelPerson> lambdaQueryWrapper = new LambdaQueryWrapper<>();
60
+        lambdaQueryWrapper.eq(TaChannelPerson::getPersonId,statisticsDTo.getPersonId());
61
+        TaChannelPerson taChannelPerson = channelPersonMapper.selectOne(lambdaQueryWrapper);
62
+
63
+        if (null == taChannelPerson) {
64
+            return ResponseBean.error("此用户未绑定渠道商", ResponseBean.ERROR_UNAVAILABLE);
65
+        }
66
+        statisticsDTo.setChannelId(taChannelPerson.getChannelId());
67
+
68
+        // 获取新增客户
69
+        int newCustomerNum = channelCustomerMapper.getNewCustomer(statisticsDTo);
70
+        // 获取跟进客户
71
+        int followCustomerNum =  customerVisitMapper.getFollowCustomer(statisticsDTo);
72
+        // 获取成交客户
73
+        int successCustomerNum = channelCustomerMapper.getSuccessCustomer(statisticsDTo);
74
+        Map<String,Object> map = new HashMap<>();
75
+        map.put("newCustomerNum",newCustomerNum);
76
+        map.put("followCustomerNum",followCustomerNum);
77
+        map.put("successCustomerNum",successCustomerNum);
78
+        return ResponseBean.success(map);
79
+    }
39 80
 }

+ 25
- 0
src/main/java/com/yunzhi/marketing/xlk/controller/ChannelCustomerStatisticsController.java 查看文件

@@ -53,4 +53,29 @@ public class ChannelCustomerStatisticsController extends BaseController {
53 53
         statisticsDTo.setPersonId(person.getPersonId());
54 54
         return  channelCustomerStatisticsService.getRanklist(statisticsDTo);
55 55
     }
56
+
57
+    @ApiOperation(value = "wx-销售简报", notes = "wx-销售简报")
58
+    @GetMapping(value="/wx/briefing")
59
+    public ResponseBean getBriefing(@RequestParam("buildingId") String buildingId,
60
+                                    @RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime startDate,
61
+                                    @RequestParam(value = "endDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime endDate,
62
+                                    @RequestHeader("authorization") String token, HttpServletRequest request){
63
+        ResponseBean responseBean = new ResponseBean();
64
+        String openid = getOpenId(request);
65
+        Integer orgId = getOrgId(request);
66
+        List<TaPerson> persons = taPersonService.getPersonsByOpenId(openid);
67
+        if (null == persons || persons.size() == 0) {
68
+            return ResponseBean.error("当前账户信息异常, 清除缓存重试", ResponseBean.ERROR_UNAVAILABLE);
69
+        }
70
+        TaPerson person = persons.get(0);
71
+
72
+        // 构造参数
73
+        StatisticsDTO statisticsDTo = new StatisticsDTO();
74
+        statisticsDTo.setBuildingId(buildingId);
75
+        statisticsDTo.setStartDate(startDate);
76
+        statisticsDTo.setEndDate(endDate);
77
+        statisticsDTo.setOrgId(orgId);
78
+        statisticsDTo.setPersonId(person.getPersonId());
79
+        return  channelCustomerStatisticsService.getBriefing(statisticsDTo);
80
+    }
56 81
 }

+ 14
- 0
src/main/java/com/yunzhi/marketing/xlk/mapper/ChannelCustomerMapper.java 查看文件

@@ -36,4 +36,18 @@ public interface ChannelCustomerMapper extends BaseMapper<ChannelCustomer> {
36 36
     List<CustomerRankListVO> getRanklist(@Param("params") StatisticsDTO statisticsDTo);
37 37
 
38 38
     IPage<MineRecommendCustomerPO>  getCustomersIRecommended(IPage<MineRecommendCustomerPO> page,@Param("params") RecommendCustomerDTO recommendCustomerDTO);
39
+
40
+    /**
41
+     * 新增客户
42
+     * @param statisticsDTo
43
+     * @return
44
+     */
45
+    int getNewCustomer(@Param("params") StatisticsDTO statisticsDTo);
46
+
47
+    /**
48
+     *
49
+     * @param statisticsDTo
50
+     * @return
51
+     */
52
+    int getSuccessCustomer(@Param("params") StatisticsDTO statisticsDTo);
39 53
 }

+ 3
- 0
src/main/java/com/yunzhi/marketing/xlk/mapper/CustomerVisitMapper.java 查看文件

@@ -1,8 +1,10 @@
1 1
 package com.yunzhi.marketing.xlk.mapper;
2 2
 
3 3
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.yunzhi.marketing.dto.StatisticsDTO;
4 5
 import com.yunzhi.marketing.xlk.entity.CustomerVisit;
5 6
 import org.apache.ibatis.annotations.Mapper;
7
+import org.apache.ibatis.annotations.Param;
6 8
 
7 9
 /**
8 10
  * <p>
@@ -15,4 +17,5 @@ import org.apache.ibatis.annotations.Mapper;
15 17
 @Mapper
16 18
 public interface CustomerVisitMapper extends BaseMapper<CustomerVisit> {
17 19
 
20
+    int getFollowCustomer(@Param("params") StatisticsDTO statisticsDTo);
18 21
 }

+ 35
- 2
src/main/resources/mapper/xlk/ChannelCustomerMapper.xml 查看文件

@@ -48,12 +48,14 @@
48 48
         SELECT
49 49
             COUNT(1) as number,
50 50
             t.recommend_person,
51
-            p.`name`
51
+            p.`name`,
52
+            p.avatarurl
52 53
         FROM
53 54
             xlk_channel_customer t
54 55
         LEFT JOIN ta_person p on t.recommend_person = p.person_id
55 56
         WHERE t.channel_id  = #{params.channelId}
56
-        and `status` != 3
57
+        and t.building_id = #{params.buildingId}
58
+        and t.`status` != 3
57 59
         <if test="params.startDate != null or params.endDate != null">
58 60
             AND t.create_date BETWEEN #{params.startDate} and #{params.endDate}
59 61
         </if>
@@ -96,4 +98,35 @@
96 98
         ORDER BY
97 99
         a.create_date desc
98 100
     </select>
101
+    <select id="getNewCustomer" resultType="java.lang.Integer">
102
+        SELECT
103
+         COUNT(1)
104
+        FROM
105
+        xlk_channel_customer t
106
+        WHERE t.channel_id  = #{params.channelId}
107
+        and t.building_id = #{params.buildingId}
108
+        and t.`status` = 1
109
+        <if test="params.startDate != null or params.endDate != null">
110
+            AND t.create_date BETWEEN #{params.startDate} and #{params.endDate}
111
+        </if>
112
+        <if test="params.startDate == null or params.endDate == null">
113
+            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
114
+        </if>
115
+    </select>
116
+    <select id="getSuccessCustomer" resultType="java.lang.Integer">
117
+        SELECT
118
+        COUNT(1)
119
+        FROM
120
+        xlk_channel_customer t
121
+        LEFT join ta_recommend_customer r on t.customer_id = r.customer_id
122
+        WHERE t.channel_id  = #{params.channelId}
123
+        and t.building_id = #{params.buildingId}
124
+        and r.`status` in (4,5)
125
+        <if test="params.startDate != null or params.endDate != null">
126
+            AND t.create_date BETWEEN #{params.startDate} and #{params.endDate}
127
+        </if>
128
+        <if test="params.startDate == null or params.endDate == null">
129
+            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
130
+        </if>
131
+    </select>
99 132
 </mapper>

+ 15
- 0
src/main/resources/mapper/xlk/CustomerVisitMapper.xml 查看文件

@@ -2,4 +2,19 @@
2 2
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
3 3
 <mapper namespace="com.yunzhi.marketing.xlk.mapper.CustomerVisitMapper">
4 4
 
5
+    <select id="getFollowCustomer" resultType="java.lang.Integer">
6
+        SELECT
7
+            COUNT(1)
8
+        FROM
9
+        xlk_channel_customer t
10
+        INNER JOIN xlk_customer_visit v on t.customer_id = v.customer_id
11
+        INNER JOIN ta_customer_follow_up_record f on t.customer_id = f.customer_id
12
+        WHERE t.channel_id  = #{params.channelId}
13
+        <if test="params.startDate != null or params.endDate != null">
14
+            AND t.create_date BETWEEN #{params.startDate} and #{params.endDate}
15
+        </if>
16
+        <if test="params.startDate == null or params.endDate == null">
17
+            AND t.create_date BETWEEN DATE_SUB(now(),INTERVAL 7 DAY) and now()
18
+        </if>
19
+    </select>
5 20
 </mapper>