From a9ec35f27dbaad0e6a9ac94ea1b68a3b7ed98c36 Mon Sep 17 00:00:00 2001 From: "peng.peng" Date: Thu, 23 Mar 2023 16:11:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metadataAcquisition/initJob.js | 5 +- .../metadataAcquisition/taskHandle.js | 47 +++++++++++++++++++ api/app/lib/schedule/acqTask.js | 22 +++------ .../components/adapterStep.js | 2 +- .../containers/acquisitionTask.js | 1 + 5 files changed, 58 insertions(+), 19 deletions(-) create mode 100644 api/app/lib/controllers/metadataAcquisition/taskHandle.js diff --git a/api/app/lib/controllers/metadataAcquisition/initJob.js b/api/app/lib/controllers/metadataAcquisition/initJob.js index 37660e4..92f8d06 100644 --- a/api/app/lib/controllers/metadataAcquisition/initJob.js +++ b/api/app/lib/controllers/metadataAcquisition/initJob.js @@ -1,7 +1,7 @@ const moment = require('moment') -//根据任务配置生成定时任务 - +const { handleTask } = require('./taskHandle'); +//根据任务配置生成定时任务 module.exports = async function (app, task) { let job = null @@ -14,6 +14,7 @@ module.exports = async function (app, task) { }, async () => { try { + await handleTask(app, task); console.log(task.taskName, moment().format('YYYY-MM-DD HH:mm:ss')); } catch (error) { app.fs.logger.error(`sechedule: taskJobs, error: ${error}`) diff --git a/api/app/lib/controllers/metadataAcquisition/taskHandle.js b/api/app/lib/controllers/metadataAcquisition/taskHandle.js new file mode 100644 index 0000000..c5ae7b3 --- /dev/null +++ b/api/app/lib/controllers/metadataAcquisition/taskHandle.js @@ -0,0 +1,47 @@ + +const Automate = require('sequelize-automate-freesun') + +async function handleTask(app, task) { + try { + const { models } = app.fs.dc + const dataSource = await models.DataSource.findOne({ + where: { + id: task.dataSourceId + } + }); + + if (dataSource) { + const dbOptions = createDbOptions(dataSource.config); + const automate = new Automate(dbOptions, {}); + const tables = await automate.getTables() + console.log(tables) + } + } catch (error) { + app.fs.logger.error(`sechedule: handleTask, error: ${error}`); + } +} + +function createDbOptions(params) { + const dbOptions = { + database: params.database, + username: params.user, + password: params.password, + dialect: 'postgres', + host: params.host, + port: params.port, + define: { + underscored: false, + freezeTableName: false, + charset: 'utf8mb4', + timezone: '+00: 00', + dialectOptions: { + collate: 'utf8_general_ci', + }, + timestamps: false, + }, + } + return dbOptions + +} + +module.exports = { handleTask } \ No newline at end of file diff --git a/api/app/lib/schedule/acqTask.js b/api/app/lib/schedule/acqTask.js index 131f0db..f96a609 100644 --- a/api/app/lib/schedule/acqTask.js +++ b/api/app/lib/schedule/acqTask.js @@ -1,4 +1,5 @@ const moment = require('moment') +const initJob = require('../controllers/metadataAcquisition/initJob') module.exports = async function (app, opts) { @@ -10,22 +11,11 @@ module.exports = async function (app, opts) { enabled: true } }) - tasks.map(s => { - const job = app.fs.scheduleInit( - { - interval: s.cron, - immediate: true, - proRun: false, - }, - async () => { - try { - console.log(s.taskName, moment().format('YYYY-MM-DD HH:mm:ss')); - } catch (error) { - app.fs.logger.error(`sechedule: taskJobs, error: ${error}`) - } - }); - jobs[s.id] = job; - }) + for (let task of tasks) { + const job = await initJob(app, task) + jobs[task.id] = job; + } + } catch (error) { app.fs.logger.error(`sechedule: acqTask, error: ${error}`); diff --git a/web/client/src/sections/metadataAcquisition/components/adapterStep.js b/web/client/src/sections/metadataAcquisition/components/adapterStep.js index 39e511e..d26f004 100644 --- a/web/client/src/sections/metadataAcquisition/components/adapterStep.js +++ b/web/client/src/sections/metadataAcquisition/components/adapterStep.js @@ -31,7 +31,7 @@ const AdapterStep = (props) => { const onFinish = (values) => { props.onFinish({ stepOneValues, - stepTwoValues: current == 2 ? values || stepTwoValues : stepTwoValues, + stepTwoValues: stepProps == 2 ? values : stepTwoValues, stepThreeValue: values }) } diff --git a/web/client/src/sections/metadataAcquisition/containers/acquisitionTask.js b/web/client/src/sections/metadataAcquisition/containers/acquisitionTask.js index c78ed6d..eb893c4 100644 --- a/web/client/src/sections/metadataAcquisition/containers/acquisitionTask.js +++ b/web/client/src/sections/metadataAcquisition/containers/acquisitionTask.js @@ -161,6 +161,7 @@ function AcquisitionTask(props) { record.adapterInfo = adapterInfo setEditData(record) }} style={{ marginRight: 8 }}>编辑) + //判断数据源下是否有任务 有任务提示需要先删除任务再删除数据源 options.push(