From 7602a824e39e19260ae32bb45e799e6ce43300ac Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 14 七月 2023 21:15:29 +0800
Subject: [PATCH] 参照配置组件修改

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java |  137 ++++++++++++++++++++++++++-------------------
 1 files changed, 80 insertions(+), 57 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
index 051c73b..35e96c2 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -963,13 +963,16 @@
         CodeClassifyFullInfoBO classifyFullInfo = classifyService.getClassifyFullInfo(codeClassifyOid);
 
         List<UIFormItemVO> itemVOS = new ArrayList<>();
-        Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = templateVO.getAttributes().stream().
-                filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup()));
 
-        templateVO.getAttributes().forEach(attrVO -> {
-            UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
-            itemVOS.add(formItemVO);
-        });
+		Map<String, List<CodeClassifyTemplateAttrVO>> attrGroupMap = new HashMap<>();
+		if (Func.isNotEmpty(templateVO.getAttributes())) {
+			attrGroupMap = templateVO.getAttributes().stream().
+				filter(s -> StringUtils.isNotBlank(s.getAttributeGroup())).collect(Collectors.groupingBy(s -> s.getAttributeGroup()));
+			templateVO.getAttributes().forEach(attrVO -> {
+				UIFormItemVO formItemVO = templateAttr2FormField(attrVO, templateVO.getBtmTypeId());
+				itemVOS.add(formItemVO);
+			});
+		}
         //澶勭悊灞炴�у垎缁�
         if (!CollectionUtils.isEmpty(attrGroupMap)) {
             //鎸夌収鍒嗙粍鐨勫睘鎬ф帓鍒楋紝鎵惧埌姣忎竴涓垎缁勭殑绗竴涓睘鎬�
@@ -1440,26 +1443,32 @@
         }
         //鍏堣浆鎹竴涓嬫椂闂存牸寮�
         List<String> finalOnlySelectAttrIdList = onlySelectAttrIdList.stream().collect(Collectors.toList());
