浏览代码

Merge branch 'master' into feature-flow

# Conflicts:
#	bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/TenantSqlInterceptor.java
chen.cheng 2 月之前
父节点
当前提交
5c7010c7f1

+ 3 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/MachineProcessMapper.java

@@ -2,6 +2,7 @@ package com.huashe.park.core.mapper;
 
 import java.util.List;
 
+import com.huashe.common.annotation.mybatis.IgnoreTenant;
 import com.huashe.park.domain.entity.MachineProcess;
 
 /**
@@ -17,6 +18,7 @@ public interface MachineProcessMapper {
      * @param id 桩机施工过程数据主键
      * @return 桩机施工过程数据
      */
+    @IgnoreTenant
     public MachineProcess selectMachineProcessById(Long id);
 
     /**
@@ -25,6 +27,7 @@ public interface MachineProcessMapper {
      * @param machineProcess 桩机施工过程数据
      * @return 桩机施工过程数据集合
      */
+    @IgnoreTenant
     public List<MachineProcess> selectMachineProcessList(MachineProcess machineProcess);
 
     /**

+ 3 - 0
bd-park/park-backend/park-core/src/main/java/com/huashe/park/core/mapper/MachineProcessResultMapper.java

@@ -2,6 +2,7 @@ package com.huashe.park.core.mapper;
 
 import java.util.List;
 
+import com.huashe.common.annotation.mybatis.IgnoreTenant;
 import com.huashe.common.annotation.mybatis.Tenant;
 import com.huashe.park.domain.dto.cons.ConsUnitResult;
 import com.huashe.park.domain.entity.MachineProcessResult;
@@ -19,6 +20,7 @@ public interface MachineProcessResultMapper {
      * @param id 桩机施工结果数据(2025-02-26版协议)主键
      * @return 桩机施工结果数据(2025-02-26版协议)
      */
+    @IgnoreTenant
     public MachineProcessResult selectMachineProcessResultById(Long id);
 
     /**
@@ -27,6 +29,7 @@ public interface MachineProcessResultMapper {
      * @param machineProcessResult 桩机施工结果数据(2025-02-26版协议)
      * @return 桩机施工结果数据(2025-02-26版协议)集合
      */
+    @IgnoreTenant
     public List<MachineProcessResult> selectMachineProcessResultList(MachineProcessResult machineProcessResult);
 
     /**

+ 14 - 13
bd-park/park-backend/park-infrastructure/src/main/java/com/huashe/park/infrastructure/cfg/mybatis/TenantSqlInterceptor.java

@@ -32,6 +32,7 @@ import net.sf.jsqlparser.statement.Statement;
 import net.sf.jsqlparser.statement.select.PlainSelect;
 import net.sf.jsqlparser.statement.select.Select;
 import net.sf.jsqlparser.statement.select.SelectBody;
+import net.sf.jsqlparser.statement.select.SubSelect;
 
 @Intercepts({
     @Signature(type = StatementHandler.class, method = "prepare", args = {
@@ -49,7 +50,7 @@ public class TenantSqlInterceptor extends BaseInterceptor implements Interceptor
         // 获取原始 SQL 和 MappedStatement
         String originalSql = (String) metaObject.getValue("delegate.boundSql.sql");
         MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
-        Pair<Method,Boolean> mapperMethod = getMapperMethod(mappedStatement);
+        Pair<Method, Boolean> mapperMethod = getMapperMethod(mappedStatement);
         // 判断是否需要添加租户条件
         if (!ObjectUtils.allNotNull(mapperMethod.getKey(), getLoginUser().getUser().getTenantId())) {
             return invocation.proceed();
@@ -69,18 +70,18 @@ public class TenantSqlInterceptor extends BaseInterceptor implements Interceptor
         EqualsTo tenantCondition = new EqualsTo();
         tenantCondition.setLeftExpression(handleColumn(mapperMethod.getKey()));
         tenantCondition.setRightExpression(new LongValue(getLoginUser().getUser().getTenantId()));
-        // *_COUNT 结尾的查询方法添加租户条件
-        if (mapperMethod.getValue()) {
-            SelectBody subSelect = ((SubSelect)plainSelect.getFromItem()).getSelectBody();
-
-            if (subSelect instanceof PlainSelect) {
-                PlainSelect subPlainSelect = (PlainSelect) subSelect;
-                // 添加到原有WHERE条件
-                if (subPlainSelect.getWhere() != null) {
-                    subPlainSelect.setWhere(new AndExpression(subPlainSelect.getWhere(), tenantCondition));
-                } else {
-                    subPlainSelect.setWhere(tenantCondition);
-                }
+        // *_COUNT 结尾的查询方法且from组合查询子句添加租户条件
+        // SELECT count(0) FROM (SELECT * FROM flow_task AS t LEFT JOIN flow_user uu ON uu.associated = t.id)
+        // table_count
+        if (mapperMethod.getValue() && plainSelect.getFromItem() instanceof SubSelect) {
+            SelectBody subSelect = ((SubSelect) plainSelect.getFromItem()).getSelectBody();
+            PlainSelect subPlainSelect = (PlainSelect) subSelect;
+            // 添加到原有WHERE条件
+            if (subPlainSelect.getWhere() != null) {
+                subPlainSelect.setWhere(new AndExpression(subPlainSelect.getWhere(), tenantCondition));
+            }
+            else {
+                subPlainSelect.setWhere(tenantCondition);
             }
             // 生成修改后的 SQL
             String modifiedSql = plainSelect.toString();