Przeglądaj źródła

1.新增企业客户管理-来单列表查询接口以及相关调整
2.相关业务表新增索引

GouGengquan 1 dzień temu
rodzic
commit
6eefaed7de

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

@@ -1,6 +1,8 @@
 package com.dayou.controller;
 
+import com.dayou.dto.CustomerCompanyOrderSelectDTO;
 import com.dayou.dto.CustomerCompanySelectDTO;
+import com.dayou.vo.CustomerCompanyOrderVO;
 import com.dayou.vo.CustomerCompanyVO;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import lombok.extern.slf4j.Slf4j;
@@ -117,5 +119,16 @@ public class CustomerCompanyController extends BaseController {
         List<CustomerCompanyVO> result = customerCompanyService.exportCustomerCompanyPage(dto);
         exportPlus(response,"企业客户列表",result,CustomerCompanyVO.class);
     }
+
+    /**
+     * 分页查询企业客户来单列表
+     * @param page 分页
+     * @param dto 查询dto0
+     * @return Page<CustomerCompanyOrderVO>
+     */
+    @GetMapping("/getCustomerCompanyOrderPage")
+    public RestResponse<Page<CustomerCompanyOrderVO>> getCustomerCompanyOrderPage(Page page, CustomerCompanyOrderSelectDTO dto) {
+        return RestResponse.data(customerCompanyService.getCustomerCompanyOrderPage(page, dto));
+    }
 }
 

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

@@ -1,9 +1,11 @@
 package com.dayou.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dayou.dto.CustomerCompanyOrderSelectDTO;
 import com.dayou.dto.CustomerCompanySelectDTO;
 import com.dayou.entity.CustomerCompany;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.CustomerCompanyOrderVO;
 import com.dayou.vo.CustomerCompanyVO;
 import org.apache.ibatis.annotations.Param;
 
@@ -36,4 +38,12 @@ public interface CustomerCompanyMapper extends CustomBaseMapper<CustomerCompany>
      */
     List<CustomerCompanyVO> exportCustomerCompanyPage(@Param("dto") CustomerCompanySelectDTO dto);
 
+    /**
+     * 分页查询企业客户来单列表
+     * @param page 分页
+     * @param dto 查询dto0
+     * @return Page<CustomerCompanyOrderVO>
+     */
+    Page<CustomerCompanyOrderVO> getCustomerCompanyOrderPage(@Param("page") Page page, @Param("dto") CustomerCompanyOrderSelectDTO dto);
+
 }

+ 69 - 0
dao/src/main/resources/mapper/CustomerCompanyMapper.xml

@@ -126,4 +126,73 @@
     <select id="exportCustomerCompanyPage" resultType="com.dayou.vo.CustomerCompanyVO">
         <include refid="customerCompanyQuerySql" />
     </select>
