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;
/** 银行名称 */
@ApiModelProperty(value="银行名称")
private String bankName;
/** 是否多账户合并出账10否 */
@ApiModelProperty(value="是否多账户合并出账")
private String multiAccountConsolidated;
/** 最新交易时间 */
@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
a."name",
a.code,
a.available_limit as availableLimit,
bcl.bill_date || '日' as billDateName,
bbi.bank_name as name,
STRING_AGG(distinct a.code, '、' order by a.code) as code,
sum(a.available_limit) as availableLimit,
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
STRING_AGG(to_char(atr.create_time,
'yyyy-MM-dd')|| '-' || pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl.name || '-刷卡' ||atr.amount ::text,
STRING_AGG(distinct to_char(atr.create_time,
'yyyy-MM-dd')|| '-' || pm.name || '(' || pm.merchant_name || ')'|| '-' ||bcl2.name||'-' ||a2.name||a2.code || '-刷卡' ||atr.amount ::text,
'、'
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
accounts_transfer_record atr
left join pos_machine pm on
pm.id = atr.pos_id
left join bank_card_lend bcl on
bcl.id = pm.debit_card
left join bank_card_lend bcl2 on
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
atr.out_account_id = a.id
bcl_inner.bank_id = bbi.id
and atr.create_time >= CURRENT_DATE - interval '1 months'
and atr.del_flag = '0'
and a2.del_flag = '0'
and a2.status = '1'
) as remark,
(
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
pos_machine pm
left join bank_card_lend bcl on
bcl.id = pm.debit_card
left join bank_card_lend bcl3 on
bcl3.id = pm.debit_card
where
pm.status = '1'
and bcl.name not like '%' || a.name || '%'
and pm.del_flag = '0'
and pm.id not in
(
select
atr.pos_id
from
accounts_transfer_record atr
left join pos_machine pm on
pm.id = atr.pos_id
and not exists (
select 1
from accounts_transfer_record atr
inner join accounts a3 on a3.id = atr.out_account_id
inner join bank_card_lend bcl_check on bcl_check.id = a3.id
where
atr.out_account_id = a.id
atr.pos_id = pm.id
and bcl_check.bank_id = bbi.id
and atr.create_time >= CURRENT_DATE - interval '1 months'
and atr.del_flag = '0'
) ) as advicePosNames
and a3.del_flag = '0'
and a3.status = '1'
)
and bcl3.name not like '%' || bbi.bank_name || '%'
) as advicePosNames
from
accounts a
left join bank_card_lend bcl on
inner join bank_card_lend bcl on
bcl.id = a.id
inner join bank_base_info bbi on
bbi.id = bcl.bank_id
and bbi.del_flag = '0'
where
a."type" = '2'
and a.status = '1'
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="accountId != null"> and a.id = #{accountId}</if>
<!-- 数据范围过滤 -->
${params.dataScope}
group by
bbi.id,
bbi.bank_name,
bbi.multi_account_consolidated
order by
a.available_limit desc
sum(a.available_limit) desc
</select>
</mapper>