credit_tracker/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml
etreschenkov 7176a49814 flag calc
2025-11-11 12:23:52 +03:00

145 lines
No EOL
5.8 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="ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper">
<resultMap id="PhoneFidMapResultMap" type="ru.nbch.credit_tracker.entities.app.PhoneFidMap">
<result property="id" column="id"/>
<result property="packageId" column="package_id"/>
<result property="subjectId" column="subject_id"/>
<result property="phone" column="phone"/>
<result property="fid" column="fid"/>
<result property="flagDebt5000" column="flag_debt5000"/>
<result property="flag90days" column="flag_90_12"/>
<result property="calculatedAt" column="calculated_at"/>
<result property="errorText" column="error_text"/>
</resultMap>
<insert id="registerSubjects" parameterType="java.util.List">
INSERT INTO signals_phone_fid_map (subject_id, phone, fid, package_id)
values
<foreach collection="subjects" item="subject" separator=",">
(#{subject.id}, #{subject.clientId}, NULL, #{packageId})
</foreach>
</insert>
<insert id="register" parameterType="java.util.List">
INSERT INTO signals_phone_fid_map (subject_id, fid, phone, package_id, flag_debt5000, flag_90_12, calculated_at)
values
<foreach collection="phoneFidMap" item="phoneFid" separator=",">
(#{phoneFid.subjectId}, #{phoneFid.fid}, #{phoneFid.phone}, #{phoneFid.packageId}, #{phoneFid.flagDebt5000}, #{phoneFid.flag90days}, #{phoneFid.calculatedAt})
</foreach>
</insert>
<insert id="registerJson" parameterType="string">
INSERT INTO signals_phone_fid_map
(subject_id, fid, phone, package_id, flag_debt5000, flag_90_12, calculated_at)
SELECT subject_id, fid, phone, package_id, flag_debt5000, flag_90_12, calculated_at
FROM json_to_recordset(#{json}::json) AS t(
subject_id varchar(255),
fid int,
phone text,
package_id bigint,
flag_debt5000 smallint,
flag_90_12 smallint,
calculated_at timestamp)
</insert>
<insert id="registerWithId" parameterType="java.util.List" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO signals_phone_fid_map (subject_id, phone, package_id)
values
<foreach collection="phoneFidMap" item="phoneFid" separator=",">
(#{phoneFid.subjectId}, #{phoneFid.phone}, #{phoneFid.packageId})
</foreach>
</insert>
<update id="updatePhoneFidMaps" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map
SET
package_id = #{subject.packageId},
subject_id = #{subject.subjectId},
phone = #{subject.phone},
fid = #{subject.fid},
flag_debt5000 = #{subject.flagDebt5000},
flag_90_12 = #{subject.flag90days},
calculated_at = #{subject.calculatedAt},
error_text = #{subject.errorText}
WHERE id = #{subject.id}
</foreach>
</update>
<update id="updateOne" parameterType="ru.nbch.credit_tracker.entities.app.PhoneFidMap">
UPDATE signals_phone_fid_map
SET
package_id = #{subject.packageId},
subject_id = #{subject.subjectId},
phone = #{subject.phone},
fid = #{subject.fid2},
flag_debt5000 = #{subject.flagDebt5000},
flag_90_12 = #{subject.flag90days},
calculated_at = #{subject.calculatedAt},
error_text = #{subject.errorText}
WHERE id = #{subject.id}
</update>
<update id="updateFid" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map
SET
fid = #{subject.fid}
WHERE rec_uuid = #{subject.id}
</foreach>
</update>
<update id="updatePhoneFidMapsErrors" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map
SET
error_text = #{subject.errorText}
WHERE id = #{subject.recUuid}
</foreach>
</update>
<select id="findFullPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id,
package_id,
subject_id,
phone,
fid,
flag_90_12,
flag_debt5000,
calculated_at,
error_text
FROM signals_phone_fid_map
WHERE package_id = #{packageId}
ORDER BY id
LIMIT #{limit} OFFSET #{offset}
</select>
<select id="findPhoneFidMapById" resultMap="PhoneFidMapResultMap" resultType="ru.nbch.credit_tracker.entities.app.PhoneFidMap">
SELECT id,
package_id,
subject_id,
phone,
fid,
flag_90_12,
flag_debt5000,
calculated_at,
error_text
FROM signals_phone_fid_map
WHERE id = #{id}
LIMIT 1
</select>
<select id="hasNonNullFids" resultType="java.lang.Boolean">
select count(*) > 0
from signals_phone_fid_map
where package_id = #{packageId} AND fid is not null
</select>
</mapper>