Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2025-10-21 14:16:46 +08:00
2 changed files with 480 additions and 9 deletions

File diff suppressed because one or more lines are too long

View File

@@ -19,6 +19,7 @@ import net.sf.jsqlparser.expression.*;
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
import net.sf.jsqlparser.expression.operators.relational.GreaterThan;
import net.sf.jsqlparser.expression.operators.relational.InExpression;
import javax.annotation.Resource;
@@ -195,14 +196,18 @@ public class DeptDataPermissionRule implements DataPermissionRule {
Expression returnExpression = null;
String[] columnNames = columnName.split(",");
for (String column : columnNames) {
Expression deptExpression = new InExpression(MyBatisUtils.buildColumn(tableName, tableAlias, column),
new ExpressionList(CollectionUtils.convertList(deptIds, LongValue::new)));
for (Long deptId : deptIds) {
Expression deptExpression = new GreaterThan()
.withLeftExpression(new Function().withName("FIND_IN_SET")
.withParameters(new ExpressionList(new StringValue(deptId.toString()), MyBatisUtils.buildColumn(tableName, tableAlias, column))))
.withRightExpression(new LongValue(0));
if (Objects.isNull(returnExpression)) {
returnExpression = deptExpression;
} else {
returnExpression = new Parenthesis(new OrExpression(returnExpression, deptExpression));
}
}
}
return returnExpression;
}