|
@@ -7,7 +7,7 @@ import React, { useState, useEffect } from 'react'
|
|
|
import DataTableStruct from './DataTableStruct'
|
|
|
import styled from 'styled-components'
|
|
|
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'
|
|
|
-import { getDataSourceList, getTableSchema } from '../services'
|
|
|
+import { getDataSourceList, getTableSchema, buildJsonData } from '../services'
|
|
|
|
|
|
const { Step } = Steps
|
|
|
|
|
@@ -136,14 +136,30 @@ export default function SyncTaskAdd() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 挂载的时候获取SourceList
|
|
|
useEffect(() => {
|
|
|
fetchDataSourceList()
|
|
|
}, [])
|
|
|
|
|
|
+ // reader_columns
|
|
|
+ const [reader_columns, setReaderColumns] = useState([])
|
|
|
+
|
|
|
+ // writer_columns
|
|
|
+ const [writer_columns, setWriterColumns] = useState([])
|
|
|
+
|
|
|
// 下一步
|
|
|
const nextStep = () => {
|
|
|
if (currentStep === 2) {
|
|
|
- console.log(stepThreeRef.current)
|
|
|
+ setReaderColumns(
|
|
|
+ stepThreeRef.current.syncMappings.map(item => {
|
|
|
+ return item.key.drawData
|
|
|
+ })
|
|
|
+ )
|
|
|
+ setWriterColumns(
|
|
|
+ stepThreeRef.current.syncMappings.map(item => {
|
|
|
+ return item.key.loadData
|
|
|
+ })
|
|
|
+ )
|
|
|
}
|
|
|
currentForm
|
|
|
.validateFields()
|
|
@@ -155,21 +171,131 @@ export default function SyncTaskAdd() {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- // 完成构建
|
|
|
- const finishBuild = async () => {
|
|
|
- setBuilding(true)
|
|
|
- setTimeout(() => {
|
|
|
- message.success('构建成功')
|
|
|
- setBuilding(false)
|
|
|
- setIsFinishBuild(true)
|
|
|
- }, 2000)
|
|
|
+ // 格式化构建请求参数数据
|
|
|
+ const formatBuildData = () => {
|
|
|
+ // 获取表单数据
|
|
|
+ const reader_form = drawDataForm.getFieldValue()
|
|
|
+ const writer_form = loadDataForm.getFieldValue()
|
|
|
+ // 获取id tables
|
|
|
+ const reader_datasource_id = reader_form['datasource_name']
|
|
|
+ const reader_tables = [reader_form['datasource_table']]
|
|
|
+ const writer_datasource_id = writer_form['datasource_name']
|
|
|
+ const writer_tables = [writer_form['datasource_table']]
|
|
|
+ const writer_filename = dataSourceList.find(
|
|
|
+ item => item.key === writer_datasource_id
|
|
|
+ ).datasource_name
|
|
|
+ // 基础固定参数
|
|
|
+ const base_params = {
|
|
|
+ reader_datasource_id,
|
|
|
+ reader_tables,
|
|
|
+ reader_columns,
|
|
|
+ writer_datasource_id,
|
|
|
+ writer_tables,
|
|
|
+ writer_columns,
|
|
|
+ }
|
|
|
+ // 获取表类型
|
|
|
+ const reader_type = dataSourceList.find(
|
|
|
+ item => item.key === reader_datasource_id
|
|
|
+ ).datasource
|
|
|
+ const writer_type = dataSourceList.find(
|
|
|
+ item => item.key === writer_datasource_id
|
|
|
+ ).datasource
|
|
|
+ // 结构表单参数
|
|
|
+ const {
|
|
|
+ reader_split_pk,
|
|
|
+ where_param,
|
|
|
+ query_sql,
|
|
|
+ reader_default_fs,
|
|
|
+ reader_file_type,
|
|
|
+ reader_path,
|
|
|
+ reader_field_delimiter,
|
|
|
+ } = reader_form
|
|
|
+ const {
|
|
|
+ pre_sql,
|
|
|
+ post_sql,
|
|
|
+ writer_default_fs,
|
|
|
+ writer_file_type,
|
|
|
+ writer_path,
|
|
|
+ writer_mode,
|
|
|
+ writer_field_delimiter,
|
|
|
+ } = writer_form
|
|
|
+ // 根据类型区分参数
|
|
|
+ switch (`${reader_type}2${writer_type}`) {
|
|
|
+ case 'mysql2mysql':
|
|
|
+ return {
|
|
|
+ ...base_params,
|
|
|
+ rdbms_reader: { reader_split_pk, where_param, query_sql },
|
|
|
+ rdbms_writer: { pre_sql, post_sql },
|
|
|
+ }
|
|
|
+ case 'mysql2hive':
|
|
|
+ return {
|
|
|
+ ...base_params,
|
|
|
+ rdbms_reader: { reader_split_pk, where_param, query_sql },
|
|
|
+ hive_writer: {
|
|
|
+ writer_default_fs,
|
|
|
+ writer_file_type,
|
|
|
+ writer_path,
|
|
|
+ writer_mode,
|
|
|
+ writer_field_delimiter,
|
|
|
+ writer_filename,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ case 'hive2mysql':
|
|
|
+ return {
|
|
|
+ ...base_params,
|
|
|
+ hive_reader: {
|
|
|
+ reader_default_fs,
|
|
|
+ reader_file_type,
|
|
|
+ reader_path,
|
|
|
+ reader_field_delimiter,
|
|
|
+ },
|
|
|
+ rdbms_writer: { pre_sql, post_sql },
|
|
|
+ }
|
|
|
+ case 'hive2hive':
|
|
|
+ return {
|
|
|
+ ...base_params,
|
|
|
+ hive_reader: {
|
|
|
+ reader_default_fs,
|
|
|
+ reader_file_type,
|
|
|
+ reader_path,
|
|
|
+ reader_field_delimiter,
|
|
|
+ },
|
|
|
+ hive_writer: {
|
|
|
+ writer_default_fs,
|
|
|
+ writer_file_type,
|
|
|
+ writer_path,
|
|
|
+ writer_mode,
|
|
|
+ writer_field_delimiter,
|
|
|
+ writer_filename,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ return null
|
|
|
}
|
|
|
|
|
|
// 构建表单
|
|
|
- const build = () => {
|
|
|
- console.log('loadDataForm.getFieldsValue()', loadDataForm.getFieldValue())
|
|
|
- showDrawer()
|
|
|
- // finishBuild()
|
|
|
+ const build = async () => {
|
|
|
+ const buildParams = formatBuildData()
|
|
|
+ if (!buildParams) {
|
|
|
+ message.error('获取表单参数失败')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ setBuilding(true)
|
|
|
+ console.log(buildParams)
|
|
|
+ const { data } = await buildJsonData(buildParams)
|
|
|
+ console.log(data)
|
|
|
+ if (data.code === 200) {
|
|
|
+ const jsonData = data.json
|
|
|
+ console.log(jsonData)
|
|
|
+ message.success('构建成功')
|
|
|
+ showDrawer()
|
|
|
+ } else {
|
|
|
+ message.error('构建失败,请检查表单数据', data.msg)
|
|
|
+ }
|
|
|
+ setBuilding(false)
|
|
|
+ setIsFinishBuild(true)
|
|
|
}
|
|
|
|
|
|
// 完成提交
|