From 19ec0269a9ce3a57ccfcd1d36585bb1c31977b60 Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期五, 10 一月 2025 10:25:22 +0800 Subject: [PATCH] ui定义为树或树表时默认设置orientation为positive --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java | 748 +++++++++++++++++++++++++++++++-------------------------- 1 files changed, 408 insertions(+), 340 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java index 6c38eee..78105b6 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java @@ -27,6 +27,10 @@ import com.vci.starter.web.annotation.bus.VciChangeDataPlugin; import com.vci.starter.web.constant.FrameWorkLcStatusConstant; import com.vci.starter.web.constant.QueryOptionConstant; +import com.vci.starter.web.dto.BaseLinkModelDTO; +import com.vci.starter.web.dto.BaseLinkModelDTOList; +import com.vci.starter.web.dto.BaseModelDTO; +import com.vci.starter.web.dto.BaseModelDTOList; import com.vci.starter.web.enumpck.VciChangeDocumentTypeEnum; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.model.BaseModel; @@ -40,7 +44,6 @@ import com.vci.web.service.*; import com.vci.web.service.impl.WebBoServiceImpl; import com.vci.web.service.impl.WebLoServiceImpl; -import com.vci.web.service.uidataservice.UIDataBaseServiceI; import com.vci.web.service.uidataservice.UIDataCommonServiceI; import com.vci.web.util.PlatformClientUtil; import com.vci.web.util.WebUtil; @@ -56,7 +59,6 @@ import java.util.stream.Collectors; import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST; - /** * UI涓婄殑鏁版嵁鏌ヨ(閫氱敤鏌ヨ鏈嶅姟) @@ -150,78 +152,97 @@ */ @Override public DataGrid getDataForGrid(UIDataGridQuery dataGridQuery) throws VciBaseException, PLException { - VciBaseUtil.alertNotNull(dataGridQuery,"鏌ヨ瀵硅薄",dataGridQuery.getBtmname(),"涓氬姟绫诲瀷",dataGridQuery.getTableDefineId()); + VciBaseUtil.alertNotNull(dataGridQuery,"鏌ヨ瀵硅薄",dataGridQuery.getBtmName(),"涓氬姟绫诲瀷",dataGridQuery.getTableDefineId()); // TODO: 2024/12/4 Ludc 鍓嶇浼犺繃鏉ョ殑sourceData鍙傛暟鐨剉laue鍙兘鏄痡son杩欏効鍋氫竴涓嬪鐞� if(Func.isNotEmpty(dataGridQuery.getSourceData())){ dataGridQuery.setSourceData(this.convertMapValueJson2Map(dataGridQuery.getSourceData())); } - //鍏堝垽鏂煡璇㈡ā鏉� - UITableDefineVO tableDefineVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(),null).getTableDefineVO(); - String queryTemplate = Func.isNotEmpty(dataGridQuery.getSourceData())? (String) dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()) :tableDefineVO.getQueryTemplateName(); - if(StringUtils.isBlank(queryTemplate)){ - //璇存槑娌℃湁璁剧疆鏌ヨ妯℃澘锛岄渶瑕佺湅鐪嬪湪杩欎釜琛ㄦ牸鎵�鍦ㄧ殑缁勪欢鏈夋病鏈夎缃� - tableDefineVO = uiEngineService.getTableById(dataGridQuery.getBtmname(), dataGridQuery.getTableDefineId()); - queryTemplate = tableDefineVO.getQueryTemplateName(); - } - //鐪嬬湅鏈夋病鏈夎嚜瀹氫箟鐨凷QL - Set<String> queryFieldList = new HashSet<>(); - tableDefineVO.getCols().forEach(cols->{ - //鑾峰彇鍙傜収 - List<UITableFieldVO> referFieldList = cols.stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType())).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(referFieldList)){ - referFieldList.stream().forEach(field->{ - queryFieldList.add(field.getField()); - if(StringUtils.isNotBlank(field.getShowField())) { - queryFieldList.add(field.getShowField()); - } - }); + UIComponentVO componentVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(), null); + UITableDefineVO tableDefineVO = componentVO.getTableDefineVO(); + //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被 + String bsCustQueryCLsOrUrl = componentVO.getBsDataModel() ; + // TODO: 2024/12/5 Ludc 鏍规嵁UI閰嶇疆鐨勮繘琛屽垽鏂槸鍚︿娇鐢ㄨ嚜瀹氫箟绫昏繘琛屾煡璇�(鑷畾涔夌被鏌ヨ鏂瑰紡浼樺厛绾ч珮浜庢煡璇㈡ā鏉�) + if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){ + //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉� + try { + // 鑾峰彇绫荤殑 Class 瀵硅薄 + Class<?> clazz = Class.forName(bsCustQueryCLsOrUrl.replace("@","")); + // 鍒涘缓绫荤殑瀹炰緥 + Object instance = clazz.getDeclaredConstructor().newInstance(); + // 鑾峰彇鏂规硶getDataForGrid锛堣鏂规硶鏄帴鍙d腑缁熶竴瀹氫箟鐨勬柟娉曪級 + Method method = clazz.getMethod("getDataForGrid", UIDataGridQuery.class); + // 璋冪敤鏂规硶 + DataGrid dataGrid = (DataGrid) method.invoke(instance, dataGridQuery); + return dataGrid; + }catch (Exception e){ + e.printStackTrace(); + throw new VciBaseException("鑾峰彇琛ㄦ牸鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage()); } - Map<String, String> comboxMap = cols.stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey())); - if(!CollectionUtils.isEmpty(comboxMap)) { - comboxMap.forEach((field,comboxKey)->{ - queryFieldList.add(comboxKey+"_" + field.substring(0,field.length()-4) + "#" + field); - }); - } - queryFieldList.addAll(cols.stream().filter(s -> !UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType()) && !UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType())).map(s -> s.getField()).collect(Collectors.toList())); - }); - - //閽堝鍙傜収鐨勶紝鎴戜滑闇�瑕佹坊鍔犲搴旂殑 - //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬� - OsBtmTypeVO btmTypeVO = null; - OsLinkTypeVO linkTypeVO = null; - if(dataGridQuery.isLinkTypeFlag()){ - linkTypeVO = linkTypeService.getLinkTypeById(dataGridQuery.getBtmname()); - queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList())); - queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values()); }else{ - //btmTypeVO = btmService.getBtmById(dataGridQuery.getBtmname()); - btmTypeVO = btmService.getBtmByName(dataGridQuery.getBtmname()); - queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList())); - queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values()); - } - queryFieldList.add("creator_name"); - queryFieldList.add("lastmodifier_name"); - //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹� - Map<String, Object> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData()); - - if(dataGridQuery.isLinkTypeFlag()){ - UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); - linkTypeDataQuery.setQueryTemplateName(queryTemplate); - linkTypeDataQuery.setReplaceMap(replaceMap); - linkTypeDataQuery.setConditionMap(dataGridQuery.getConditionMap()); - linkTypeDataQuery.setClauseList(queryFieldList); - linkTypeDataQuery.setLinkType(dataGridQuery.getBtmname()); - if(dataGridQuery.isTreeTableFlag()){ - linkTypeDataQuery.setLevel(-1); + String queryTemplate = Func.isNotEmpty(dataGridQuery.getSourceData())? (String) dataGridQuery.getSourceData().getOrDefault("querytemplate",tableDefineVO.getQueryTemplateName()) :tableDefineVO.getQueryTemplateName(); + if(StringUtils.isBlank(queryTemplate)){ + //璇存槑娌℃湁璁剧疆鏌ヨ妯℃澘锛岄渶瑕佺湅鐪嬪湪杩欎釜琛ㄦ牸鎵�鍦ㄧ殑缁勪欢鏈夋病鏈夎缃� + tableDefineVO = uiEngineService.getTableById(dataGridQuery.getBtmName(), dataGridQuery.getTableDefineId()); + queryTemplate = tableDefineVO.getQueryTemplateName(); } - return loService.queryGridByScheme(linkTypeDataQuery); - }else { - DataGrid dataGrid = boService.queryGridByScheme(queryTemplate, - dataGridQuery.getConditionMap(), replaceMap, dataGridQuery.getPageHelper(), queryFieldList.stream().collect(Collectors.toList())); - return dataGrid; + //鐪嬬湅鏈夋病鏈夎嚜瀹氫箟鐨凷QL + Set<String> queryFieldList = new HashSet<>(); + tableDefineVO.getCols().forEach(cols->{ + //鑾峰彇鍙傜収 + List<UITableFieldVO> referFieldList = cols.stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(referFieldList)){ + referFieldList.stream().forEach(field->{ + queryFieldList.add(field.getField()); + if(StringUtils.isNotBlank(field.getShowField())) { + queryFieldList.add(field.getShowField()); + } + }); + } + Map<String, String> comboxMap = cols.stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey())); + if(!CollectionUtils.isEmpty(comboxMap)) { + comboxMap.forEach((field,comboxKey)->{ + queryFieldList.add(comboxKey+"_" + field.substring(0,field.length()-4) + "#" + field); + }); + } + queryFieldList.addAll(cols.stream().filter(s -> !UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getFieldType()) && !UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getFieldType())).map(s -> s.getField()).collect(Collectors.toList())); + }); + + //閽堝鍙傜収鐨勶紝鎴戜滑闇�瑕佹坊鍔犲搴旂殑 + //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬� + OsBtmTypeVO btmTypeVO = null; + OsLinkTypeVO linkTypeVO = null; + if(dataGridQuery.isLinkTypeFlag()){ + linkTypeVO = linkTypeService.getLinkTypeById(dataGridQuery.getBtmName()); + queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList())); + queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values()); + }else{ + //btmTypeVO = btmService.getBtmById(dataGridQuery.getBtmname()); + btmTypeVO = btmService.getBtmByName(dataGridQuery.getBtmName()); + queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList())); + queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values()); + } + queryFieldList.add("creator_name"); + queryFieldList.add("lastmodifier_name"); + //鎴戜滑鍦ㄥ悗鍙版煡璇笟鍔℃暟鎹� + Map<String, Object> replaceMap = wrapperReplaceMap(dataGridQuery.getSourceData()); + + if(dataGridQuery.isLinkTypeFlag()){ + UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); + linkTypeDataQuery.setQueryTemplateName(queryTemplate); + linkTypeDataQuery.setReplaceMap(replaceMap); + linkTypeDataQuery.setConditionMap(dataGridQuery.getConditionMap()); + linkTypeDataQuery.setClauseList(queryFieldList); + linkTypeDataQuery.setLinkType(dataGridQuery.getBtmName()); + if(dataGridQuery.isTreeTableFlag()){ + linkTypeDataQuery.setLevel(-1); + } + return loService.queryGridByScheme(linkTypeDataQuery); + }else { + DataGrid dataGrid = boService.queryGridByScheme(queryTemplate, + dataGridQuery.getConditionMap(), replaceMap, dataGridQuery.getPageHelper(), queryFieldList.stream().collect(Collectors.toList())); + return dataGrid; + } } - //鐢熷懡鍛ㄦ湡鍦ㄥ叾涓煡璇㈠悗灏变細澶勭悊 - //鏋氫妇涔熶細琚鐞嗕簡 } /** @@ -233,107 +254,129 @@ */ @Override public UIFormDataVO getDataForForm(UIFormQuery formQuery) throws VciBaseException, PLException { - VciBaseUtil.alertNotNull(formQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",formQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",formQuery.getOid(),"涓氬姟鏁版嵁鐨勪富閿�",formQuery.getFormDefineId(),"琛ㄥ崟鐨勫畾涔夌紪鍙�"); + VciBaseUtil.alertNotNull(formQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",formQuery.getBtmName(),"涓氬姟绫诲瀷鐨勪俊鎭�",formQuery.getSourceOid(),"涓氬姟鏁版嵁鐨勪富閿�",formQuery.getFormDefineId(),"琛ㄥ崟鐨勫畾涔夌紪鍙�"); // TODO: 2024/12/4 Ludc 鍓嶇浼犺繃鏉ョ殑sourceData鍙傛暟鐨剉laue鍙兘鏄痡son杩欏効鍋氫竴涓嬪鐞� if(Func.isNotEmpty(formQuery.getSourceData())){ formQuery.setSourceData(this.convertMapValueJson2Map(formQuery.getSourceData())); } - UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmname(),formQuery.getFormDefineId()); - String queryTemplate = !CollectionUtils.isEmpty(formQuery.getSourceData())? (String) formQuery.getSourceData().getOrDefault("querytemplate",formDefineVO.getQueryTemplateName()) :formDefineVO.getQueryTemplateName(); - Set<String> queryFieldList = formDefineVO.getItems().stream().filter(s->!UIFieldTypeEnum.CUSTOM.getValue().equalsIgnoreCase(s.getType())).map(UIFormItemVO::getField).collect(Collectors.toSet()); - //鑾峰彇鍙傜収 - List<UIFormItemVO> referFieldList = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(referFieldList)){ - referFieldList.stream().forEach(field->{ - queryFieldList.add(field.getField()); - if(StringUtils.isNotBlank(field.getShowField())) { - queryFieldList.add(field.getShowField()); - } - }); - } - Map<String, String> comboxMap = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey())); - if(!CollectionUtils.isEmpty(comboxMap)) { - comboxMap.forEach((field,comboxKey)->{ - //瑕佹妸鏋氫妇鐨勫睘鎬ф煡璇㈠嚭鏉ワ紝鍜岃〃鏍奸鍦版柟涓嶄竴鏍凤紝鍥犱负閭h竟浼氭妸field鐩存帴鍔犱簡text - queryFieldList.add(comboxKey+"_" + field + "#" + field +"text"); - }); - } - //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬� - OsBtmTypeVO btmTypeVO = null; - OsLinkTypeVO linkTypeVO = null; - if(formDefineVO.isLinkTypeFlag()){ - linkTypeVO = linkTypeService.getLinkTypeById(formQuery.getBtmname()); - queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList())); - queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values()); - }else{ - btmTypeVO = btmService.getBtmByName(formQuery.getBtmname()); - queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList())); - } - queryFieldList.add("creator_name"); - queryFieldList.add("lastmodifier_name"); - Map<String,String> conditionMap = WebUtil.getOidQuery(formQuery.getOid()); - Map<String, Object> replaceMap = wrapperReplaceMap(formQuery.getSourceData()); - UIFormDataVO formDataVO = new UIFormDataVO(); - replaceMap.put("oid", formQuery.getOid().trim()); - if(!formDefineVO.isLinkTypeFlag()) { - List<BusinessObject> cbos = null; - if (StringUtils.isNotBlank(queryTemplate)) { - replaceMap.put("oid", formQuery.getOid().trim()); - cbos = boService.queryCBOByScheme(queryTemplate, conditionMap, replaceMap, null, queryFieldList.stream().collect(Collectors.toList())); - } else { - //娌℃湁鏌ヨ妯℃澘锛岄偅鎴戜滑灏辩洿鎺ヤ富閿拰涓氬姟绫诲瀷鍘绘煡璇� - cbos = boService.queryCBO(formQuery.getBtmname(), conditionMap, null, queryFieldList.stream().collect(Collectors.toList())); - } - if (!CollectionUtils.isEmpty(cbos)) { - BusinessObject cbo = cbos.get(0); - formDataVO.setData(boService.cbo2Map(cbo)); - } else { - throw new VciBaseException(DATA_OID_NOT_EXIST); + //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被 + UIComponentVO componentVO = uiEngineService.getComponentByOid(formQuery.getComponentOid(), null); + //UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmName(),formQuery.getFormDefineId()); + String bsCustQueryCLsOrUrl = componentVO.getBsDataModel(); + if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){ + //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉� + try { + // 鑾峰彇绫荤殑 Class 瀵硅薄 + Class<?> clazz = Class.forName(bsCustQueryCLsOrUrl.replace("@","")); + // 鍒涘缓绫荤殑瀹炰緥 + Object instance = clazz.getDeclaredConstructor().newInstance(); + // 鑾峰彇鏂规硶getDataForGrid锛堣鏂规硶鏄帴鍙d腑缁熶竴瀹氫箟鐨勬柟娉曪級 + Method method = clazz.getMethod("getDataForForm", UIFormQuery.class); + // 璋冪敤鏂规硶 + UIFormDataVO uiFormDataVO = (UIFormDataVO) method.invoke(instance, formQuery); + return uiFormDataVO; + }catch (Exception e){ + e.printStackTrace(); + throw new VciBaseException("鑾峰彇琛ㄦ牸鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage()); } }else{ - UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); - linkTypeDataQuery.setQueryTemplateName(queryTemplate); - linkTypeDataQuery.setReplaceMap(replaceMap); - linkTypeDataQuery.setConditionMap(conditionMap); - linkTypeDataQuery.setClauseList(queryFieldList); - linkTypeDataQuery.setLinkType(formQuery.getBtmname()); - //linkTypeDataQuery.setDirection(formQuery.isOrientation()); - //linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType()); - DataGrid dataGrid = loService.queryGridByScheme(linkTypeDataQuery); - if (dataGrid != null && !CollectionUtils.isEmpty(dataGrid.getData())) { - formDataVO.setData((Map<String, Object>) dataGrid.getData().get(0)); - } - } - //鏌ヨ闄勪欢 - formDataVO.setAttachmentFileVOs(fileObjectService.listFilesByOwnbiz(formQuery.getOid(), formQuery.getBtmname(), "attachment")); - List<UIFormItemVO> fileItems = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.FILE.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(fileItems)){ - //瀛楁鐨勫睘鎬ц偗瀹氫笉浼氳秴杩�1000涓� - //鏌ヨ杩欎簺鐨勫�� - List<String> filePathList = new ArrayList<>(); - fileItems.stream().forEach(field->{ - Object value = formDataVO.getData().getOrDefault(field.getField(),null); - if(value!=null && StringUtils.isNotBlank(value.toString())){ - filePathList.add(value.toString()); - } - }); - List<VciFileObjectVO> fileObjectVOS = fileObjectService.listFileObjectByPath(filePathList, "filePathField"); - if(!CollectionUtils.isEmpty(fileObjectVOS)){ - Map<String,VciFileObjectVO> fileObjectVOMap = fileObjectVOS.stream().collect(Collectors.toMap(s->s.getFilePath(),t->t,(o1,o2)->o2)); - Map<String,VciFileObjectVO> fieldFileVOMap = new HashMap<>(); - fileItems.stream().forEach(field->{ - Object value = formDataVO.getData().getOrDefault(field.getField(),null); - if(value!=null){ - VciFileObjectVO fileObjectVO = fileObjectVOMap.getOrDefault(value.toString(),null); - if(fileObjectVO!=null){ - fieldFileVOMap.put(field.getField(),fileObjectVO); - } + UIFormDefineVO formDefineVO = componentVO.getFormDefineVO(); + String queryTemplate = !CollectionUtils.isEmpty(formQuery.getSourceData())? (String) formQuery.getSourceData().getOrDefault("querytemplate",formDefineVO.getQueryTemplateName()) :formDefineVO.getQueryTemplateName(); + Set<String> queryFieldList = formDefineVO.getItems().stream().filter(s->!UIFieldTypeEnum.CUSTOM.getValue().equalsIgnoreCase(s.getType())).map(UIFormItemVO::getField).collect(Collectors.toSet()); + //鑾峰彇鍙傜収 + List<UIFormItemVO> referFieldList = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.REFER.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(referFieldList)){ + referFieldList.stream().forEach(field->{ + queryFieldList.add(field.getField()); + if(StringUtils.isNotBlank(field.getShowField())) { + queryFieldList.add(field.getShowField()); } }); - formDataVO.setFilePathFieldMap(fieldFileVOMap); } + Map<String, String> comboxMap = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.COMBOX.getValue().equalsIgnoreCase(s.getType()) && StringUtils.isNotBlank(s.getComboxKey())).collect(Collectors.toList()).stream().collect(Collectors.toMap(s -> s.getField(), t -> t.getComboxKey())); + if(!CollectionUtils.isEmpty(comboxMap)) { + comboxMap.forEach((field,comboxKey)->{ + //瑕佹妸鏋氫妇鐨勫睘鎬ф煡璇㈠嚭鏉ワ紝鍜岃〃鏍奸鍦版柟涓嶄竴鏍凤紝鍥犱负閭h竟浼氭妸field鐩存帴鍔犱簡text + queryFieldList.add(comboxKey+"_" + field + "#" + field +"text"); + }); + } + //杩欎釜涓氬姟绫诲瀷鍖呭惈鐨勫睘鎬� + OsBtmTypeVO btmTypeVO = null; + OsLinkTypeVO linkTypeVO = null; + if(formDefineVO.isLinkTypeFlag()){ + linkTypeVO = linkTypeService.getLinkTypeById(formQuery.getBtmName()); + queryFieldList.addAll(linkTypeVO.getAttributes().stream().map(OsLinkTypeAttributeVO::getId).collect(Collectors.toList())); + queryFieldList.addAll(WebLoServiceImpl.LO_BASE_FIELD_MAP.values()); + }else{ + btmTypeVO = btmService.getBtmByName(formQuery.getBtmName()); + queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList())); + } + queryFieldList.add("creator_name"); + queryFieldList.add("lastmodifier_name"); + Map<String,String> conditionMap = WebUtil.getOidQuery(formQuery.getSourceOid()); + Map<String, Object> replaceMap = wrapperReplaceMap(formQuery.getSourceData()); + UIFormDataVO formDataVO = new UIFormDataVO(); + replaceMap.put("oid", formQuery.getSourceOid().trim()); + if(!formDefineVO.isLinkTypeFlag()) { + List<BusinessObject> cbos = null; + if (StringUtils.isNotBlank(queryTemplate)) { + // replaceMap.put("oid", formQuery.getOid().trim()); + cbos = boService.queryCBOByScheme(queryTemplate, conditionMap, replaceMap, null, queryFieldList.stream().collect(Collectors.toList())); + } else { + //娌℃湁鏌ヨ妯℃澘锛岄偅鎴戜滑灏辩洿鎺ヤ富閿拰涓氬姟绫诲瀷鍘绘煡璇� + cbos = boService.queryCBO(formQuery.getBtmName(), conditionMap, null, queryFieldList.stream().collect(Collectors.toList())); + } + if (!CollectionUtils.isEmpty(cbos)) { + BusinessObject cbo = cbos.get(0); + formDataVO.setData(boService.cbo2Map(cbo)); + } else { + throw new VciBaseException(DATA_OID_NOT_EXIST); + } + }else{ + UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); + linkTypeDataQuery.setQueryTemplateName(queryTemplate); + linkTypeDataQuery.setReplaceMap(replaceMap); + linkTypeDataQuery.setConditionMap(conditionMap); + linkTypeDataQuery.setClauseList(queryFieldList); + linkTypeDataQuery.setLinkType(formQuery.getBtmName()); + //linkTypeDataQuery.setDirection(formQuery.isOrientation()); + //linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType()); + DataGrid dataGrid = loService.queryGridByScheme(linkTypeDataQuery); + if (dataGrid != null && !CollectionUtils.isEmpty(dataGrid.getData())) { + formDataVO.setData((Map<String, Object>) dataGrid.getData().get(0)); + } + } + //鏌ヨ闄勪欢 + formDataVO.setAttachmentFileVOs(fileObjectService.listFilesByOwnbiz(formQuery.getSourceOid(), formQuery.getBtmName(), "attachment")); + List<UIFormItemVO> fileItems = formDefineVO.getItems().stream().filter(s -> UIFieldTypeEnum.FILE.getValue().equalsIgnoreCase(s.getType())).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(fileItems)){ + //瀛楁鐨勫睘鎬ц偗瀹氫笉浼氳秴杩�1000涓� + //鏌ヨ杩欎簺鐨勫�� + List<String> filePathList = new ArrayList<>(); + fileItems.stream().forEach(field->{ + Object value = formDataVO.getData().getOrDefault(field.getField(),null); + if(value!=null && StringUtils.isNotBlank(value.toString())){ + filePathList.add(value.toString()); + } + }); + List<VciFileObjectVO> fileObjectVOS = fileObjectService.listFileObjectByPath(filePathList, "filePathField"); + if(!CollectionUtils.isEmpty(fileObjectVOS)){ + Map<String,VciFileObjectVO> fileObjectVOMap = fileObjectVOS.stream().collect(Collectors.toMap(s->s.getFilePath(),t->t,(o1,o2)->o2)); + Map<String,VciFileObjectVO> fieldFileVOMap = new HashMap<>(); + fileItems.stream().forEach(field->{ + Object value = formDataVO.getData().getOrDefault(field.getField(),null); + if(value!=null){ + VciFileObjectVO fileObjectVO = fileObjectVOMap.getOrDefault(value.toString(),null); + if(fileObjectVO!=null){ + fieldFileVOMap.put(field.getField(),fileObjectVO); + } + } + }); + formDataVO.setFilePathFieldMap(fieldFileVOMap); + } + } + return formDataVO; } - return formDataVO; } /** @@ -367,7 +410,7 @@ */ @Override public List<UIDataTree> getDataForTree(UITreeQuery treeQuery) throws Exception { - VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getBtmname(),"涓氬姟绫诲瀷鐨勪俊鎭�",treeQuery.getComponentOid(),"鏍戞墍鍦ㄧ殑缁勪欢鐨勪富閿�"); + VciBaseUtil.alertNotNull(treeQuery,"琛ㄥ崟鐨勬煡璇㈠璞�",treeQuery.getBtmName(),"涓氬姟绫诲瀷鐨勪俊鎭�",treeQuery.getComponentOid(),"鏍戞墍鍦ㄧ殑缁勪欢鐨勪富閿�"); // TODO: 2024/12/4 Ludc 鍓嶇浼犺繃鏉ョ殑sourceData鍙傛暟鐨剉laue鍙兘鏄痡son杩欏効鍋氫竴涓嬪鐞� if(Func.isNotEmpty(treeQuery.getSourceData())){ treeQuery.setSourceData(this.convertMapValueJson2Map(treeQuery.getSourceData())); @@ -377,149 +420,199 @@ if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){ throw new VciBaseException("鏍戠殑閰嶇疆淇℃伅娌℃湁鑾峰彇鍒�"); } - //鏍戝舰鏈変袱绉嶏紝涓�绉嶆槸涓氬姟绫诲瀷閲岃嚜鍙傜収锛屼竴绉嶆槸閾炬帴绫诲瀷 - UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO(); - if(treeDefineVO == null){ - throw new VciBaseException("杩欎釜缁勪欢涓嶆槸鏍�"); - } - if(!treeQuery.isLinkTypeFlag() && StringUtils.isBlank(treeQuery.getParentBtmName())){ - treeQuery.setParentBtmName(treeQuery.getBtmname()); - } - //TODO: 鏇挎崲鏍戝畾涔変笂鐨勬鍙嶅悜鏌ヨ灞炴�э紝鍥犱负姝e弽鍚戞煡璇㈡槸鐢遍摼鎺ョ被鍨嬫煡璇㈡ā鏉夸笂鎺у埗鐨� - boolean isOrientation = false; //鏄惁鍙嶅悜锛屼娇鐢ㄦā鏉夸笂閰嶇疆鐨� - String qtName = treeDefineVO.getQueryTemplateName(); - if(Func.isNotBlank(treeDefineVO.getLinkType()) && Func.isNotBlank(qtName)){ - QTInfo wrapper = platformClientUtil.getQTDService().getQT(qtName); - QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), qtName); - isOrientation = qt.getDirection().equals("opposite"); - } - if(treeQuery.getConditionMap() == null){ - treeQuery.setConditionMap(new HashMap<>()); - } - if(treeQuery.getExtandParamsMap() != null){ - treeQuery.getConditionMap().putAll(treeQuery.getExtandParamsMap()); - } - String parentFieldName = treeQuery.getParentFieldName(); - if(parentFieldName.contains(",")){ - parentFieldName = parentFieldName.split(",")[0]; - } - if(StringUtils.isNotBlank(parentFieldName)){ - if(StringUtils.isNotBlank(treeQuery.getParentOid())){ - treeQuery.getConditionMap().put(parentFieldName,treeQuery.getParentOid()); - } - } - if(StringUtils.isNotBlank(treeQuery.getParentOid()) && treeQuery.getParentOid().contains(TREE_NODE_ID_SEP)){ - treeQuery.setParentOid(treeQuery.getParentOid().split(TREE_NODE_ID_SEP)[1]); - } - String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())? (String) treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()) :treeDefineVO.getQueryTemplateName()); - String valueField = treeQuery.isLinkTypeFlag()?(!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"); - List<UIDataTree> rootTreeList = new ArrayList<>(); - List<String> queryFieldList = new ArrayList<>(); - queryFieldList.add("creator_name"); - queryFieldList.add("lastmodifier_name"); - String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent(); - Map<String, Object> replaceMap = wrapperReplaceMap(treeQuery.getSourceData()); - if(StringUtils.isBlank(treeDefineVO.getLinkType())){ - //杩欎釜鏄笟鍔$被鍨嬬殑鑷弬鐓� - //浠ュ墠鐨勫钩鍙版病鏈夊鑷弬鐓ц繖绉嶆湁鍏ㄩ儴鏌ヨ鐨� - 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); - - if(treeQuery.isQueryRoot()){ - //鏄煡璇㈡牴鑺傜偣 - List<BusinessObject> rootCbos = null; - if(StringUtils.isNotBlank(queryTemplate)){ - //璇存槑鏄彍鍗曢噷瀹氫箟浜嗘煡璇㈡ā鏉跨殑 - rootCbos = boService.queryCBOByScheme(queryTemplate, null, replaceMap); - }else{ - //璇存槑娌℃湁浼犻�掞紝杩欓渶瑕佸吋瀹逛互鍓嶇殑鏂瑰紡锛屽氨鏄湪showLinkAps閲岃缃� - String parentFieldNameAndValue = treeDefineVO.getShowLinkAbs(); - if(StringUtils.isBlank(parentFieldNameAndValue) || !parentFieldNameAndValue.contains(",")){ - throw new VciBaseException("閰嶇疆鐨勪俊鎭湁璇�傚湪娌℃湁鍦ㄨ彍鍗曟垨鑰呮潵婧愭暟鎹缃牴鑺傜偣鐨勬煡璇㈡ā鏉挎椂锛岃鍦ㄦ爲鐨勩�愬弬鐓ф爲銆戜笂璁剧疆涓婄骇瀛楁鐨勫悕绉板拰鏍硅妭鐐圭殑鏌ヨ鐨勫�笺�傛瘮濡倄xxx,yyy銆傚叾涓瓁xxx鏄笂绾у瓧娈佃嫳鏂囧悕绉�"); - } - parentFieldName = parentFieldNameAndValue.split(",")[0]; - String rootQueryValue = parentFieldNameAndValue.split(",")[1]; - treeQuery.getConditionMap().put(parentFieldName,rootQueryValue); - replaceMap.put(parentFieldName,rootQueryValue); - replaceMap.put("f_oid",rootQueryValue); - if(StringUtils.isNotBlank(queryTemplate)){ - rootCbos = boService.queryCBOByScheme(queryTemplate,treeQuery.getConditionMap(),replaceMap,null,queryFieldList); - }else{ - rootCbos = boService.queryCBO(treeDefineVO.getBtmType(),treeQuery.getConditionMap(),null,queryFieldList); - } - } - 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(true); - } - queryTreeForBO(rootTreeList,treeDefineVO.getQueryTemplateName(),queryFieldList,treeQueryObject); - } - return rootTreeList; - }else{ - //杩欎釜涓嶆槸璺熻妭鐐癸紝浣嗘槸涓�鑸彧鏄鍔犱竴涓�愮骇鏌ヨ锛屽洜涓哄叏閮ㄦ煡璇㈢殑鏃跺�欙紝鍦ㄦ牴鑺傜偣宸茬粡鍏ㄩ儴鏌ヨ瀹屼簡 - List<BusinessObject> thisChildren = null; - if (StringUtils.isNotBlank(queryTemplate)) { - thisChildren = boService.queryCBOByScheme(queryTemplate, treeQuery.getConditionMap(), replaceMap, null, queryFieldList); - } else { - thisChildren = boService.queryCBO(treeQuery.getParentBtmName(), treeQuery.getConditionMap(), null, queryFieldList); - } - return cbo2Trees(thisChildren, valueField, textField, parentFieldName, treeQuery.isShowCheckBox(), null); + String bsCustQueryCLsOrUrl = componentVO.getBsDataModel(); + if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){ + //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉� + try { + // 鑾峰彇绫荤殑 Class 瀵硅薄 + Class<?> clazz = Class.forName(bsCustQueryCLsOrUrl.replace("@","")); + // 鍒涘缓绫荤殑瀹炰緥 + Object instance = clazz.getDeclaredConstructor().newInstance(); + // 鑾峰彇鏂规硶getDataForGrid锛堣鏂规硶鏄帴鍙d腑缁熶竴瀹氫箟鐨勬柟娉曪級 + Method method = clazz.getMethod("getDataForForm", UITreeQuery.class); + // 璋冪敤鏂规硶 + List<UIDataTree> uiDataTreeList = (List<UIDataTree>) method.invoke(instance, treeQuery); + return uiDataTreeList; + }catch (Exception e){ + e.printStackTrace(); + throw new VciBaseException("鑾峰彇琛ㄦ牸鏁版嵁鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+e.getMessage()); } }else{ - //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); - addQueryField(queryFieldList,textField); - UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); - linkTypeDataQuery.setQueryTemplateName(queryTemplate); - linkTypeDataQuery.setReplaceMap(replaceMap); - linkTypeDataQuery.setConditionMap(treeQuery.getConditionMap()); - linkTypeDataQuery.setParentOid(treeQuery.getParentOid()); - linkTypeDataQuery.setClauseList(queryFieldList); - linkTypeDataQuery.setDirection(isOrientation); - linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType()); - linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); - if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){ - linkTypeDataQuery.setQueryAllLevel(true); + //鏍戝舰鏈変袱绉嶏紝涓�绉嶆槸涓氬姟绫诲瀷閲岃嚜鍙傜収锛屼竴绉嶆槸閾炬帴绫诲瀷 + UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO(); + if(treeDefineVO == null){ + throw new VciBaseException("杩欎釜缁勪欢涓嶆槸鏍�"); } - if(treeQuery.isQueryRoot()){ - //鏌ヨ鏍硅妭鐐�.鎴戜滑闇�瑕佸垽鏂槸鍚﹁缃簡鏍硅妭鐐圭殑鏌ヨ鏉′欢 - List<BOAndLO> rootCbos = null; - String parentFieldNameAndValue = treeDefineVO.getShowLinkAbs(); - if(StringUtils.isNotBlank(parentFieldNameAndValue)){ + if(!treeQuery.isLinkTypeFlag() && StringUtils.isBlank(treeQuery.getParentBtmName())){ + treeQuery.setParentBtmName(treeQuery.getBtmName()); + } + //TODO: 鏇挎崲鏍戝畾涔変笂鐨勬鍙嶅悜鏌ヨ灞炴�э紝鍥犱负姝e弽鍚戞煡璇㈡槸鐢遍摼鎺ョ被鍨嬫煡璇㈡ā鏉夸笂鎺у埗鐨� + boolean isOrientation = false; //鏄惁鍙嶅悜锛屼娇鐢ㄦā鏉夸笂閰嶇疆鐨� + String qtName = treeDefineVO.getQueryTemplateName(); + if(Func.isNotBlank(treeDefineVO.getOrientation())){ + isOrientation = treeDefineVO.getOrientation().equalsIgnoreCase("opposite"); + }else{ + if(Func.isNotBlank(treeDefineVO.getLinkType()) && Func.isNotBlank(qtName)){ + QTInfo wrapper = platformClientUtil.getQTDService().getQT(qtName); + QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), qtName); + isOrientation = qt.getDirection().equals("opposite"); + } + } + if(treeQuery.getConditionMap() == null){ + treeQuery.setConditionMap(new HashMap<>()); + } + if(treeQuery.getExtandParamsMap() != null){ + treeQuery.getConditionMap().putAll(treeQuery.getExtandParamsMap()); + } + String parentFieldName = treeQuery.getParentFieldName(); + if(parentFieldName.contains(",")){ + parentFieldName = parentFieldName.split(",")[0]; + } + if(StringUtils.isNotBlank(parentFieldName)){ + if(StringUtils.isNotBlank(treeQuery.getParentOid())){ + treeQuery.getConditionMap().put(parentFieldName,treeQuery.getParentOid()); + } + } + if(StringUtils.isNotBlank(treeQuery.getParentOid()) && treeQuery.getParentOid().contains(TREE_NODE_ID_SEP)){ + treeQuery.setParentOid(treeQuery.getParentOid().split(TREE_NODE_ID_SEP)[1]); + } + String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())? (String) treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()) :treeDefineVO.getQueryTemplateName()); + String valueField = treeQuery.isLinkTypeFlag()?(!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"); + List<UIDataTree> rootTreeList = new ArrayList<>(); + List<String> queryFieldList = new ArrayList<>(); + queryFieldList.add("creator_name"); + queryFieldList.add("lastmodifier_name"); + String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent(); + Map<String, Object> replaceMap = wrapperReplaceMap(treeQuery.getSourceData()); + if(StringUtils.isBlank(treeDefineVO.getLinkType())){ + //杩欎釜鏄笟鍔$被鍨嬬殑鑷弬鐓� + //浠ュ墠鐨勫钩鍙版病鏈夊鑷弬鐓ц繖绉嶆湁鍏ㄩ儴鏌ヨ鐨� + 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); + + if(treeQuery.isQueryRoot()){ + //鏄煡璇㈡牴鑺傜偣 + List<BusinessObject> rootCbos = null; if(StringUtils.isNotBlank(queryTemplate)){ - linkTypeDataQuery.setQueryAllLevel(false); - //鏍硅妭鐐瑰彧鏌ヨ涓�娆� - //浣跨敤鏌ヨ妯℃澘鏈韩璁剧疆鐨勫唴瀹� - linkTypeDataQuery.setToBtmType(null); - linkTypeDataQuery.setQueryTemplateName(queryTemplate); - rootCbos = loService.queryCLOAndBOBySchema(linkTypeDataQuery); + //璇存槑鏄彍鍗曢噷瀹氫箟浜嗘煡璇㈡ā鏉跨殑 + rootCbos = boService.queryCBOByScheme(queryTemplate, null, replaceMap); }else{ - String rootQueryValue = ""; + //璇存槑娌℃湁浼犻�掞紝杩欓渶瑕佸吋瀹逛互鍓嶇殑鏂瑰紡锛屽氨鏄湪showLinkAps閲岃缃� + String parentFieldNameAndValue = treeDefineVO.getShowLinkAbs(); + if(StringUtils.isBlank(parentFieldNameAndValue) || !parentFieldNameAndValue.contains(",")){ + throw new VciBaseException("閰嶇疆鐨勪俊鎭湁璇�傚湪娌℃湁鍦ㄨ彍鍗曟垨鑰呮潵婧愭暟鎹缃牴鑺傜偣鐨勬煡璇㈡ā鏉挎椂锛岃鍦ㄦ爲鐨勩�愬弬鐓ф爲銆戜笂璁剧疆涓婄骇瀛楁鐨勫悕绉板拰鏍硅妭鐐圭殑鏌ヨ鐨勫�笺�傛瘮濡倄xxx,yyy銆傚叾涓瓁xxx鏄笂绾у瓧娈佃嫳鏂囧悕绉�"); + } parentFieldName = parentFieldNameAndValue.split(",")[0]; - rootQueryValue = parentFieldNameAndValue.split(",")[1]; + String rootQueryValue = parentFieldNameAndValue.split(",")[1]; treeQuery.getConditionMap().put(parentFieldName,rootQueryValue); - linkTypeDataQuery.setQueryAllLevel(false); - linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); - linkTypeDataQuery.setParentOid(rootQueryValue); - rootCbos = loService.queryCLOAndBoByLinkType(linkTypeDataQuery); + replaceMap.put(parentFieldName,rootQueryValue); + replaceMap.put("f_oid",rootQueryValue); + if(StringUtils.isNotBlank(queryTemplate)){ + rootCbos = boService.queryCBOByScheme(queryTemplate,treeQuery.getConditionMap(),replaceMap,null,queryFieldList); + }else{ + rootCbos = boService.queryCBO(treeDefineVO.getBtmType(),treeQuery.getConditionMap(),null,queryFieldList); + } } 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(true); + } + queryTreeForBO(rootTreeList,treeDefineVO.getQueryTemplateName(),queryFieldList,treeQueryObject); + } + return rootTreeList; + }else{ + //杩欎釜涓嶆槸璺熻妭鐐癸紝浣嗘槸涓�鑸彧鏄鍔犱竴涓�愮骇鏌ヨ锛屽洜涓哄叏閮ㄦ煡璇㈢殑鏃跺�欙紝鍦ㄦ牴鑺傜偣宸茬粡鍏ㄩ儴鏌ヨ瀹屼簡 + List<BusinessObject> thisChildren = null; + if (StringUtils.isNotBlank(queryTemplate)) { + thisChildren = boService.queryCBOByScheme(queryTemplate, treeQuery.getConditionMap(), replaceMap, null, queryFieldList); + } else { + thisChildren = boService.queryCBO(treeQuery.getParentBtmName(), treeQuery.getConditionMap(), null, queryFieldList); + } + return cbo2Trees(thisChildren, valueField, textField, parentFieldName, treeQuery.isShowCheckBox(), null); + } + }else{ + //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); + addQueryField(queryFieldList,textField); + UILinkTypeDataQuery linkTypeDataQuery = new UILinkTypeDataQuery(); + linkTypeDataQuery.setQueryTemplateName(queryTemplate); + linkTypeDataQuery.setReplaceMap(replaceMap); + linkTypeDataQuery.setConditionMap(treeQuery.getConditionMap()); + linkTypeDataQuery.setParentOid(treeQuery.getParentOid()); + linkTypeDataQuery.setClauseList(queryFieldList); + linkTypeDataQuery.setDirection(isOrientation); + linkTypeDataQuery.setToBtmType(treeDefineVO.getBtmType()); + linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); + if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){ + linkTypeDataQuery.setQueryAllLevel(true); + } + if(treeQuery.isQueryRoot()){ + //鏌ヨ鏍硅妭鐐�.鎴戜滑闇�瑕佸垽鏂槸鍚﹁缃簡鏍硅妭鐐圭殑鏌ヨ鏉′欢 + List<BOAndLO> rootCbos = null; + String parentFieldNameAndValue = treeDefineVO.getShowLinkAbs(); + if(StringUtils.isNotBlank(parentFieldNameAndValue)){ + if(StringUtils.isNotBlank(queryTemplate)){ + linkTypeDataQuery.setQueryAllLevel(false); + //鏍硅妭鐐瑰彧鏌ヨ涓�娆� + //浣跨敤鏌ヨ妯℃澘鏈韩璁剧疆鐨勫唴瀹� + linkTypeDataQuery.setToBtmType(null); + linkTypeDataQuery.setQueryTemplateName(queryTemplate); + rootCbos = loService.queryCLOAndBOBySchema(linkTypeDataQuery); + }else{ + String rootQueryValue = ""; + parentFieldName = parentFieldNameAndValue.split(",")[0]; + rootQueryValue = parentFieldNameAndValue.split(",")[1]; + treeQuery.getConditionMap().put(parentFieldName,rootQueryValue); + linkTypeDataQuery.setQueryAllLevel(false); + linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); + linkTypeDataQuery.setParentOid(rootQueryValue); + rootCbos = loService.queryCLOAndBoByLinkType(linkTypeDataQuery); + } + if(!CollectionUtils.isEmpty(rootCbos)){ + if(StringUtils.isBlank(parentFieldName)){ + if(isOrientation){ + parentFieldName = "t_oid"; + }else{ + parentFieldName = "f_oid"; + } + } + rootTreeList = cloAndCbo2Trees(rootCbos,valueField,rootExpress,parentFieldName,treeQuery.isShowCheckBox(),null); + linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); + linkTypeDataQuery.setQueryTemplateName(queryTemplate); + if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){ + linkTypeDataQuery.setQueryAllLevel(true); + } + queryTreeForLO(rootTreeList,linkTypeDataQuery,parentFieldName,valueField,textField,treeQuery.isShowCheckBox()); + } + return rootTreeList; + }else{ + //娌℃湁璁剧疆鏌ヨ鏉′欢銆傞偅灏辨槸鎶婃潵婧愭暟鎹綔涓烘牴鑺傜偣 + if(CollectionUtils.isEmpty(replaceMap)){ + throw new VciBaseException("鏍硅妭鐐规病鏈夐厤缃煡璇㈡潯浠讹紝涔熸病鏈夋潵婧愭暟鎹�"); + } + UIDataTree root = new UIDataTree(); + root.setOid((String) replaceMap.getOrDefault("oid",replaceMap.getOrDefault("t_oid",""))); + root.setText(getValueByExpressForBOAndLO(new HashMap<>(),replaceMap,rootExpress)); + root.setAttributes(replaceMap); + root.setIndex("0"); + rootTreeList.add(root); + if(StringUtils.isBlank(parentFieldName)){ if(isOrientation){ parentFieldName = "t_oid"; @@ -527,51 +620,24 @@ parentFieldName = "f_oid"; } } - rootTreeList = cloAndCbo2Trees(rootCbos,valueField,rootExpress,parentFieldName,treeQuery.isShowCheckBox(),null); linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); linkTypeDataQuery.setQueryTemplateName(queryTemplate); if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){ linkTypeDataQuery.setQueryAllLevel(true); } queryTreeForLO(rootTreeList,linkTypeDataQuery,parentFieldName,valueField,textField,treeQuery.isShowCheckBox()); + return rootTreeList; } - return rootTreeList; }else{ - //娌℃湁璁剧疆鏌ヨ鏉′欢銆傞偅灏辨槸鎶婃潵婧愭暟鎹綔涓烘牴鑺傜偣 - if(CollectionUtils.isEmpty(replaceMap)){ - throw new VciBaseException("鏍硅妭鐐规病鏈夐厤缃煡璇㈡潯浠讹紝涔熸病鏈夋潵婧愭暟鎹�"); - } - UIDataTree root = new UIDataTree(); - root.setOid((String) replaceMap.getOrDefault("oid",replaceMap.getOrDefault("t_oid",""))); - root.setText(getValueByExpressForBOAndLO(new HashMap<>(),replaceMap,rootExpress)); - root.setAttributes(replaceMap); - root.setIndex("0"); - rootTreeList.add(root); - - if(StringUtils.isBlank(parentFieldName)){ - if(isOrientation){ - parentFieldName = "t_oid"; - }else{ - parentFieldName = "f_oid"; + if(StringUtils.isNotBlank(treeQuery.getParentOid())){ + //鏈変笂绾т簡銆傞偅replace鐨刦_oid灏卞簲璇ヨ缃负涓婄骇 + if(linkTypeDataQuery.getReplaceMap() == null){ + linkTypeDataQuery.setReplaceMap(new HashMap<>()); } + linkTypeDataQuery.getReplaceMap().put(isOrientation?"t_oid":"f_oid",treeQuery.getParentOid()); } - linkTypeDataQuery.setLinkType(treeDefineVO.getLinkType()); - linkTypeDataQuery.setQueryTemplateName(queryTemplate); - if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){ - linkTypeDataQuery.setQueryAllLevel(true); - } - queryTreeForLO(rootTreeList,linkTypeDataQuery,parentFieldName,valueField,textField,treeQuery.isShowCheckBox()); - return rootTreeList; + return cloAndCbo2Trees(loService.queryCLOAndBoByLinkType(linkTypeDataQuery),valueField,textField,parentFieldName,treeQuery.isShowCheckBox(),treeQuery.getParentOid()); } - }else{ - if(StringUtils.isNotBlank(treeQuery.getParentOid())){ - //鏈変笂绾т簡銆傞偅replace鐨刦_oid灏卞簲璇ヨ缃负涓婄骇 - if(linkTypeDataQuery.getReplaceMap() == null){ - linkTypeDataQuery.setReplaceMap(new HashMap<>()); - } - linkTypeDataQuery.getReplaceMap().put(isOrientation?"t_oid":"f_oid",treeQuery.getParentOid()); - } - return cloAndCbo2Trees(loService.queryCLOAndBoByLinkType(linkTypeDataQuery),valueField,textField,parentFieldName,treeQuery.isShowCheckBox(),treeQuery.getParentOid()); } } } @@ -601,11 +667,16 @@ UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO(); boolean isOrientation = false; //鏄惁鍙嶅悜锛屼娇鐢ㄦā鏉夸笂閰嶇疆鐨� String qtName = treeDefineVO.getQueryTemplateName(); - if(Func.isNotBlank(treeDefineVO.getLinkType()) && Func.isNotBlank(qtName)){ - QTInfo wrapper = platformClientUtil.getQTDService().getQT(qtName); - QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), qtName); - isOrientation = qt.getDirection().equals("opposite"); + if(Func.isNotBlank(treeDefineVO.getOrientation())){ + isOrientation = treeDefineVO.getOrientation().equalsIgnoreCase("opposite"); + }else{ + if(Func.isNotBlank(treeDefineVO.getLinkType()) && Func.isNotBlank(qtName)){ + QTInfo wrapper = platformClientUtil.getQTDService().getQT(qtName); + QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), qtName); + isOrientation = qt.getDirection().equals("opposite"); + } } + String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())? (String) treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()) :treeDefineVO.getQueryTemplateName()); Map<String, Object> replaceMap = wrapperReplaceMap(treeQuery.getSourceData()); List<String> queryFieldList = new ArrayList<>(); @@ -1235,7 +1306,6 @@ return result; } - /** * 灏佽cbo瀵硅薄 * @param formDataDTO 琛ㄥ崟鏁版嵁 @@ -1300,7 +1370,7 @@ BaseModel baseModel = new BaseModel(); baseModel.setOid(cbo.oid); baseModel.setNameOid(cbo.nameoid); - baseModel.setRevisionOid(cbo.revisionid); + baseModel.setRevisionOid(cbo.revoid); baseModel.setBtmName(cbo.btName); baseModel.setLastR(String.valueOf(cbo.isLastR)); baseModel.setLastV(String.valueOf(cbo.isLastV)); @@ -1351,7 +1421,6 @@ } return data; } - /** * 閾炬帴鏁版嵁琛ㄥ崟瀵硅薄杞崲涓哄熀纭�鐨勫睘鎬� @@ -1945,7 +2014,6 @@ return BaseResult.success(clo); } - /** * 灏佽to绔殑鏁版嵁 * @param formLinkDataDTO 閾炬帴绫诲瀷鐨勮〃鍗曟暟鎹� @@ -2100,7 +2168,7 @@ //璇存槑鏄崌鐗� BaseModel baseModel = cbo2BaseModel(cbo); RevisionDataInfo revisionValueObject = getNextRevision(btmTypeVO,baseModel); - cbo.revisionid = VciBaseUtil.getPk(); + cbo.revoid = VciBaseUtil.getPk(); cbo.revisionSeq = revisionValueObject.revisionSeq; cbo.revisionValue = revisionValueObject.revisionVal; cbo.isLastR = true; @@ -2195,8 +2263,8 @@ if (StringUtils.isBlank(cbo.nameoid)) { cbo.nameoid = VciBaseUtil.getPk(); } - if (StringUtils.isBlank(cbo.revisionid)) { - cbo.revisionid = VciBaseUtil.getPk(); + if (StringUtils.isBlank(cbo.revoid)) { + cbo.revoid = VciBaseUtil.getPk(); } cbo.isFirstR = true; cbo.isLastR = true; @@ -2639,9 +2707,9 @@ throw new PLException("500", new String[]{"娌℃湁鑾峰彇鍒版暟鎹殑涓婚敭"}); } for (BusinessObject cbo : cbos) { - if(StringUtils.isBlank(cbo.revisionid)){ - String revisionoid = Arrays.stream(cbo.hisAttrValList).filter(e -> e.attrName.equals("REVISIONOID")).findFirst().map(e -> e.attrVal).orElse(""); - cbo.revisionid = revisionoid; + if(StringUtils.isBlank(cbo.revoid)){ + String revisionoid = Arrays.stream(cbo.hisAttrValList).filter(e -> e.name.equals("REVISIONOID")).findFirst().map(e -> e.value).orElse(""); + cbo.revoid = revisionoid; } boolean b = platformClientUtil.getBOFService().deleteBusinessObject(cbo,type); if(!b){ -- Gitblit v1.9.3