From 1b5a723592ea63e5eec0bdeef7855b9c40e9df71 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期四, 03 七月 2025 17:46:35 +0800
Subject: [PATCH] art:三保-设计修改

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/aspect/FieldBatchQuery.java |  135 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 135 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/aspect/FieldBatchQuery.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/aspect/FieldBatchQuery.java
new file mode 100644
index 0000000..246db80
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/aspect/FieldBatchQuery.java
@@ -0,0 +1,135 @@
+package org.jeecg.modules.system.aspect;
+
+import cn.hutool.core.util.ArrayUtil;
+
+import java.util.*;
+import java.util.function.BiConsumer;
+
+/**
+ * 鎵归噺鏌ヨ鍣�
+ */
+public class FieldBatchQuery {
+
+    // key=鏌ヨ瑕佺礌=table+paramName锛� value=鏌ヨ鏉′欢
+    private Map<String, QueryParam> queryBatch = new HashMap<>();
+
+    /**
+     * 渚垮埄鏌ヨ瑕佺礌
+     * @param action
+     */
+    public void forEach(BiConsumer<? super String, ? super QueryParam> action) {
+        this.queryBatch.forEach(action);
+    }
+
+    /**
+     * 鏌ヨ琛ㄦ暟閲�
+     * @return
+     */
+    public int size() {
+        return queryBatch.size();
+    }
+
+    /**
+     * 鏌ユ壘鏌ヨ缁撴灉
+     * @param tableName
+     * @param paramName
+     * @param paramValue
+     * @param column
+     * @return
+     */
+    public Object findResult(String tableName, String[] paramName, String[] paramValue, String column) {
+        String queryKey = tableName + "()" + ArrayUtil.join(paramName, ",");
+        if(!this.queryBatch.containsKey(queryKey)) return null;
+
+        return this.queryBatch.get(queryKey).findResult(paramValue, column);
+    }
+
+    /**
+     * 淇濆瓨鏌ヨ鏉′欢
+     * @param tableName 鏌ヨ琛ㄥ悕
+     * @param textName 鏌ヨ瀛楁鍚嶇О
+     * @param paramName 鏌ヨ鍙傛暟鍚嶇О
+     * @param paramValue 鏌ヨ鍙傛暟鍊�
+     */
+    public void put(String tableName, String textName, String[] paramName, String[] paramValue) {
+        String queryKey = tableName + "()" + ArrayUtil.join(paramName, ",");
+
+        QueryParam queryParams;
+        if(this.queryBatch.containsKey(queryKey)){
+            queryParams = this.queryBatch.get(queryKey);
+        }else{
+            queryParams = new QueryParam(tableName, paramName);
+            this.queryBatch.put(queryKey, queryParams);
+        }
+
+        // 娣诲姞鏌ヨ缁撴灉column鍚嶇О
+        queryParams.addTextName(textName);
+        // 娣诲姞鏌ヨ鍙傛暟
+        queryParams.addParamValue(paramValue);
+    }
+
+    public static class QueryParam {
+        private String queryTable;
+        private Set<String> columns = new HashSet<>();
+        private Set<String> paramValueSet = new HashSet<>();
+        private String[] paramName;
+        private List<Map> queryResult = new ArrayList<>();
+        private Map<String, Integer> resultIndex = new HashMap<>();
+
+        public QueryParam(String tableName, String[] column) {
+            this.queryTable = tableName;
+            this.paramName = column;
+        }
+
+        public void addTextName(String textName) {
+            this.columns.add(textName);
+        }
+
+        public void addParamValue(String[] paramValue) {
+            paramValueSet.add(ArrayUtil.join(paramValue, ","));
+        }
+
+        public String getQueryTable() {
+            return queryTable;
+        }
+
+        public String[] getColumns() {
+            String[] ret = new String[this.columns.size()];
+            this.columns.toArray(ret);
+            return ret;
+        }
+
+        public String getParamName() {
+            return "concat(" + ArrayUtil.join(this.paramName, ",',',") + ")";
+        }
+
+        public String[] getParamValues() {
+            String[] ret = new String[this.paramValueSet.size()];
+            this.paramValueSet.toArray(ret);
+            return ret;
+        }
+
+        public void setQueryResult(List<Map> queryResult) {
+            this.queryResult = queryResult;
+        }
+
+        public Object findResult(String[] paramValue, String column) {
+            if(paramValue == null) return null;
+            String value = ArrayUtil.join(paramValue, ",");
+
+            if(this.resultIndex.containsKey(value)){
+                return this.queryResult.get(this.resultIndex.get(value)).get(column);
+            }
+
+            for (int i = 0; i < this.queryResult.size(); i++) {
+                Map<String, Object> map = queryResult.get(i);
+                if(value.equals(map.get("paramValue"))){
+                    this.resultIndex.put(value, i);
+                    return map.get(column);
+                }
+            }
+
+            return null;
+        }
+    }
+}

--
Gitblit v1.9.3