diff --git a/muyu-modules/muyu-etl/pom.xml b/muyu-modules/muyu-etl/pom.xml
new file mode 100644
index 0000000..a2adc02
--- /dev/null
+++ b/muyu-modules/muyu-etl/pom.xml
@@ -0,0 +1,85 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-modules
+ 3.6.3
+
+
+ muyu-etl
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.fox.version}
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.muyu
+ muyu-common-datasource
+
+
+
+
+ com.muyu
+ muyu-common-datascope
+
+
+
+
+ com.muyu
+ muyu-common-log
+
+
+
+
+ com.muyu
+ muyu-common-swagger
+
+
+
+
+
diff --git a/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/MuYuEtlApplication.java b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/MuYuEtlApplication.java
new file mode 100644
index 0000000..69d0805
--- /dev/null
+++ b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/MuYuEtlApplication.java
@@ -0,0 +1,18 @@
+package com.muyu.etl;
+
+import com.muyu.common.security.annotation.EnableCustomConfig;
+import com.muyu.common.security.annotation.EnableMyFeignClients;
+import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableMyFeignClients
+@SpringBootApplication
+public class MuYuEtlApplication {
+ public static void main (String[] args) {
+ SpringApplication.run(MuYuEtlApplication.class, args);
+ }
+}
diff --git a/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/controller/DataSourceController.java b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/controller/DataSourceController.java
new file mode 100644
index 0000000..7f237c4
--- /dev/null
+++ b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/controller/DataSourceController.java
@@ -0,0 +1,113 @@
+package com.muyu.etl.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.muyu.etl.service.DataSourceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+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.DataSource;
+import com.muyu.common.core.web.controller.BaseController;
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.poi.ExcelUtil;
+import com.muyu.common.core.web.page.TableDataInfo;
+
+@RestController
+@RequestMapping("/source")
+public class DataSourceController extends BaseController {
+
+ @Autowired
+ private DataSourceService dataSourceService;
+
+ /**
+ * 查询【请填写功能名称】列表
+ */
+ @RequiresPermissions("system:source:list")
+ @GetMapping("/list")
+ public Result> list(DataSource dataSource) {
+ startPage();
+ List list = dataSourceService.selectDataSourceList(dataSource);
+ return getDataTable(list);
+ }
+
+ @PostMapping("/AssetsList")
+ public Result assetsList(@RequestBody DataSource dataSource) {
+ return dataSourceService.assetsList(dataSource);
+ }
+
+ @PostMapping("/StructureList")
+ public Result structureList(@RequestBody DataSource dataSource) {
+ return dataSourceService.structureList(dataSource);
+ }
+
+ /**
+ * 导出【请填写功能名称】列表
+ */
+ @RequiresPermissions("system:source:export")
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, DataSource dataSource) {
+ List list = dataSourceService.selectDataSourceList(dataSource);
+ ExcelUtil util = new ExcelUtil(DataSource.class);
+ util.exportExcel(response, list, "【请填写功能名称】数据");
+ }
+
+ /**
+ * 获取【请填写功能名称】详细信息
+ */
+ @RequiresPermissions("system:source:query")
+ @GetMapping(value = "/{id}")
+ public Result getInfo(@PathVariable("id") Long id) {
+ return success(dataSourceService.selectDataSourceById(id));
+ }
+
+ /**
+ * 新增【请填写功能名称】
+ */
+ @RequiresPermissions("system:source:add")
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+ @PostMapping
+ public Result add(@RequestBody DataSource dataSource) {
+ return toAjax(dataSourceService.insertDataSource(dataSource));
+ }
+
+ /**
+ * 测试连接
+ */
+ @Log(title = "测试连接", businessType = BusinessType.INSERT)
+ @PostMapping("/TestConnection")
+ public Result testConnection(@RequestBody DataSource dataSource) {
+ return dataSourceService.testConnection(dataSource);
+ }
+
+ /**
+ * 修改【请填写功能名称】
+ */
+ @RequiresPermissions("system:source:edit")
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public Result edit(@RequestBody DataSource dataSource) {
+ return toAjax(dataSourceService.updateDataSource(dataSource));
+ }
+
+ /**
+ * 删除【请填写功能名称】
+ */
+ @RequiresPermissions("system:source:remove")
+ @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public Result remove(@PathVariable Long[] ids) {
+ return toAjax(dataSourceService.deleteDataSourceByIds(ids));
+ }
+
+}
diff --git a/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/AssetsModule.java b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/AssetsModule.java
new file mode 100644
index 0000000..96704ea
--- /dev/null
+++ b/muyu-modules/muyu-etl/src/main/java/com/muyu/etl/domain/AssetsModule.java
@@ -0,0 +1,20 @@
+package com.muyu.etl.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AssetsModule {
+
+ private HashMap structure;
+ private List