-        List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
-                s -> StringUtils.isNotBlank(s.getCodeDateFormat()) &&
-                        (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
-        ).collect(Collectors.toList());
-        //鏋氫妇鐨勫唴瀹�
-        List<CodeClassifyTemplateAttrVO> enumAttrVOs = templateVO.getAttributes().stream().filter(
-                s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString()))
-                        &&
-                        (finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
-        ).collect(Collectors.toList());
+		List<CodeClassifyTemplateAttrVO> dateFormatAttrVOs = new ArrayList<>();
+		List<CodeClassifyTemplateAttrVO> enumAttrVOs = new ArrayList<>();
+		if (Func.isNotEmpty(templateVO.getAttributes())) {
+			dateFormatAttrVOs = templateVO.getAttributes().stream().filter(
+				s -> StringUtils.isNotBlank(s.getCodeDateFormat()) &&
+					(finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
+			).collect(Collectors.toList());
+			//鏋氫妇鐨勫唴瀹�
+			enumAttrVOs = templateVO.getAttributes().stream().filter(
+				s -> (StringUtils.isNotBlank(s.getEnumId()) || StringUtils.isNotBlank(s.getEnumString()))
+					&&
+					(finalOnlySelectAttrIdList.size() == 0 || finalOnlySelectAttrIdList.contains(s.getId().toLowerCase(Locale.ROOT)))
+			).collect(Collectors.toList());
+		}
 
         List<String> userIds = new ArrayList<>();
-        dataMap.stream().forEach(data -> {
+		List<CodeClassifyTemplateAttrVO> finalDateFormatAttrVOs = dateFormatAttrVOs;
+		List<CodeClassifyTemplateAttrVO> finalEnumAttrVOs = enumAttrVOs;
+		dataMap.stream().forEach(data -> {
             //澶勭悊鏃堕棿
             if (!form) {
                 //琛ㄥ崟鐨勬椂鍊欏彧鑳界敤缁熶竴鐨勬椂闂存牸寮�
-                wrapperDateFormat(dateFormatAttrVOs, data);
+                wrapperDateFormat(finalDateFormatAttrVOs, data);
             }
             //澶勭悊鏋氫妇
-            wrapperEnum(enumAttrVOs, data);
+            wrapperEnum(finalEnumAttrVOs, data);
             String lcstatus = data.get(VciQueryWrapperForDO.LC_STATUS_FIELD);
             String copyFromVersion = data.getOrDefault(COPY_FROM_VERSION, "");
             if ((CodeDefaultLC.EDITING.getValue().equalsIgnoreCase(lcstatus) || CodeDefaultLC.AUDITING.getValue().equalsIgnoreCase(lcstatus))
@@ -1574,17 +1583,25 @@
         //鍥犱负鍙傜収涓嶄竴瀹氭槸鍦ㄥ钩鍙扮殑灞炴�ф睜閲岄潰璁剧疆锛屾墍浠ユ垜浠緱闇�瑕佽嚜琛屽鐞�
         //鍙傝�僔ciQueryWrapper鏉ュ鐞�
         //1. 鎵惧埌鎵�鏈夌殑瀛楁锛�
-        Map<String, CodeClassifyTemplateAttrVO> attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
-        List<String> selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
+		Map<String, CodeClassifyTemplateAttrVO> attrVOMap = new HashMap<>();
+		List<String> selectFieldList = new ArrayList<>();
+		if(Func.isNotEmpty(templateVO.getAttributes())){
+			attrVOMap = templateVO.getAttributes().stream().collect(Collectors.toMap(s -> s.getId().toLowerCase(Locale.ROOT), t -> t));
+			selectFieldList = attrVOMap.keySet().stream().collect(Collectors.toList());
+		}
 
         //鎵�鏈夌殑鍙傜収鐨勫瓧娈�
         Map<String/**灞炴�у瓧娈�**/, String> joinTableList = new ConcurrentHashMap<>();
-        List<CodeClassifyTemplateAttrVO> referAttrVOs = templateVO.getAttributes().stream().filter(
-                s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig())
-        ).collect(Collectors.toList());
+		List<CodeClassifyTemplateAttrVO> referAttrVOs = null;
+		if (Func.isNotEmpty(templateVO.getAttributes())) {
+			referAttrVOs = templateVO.getAttributes().stream().filter(
+				s -> StringUtils.isNotBlank(s.getReferBtmId()) || StringUtils.isNotBlank(s.getReferConfig())
+			).collect(Collectors.toList());
+		}
         Map<String/**鍙傜収鐨勫睘鎬�**/, String/**瀹為檯鐨勫瓧娈�**/> referFieldMap = new ConcurrentHashMap<>();
         if (!CollectionUtils.isEmpty(referAttrVOs)) {
-            referAttrVOs.parallelStream().forEach(attrVO -> {
+			List<String> finalSelectFieldList = selectFieldList;
+			referAttrVOs.parallelStream().forEach(attrVO -> {
                 UIFormReferVO referVO = null;
                 if (StringUtils.isNotBlank(attrVO.getReferConfig())) {
                     referVO = JSONObject.parseObject(attrVO.getReferConfig(), UIFormReferVO.class);
@@ -1614,7 +1631,7 @@
                     showFieldInSource = textFields.get(0);
                 }
                 referFieldMap.put(attrVO.getId(), referTableNick + "." + showFieldInSource);
-                selectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
+                finalSelectFieldList.add(referTableNick + "." + showFieldInSource + " as " + referShowField);
             });
         }
         R<BtmTypeVO> allAttributeByBtmId = btmTypeClient.getDefaultAttrByBtmId(btmType);
@@ -1658,11 +1675,12 @@
                 }
             });
 
-            andCondtionMap.forEach((k, v) -> {
-                andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap, btmType));
+			Map<String, CodeClassifyTemplateAttrVO> finalAttrVOMap = attrVOMap;
+			andCondtionMap.forEach((k, v) -> {
+                andSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType));
             });
             orConditionMap.forEach((k, v) -> {
-                orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, attrVOMap, btmType));
+                orSql.add(getConditionSql(k.toLowerCase(), v, referFieldMap, finalAttrVOMap, btmType));
             });
         }
         //缁勫悎璧锋潵
