From 10ed0520bf13a9fd93d6a8050fbce14652493ba3 Mon Sep 17 00:00:00 2001
From: wangting <wangting@vci-tech.com>
Date: 星期四, 02 一月 2025 18:26:39 +0800
Subject: [PATCH] 将动态路由的path用菜单id赋值
---
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java | 731 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 395 insertions(+), 336 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..7a75659 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,195 @@
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.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 +616,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());
}
}
}
@@ -1235,7 +1297,6 @@
return result;
}
-
/**
* 灏佽cbo瀵硅薄
* @param formDataDTO 琛ㄥ崟鏁版嵁
@@ -1300,7 +1361,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 +1412,6 @@
}
return data;
}
-
/**
* 閾炬帴鏁版嵁琛ㄥ崟瀵硅薄杞崲涓哄熀纭�鐨勫睘鎬�
@@ -1945,7 +2005,6 @@
return BaseResult.success(clo);
}
-
/**
* 灏佽to绔殑鏁版嵁
* @param formLinkDataDTO 閾炬帴绫诲瀷鐨勮〃鍗曟暟鎹�
@@ -2100,7 +2159,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 +2254,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 +2698,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