Files
ccdi/ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiAccountInfoMapper.xml

169 lines
8.0 KiB
XML

<?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.info.collection.mapper.CcdiAccountInfoMapper">
<resultMap id="CcdiAccountInfoVOResult" type="com.ruoyi.info.collection.domain.vo.CcdiAccountInfoVO">
<id property="id" column="id"/>
<result property="ownerType" column="ownerType"/>
<result property="ownerId" column="ownerId"/>
<result property="staffId" column="staffId"/>
<result property="staffName" column="staffName"/>
<result property="relationId" column="relationId"/>
<result property="relationType" column="relationType"/>
<result property="relationName" column="relationName"/>
<result property="relationCertNo" column="relationCertNo"/>
<result property="accountNo" column="accountNo"/>
<result property="accountType" column="accountType"/>
<result property="bankScope" column="bankScope"/>
<result property="accountName" column="accountName"/>
<result property="openBank" column="openBank"/>
<result property="bankCode" column="bankCode"/>
<result property="currency" column="currency"/>
<result property="status" column="status"/>
<result property="effectiveDate" column="effectiveDate"/>
<result property="invalidDate" column="invalidDate"/>
<result property="isActualControl" column="isActualControl"/>
<result property="avgMonthTxnCount" column="avgMonthTxnCount"/>
<result property="avgMonthTxnAmount" column="avgMonthTxnAmount"/>
<result property="txnFrequencyLevel" column="txnFrequencyLevel"/>
<result property="debitSingleMaxAmount" column="debitSingleMaxAmount"/>
<result property="creditSingleMaxAmount" column="creditSingleMaxAmount"/>
<result property="debitDailyMaxAmount" column="debitDailyMaxAmount"/>
<result property="creditDailyMaxAmount" column="creditDailyMaxAmount"/>
<result property="txnRiskLevel" column="txnRiskLevel"/>
<result property="createBy" column="createBy"/>
<result property="createTime" column="createTime"/>
<result property="updateBy" column="updateBy"/>
<result property="updateTime" column="updateTime"/>
</resultMap>
<sql id="AccountInfoSelectColumns">
ai.account_id AS id,
ai.owner_type AS ownerType,
ai.owner_id AS ownerId,
CASE
WHEN ai.owner_type = 'EMPLOYEE' THEN bs.staff_id
WHEN ai.owner_type = 'RELATION' THEN bsRel.staff_id
ELSE NULL
END AS staffId,
CASE
WHEN ai.owner_type = 'EMPLOYEE' THEN bs.name
WHEN ai.owner_type = 'RELATION' THEN bsRel.name
ELSE NULL
END AS staffName,
CASE WHEN ai.owner_type = 'RELATION' THEN fr.id ELSE NULL END AS relationId,
CASE WHEN ai.owner_type = 'RELATION' THEN fr.relation_type ELSE NULL END AS relationType,
CASE WHEN ai.owner_type = 'RELATION' THEN fr.relation_name ELSE NULL END AS relationName,
CASE WHEN ai.owner_type = 'RELATION' THEN fr.relation_cert_no ELSE NULL END AS relationCertNo,
ai.account_no AS accountNo,
ai.account_type AS accountType,
ai.bank_scope AS bankScope,
ai.account_name AS accountName,
ai.bank AS openBank,
ai.bank_code AS bankCode,
ai.currency AS currency,
ai.status AS status,
ai.effective_date AS effectiveDate,
ai.invalid_date AS invalidDate,
ar.is_self_account AS isActualControl,
ar.monthly_avg_trans_count AS avgMonthTxnCount,
ar.monthly_avg_trans_amount AS avgMonthTxnAmount,
ar.trans_freq_type AS txnFrequencyLevel,
ar.dr_max_single_amount AS debitSingleMaxAmount,
ar.cr_max_single_amount AS creditSingleMaxAmount,
ar.dr_max_daily_amount AS debitDailyMaxAmount,
ar.cr_max_daily_amount AS creditDailyMaxAmount,
ar.trans_risk_level AS txnRiskLevel,
ai.create_by AS createBy,
ai.create_time AS createTime,
ai.update_by AS updateBy,
ai.update_time AS updateTime
</sql>
<sql id="AccountInfoWhereClause">
WHERE 1 = 1
<if test="query.staffName != null and query.staffName != ''">
AND (
(ai.owner_type = 'EMPLOYEE' AND bs.name LIKE CONCAT('%', #{query.staffName}, '%'))
OR
(ai.owner_type = 'RELATION' AND bsRel.name LIKE CONCAT('%', #{query.staffName}, '%'))
)
</if>
<if test="query.ownerType != null and query.ownerType != ''">
AND ai.owner_type = #{query.ownerType}
</if>
<if test="query.bankScope != null and query.bankScope != ''">
AND ai.bank_scope = #{query.bankScope}
</if>
<if test="query.relationType != null and query.relationType != ''">
AND fr.relation_type = #{query.relationType}
</if>
<if test="query.accountName != null and query.accountName != ''">
AND ai.account_name LIKE CONCAT('%', #{query.accountName}, '%')
</if>
<if test="query.accountType != null and query.accountType != ''">
AND ai.account_type = #{query.accountType}
</if>
<if test="query.isActualControl != null">
AND ar.is_self_account = #{query.isActualControl}
</if>
<if test="query.riskLevel != null and query.riskLevel != ''">
AND ar.trans_risk_level = #{query.riskLevel}
</if>
<if test="query.status != null">
AND ai.status = #{query.status}
</if>
</sql>
<select id="selectAccountInfoPage" resultMap="CcdiAccountInfoVOResult">
SELECT
<include refid="AccountInfoSelectColumns"/>
FROM ccdi_account_info ai
LEFT JOIN ccdi_account_result ar ON ai.account_no = ar.account_no
LEFT JOIN ccdi_base_staff bs ON ai.owner_type = 'EMPLOYEE' AND ai.owner_id = bs.id_card
LEFT JOIN ccdi_staff_fmy_relation fr ON ai.owner_type = 'RELATION' AND ai.owner_id = fr.relation_cert_no
LEFT JOIN ccdi_base_staff bsRel ON fr.person_id = bsRel.id_card
<include refid="AccountInfoWhereClause"/>
ORDER BY ai.update_time DESC, ai.account_id DESC
</select>
<select id="selectAccountInfoListForExport" resultMap="CcdiAccountInfoVOResult">
SELECT
<include refid="AccountInfoSelectColumns"/>
FROM ccdi_account_info ai
LEFT JOIN ccdi_account_result ar ON ai.account_no = ar.account_no
LEFT JOIN ccdi_base_staff bs ON ai.owner_type = 'EMPLOYEE' AND ai.owner_id = bs.id_card
LEFT JOIN ccdi_staff_fmy_relation fr ON ai.owner_type = 'RELATION' AND ai.owner_id = fr.relation_cert_no
LEFT JOIN ccdi_base_staff bsRel ON fr.person_id = bsRel.id_card
<include refid="AccountInfoWhereClause"/>
ORDER BY ai.update_time DESC, ai.account_id DESC
</select>
<select id="selectAccountInfoById" resultMap="CcdiAccountInfoVOResult">
SELECT
<include refid="AccountInfoSelectColumns"/>
FROM ccdi_account_info ai
LEFT JOIN ccdi_account_result ar ON ai.account_no = ar.account_no
LEFT JOIN ccdi_base_staff bs ON ai.owner_type = 'EMPLOYEE' AND ai.owner_id = bs.id_card
LEFT JOIN ccdi_staff_fmy_relation fr ON ai.owner_type = 'RELATION' AND ai.owner_id = fr.relation_cert_no
LEFT JOIN ccdi_base_staff bsRel ON fr.person_id = bsRel.id_card
WHERE ai.account_id = #{id}
</select>
<select id="selectRelationOptionsByStaffId" resultType="com.ruoyi.info.collection.domain.vo.CcdiAccountRelationOptionVO">
SELECT
fr.id,
fr.relation_name AS relationName,
fr.relation_type AS relationType,
fr.relation_cert_no AS relationCertNo
FROM ccdi_staff_fmy_relation fr
INNER JOIN ccdi_base_staff bs ON fr.person_id = bs.id_card
WHERE bs.staff_id = #{staffId}
AND fr.is_emp_family = 1
AND fr.status = 1
ORDER BY fr.id DESC
</select>
</mapper>