From a485f4494787001a2695863e239910c019a52246 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 05 十二月 2024 20:47:40 +0800 Subject: [PATCH] 表单\表格定义保存对象转换逻辑修改。UI数据查询接口修改 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java | 348 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 194 insertions(+), 154 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 e5fc42b..b2ccd03 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 @@ -57,7 +57,6 @@ import static com.vci.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST; - /** * UI涓婄殑鏁版嵁鏌ヨ(閫氱敤鏌ヨ鏈嶅姟) * @author Ludc @@ -155,73 +154,92 @@ 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.getBsCustQueryCLsOrUrl(); + // 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; + } } - //鐢熷懡鍛ㄦ湡鍦ㄥ叾涓煡璇㈠悗灏变細澶勭悊 - //鏋氫妇涔熶細琚鐞嗕簡 } /** @@ -238,102 +256,124 @@ 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.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); + //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被 + UIComponentVO componentVO = uiEngineService.getComponentByOid(formQuery.getComponentOid(), null); + UIFormDefineVO formDefineVO = componentVO.getFormDefineVO(); + //UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmName(),formQuery.getFormDefineId()); + String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl(); + 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", UIDataGridQuery.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.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); - } + 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; } /** -- Gitblit v1.9.3