From badf10af5578f3fe4151824670bb7a794efc63dd Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期二, 03 十二月 2024 17:12:04 +0800
Subject: [PATCH] 数据授权
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebBoServiceImpl.java | 90 +++++++++++++++++++++++++++++++++-----------
1 files changed, 67 insertions(+), 23 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 611d40d..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;
@@ -613,7 +612,7 @@
// BusinessObject cbo = new BusinessObject();
// cbo = bo;
queryEnumText(bo,enumAttrName);
-// allCbos.add(cbo);
+ allCbos.add(bo);
}
//鍥犱负淇敼浜嗘煡璇㈢殑鏂瑰紡锛屾墍浠ュ氨涓嶉渶瑕佸崟鐙煡璇㈠弬鐓�
}
@@ -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);
@@ -981,6 +983,44 @@
}
/**
+ * 閫掑綊澶勭悊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);
+ }
+ }
+ });
+ }
+
+ /**
* 鏍规嵁鏌ヨ妯℃澘鏉ユ煡璇㈡暟鎹�
* @param queryScheme 鏌ヨ鏂规
* @param conditionMap 鏌ヨ鏉′欢
@@ -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,10 +2274,14 @@
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
* @param mapList map鍒楄〃
--
Gitblit v1.10.0