干燥机配套车间生产管理系统/云平台服务端
baoshiwei
2023-03-10 58d42ccf875b120f40fddce63752298e916e0b0b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//package org.jeecg.config.mybatis;
//
//import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
//import net.sf.jsqlparser.expression.BinaryExpression;
//import net.sf.jsqlparser.expression.Expression;
//import net.sf.jsqlparser.expression.Parenthesis;
//import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
//import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
//import net.sf.jsqlparser.expression.operators.relational.*;
//import net.sf.jsqlparser.schema.Column;
//import net.sf.jsqlparser.schema.Table;
//import net.sf.jsqlparser.statement.select.*;
//
//import java.util.List;
//
///**
// * 复写租户条件
// */
//public class JeecgTenantParser extends TenantSqlParser {
//
//    /**
//     * @param expression
//     * @param table
//     * @return
//     */
//    protected Expression processTableAlias(Expression expression, Table table) {
//        String tableAliasName;
//        if (table.getAlias() == null) {
//            tableAliasName = table.getName();
//        } else {
//            tableAliasName = table.getAlias().getName();
//        }
//
//        // in
//        if (expression instanceof InExpression) {
//            InExpression in = (InExpression) expression;
//            if (in.getLeftExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) in.getLeftExpression(), tableAliasName);
//            }
//
//            // 比较操作
//        } else if (expression instanceof BinaryExpression) {
//            BinaryExpression compare = (BinaryExpression) expression;
//            if (compare.getLeftExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) compare.getLeftExpression(), tableAliasName);
//            } else if (compare.getRightExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) compare.getRightExpression(), tableAliasName);
//            }
//
//            // between
//        } else if (expression instanceof Between) {
//            Between between = (Between) expression;
//            if (between.getLeftExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) between.getLeftExpression(), tableAliasName);
//            }
//        }
//        return expression;
//    }
//
//    private void setTableAliasNameForColumn(Column column, String tableAliasName) {
//        column.setColumnName(tableAliasName + "." + column.getColumnName());
//    }
//
//    /**
//     * 默认是按 tenant_id=1 按等于条件追加
//     *
//     * @param currentExpression 现有的条件:比如你原来的sql查询条件
//     * @param table
//     * @return
//     */
//    @Override
//    protected Expression builderExpression(Expression currentExpression, Table table) {
//        final Expression tenantExpression = this.getTenantHandler().getTenantId(true);
//        Expression appendExpression;
//        if (!(tenantExpression instanceof SupportsOldOracleJoinSyntax)) {
//            appendExpression = new EqualsTo();
//            ((EqualsTo) appendExpression).setLeftExpression(this.getAliasColumn(table));
//            ((EqualsTo) appendExpression).setRightExpression(tenantExpression);
//        } else {
//            appendExpression = processTableAlias(tenantExpression, table);
//        }
//        if (currentExpression == null) {
//            return appendExpression;
//        }
//        if (currentExpression instanceof BinaryExpression) {
//            BinaryExpression binaryExpression = (BinaryExpression) currentExpression;
//            if (binaryExpression.getLeftExpression() instanceof FromItem) {
//                processFromItem((FromItem) binaryExpression.getLeftExpression());
//            }
//            if (binaryExpression.getRightExpression() instanceof FromItem) {
//                processFromItem((FromItem) binaryExpression.getRightExpression());
//            }
//        } else if (currentExpression instanceof InExpression) {
//            InExpression inExp = (InExpression) currentExpression;
//            ItemsList rightItems = inExp.getRightItemsList();
//            if (rightItems instanceof SubSelect) {
//                processSelectBody(((SubSelect) rightItems).getSelectBody());
//            }
//        }
//        if (currentExpression instanceof OrExpression) {
//            return new AndExpression(new Parenthesis(currentExpression), appendExpression);
//        } else {
//            return new AndExpression(currentExpression, appendExpression);
//        }
//    }
//
//    @Override
//    protected void processPlainSelect(PlainSelect plainSelect, boolean addColumn) {
//        FromItem fromItem = plainSelect.getFromItem();
//        if (fromItem instanceof Table) {
//            Table fromTable = (Table) fromItem;
//            if (!this.getTenantHandler().doTableFilter(fromTable.getName())) {
//                plainSelect.setWhere(builderExpression(plainSelect.getWhere(), fromTable));
//                if (addColumn) {
//                    plainSelect.getSelectItems().add(new SelectExpressionItem(new Column(this.getTenantHandler().getTenantIdColumn())));
//                }
//            }
//        } else {
//            processFromItem(fromItem);
//        }
//        List<Join> joins = plainSelect.getJoins();
//        if (joins != null && joins.size() > 0) {
//            joins.forEach(j -> {
//                processJoin(j);
//                processFromItem(j.getRightItem());
//            });
//        }
//    }
//
//}