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