From cdba4febf23c6f55346a474579361923aacf0bc9 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期一, 02 十二月 2024 14:54:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java |   88 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 66 insertions(+), 22 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 f53eb5b..f9aff20 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
@@ -1,7 +1,6 @@
 package com.vci.web.service.impl;
 
 import com.vci.client.common.oq.OQTool;
-import com.vci.client.common.providers.ClientServiceProvider;
 import com.vci.common.qt.object.*;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
@@ -15,6 +14,7 @@
 import com.vci.corba.query.data.KV;
 import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
 import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.*;
 import com.vci.starter.web.annotation.Column;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.enumpck.BooleanEnum;
@@ -24,12 +24,13 @@
 import com.vci.starter.web.util.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.pageModel.*;
 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;
+import org.apache.commons.math3.distribution.TDistribution;
 import org.dom4j.DocumentException;
 import org.dom4j.DocumentHelper;
 import org.slf4j.Logger;
@@ -154,9 +155,7 @@
 		if(btmName!=null){
 			btmName = btmName.trim().toLowerCase();
 		}
-		//todo 鐢变簬鐧诲綍闂鍚庣画闇�瑕佷慨鏀�
-//		String userid = WebUtil.getCurrentUserId();
-		String userid = "1";
+		String userid = WebUtil.getCurrentUserId();
 		if(!hasCreatedCbos.containsKey(btmName)){
 			if(StringUtils.isEmpty(userid)){
 				throw new VciBaseException(msgCodePrefix +"noHasUserid");
@@ -199,7 +198,7 @@
 		bo.versionRule = String.valueOf(btmTypeVO.getVersionRule());
 		if(StringUtils.isNotBlank(btmTypeVO.getRevisionRuleId())){
 			OsRevisionRuleVO revisionRuleVO = revisionRuleService.getRevisionRuleById(btmTypeVO.getRevisionRuleId());
-			bo.revisionValue = revisionRuleVO.getStartCode();
+			bo.revisionValue = revisionRuleVO.getInitialValue();
 		}
 
 		bo.revisionSeq = (short) 1;
@@ -895,7 +894,7 @@
 	 */
 	@Override
 	public List<BusinessObject> queryCBOByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap)
+			Map<String, String> conditionMap, Map<String, Object> replaceMap)
 			throws VciBaseException {
 		PageHelper ph = new PageHelper(-1);
 		return queryCBOByScheme(queryScheme,conditionMap,replaceMap,ph);
@@ -913,7 +912,7 @@
 	 */
 	@Override
 	public List<BusinessObject> queryCBOByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph) throws VciBaseException {
 		List<String> clauseList = new ArrayList<String>();
 		clauseList.add("*");
@@ -928,7 +927,7 @@
 	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
 	 */
 	@Override
-	public QueryTemplate getQtByName(String name, Map<String, String> replaceMap) throws VciBaseException{
+	public QueryTemplate getQtByName(String name, Map<String, Object> replaceMap) throws VciBaseException{
 		QueryTemplate qt = null;
 		try{
 			VciBaseUtil.alertNotNull(name,"鏌ヨ妯℃澘鐨勫悕绉�");
@@ -937,15 +936,18 @@
 			//鍥犱负涔嬪墠骞冲彴鐨凾ool.replaceQTValues 娌℃湁澶勭悊 ${xxx}銆傦紝 涓轰簡蹇界暐澶у皬鍐欙紝鎴戜滑杩欓噷鍗曠嫭澶勭悊 weidy@2021-3-10
 			//鎴戜滑杞崲涓哄皬鍐�
 			Condition condition = qt.getCondition();
-			Map<String,String> replaceLowMap = new HashMap<>();
+			Map<String,Object> replaceLowMap = new HashMap<>();
 			if(condition !=null && condition.getCIMap()!=null){
 				// Map<String, String> systemVarValueMap = VciSystemVarConstants.getSystemVarValueMap();
+				//杞皬鍐�
 				if(!CollectionUtils.isEmpty(replaceMap)){
 					replaceMap.forEach((key,value)->{
 						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();
@@ -968,7 +970,7 @@
 							}
 						}
 					}
-				});
+				});*/
 			}
 		}catch(PLException e){
 			logger.error(e.code,e);
@@ -978,6 +980,44 @@
 			throw new VciBaseException(this.msgCodePrefix + "qtError", new Object[]{name});
 		}
 		return qt;
