create_work.ts 3.55 KB
Newer Older
Scott Sun's avatar
Scott Sun committed
1 2
let fs = require("fs");
let db = require('topsin.database');
Scott Sun's avatar
Scott Sun committed
3
var error = require('topsin.error');
Scott Sun's avatar
Scott Sun committed
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
const user_name = "Sys";
try {
    db.addConnection({
        databse_type:'pg',
        database_host:'10.90.2.100:5432',
        database_name:'TOPSTQ_ATS_V6',
        database_user:'toplinker',
        database_pwd:'TopLinker0510'
    }, "ATS_DFM_DB");
    let query = db.query('ATS_DFM_DB');
    // 1.获取客户名称
    let customers = query.selectArrayValue({
        table:'pub_customer',
        field:"code"
    });
    if (query.lastError().isValid()) throw query.lastError().text();

    // 获取远程文件夹

    let samba = fs.listDir("\\\\10.90.2.100\\samba", 0)


    let sambaDirs:any[] = [];
    let sambaFiles:any[] = [];
    samba.forEach((v:any) => {
        if (v.isDir) {
            sambaDirs.push(v)
        } else {
            sambaFiles.push(v)
        }
    })

    sambaDirs.forEach((v:any) => {
        if(customers.indexOf(v.name) >= 0) {
            // 获取该客户下所有料号
            let jobs = fs.listDir("\\\\10.90.2.100\\samba\\" + v.name, 0).filter((v:any) => v.isDir)
            // 获取dfm种已经存在的料号名
            let dfm_jobs = query.selectArrayValue({   
                table:'pdm_job',
                field:"jobname",
                where: { customer_code: v.name} ,
                order:'id DESC'
            });
            // 循环判断新料号
            jobs.forEach((v2:any) => {
                if ( /_/.test(v2.name)  && dfm_jobs.indexOf(v2.name) < 0) {
                    // 为该新料号创建报价
                    let jobId = query.insertRow({
                        table:'pdm_job',
                        data:{
                            jobname:v2.name,
                            version: '',
                            customer_code:v.name,
                            job_type:"normal",
                            spec_list:`{${v.name},__GENERAL__}`,
                            job_status:"active",
                            job_attrs: {"vc_number": v2.name.split("_")[0], "vc_position": v2.name.split("_")[1]},
                            action_data: {"create_time": query.getNow(), "create_user_id": 1, "create_user_name": user_name},  // ?
                            sys_data: {"sys_data_version": 0},
                            spec_mode:0
                        },
                        return_field:'id'
                    });
                    if (query.lastError().isValid()) throw query.lastError().text();
                    var flowInfo = query.selectMap({
                        table: 'pdm_aimdfm_workflow',
                        where: {
                            name: "topcam"
                        }
                    });
                    var flowId = flowInfo["id"];
                    var flowTitle = flowInfo["title"];
                    // 创建料号任务
                    query.insertRow({
                        table: 'pdm_aimdfm_task',
                        data: {
                            job_id: jobId,
                            flow_id: flowId,
                            status: 'waiting',
                            user_id: 1,
                            user_name:user_name,
                            priority: 0,
                            task_title: `${v2.name}:${flowTitle}` 
                        }
                    });
                    if (query.lastError().isValid()) throw query.lastError().text();
                }
            })
        }
    })
} 
catch (error) {
    console.log("err");
    console.log(error);
}