bladex-link忽略租户功能

Blade 未结 2 106
14988
14988 剑侠 2025-02-07 16:25

一、该问题的重现步骤是什么?

  1. 在application.yml添加了表名可以根据用户的租户id插入对应的租户数据,我自定义的sql中我希望我的管理账号查询数据时不插入当前管理账号的租户id,

下面是生成的sql 

SELECT a.company_name, a.District, COALESCE(SUM(a.quota), 0) AS totalSum, REPLACE(FORMAT(COALESCE(SUM(c.TotalUseEnergy), 0), 2), ',', '') AS totalEnergySum FROM blade_company a LEFT JOIN (SELECT tenant_id, SUM(use_energy) AS TotalUseEnergy FROM blade_carbon_data WHERE is_deleted = 0 AND YEAR(create_time) = ? AND tenant_id = '000000' GROUP BY tenant_id) c ON a.tenant_id = c.tenant_id WHERE a.District LIKE ? GROUP BY a.company_name, a.District

2. 

TenantUtil.ignore(()->);忽略提示问题

一个

TenantUtil.ignore(()->
   List<CompanyVO> useEnergyList = companyService.getUseEnergy(year,month,userId);
   );接收的List报错

换成

TenantUtil.ignore(()->
     companyService.getUseEnergy(year,month,userId);
   );

提示没有入参

3.


二、你期待的结果是什么?实际看到的又是什么?

我期待的效果是

SELECT a.company_name, a.District, COALESCE(SUM(a.quota), 0) AS totalSum, REPLACE(FORMAT(COALESCE(SUM(c.TotalUseEnergy), 0), 2), ',', '') AS totalEnergySum FROM blade_company a LEFT JOIN (SELECT tenant_id, SUM(use_energy) AS TotalUseEnergy FROM blade_carbon_data WHERE is_deleted = 0 AND YEAR(create_time) = ? GROUP BY tenant_id) c ON a.tenant_id = c.tenant_id WHERE a.District LIKE ? GROUP BY a.company_name, a.District

三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。


2条回答
  • 2025-02-07 16:46

    没有入参】的详细提示是什么,看下你的实现代码是怎么写的。

    你可以在这里调试,ignore的原理在这

    CleanShot20250207164627@2x.png

    CleanShot20250207164549@2x.png

    0 讨论(0)
  • 2025-02-07 17:06

    我更新了版本,使用

    @TenantIgnore方式,在mapper的sql语句是

     SELECT

            '6505' AS District,

            COALESCE(SUM(a.quota), 0) AS totalSum,

            REPLACE(FORMAT(COALESCE(SUM(c.TotalUseEnergy), 0),2),',','') AS totalEnergySum

            FROM

            blade_company a

            LEFT JOIN (

            SELECT

            tenant_id,

            SUM(use_energy) AS TotalUseEnergy

            FROM

            blade_carbon_data

            <where>

                is_deleted = 0

                            <if test="param1!=null">

                                and YEAR(create_time) = #{param1}

                            </if>

                            <if test="param2!=null">

                                and MONTH(create_time) = #{param2}

                            </if>

            </where>


            GROUP BY

            tenant_id

            ) c ON a.tenant_id = c.tenant_id

            where a.is_deleted = 0

            UNION ALL


            SELECT

            a.District,

            COALESCE(SUM(a.quota), 0) AS DistrictQuota,

            REPLACE(FORMAT(COALESCE(SUM(c.TotalUseEnergy), 0),2),',','') AS DistrictUseEnergy

            FROM

            blade_company a

            LEFT JOIN (

            SELECT

            tenant_id,

            SUM(use_energy) AS TotalUseEnergy

            FROM

            blade_carbon_data

            <where>

                is_deleted = 0

                <if test="param1!=null">

                    and YEAR(create_time) = #{param1}

                </if>

                <if test="param2!=null">

                    and MONTH(create_time) = #{param2}

                </if>

            </where>

            GROUP BY

            tenant_id

            ) c ON a.tenant_id = c.tenant_id


            where a.is_deleted = 0

            GROUP BY

            a.District

    执行生成的语句是

    select '6505' as District, COALESCE(sum(a.quota), 0) as totalSum , REPLACE(FORMAT(COALESCE(sum(c.TotalUseEnergy), 0), 2), ',', '') as totalEnergySum from blade_company a left join ( select tenant_id, sum(use_energy) as TotalUseEnergy from blade_carbon_data where is_deleted = 0 and tenant_id = '000000' group by tenant_id ) c on a.tenant_id = c.tenant_id where a.is_deleted = 0 union all select a.District, COALESCE(sum(a.quota), 0) as DistrictQuota , REPLACE(FORMAT(COALESCE(sum(c.TotalUseEnergy), 0), 2), ',', '') as DistrictUseEnergy from blade_company a left join ( select tenant_id, sum(use_energy) as TotalUseEnergy from blade_carbon_data where is_deleted = 0 and tenant_id = '000000' group by tenant_id ) c on a.tenant_id = c.tenant_id where a.is_deleted = 0 group by a.District


    0 讨论(0)
提交回复