diff --git a/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml b/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml index 41a06e5..5403041 100644 --- a/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PhonesMapMapper.xml @@ -139,25 +139,59 @@ + WITH src AS (SELECT DISTINCT ON (phone) phone, + ser_num, + id_type + FROM json_to_recordset(#{json}::json) AS src( + phone bigint, + ser_num varchar(255), + id_type varchar(255) + ) + order by phone), + + to_lock AS (select dst.id + from signals_phones_map dst + join src on src.phone = dst.phone + order by dst.phone + for update) + update signals_phones_map dst set ser_num = src.ser_num, id_type = src.id_type - FROM json_to_recordset(#{json}::json) AS src( - phone bigint, - ser_num varchar(255), - id_type varchar(255) - ) - where dst.phone = src.phone; + FROM src + where dst.phone = src.phone + AND dst.id in (select id from to_lock); + WITH src AS (SELECT DISTINCT ON (phone) fid, + phone, + name_1, + first, + middle, + birth_dt + FROM json_to_recordset(#{json}::json) AS src( + fid int, + phone bigint, + name_1 varchar(255), + first varchar(255), + middle varchar(255), + birth_dt timestamp + ) + order by phone), + + to_lock AS (select dst.id + from signals_phones_map dst + join src on src.phone = dst.phone + order by dst.phone + for update) + update signals_phones_map dst - set - fid = src.fid, - name_1 = src.name_1, - first = src.first, - middle = src.middle, - birth_dt = src.birth_dt, + set fid = src.fid, + name_1 = src.name_1, + first = src.first, + middle = src.middle, + birth_dt = src.birth_dt, searched_at = now() FROM json_to_recordset(#{json}::json) AS src( fid int, @@ -167,10 +201,26 @@ middle varchar(255), birth_dt timestamp ) - where dst.phone = src.phone; + where dst.phone = src.phone + AND dst.id in (select id from to_lock); + WITH src AS (SELECT DISTINCT ON (phone) phone, + flag_debt5000, + flag_90_12 + FROM json_to_recordset(#{json}::json) AS src( + phone bigint, + flag_debt5000 smallint, + flag_90_12 smallint + ) + order by phone), + to_lock AS (select dst.id + from signals_phones_map dst + join src on src.phone = dst.phone + order by dst.phone + for update) + update signals_phones_map dst set flag_debt5000 = src.flag_debt5000, flag_90_12 = src.flag_90_12, @@ -180,7 +230,8 @@ flag_debt5000 smallint, flag_90_12 smallint ) - where dst.phone = src.phone; + where dst.phone = src.phone + AND dst.id in (select id from to_lock);