|
@@ -13,6 +13,7 @@ import org.example.join.domain.QueryConditionOrder;
|
|
|
import org.example.join.domain.Table;
|
|
|
import org.example.join.domain.TableJoin;
|
|
|
import org.example.join.util.SqlConstant;
|
|
|
+import org.example.join.util.SqlUtil;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -23,13 +24,54 @@ public class JoinSqlProvider {
|
|
|
public static String getSql(Map<String, Object> paramMap) {
|
|
|
Sql<?> sql = (Sql<?>) paramMap.get(ISqlRunner.SQL);
|
|
|
try {
|
|
|
+
|
|
|
+ // 初始化sql上下文
|
|
|
SqlContext.init(sql, paramMap);
|
|
|
+
|
|
|
+ // 拼接逻辑删除
|
|
|
+ spliceLogic(sql);
|
|
|
+
|
|
|
+ // 创建sql字符串
|
|
|
return createSql(sql);
|
|
|
+
|
|
|
} finally {
|
|
|
SqlContext.remove();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 拼接逻辑删除
|
|
|
+ */
|
|
|
+ private static void spliceLogic(Sql<?> sql) {
|
|
|
+ if (sql.logic == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ITable> queryTableList = sql.queryTableList;
|
|
|
+ for (int i = queryTableList.size() - 1; i >= 0; i--) {
|
|
|
+ ITable iTable = queryTableList.get(i);
|
|
|
+ if (iTable instanceof Table table) {
|
|
|
+ String tableDelFlag = SqlUtil.getTableDelFlag(table);
|
|
|
+ if (ObjectUtil.isNotEmpty(tableDelFlag)) {
|
|
|
+ QueryColumn queryColumn = new QueryColumn(table, tableDelFlag);
|
|
|
+ sql.queryConditionList.add(0, new QueryCondition(queryColumn, SqlConstant.EQ, sql.logic ? 1 : 0));
|
|
|
+ }
|
|
|
+ } else if (iTable instanceof TableJoin tableJoin) {
|
|
|
+ Table table = tableJoin.getTable();
|
|
|
+ String tableDelFlag = SqlUtil.getTableDelFlag(table);
|
|
|
+ if (ObjectUtil.isNotEmpty(tableDelFlag)) {
|
|
|
+ QueryColumn queryColumn = new QueryColumn(table, tableDelFlag);
|
|
|
+ tableJoin.getQueryConditionList().add(new QueryCondition(queryColumn, SqlConstant.EQ, sql.logic ? 1 : 0));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new IllegalArgumentException("未知ITable类型");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建sql字符串
|
|
|
+ */
|
|
|
private static String createSql(Sql<?> sql) {
|
|
|
|
|
|
List<IQueryColumn> queryFieldsList = sql.queryFieldsList;
|