From 61b1a5ee0414ce51e86b034464ca79edb06029f9 Mon Sep 17 00:00:00 2001 From: wangting <675591594@qq.com> Date: 星期五, 22 十一月 2024 15:33:46 +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/UIDataServiceImpl.java | 104 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 94 insertions(+), 10 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java index b526924..5497ddb 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java @@ -5,6 +5,7 @@ import com.vci.corba.omd.btm.BizType; import com.vci.corba.omd.data.*; import com.vci.corba.omd.lcm.LifeCycle; +import com.vci.corba.omd.ltm.LinkType; import com.vci.dto.*; import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus; import com.vci.frameworkcore.lcstatuspck.ReleaseDataLCStatus; @@ -30,6 +31,7 @@ import com.vci.web.query.UILinkTypeDataQuery; import com.vci.web.query.UITreeQuery; 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; @@ -185,7 +187,7 @@ queryFieldList.add("creator_name"); queryFieldList.add("lastmodifier_name"); //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹� - Map<String, String> replaceMap = wrapperReplaceMap( dataGridQuery.getSourceData()); + Map<String, String> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData()); if(dataGridQuery.isLinkTypeFlag()){ UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); @@ -345,7 +347,7 @@ * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 */ @Override - public List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException { + public List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException, PLException { VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",treeQuery.getComponentOid(),"鏍戞墍鍦ㄧ殑缁勪欢鐨勪富閿�"); Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap(); UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap); @@ -367,7 +369,7 @@ if(treeQuery.getExtandParamsMap() != null){ treeQuery.getConditionMap().putAll(treeQuery.getExtandParamsMap()); } - String parentFieldName = treeQuery.getParentFieldName(); + String parentFieldName = treeQuery.getParentFieldName(); if(parentFieldName.contains(",")){ parentFieldName = parentFieldName.split(",")[0]; } @@ -391,7 +393,7 @@ if(StringUtils.isBlank(treeDefineVO.getLinkType())){ //杩欎釜鏄笟鍔$被鍨嬬殑鑷弬鐓� //浠ュ墠鐨勫钩鍙版病鏈夊鑷弬鐓ц繖绉嶆湁鍏ㄩ儴鏌ヨ鐨� - OsBtmTypeVO btmTypeVO = btmService.getBtmById(treeDefineVO.getBtmType(),attributeVOMap); + OsBtmTypeVO btmTypeVO = btmService.getBtmByName(treeDefineVO.getBtmType()); queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList())); queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values()); @@ -410,7 +412,7 @@ if(StringUtils.isBlank(parentFieldNameAndValue) || !parentFieldNameAndValue.contains(",")){ throw new VciBaseException("閰嶇疆鐨勪俊鎭湁璇�傚湪娌℃湁鍦ㄨ彍鍗曟垨鑰呮潵婧愭暟鎹缃牴鑺傜偣鐨勬煡璇㈡ā鏉挎椂锛岃鍦ㄦ爲鐨勩�愬弬鐓ф爲銆戜笂璁剧疆涓婄骇瀛楁鐨勫悕绉板拰鏍硅妭鐐圭殑鏌ヨ鐨勫�笺�傛瘮濡倄xxx,yyy銆傚叾涓瓁xxx鏄笂绾у瓧娈佃嫳鏂囧悕绉�"); } - parentFieldName= parentFieldNameAndValue.split(",")[0]; + parentFieldName = parentFieldNameAndValue.split(",")[0]; String rootQueryValue = parentFieldNameAndValue.split(",")[1]; treeQuery.getConditionMap().put(parentFieldName,rootQueryValue); replaceMap.put(parentFieldName,rootQueryValue); @@ -445,8 +447,10 @@ return cbo2Trees(thisChildren, valueField, textField, parentFieldName, treeQuery.isShowCheckBox(), null); } }else{ - OsLinkTypeVO linkTypeVO = linkTypeService.getLinkTypeById(treeDefineVO.getLinkType()); - queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList())); + //OsLinkTypeVO linkTypeVO = linkTypeService.getLinkTypeById(treeDefineVO.getLinkType()); + LinkType linkType = platformClientUtil.getLinkTypeService().getLinkType(treeDefineVO.getLinkType()); + //queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList())); + queryFieldList.addAll(Arrays.asList(linkType.attributes)); queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values()); addQueryField(queryFieldList,valueField); @@ -540,6 +544,62 @@ return cloAndCbo2Trees(loService.queryCLOAndBoByLinkType(linkTypeDataQuery),valueField,textField,parentFieldName,treeQuery.isShowCheckBox(),treeQuery.getParentOid()); } } + } + + /** + * 鑾峰彇鏁版嵁(鏍规嵁鏌ヨ妯℃澘鏌ヨ瀵硅薄锛岃繑鍥炵殑缁撴瀯鎸夌収ui瀹氫箟锛屽畾涔夌殑妯℃澘绫诲瀷杩斿洖) + * @param treeQuery 鏍戝舰鏌ヨ鏉′欢 + * @return 鏍戝舰鏁版嵁 + * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 + */ + @Override + public BaseResult getDataByTemp(UITreeQuery treeQuery) throws VciBaseException, PLException { + VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getComponentOid(),"褰撳墠缁勪欢鐨勪富閿�"); + //1銆佸厛鏌ヨ椤甸潰瀹氫箟缁勪欢 + Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap(); + UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap); + if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){ + throw new VciBaseException("鏈幏鍙栧埌鐣岄潰閰嶇疆淇℃伅锛�"); + } + // 2銆佹牴鎹厤缃殑鏌ヨ妯℃澘鏌ヨ鏁版嵁(闇�瑕佽�冭檻鍏ㄩ潰涓�鐐�), + // 杩欏効鏍规嵁褰撳墠绫诲瀷鏉ヨ幏鍙栨槸浠�涔堢被鍨嬬殑鏌ヨ妯℃澘锛岀劧鍚庡仛瀵瑰簲鐨勬煡璇㈠鐞� + + UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO(); + String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())?treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()):treeDefineVO.getQueryTemplateName()); + Map<String, String> replaceMap = wrapperReplaceMap(treeQuery.getSourceData()); + List<String> queryFieldList = new ArrayList<>(); + String valueField = treeQuery.isLinkTypeFlag()?(!treeDefineVO.isOrientation()?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid"); + String textField = StringUtils.isNotBlank(treeDefineVO.getTreeNodeExpression())?treeDefineVO.getTreeNodeExpression():(StringUtils.isNotBlank(treeQuery.getTextField())?treeQuery.getTextField():"name"); + String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent(); + String parentFieldName = treeQuery.getParentFieldName(); + if(parentFieldName.contains(",")){ + parentFieldName = parentFieldName.split(",")[0]; + } + queryFieldList.add("creator_name"); + queryFieldList.add("lastmodifier_name"); + OsBtmTypeVO btmTypeVO = btmService.getBtmByName(treeDefineVO.getBtmType()); + queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList())); + queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values()); + + addQueryField(queryFieldList,valueField); + addQueryField(queryFieldList,textField); + List<BusinessObject> rootCbos = boService.queryCBOByScheme(queryTemplate, null, replaceMap); + + //3銆佹牴鎹笉鍚岀殑缁勪欢杩斿洖涓嶅悓鐨勬暟鎹被鍨嬶紙鏍戙�佸垪琛ㄣ�佹爲琛ㄣ�佽嚜瀹氫箟妯℃澘銆佽〃鍗曠瓑锛� + List<Tree> rootTreeList = null; + if(!CollectionUtils.isEmpty(rootCbos)){ + rootTreeList = cbo2Trees(rootCbos,valueField,StringUtils.isBlank(rootExpress)?textField:rootExpress,parentFieldName,treeQuery.isShowCheckBox(),null); + TreeQueryObject treeQueryObject = new TreeQueryObject(); + treeQueryObject.setValueField(valueField); + treeQueryObject.setTextField(textField); + treeQueryObject.setParentFieldName(parentFieldName); + treeQueryObject.setShowCheckBox(treeQuery.isShowCheckBox()); + if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){ + treeQueryObject.setQueryAllLevel(false); + } + //queryTreeForBO(rootTreeList,treeDefineVO.getQueryTemplateName(),queryFieldList,treeQueryObject); + } + return BaseResult.tree(rootTreeList); } /** @@ -648,9 +708,28 @@ clo = boAndLO.lo; Map<String,String> cloMap = loService.clo2Map(clo); Map<String,String> cbo2Map = boService.cbo2Map(cbo); + //灏嗛摼鎺ョ被鍨嬬殑灞炴�т篃鏀捐繘杩涜杩斿洖 + String linkName = Func.isNotBlank(cloMap.get("linktypename")) ? cloMap.get("linktypename"):parentFieldName; + Map<String, String> returnMap = new HashMap<>(); + cloMap.forEach((key,value)->{ + //杩囨护鎺夌┖鍊� + if(!returnMap.containsKey(linkName + key) && Func.isNotBlank(key) || Func.isNotBlank(value)){ + returnMap.put(linkName + key,value); + } + }); + //杩囨护鎺夌┖鍊硷紝鐢ㄤ綔杩斿洖鐨刴ap + cbo2Map.entrySet().stream().forEach(entry -> { + String key = entry.getKey(); + String value = entry.getValue(); + if (!returnMap.containsKey(key) && Func.isNotBlank(key) && Func.isNotBlank(value)) { + returnMap.put(key,value); + } + }); + if(!CollectionUtils.isEmpty(cbo2Map)){ cbo2Map.forEach((key,value)->{ - cloMap.put(parentFieldName + "." + key,value); + //TODO: 杩欏効涓哄暐瑕佹嫾鎺ヤ笂parentFieldName锛屽鑷村悗闈reemarker琛ㄨ揪寮忔棤娉曟纭浛鎹� + cloMap.put(/*parentFieldName + "." +*/ key,value); }); } tree.setOid(getValueByExpressForBOAndLO(cloMap,cbo2Map,valueField)); @@ -665,7 +744,7 @@ } } - tree.setAttributes(cbo2Map); + tree.setAttributes(returnMap); tree.setIndex(i[0] + ""); i[0]++; tree.setChecked(showCheckBox); @@ -1594,7 +1673,12 @@ conditionMap.put(usedAttributeVO.getId(),QueryOptionConstant.IN + "(" + VciBaseUtil.toInSql(oids.toArray(new String[0])) + ")"); if(StringUtils.isNotBlank(usedAttributeVO.getPkBtmType())) { if (boService.queryCount(usedAttributeVO.getPkBtmType(), conditionMap) > 0) { - OsBtmTypeVO btmTypeVO = btmService.getBtmById(usedAttributeVO.getPkBtmType()); + OsBtmTypeVO btmTypeVO = null; + try { + btmTypeVO = btmService.getBtmById(usedAttributeVO.getPkBtmType()); + } catch (PLException e) { + e.printStackTrace(); + } throw new VciBaseException("鏁版嵁鍦ㄣ��" + btmTypeVO.getName() + "銆戜腑鐨勫瓧娈礫" + usedAttributeVO.getName() + "]閲岃寮曠敤.涓嶈兘鍒犻櫎"); } }else{ -- Gitblit v1.9.3