浏览代码

1.新增个人客户管理分页查询与列表导出接口
2.相关表新增索引
3.企业客户管理调整

GouGengquan 1 天之前
父节点
当前提交
fc25331c13

+ 28 - 0
biz-base/src/main/java/com/dayou/controller/CustomerLinkmanController.java

@@ -1,7 +1,9 @@
 package com.dayou.controller;
 
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.utils.LoginContext;
+import com.dayou.vo.CustomerPersonalVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,11 +20,16 @@ import com.dayou.common.PullDownModel;
 import com.dayou.utils.ConvertUtil;
 import com.dayou.utils.HttpKit;
 import com.dayou.exception.ErrorCode;
+
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.http.MediaType;
 import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * 企业客户联系人
  *
@@ -97,5 +104,26 @@ public class CustomerLinkmanController extends BaseController {
         List<PullDownModel> ret=ConvertUtil.copyList(list, PullDownModel.class);
         return RestResponse.data(ret);
     }
+
+    /**
+     * 分页查询个人客户列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<CustomerPersonalVO>
+     */
+    @GetMapping("/getCustomerPersonalPage")
+    public RestResponse<Page<CustomerPersonalVO>> getCustomerPersonalPage(Page page, CustomerPersonalSelectDTO dto) {
+        return RestResponse.data(customerLinkmanService.getCustomerPersonalPage(page, dto));
+    }
+
+    /**
+     * 导出个人客户列表
+     * @param dto 查询dto
+     */
+    @GetMapping("/getCustomerPersonalPage/export")
+    public void exportCustomerPersonalPage(CustomerPersonalSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<CustomerPersonalVO> result = customerLinkmanService.exportCustomerPersonalPage(dto);
+        exportPlus(response,"个人客户列表",result,CustomerPersonalVO.class);
+    }
 }
 

+ 9 - 0
dao/src/main/java/com/dayou/mapper/CustomerCompanyMapper.java

@@ -46,4 +46,13 @@ public interface CustomerCompanyMapper extends CustomBaseMapper<CustomerCompany>
      */
     Page<CustomerCompanyOrderVO> getCustomerCompanyOrderPage(@Param("page") Page page, @Param("dto") CustomerCompanyOrderSelectDTO dto);
 
+    // TODO: 暂时不知道收款时间指代的哪一个字段,这个接口暂停开发
+    /**
+     * 分页查询企业客户评估收入订单列表
+     * @param page 分页
+     * @param dto 查询dto0
+     * @return Page<CustomerCompanyOrderVO>
+     */
+    Page<CustomerCompanyOrderVO> getCustomerCompanyIncomePage(@Param("page") Page page, @Param("dto") CustomerCompanyOrderSelectDTO dto);
+
 }

+ 21 - 0
dao/src/main/java/com/dayou/mapper/CustomerLinkmanMapper.java

@@ -1,7 +1,13 @@
 package com.dayou.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.entity.CustomerLinkman;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.CustomerPersonalVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,19 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface CustomerLinkmanMapper extends CustomBaseMapper<CustomerLinkman> {
 
+    /**
+     * 分页查询个人客户列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<CustomerPersonalVO>
+     */
+    Page<CustomerPersonalVO> getCustomerPersonalPage(@Param("page") Page page, @Param("dto") CustomerPersonalSelectDTO dto);
+
+    /**
+     * 导出个人客户列表
+     * @param dto 查询dto
+     * @return Page<CustomerPersonalVO>
+     */
+    List<CustomerPersonalVO> exportCustomerPersonalPage( @Param("dto") CustomerPersonalSelectDTO dto);
+
 }

+ 6 - 1
dao/src/main/resources/mapper/CustomerCompanyMapper.xml

@@ -44,7 +44,7 @@
     </select>
 
     <sql id="customerCompanyQuerySql">
-        SELECT company.id                                                    AS companyId,
+        SELECT company.id                                                    AS id,
                company.name                                                  AS companyName,
                parent.id                                                     AS parentId,
                parent.name                                                   AS parentCompany,
@@ -194,5 +194,10 @@
                 AND created BETWEEN #{dto.createdStartTime} AND #{dto.createdEndTime}
             </if>
         </where>
