fix: POS刷卡推荐,功能优化。

This commit is contained in:
tianyongbao
2026-02-02 23:13:16 +08:00
parent 7fc065eaae
commit b4c10ae79e
2 changed files with 56 additions and 30 deletions

View File

@@ -53,6 +53,14 @@ public class AccountsVo extends Accounts
private String advicePosNames; private String advicePosNames;
/** 银行名称 */
@ApiModelProperty(value="银行名称")
private String bankName;
/** 是否多账户合并出账10否 */
@ApiModelProperty(value="是否多账户合并出账")
private String multiAccountConsolidated;
/** 最新交易时间 */ /** 最新交易时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

View File

@@ -179,69 +179,87 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectCreditPosList" parameterType="AccountsDto" resultType="AccountsVo"> <select id="selectCreditPosList" parameterType="AccountsDto" resultType="AccountsVo">
select select
a."name", bbi.bank_name as name,
a.code, STRING_AGG(distinct a.code, '、' order by a.code) as code,
a.available_limit as availableLimit, sum(a.available_limit) as availableLimit,
bcl.bill_date || '日' as billDateName, STRING_AGG(distinct bcl.bill_date || '日', '、' order by bcl.bill_date || '日') as billDateName,
bbi.bank_name as bankName,
bbi.multi_account_consolidated as multiAccountConsolidated,
( (
select select
STRING_AGG(to_char(atr.create_time, STRING_AGG(distinct to_char(atr.create_time,
'yyyy-MM-dd')|| '-' || pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl.name || '-刷卡' ||atr.amount ::text, 'yyyy-MM-dd')|| '-' || pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl2.name||'-' ||a2.name||a2.code || '-刷卡' ||atr.amount ::text,
'、' '、'
order by order by
atr.create_time) as posNames to_char(atr.create_time, 'yyyy-MM-dd')|| '-' || pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl2.name||'-' ||a2.name||a2.code || '-刷卡' ||atr.amount ::text) as posNames
from from
accounts_transfer_record atr accounts_transfer_record atr
left join pos_machine pm on left join pos_machine pm on
pm.id = atr.pos_id pm.id = atr.pos_id
left join bank_card_lend bcl on left join bank_card_lend bcl2 on
bcl.id = pm.debit_card bcl2.id = pm.debit_card
inner join accounts a2 on
a2.id = atr.out_account_id
inner join bank_card_lend bcl_inner on
bcl_inner.id = a2.id
where where
atr.out_account_id = a.id bcl_inner.bank_id = bbi.id
and atr.create_time >= CURRENT_DATE - interval '1 months' and atr.create_time >= CURRENT_DATE - interval '1 months'
and atr.del_flag = '0' and atr.del_flag = '0'
and a2.del_flag = '0'
and a2.status = '1'
) as remark, ) as remark,
( (
select select
STRING_AGG(pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl.name ::text, STRING_AGG(distinct pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl3.name ::text,
'、' '、'
order by
pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl3.name ::text
) )
from from
pos_machine pm pos_machine pm
left join bank_card_lend bcl on left join bank_card_lend bcl3 on
bcl.id = pm.debit_card bcl3.id = pm.debit_card
where where
pm.status = '1' pm.status = '1'
and bcl.name not like '%' || a.name || '%'
and pm.del_flag = '0' and pm.del_flag = '0'
and pm.id not in and not exists (
( select 1
select from accounts_transfer_record atr
atr.pos_id inner join accounts a3 on a3.id = atr.out_account_id
from inner join bank_card_lend bcl_check on bcl_check.id = a3.id
accounts_transfer_record atr where
left join pos_machine pm on atr.pos_id = pm.id
pm.id = atr.pos_id and bcl_check.bank_id = bbi.id
where and atr.create_time >= CURRENT_DATE - interval '1 months'
atr.out_account_id = a.id and atr.del_flag = '0'
and atr.create_time >= CURRENT_DATE - interval '1 months' and a3.del_flag = '0'
and atr.del_flag = '0' and a3.status = '1'
) ) as advicePosNames )
and bcl3.name not like '%' || bbi.bank_name || '%'
) as advicePosNames
from from
accounts a accounts a
left join bank_card_lend bcl on inner join bank_card_lend bcl on
bcl.id = a.id bcl.id = a.id
inner join bank_base_info bbi on
bbi.id = bcl.bank_id
and bbi.del_flag = '0'
where where
a."type" = '2' a."type" = '2'
and a.status = '1' and a.status = '1'
and a.del_flag = '0' and a.del_flag = '0'
<if test="name != null and name != ''"> and a.name like '%'|| #{name}||'%'</if> <if test="name != null and name != ''"> and (a.name like '%'|| #{name}||'%' or bbi.bank_name like '%'|| #{name}||'%')</if>
<if test="code != null and code != ''"> and a.code like '%'|| #{code}||'%'</if> <if test="code != null and code != ''"> and a.code like '%'|| #{code}||'%'</if>
<if test="accountId != null"> and a.id = #{accountId}</if> <if test="accountId != null"> and a.id = #{accountId}</if>
<!-- 数据范围过滤 --> <!-- 数据范围过滤 -->
${params.dataScope} ${params.dataScope}
group by
bbi.id,
bbi.bank_name,
bbi.multi_account_consolidated
order by order by
a.available_limit desc sum(a.available_limit) desc
</select> </select>
</mapper> </mapper>