Files
ibs-fullstack/ibs/src/main/resources/mapper/cmpm/GridCmpmMapper.xml

530 lines
25 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="com.ruoyi.ibs.cmpm.mapper.GridCmpmMapper">
<select id="selectManageList" resultType="GridCmpm">
select *
from grid_cmpm_${gridType}
where user_name is not null
<if test="branchId != null">and branch_id = #{branchId}</if>
<if test="outletId != null">and outlet_id = #{outletId}</if>
<if test="curUserName != null and curUserName !='' ">and user_name = #{curUserName}</if>
<if test="custId != null and custId !='' ">and cust_id like concat('%',#{custId},'%') </if>
<if test="custName != null and custName !='' ">and cust_name like concat('%',#{custName},'%')</if>
<if test="userName != null and userName !='' ">and user_name like concat('%',#{userName},'%')</if>
<if test="custTypes != null and custTypes.size() > 0 ">
and cust_type in
<foreach item="custType" collection="custTypes" open="(" separator="," close=")">
#{custType}
</foreach>
</if>
<if test="custLevels != null and custLevels.size() > 0 ">
and cust_level in
<foreach item="custLevel" collection="custLevels" open="(" separator="," close=")">
#{custLevel}
</foreach>
</if>
order by cust_level desc, user_name
</select>
<select id="selectCommonList" resultType="GridCmpm">
select *
from grid_cmpm_${gridType} gc
where gc.user_name is null
and not exists (
select 1 from grid_cmpm_transfer
where transfer_status != '3' and transfer_status != '-1'
and cust_id = gc.cust_id
<if test="gridType == 'corporate_account'">
and account_no = gc.account_no
</if>
)
<if test="branchId != null">and (gc.branch_id = #{branchId} or gc.branch_id is null)</if>
<if test=" custId != null and custId !='' ">and gc.cust_id like concat('%',#{custId},'%') </if>
<if test="custName != null and custName !='' ">and gc.cust_name like concat('%',#{custName},'%')</if>
<if test="userName != null and userName !='' ">and gc.user_name like concat('%',#{userName},'%')</if>
<if test="custTypes != null and custTypes.size() > 0 ">
and gc.cust_type in
<foreach item="custType" collection="custTypes" open="(" separator="," close=")">
#{custType}
</foreach>
</if>
<if test="custLevels != null and custLevels.size() > 0 ">
and gc.cust_level in
<foreach item="custLevel" collection="custLevels" open="(" separator="," close=")">
#{custLevel}
</foreach>
</if>
order by gc.cust_level desc
</select>
<select id="getCustLevel" resultType="String">
select cust_level from grid_cmpm_${gridType}
<where>
<if test="custId != null and custId !='' ">and cust_id = #{custId}</if>
<if test="accountNo != null and accountNo !='' ">and account_no = #{accountNo}</if>
</where>
</select>
<select id="getGridCmpmByCustKey" resultType="GridCmpm">
select * from grid_cmpm_${gridType}_${deptCode}
where cust_id = #{custId}
<if test="userName != null and userName !='' ">and user_name = #{userName}</if>
<if test="userName == null"> and user_name is null</if>
<if test="gridType == 'corporate_account'">and account_no = #{accountNo}</if>
</select>
<select id="queryGridCmpmByCustKey" resultType="GridCmpm">
select * from grid_cmpm_${gridType}_${deptCode}
where cust_id in
<foreach item="custId" collection="custIds" open="(" separator="," close=")">
#{custId}
</foreach>
<if test="accountNos != null and accountNos.size() > 0'">
and account_no in
<foreach item="accountNo" collection="accountNos" open="(" separator="," close=")">
#{accountNo}
</foreach>
</if>
</select>
<select id="getGridCmpmByUserName" resultType="GridCmpm">
select * from grid_cmpm_${gridType}_${deptCode} gc
where gc.user_name = #{userName}
and not exists (
select 1 from grid_cmpm_transfer
where (transfer_status != '3' and transfer_status != '-1')
and cust_id = gc.cust_id
<if test="gridType == 'corporate_account'">
and account_no = gc.account_no
</if>
)
</select>
<update id="updateGridCmpm">
update grid_cmpm_${gridType}_${deptCode}
set user_name = #{userName},
nick_name = #{nickName},
outlet_id = #{outletId},
outlet_name = #{outletName},
branch_id = #{branchId},
branch_name = #{branchName},
source = '手动指定',
lock_flag = '1'
where cust_id = #{custId} and user_name = #{prevUserName}
<if test="gridType == 'corporate_account'">
and account_no = #{accountNo}
</if>
</update>
<select id="getAllCustLevel" resultType="String">
select distinct cust_level from grid_cmpm_${gridType} where cust_level is not null order by cust_level;
</select>
<select id="queryClaimList" resultType="GridCmpmClaimVO">
select gc.cust_name, gc.cust_type, gc.cust_id, gc.account_no, gc.user_name, gc.nick_name
from grid_cmpm_${gridType}_${deptCode} gc
where gc.user_name is not null
<if test="custKey != null and custKey !='' ">
and (gc.cust_id like concat('%',#{custKey},'%')
or gc.account_no like concat('%',#{custKey},'%')
or gc.cust_name like concat('%',#{custKey},'%'))
</if>
</select>
<select id="getCustManagerList" resultType="DwbRetailCustLevelManagerDetailVO">
select id, outlet_id, outlet_name, branch_id, branch_name, cust_name, cust_idc, cust_isn, cust_age, cust_sex, cust_phone, cust_address, cust_aum_bal,
aum_bal_comp_lm, cust_aum_month_avg, cust_level, cust_level_comp_lm, manager_name, manager_id
from dwb_retail_cust_level_manager_detail
<where>
<if test="managerId != null and managerId !='' ">and manager_id = #{managerId}</if>
<if test="outletId != null and outletId !='' ">and outlet_id = #{outletId}</if>
<if test="branchId != null and branchId !='' ">and branch_id = #{branchId}</if>
<if test="statusType != null and statusType !=''">
<choose>
<when test="statusType == 'current'">
<!-- 本月:本月是指定星级的客户 -->
and cust_level = #{custLevel}
</when>
<when test="statusType == 'last'">
<!-- 上月:上月是指定星级的客户 -->
and cust_level_lm = #{custLevel}
</when>
<when test="statusType == 'rise'">
<!-- 上升:上升到指定星级的客户(本月是指定星级,上月星级更低) -->
and cust_level = #{custLevel}
and cust_level_comp_lm like '上升%'
</when>
<when test="statusType == 'fall'">
<!-- 下降:从指定星级下降的客户(上月是指定星级,本月星级更低) -->
and cust_level_lm = #{custLevel}
and cust_level_comp_lm like '下降%'
</when>
</choose>
</if>
</where>
</select>
<select id="getCustLevelCount" resultType="Integer">
select count(1)
from dwb_retail_cust_level_manager_detail
<where>
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
<if test="managerId != null and managerId !='' ">and manager_id = #{managerId}</if>
<if test="outletId != null and outletId !='' ">and outlet_id = #{outletId}</if>
<if test="branchId != null and branchId !='' ">and branch_id = #{branchId}</if>
</where>
</select>
<select id="selectCustInfoFromGridCmpm" resultType="CustBaseInfo">
select a.* from
<if test="custPattern == 0">
cust_info_retail a
</if>
<if test="custPattern == 1">
cust_info_merchant a
</if>
<if test="custPattern == 2">
cust_info_business a
</if>
where a.cust_id in (
<if test="custPattern == 0">
select distinct cust_id from grid_cmpm_retail
where user_name = #{cmpmUserName}
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
</if>
<if test="custPattern == 1">
select distinct cust_id from grid_cmpm_corporate
where user_name = #{cmpmUserName} and cust_type = '1'
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
union all
select distinct cust_id from grid_cmpm_corporate_account
where user_name = #{cmpmUserName} and cust_type = '1'
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
</if>
<if test="custPattern == 2">
select distinct cust_id from grid_cmpm_corporate
where user_name = #{cmpmUserName} and cust_type = '2'
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
union all
select distinct cust_id from grid_cmpm_corporate_account
where user_name = #{cmpmUserName} and cust_type = '2'
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
</if>
)
<if test="custId != null and custId !='' ">and a.cust_id like concat('%',#{custId},'%') </if>
<if test="custName != null and custName !='' ">and a.cust_name like concat('%',#{custName},'%')</if>
<if test="regionTopGridIds != null and regionTopGridIds.size() > 0 ">
AND a.cust_id IN (
SELECT cust_id
FROM grid_region_cust_user grcu
<where>
<if test="regionTopGridIds != null and regionTopGridIds.size()>0">
<foreach collection="regionTopGridIds" item="param" separator="or">
grcu.top_grid_id = #{param.value}
</foreach>
</if>
)
</where>
</if>
<if test="regionSecGridIds != null and regionSecGridIds.size()>0">
AND a.cust_id IN (
SELECT cust_id
FROM grid_region_cust_user grcu
<where>
<foreach collection="regionSecGridIds" item="param" separator="or">
grcu.sec_grid_id = #{param.value}
</foreach>
</where>
)
</if>
<if test="virtualGridIds != null and virtualGridIds.size() > 0 ">
AND a.cust_id IN (
SELECT cust_id
FROM grid_virtual_cust_user gvcu
<where>
<foreach collection="virtualGridIds" item="param" separator="or">
gvcu.grid_id = #{param.value}
</foreach>
</where>
)
</if>
<if test="drawGridIds != null and drawGridIds.size() > 0 ">
AND a.cust_id IN (
SELECT dsc.cust_id
FROM grid_draw_user_relate gdur
INNER JOIN grid_draw_shape_relate gdsr ON gdur.grid_id = gdsr.grid_id
INNER JOIN draw_shape_cust dsc ON gdsr.shape_id = dsc.shape_id
<where>
<foreach collection="drawGridIds" item="param" separator="or">
gdur.grid_id = #{param.value}
</foreach>
</where>
)
</if>
<if test="continuousParams != null and continuousParams.size() > 0 or discreteParams != null and discreteParams.size() > 0">
<if test="continuousParams != null and continuousParams.size() > 0">
and
<foreach collection="continuousParams" item="param" separator="and">
<choose>
<when test="param.value[0] != null and param.value[0] != '' and param.value[1] != null and param.value[1] != ''">
CAST(${param.key} AS DECIMAL(10,2)) BETWEEN CAST(#{param.value[0]} AS DECIMAL(10,2)) AND CAST(#{param.value[1]} AS DECIMAL(10,2))
</when>
<when test="param.value[0] != null and param.value[0] != ''">
CAST(${param.key} AS DECIMAL(10,2)) &gt;= CAST(#{param.value[0]} AS DECIMAL(10,2))
</when>
<when test="param.value[1] != null and param.value[1] != ''">
CAST(${param.key} AS DECIMAL(10,2)) &lt;= CAST(#{param.value[1]} AS DECIMAL(10,2))
</when>
</choose>
</foreach>
</if>
<if test="discreteParams != null and discreteParams.size() > 0">
and
<foreach collection="discreteParams" item="param" separator="and">
${param.key} = #{param.value}
</foreach>
</if>
</if>
<if test="custTag != null and custTag != ''"> and
((CASE WHEN substr(#{custTag}, 1, 1) = '1' THEN substr(a.cust_tag, 1, 1) = '1' end)
OR (CASE WHEN substr(#{custTag}, 2, 1) = '1' THEN substr(a.cust_tag, 2, 1) = '1' end)
OR (CASE WHEN substr(#{custTag}, 3, 1) = '1' THEN substr(a.cust_tag, 3, 1) = '1' end))
</if>
<if test="custScale != null and custScale != ''">
and ( a.cust_scale = '5'
<if test="
custScale0 != null and custScale0 != ''">or a.cust_scale = #{custScale0}</if>
<if test="
custScale1 != null and custScale1 != ''">or a.cust_scale = #{custScale1}</if>
<if test="
custScale2 != null and custScale2 != ''">or a.cust_scale = #{custScale2}</if>
<if test="
custScale3 != null and custScale3 != ''">or a.cust_scale = #{custScale3}</if>
)
</if>
limit #{start},#{size}
</select>
<select id="queryCustInfoFromGridCmpm" resultType="CustBaseInfo">
select a.* from
<if test="custPattern == 0">
cust_info_retail a
</if>
<if test="custPattern == 1">
cust_info_merchant a
</if>
<if test="custPattern == 2">
cust_info_business a
</if>
where a.cust_id in (
<if test="custPattern == 0">
select distinct cust_id from grid_cmpm_retail
where user_name is not null
and cust_type = '0'
<if test="cmpmBranchId != null">and branch_id = #{cmpmBranchId}</if>
<if test="cmpmOutletId != null">and outlet_id = #{cmpmOutletId}</if>
<if test="cmpmUserName != null">and user_name = #{cmpmUserName}</if>
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
</if>
<if test="custPattern == 1">
select distinct cust_id from grid_cmpm_retail
where user_name is not null
and cust_type = '1'
<if test="cmpmBranchId != null">and branch_id = #{cmpmBranchId}</if>
<if test="cmpmOutletId != null">and outlet_id = #{cmpmOutletId}</if>
<if test="cmpmUserName != null">and user_name = #{cmpmUserName}</if>
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
</if>
<if test="custPattern == 2">
select distinct cust_id from grid_cmpm_corporate
where user_name is not null
<if test="cmpmBranchId != null">and branch_id = #{cmpmBranchId}</if>
<if test="cmpmOutletId != null">and outlet_id = #{cmpmOutletId}</if>
<if test="cmpmUserName != null">and user_name = #{cmpmUserName}</if>
<if test="custLevel != null and custLevel !='' ">and cust_level = #{custLevel}</if>
</if>
)
<if test="custId != null and custId !='' ">and a.cust_id like concat('%',#{custId},'%') </if>
<if test="custName != null and custName !='' ">and a.cust_name like concat('%',#{custName},'%')</if>
<if test="regionTopGridIds != null and regionTopGridIds.size() > 0 ">
AND a.cust_id IN (
SELECT cust_id
FROM grid_region_cust_user grcu
<where>
<if test="regionTopGridIds != null and regionTopGridIds.size()>0">
<foreach collection="regionTopGridIds" item="param" separator="or">
grcu.top_grid_id = #{param.value}
</foreach>
</if>
)
</where>
</if>
<if test="regionSecGridIds != null and regionSecGridIds.size()>0">
AND a.cust_id IN (
SELECT cust_id
FROM grid_region_cust_user grcu
<where>
<foreach collection="regionSecGridIds" item="param" separator="or">
grcu.sec_grid_id = #{param.value}
</foreach>
</where>
)
</if>
<if test="virtualGridIds != null and virtualGridIds.size() > 0 ">
AND a.cust_id IN (
SELECT cust_id
FROM grid_virtual_cust_user gvcu
<where>
<foreach collection="virtualGridIds" item="param" separator="or">
gvcu.grid_id = #{param.value}
</foreach>
</where>
)
</if>
<if test="drawGridIds != null and drawGridIds.size() > 0 ">
AND a.cust_id IN (
SELECT dsc.cust_id
FROM grid_draw_user_relate gdur
INNER JOIN grid_draw_shape_relate gdsr ON gdur.grid_id = gdsr.grid_id
INNER JOIN draw_shape_cust dsc ON gdsr.shape_id = dsc.shape_id
<where>
<foreach collection="drawGridIds" item="param" separator="or">
gdur.grid_id = #{param.value}
</foreach>
</where>
)
</if>
<if test="continuousParams != null and continuousParams.size() > 0 or discreteParams != null and discreteParams.size() > 0">
<if test="continuousParams != null and continuousParams.size() > 0">
and
<foreach collection="continuousParams" item="param" separator="and">
<choose>
<when test="param.value[0] != null and param.value[0] != '' and param.value[1] != null and param.value[1] != ''">
CAST(${param.key} AS DECIMAL(10,2)) BETWEEN CAST(#{param.value[0]} AS DECIMAL(10,2)) AND CAST(#{param.value[1]} AS DECIMAL(10,2))
</when>
<when test="param.value[0] != null and param.value[0] != ''">
CAST(${param.key} AS DECIMAL(10,2)) &gt;= CAST(#{param.value[0]} AS DECIMAL(10,2))
</when>
<when test="param.value[1] != null and param.value[1] != ''">
CAST(${param.key} AS DECIMAL(10,2)) &lt;= CAST(#{param.value[1]} AS DECIMAL(10,2))
</when>
</choose>
</foreach>
</if>
<if test="discreteParams != null and discreteParams.size() > 0">
and
<foreach collection="discreteParams" item="param" separator="and">
${param.key} = #{param.value}
</foreach>
</if>
</if>
<if test="custTag != null and custTag != ''"> and
((CASE WHEN substr(#{custTag}, 1, 1) = '1' THEN substr(a.cust_tag, 1, 1) = '1' end)
OR (CASE WHEN substr(#{custTag}, 2, 1) = '1' THEN substr(a.cust_tag, 2, 1) = '1' end)
OR (CASE WHEN substr(#{custTag}, 3, 1) = '1' THEN substr(a.cust_tag, 3, 1) = '1' end))
</if>
<if test="custScale != null and custScale != ''">
and ( a.cust_scale = '5'
<if test="
custScale0 != null and custScale0 != ''">or a.cust_scale = #{custScale0}</if>
<if test="
custScale1 != null and custScale1 != ''">or a.cust_scale = #{custScale1}</if>
<if test="
custScale2 != null and custScale2 != ''">or a.cust_scale = #{custScale2}</if>
<if test="
custScale3 != null and custScale3 != ''">or a.cust_scale = #{custScale3}</if>
)
</if>
limit #{start},#{size}
</select>
<select id="getCustManagerResult" resultType="DwbRetailResultVO">
select
sum(cust_aum_bal) as cust_aum_bal,
sum(aum_bal_comp_lm) as aum_bal_comp_lm,
sum(cust_aum_month_avg) as cust_aum_month_avg,
sum(cust_aum_month_avg_lm) as cust_aum_month_avg_lm
from dwb_retail_cust_level_manager_detail_875
<where>
<if test="managerId != null and managerId !='' ">and manager_id = #{managerId}</if>
<if test="outletId != null and outletId !='' ">and outlet_id = #{outletId}</if>
<if test="branchId != null and branchId !='' ">and branch_id = #{branchId}</if>
</where>
</select>
<select id="getCustLevelList" resultType="String">
select distinct
cust_level
from dwb_retail_cust_level_manager_detail_875
order by cust_level
</select>
<select id="getCustCountByLevel" resultType="int">
select count(1)
from dwb_retail_cust_level_manager_detail_875
<where>
<if test="dto.managerId != null and dto.managerId !='' ">and manager_id = #{dto.managerId}</if>
<if test="dto.outletId != null and dto.outletId !='' ">and outlet_id = #{dto.outletId}</if>
<if test="dto.branchId != null and dto.branchId !='' ">and branch_id = #{dto.branchId}</if>
<!-- 根据 time 参数动态判断字段 -->
<if test="time == 'now' and dto.custLevel != null and dto.custLevel != ''">
and cust_level = #{dto.custLevel}
</if>
<if test="time == 'last' and dto.custLevel != null and dto.custLevel != ''">
and cust_level_lm = #{dto.custLevel}
</if>
</where>
</select>
<select id="selectDeptListByRole" resultType="java.lang.String">
<choose>
<when test="role == 'outlet'">
select distinct outlet_id
from dwb_retail_cust_level_manager_detail_875
where outlet_id is not null
</when>
<when test="role == 'branch'">
select distinct branch_id
from dwb_retail_cust_level_manager_detail_875
where branch_id is not null
</when>
<otherwise>
<!-- 其他角色返回一个具体值,例如 'default_dept' -->
select 'head' as dept_id from dual
</otherwise>
</choose>
</select>
<select id="selectManagerList" resultType="java.lang.String">
select distinct manager_id
from dwb_retail_cust_level_manager_detail_875
where manager_id is not null
</select>
<!-- 根据网格类型和总行ID查询客户经理列表 -->
<select id="getManagerListByGridType" resultType="java.util.HashMap">
select distinct user_name as userName, nick_name as nickName
from grid_cmpm_${gridType}_${headId}
where user_name is not null
order by user_name
</select>
<!-- 根据网格类型、总行ID和客户经理查询客户列表分表查询适用于客群导入-->
<select id="getCustomerListForImport" resultType="GridCmpmVO">
select cust_id, cust_name, cust_type, cust_idc, usci
from grid_cmpm_${gridType}_${headId}
where user_name = #{userName}
</select>
<!-- 根据网格类型、总行ID和客户经理流式查询客户列表使用Cursor适用于大数据量场景-->
<select id="getCustomerListForImportCursor" resultType="GridCmpmVO" fetchSize="1000">
select cust_id, cust_name, cust_type, cust_idc, usci
from grid_cmpm_${gridType}_${headId}
where user_name = #{userName}
</select>
</mapper>