+        ORDER BY custmerOrder.created DESC
+    </select>
+
+    <select id="getCustomerCompanyIncomePage" resultType="com.dayou.vo.CustomerCompanyOrderVO">
+
     </select>
 </mapper>

+ 85 - 0
dao/src/main/resources/mapper/CustomerLinkmanMapper.xml

@@ -34,4 +34,89 @@
         cc_id, name, mobile, phone, sex, id_no, wechat_no, qq_no, school, industry, department, duty, terminal, client_manager_id, description
     </sql>
 
+    <sql id="customerPersonalQuerySql">
+        SELECT linkman.id                                                        AS id,
+               linkman.name                                                      AS name,
+               linkman.mobile                                                    AS mobile,
+               linkman.phone                                                     AS phone,
+               linkman.sex                                                       AS sex,
+               linkman.id_no                                                     AS idNo,
+               linkman.wechat_no                                                 AS wechatNo,
+               linkman.qq_no                                                     AS qqNo,
+               linkman.department                                                AS department,
+               linkman.duty                                                      AS duty,
+               user.name                                                         AS clientManager,
+               linkman.terminal                                                  AS terminal,
+               ((SELECT COUNT(id)
+                 FROM assets
+                 WHERE assets.deleted = 0
+                   AND clientele_type = '个人'
+                   AND assets.clientele_contact_id = linkman.id) +
+                (SELECT COUNT(id)
+                 FROM major
+                 WHERE major.deleted = 0
+                   AND clientele_type = '个人'
+                   AND major.clientele_contact_id = linkman.id) +
+                (SELECT COUNT(id)
+                 FROM personal
+                 WHERE personal.deleted = 0
+                   AND clientele_type = '个人'
+                   AND personal.clientele_contact_id = linkman.id))              AS orderVolume,
+               (COALESCE((SELECT SUM(order_fund.real_amount)
+                          FROM assets
+                                   LEFT JOIN order_fund
+                                             ON order_fund.business_type = 'ASSET_BUSINESS' AND order_fund.deleted = 0 AND
+                                                business_id = assets.id
+                          WHERE assets.deleted = 0
+                            AND clientele_type = '个人'
+                            AND assets.clientele_contact_id = linkman.id), 0) +
+                COALESCE((SELECT SUM(order_fund.real_amount)
+                          FROM major
+                                   LEFT JOIN order_fund
+                                             ON order_fund.business_type = 'MAJOR_BUSINESS' AND order_fund.deleted = 0 AND
+                                                business_id = major.id
+                          WHERE major.deleted = 0
+                            AND clientele_type = '个人'
+                            AND major.clientele_contact_id = linkman.id), 0) +
+                COALESCE((SELECT SUM(order_fund.real_amount)
+                          FROM personal
+                                   LEFT JOIN order_fund
+                                             ON order_fund.business_type = 'PERSONAL_BUSINESS' AND order_fund.deleted = 0 AND
+                                                business_id = personal.id
+                          WHERE personal.deleted = 0
+                            AND clientele_type = '个人'
+                            AND personal.clientele_contact_id = linkman.id), 0)) AS estimatedRevenue,
+               linkman.created                                                   AS created
+        FROM customer_linkman AS linkman
+                 LEFT JOIN user ON user.id = linkman.client_manager_id
+        WHERE linkman.cc_id = 1
+        <if test="dto != null">
+            <if test="dto.keyword != null">
+                AND (
+                    linkman.name LIKE CONCAT('%',#{dto.keyword},'%') OR
+                    linkman.mobile LIKE CONCAT('%',#{dto.keyword},'%') OR
+                    linkman.phone LIKE CONCAT('%',#{dto.keyword},'%') OR
+                    linkman.wechat_no LIKE CONCAT('%',#{dto.keyword},'%') OR
+                    linkman.qq_no LIKE CONCAT('%',#{dto.keyword},'%')
+                )
+            </if>
+            <if test="dto.terminal != null">
+                AND linkman.terminal = #{dto.terminal}
+            </if>
+            <if test="dto.clientManagerId != null">
+                AND linkman.client_manager_id = #{dto.clientManagerId}
+            </if>
+        </if>
+    </sql>
+
+    <!--分页查询个人客户列表-->
+    <select id="getCustomerPersonalPage" resultType="com.dayou.vo.CustomerPersonalVO">
+        <include refid="customerPersonalQuerySql" />
+    </select>
+
+    <!--导出个人客户列表-->
+    <select id="exportCustomerPersonalPage" resultType="com.dayou.vo.CustomerPersonalVO">
+        <include refid="customerPersonalQuerySql" />
+    </select>
+
 </mapper>

+ 6 - 0
domain/src/main/java/com/dayou/dto/CustomerCompanyOrderSelectDTO.java

@@ -33,4 +33,10 @@ public class CustomerCompanyOrderSelectDTO {
     private Date createdStartTime;
     private Date createdEndTime;
 
+    /**
+     * 收款时间筛选起止
+     */
+    private Date collectionStartTime;
+    private Date collectionEndTime;
+
 }

+ 23 - 0
domain/src/main/java/com/dayou/dto/CustomerPersonalSelectDTO.java

@@ -0,0 +1,23 @@
+package com.dayou.dto;
+
+import lombok.Data;
+
+@Data
+public class CustomerPersonalSelectDTO {
+
+    /**
+     * 关键词
+     */
+    private String keyword;
+
+    /**
+     * 终端客户
+     */
+    private Boolean terminal;
+
+    /**
+     * 维护人id(客户经理id)
+     */
+    private Long clientManagerId;
+
+}

+ 10 - 9
domain/src/main/java/com/dayou/vo/CustomerCompanyOrderVO.java

@@ -1,6 +1,5 @@
 package com.dayou.vo;
 
-import com.dayou.annotation.Excel;
 import lombok.Data;
 
 import java.time.LocalDate;
@@ -16,49 +15,51 @@ public class CustomerCompanyOrderVO {
     /**
      * 项目编号
      */
-    @Excel(name = "项目编号")
     private String orderId;
 
     /**
      * 项目名称
      */
-    @Excel(name = "项目名称")
     private String projectName;
 
     /**
      * 业务类型
      */
-    @Excel(name = "业务类型")
     private String businessType;
 
     /**
      * 客户名称
      */
-    @Excel(name = "客户名称")
     private String customerName;
 
     /**
      * 业务来源(客户子级名称)
      */
-    @Excel(name = "业务来源")
     private String customerSubName;
 
     /**
      * 客户经理
      */
-    @Excel(name = "客户经理")
     private String clientManager;
 
     /**
      * 客户联系人
      */
-    @Excel(name = "客户联系人")
     private String linkmanName;
 
     /**
      * 下单时间
      */
-    @Excel(name = "下单时间")
     private LocalDate created;
 
+    /**
+     * 订单实收款
+     */
+    private Double orderRealAmount;
+
+    /**
+     * 收款时间
+     */
+    private LocalDate collectionTime;
+
 }

+ 2 - 2
domain/src/main/java/com/dayou/vo/CustomerCompanyVO.java

@@ -12,9 +12,9 @@ import java.time.LocalDate;
 public class CustomerCompanyVO {
 
     /**
-     * 企业id
+     * 企业客户id
      */
-    private Long companyId;
+    private Long id;
 
     /**
      * 企业名称

+ 102 - 0
domain/src/main/java/com/dayou/vo/CustomerPersonalVO.java

@@ -0,0 +1,102 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 客户管理-个人客户列表
+ */
+@Data
+public class CustomerPersonalVO {
+
+    /**
+     * 企业客户id
+     */
+    private Long id;
+
+    /**
+     * 姓名
+     */
+    @Excel(name = "姓名")
+    private String name;
+
+    /**
+     * 手机号
+     */
+    @Excel(name = "手机号")
+    private String mobile;
+
+    /**
+     * 座机号
+     */
+    @Excel(name = "座机号")
+    private String phone;
+
+    /**
+     * 性别
+     */
+    @Excel(name = "性别")
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    @Excel(name = "身份证号")
+    private String idNo;
+
+    /**
+     * 微信号
+     */
+    @Excel(name = "微信号")
+    private String wechatNo;
+
+    /**
+     * QQ号
+     */
+    @Excel(name = "QQ号")
+    private String qqNo;
+
+    /**
+     * 部门
+     */
+    @Excel(name = "部门")
+    private String department;
+
+    /**
+     * 职位
+     */
+    @Excel(name = "职位")
+    private String duty;
+
+    /**
+     * 维护人
+     */
+    @Excel(name = "维护人")
+    private String clientManager;
+
+    /**
+     * 终端客户
+     */
+    @Excel(name = "终端客户", readConverterExp = "true=终端客户,false=非终端客户")
+    private Boolean terminal;
+
+    /**
+     * 来单量
+     */
+    @Excel(name = "来单量")
+    private Integer orderVolume;
+
+    /**
+     * 评估收入
+     */
+    @Excel(name = "评估收入")
+    private Double estimatedRevenue;
+
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间")
+    private LocalDate created;
+}

+ 20 - 0
service/src/main/java/com/dayou/service/ICustomerLinkmanService.java

@@ -1,10 +1,15 @@
 package com.dayou.service;
+import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.entity.CustomerLinkman;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.dayou.vo.CustomerPersonalVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
 /**
  * <p>
  * 企业客户联系人 服务类
@@ -25,4 +30,19 @@ public interface ICustomerLinkmanService extends IService<CustomerLinkman> {
 
         Boolean delete(Long id);
 
+        /**
+         * 分页查询个人客户列表
+         * @param page 分页
+         * @param dto 查询dto
+         * @return Page<CustomerPersonalVO>
+         */
+        Page<CustomerPersonalVO> getCustomerPersonalPage(Page page, CustomerPersonalSelectDTO dto);
+
+        /**
+         * 导出个人客户列表
+         * @param dto 查询dto
+         * @return Page<CustomerPersonalVO>
+         */
+        List<CustomerPersonalVO> exportCustomerPersonalPage(CustomerPersonalSelectDTO dto);
+
 }

+ 26 - 0
service/src/main/java/com/dayou/service/impl/CustomerLinkmanServiceImpl.java

@@ -1,11 +1,14 @@
 package com.dayou.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.entity.CustomerLinkman;
 import com.dayou.mapper.CustomerLinkmanMapper;
 import com.dayou.service.ICustomerLinkmanService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.utils.LoginContext;
+import com.dayou.vo.CustomerPersonalVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -38,6 +41,8 @@ import com.dayou.enums.BatchTaskTypeEnum;
 @Service
 public class CustomerLinkmanServiceImpl extends ServiceImpl<CustomerLinkmanMapper, CustomerLinkman> implements ICustomerLinkmanService {
 
+    @Autowired
+    private CustomerLinkmanMapper customerLinkmanMapper;
 
     @Override
     @SuppressWarnings("unchecked")
@@ -67,4 +72,25 @@ public class CustomerLinkmanServiceImpl extends ServiceImpl<CustomerLinkmanMappe
         //逻辑删除
         return this.removeById(id);
     }
+
+    /**
+     * 分页查询个人客户列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<CustomerPersonalVO>
+     */
+    @Override
+    public Page<CustomerPersonalVO> getCustomerPersonalPage(Page page, CustomerPersonalSelectDTO dto) {
+        return customerLinkmanMapper.getCustomerPersonalPage(page, dto);
+    }
+
+    /**
+     * 导出个人客户列表
+     * @param dto 查询dto
+     * @return Page<CustomerPersonalVO>
+     */
+    @Override
+    public List<CustomerPersonalVO> exportCustomerPersonalPage(CustomerPersonalSelectDTO dto) {
+        return customerLinkmanMapper.exportCustomerPersonalPage(dto);
+    }
 }

+ 3 - 0
sql/update_sql.sql

@@ -1040,3 +1040,6 @@ CREATE TABLE `hr_payslip_email`
 ALTER TABLE assets ADD KEY `idx_clientele_sub_id` (`clientele_sub_id`) USING BTREE;
 ALTER TABLE major ADD KEY `idx_clientele_sub_id` (`clientele_sub_id`) USING BTREE;
 ALTER TABLE personal ADD KEY `idx_clientele_sub_id` (`clientele_sub_id`) USING BTREE;
+ALTER TABLE assets ADD KEY `idx_clientele_contact_id` (`clientele_contact_id`) USING BTREE;
+ALTER TABLE major ADD KEY `idx_clientele_contact_id` (`clientele_contact_id`) USING BTREE;
+ALTER TABLE personal ADD KEY `idx_clientele_contact_id` (`clientele_contact_id`) USING BTREE;