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;
@@ -119,77 +122,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));
   }
   /**
    * 批量将业务类型创建数据库表
@@ -480,16 +412,6 @@
      ddlMapper.dropTableColumn(tableName, columnName);
   }
   /**
    * 校验业务类型或者链接类型的对应的表格是否存在
    *
    * @param pkBtmType 业务类型或者链接类型的表格
    * @return true表示存在,false表示不存在
    */
   @Override
   public boolean checkTableExist(String pkBtmType) {
      return checkTableExistByTableName(getTableNameByBtmTypeOid(pkBtmType));
   }
   /**
    * 根据表格的名称判断表格是否存在
@@ -502,16 +424,6 @@
      return ddlMapper.checkTableExist(tableName) > 0;
   }
   /**
    * 校验业务类型或者链接类型所对应的表格是否存在
    *
    * @param id 业务类型或者链接类型的英文名称
    * @return true表示存在,false表示不存在
    */
   @Override
   public boolean checkTableExistById(String id) {
      return checkTableExistByTableName(getTableNameByBtmTypeId(id));
   }
   /**
    * 获取数据库和业务类型中的不同的地方
@@ -1132,4 +1044,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;
   }
}