From 31b17f1a6d4e39bf122533ecfd1cd47801021fb6 Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 06 十二月 2024 15:13:46 +0800
Subject: [PATCH] 数据授权
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java | 356 +++++++++++++++++++++++++++++++++--------------------------
1 files changed, 198 insertions(+), 158 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..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
@@ -150,78 +149,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.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;
+ }
}
- //鐢熷懡鍛ㄦ湡鍦ㄥ叾涓煡璇㈠悗灏变細澶勭悊
- //鏋氫妇涔熶細琚鐞嗕簡
}
/**
@@ -233,107 +251,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 = 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.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);
- }
+ 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 +407,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()));
@@ -383,7 +423,7 @@
throw new VciBaseException("杩欎釜缁勪欢涓嶆槸鏍�");
}
if(!treeQuery.isLinkTypeFlag() && StringUtils.isBlank(treeQuery.getParentBtmName())){
- treeQuery.setParentBtmName(treeQuery.getBtmname());
+ treeQuery.setParentBtmName(treeQuery.getBtmName());
}
//TODO: 鏇挎崲鏍戝畾涔変笂鐨勬鍙嶅悜鏌ヨ灞炴�э紝鍥犱负姝e弽鍚戞煡璇㈡槸鐢遍摼鎺ョ被鍨嬫煡璇㈡ā鏉夸笂鎺у埗鐨�
boolean isOrientation = false; //鏄惁鍙嶅悜锛屼娇鐢ㄦā鏉夸笂閰嶇疆鐨�
--
Gitblit v1.10.0