diff --git a/muyu-modules/muyu-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/TableInfo.java b/muyu-modules/muyu-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/TableInfo.java index 57df56c..340a173 100644 --- a/muyu-modules/muyu-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/TableInfo.java +++ b/muyu-modules/muyu-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/TableInfo.java @@ -30,6 +30,8 @@ public class TableInfo extends TreeEntity { @TableId(value = "id",type = IdType.AUTO) private Long id; + private Long basicId; + /** * 表名称/数据库/ diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/AssetImpowerController.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/AssetImpowerController.java new file mode 100644 index 0000000..4e203a3 --- /dev/null +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/AssetImpowerController.java @@ -0,0 +1,31 @@ +package com.muyu.etl.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.etl.domain.AssetImpower; +import com.muyu.etl.domain.TableInfo; +import com.muyu.etl.service.AssetImpowerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 资产赋权 AssetImpowerController + * + * @author xiaohuang + * on 2024/5/12 + */ +@RestController +@RequestMapping("/impower") +public class AssetImpowerController extends BaseController { + + @Autowired + private AssetImpowerService assetImpowerService; + + + +} diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/BasicConfigInfoController.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/BasicConfigInfoController.java index 0e0aa39..94d480b 100644 --- a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/BasicConfigInfoController.java +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/controller/BasicConfigInfoController.java @@ -7,9 +7,14 @@ import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.log.annotation.Log; import com.muyu.common.log.enums.BusinessType; import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.etl.domain.AssetDataDict; import com.muyu.etl.domain.BasicConfigInfo; +import com.muyu.etl.domain.DictInfo; +import com.muyu.etl.domain.Structure; +import com.muyu.etl.domain.resp.BasicDictResp; +import com.muyu.etl.domain.resp.TableInfoStructureResp; import com.muyu.etl.domain.resp.TableTreeResp; -import com.muyu.etl.service.BasicConfigInfoService; +import com.muyu.etl.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -31,6 +36,16 @@ public class BasicConfigInfoController extends BaseController { @Autowired private BasicConfigInfoService basicConfigInfoService; + @Autowired + private BasicConfigInfoService basicConfigInfoService; + @Autowired + private AssetDataDictService assetDataDictService; + @Autowired + private TableInfoService tableInfoService; + @Autowired + private DictInfoService dictInfoService; + @Autowired + private StructureService structureService; /** * 查询基础信息列表 @@ -107,13 +122,93 @@ public class BasicConfigInfoController extends BaseController { /** * 树级结构数据 + * + * @return */ @RequiresPermissions("etl:table:list") @Log(title = "获取已成功链接的树级结构") @GetMapping("/getTableTree") - public Result> getTableTree(){ + public Result> getTableTree() { return Result.success(basicConfigInfoService.getTableTree()); } + /** + * 通过接入id查询数据库所属字典 + * + * @return + */ + @RequiresPermissions("etl:table:dictList") + @Log(title = "描述") + @GetMapping("/getDict/{basicId}") + public Result> + getDict(@PathVariable Long basicId) { + return Result.success(assetDataDictService.getDict(basicId)); + } + + /** + * 通过tableId查询表信息 + * + * @return + */ + + @Log(title = "描述") + @GetMapping("/getTableInfo/{tableId}") + public Result + getTableInfo(@PathVariable Long tableId) { + return Result.success(basicConfigInfoService.getTableInfo(tableId)); + } + + /** + * 添加字典表 + * + * @param assetDataDict + * @return + */ + @RequiresPermissions("etl:table:list") + @Log(title = "添加字典内容") + @PostMapping("/insertDict") + public Result insertDictInfo(@RequestBody AssetDataDict assetDataDict) throws ServletException { + return Result.success(assetDataDictService.insertAssetDataDict(assetDataDict)); + } + + /** + * 添加字典详细信息 + * + * @return + */ + @RequiresPermissions("etl:table:add") + @Log(title = "添加字典表") + @PostMapping("/insertDictInfo") + public Result insertDict(@RequestBody DictInfo dictInfo) + throws ServletException { + return Result.success(dictInfoService.insertDictInfo(dictInfo)); + } + + /** + * 获取具体表的所有基础信息 + * + * @return + */ + @RequiresPermissions("etl:table:list") + @Log(title = "获取具体表的所有基础信息") + @GetMapping("/getBasicTableInfo/{tableId}") + public Result getBasicTableInfo(@PathVariable Long tableId) + throws ServletException { + return Result.success(basicConfigInfoService.getBasicTableInfo(tableId)); + } + + /** + * 修改资产结构中字典信息 + * + * @return + */ + @RequiresPermissions("etl:table:update") + @Log(title = "修改资产结构中字典信息") + @PutMapping("/updateStructureInfo") + public Result updateStructureInfo + (@RequestBody Structure structure) { + return Result.success(structureService.updateStructureInfoDict(structure), "修改成功"); + + } } diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/AssetDataDictService.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/AssetDataDictService.java new file mode 100644 index 0000000..800d67a --- /dev/null +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/AssetDataDictService.java @@ -0,0 +1,19 @@ +package com.muyu.etl.service; + +import com.muyu.etl.domain.AssetDataDict; +import com.muyu.etl.domain.resp.BasicDictResp; + +import java.util.List; + +/** + * 资产数据字典 AssetDataDictService + * + * @author xiaohuang + * on 2024/5/12 + */ +public interface AssetDataDictService { + List getDict(Long basicId); + + Object insertAssetDataDict(AssetDataDict assetDataDict); + +} diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/AssetImpowerService.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/AssetImpowerService.java new file mode 100644 index 0000000..d6418e4 --- /dev/null +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/AssetImpowerService.java @@ -0,0 +1,10 @@ +package com.muyu.etl.service; + +/** + * 资产赋权 AssetImpowerService + * + * @author xiaohuang + * on 2024/5/12 + */ +public interface AssetImpowerService { +} diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/BasicConfigInfoService.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/BasicConfigInfoService.java index 605d7df..27bd6b6 100644 --- a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/BasicConfigInfoService.java +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/BasicConfigInfoService.java @@ -2,6 +2,7 @@ package com.muyu.etl.service; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.etl.domain.BasicConfigInfo; +import com.muyu.etl.domain.resp.TableInfoStructureResp; import com.muyu.etl.domain.resp.TableTreeResp; import javax.servlet.ServletException; @@ -34,4 +35,8 @@ public interface BasicConfigInfoService extends IService { boolean connectionTest(BasicConfigInfo basicConfigInfo) throws ServletException; List getTableTree(); + + TableInfoStructureResp getTableInfo(Long tableId); + + Object getBasicTableInfo(Long tableId); } diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/DictInfoService.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/DictInfoService.java new file mode 100644 index 0000000..6f698a3 --- /dev/null +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/DictInfoService.java @@ -0,0 +1,13 @@ +package com.muyu.etl.service; + +import com.muyu.etl.domain.DictInfo; + +/** + * DictInfoService + * + * @author xiaohuang + * on 2024/5/12 + */ +public interface DictInfoService { + Object insertDictInfo(DictInfo dictInfo); +} diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/StructureService.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/StructureService.java new file mode 100644 index 0000000..c39e4d6 --- /dev/null +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/StructureService.java @@ -0,0 +1,53 @@ +package com.muyu.etl.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.etl.domain.Structure; + +import java.util.List; + +/** + * 结构 StructureService + * + * @author xiaohuang + * on 2024/5/12 + */ +public interface StructureService extends IService { + + /** + * 查询结构 + */ + public Structure selectStructureById(Long id); + + + /** + * 查询结构列表 + */ + public List selectStructureList(Structure structure); + + + /** + * 新增结构 + */ + public int insertStructure(Structure structure); + + + /** + * 修改结构 + */ + public int updateStructure(Structure structure); + + + /** + * 批量删除结构 + */ + public int deleteStructureByIds(Long[] ids); + + + /** + * 删除结构信息 + */ + public int deleteStructureById(Long id); + + boolean updateStructureInfoDict(Structure structure); + +} diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/TableInfoService.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/TableInfoService.java new file mode 100644 index 0000000..5a6c950 --- /dev/null +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/TableInfoService.java @@ -0,0 +1,52 @@ +package com.muyu.etl.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.etl.domain.TableInfo; + +import java.util.List; + +/** + * 库表基础信息 TableInfoService + * + * @author xiaohuang + * on 2024/5/12 + */ +public interface TableInfoService extends IService { + + /** + * 查询库表基础信息 + */ + public TableInfo selectTableInfoById(Long id); + + + /** + * 查询库表基础信息列表 + */ + public List selectTableInfoList(TableInfo tableInfo); + + + /** + * 新增库表基础信息 + */ + public int insertTableInfo(TableInfo tableInfo); + + + /** + * 修改库表基础信息 + */ + public int updateTableInfo(TableInfo tableInfo); + + + /** + * 批量删除库表基础信息 + */ + public int deleteTableInfoByIds(Long[] ids); + + + /** + * 删除库表基础信息 + */ + public int deleteTableInfoById(Long id); + + TableInfo selectTableInfoByName(TableInfo build); +} diff --git a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java index ff55316..633c143 100644 --- a/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java +++ b/muyu-modules/muyu-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java @@ -1,11 +1,16 @@ package com.muyu.etl.service.impl; -import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.security.utils.SecurityUtils; import com.muyu.etl.domain.BasicConfigInfo; +import com.muyu.etl.domain.Structure; +import com.muyu.etl.domain.TableInfo; import com.muyu.etl.domain.resp.TableTreeResp; import com.muyu.etl.mapper.BasicConfigInfoMapper; import com.muyu.etl.service.BasicConfigInfoService; +import com.muyu.etl.service.StructureService; +import com.muyu.etl.service.TableInfoService; import lombok.extern.log4j.Log4j2; import net.sf.jsqlparser.schema.Table; import org.springframework.beans.factory.annotation.Autowired; @@ -14,10 +19,11 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletException; import javax.sql.rowset.serial.SerialException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; +import java.sql.*; +import java.util.Date; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * 数据接入 BasicConfigInfoServiceImpl @@ -32,6 +38,15 @@ public class BasicConfigInfoServiceImpl extends ServiceImpl(TableInfo.class) {{ + eq(TableInfo::getTableName,tableInfoInsert.getTableName()); + eq(TableInfo::getBasicId,basicConfigInfo.getId()); + }}); + + //查询列表中的所有tableinfo basiac_id 不存在删除 + //通过查询获取当前tableinfo对象的id + + TableInfo tableInfo = tableInfoService.selectTableInfoByName(tableInfoInsert); + DatabaseMetaData metaData = conn.getMetaData(); + ResultSet rs = metaData.getTables(databaseName, null, "%", new String[]{"TABLE", "VIEW"}); + while (rs.next()){ + //表名 + String tableName = rs.getString("TABLE_NAME"); + String tableRemark = rs.getString("REMARKS"); + Connection finalConn = conn; + PreparedStatement ps = conn.prepareStatement("select * from " + tableName); + ResultSet rset = ps.executeQuery(); + Long rowCount = 0L; + while (rset.next()){ + rowCount++; + } + + TableInfo build = TableInfo.builder() + .basicId(basicConfigInfo.getId()) + .tableName(tableName) + .tableRemark(tableRemark == null ? "" : tableRemark) + .parentId(tableInfo.getId()) + .type("dataTable") + .center("Y") + .updateBy(SecurityUtils.getUsername()) + .dataNum(rowCount) + .updateTime(new Date()) + .build(); + + tableInfoService.saveOrUpdate(build,new LambdaUpdateWrapper<>(TableInfo.class) {{ + eq(TableInfo::getTableName, build.getTableName()); + eq(TableInfo::getBasicId, basicConfigInfo.getId()); + }}); + + TableInfo table = tableInfoService.selectTableInfoByName(build); + //线程池 + ExecutorService threadPool = Executors.newCachedThreadPool(); + + threadPool.submit(() ->{ + + }) + + } @@ -102,6 +177,78 @@ public class BasicConfigInfoServiceImpl extends ServiceImpl { + structureService.saveOrUpdate(build,new LambdaUpdateWrapper<>(){{ + eq(Structure::getTableId,build.getTableId()); + eq(Structure::getColumnName,build.getColumnName()); + eq(Structure::getColumnDecimals,build.getColumnRemark()); + }}); + }); + } + threadPool.shutdown(); + ps.close(); + } + + + + @Override public List getTableTree() {