From a471b20fe8075a663f32b3a2ee0cd70c1c63baf7 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 21 十一月 2024 21:59:42 +0800
Subject: [PATCH] 业务类型查询:树查询修改,数据列表查询接口修改(处理模板套模板情况下freemarker表达式的替换处理)。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java |   45 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
index 12701d1..4fab207 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java
@@ -26,6 +26,7 @@
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.properties.WebProperties;
 import com.vci.web.service.*;
+import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -942,7 +943,9 @@
 						replaceLowMap.put(key.toLowerCase(),value);
 					});
 				}
-				Map<String, ConditionItem> ciMap = condition.getCIMap();
+				//鏀逛负閫掑綊锛屽鐞嗘ā鏉垮妯℃澘鐨勯棶棰�
+				this.recurReplaceCiMap(qt,replaceLowMap);
+				/*Map<String, ConditionItem> ciMap = condition.getCIMap();
 				ciMap.forEach((ciId,ci)->{
 					if(ci.isLeaf()) {
 						LeafInfo lInfo = ci.getLeafInfo();
@@ -965,7 +968,7 @@
 							}
 						}
 					}
-				});
+				});*/
 			}
 		}catch(PLException e){
 			logger.error(e.code,e);
@@ -978,6 +981,44 @@
 	}
 
 	/**
+	 * 閫掑綊澶勭悊ciMap涓�兼浛鎹㈤棶棰�,澶勭悊妯℃澘濂楁ā鏉跨殑闂
+	 * @param qt
+	 * @param replaceLowMap
+	 */
+	private void recurReplaceCiMap(QueryTemplate qt, Map<String,String> replaceLowMap){
+		//璺冲嚭閫掑綊
+		if(Func.isEmpty(qt)){
+			return;
+		}
+		Map<String, ConditionItem> ciMap = qt.getCondition().getCIMap();
+		ciMap.forEach((ciId,ci)->{
+			if(ci.isLeaf()) {
+				LeafInfo lInfo = ci.getLeafInfo();
+				String value = lInfo.getValue().getOrdinaryValue();
+				if(StringUtils.isNotBlank(value)){
+					if(value.contains("#")){
+						//绯荤粺鍙橀噺.鏀寔涓�涓�
+						//lInfo.getValue().setOrdinaryValue(systemVarValueMap.getOrDefault(value.toUpperCase(),""));
+					}else if(value.contains("${")){
+						//鏈�${xxxx}鐨勬柟寮�
+						if(!CollectionUtils.isEmpty(replaceLowMap)) {
+							try {
+								lInfo.getValue().setOrdinaryValue(VciBaseUtil.replaceByFreeMarker(value, replaceLowMap));
+							}catch (Throwable e){
+								logger.error("鍙兘閰嶇疆鏈夐棶棰橈紝鍦ㄨ浆鎹reemarker琛ㄨ揪寮忕殑鏃跺�欙紝娌℃湁鎵惧埌瀵瑰簲鐨勫�硷紝鐩墠琛ㄨ揪寮忎负{}",new String[]{value},e);
+							}
+						}
+					}else if(replaceLowMap.containsKey(value.toLowerCase())){
+						lInfo.getValue().setOrdinaryValue(replaceLowMap.get(value.toLowerCase()));
+					}
+				}else {
+					recurReplaceCiMap(lInfo.getValue().getQueryTemplate(),replaceLowMap);
+				}
+			}
+		});
+	}
+
+	/**
 	 * 鏍规嵁鏌ヨ妯℃澘鏉ユ煡璇㈡暟鎹�
 	 * @param queryScheme 鏌ヨ鏂规
 	 * @param conditionMap 鏌ヨ鏉′欢

--
Gitblit v1.9.3