+
+    <!--分页查询企业客户来单列表-->
+    <select id="getCustomerCompanyOrderPage" resultType="com.dayou.vo.CustomerCompanyOrderVO">
+        SELECT *
+        FROM (SELECT assets.id        AS id,
+                     order_id         AS orderId,
+                     assets.name      AS projectName,
+                     'ASSET_BUSINESS' AS businessType,
+                     customer.name    AS customerName,
+                     subCustomer.name AS customerSubName,
+                     linkman.name     AS linkmanName,
+                     user.name        AS clientManager,
+                     assets.created   AS created
+              FROM assets
+                       LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
+                       LEFT JOIN customer_company AS subCustomer ON subCustomer.id = assets.clientele_sub_id
+                       LEFT JOIN customer_linkman AS linkman ON linkman.id = assets.clientele_contact_id
+                       LEFT JOIN user ON user.id = assets.client_manager_id
+              WHERE assets.deleted = 0
+                AND assets.clientele_sub_id = #{dto.subCustomerId}
+              UNION ALL
+              SELECT major.id         AS id,
+                     order_id         AS orderId,
+                     major.name       AS projectName,
+                     'MAJOR_BUSINESS' AS businessType,
+                     customer.name    AS customerName,
+                     subCustomer.name AS customerSubName,
+                     linkman.name     AS linkmanName,
+                     user.name        AS clientManager,
+                     major.created    AS created
+              FROM major
+                       LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
+                       LEFT JOIN customer_company AS subCustomer ON subCustomer.id = major.clientele_sub_id
+                       LEFT JOIN customer_linkman AS linkman ON linkman.id = major.clientele_contact_id
+                       LEFT JOIN user ON user.id = major.client_manager_id
+              WHERE major.deleted = 0
+                AND major.clientele_sub_id = #{dto.subCustomerId}
+              UNION ALL
+              SELECT personal.id         AS id,
+                     order_id            AS orderId,
+                     personal.location   AS projectName,
+                     'PERSONAL_BUSINESS' AS businessType,
+                     customer.name       AS customerName,
+                     subCustomer.name    AS customerSubName,
+                     linkman.name        AS linkmanName,
+                     user.name           AS clientManager,
+                     personal.created    AS created
+              FROM personal
+                       LEFT JOIN customer_company AS customer ON customer.id = personal.clientele_id
+                       LEFT JOIN customer_company AS subCustomer ON subCustomer.id = personal.clientele_sub_id
+                       LEFT JOIN customer_linkman AS linkman ON linkman.id = personal.clientele_contact_id
+                       LEFT JOIN user ON user.id = personal.client_manager_id
+              WHERE personal.deleted = 0
+                AND personal.clientele_sub_id = #{dto.subCustomerId}) AS custmerOrder
+        <where>
+            <if test="dto.orderId != null">
+                AND orderId = #{dto.orderId}
+            </if>
+            <if test="dto.projectName != null">
+                AND projectName LIKE CONCAT('%',#{dto.projectName},'%')
+            </if>
+            <if test="dto.businessType != null">
+                AND businessType = #{dto.businessType}
+            </if>
+            <if test="dto.createdStartTime != null and dto.createdEndTime != null">
+                AND created BETWEEN #{dto.createdStartTime} AND #{dto.createdEndTime}
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -0,0 +1,36 @@
+package com.dayou.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CustomerCompanyOrderSelectDTO {
+
+    /**
+     * 企业id
+     */
+    private Long subCustomerId;
+
+    /**
+     * 项目编号
+     */
+    private String orderId;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 业务类型
+     */
+    private String businessType;
+
+    /**
+     * 下单时间筛选起止
+     */
+    private Date createdStartTime;
+    private Date createdEndTime;
+
+}

+ 64 - 0
domain/src/main/java/com/dayou/vo/CustomerCompanyOrderVO.java

@@ -0,0 +1,64 @@
+package com.dayou.vo;
+
+import com.dayou.annotation.Excel;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 客户管理-企业客户列表-来单列表
+ */
+@Data
+public class CustomerCompanyOrderVO {
+
+    private Integer id;
+
+    /**
+     * 项目编号
+     */
+    @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;
+
+}

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

@@ -1,10 +1,13 @@
 package com.dayou.service;
+import com.dayou.dto.CustomerCompanyOrderSelectDTO;
 import com.dayou.dto.CustomerCompanySelectDTO;
 import com.dayou.entity.CustomerCompany;
 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.CustomerCompanyOrderVO;
 import com.dayou.vo.CustomerCompanyVO;
+import org.apache.ibatis.annotations.Param;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -61,4 +64,12 @@ public interface ICustomerCompanyService extends IService<CustomerCompany> {
      * @return List<CustomerCompanyVO>
      */
     List<CustomerCompanyVO> exportCustomerCompanyPage(CustomerCompanySelectDTO dto);
+
+    /**
+     * 分页查询企业客户来单列表
+     * @param page 分页
+     * @param dto 查询dto0
+     * @return Page<CustomerCompanyOrderVO>
+     */
+    Page<CustomerCompanyOrderVO> getCustomerCompanyOrderPage(Page page, CustomerCompanyOrderSelectDTO dto);
 }

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

@@ -2,6 +2,7 @@ package com.dayou.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
+import com.dayou.dto.CustomerCompanyOrderSelectDTO;
 import com.dayou.dto.CustomerCompanySelectDTO;
 import com.dayou.entity.CustomerCompany;
 import com.dayou.entity.CustomerLinkman;
@@ -11,6 +12,7 @@ import com.dayou.service.ICustomerCompanyService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.dayou.service.IPersonalTargetService;
 import com.dayou.utils.LoginContext;
+import com.dayou.vo.CustomerCompanyOrderVO;
 import com.dayou.vo.CustomerCompanyVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -129,4 +131,15 @@ public class CustomerCompanyServiceImpl extends ServiceImpl<CustomerCompanyMappe
     public List<CustomerCompanyVO> exportCustomerCompanyPage(CustomerCompanySelectDTO dto) {
         return customerCompanyMapper.exportCustomerCompanyPage(dto);
     }
+
+    /**
+     * 分页查询企业客户来单列表
+     * @param page 分页
+     * @param dto 查询dto0
+     * @return Page<CustomerCompanyOrderVO>
+     */
+    @Override
+    public Page<CustomerCompanyOrderVO> getCustomerCompanyOrderPage(Page page, CustomerCompanyOrderSelectDTO dto) {
+        return customerCompanyMapper.getCustomerCompanyOrderPage(page, dto);
+    }
 }

+ 10 - 0
sql/update_sql.sql

@@ -1030,3 +1030,13 @@ CREATE TABLE `hr_payslip_email`
     KEY `operator_id` (`operator_id`) USING BTREE
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COMMENT ='人力资源_薪资(工资条)通知邮件';
+
+/**
+  日期:2025-08-07
+  修改人:苟耕铨
+  未更新到test-env
+ */
+# 新增索引
+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;