一、该问题的重现步骤是什么?
在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
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
【没有入参】的详细提示是什么,看下你的实现代码是怎么写的。
你可以在这里调试,ignore的原理在这
我更新了版本,使用
@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
扫一扫访问 Blade技术社区 移动端