zn-cloud/yudao-module-crm/yudao-module-crm-biz/src/main/resources/mapper/crmclues/CrmCluesMapper.xml
aikai 92850e2d12 feat(crm): 添加线索跟进任务并优化客户导入功能
- 新增线索跟进任务定时 job,自动更新三天未跟进的线索状态- 优化客户导入功能,增加重复客户检测和提示
- 添加合同编号字段到发票响应 VO- 修改合同列表获取逻辑,支持下属和自己的合同查询
-优化发票列表查询,支持关系筛选
- 新增商机状态更新接口
2025-03-13 15:20:39 +08:00

117 lines
4.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.crm.dal.mysql.crmclues.CrmCluesMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.yixiang.co/MyBatis/x-plugins/
-->
<select id="selectPageList"
resultType="cn.iocoder.yudao.module.crm.controller.admin.crmclues.vo.CrmCluesRespVO">
select
a.*,
b.nickname as ownUserName
from crm_clues a
left join system_users b ON b.id = a.owner_user_id
<where>
a.deleted = 0
and a.status != 1
<if test="dto.name != null and dto.name != ''">
and a.name like concat('%', #{dto.name}, '%')
</if>
<if test="dto.mobile != null and dto.mobile != ''">
and a.mobile = #{dto.mobile}
</if>
<if test="dto.telephone != null and dto.telephone != ''">
and a.telephone = #{dto.telephone}
</if>
<if test="dto.status != null">
and a.status = #{dto.status}
</if>
<if test="dto.level != null">
and a.level = #{dto.level}
</if>
<if test="dto.source != null">
and a.source = #{dto.source}
</if>
<if test="dto.industry != null">
and a.industry = #{dto.industry}
</if>
<if test="dto.ownerUserName != null and dto.ownerUserName != ''">
and b.nickname like concat('%', #{dto.ownerUserName}, '%')
</if>
<if test="ids != null and ids.size() > 0">
and a.owner_user_id in
<foreach item="ownerUserId" collection="ids" separator="," open="(" close=")" index="">
#{ownerUserId}
</foreach>
</if>
</where>
order by a.id desc
</select>
<select id="selectPageList2"
resultType="cn.iocoder.yudao.module.crm.controller.admin.crmclues.vo.CrmCluesRespVO">
select
a.*,
b.nickname as createName
from crm_clues a
left join system_users b ON b.id = a.creator
<where>
a.deleted = 0
and a.owner_user_id = 0
<if test="dto.name != null and dto.name != ''">
and a.name like concat('%', #{dto.name}, '%')
</if>
<if test="dto.mobile != null and dto.mobile != ''">
and a.mobile = #{dto.mobile}
</if>
<if test="dto.telephone != null and dto.telephone != ''">
and a.telephone = #{dto.telephone}
</if>
<if test="dto.status != null">
and a.status = #{dto.status}
</if>
<if test="dto.level != null">
and a.level = #{dto.level}
</if>
<if test="dto.source != null">
and a.source = #{dto.source}
</if>
<if test="dto.industry != null">
and a.industry = #{dto.industry}
</if>
<if test="dto.ownerUserName != null and dto.ownerUserName != ''">
and b.nickname like concat('%', #{dto.ownerUserName}, '%')
</if>
</where>
order by a.id desc
</select>
<select id="selectStatisticsByUserIds" resultType="cn.iocoder.yudao.module.crm.controller.admin.crmclues.vo.CrmCluesStatisticsRespVO">
SELECT
owner_user_id AS ownerUserId,
COUNT(1) AS count,
COUNT( CASE WHEN status = 1 THEN 1 END ) AS successCount
FROM
crm_clues
WHERE
deleted = 0
AND owner_user_id IN
<foreach item="ownerUserId" collection="ownerUserIds" separator="," open="(" close=")" index="">
#{ownerUserId}
</foreach>
<if test="createTime != null and createTime.length > 0">
<if test="createTime[0] != null">
AND create_time &gt;= #{createTime[0]}
</if>
<if test="createTime[1] != null">
AND create_time &lt;= #{createTime[1]}
</if>
</if>
GROUP BY owner_user_id
</select>
</mapper>