浏览代码

1.新增企业客户联系人查询与导出接口
2.企业客户下拉列表新增不需要筛选客户经理id的下拉列表接口

GouGengquan 6 天之前
父节点
当前提交
1c26e43b77

+ 10 - 0
biz-base/src/main/java/com/dayou/controller/CustomerCompanyController.java

@@ -100,6 +100,16 @@ public class CustomerCompanyController extends BaseController {
     }
 
     /**
+     * 下拉列表
+     * @param customer 筛选条件
+     * @return List<CustomerCompany>
+     */
+    @GetMapping("/pullDownList")
+    public RestResponse<List<CustomerCompany>> pullDownList(CustomerCompany customer) {
+        return RestResponse.data(customerCompanyService.pullDownList(customer));
+    }
+
+    /**
      * 分页查询企业客户列表
      * @param page 分页
      * @param dto 查询dto

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

@@ -1,9 +1,11 @@
 package com.dayou.controller;
 
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.CustomerLinkmanSelectDTO;
 import com.dayou.dto.CustomerPersonalOrderSelectDTO;
 import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.utils.LoginContext;
+import com.dayou.vo.CustomerLinkmanVO;
 import com.dayou.vo.CustomerPersonalOrderVO;
 import com.dayou.vo.CustomerPersonalVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -149,5 +151,26 @@ public class CustomerLinkmanController extends BaseController {
     public RestResponse<Page<CustomerPersonalOrderVO>> getCustomerPersonalIncomePage(Page page, CustomerPersonalOrderSelectDTO dto) {
         return RestResponse.data(customerLinkmanService.getCustomerPersonalIncomePage(page, dto));
     }
+
+    /**
+     * 分页查询企业客户联系人列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<CustomerLinkmanVO>
+     */
+    @GetMapping("/getCustomerLinkmanPage")
+    public RestResponse<Page<CustomerLinkmanVO>> getCustomerLinkmanPage(Page page, CustomerLinkmanSelectDTO dto) {
+        return RestResponse.data(customerLinkmanService.getCustomerLinkmanPage(page, dto));
+    }
+
+    /**
+     * 导出个人客户列表
+     * @param dto 查询dto
+     */
+    @GetMapping("/getCustomerLinkmanPage/export")
+    public void getCustomerLinkmanPage(CustomerLinkmanSelectDTO dto, HttpServletResponse response) throws IOException {
+        List<CustomerLinkmanVO> result = customerLinkmanService.exportCustomerLinkmanPage(dto);
+        exportPlus(response,"企业客户联系人列表",result,CustomerLinkmanVO.class);
+    }
 }
 

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

@@ -1,10 +1,12 @@
 package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.CustomerLinkmanSelectDTO;
 import com.dayou.dto.CustomerPersonalOrderSelectDTO;
 import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.entity.CustomerLinkman;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.CustomerLinkmanVO;
 import com.dayou.vo.CustomerPersonalOrderVO;
 import com.dayou.vo.CustomerPersonalVO;
 import org.apache.ibatis.annotations.Param;
@@ -52,4 +54,19 @@ public interface CustomerLinkmanMapper extends CustomBaseMapper<CustomerLinkman>
      */
     Page<CustomerPersonalOrderVO> getCustomerPersonalIncomePage(@Param("page") Page page, @Param("dto") CustomerPersonalOrderSelectDTO dto);
 
+    /**
+     * 分页查询企业客户联系人列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<CustomerLinkmanVO>
+     */
+    Page<CustomerLinkmanVO> getCustomerLinkmanPage(@Param("page") Page page, @Param("dto")CustomerLinkmanSelectDTO dto);
+
+    /**
+     * 导出企业客户联系人列表
+     * @param dto 查询dto
+     * @return List<CustomerLinkmanVO>
+     */
+    List<CustomerLinkmanVO> exportCustomerLinkmanPage(@Param("dto")CustomerLinkmanSelectDTO dto);
+
 }

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

@@ -60,7 +60,7 @@
                  LEFT JOIN customer_company AS parent ON parent.id = company.parent_id
                  LEFT JOIN user ON user.id = company.client_manager_id
 
