try {
const { Pool , Client } = require ( 'pg' )
const path = require ( 'path' )
const fs = require ( "fs" ) ;
// 开发环境
// ! 这里是安心云
const anxinyunPool = new Pool ( {
user : 'postgres' ,
host : '10.8.40.210' ,
database : 'AnxinCloud' ,
password : 'postgres' ,
port : 5432 ,
} )
// 这里是运维平台
const pomsPool = new Pool ( {
user : 'POMSAdmin' ,
host : '10.8.40.223' ,
database : 'POMS' ,
password : 'POMSAdmin_123' ,
port : 5432 ,
} )
// 商用环境
// const pool = new Pool({
// user: '',
// host: '',
// database: '',
// password: '',
// port: 5432,
// })
// ! 这里是假定的创建人id
const create_user_id = 1
const fun = async ( ) => {
// note: we don't try/catch this because if connecting throws an exception
// we don't need to dispose of the client (it will be undefined)
const anxinClient = await anxinyunPool . connect ( )
const pomsClient = await pomsPool . connect ( )
anxinClient . on ( 'error' , err => {
console . error ( err ) ;
} )
pomsClient . on ( 'error' , ( ) => {
console . error ( err ) ;
} )
try {
await anxinClient . query ( 'BEGIN' )
await pomsClient . query ( 'BEGIN' )
console . log ( ` 开始 ` ) ;
const projects = ( await anxinClient . query ( ` SELECT * FROM "t_project" WHERE project_state=4 ` ) ) . rows
// console.log(projects);
// 遍历项目
for ( let project of projects ) {
console . log ( ` 遍历 ${ project . name } [ ${ project . id } ] ` ) ;
// 查项目下结构物
const strucCount = ( await anxinClient . query ( ` SELECT count(*) FROM "t_project_structure" INNER JOIN "t_structure" ON "t_project_structure"."structure" = "t_structure"."id" WHERE "project" = ${ project . id } AND "t_structure"."external_platform" IS NOT null ` ) ) . rows
console . log ( '查得本地化结构物数量 ' + strucCount [ 0 ] . count ) ;
if ( strucCount [ 0 ] . count > 0 ) {
// 判断有没有创建这个项目
const projectPoms = ( await pomsClient . query ( ` SELECT * FROM project_correlation WHERE anxin_project_id @> ARRAY[ ${ project . id } ]; ` ) ) . rows
if ( projectPoms . length == 0 ) {
// 在运维平台新建项目
console . log ( ` 创建运维项目 ` ) ;
const projectData = await pomsClient . query ( ` INSERT INTO project_correlation (anxin_project_id, create_time, create_user, name, del, update_time) VALUES ('{ ${ project . id } }', NOW(), ${ create_user_id || 1 } , ' ${ project . name } ', false, NOW()) RETURNING id; ` )
}
}
}
// await client.query('ROLLBACK')
await anxinClient . query ( 'COMMIT' )
await pomsClient . query ( 'COMMIT' )
console . log ( '执行完毕~' )
} catch ( e ) {
await anxinClient . query ( 'ROLLBACK' )
await pomsClient . query ( 'ROLLBACK' )
console . log ( '执行错误~' )
throw e
} finally {
anxinClient . release ( ) ;
pomsClient . release ( ) ;
}
}
fun ( )
} catch ( error ) {
console . error ( error )
}