From 1c407a93546036bc0438fbe019aeaf03f6ef1805 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 05 七月 2023 19:15:38 +0800
Subject: [PATCH] 提交代码
---
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/impl/DdlServiceImpl.java | 243 +++++++++++++++++++++++++-----------------------
1 files changed, 126 insertions(+), 117 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 91bb8c2..eb74293 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
@@ -17,6 +17,9 @@
import com.vci.ubcs.omd.constant.BtmTypeFieldConstant;
import com.vci.ubcs.omd.constant.BtmTypeLcStatusConstant;
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
+import com.vci.ubcs.omd.dto.TableAddColumnDTO;
+import com.vci.ubcs.omd.dto.TableCheckDTO;
+import com.vci.ubcs.omd.dto.TableCheckResultDTO;
import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
import com.vci.ubcs.omd.vo.*;
import com.vci.ubcs.starter.exception.VciBaseException;
@@ -32,6 +35,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -61,13 +65,15 @@
/**
* ddl鏁版嵁鎿嶄綔鏈嶅姟
*/
- private final DdlMapperProcessor ddlMapper = DdlMapperProcessStrategy.getProcessor();
+ @Autowired
+ private DdlMapperProcessor ddlMapper;
/**
* dll鏁版嵁鎿嶄綔鏈嶅姟
*/
- private final DllMapperProcessor dllMapper = DllMapperProcessorStrategy.getProcessor();
+ @Autowired
+ private DllMapperProcessor dllMapper;
private static final String YES = "Y";
@@ -77,25 +83,25 @@
private final Map<String, LinkTypeVO> idLinkMap = new ConcurrentHashMap<>();
- private void putBtm(@NotNull BtmTypeVO... voList) throws ServiceException {
+ private void putBtm(@NotNull BtmTypeVO... voList) throws Throwable {
String collect = Arrays.stream(voList).map(BtmTypeVO::getId).filter(idBtmMap::containsKey).collect(Collectors.joining(","));
if (StringUtils.isBlank(collect)) {
Arrays.stream(voList).forEach(vo -> {
idBtmMap.put(vo.getId(), vo);
});
} else {
- throw new ServiceException("涓氬姟绫诲瀷:[" + collect + "]姝e湪琚叾浠栫敤鎴锋搷浣�");
+ throw new Throwable("涓氬姟绫诲瀷:[" + collect + "]姝e湪琚叾浠栫敤鎴锋搷浣�");
}
}
- private void putLink(@NotNull LinkTypeVO... voList) throws ServiceException {
+ private void putLink(@NotNull LinkTypeVO... voList) throws Throwable {
String collect = Arrays.stream(voList).map(LinkTypeVO::getId).filter(idLinkMap::containsKey).collect(Collectors.joining(","));
if (StringUtils.isBlank(collect)) {
Arrays.stream(voList).forEach(vo -> {
idLinkMap.put(vo.getId(), vo);
});
} else {
- throw new ServiceException("閾炬帴绫诲瀷:[" + collect + "]姝e湪琚叾浠栫敤鎴锋搷浣�");
+ throw new Throwable("閾炬帴绫诲瀷:[" + collect + "]姝e湪琚叾浠栫敤鎴锋搷浣�");
}
}
@@ -119,77 +125,6 @@
}
}
- /**
- * 鏍¢獙涓氬姟绫诲瀷鐨勬暟鎹簱琛ㄤ腑鏄惁鏈夋暟鎹�
- *
- * @param pkBtmType 涓氬姟绫诲瀷鐨勪富閿�
- * @return true琛ㄧず鏈夋暟鎹紝false琛ㄧず娌℃湁鏁版嵁
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public boolean checkTableHasData(String pkBtmType) throws VciBaseException {
- return checkTableHasDataByTableName(getTableNameByBtmTypeOid(pkBtmType));
- }
-
- /**
- * 鏍规嵁涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑涓婚敭鑾峰彇鏁版嵁搴撹〃鏍肩殑鍚嶇О
- *
- * @param pkBtmType 涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑涓婚敭
- * @return 鏁版嵁搴撹〃鍚嶇О
- */
- @Override
- public String getTableNameByBtmTypeOid(String pkBtmType) {
- VciBaseUtil.alertNotNull(pkBtmType, "涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑涓婚敭");
- BtmTypeVO btmType = BtmTypeCache.getDetail(pkBtmType);
- String tableName = "";
- if (btmType == null || StringUtils.isBlank(btmType.getOid())) {
- /*OsLinkTypeDO linkTypeDO = linkTypeDOMapper.selectByPrimaryKey(pkBtmType.trim());
- if(linkTypeDO == null || StringUtils.isBlank(linkTypeDO.getOid()) ){
- throw new com.vci.starter.web.exception.VciBaseException("涓嶆槸涓氬姟绫诲瀷锛屼篃涓嶆槸閾炬帴绫诲瀷锛岃鏌ヨ瘉");
- }else{
- tableName = linkTypeService.getTableName(linkTypeDO.getId());
- }*/
- } else {
- tableName = btmType.getTableName();
- }
- return tableName;
- }
-
- /**
- * 鏍规嵁涓氬姟绫诲瀷鑾峰彇閾炬帴绫诲瀷鐨勮嫳鏂囧悕绉拌幏鍙栨暟鎹簱琛ㄦ牸鐨勫悕绉�
- *
- * @param id 涓氬姟绫诲瀷鑾峰彇閾炬帴绫诲瀷鐨勮嫳鏂囧悕绉�
- * @return 鏁版嵁搴撹〃鍚嶇О
- */
- @Override
- public String getTableNameByBtmTypeId(String id) {
- VciBaseUtil.alertNotNull(id, "涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑鑻辨枃鍚嶇О");
- List<BtmTypeVO> btmTypeList = BtmTypeCache.selectByIdCollection(VciBaseUtil.str2List(id));
- String tableName = "";
- if (CollectionUtils.isEmpty(btmTypeList)) {
- /*List<OsLinkTypeDO> linkTypeDOList = linkTypeDOMapper.selectByIdCollection(VciBaseUtil.str2List(id));
- if(CollectionUtils.isEmpty(linkTypeDOList)){
- throw new com.vci.starter.web.exception.VciBaseException("涓嶆槸涓氬姟绫诲瀷锛屼篃涓嶆槸閾炬帴绫诲瀷锛岃鏌ヨ瘉");
- }else{
- tableName = linkTypeService.getTableName(linkTypeDOList.get(0).getId());
- }*/
- } else {
- tableName = btmTypeList.get(0).getTableName();
- }
- return tableName;
- }
-
- /**
- * 鏍¢獙涓氬姟绫诲瀷鐨勬暟鎹簱琛ㄤ腑鏄惁鏈夋暟鎹�
- *
- * @param id 涓氬姟绫诲瀷鐨勮嫳鏂囧悕绉�
- * @return true琛ㄧず鏈夋暟鎹紝false琛ㄧず娌℃湁鏁版嵁
- * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
- */
- @Override
- public boolean checkTableHasDataById(String id) throws VciBaseException {
- return checkTableHasDataByTableName(getTableNameByBtmTypeId(id));
- }
/**
* 鎵归噺灏嗕笟鍔$被鍨嬪垱寤烘暟鎹簱琛�
@@ -253,6 +188,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 灞炴�х殑绔嬬
@@ -264,7 +219,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(","));
}
@@ -278,19 +252,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);
}
/**
@@ -480,16 +445,6 @@
ddlMapper.dropTableColumn(tableName, columnName);
}
- /**
- * 鏍¢獙涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑瀵瑰簲鐨勮〃鏍兼槸鍚﹀瓨鍦�
- *
- * @param pkBtmType 涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑琛ㄦ牸
- * @return true琛ㄧず瀛樺湪锛宖alse琛ㄧず涓嶅瓨鍦�
- */
- @Override
- public boolean checkTableExist(String pkBtmType) {
- return checkTableExistByTableName(getTableNameByBtmTypeOid(pkBtmType));
- }
/**
* 鏍规嵁琛ㄦ牸鐨勫悕绉板垽鏂〃鏍兼槸鍚﹀瓨鍦�
@@ -502,16 +457,6 @@
return ddlMapper.checkTableExist(tableName) > 0;
}
- /**
- * 鏍¢獙涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬫墍瀵瑰簲鐨勮〃鏍兼槸鍚﹀瓨鍦�
- *
- * @param id 涓氬姟绫诲瀷鎴栬�呴摼鎺ョ被鍨嬬殑鑻辨枃鍚嶇О
- * @return true琛ㄧず瀛樺湪锛宖alse琛ㄧず涓嶅瓨鍦�
- */
- @Override
- public boolean checkTableExistById(String id) {
- return checkTableExistByTableName(getTableNameByBtmTypeId(id));
- }
/**
* 鑾峰彇鏁版嵁搴撳拰涓氬姟绫诲瀷涓殑涓嶅悓鐨勫湴鏂�
@@ -628,6 +573,7 @@
modifyAttributeInfo.setBeforeModifyAttributes(String.join(",", beforeList));
}
}
+ modifyAttributeInfoDOList.add(modifyAttributeInfo);
});
return modifyAttributeInfoDOList;
}
@@ -729,6 +675,7 @@
}
}
+ modifyAttributeInfoDOList.add(modifyAttributeInfo);
});
return modifyAttributeInfoDOList;
}
@@ -807,8 +754,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())) {
@@ -1031,7 +978,7 @@
* @return 鎵ц缁撴灉
*/
@Override
- public R<List<ModifyAttributeInfo>> submit(BtmAndLinkTypeDdlDTO ddlDTO) {
+ public R<List<ModifyAttributeInfo>> submit(BtmAndLinkTypeDdlDTO ddlDTO) throws Throwable {
try {
List<ModifyAttributeInfo> changedList = new ArrayList<>();
if (!CollectionUtils.isEmpty(ddlDTO.getBtmTypeList())) {
@@ -1049,8 +996,19 @@
R<List<ModifyAttributeInfo>> result = R.success("鏁版嵁搴撴搷浣滄垚鍔�");
result.setData(changedList);
return result;
- } catch (ServiceException e) {
- throw new RuntimeException(e.getMessage());
+ } catch (Exception e) {
+ try {
+ // 寤鸿〃澶辫触鏈夊紓甯革紝鎹曡幏鍚庤繑鍥烇紝骞堕噴鏀剧嚎绋嬩腑鐨勫唴瀹�
+ if (!CollectionUtils.isEmpty(ddlDTO.getBtmTypeList())) {
+ removeBtm(ddlDTO.getBtmTypeList().toArray(new BtmTypeVO[0]));
+ }
+ if (!CollectionUtils.isEmpty(ddlDTO.getLinkTypeList())) {
+ removeLink(ddlDTO.getLinkTypeList().toArray(new LinkTypeVO[0]));
+ }
+ return R.fail(e.getMessage());
+ }catch (ServiceException e2){
+ throw new RuntimeException(e2.getMessage());
+ }
}
}
@@ -1112,7 +1070,7 @@
BtmTypeAttributeVO attributeVO = new BtmTypeAttributeVO();
attributeVO.setId(col.getId().toLowerCase());
attributeVO.setName(col.getName());
- attributeVO.setNullableFlag(col.getNullableFlag());
+ attributeVO.setNullableFlag(StringUtils.equals(col.getNullableFlag(), BooleanEnum.TRUE.getValue()));
attributeVO.setAttributeLength(col.getAttributeLength());
attributeVO.setPrecisionLength(col.getPrecisionLength());
attributeVO.setScaleLength(col.getScaleLength());
@@ -1132,4 +1090,55 @@
}
return new ArrayList<>();
}
+
+ /**
+ * 妫�鏌ユ暟鎹〃鏄惁瀛樺湪鏁版嵁锛屼笉瀛樺湪鍒欏垹闄�
+ *
+ * @param tableCheckDTOList 闇�瑕佹鏌ョ殑琛ㄩ泦鍚�
+ * @return 妫�鏌ョ粨鏋�
+ */
+ @Override
+ public TableCheckResultDTO checkTableHasDataThenDelete(List<TableCheckDTO> tableCheckDTOList) {
+ TableCheckResultDTO resultDTO = new TableCheckResultDTO();
+ List<TableCheckDTO> successList = new ArrayList<>();
+ List<TableCheckDTO> failList = new ArrayList<>();
+ tableCheckDTOList.forEach(table -> {
+ VciBaseUtil.alertNotNull(table.getTableName(),"鏁版嵁琛ㄥ悕绉�");
+ TableCheckDTO checkDTO = new TableCheckDTO();
+ boolean hasDataFlag = checkTableHasDataByTableName(table.getTableName());
+ if (hasDataFlag){
+ table.setDone(false);
+ failList.add(checkDTO);
+ }else {
+ dropTableByName(table.getTableName());
+ table.setDone(true);
+ successList.add(table);
+ }
+ });
+ if (!CollectionUtils.isEmpty(successList)){
+ resultDTO.setSuccessList(successList);
+ }
+ if (!CollectionUtils.isEmpty(failList)){
+ resultDTO.setFailList(failList);
+ }
+ return resultDTO;
+ }
+
+ /**
+ * 涓鸿〃娣诲姞瀛楁
+ *
+ * @param addColumnDTO 娣诲姞鐨勫璞�
+ * @return 鎵ц缁撴灉鏍囪瘑
+ */
+ @Override
+ public Boolean addColumnForTable(TableAddColumnDTO addColumnDTO) {
+ VciBaseUtil.alertNotNull(addColumnDTO,"娣诲姞瀛楁鐨勫璞�");
+ if (!CollectionUtils.isEmpty(addColumnDTO.getLinkTypeAttributeVOList())){
+ addColumn2TableForLink(addColumnDTO.getLinkTypeAttributeVOList());
+ }
+ if(!CollectionUtils.isEmpty(addColumnDTO.getBtmTypeAttributeVOList())){
+ addColumn2TableForBtm(addColumnDTO.getBtmTypeAttributeVOList());
+ }
+ return true;
+ }
}
--
Gitblit v1.9.3