+	}
+
+	/**
+	 * 閫掑綊澶勭悊ciMap涓�兼浛鎹㈤棶棰�,澶勭悊妯℃澘濂楁ā鏉跨殑闂
+	 * @param qt
+	 * @param replaceLowMap
+	 */
+	private void recurReplaceCiMap(QueryTemplate qt, Map<String,Object> 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((String) replaceLowMap.get(value.toLowerCase()));
+					}
+				}else {
+					recurReplaceCiMap(lInfo.getValue().getQueryTemplate(),replaceLowMap);
+				}
+			}
+		});
 	}
 
 	/**
@@ -992,7 +1032,7 @@
 	 */
 	@Override
 	public List<BusinessObject> queryCBOByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph, List<String> clauseList) throws VciBaseException {
 		QueryTemplate qt = getQtByName(queryScheme,replaceMap);
 		return baseQueryCBO(qt,conditionMap,ph,clauseList);
@@ -1096,7 +1136,7 @@
 	 */
 	@Override
 	public int queryCountByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap)
+			Map<String, String> conditionMap, Map<String, Object> replaceMap)
 			throws VciBaseException {
 		QueryTemplate qt = getQtByName(queryScheme,replaceMap);
 		return baseQueryCount(qt,conditionMap);
@@ -1444,7 +1484,7 @@
 	@Override
 	public <T> List<T> queryObjectByScheme(String queryScheme, Class<T> c,
 			Map<String, String> conditionMap, PageHelper ph,
-			Map<String, String> replaceMap) throws VciBaseException {
+			Map<String, Object> replaceMap) throws VciBaseException {
 		WebUtil.alertNotNull(queryScheme,"鏌ヨ鏂规");
 		//鐩存帴浠庡璞¢噷鍘绘煡璇笟鍔$被鍨嬬殑鍚嶇О
 		swapConditionMap(c,conditionMap);
@@ -2070,7 +2110,7 @@
      */
 	@Override
 	public DataGrid queryGridByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap)
+			Map<String, String> conditionMap, Map<String, Object> replaceMap)
 			throws VciBaseException {
 		return queryGridByScheme(queryScheme,conditionMap,replaceMap,new PageHelper(-1,true),null);
 	}
@@ -2086,7 +2126,7 @@
      */
 	@Override
 	public DataGrid queryGridByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph) throws VciBaseException {
 		return queryGridByScheme(queryScheme,conditionMap,replaceMap,ph,null);
 	}
@@ -2103,7 +2143,7 @@
      */
 	@Override
 	public DataGrid queryGridByScheme(String queryScheme,
-			Map<String, String> conditionMap, Map<String, String> replaceMap,
+			Map<String, String> conditionMap, Map<String, Object> replaceMap,
 			PageHelper ph, List<String> clauseList) throws VciBaseException {
 		if(ph == null){
 			ph = new PageHelper(-1,true);
@@ -2174,7 +2214,7 @@
      */
 	@Override
 	public DataGrid queryGridClassByScheme(String queryScheme, Class c,
-			Map<String, String> conditionMap,Map<String,String> replaceMap) throws VciBaseException {
+			Map<String, String> conditionMap,Map<String,Object> replaceMap) throws VciBaseException {
 		return queryGridClassByScheme(queryScheme,c,conditionMap,replaceMap,new PageHelper(-1,true));
 	}
 	
@@ -2189,7 +2229,7 @@
      */
 	@Override
 	public DataGrid queryGridClassByScheme(String queryScheme, Class c,
-			Map<String, String> conditionMap, Map<String,String> replaceMap,PageHelper ph)
+			Map<String, String> conditionMap, Map<String,Object> replaceMap,PageHelper ph)
 			throws VciBaseException {
 		if(ph == null){
 			ph = new PageHelper(-1,true);
@@ -2234,9 +2274,13 @@
 	public Map cbo2Map(BusinessObject cbo) throws VciBaseException {
 		Map<String,String> map = new HashMap<String, String>();
 		WebUtil.copyValueToMapFromCbos(cbo, map);
-		return map;
+		//TODO锛�20241128 杩囨护鎺夌┖key鍜岀┖value
+		Map<String, Object> filteredCbo2Map = map.entrySet()
+				.stream()
+				.filter(entry -> entry.getKey() != null && !entry.getKey().isEmpty() && entry.getValue() != null && !entry.getValue().toString().isEmpty())
+				.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+		return filteredCbo2Map;
 	}
-
 
     /**
      * map杞负BusinessObject

--
Gitblit v1.9.3