@@ -2858,38 +2876,43 @@
         List<UITableFieldVO> fieldVOList = new ArrayList<>();
         Map<String, String> comboxOrReferFieldMap = new HashMap<>();
 
-        templateVO.getAttributes().forEach(attrVO -> {
-            UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, forEdit);
-            if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) {
-                comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
-            }
-            if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) {
-                comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
-            }
-            if (StringUtils.isNotBlank(tableFieldVO.getEdit())) {
-                tableDefineVO.setHasEditor(true);
-            }
-            fieldVOList.add(tableFieldVO);
-        });
+		if (Func.isNotEmpty(templateVO.getAttributes())) {
+			templateVO.getAttributes().forEach(attrVO -> {
+				UITableFieldVO tableFieldVO = templateAttr2TableField(attrVO, forEdit);
+				if ("combox".equalsIgnoreCase(tableFieldVO.getFieldType())) {
+					comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
+				}
+				if ("refer".equalsIgnoreCase(tableFieldVO.getFieldType())) {
+					comboxOrReferFieldMap.put(tableFieldVO.getSortField(), tableFieldVO.getField());
+				}
+				if (StringUtils.isNotBlank(tableFieldVO.getEdit())) {
+					tableDefineVO.setHasEditor(true);
+				}
+				fieldVOList.add(tableFieldVO);
+			});
+		}
         List<List<UITableFieldVO>> cols = new ArrayList<>();
         cols.add(fieldVOList);
         tableDefineVO.setCols(cols);
         Map<String, UITableFieldVO> fieldVOMap = fieldVOList.stream().collect(Collectors.toMap(s -> s.getField().toLowerCase(Locale.ROOT), t -> t));
-        //鏌ヨ灞炴��
-        List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList());
-        if (!CollectionUtils.isEmpty(queryAttrVOs)) {
-            List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
-            queryAttrVOs.stream().forEach(attrVO -> {
-                String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
-                attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT);
-                if (fieldVOMap.containsKey(attrId)) {
-                    queryFieldVOs.add(fieldVOMap.get(attrId));
-                }
-            });
-            tableDefineVO.setQueryColumns(queryFieldVOs);
-        }
-        //楂樼骇灞炴��
-        List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList());
+		List<CodeClassifyTemplateAttrVO> seniorQueryAttrVOs = null;
+		if (Func.isNotEmpty(templateVO.getAttributes())) {
+			//鏌ヨ灞炴��
+			List<CodeClassifyTemplateAttrVO> queryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getQueryAttrFlag())).collect(Collectors.toList());
+			if (!CollectionUtils.isEmpty(queryAttrVOs)) {
+				List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
+				queryAttrVOs.stream().forEach(attrVO -> {
+					String attrId = attrVO.getId().toLowerCase(Locale.ROOT);
+					attrId = comboxOrReferFieldMap.getOrDefault(attrId, attrVO.getId()).toLowerCase(Locale.ROOT);
+					if (fieldVOMap.containsKey(attrId)) {
+						queryFieldVOs.add(fieldVOMap.get(attrId));
+					}
+				});
+				tableDefineVO.setQueryColumns(queryFieldVOs);
+			}
+			//楂樼骇灞炴��
+			seniorQueryAttrVOs = templateVO.getAttributes().stream().filter(s -> BooleanEnum.TRUE.getValue().equalsIgnoreCase(s.getSeniorQueryAttrFlag())).collect(Collectors.toList());
+		}
         if (!CollectionUtils.isEmpty(seniorQueryAttrVOs)) {
             List<UITableFieldVO> queryFieldVOs = new ArrayList<>();
             seniorQueryAttrVOs.stream().forEach(attrVO -> {

--
Gitblit v1.9.3