田源
2023-05-09 d2570148ec3884de3af721bd99c4b7acbbdee075
Source/UBCS/ubcs-service/ubcs-ddl/src/main/java/com/vci/ubcs/ddl/service/IDdlService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,249 @@
package com.vci.ubcs.ddl.service;
import com.vci.ubcs.ddl.bo.DdlTableBO;
import com.vci.ubcs.omd.dto.BtmAndLinkTypeDdlDTO;
import com.vci.ubcs.omd.dto.BtmTypeDTO;
import com.vci.ubcs.omd.entity.ModifyAttributeInfo;
import com.vci.ubcs.omd.vo.BtmTypeAttributeVO;
import com.vci.ubcs.omd.vo.BtmTypeVO;
import com.vci.ubcs.omd.vo.LinkTypeAttributeVO;
import com.vci.ubcs.omd.vo.LinkTypeVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import org.springblade.core.tool.api.R;
import java.util.Collection;
import java.util.List;
/**
 * Description: æ•°æ®åº“操作服务类
 *  æ³¨æ„çš„æ˜¯ï¼Œoracle对于DDL操作都会先提交一次事务,当执行完成后会再次提交一次事务
 *
 * @author LiHang
 * @date 2023/4/24
 */
public interface IDdlService {
   /**
    * æ ¡éªŒä¸šåŠ¡ç±»åž‹çš„æ•°æ®åº“è¡¨ä¸­æ˜¯å¦æœ‰æ•°æ®
    * @param pkBtmType ä¸šåŠ¡ç±»åž‹çš„ä¸»é”®
    * @return true表示有数据,false表示没有数据
    * @throws VciBaseException å‚数为空或者查询出错的时候会抛出异常
    */
   boolean checkTableHasData(String pkBtmType) throws VciBaseException;
   /**
    * æ ¹æ®ä¸šåŠ¡ç±»åž‹æˆ–è€…é“¾æŽ¥ç±»åž‹çš„ä¸»é”®èŽ·å–æ•°æ®åº“è¡¨æ ¼çš„åç§°
    * @param pkBtmType  ä¸šåŠ¡ç±»åž‹æˆ–è€…é“¾æŽ¥ç±»åž‹çš„ä¸»é”®
    * @return æ•°æ®åº“表名称
    */
   String getTableNameByBtmTypeOid(String pkBtmType);
   /**
    * æ ¹æ®ä¸šåŠ¡ç±»åž‹èŽ·å–é“¾æŽ¥ç±»åž‹çš„è‹±æ–‡åç§°èŽ·å–æ•°æ®åº“è¡¨æ ¼çš„åç§°
    * @param id ä¸šåŠ¡ç±»åž‹èŽ·å–é“¾æŽ¥ç±»åž‹çš„è‹±æ–‡åç§°
    * @return æ•°æ®åº“表名称
    */
   String getTableNameByBtmTypeId(String id);
   /**
    * æ ¡éªŒä¸šåŠ¡ç±»åž‹çš„æ•°æ®åº“è¡¨ä¸­æ˜¯å¦æœ‰æ•°æ®
    * @param id ä¸šåŠ¡ç±»åž‹çš„è‹±æ–‡åç§°
    * @return true表示有数据,false表示没有数据
    * @throws VciBaseException å‚数为空或者查询出错的时候会抛出异常
    */
   boolean checkTableHasDataById(String id) throws VciBaseException;
   /**
    * æ‰¹é‡å°†ä¸šåŠ¡ç±»åž‹åˆ›å»ºæ•°æ®åº“è¡¨
    * @param pkBtmTypes ä¸šåŠ¡ç±»åž‹çš„ä¸»é”®
    * @throws VciBaseException å‚数为空或者创建表出现了错误的时候会抛出异常
    */
   void createDbTables(String pkBtmTypes) throws VciBaseException;
   /**
    * æ‰¹é‡å°†ä¸šåŠ¡ç±»åž‹åˆ›å»ºæ•°æ®åº“è¡¨
    * @param oidCollection ä¸šåŠ¡ç±»åž‹çš„ä¸»é”®é›†åˆ
    * @throws VciBaseException å‚数为空或者创建表出现了错误的时候会抛出异常
    */
   void createDbTablesByOidCollection(Collection<String> oidCollection) throws VciBaseException;
   /**
    * èŽ·å–åˆ›å»ºçš„sql语句中属性部分
    * @param attributeVOList å±žæ€§çš„立碑
    * @return sql语句
    */
   String getCreateSqlByAttributeForBtm(List<BtmTypeAttributeVO> attributeVOList);
   /**
    * æ‰¹é‡å°†ä¸šåŠ¡ç±»åž‹åˆ›å»ºæ•°æ®åº“è¡¨
    * @param ids ä¸šåŠ¡ç±»åž‹çš„è‹±æ–‡åç§°
    * @throws VciBaseException å‚数为空或者创建表出现了错误的时候会抛出异常
    */
   void createDbTablesById(String ids) throws VciBaseException;
   /**
    * ä¿®æ”¹ä¸šåŠ¡ç±»åž‹ä¸­çš„å±žæ€§å­—æ®µçš„é•¿åº¦ï¼Œæ³¨æ„åœ¨æ‰§è¡Œè¿™ä¸ªæ–¹æ³•æ—¶å°±ä¼šå°†ä»¥å‰çš„äº‹åŠ¡æäº¤ã€‚
    * @param modifyLengthAttrDOList éœ€è¦ä¿®æ”¹çš„属性对象
    * @throws VciBaseException æ‰§è¡Œå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
    */
   void changeColumnForBtm(List<BtmTypeAttributeVO> modifyLengthAttrDOList) throws VciBaseException;
   /**
    * ä¿®æ”¹é“¾æŽ¥ç±»åž‹ä¸­çš„属性字段的长度,注意在执行这个方法时就会将以前的事务提交。
    * @param modifyLengthAttrDOListForLinkType éœ€è¦ä¿®æ”¹çš„属性对象
    * @throws VciBaseException æ‰§è¡Œå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
    */
   void changeColumnForLink(List<LinkTypeAttributeVO> modifyLengthAttrDOListForLinkType) throws VciBaseException;
   /**
    * æ·»åŠ å±žæ€§å­—æ®µåˆ°ä¸šåŠ¡ç±»åž‹ä¸­ï¼Œæ³¨æ„åœ¨æ‰§è¡Œè¿™ä¸ªæ–¹æ³•æ—¶å°±ä¼šå°†ä»¥å‰çš„äº‹åŠ¡æäº¤ã€‚
    * @param addAttrDOList éœ€è¦æ·»åŠ çš„å±žæ€§å¯¹è±¡
    * @throws VciBaseException æ‰§è¡Œå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
    */
   void addColumn2TableForBtm(List<BtmTypeAttributeVO> addAttrDOList) throws VciBaseException;
   /**
    * æ·»åŠ å±žæ€§å­—æ®µåˆ°é“¾æŽ¥ç±»åž‹ä¸­ï¼Œæ³¨æ„åœ¨æ‰§è¡Œè¿™ä¸ªæ–¹æ³•æ—¶å°±ä¼šå°†ä»¥å‰çš„äº‹åŠ¡æäº¤ã€‚
    * @param addAttrDOListForLinkType éœ€è¦æ·»åŠ çš„å±žæ€§å¯¹è±¡
    * @throws VciBaseException æ‰§è¡Œå‡ºé”™çš„æ—¶å€™ä¼šæŠ›å‡ºå¼‚常
    */
   void addColumn2TableForLink(List<LinkTypeAttributeVO> addAttrDOListForLinkType) throws VciBaseException;
   /**
    * åˆ¤æ–­è¡¨ä¸­æ˜¯å¦æœ‰æ•°æ®
    * @param tableName è¡¨æ ¼çš„名称
    * @return true表示有数据,false表示没有数据,或者这个表格不存在的时候抛出异常
    * @throws VciBaseException å‚数错误的时候抛出异常
    */
   boolean checkTableHasDataByTableName(String tableName)  throws VciBaseException;
   /**
    * åˆ›å»ºè§†å›¾
    * @param viewCreateSql è§†å›¾çš„SQL语句
    * @throws VciBaseException å‚数错误或者执行错误的时候会抛出异常,执行错误主要包括SQL语句错误,没有权限等
    */
   void createViewBySql(String viewCreateSql) throws VciBaseException;
   /**
    * åˆ é™¤è¡¨æ ¼æˆ–者视图
    * @param tableName è¡¨æ ¼åç§°æˆ–者视图名称
    * @throws VciBaseException å‚数错误或者执行错误的时候会抛出异常
    */
   void dropTableByName(String tableName) throws VciBaseException;
   /**
    * åˆ é™¤è¡¨æ ¼çš„æŸä¸€åˆ—
    * @param tableName è¡¨æ ¼åç§°
    * @param columnName åˆ—的名称
    */
   void dropColumnByName(String tableName, String columnName);
   /**
    * æ ¡éªŒä¸šåŠ¡ç±»åž‹æˆ–è€…é“¾æŽ¥ç±»åž‹çš„å¯¹åº”çš„è¡¨æ ¼æ˜¯å¦å­˜åœ¨
    * @param pkBtmType ä¸šåŠ¡ç±»åž‹æˆ–è€…é“¾æŽ¥ç±»åž‹çš„è¡¨æ ¼
    * @return true表示存在,false表示不存在
    */
   boolean checkTableExist(String pkBtmType);
   /**
    * æ ¹æ®è¡¨æ ¼çš„名称判断表格是否存在
    * @param tableName è¡¨æ ¼åç§°
    * @return  rue表示存在,false表示不存在
    */
   boolean checkTableExistByTableName(String tableName);
   /**
    * æ ¡éªŒä¸šåŠ¡ç±»åž‹æˆ–è€…é“¾æŽ¥ç±»åž‹æ‰€å¯¹åº”çš„è¡¨æ ¼æ˜¯å¦å­˜åœ¨
    * @param id ä¸šåŠ¡ç±»åž‹æˆ–è€…é“¾æŽ¥ç±»åž‹çš„è‹±æ–‡åç§°
    * @return true表示存在,false表示不存在
    */
   boolean checkTableExistById(String id);
   /**
    * èŽ·å–æ•°æ®åº“å’Œä¸šåŠ¡ç±»åž‹ä¸­çš„ä¸åŒçš„åœ°æ–¹
    * @param btmTypeVOList ä¸šåŠ¡ç±»åž‹å¯¹è±¡ï¼Œæœ‰å±žæ€§æ—¶éœ€è¦åŒ…å«å±žæ€§
    * @param linkTypeVOList é“¾æŽ¥ç±»åž‹å¯¹è±¡ï¼Œæœ‰å±žæ€§æ—¶éœ€è¦åŒ…含属性
    * @return ä¸åŒçš„地方,每一个业务类型或者链接类型一条数据
    */
   List<ModifyAttributeInfo> checkDifferent(List<BtmTypeVO> btmTypeVOList, List<LinkTypeVO> linkTypeVOList) throws VciBaseException;
   /**
    * æ¸…理业务类型中和数据库里不一样的
    * @param differentAttributeList ä¸åŒçš„属性的列表
    * @param btmTypeVOList ä¸šåŠ¡ç±»åž‹æ•°æ®
    * @param linkTypeVOList é“¾æŽ¥ç±»åž‹æ•°æ®
    * @throws VciBaseException å‚数为空或者执行出错的时候会抛出异常
    */
   void reflexDifferent(List<ModifyAttributeInfo> differentAttributeList,List<BtmTypeVO> btmTypeVOList, List<LinkTypeVO> linkTypeVOList) throws VciBaseException;
   /**
    * èŽ·å–æ•°æ®åº“ä¸­æ‰€æœ‰çš„è¡¨æ ¼
    * @return è¡¨æ ¼çš„名称,全是大写
    */
   List<String> listAllTableName() ;
   /**
    * æŸ¥è¯¢æ•°æ®åº“中的表格信息
    * @param tableNamesCollections æ•°æ®åº“表名集合
    * @return åœ¨æ•°æ®åº“中的信息
    * @throws VciBaseException å‚数为空或者数据库表不存在的时候会抛出异常
    */
   List<DdlTableBO> listTableInfoInDB(Collection<String> tableNamesCollections) throws VciBaseException;
   /**
    * å¯¼å‡ºæ•°æ®åº“中的表格信息到excel文件
    * @param tableNamesCollections è¡¨æ ¼åç§°çš„集合
    * @param merge åˆå¹¶è¡¨æ ¼åç§°
    * @return excel的文件名称
    * @throws VciBaseException èš•食为空或者数据库表不存在的时候会抛出异常
    */
   String exportDataBase2File(Collection<String> tableNamesCollections,boolean merge) throws VciBaseException;
   /**
    * èŽ·å–å­˜å‚¨æ–‡ä»¶æ‰€éœ€è¦çš„ä¸´æ—¶æ–‡ä»¶å¤¹ï¼Œæ–‡ä»¶å¤¹ä¸Šå·²ç»åŒ…å«äº†
    * @return æ–‡ä»¶å¤¹çš„地址,如果配置文件没有配置,则默认返回当前项目所在的文件夹
    */
   String getTempFolder();
   /**
    * å¯¼å‡ºæ•°æ®åº“中的表格信息到word文件中
    * @param tableNamesCollections è¡¨æ ¼åç§°çš„集合
    * @return word的文件名称
    * @throws VciBaseException èš•食为空或者数据库表不存在的时候会抛出异常
    */
   String exportDataBase2Word(List<String> tableNamesCollections) throws VciBaseException;
   /**
    * æ‹·è´æ•°æ®åˆ°word模板中
    * @param tableDataBO è¦å†™å…¥çš„æ•°æ®
    * @return word æ–‡ä»¶è·¯å¾„
    *//*
   String writeDataToWord(WordMergeStartTableDataBO tableDataBO);*/
   /**
    * åˆ¤æ–­æ˜¯å¦ä¸ºå…¼å®¹æ€§çš„表,这些表不应该被创建和修改
    * @param btmTypeId ä¸šåŠ¡ç±»åž‹çš„è‹±æ–‡åç§°
    * @param linkTypeId ä¸šåŠ¡ç±»åž‹çš„ä¸­æ–‡åç§°
    * @return true è¡¨ç¤ºä¸ºå…¼å®¹æ€§çš„表,用户,角色,部门,权限这些
    */
   boolean isCompatibilityTable(String btmTypeId,String linkTypeId);
   /**
    * æ•°æ®åº“新增或修改表
    * @param ddlDTO ä¸šåŠ¡ç±»åž‹ä¼ è¾“å¯¹è±¡
    * @return æ‰§è¡Œç»“æžœ
    */
   R submit(BtmAndLinkTypeDdlDTO ddlDTO);
   /**
    * æŒ‰è¡¨åèŽ·å–è¡¨ä¿¡æ¯
    * @param tableName è¡¨å
    * @return è¡¨ä¿¡æ¯
    */
   DdlTableBO getTableColumnByTableName(String tableName);
   /**
    * èŽ·å–æ‰€æœ‰è¡¨ä¿¡æ¯
    * @return è¡¨ä¿¡æ¯é›†åˆ
    */
   List<BtmTypeVO> getAllTableInfo();
}