From 29d2aabc6a07be091d7b52ba51e12a6baf16f7ac Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期二, 06 六月 2023 17:40:18 +0800
Subject: [PATCH] 接口配置冲突

---
 Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java |   64 ++++++++++++++++++++++++--------
 1 files changed, 48 insertions(+), 16 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
index 3a8e185..cc39322 100644
--- a/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java
@@ -185,6 +185,26 @@
 	}
 
 	/**
+	 * 鍒涘缓閾炬帴绫诲瀷鐨勮〃鏍�
+	 *
+	 * @param linkTypeVO 閾炬帴绫诲瀷鐨勬樉绀哄璞�
+	 * @throws VciBaseException 鎵ц鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	private void createDbTableForLink(LinkTypeVO linkTypeVO) throws VciBaseException {
+		VciBaseUtil.alertNotNull(linkTypeVO, "瑕佸垱寤鸿〃鏍兼墍灞炵殑涓氬姟绫诲瀷", linkTypeVO.getTableName(), "涓氬姟绫诲瀷鐨勮〃鏍煎悕绉�");
+		String tableName = linkTypeVO.getTableName();
+		if (!checkTableExistByTableName(tableName)) {
+			String attributeSql = getCreateSqlByAttributeForLink(linkTypeVO.getAttributes());
+			dllMapper.createTableBySql(tableName, attributeSql);
+			if (StringUtils.isNotBlank(linkTypeVO.getName())) {
+				dllMapper.commentTable(tableName, linkTypeVO.getName());
+			}
+			linkTypeVO.getAttributes().forEach(s -> {
+				dllMapper.commentColumnTable(tableName, s.getId(), s.getName());
+			});
+		}
+	}
+	/**
 	 * 鑾峰彇鍒涘缓鐨剆ql璇彞涓睘鎬ч儴鍒�
 	 *
 	 * @param attributeVOList 灞炴�х殑绔嬬
@@ -196,7 +216,26 @@
 		attributeVOList.forEach(a -> {
 			sb.append(a.getId()).append(StringPool.SPACE);
 			VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.forValue(a.getAttrDataType());
-			sb.append(dllMapper.getColumnTypeSql(fieldTypeEnum, a));
+			sb.append(dllMapper.getColumnTypeSql(fieldTypeEnum, a)).append(",");
+		});
+		return sb.substring(0, sb.lastIndexOf(","));
+	}
+
+	/**
+	 * 鑾峰彇鍒涘缓鐨剆ql璇彞涓睘鎬ч儴鍒�
+	 *
+	 * @param attributeVOList 灞炴�х殑绔嬬
+	 * @return sql璇彞
+	 */
+	@Override
+	public String getCreateSqlByAttributeForLink(List<LinkTypeAttributeVO> attributeVOList) {
+		StringBuilder sb = new StringBuilder();
+		attributeVOList.forEach(a -> {
+			BtmTypeAttributeVO attributeVO = Optional.ofNullable(BeanUtil.copy(a, BtmTypeAttributeVO.class)).orElseGet(BtmTypeAttributeVO::new);
+			attributeVO.setPkBtmType(a.getPkLinkType());
+			sb.append(a.getId()).append(StringPool.SPACE);
+			VciFieldTypeEnum fieldTypeEnum = VciFieldTypeEnum.forValue(a.getAttrDataType());
+			sb.append(dllMapper.getColumnTypeSql(fieldTypeEnum, attributeVO)).append(",");
 		});
 		return sb.substring(0, sb.lastIndexOf(","));
 	}
@@ -210,19 +249,10 @@
 	@Override
 	public void createDbTablesById(String ids) throws VciBaseException {
 		VciBaseUtil.alertNotNull(ids, "涓氬姟绫诲瀷/閾炬帴绫诲瀷鐨勮嫳鏂囬泦鍚�");
-		List<BtmTypeVO> btmTypeVOList = BtmTypeCache.selectByIdCollection(VciBaseUtil.str2List(ids));
-//		List<OsLinkTypeVO> linkTypeVOList = linkTypeService.listLinkTypeByIdCollection(VciBaseUtil.str2List(ids));
-		if (!CollectionUtils.isEmpty(btmTypeVOList)) {
-			//璇存槑鏄笟鍔$被鍨�
-			btmTypeVOList.forEach(this::createDbTableForBtm);
-		}
-		/*//璇曡瘯閾炬帴绫诲瀷
-		if(!CollectionUtils.isEmpty(linkTypeVOList)){
-			//鐨勭‘鏄摼鎺ョ被鍨�
-			linkTypeVOList.stream().forEach( s -> {
-				createDbTableForLink(s);
-			});
-		}*/
+		// 涓氬姟绫诲瀷
+		Func.toStrList(",",ids).stream().filter(idBtmMap::containsKey).map(idBtmMap::get).forEach(this::createDbTableForBtm);
+		// 閾炬帴绫诲瀷
+		Func.toStrList(",",ids).stream().filter(idLinkMap::containsKey).map(idLinkMap::get).forEach(this::createDbTableForLink);
 	}
 
 	/**
@@ -540,6 +570,7 @@
 					modifyAttributeInfo.setBeforeModifyAttributes(String.join(",", beforeList));
 				}
 			}
+			modifyAttributeInfoDOList.add(modifyAttributeInfo);
 		});
 		return modifyAttributeInfoDOList;
 	}
@@ -641,6 +672,7 @@
 					}
 
 				}
+				modifyAttributeInfoDOList.add(modifyAttributeInfo);
 		});
 		return modifyAttributeInfoDOList;
 	}
@@ -719,8 +751,8 @@
 	@Override
 	public void reflexDifferent(List<ModifyAttributeInfo> differentAttributeList, List<BtmTypeVO> btmTypeVOList, List<LinkTypeVO> linkTypeVOList) throws VciBaseException {
 		VciBaseUtil.alertNotNull(differentAttributeList, "瑕佹竻鐞嗙殑鏁版嵁搴撶殑淇℃伅涓虹┖");
-		Map<String, BtmTypeVO> idBtmTypeMap = btmTypeVOList.stream().collect(Collectors.toMap(BtmTypeVO::getId, t -> t, (o1, o2) -> o1));
-		Map<String, LinkTypeVO> idLinkTypeMap = linkTypeVOList.stream().collect(Collectors.toMap(LinkTypeVO::getId, t -> t, (o1, o2) -> o1));
+		Map<String, BtmTypeVO> idBtmTypeMap = Optional.ofNullable(btmTypeVOList).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(BtmTypeVO::getId, t -> t, (o1, o2) -> o1));
+		Map<String, LinkTypeVO> idLinkTypeMap = Optional.ofNullable(linkTypeVOList).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(LinkTypeVO::getId, t -> t, (o1, o2) -> o1));
 		differentAttributeList.forEach(s -> {
 //			BtmTypeVO btmType = idBtmTypeMap.get(id);
 			if (ModifyTableTaskEnum.CREATE.getValue().equalsIgnoreCase(s.getTaskName())) {

--
Gitblit v1.9.3