-            /* 先算 来单量 与 评估值 再一次性 JOIN */
+                 /* 先算 来单量 与 评估值 再一次性 JOIN */
                  LEFT JOIN (SELECT clientele_sub_id,
                                    SUM(cnt)     AS cnt,
                                    SUM(revenue) AS revenue

+ 102 - 1
dao/src/main/resources/mapper/CustomerLinkmanMapper.xml

@@ -52,7 +52,7 @@
                linkman.created          AS created
         FROM customer_linkman AS linkman
                  LEFT JOIN user ON user.id = linkman.client_manager_id
-            /* 先算 来单量 与 评估值 再一次性 JOIN */
+                 /* 先算 来单量 与 评估值 再一次性 JOIN */
                  LEFT JOIN (SELECT clientele_contact_id,
                                    SUM(cnt)     AS cnt,
                                    SUM(revenue) AS revenue
@@ -269,4 +269,105 @@
         ORDER BY custmerOrder.collectionTime DESC
     </select>
 
+    <sql id="customerLinkmanQuerySql">
+        SELECT linkman.id               AS id,
+               linkman.name             AS linkman,
+               subCompany.id            AS subCompanyId,
+               subCompany.name          AS subCompany,
+               parentCompany.id         AS parentCompanyId,
+               parentCompany.name       AS parentCompany,
+               linkman.mobile           AS mobile,
+               linkman.phone            AS phone,
+               linkman.sex              AS sex,
+               linkman.department       AS department,
+               linkman.duty             AS duty,
+               user.name                AS clientManager,
+               linkman.terminal         AS terminal,
+               COALESCE(vol.cnt, 0)     AS orderVolume,
+               COALESCE(vol.revenue, 0) AS estimatedRevenue,
+               linkman.created          AS created
+        FROM customer_linkman AS linkman
+                 LEFT JOIN customer_company AS subCompany ON subCompany.id = linkman.cc_id
+                 LEFT JOIN customer_company AS parentCompany ON parentCompany.id = subCompany.parent_id
+                 LEFT JOIN user ON user.id = linkman.client_manager_id
+                 /* 先算 来单量 与 评估值 再一次性 JOIN */
+                 LEFT JOIN (SELECT clientele_contact_id,
+                                   SUM(cnt)     AS cnt,
+                                   SUM(revenue) AS revenue
+                            FROM (
+                                     /* assets */
+                                     SELECT assets.clientele_contact_id,
+                                            COUNT(*)                                 AS cnt,
+                                            COALESCE(SUM(order_fund.real_amount), 0) AS revenue
+                                     FROM assets
+                                              LEFT JOIN order_fund
+                                                        ON order_fund.business_type = 'ASSET_BUSINESS'
+                                                            AND order_fund.deleted = 0
+                                                            AND order_fund.business_id = assets.id
+                                     WHERE assets.deleted = 0
+                                       AND clientele_type = '企业'
+                                     GROUP BY assets.clientele_contact_id
+
+                                     UNION ALL
+                                     /* major */
+                                     SELECT major.clientele_contact_id,
+                                            COUNT(*),
+                                            COALESCE(SUM(order_fund.real_amount), 0)
+                                     FROM major
+                                              LEFT JOIN order_fund
+                                                        ON order_fund.business_type = 'MAJOR_BUSINESS'
+                                                            AND order_fund.deleted = 0
+                                                            AND order_fund.business_id = major.id
+                                     WHERE major.deleted = 0
+                                       AND clientele_type = '企业'
+                                     GROUP BY major.clientele_contact_id
+
+                                     UNION ALL
+                                     /* personal */
+                                     SELECT personal.clientele_contact_id,
+                                            COUNT(*),
+                                            COALESCE(SUM(order_fund.real_amount), 0)
+                                     FROM personal
+                                              LEFT JOIN order_fund
+                                                        ON order_fund.business_type = 'PERSONAL_BUSINESS'
+                                                            AND order_fund.deleted = 0
+                                                            AND order_fund.business_id = personal.id
+                                     WHERE personal.deleted = 0
+                                       AND clientele_type = '企业'
+                                     GROUP BY personal.clientele_contact_id) AS t
+                            GROUP BY clientele_contact_id) AS vol ON vol.clientele_contact_id = linkman.id
+        WHERE linkman.cc_id != 1
+        <if test="dto != null">
+            <if test="dto.linkman != null">
+                AND linkman.name LIKE CONCAT('%',#{dto.linkman},'%')
+            </if>
+            <if test="dto.subCompany != null">
+                AND subCompany.name LIKE CONCAT('%',#{dto.subCompany},'%')
+            </if>
+            <if test="dto.parentCompany != null">
+                AND parentCompany.name LIKE CONCAT('%',#{dto.parentCompany},'%')
+            </if>
+            <if test="dto.mobile != null">
+                AND linkman.mobile LIKE CONCAT('%',#{dto.mobile},'%')
+            </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>
+        ORDER BY COALESCE(vol.revenue, 0) DESC
+    </sql>
+
+    <!--分页查询企业客户联系人列表-->
+    <select id="getCustomerLinkmanPage" resultType="com.dayou.vo.CustomerLinkmanVO">
+        <include refid="customerLinkmanQuerySql" />
+    </select>
+
+    <!--导出企业客户联系人列表-->
+    <select id="exportCustomerLinkmanPage" resultType="com.dayou.vo.CustomerLinkmanVO">
+        <include refid="customerLinkmanQuerySql" />
+    </select>
+
 </mapper>

+ 38 - 0
domain/src/main/java/com/dayou/dto/CustomerLinkmanSelectDTO.java

@@ -0,0 +1,38 @@
+package com.dayou.dto;
+
+import lombok.Data;
+
+@Data
+public class CustomerLinkmanSelectDTO {
+
+    /**
+     * 企业客户联系人
+     */
+    private String linkman;
+
+    /**
+     * 企业名称
+     */
+    private String subCompany;
+
+    /**
+     * 上级企业
+     */
+    private String parentCompany;
+
+    /**
+     * 手机号
+     */
+    private String mobile;
+
+    /**
+     * 终端客户
+     */
+    private Boolean terminal;
+
+    /**
+     * 维护人id(客户经理id)
+     */
+    private Long clientManagerId;
+
+}

+ 106 - 0
domain/src/main/java/com/dayou/vo/CustomerLinkmanVO.java

@@ -0,0 +1,106 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 客户管理-企业客户-企业客户联系人列表
+ */
+@Data
+public class CustomerLinkmanVO {
+
+    /**
+     * 企业客户联系人id
+     */
+    private Long id;
+
+    /**
+     * 联系人姓名
+     */
+    @Excel(name = "联系人姓名")
+    private String linkman;
+
+    /**
+     * 企业id
+     */
+    private Long subCompanyId;
+
+    /**
+     * 企业名称
+     */
+    @Excel(name = "企业名称")
+    private String subCompany;
+
+    /**
+     * 上级企业id
+     */
+    private Long parentCompanyId;
+
+    /**
+     * 上级企业名称
+     */
+    @Excel(name = "上级企业名称")
+    private String parentCompany;
+
+    /**
+     * 手机号
+     */
+    @Excel(name = "手机号")
+    private String mobile;
+
+    /**
+     * 座机号
+     */
+    @Excel(name = "座机号")
+    private String phone;
+
+    /**
+     * 性别
+     */
+    @Excel(name = "性别")
+    private String sex;
+
+    /**
+     * 部门
+     */
+    @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;
+}

+ 7 - 0
service/src/main/java/com/dayou/service/ICustomerCompanyService.java

@@ -32,6 +32,13 @@ public interface ICustomerCompanyService extends IService<CustomerCompany> {
     List<CustomerCompany> simpleAll(CustomerCompany customer);
 
     /**
+     * 下拉列表
+     * @param customer 筛选条件
+     * @return List<CustomerCompany>
+     */
+    List<CustomerCompany> pullDownList(CustomerCompany customer);
+
+    /**
      * 判断客户是否是出库免申请
      * @param id
      * @return

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

@@ -1,10 +1,12 @@
 package com.dayou.service;
+import com.dayou.dto.CustomerLinkmanSelectDTO;
 import com.dayou.dto.CustomerPersonalOrderSelectDTO;
 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.CustomerLinkmanVO;
 import com.dayou.vo.CustomerPersonalOrderVO;
 import com.dayou.vo.CustomerPersonalVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -63,4 +65,19 @@ public interface ICustomerLinkmanService extends IService<CustomerLinkman> {
          */
         Page<CustomerPersonalOrderVO> getCustomerPersonalIncomePage(Page page, CustomerPersonalOrderSelectDTO dto);
 
+        /**
+         * 分页查询企业客户联系人列表
+         * @param page 分页
+         * @param dto 查询dto
+         * @return Page<CustomerLinkmanVO>
+         */
+        Page<CustomerLinkmanVO> getCustomerLinkmanPage(Page page, CustomerLinkmanSelectDTO dto);
+
+        /**
+         * 导出企业客户联系人列表
+         * @param dto 查询dto
+         * @return List<CustomerLinkmanVO>
+         */
+        List<CustomerLinkmanVO> exportCustomerLinkmanPage(CustomerLinkmanSelectDTO dto);
+
 }

+ 24 - 0
service/src/main/java/com/dayou/service/impl/CustomerCompanyServiceImpl.java

@@ -98,6 +98,30 @@ public class CustomerCompanyServiceImpl extends ServiceImpl<CustomerCompanyMappe
         return this.list(lambdaQueryWrapper);
     }
 
+    /**
+     * 下拉列表
+     * @param customer 筛选条件
+     * @return List<CustomerCompany>
+     */
+    @Override
+    public List<CustomerCompany> pullDownList(CustomerCompany customer) {
+        LambdaQueryWrapper<CustomerCompany> lambdaQueryWrapper = new LambdaQueryWrapper<CustomerCompany>();
+        lambdaQueryWrapper.select(CustomerCompany::getId,CustomerCompany::getName);
+        // 判断是否有父级id
+        if (customer.getParentId() != null){ // 有 查询子级企业
+            lambdaQueryWrapper.eq(CustomerCompany::getParentId,customer.getParentId());
+        } else { // 无 只查询父级企业
+            lambdaQueryWrapper.isNull(CustomerCompany::getParentId);
+        }
+        // 判断是否查终端客户
+        if (customer.getTerminal() != null){
+            lambdaQueryWrapper.eq(CustomerCompany::getTerminal, customer.getTerminal());
+        }
+        lambdaQueryWrapper.eq(BaseEntity::getDeleted,Boolean.FALSE);
+        lambdaQueryWrapper.orderByDesc(BaseEntity::getId);
+        return this.list(lambdaQueryWrapper);
+    }
+
     @Override
     public Boolean avoidWareHouseApply(Long id) {
         CustomerCompany cc = this.getOne(new LambdaQueryWrapper<CustomerCompany>().eq(BaseEntity::getId, id).isNull(CustomerCompany::getParentId)

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

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.dayou.dto.CustomerLinkmanSelectDTO;
 import com.dayou.dto.CustomerPersonalOrderSelectDTO;
 import com.dayou.dto.CustomerPersonalSelectDTO;
 import com.dayou.entity.CustomerLinkman;
@@ -9,6 +10,7 @@ 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.CustomerLinkmanVO;
 import com.dayou.vo.CustomerPersonalOrderVO;
 import com.dayou.vo.CustomerPersonalVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -121,4 +123,25 @@ public class CustomerLinkmanServiceImpl extends ServiceImpl<CustomerLinkmanMappe
     public Page<CustomerPersonalOrderVO> getCustomerPersonalIncomePage(Page page, CustomerPersonalOrderSelectDTO dto) {
         return customerLinkmanMapper.getCustomerPersonalIncomePage(page, dto);
     }
+
+    /**
+     * 分页查询企业客户联系人列表
+     * @param page 分页
+     * @param dto 查询dto
+     * @return Page<CustomerLinkmanVO>
+     */
+    @Override
+    public Page<CustomerLinkmanVO> getCustomerLinkmanPage(Page page, CustomerLinkmanSelectDTO dto) {
+        return customerLinkmanMapper.getCustomerLinkmanPage(page, dto);
+    }
+
+    /**
+     * 导出企业客户联系人列表
+     * @param dto 查询dto
+     * @return List<CustomerLinkmanVO>
+     */
+    @Override
+    public List<CustomerLinkmanVO> exportCustomerLinkmanPage(CustomerLinkmanSelectDTO dto) {
+        return customerLinkmanMapper.exportCustomerLinkmanPage(dto);
+    }
 }