Commit 289a5abb authored by Scott Sun's avatar Scott Sun

Merge branch 'master' of http://gitlab.topibd.net/scott.sun/scott

parents 5e0b1634 1943f0b6
var plugin = require('topsin.gengui');
var gui = plugin.newGui();
var gui = plugin.newGui(plugin.__dirname);
var tmplayers = gui.selectLayer({
title: '请选择需拼片原稿层',
// var tmplayers = gui.selectLayer({
// title: '请选择需拼片原稿层',
// layermatrix: {
// layer1: {
// context:"board",
// row: 1,
// name: "layer1",
// layer_type: "inner"
// },
// layer2: {
// context:"misc",
// row: 2,
// name: "layer2",
// layer_type: "outer"
// }
// },
// layertype: "_default",
// layertypelist: [{
// name: "_default",
// display_name: "_default",
// filter: function (x) {
// return true
// }
// }, ],
// selectmode: 'multiple',
// filter: ".*", // regular expression
// selectmode: "single", // single, multiple
// context: "all", // all, board, misc
// defaultsize: [600, 400], // window size
// gen:null
// });
// console.log(tmplayers);
r = gui.selectLayer({
title: "+1s",
filter: ".*", // regular expression
selectmode: "single", // single, multiple
// context: "all", // all, board, misc
// layertype: "inner", // default type of layertypelist
defaultsize: [600, 400], // window size
layermatrix: {
layer1: {
context: "board",
row: 1,
name: "layer1",
layer_type: "inner"
......@@ -15,22 +59,18 @@ var tmplayers = gui.selectLayer({
row: 2,
name: "layer2",
layer_type: "outer"
},
layer3: {
context: "misc",
row: 3,
name: "layer3",
layer_type: "inner"
}
},
layertype: "_default",
layertypelist: [{
name: "_default",
display_name: "_default",
filter: function (x) {
return true
}
}, ],
selectmode: 'multiple',
filter: ".*", // regular expression
selectmode: "single", // single, multiple
context: "all", // all, board, misc
defaultsize: [600, 400], // window size
gen:null
});
console.log(tmplayers);
\ No newline at end of file
layertypelist: [
{name: "inner", display_name: "Inner", filter: function(x) { return x["layer_type"] === "inner"; }},
{name: "all", display_name: "All", filter: function(x) { return true; }},
{name: "outer", display_name: "Outer", filter: function(x) { return x["layer_type"] === "outer"; }}
],
gen: null
});
\ No newline at end of file
var plugin = require('topsin.gengui');
var gui = plugin.newGui();
var gui = plugin.newGui(plugin.__dirname);
function gen() {
this.PAUSE = function () {
console.log("pause");
}
}
var r = gui.msgBox("mo", "info", "are you ok?", ["ok", "cancel"]);
console.log(r);
gui.setLang("zhtw"); // zhcn, zhtw, en
gui.confirm("are you ok?", ["yes", "no"], "question");
var r = gui.msgBox({
title: "info",
icon: "info",
text: "are you ok?",
buttons: ["Ok", "Cancel"],
gen: new gen()
});
console.log(r);
r = gui.confirm("are you ok?", "");
console.log(r);
var selected = gui.selectFromTreeview({
title: "test",
size: [600, 400],
selectmode: "single",
columns: [
{
columns: [{
"name": "id",
"display": "ID",
"displayRole": "$id",
......@@ -28,8 +40,7 @@ var selected = gui.selectFromTreeview({
"resizeMode": "ResizeToContents"
}
],
data: [
{
data: [{
"id": 1,
"name": "mo"
},
......@@ -46,22 +57,31 @@ console.log(selected);
r = gui.selectFile("choose something", "*", true, "file", "/home/abby/fast_io");
console.log(r);
var elder =[];
for(var i = 0; i < 100; ++i) {
elder.push({"mo": "+1s"});
var elder = [];
for (var i = 0; i < 100; ++i) {
elder.push({
"mo": "+1s"
});
}
var xx = [
{"mo": "too young too simple"},
{"ha": "sometimes naive!"},
{"elder": "+1s"}
var xx = [{
"mo": "too young too simple"
},
{
"ha": "sometimes naive!"
},
{
"elder": "+1s"
}
];
r = gui.selectSingle({
"title": "select your favar",
"list": xx,
"default": "",
"columns": 2,
"gen":{}
size: [200, 300],
showheader: true,
"gen": new gen()
});
console.log(r);
......@@ -70,17 +90,38 @@ r = gui.selectMultiple({
"list": xx,
"defaultvalue": ["mo"],
"columns": 2,
"gen": {}
size: [300, 500],
showheader: true,
"gen": new gen()
});
console.log(r);
// select_from_layer
// select_from_job
gui.selectJob({
title: "select job",
multiple: false,
joblist: [
"too young",
"too simple",
"sometimes",
"naive!"
],
gen: new gen()
});
gui.selectStep({
title: "select layer",
multiple: true,
steplist: ["l1", "l2", "l3"],
// gen: new gen(),
size: [300, 500]
});
r = gui.selectFromTable({
title: "select from table example",
multiple: true,
list: [
{
list: [{
"job": "too young",
"name": "elder"
},
......@@ -97,7 +138,7 @@ r = gui.selectFromTable({
"name": "elder"
}
],
gen: function() { function PAUSE() { return true; }}
gen: new gen()
});
console.log(r);
......@@ -117,121 +158,144 @@ gui.imageViewer({
r = gui.inputBox({
title: "input box example",
value: "are you ok?"
value: "are you ok?",
size: [300, 200],
multiline: false
});
console.log(r);
// refer to ikm6 GUI.showForm
// // refer to ikm6 GUI.showForm
r = gui.showForm({
title: "form example",
title: "注册账号",
size: [600, 400],
ui: {
type: 'ScrollArea',
property: { widget_resizable: true, frame_shape: 'NoFrame', align: 'Top' },
property: {
widget_resizable: true,
frame_shape: 'NoFrame',
align: 'Top'
},
child: {
type: 'VBoxLayout',
property: { margin: 2, spacing: 20, align: 'Top' },
pack: { stretch: 0 },
child: [
{
type: 'label'
property: {
margin: 2,
spacing: 20,
align: 'Top'
},
pack: {
stretch: 0
},
child: [{
type: "FormGridLayout",
property: {
columns: 1,
label_alignment: 'Top | Right',
margin: 10,
spacing: 20
},
{
type: 'label',
property: { text: ("Partnumber Info") }
pack: {
stretch: 0
},
{
type: "FormGridLayout",
property: { columns: 4, label_alignment: 'Top | Right', margin: 10, spacing: 20 },
pack: { stretch: 0 },
child: [
{
name: 'partnumber',
type: 'LineEdit',
pack: { label: ('Partnumber') },
property: { enabled: true }
},
{
name: 'attrs.iscross',
type: 'ComboBox',
property: { enabled: true, item_list: [] },
pack: { label: ('Is Cross') }
},
{
name: 'attrs.pthick',
type: 'DoubleLineEdit',
pack: { label: ('Part thickness') },
property: { enabled: true }
},
{
name: 'attrs.producttype',
type: 'ComboBox',
property: { enabled: true, item_list: [] },
pack: { label: ('Product type') }
},
{
name: 'attrs.weft_direction',
type: 'ComboBox',
property: { enabled: true, item_list: [] },
pack: { label: ('Longitude and latitude') }
child: [{
name: 'username',
type: 'LineEdit',
pack: {
label: "用户名"
},
{
name: 'attrs.structure_code',
type: 'LineEdit',
pack: { label: ('Structure') },
property: { enabled: true }
},
{
name: 'attrs.array_num_on_panel_y',
type: 'DoubleLineEdit',
pack: { label: ('Long edge typesetting') },
property: { enabled: true }
},
{
name: 'attrs.array_num_on_panel_x',
type: 'DoubleLineEdit',
pack: { label: ('Short edge typesetting') },
property: { enabled: true }
property: {
enabled: true
}
},
{
name: 'password',
type: 'LineEdit',
pack: {
label: "密码"
},
{
name: 'attrs.pre_partnumber',
type: 'Chips',
pack: { label: ('Front partnumber'), column_span: 2 },
property: { enabled: true }
property: {
echo_mode: "password"
}
},
{
name: 'sex',
type: 'ComboBox',
property: {
enabled: true,
item_list: [{
name: "male",
icon: "male",
text: "男",
text_zhcn: "男",
text_zhtw: "男"
},
{
name: "female",
icon: "female",
text: "女",
text_zhcn: "女",
text_zhtw: "女"
},
{
name: "hideyoshi",
icon: "circle-thin",
text: "Hideyoshi",
text_zhcn: "秀吉",
text_tw: "秀吉"
}
]
},
{
name: 'attrs.erp_job_remark',
type: 'PlainTextEdit',
property: {
enabled: true,
min_row_count: 1,
vertical_scroll_bar_policy: 'ScrollBarAlwaysOff'
},
pack: { label: ('ERP Job Remark'), column_span: 2 },
pack: {
label: '性别'
}
]
},
{
type: 'stretch'
}
]
}
]
}]
}
},
data: {},
runnow: true,
data: {
username: "elder",
password: "nαive!",
sex: "male"
},
includehide: false,
gen: null
buttons: [{
stock: "ok",
sensitive: true,
command: function (data) {
}
},
{
stock: "cancel",
sensitive: true,
command: function (ddata) {
}
},
{
stock: "help",
sensitive: true,
command: function (data) {
console.log(data);
}
}
],
hook: function (data) {},
gen: new gen()
});
console.log(r);
r = gui.selectLayer({
title: "+1s",
filter: ".*", // regular expression
//filter: ".*", // regular expression
selectmode: "single", // single, multiple
context: "all", // all, board, misc
layertype: "inner", // default type of layertypelist
defaultsize: [600, 400], // window size
layermatrix: {
layer1: {
context: "board",
row: 1,
name: "layer1",
layer_type: "inner"
......@@ -240,42 +304,93 @@ r = gui.selectLayer({
row: 2,
name: "layer2",
layer_type: "outer"
},
layer3: {
context: "misc",
row: 3,
name: "layer3",
layer_type: "inner"
}
},
layertype: "inner", // default type of layertypelist
layertypelist: [
{name: "inner", display_name: "Inner", filter: function(x) { return x["layer_type"] === "inner"; }},
{name: "outer", display_name: "Outer", filter: function(x) { return x["layer_type"] === "outer"; }}
layertypelist: [{
name: "all",
display_name: "All",
filter: function (x) {
return true;
}
},
{
name: "inner",
display_name: "Inner",
filter: function (x) {
return x["layer_type"] === "inner";
}
},
{
name: "outer",
display_name: "Outer",
filter: function (x) {
return x["layer_type"] === "outer";
}
}
],
gen: null
gen: new gen()
});
console.log(r);
r = gui.lockUnlockLayer({
"title": "+1s",
"layermatrix": {
"layer1": {
"row": 1,
"name": "layer1"
title: "+1s",
layermatrix: {
layer1: {
context: "board",
row: 1,
name: "layer1",
layer_type: "signal"
},
"layer2": {
"row": 2,
"name": "layer2"
layer2: {
context: "board",
row: 2,
name: "layer2",
layer_type: "drill"
},
layer3: {
context: "misc",
row: 3,
name: "layer3",
layer_type: "rout"
}
}
},
lockvalue: {
layer1: true,
layer2: false
},
gen: new gen()
});
console.log(r);
r = gui.passwordBox({
title: "password box",
password: "naive!"
password: "naive!",
size: [400, 150]
});
console.log(r);
r = gui.selectJobLayer({
layertypelist: [
{ name: "mo", display_name: "MO", filter: function (x) { return x.layer_type === "mo"; } },
{ name: "ha", display_name: "HA", filter: function (x) { return x.layer_type === "ha"; } }
title: "select job layer",
layertypelist: [{
name: "mo",
display_name: "MO",
filter: function (x) {
return x.layer_type === "mo";
}
},
{
name: "ha",
display_name: "HA",
filter: function (x) {
return x.layer_type === "ha";
}
}
],
//defaultlayertype: "ha",
joblist: ["job1", "job2"],
......@@ -299,4 +414,34 @@ r = gui.selectJobLayer({
defaultlayer: ["layer1"]
});
console.log(r);
\ No newline at end of file
console.log(r);
x = gui.debug({
title: "debug",
text: "ciao",
size: [400, 300],
gen: new gen()
});
var DB = require('topsin.database');
DB.addConnection({
database_type: 'pg',
database_host: '127.0.0.1:5432',
database_name: 'test',
database_user: 'abby',
database_pwd: 'abby'
}, 'test');
x = gui.showSendMail({
title: "show send mail",
to: "elder@+1s.gov",
cc: "elder@moha.me",
subject: "are you ok?",
content: "naive!",
size: [800, 600],
db: DB.query('test')
});
console.log(x);
## tableEdit
* 如图tableedit.png
* 表格里每一行可以自定义控件 编辑 返回arrayHash结构数据
## 显示提示信息
* show_loading("正在....") 显示提示信息
* update_loading("挑选铜皮重....") 更新提示信息
* hide_loading() 关闭提示信息
......@@ -2,4 +2,8 @@
* 100 102~106 108~113 115~116 119~127 129~130 132~142 145~150 rar压缩包
* 107 114 117 118 128 131无文件
* 144 创建profile失败
\ No newline at end of file
* 144 创建profile失败
99990110 99990113 创建profile的时候卡死
\ No newline at end of file
......@@ -9,6 +9,18 @@
type : 'LineEdit',
property : {tool_tip : 'pcs step名,默认是cad'}
},
{
name : 'send_email',
title : '是否发送邮件',
type : 'RadioBox',
property : {
item_list:[
{name:'yes',text:'YES'},
{name:'no',text:'NO'},
],
tool_tip:'是否自动保存料号开关'
}
},
{
name : 'cam_type',
title : 'cam_type',
......@@ -191,7 +203,7 @@ try {
});
}
cam_workflow_info = "sendmail"
console.log("=============================================>anaysis_start");
console.log("============== ===============================>anaysis_start");
var par = PAR;
var vc_src_01005_pad_result = par.vc_src_01005_pad_result
if(vc_src_01005_pad_result == ""){
......@@ -206,6 +218,7 @@ try {
if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode == "aimdfm"){ throw "the job check" }
GEN.checkInout({job:job,mode:"out"});
script_info({ msg: "Data Analysis" ,result_severity:"info"})
global._ERRORMAG = "Failed to Data Analysis";
script_info({ progress: 65 })
var pcs_step = par.pcs_step == "" ? "cad" : par.pcs_step;
var array_step = par.array_step == "" ? "stp" : par.array_step;
......@@ -217,7 +230,9 @@ try {
pcs_step = step_list[0]
}
script_info({ msg: "Error-Upload matrix",result_severity:"info" })
script_info({ msg: "Upload matrix",result_severity:"info" })
global._ERRORMAG = "Error-Upload matrix";
script_info({ progress: 65 })
var matrix = UPLOAD_LAYER_MATRIX({job:job}) // 分析matrix 获得分析后的matrix信息
GEN.openStep({job:job, name:pcs_step})
......@@ -273,7 +288,9 @@ try {
})
GEN.clearLayers()
script_info({ msg: "Error-Drill Stackup analysis" })
script_info({ msg: "Drill Stackup analysis" })
global._ERRORMAG = "Error-Drill Stackup analysis";
script_info({ progress: 70 })
// * new 钻孔叠构
var cam_drill_structure = []
......@@ -397,7 +414,9 @@ try {
var analysis_obj = analysis({job:job,jobId:JobId,pcs_step:pcs_step,array_step:array_step,matrix:matrix})
// 创建profile
var tmp_matrix = GEN.getMatrix({job:job})
script_info({ msg: "Error-Profile analysis" })
script_info({ msg: "Profile analysis" })
global._ERRORMAG = "Error-Profile analysis";
script_info({ progress: 70 })
// * profile 和 拼版
var pandle_step = step_list.map(function(v){
......@@ -471,7 +490,9 @@ try {
}
ALL.gold_fingers = gold_fingers
GEN.closeStep()
script_info({ msg: "Error-PN analysis" })
script_info({ msg: "PN analysis" })
global._ERRORMAG = "Error-PN analysis";
var config = {
jobInfo: {
layer_count: ["signal","power_ground"], // Board属性的signal或者power_ground层
......@@ -541,7 +562,12 @@ try {
}
}
console.log("=================================> 4 save job info")
if(db_customer == "1352"){
jobInfo.array_size_x = jobInfo.pcs_size_x
jobInfo.array_size_y = jobInfo.pcs_size_y
delete jobInfo.pcs_size_x
delete jobInfo.pcs_size_y
}
save_job_info({
jobid: JobId,
jobinfohash: jobInfo
......@@ -549,7 +575,9 @@ try {
console.log("=================================> 5 save drill info")
script_info({ msg: "Error-Drill layer analysis" })
script_info({ msg: "Drill layer analysis" })
global._ERRORMAG = "Error-Drill layer analysis";
script_info({ progress: 75 })
// * 获取pcs_step 和 array_step的钻孔信息
var drill_tool_info = {};
......@@ -569,10 +597,11 @@ try {
var type = item.type;
var step = item.name;
if(GEN.isStepExists({job:job, step:step})){
GEN.openStep({job:job, name:step})
drillLayers.forEach(function(layer){
var layer = layer.name;
if(!GEN.isLayerEmpty({job:job,step:step,layer:layer})){
// GEN.COM("tools_set,layer="+layer+",slots=by_length")
GEN.COM("tools_set,layer="+layer+",slots=by_length")
var tool = GEN.getTool({job:job,step:step,layer:layer,units:"mm"}); // {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"100.31","drill_size":"100.31","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
if(!drill_tool_info[layer]){
drill_tool_info[layer] = tool;
......@@ -605,6 +634,7 @@ try {
}
}
})
GEN.closeStep()
}
})
......@@ -674,7 +704,9 @@ try {
})
console.log("=============================> 6 set smd bga")
script_info({ msg: "Error-SMD&BGA analysis" })
script_info({ msg: "SMD&BGA create" })
global._ERRORMAG = "Error-SMD&BGA create";
script_info({ progress: 80 });
step_list.forEach(function(step){
GEN.openStep({job:job,name:step})
......@@ -714,33 +746,40 @@ try {
var oping_layer = layer.solderL
GEN.workLayer({name:layer,display_number:2,clear_before:'yes'})
GEN.selClearFeature()
var symbols_tmp = GEN.getLayerSymsHist({job:job,step:step,layer:layer})
var syms = Object.keys(symbols_tmp)
var filter_syms = syms.filter(function(item){
if(/^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.test(item)){
var res = /^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.exec(item).slice(1)
var num1 = res[0], num2 = res[1]
if(num1<3 || num2<3){return true}
}
return /^r\d+/.test(item)}
)
if(filter_syms.length){
var filter_syms = filter_syms.join(";")
GEN.selectByFilter({attribute:".smd", include_syms:filter_syms, profile:"in"})
if(GEN.getSelectCount()>0){
GEN.COM("sel_delete_atr,attributes=.smd")
}
// var symbols_test = GEN.getLayerSymsHist({job:job,step:step,layer:layer},true);
// GEN.INFO({units:"mm", entity_type:'layer', entity_path:job+'/'+step+'/'+layer, data_type:'SYMS_HIST'});
// GEN.INFO_RESULT
// exportInfo({
// layer:layer,
// INFO_RESULT: GEN.INFO_RESULT
// })
// var symbols_tmp = GEN.getLayerSymsHist({job:job,step:step,layer:layer})
// var syms = Object.keys(symbols_tmp)
// var filter_syms = syms.filter(function(item){
// if(/^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.test(item)){
// var res = /^rect(\d+\.\d+|\d+)x(\d+\.\d+|\d+)/ig.exec(item).slice(1)
// var num1 = res[0], num2 = res[1]
// if(num1<3 || num2<3){return true}
// }
// return /^r\d+/.test(item)}
// )
GEN.selectByFilter({attribute:".smd", include_syms:"r*", exclude_syms:"rect*", profile:"in"})
if(GEN.getSelectCount()>0){
GEN.COM("sel_delete_atr,attributes=.smd")
}
if(oping_layer){
GEN.COM("filter_atr_set,filter_name=popup,condition=yes,attribute=.smd")
GEN.COM("sel_ref_feat,layers="+oping_layer+",use=filter,mode=disjoint,pads_as=shape,f_types=line\;pad\;surface\;arc\;text,polarity=positive\;negative,include_syms=,exclude_syms=")
GEN.COM("COM filter_reset,filter_name=popup")
if(GEN.getSelectCount() > 0){
GEN.COM("sel_delete_atr,attributes=.smd")
}
}
})
GEN.closeStep()
})
console.log("============= ===============> 6 analysis smd")
script_info({ msg: "SMD&BGA analysis" })
global._ERRORMAG = "Error-SMD&BGA analysis";
// smd
var smdInfo;
try {
......@@ -775,7 +814,6 @@ try {
var signalLayers = analysis_obj.matrixInfo.mSignals.map(function(v){return v.name})
var drillLayers = analysis_obj.matrixInfo.mDrills.map(function(v){return v.name})
console.log("=============================> 13 save copperArea copper_distribution")
var copper_distribution_steplist= [pcs_step, array_step];
copper_distribution_steplist.forEach(function(step){
......@@ -788,20 +826,20 @@ try {
return tmp
})
copper_percent_tmp.forEach(function(item){
var save_info = {
var save_info2 = {
jobid: JobId,
layer: item.layer,
}
if(/^cad/ig.test(step)){
save_info.layerinfohash = {
save_info2.layerinfohash = {
card_copper_distribution: item.copper_percent
}
} else if(/^stp/ig.test(step)){
save_info.layerinfohash = {
save_info2.layerinfohash = {
array_copper_distribution: item.copper_percent
}
}
save_layerinfo(save_info)
save_layerinfo(save_info2)
})
GEN.closeStep()
}
......@@ -837,9 +875,10 @@ try {
// } else {
// jobpath = "/home/local_db/server_db/jobs/"+job
// }
// mkPath(jobpath,["user","opcam","steps"])
script_info({ msg: "Error-Signal layer analysis" })
script_info({ progress: 85 })
script_info({ msg: "Signal layer analysis" })
global._ERRORMAG = "Error-Signal layer analysis";
script_info({ progress: 85 })
stepList.forEach(function(step){
GEN.openStep({ job: job, name: step })
// 曝光
......@@ -909,39 +948,43 @@ try {
GEN.affectedLayer({affected:'no',mode:'all'})
GEN.selClearFeature()
GEN.workLayer({name:item.signalL,display_number:2,clear_before:'yes'})
GEN.selectByFilter({feat_types:"pad", profile:"in"})
if(GEN.getSelectCount() > 0){
selCopyLayer({job:job, layer:item.signalL + "_pad"})
var syms = GEN.getLayerSymsHist({job:job,step:step,layer:item.signalL + "_pad"})
save_layerinfo({
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_size: getMinSym(syms)
}
})
if(item.solderL) {
GEN.workLayer({name:item.solderL,display_number:2,clear_before:'yes'})
GEN.selRefFeat({layers:item.signalL + "_pad", use:"filter", mode:"touch"})
if(GEN.getSelectCount() >0) {
selCopyLayer({job:job, layer:item.signalL + "_sm"})
var syms2 = GEN.getLayerSymsHist({job:job,step:step,layer:item.signalL + "_sm"})
save_layerinfo({
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_sm_opening_size: getMinSym(syms2)
}
})
GEN.deleteLayer({job:job, layer:item.signalL + "_sm"})
GEN.INFO({units:"mm", entity_type:'layer', entity_path:job+'/'+step+'/'+item.signalL, data_type:'SYMS_HIST'});
if(GEN.INFO_RESULT.gSYMS_HISTsymbol){
GEN.selectByFilter({feat_types:"pad", profile:"in"})
if(GEN.getSelectCount() > 0){
selCopyLayer({job:job, layer:item.signalL + "_pad"})
var syms = GEN.getLayerSymsHist({job:job,step:step,layer:item.signalL + "_pad"})
save_layerinfo({
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_size: getMinSym(syms)
}
})
if(item.solderL) {
GEN.workLayer({name:item.solderL,display_number:2,clear_before:'yes'})
GEN.selRefFeat({layers:item.signalL + "_pad", use:"filter", mode:"touch"})
if(GEN.getSelectCount() >0) {
selCopyLayer({job:job, layer:item.signalL + "_sm"})
var syms2 = GEN.getLayerSymsHist({job:job,step:step,layer:item.signalL + "_sm"})
save_layerinfo({
jobid: JobId,
layer: item.signalL,
layerinfohash: {
org_min_pad_sm_opening_size: getMinSym(syms2)
}
})
GEN.deleteLayer({job:job, layer:item.signalL + "_sm"})
}
}
GEN.deleteLayer({job:job, layer:item.signalL + "_pad"})
}
GEN.deleteLayer({job:job, layer:item.signalL + "_pad"})
}
})
GEN.clearLayers()
GEN.affectedLayer({ affected: 'no', mode: 'all' })
console.log("==================================> Drill analysis")
// 钻孔
var drillToSignals = drillLayers.map(function(v){ // 获取到钻孔层对应的顶层和底层
......@@ -995,7 +1038,9 @@ try {
// layers: signalLayers,
// items: [tmpitem]
// })
script_info({ msg: "Error-Run Checklist",result_severity:"ok" })
script_info({ msg: "Run Checklist",result_severity:"ok" })
global._ERRORMAG = "Error-Run Checklist";
// if (GEN.isChklistExists({ job: job, step: step, chklist: oChecklistName })) {
// GEN.COM("chklist_delete", { chklist: oChecklistName })
// }
......@@ -1042,8 +1087,32 @@ try {
})
GEN.closeStep()
})
// mvOutProfile({job:job, step:pcs_step})
// !! mvOutProfile({job:job, step:pcs_step})
global._ERRORMAG = false;
saveMeans({job:job,step:pcs_step})
// zip压缩 jobpath/user/opcam
// var zip = require('topsin.zip');
// var iSrcDir = jobpath + "/user/opencam";
// var iDestZipFile = jobpath + "/user/opencam.zip";
// zip.zipDir(iSrcDir,iDestZipFile);
// fs.rmdir(jobpath + "/user/opencam")
// jobpath
// process.exec("cp",["-r",jobpath,"/home/toplinker/samba/export/"+job])
if(db_customer == "2171"){
var matrix_2171 = GEN.getMatrix({job:job});
var comp = Object.keys(matrix_2171).filter(function(v){ // 如果有comp层 删除
return /comp/ig.test(v)
})
if (comp.length > 0){
var tmp = GEN.getStepList({job:job})
GEN.openStep({job:job,name:tmp[0]})
GEN.COM("delete_comp")
GEN.closeStep()
}
}
// 保存
if(/yes/ig.test(par.auto_save)){
GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号
......@@ -1077,25 +1146,36 @@ try {
script_info({ msg: "analysis done" })
//! means信息无法导出
// if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){
// if(fs.exists(par.export_path)){
// if(GEN.GEN_TYPE == "genesis"){
// GEN.COM("export_job,job="+job+",path="+par.export_path+",mode="+par.export_mode+",submode="+par.export_submode+",overwrite=yes")
// } else {
// GEN.COM("export_job",{job:job,path:par.export_path,mode:par.export_mode,submode:par.export_submode,overwrite:"yes",format:"genesis",output_name:job})
// GEN.COM("disp_on")
// GEN.COM("origin_on")
// }
// } else {
// resultData.push({ type: "error", title: "导出路径不存在!", detail: [{ desc: par.export_path }] });
// }
// }
// 邮件触发
sendEmail({
subject:db_customer + ' / '+job+' reading is ready!',
content: db_customer + ' / '+job+' reading is ready!'
})
if(par.export_path != "" && par.export_mode != "" && par.export_submode != "" ){
if(fs.exists(par.export_path)){
if(GEN.GEN_TYPE == "genesis"){
GEN.COM("export_job,job="+job+",path="+par.export_path+",mode="+par.export_mode+",submode="+par.export_submode+",overwrite=yes")
} else {
GEN.COM("export_job",{job:job,path:par.export_path,mode:par.export_mode,submode:par.export_submode,overwrite:"yes",format:"genesis",output_name:job})
GEN.COM("disp_on")
GEN.COM("origin_on")
}
// jobpath + "/user/opencam"; par.export_path + "/" + job + ".tgz"
// 到导出路径下解压 tgz
process.exec("/bin/tar",["-zxvf",par.export_path + "/" + job + ".tgz","-C",par.export_path])
// jobpath + "/user/opencam"
process.exec("/bin/cp",["-r",jobpath + "/user/opencam",par.export_path + "/" + job+"/user/"])
// 将导出路径下的 压缩成 tgz
process.exec("cd" ,[par.export_path,"&&","/bin/tar","-zcvf", "/tmp/tmp/" + job + ".tgz", job])
// fs.rmdir(par.export_path + "/" + job)
} else {
resultData.push({ type: "error", title: "导出路径不存在!", detail: [{ desc: par.export_path }] });
}
}
if(/yes/.test(par.send_email) ){
// 邮件触发
sendEmail({
subject:db_customer + ' / '+job+' reading is ready!',
content: db_customer + ' / '+job+' reading is ready!'
})
}
if (mode === "aimdfm") {
$.QDfm.updateRow({
......@@ -1140,11 +1220,32 @@ catch (e) {
where:{job_id:JobId, attr_name:"cam_workflow_info"},
})
IKM.save_job_info({jobid:JobId, jobinfohash:{cam_workflow_info:"err"}})
sendEmail({
subject:db_customer + ' / '+Job+ " analysis error",
content:_.toString(e)
})
// sendEmail({
// subject:db_customer + ' / '+Job+ " analysis error",
// content:_.toString(e)
// })
}
if(global._ERRORMAG){
script_info({ msg: global._ERRORMAG });
var job_attrs = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
field_format:{job_attrs:'json'},
field:'job_attrs',
where:{id : JobId}
})
});
if (!job_attrs ) { job_attrs = {}}
job_attrs.readin_result = global._ERRORMAG
db.query("",function(q){
return q.updateRow({
table:'pdm_job',
data:{job_attrs:job_attrs},
update_policy:{attr_data:'json_merge'},
where:{id : JobId}
})
});
}
IKM.msg(_.join(GEN.STATUS, "\n"))
IKM.msg(e)
Status = 'error';
......@@ -1502,12 +1603,55 @@ function analysis(props){
return res.length
}
T_m_p.prototype.analysis_vc_card_size = function(props){ // card短边尺寸 string
if(db_customer == "1352"){
var signals = this.matrixInfo.mSignals.map(function(v){return v.name})
GEN.openStep({job:this.job,name:this.pcs_step})
GEN.selClearFeature()
GEN.affectedLayer({affected:'yes',layer:signals,clear_before:'yes'})
GEN.selectByFilter({profile:"in"});
if(GEN.getSelectCount() > 0){
if(GEN.isLayerExists({job:this.job,layer:"_signals"})){GEN.deleteLayer({job:this.job,layer:["_signals"]})}
GEN.selCopyOther({dest:'layer_name',target_layer:'_signals',invert:'no',dx:0,dy:0,size:0})
var tmp = GEN.getLayerLimits({job:this.job,step:this.pcs_step,layer:'_signals',units:'mm'})
var size1 = Number(tmp.xsize);
var size2 = Number(tmp.ysize);
if(size1 > size2){
var tmpsize = size2
size2 = size1
size1 = tmpsize
}
var tmp_width = 0;
// 获取边线宽度
if(GEN.isLayerExists({job:this.job,layer:"tmp2"})){GEN.deleteLayer({job:this.job,layer:["tmp2"]})}
GEN.COM("profile_to_rout,layer=tmp2,width=1")
// 看_signals是否有跟tmp2碰到
GEN.workLayer({name:"_signals",display_number:2,clear_before:'yes'})
GEN.COM("filter_reset,filter_name=popup")
GEN.COM("filter_set,filter_name=popup,update_popup=no,feat_types=line")
GEN.COM("sel_ref_feat,layers=tmp2,use=filter,mode=touch,pads_as=shape,f_types=line\;pad\;surface\;arc\;text,polarity=positive\;negative,include_syms=,exclude_syms=")
if(GEN.getSelectCount() > 0) {
// 获取选择东西的 symbol
var feats = GEN.getFeatures({job:this.job,step:this.pcs_step,layer:"_signals",options:"select",units:"mm"});
GEN.selClearFeature()
var minSyms = feats.map(function(v){return (v.symbol.slice(1) - 0)})
minSyms.sort();
tmp_width = minSyms[0]/1000
}
if(props == "xsize"){
return (size1-tmp_width).toFixed(2) //
}
if(props == "ysize"){
return (size2-tmp_width).toFixed(2) //
}
}
GEN.closeStep()
}
return GEN.getProfileLimits({job:this.job,step:this.pcs_step,units:"mm"})[props].toFixed(2)
}
T_m_p.prototype.analysis_vc_array_size = function(props){ // array长边尺寸 string
if(!this.array_step){return "_error"}
var tmp = GEN.getProfileLimits({job:this.job,step:this.array_step,units:"mm"})
var size1 = Number(tmp.xsize)
var size1 = Number(tmp.xsize)
var size2 = Number(tmp.ysize)
if(size1 > size2){
var tmpsize = size2
......@@ -2126,7 +2270,6 @@ function analysisChkAttr(par) {
var oChecklistName = par.oChecklistName
layers.forEach(function (v) {
var nact = /top|bot/.test(v) ? 1 : 2;
// saveMeans({job:job,step:par.step,chklist:oChecklistName,nact:nact,layer:v,jobpath:par.jobpath})
hash[v] = {}
Object.keys(info).forEach(function (key) {
var val = info[key]
......@@ -2197,9 +2340,8 @@ function analysisDrill(par, step){
if(GEN.isLayerExists({job:job,layer:"temp+++"})){GEN.deleteLayer({job:job,layer:["temp+++"]})}
GEN.selCopyOther({dest:'layer_name',target_layer:'temp',invert:'no',dx:0,dy:0,size:0})
GEN.workLayer({name:"temp",display_number:1,clear_before:"yes"})
GEN.COM("sel_ref_feat,layers="+item+",use=filter,mode=touch,pads_as=shape,f_types=surface,polarity=positive\;negative,include_syms=,exclude_syms=")
if(GEN.getSelectCount()>0){GEN.selDelete()}
// GEN.COM("sel_ref_feat,layers="+item+",use=filter,mode=touch,pads_as=shape,f_types=surface,polarity=positive\;negative,include_syms=,exclude_syms=")
// if(GEN.getSelectCount()>0){GEN.selDelete()}
GEN.COM("chklist_single,action=valor_dfm_nfpr,show=yes")
GEN.COM("chklist_cupd,chklist=valor_dfm_nfpr,nact=1,params=((pp_layer=temp)(pp_delete=Duplicate)(pp_work=Features)(pp_drill=PTH\;NPTH\;Via)(pp_non_drilled=Yes)(pp_in_selected=All)(pp_remove_mark=Remove)),mode=regular")
GEN.COM("chklist_run,chklist=valor_dfm_nfpr,nact=1,area=profile")
......@@ -2224,9 +2366,9 @@ function analysisDrill(par, step){
GEN.COM("chklist_close,chklist=valor_analysis_drill,mode=hide")
GEN.COM("chklist_close,chklist=tmp_chk,mode=hide")
GEN.deleteLayer({job:job, layer:drl_layer})
GEN.deleteLayer({job:job, layer:[layer, layer+"+++"]})
// GEN.deleteLayer({job:job, layer:[layer, layer+"+++"]})
var meas = GEN.getCheckMeas({job:job,step:step,chklist:'tmp_chk',nact:1})
meas = meas.filter(function(v){return /^touch/.test(v)})
if(meas.length){
meas.forEach(function(v){
......@@ -2235,8 +2377,8 @@ function analysisDrill(par, step){
if(GEN.getSelectCount() > 0){GEN.selDelete()}
})
}
var pads = GEN.getFeatures({job:job,step:step,layer:"temp"})
// exportInfo({drill:drill, item:item});
var pads = GEN.getFeatures({job:job,step:step,layer:"temp"}) || [];
pads = pads.filter(function(v){v.size=v.symbol.slice(1)-0 ;return /^r\d/.test(v.symbol)})
if (pads && pads.length) {
......@@ -2689,27 +2831,158 @@ function unSelect(){
GEN.selectByFilter({attribute:[{attribute:'.drill',option:'via'}],profile:'all',operation:"unselect"})
GEN.selectByFilter({attribute:[{attribute:'.drill',option:'non_plated'}],profile:'all',operation:"unselect"})
}
function mkPath(path,list) {
if(list.length){
function mkPath(path, list) {
if (list.length) {
var newPath = path + '/' + list.shift()
if(!fs.dirExists(newPath)){
fs.mkdir(newPath)
}
return mkPath(newPath,list)
} else {return path}
if (!fs.dirExists(newPath)) {fs.mkdir(newPath)}
return mkPath(newPath, list)
} else {
return path
}
}
function saveMeans(props){
var job = props.job
var step = props.step
var custstep = props.step
var chklist = props.chklist
var nact = props.nact
var layer = props.layer
// 获取meas
var meas = GEN.getCheckMeas({job:job,step:step,chklist:chklist,nact:nact,layer:layer})
var basepath = props.jobpath+"/user/opcam/steps"
var respath = mkPath(basepath,[step,"chk",chklist+"_"+nact,layer])
fs.writeFile(respath+"/meas",meas.join("\n"))
fs.chmod(respath+"/meas",777)
var jobpath = GEN.getJobPath({job: job})
var filter = props.filter
var afterPath = mkPath(jobpath, ["user", "opencam", "steps"])
var steps;
if (custstep) {
steps = [custstep]
} else {
steps = GEN.getStepList({job: job})
steps = steps.filter(function(v){return v!="" || v!= " "})
}
if(!steps || steps.length==0){
return
}
steps.forEach(function (step) {
var chkPath = mkPath(afterPath, [step, "chk"])
var chks;
if (chklist) {chks = [chklist]}else {
chks = GEN.getChecklist({job: job,step: step})
}
chks = chks.filter(function(v){return /quotation/.test(v)});
if(chks && chks.length){
chks.forEach(function (item, i) {
var afterChkPath = mkPath(chkPath, [item])
var hdr = "{\n\
\"title\": \"" + item + "\",\n\
\"sequence\": " + (i + 1) + "\n\
}"
fs.writeFile(afterChkPath + "/hdr", _.toString(hdr))
var nacts = []
if (nact) {
nacts = [nact]
} else {
var nactCount = GEN.getChklistActCount({job:job,step:step,chklist:item}) || 0;
if(/quotation/.test(item)){
nactCount = 5;
}
for (var i = 0; i < nactCount; i++) {
nacts.push(i+1)
}
}
if(nacts.length > 0){
var actionPath = mkPath(afterChkPath, ["actions"])
nacts.forEach(function(index){
var titleFile = GEN.INFO({
entity_type: "check",
entity_path: job + "/" + step + "/" + item,
data_type: "TITLE",
options: "action=" + index,
parse:'no'
})
var title = fs.readFile(titleFile) || item
if(title && title != ""){
if(/=/.test(title)){
title = title.split("=")[1].trim()
title = title.substring(1, title.length-1)
}
var nackPath = mkPath(actionPath, [index+"-"+title])
fs.writeFile(nackPath + "/hdr", "{\n\
\"title\": \"" + (index + "-" + title) + "\",\n\
\"sequence\": " + index + ",\n\
\"dfm_name\": \"" + title + "\"\n\
}");
var displayFile = GEN.INFO({
entity_type: 'check',
entity_path: job + "/" + step + "/" + item,
data_type: 'MEAS_DISP_ID',
options: "action=" + index,
parse:'no'
});
fs.writeFile(nackPath + "/disp", fs.readFile(displayFile))
var measFile = GEN.INFO({entity_type:'check', entity_path:job+'/'+step+'/'+item, data_type:'MEAS', options:"index+action="+index, parse:'no'});
var means;
if(filter){ // 处理过滤
var fileArray = []
var file = fs.openFile(measFile,'r');
while(!file.atEnd()) {
fileArray.push(file.readLine())
}
if(Array.isArray(filter)){
var nowFilter = filter.filter(function(item2){
for (var key in item2) {
var value = item2[key]
if (!Array.isArray(value)){
item2[key] = [value]
}
}
return item2.step.indexOf(step)>=0 && item2.chk.indexOf(item)>=0 && item2.nact.indexOf(index)>=0
})
if (nowFilter.length > 0){
var nowfilter = nowFilter.map(function(v){return v.filter}).reduce(function(a,b){
b.forEach(function(v2){
if (a.indexOf(v2)<0){
a.push(v2)
}
})
return a
},[])
fileArray = fileArray.filter(function(line){
var flag = false
nowfilter.forEach(function(f){
var reg = new RegExp(f, "ig")
if (reg.test(line)){
flag = true
}
})
return flag
})
}
} else if (typeof filter == "object") {
if (filter[step] && filter[step][item] && filter[step][item][String(index)]) {
var nowFilter = filter[step][item][String(index)]
if (!Array.isArray(nowFilter)){nowFilter = [nowFilter]}
fileArray = fileArray.filter(function(line){
var flag = false
nowFilter.forEach(function(f){
var reg = new RegExp(f, "ig")
if (reg.test(line)){
flag = true
}
})
return flag
})
}
}
means = fileArray.join("\n")
} else {
means = fs.readFile(measFile)
}
fs.writeFile(nackPath + "/meas", means)
}
})
}
})
}
})
}
// 算弧长
function arcLength(x1,y1,x2,y2,x3,y3){
......@@ -2815,15 +3088,15 @@ function mvOutProfile (props) {
function autoUn(path, dirname) {
if(/\.rar$/.test(path)){
process.exec('mkdir', [dirname])
process.exec('unrar', ['x' , path, dirname, "-o+"])
fs.mkdir(dirname)
process.exec('/opt/rar/unrar', ['x' , path, dirname, "-o+"])
} else {
process.exec('7za', ['x' , path, "-o"+dirname, "-aoa"])
process.exec('/usr/local/lib/p7zip/7za', ['x' , path, "-o"+dirname, "-aoa"])
}
}
function exportInfo(info){
fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(info))
fs.writeFile("/home/toplinker/samba/Test_Scott/tmp", _.toString(info))
}
function sendEmail(msg) {
......
......@@ -103,6 +103,7 @@ try {
throw cam_workflow_info
}
script_info({ msg: "Data formatting" ,result_severity:"info"})
global._ERRORMAG = "Failed to data format";
script_info({ progress: 35 })
var par = PAR;
if(!par.hasOwnProperty("config_path") || par.config_path==""){
......@@ -132,17 +133,19 @@ try {
var config = eval(cfg)
var job = Job;
if(_.isEmpty(job)) throw "没有传入料号名!";
job = job.toLowerCase()
job = job.toLowerCase();
var custCfg = config.customer[par.customer] // 获取客户配置
var custCfg = config.customer[par.customer]; // 获取客户配置
if(!custCfg){throw "config error"}
// 料号验证
if(!GEN.isJobExists({job:job})){
script_info({ msg: "No PN was found in system" ,result_severity:"error"})
script_info({ msg: "Find PN in system" ,result_severity:"error"})
global._ERRORMAG = "No PN was found in system";
throw "job "+ job+ " is not exist" }
if(!GEN.isJobOpen({job:job})){GEN.openJob({job:job})}
if(GEN.checkInout({job:job,mode:"test"}) != 0 && mode == "aimdfm"){
script_info({ msg: "PN is not checkin" ,result_severity:"error"})
script_info({ msg: "PN Checkin" ,result_severity:"error"})
global._ERRORMAG = "PN is not checkin";
throw "the job check" }
console.log("Checkout====== ========================>")
GEN.checkInout({job:job,mode:"out"});
......@@ -264,7 +267,8 @@ try {
var after_sort_matrix = ret.sortNames
// 改名
script_info({ msg: "Failed to change name(Name clashes)" ,result_severity:"info"})
script_info({ msg: "Change the name" ,result_severity:"info"})
global._ERRORMAG = "Failed to change name";
script_info({ progress: 50 })
err = reName({job:job, matrix:after_sort_matrix, cfg:format_cfg})
if(err){throw err}
......@@ -392,6 +396,8 @@ try {
GEN.COM("open_job,job="+job);
script_info({ msg: "Creating Profile" ,result_severity:"info"})
global._ERRORMAG = "Failed to create profile";
script_info({ progress: 55 })
var all_layer = Object.keys(tmp_matrix);
// 没有outline层
......@@ -414,22 +420,15 @@ try {
})
}
} else if (/^yucca$/ig.test(par.customer)) {
if(profileRule[0] == "outline" && /1352/ig.test(PAR.customer)) {
GEN.workLayer({name:'outline',display_number:2,clear_before:'yes'})
if(all_layer.indexOf("outline") >= 0) {
GEN.workLayer({name:"outline",display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) {
if(GEN.GEN_TYPE == "genesis"){
GEN.selCreateProfile()
// GEN.COM("sel_create_profile,create_profile_with_holes=no")
} else {
GEN.COM("profile_limits,layers=outline,type=lyrfilter,margin=0")
}
}
var hasProfile = GEN.getProfile({job:job, step:tmp_step})
GEN.closeStep()
if(hasProfile.match(/\n/ig).length == 1){
createOutline({job:job, step:tmp_step, profileRule:profileRule})
// GEN.COM("sel_create_profile,create_profile_with_holes=no")
// cutting data
createOutline({job:job, step:tmp_step, profileRule:["^outline$"]})
}
else { createOutline({job:job, step:tmp_step, profileRule:profileRule}) }
} else {
createOutline({job:job, step:tmp_step, profileRule:profileRule})
}
......@@ -439,11 +438,18 @@ try {
if(all_layer.indexOf("outline") >= 0){
GEN.workLayer({name:"outline",display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) { GEN.COM("sel_create_profile,create_profile_with_holes=no") }
if(GEN.getSelectCount() > 0) {
// GEN.COM("sel_create_profile,create_profile_with_holes=no")
// cutting data
createOutline({job:job, step:tmp_step, profileRule:["^outline$"]})
}
else { createOutline({job:job, step:tmp_step, profileRule:profileRule}) }
} else if (contours.length) {
// 过滤上下方的框
profileRule.unshift("contour");
createOutline({job:job, step:tmp_step, profileRule:profileRule})
} else {
createOutline({job:job, step:tmp_step, profileRule:profileRule})
}
} else if (/^vivo$/ig.test(par.customer)) {
// 判断有没有line层
......@@ -451,7 +457,11 @@ try {
GEN.workLayer({name:"line",display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) { GEN.COM("sel_create_profile,create_profile_with_holes=no") }
} else if(all_layer.indexOf("top") >= 0) {
} else if(all_layer.indexOf("array") >= 0) {
GEN.workLayer({name:"array",display_number:2,clear_before:'yes'})
GEN.selAllFeat()
if(GEN.getSelectCount() > 0) { GEN.COM("sel_create_profile,create_profile_with_holes=no") }
}else if(all_layer.indexOf("top") >= 0) {
GEN.selClearFeature()
GEN.workLayer({name:"top",display_number:2,clear_before:'yes'})
// 判断是否有外框
......@@ -523,6 +533,8 @@ try {
var hasProfile = GEN.getProfile({job:job, step:tmp_step})
if(hasProfile.match(/\n/ig).length == 1){
script_info({ msg: "Failed to create profile" ,result_severity:"warn"})
global._ERRORMAG = "Failed to create profile";
job_attrs.readin_result = "Failed to create profile"
db.query("",function(q){
return q.updateRow({
......@@ -538,6 +550,7 @@ try {
script_info({ msg: "Data format is done" ,result_severity:"warn"})
global._ERRORMAG = false;
db.query("",function(q){
return q.updateRow({
......@@ -553,7 +566,6 @@ try {
GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job})
if (mode === "aimdfm") {
$.QDfm.updateRow({
......@@ -585,7 +597,27 @@ catch (e) {
script_info({ result_severity: "error" })
IKM.msg(_.join(GEN.STATUS, "\n"))
IKM.msg(e)
console.log("=======save cam workflow info");
if(global._ERRORMAG){
script_info({ msg: global._ERRORMAG });
var job_attrs = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
field_format:{job_attrs:'json'},
field:'job_attrs',
where:{id : JobId}
})
});
if (!job_attrs ) { job_attrs = {}}
job_attrs.readin_result = global._ERRORMAG
db.query("",function(q){
return q.updateRow({
table:'pdm_job',
data:{job_attrs:job_attrs},
update_policy:{attr_data:'json_merge'},
where:{id : JobId}
})
});
}
IKM.crud("deleteRow", {
table: "pdm_job_jobattr",
where:{job_id:JobId, attr_name:"cam_workflow_info"},
......@@ -763,7 +795,11 @@ function setDrill(props){ // 设置钻孔
// findSignal 根据传入的数字找到对应的signal层 如 1 => top ; 2 => layer_2
function findSignal(num){
console.log(num)
return signalLayer[Number(num-1)].name
var tmpnum = Number(num-1)
if(tmpnum > signalLayer.length -1){
tmpnum = signalLayer.length -1
}
return signalLayer[tmpnum].name
}
function doDrill(drills){ // 分析钻孔层
return drills.map(function(v){
......@@ -793,76 +829,101 @@ function reName(props) { // 改名 par{job:要改名的料号, rule: {要改名
var matrix = props.matrix
var cfg = props.cfg
matrix = matrix.filter(function(v){return v.name != v.new_name})
var rename_list = matrix.map(function(item){
var new_name;
var tl_name = item.tl_name
var rule = item.rule
if(rule === tl_name){
new_name = item.new_name
matrix = matrix.filter(function(v){
if(v.name == v.new_name){
IKM.save_layerinfo({ jobid: JobId, layer: v.name, layerinfohash: { layer_name_final: v.new_name }})
}
return v.name != v.new_name
})
var tmp = [];
matrix = matrix.filter(function(v){
// 在数据库层信息里找v.name 找得到就直接改名
var new_name = IKM.get_layerinfo({jobid: JobId, layer: v.name, layerinfo: "layer_name_final" })
var layers_tmp = Object.keys(GEN.getMatrix({job:job}));
if(new_name && new_name!="" && new_name != v.name && layers_tmp.indexOf(new_name) < 0){
IKM.save_layerinfo({ jobid: JobId, layer: v.name, layerinfohash: { layer_name_final: new_name }})
tmp.push(v.name + " ---- " +new_name)
GEN.renameLayer({job:job,layer:v.name,new_name:new_name})
return false
} else {
var reg = new RegExp(rule,"ig")
var tmp = reg.exec(tl_name)
if(!tmp){return undefined}
// ["1","10","np"]
var replaceArr = tmp.slice(1)
new_name = item.new_name
var params = {}
for(var i = 0; i<replaceArr.length;i++){
if(/\d+/ig.test(replaceArr[i])) {
params["$"+(i+1)] = replaceArr[i]
} else {
params["$"+(i+1)] = "'" + replaceArr[i] + "'"
return true
}
})
if(matrix.length > 0){
var rename_list = matrix.map(function(item){
var new_name;
var tl_name = item.tl_name
var rule = item.rule
if(rule === tl_name){
new_name = item.new_name
} else {
var reg = new RegExp(rule,"ig")
var tmp = reg.exec(tl_name)
if(!tmp){return undefined}
// ["1","10","np"]
var replaceArr = tmp.slice(1)
new_name = item.new_name
var params = {}
for(var i = 0; i<replaceArr.length;i++){
if(/\d+/ig.test(replaceArr[i])) {
params["$"+(i+1)] = replaceArr[i]
} else {
params["$"+(i+1)] = "'" + replaceArr[i] + "'"
}
}
}
replaceArr.forEach(function(v,i){
tl_name = tl_name.replace("($"+(i+1)+")",v)
})
// {"tl_name":"d1-10-np","new_name":"ftdrill($1)-($2)-($3)"}
new_name = replaceTlName(new_name)
function replaceTlName(name){
var tmp = /(\([^)]*\))/ig.exec(name)
if(!tmp){ return name }
var param_arr = tmp[1].match(/\$\d+/ig)
var newname = tmp[1]
param_arr.forEach(function(v){
newname = newname.replace(new RegExp("\\"+v,"ig"), params[v])
replaceArr.forEach(function(v,i){
tl_name = tl_name.replace("($"+(i+1)+")",v)
})
newname = name.replace(tmp[1],eval(newname))
return replaceTlName(newname)
// {"tl_name":"d1-10-np","new_name":"ftdrill($1)-($2)-($3)"}
new_name = replaceTlName(new_name)
function replaceTlName(name){
var tmp = /(\([^)]*\))/ig.exec(name)
if(!tmp){ return name }
var param_arr = tmp[1].match(/\$\d+/ig)
var newname = tmp[1]
param_arr.forEach(function(v){
newname = newname.replace(new RegExp("\\"+v,"ig"), params[v])
})
newname = name.replace(tmp[1],eval(newname))
return replaceTlName(newname)
}
}
}
return {
orig_name: item.name,
new_name: new_name
}
})
rename_list = rename_list.filter(function(v){
var flag = true
if(!v){flag = false}
if(!v.orig_name || !v.new_name ){flag = false}
return flag
})
rename_list.forEach(function(v){
if(v.orig_name !== v.new_name && !GEN.isLayerExists({job:job, layer: v.new_name})){
if(!GEN.isLayerExists({job:job, layer:v.new_name})){
return {
orig_name: item.name,
new_name: new_name
}
})
rename_list = rename_list.filter(function(v){
var flag = true
if(!v){flag = false}
if(!v.orig_name || !v.new_name ){flag = false}
return flag
})
rename_list.forEach(function(v){
var layers_tmp = Object.keys(GEN.getMatrix({job:job}));
if(v.orig_name !== v.new_name && layers_tmp.indexOf(v.new_name) < 0){
IKM.save_layerinfo({ jobid: JobId, layer: v.orig_name, layerinfohash: { layer_name_final: v.new_name }})
GEN.renameLayer({job:job,layer:v.orig_name,new_name:v.new_name})
}
}
});
});
}
// 最后 如果第一个 最后一个不是top bottom 就手动修改
var afterMatrix = GEN.getMatrix({job:job})
var afterMatrix = GEN.getMatrix({job:job});
var signals = Object.keys(afterMatrix).filter(function(v){return afterMatrix[v].layer_type=="signal" && afterMatrix[v].context=="board"})
signals = signals.sort(function(a,b){return afterMatrix[a].row - afterMatrix[b].row})
var topSignal = signals[0]
var botSignal = signals[signals.length -1]
if(topSignal !== "top"){
if(!GEN.isLayerExists({job:job, layer:"top"})){
IKM.save_layerinfo({ jobid: JobId, layer: topSignal, layerinfohash: { layer_name_final: "top" }})
GEN.renameLayer({job:job,layer:topSignal,new_name:"top"})
}
}
if(botSignal !== "bottom"){
if(!GEN.isLayerExists({job:job, layer:"bottom"})){
IKM.save_layerinfo({ jobid: JobId, layer: botSignal, layerinfohash: { layer_name_final: "bottom" }})
GEN.renameLayer({job:job,layer:botSignal,new_name:"bottom"})
}
}
......@@ -1062,7 +1123,9 @@ function createOutline(props){
}
function exportInfo(info){
fs.writeFile("/home/toplinker/samba/Test_Scott/tmp", _.toString(info))
}
function touch(layer) {
GEN.selRefFeat({layers:layer,use:"filter",mode:"touch"})
if(GEN.getSelectCount() > 0) {
......
......@@ -98,7 +98,7 @@ if(cam_workflow_info){
IKM.save_job_info({jobid:JobId, jobinfohash:{cam_workflow_info:""}})
}
try {
script_info({ msg: "Failed to unzip the file", result_severity:"info" })
global._ERRORMAG = null;
var par = PAR;
// var db_path = db.query("",function(q){
// return q.selectValue({
......@@ -109,7 +109,8 @@ try {
// });
// if(_.isEmpty(db_path)){throw "quote-data-upload error"}
if(!par.path || par.path == "") {
script_info({ msg: "The data path does not exist", result_severity:"error" });
script_info({ msg: "Find data path", result_severity:"error" });
global._ERRORMAG = "The data path does not exist";
throw "path error"}
if(!par.hasOwnProperty("config_path") || par.config_path==""){
console.log("===================cfg");
......@@ -127,7 +128,8 @@ try {
})
});
if(_.isEmpty(db_customer)){
script_info({ msg: "No customer was found", result_severity:"error" });
script_info({ msg: "Find customer", result_severity:"error" });
global._ERRORMAG = "No customer was found";
throw "customer error"}
if(db_customer && !(/^done$/ig.test(db_customer)) && db_customer != "" ){
par.customer = db_customer
......@@ -141,11 +143,13 @@ try {
})
});
if (!cfg || cfg == ""){
script_info({ msg: "No customer config was found", result_severity:"error" });
script_info({ msg: "Find customer config", result_severity:"error" });
global._ERRORMAG = "No customer config was found";
throw "cfg can not find"}
var config = eval(cfg);
if(!config.hasOwnProperty("customer")){
script_info({ msg: "No customer config was found", result_severity:"error" });
script_info({ msg: "Find customer config", result_severity:"error" });
global._ERRORMAG = "No customer config was found";
throw "config error"}
var job = Job;
if(_.isEmpty(job)) throw "没有传入料号名!";
......@@ -155,11 +159,12 @@ try {
var custCfg = config.customer[par.customer]
if(!custCfg){throw "customer config error:"+par.customer}
custCfg.db = par.db || custCfg.db
var step = custCfg.step.toLowerCase()
var step = custCfg.step.toLowerCase() || "cad";
// 获取路径下文件信息
var path = par.path
if(!fs.exists(path)){
script_info({ msg: "No PN file was found in folder", result_severity:"error" });
script_info({ msg: "Find PN folder", result_severity:"error" });
global._ERRORMAG = "No PN file was found in folder";
throw "path error"}
var pathInfo = fs.listDir(path + "/" + db_customer.toLowerCase(), 1)
// 判断存不存在料号文件
......@@ -176,7 +181,8 @@ try {
// }
var jobFile = pathInfo.filter(function(v){return v.baseName.toLowerCase() == job_file_baseName})
if(jobFile.length == 0){
script_info({ msg: "No PN file was found in folder", result_severity:"error" });
script_info({ msg: "Find PN folder", result_severity:"error" });
global._ERRORMAG = "No PN file was found in folder";
throw "job file is not exist"}
var jobFiles = [] // 记录要分析的文件
if (!jobFile[0].isDir) {
......@@ -188,7 +194,12 @@ try {
// GEN.COM("config_edit,name=iol_fix_ill_polygon,value=yes,mode=user")
// 将jobFile下的zip解压
decompression(jobFile[0].path, [])
script_info({ msg: "unzip the file", result_severity:"info" })
global._ERRORMAG = "Failed to unzip the file";
decompression(jobFile[0].path, []);
changePath2(jobFile[0].path)
var job_attrs = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
......@@ -197,7 +208,7 @@ try {
where:{id : JobId}
})
});
if (!job_attrs ) { job_attrs = {}}
if (!job_attrs ) { job_attrs = {}}
job_attrs.readin_result = "Readin"
db.query("",function(q){
return q.updateRow({
......@@ -213,20 +224,26 @@ try {
// 分析料号文件 得到料号导入信息 导入类型
var jobInfo = analyJobFiles({jobFiles:jobFiles.filter(function(v){return v.isFile}),custCfg:custCfg,config:config,job:job })
if(jobInfo.data.length == 0){
script_info({ msg: "No PN file was found in folder", result_severity:"error" });
script_info({ msg: "Find PN folder", result_severity:"error" });
global._ERRORMAG = "No PN file was found in folder";
throw "file error"}
var importOk = false; // 是否成功导入
script_info({ progress: 10 })
if(/odb/ig.test(jobInfo.type)){ // odb导入
script_info({ msg: "Import odb++", result_severity:"error" });
global._ERRORMAG = "Fail to import odb++";
if(jobInfo.data.length == 1){ // 只分析到一个tgz文件 直接导入
IKM.msg("只分析到一个tgz文件 直接导入")
import_info.push({name:jobInfo.data[0].file.name, type:"odb++", date:now(),user:$.user_name})
var err = importJob({name:job,db:custCfg.db,path:jobInfo.data[0].file.path},config.delSameJob)
IKM.msg("只分析到一个tgz文件 直接导入");
import_info.push({name:jobInfo.data[0].file.name, type:"odb++", date:now(),user:$.user_name});
var err = importJob({name:job,db:custCfg.db,path:jobInfo.data[0].file.path},config.delSameJob);
// 将step改名cad
var step_tmp = GEN.getStepList({job:job})[0];
if(step_tmp != "cad"){
GEN.renameStep({job:job,name:step_tmp,new_name:'cad'})
}
if(err){throw err}
} else { // 多个tgz文件 说明需要合并
console.log("==========合并的情况");
var jobs = jobInfo.data.map(function(item, i){
......@@ -292,6 +309,8 @@ try {
}
if(/gerber/ig.test(jobInfo.type)){ // gerber导入
script_info({ msg: "Import gerber", result_severity:"error" });
global._ERRORMAG = "Fail to import gerber";
GEN.createJob({name:job,db:custCfg.db})
GEN.createStep({job:job,name:step})
var gerberInfo = jobInfo.data.map(function(item){
......@@ -329,6 +348,7 @@ try {
}
if(!importOk){ throw "import error"}
script_info({ progress: 20 })
global._ERRORMAG = null;
reNameStep(job)
if(/2171/.test(par.customer)){
// var matrix = GEN.getMatrix({job:job});
......@@ -370,7 +390,6 @@ try {
GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job})
var import_html = "<table border=1 align='center' cellpadding=5 cellspacing=0 style=\"text-align: center;\"><tr><th>导入状态/Import Status</th><th>文件/File</th><th>类型/Type</th><th>导入时间/Import Time</th><th>操作用户/User</th></tr>"
import_info.forEach(function(item){
var name = item.name;
......@@ -382,7 +401,7 @@ try {
import_html += "</table>"
// name type date user
resultData.push({type: "info",title:"导入资料列表",detail: [{ desc: import_html }] })
script_info({ msg: "导入资料成功" })
script_info({ msg: "Data Readin" })
if (mode === "aimdfm") {
$.QDfm.updateRow({
table: "pdm_aimdfm_task",
......@@ -411,7 +430,27 @@ try {
}
catch (e) {
script_info({ result_severity: "error" })
if(global._ERRORMAG){
script_info({ msg: global._ERRORMAG });
var job_attrs = db.query("",function(q){
return q.selectValue({
table:'pdm_job',
field_format:{job_attrs:'json'},
field:'job_attrs',
where:{id : JobId}
})
});
if (!job_attrs ) { job_attrs = {}}
job_attrs.readin_result = global._ERRORMAG
db.query("",function(q){
return q.updateRow({
table:'pdm_job',
data:{job_attrs:job_attrs},
update_policy:{attr_data:'json_merge'},
where:{id : JobId}
})
});
}
IKM.crud("deleteRow", {
table: "pdm_job_jobattr",
where:{job_id:JobId, attr_name:"cam_workflow_info"},
......@@ -506,6 +545,7 @@ function importJob(props,delSameJob){
}
}
props.path = changePath(props.path)
// 如果path的tgz不符合规范 纠正一下
GEN.importJob(props);
}
......@@ -571,23 +611,31 @@ function decompression(path, zips) {
var files = fs.listDir(path)
var count = 0;
var zipfiles = files.filter(function(item){
if (item.suffix == "zip" || item.suffix == "rar" || item.suffix == "7z") {
if (item.suffix == "zip" || item.suffix == "rar" || item.suffix=="7z" || item.suffix == "ZIP") {
inputState.push(item.suffix);
console.log("--->path:" + item.path)
if(zips.indexOf(item.path) < 0){
zips.push(item.path)
if(item.name.length >= 20) {
zips.push(item.path);
if(item.name.length >= 30 && !/�|\?/.test(item.name)) {
var mvname = "custom" + count + "." + item.suffix;
count++
fs.rename(item.path, item.dir + "/" + mvname)
count++;
fs.rename(item.path, item.dir + "/" + mvname);
item.path = item.dir + "/" + mvname
}
var dir_name = item.path.replace(/\.(zip|7z|rar)$/, "");
var dir_name = item.path.replace(/\.(zip|7z|rar)$/ig, "");
autoUn(item.path, dir_name);
return true
}
}
// else if(/7z/.test(item.completeSuffix)){
// inputState.push("7z");
// if(zips.indexOf(item.path) < 0){
// zips.push(item.path);
// var dir_name = item.path.replace(".7z", "");
// autoUn(item.path, dir_name);
// return true
// }
// }
return false
})
if(zipfiles.length) {decompression(path, zips)}
......@@ -596,7 +644,7 @@ function decompression(path, zips) {
function changePath(path) {
return path.replace(/[^/]+\//ig, function(v){
if(v.length >= 10 && /\s/ig.test(v)) {
v = v.replace(" ", "")
v = v.replace(" ", "\\ ")
return v.slice(0,6) + "~1/"
} else {
return v
......@@ -607,12 +655,36 @@ function changePath(path) {
function autoUn(path, dirname) {
if(/\.rar$/.test(path)){
fs.mkdir(dirname)
process.exec('unrar', ['x' , path, dirname, "-o+"])
process.exec('/opt/rar/unrar', ['x' , path, dirname, "-o+"])
} else {
process.exec('7za', ['x' , path, "-o"+dirname, "-aoa"])
process.exec('/usr/local/lib/p7zip/7za', ['x' , path, "-o"+dirname, "-aoa"])
}
}
function exportInfo(info){
fs.writeFile("/home/toplinker/samba/scott_test/tmp", _.toString(info))
fs.writeFile("/home/toplinker/samba/Test_Scott/tmp", _.toString(info))
}
function changePath2(filePath){
var fileList = fs.listDir(filePath);
var tmp = [];
for(var i = 0;i<fileList.length;i++){
if(fileList[i].isDir){
var path = fileList[i].path;
var fileName = fileList[i].baseName;
var obj = {
path:path,
fileName:fileName
}
tmp.push(obj);
}
}
var list = [];
for(var i = tmp.length-1;i>=0;i--){
var newFileName = tmp[i].fileName.replace(/\s*/g,'');//去除文件名中空格
newFileName = newFileName.replace(/\?/g,'');//去除文件名中?
var newPath = tmp[i].path.replace(/^(.*)\/[^\/]*$/,"$1");
var file = fs.rename(tmp[i].path,newPath+'/'+newFileName);
list.push(file);
}
}
\ No newline at end of file
......@@ -343,7 +343,7 @@
{
"valid": function(props){
var file = props.file;
return /.+\.art$/ig.test(file.name)
return /.+\.art$|\.gbr$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_2",
......@@ -452,19 +452,19 @@
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["top_enig","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["bot_enig","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["top_paste","^spt$","^past_top$"], "tl_name" : "past_top" },
{"orig_name" : ["bottom_paste","^spb$","^past_botm$"], "tl_name" : "past_botm" },
{"orig_name" : ["top_silk","^sst$","^silk_top$"], "tl_name" : "silk_top" },
{"orig_name" : ["bottom_silk","^ssb$","^silk_bot$"], "tl_name" : "silk_bot" },
{"orig_name" : ["top_solder","^smt$","^sm_top$"], "tl_name" : "sm_top" },
{"orig_name" : ["bottom_solder","^smb$","^sm_botm$"], "tl_name" : "sm_botm" },
{"orig_name" : "^top$", "tl_name" : "top" },
{"orig_name" : "^drill$", "tl_name" : "drill" },
{"orig_name" : ["^board_outline$","outline.art","^outline$"], "tl_name" : "outline" },
{"orig_name" : ["top_(?:solder)paste","^spt(?:\\.gbr)?$","^past_top$"], "tl_name" : "past_top" },
{"orig_name" : ["bot(?:tom)?_(?:solder)paste","^spb(?:\\.gbr)?$","^past_botm$"], "tl_name" : "past_botm" },
{"orig_name" : ["top_silk","^sst(?:\\.gbr)?$","^silk_top$"], "tl_name" : "silk_top" },
{"orig_name" : ["bot(?:tom)?_silk","^ssb(?:\\.gbr)?$","^silk_bot$"], "tl_name" : "silk_bot" },
{"orig_name" : ["top_(?:solder)mask","^smt(?:\\.gbr)?$","^sm_top$"], "tl_name" : "sm_top" },
{"orig_name" : ["bot(?:tom)?_(?:solder)mask","^smb(?:\\.gbr)?$","^sm_botm$"], "tl_name" : "sm_botm" },
{"orig_name" : ["^top$","^top\\.gbr$","^top\\.art$"], "tl_name" : "top" },
{"orig_name" : "^drill(?:\\.drl)$", "tl_name" : "drill" },
{"orig_name" : ["^board_outline$","outline\\.gbr|outline\\.art","^outline$"], "tl_name" : "outline" },
{"orig_name" : ["^rout$","\\.rou$"], "tl_name" : "rout" },
{"orig_name" : "^bottom$", "tl_name" : "bottom" },
{"orig_name" : ["^l(\\d+)","^isl(\\d+)$","^layer_(\\d+)$"], "tl_name" : "l_($1)"},
{"orig_name" : ["_isl(\\d+)_isl(\\d+)","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["^bottom$","^bottom\\.gbr$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["^inner_(\\d+)\\.art","^l(\\d+)","^isl(\\d+)(?:\\.gbr)?$","^layer_(\\d+)$"], "tl_name" : "l_($1)"},
{"orig_name" : ["-(\\d+)-(\\d+)(?:-laser)?\\.drl","_isl(\\d+)_isl(\\d+)","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["_top_isl(\\d+)"], "tl_name" : "d_1-($1)"},
{"orig_name" : ["_isl(\\d+)_bottom"], "tl_name" : "d_($1)-($1+1)"}
]
......@@ -599,25 +599,27 @@
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["^pm_top","spcs\\.gbr$|paste.pri|pripaste|solderpaste_top","ppst\\.art|spt\\.art","assy[_-]?top\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","spps\\.gbr$|paste.sec|secpaste|solderpaste_bottom","spst\\.art|spb\\.art","assy[_-]?bott?o?m?\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["silk.pri","pleg\\.art|sst\\.art","^ss_top|sscs\\.gbr$","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["silk.sec","sleg\\.art|ssb\\.art","^ss_bot|ssps\\.gbr$","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["\\.st$|\\.tsm$|soldermask_top","mask.top\\.art|smt\\.art","mask.pri\\.art|smcs\\.gbr$","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["\\.sb$|\\.bsm$|soldermask_bottom","mask.bot\\.art|smb\\.art","mask.sec\\.art|smps\\.gbr$","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^pm_top","spcs\\.gbr$|paste.pri|pripaste|solderpaste_top","ppst\\.art|spt\\.art","assy[_-]?top\\.art","past_top","paste_top|spt"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","spps\\.gbr$|paste.sec|secpaste|solderpaste_bottom","spst\\.art|spb\\.art","assy[_-]?bott?o?m?\\.art","past_bot","paste_bot|spb"], "tl_name" : "past_botm" },
{"orig_name" : ["silk.pri","pleg\\.art|sst\\.art","^ss_top|sscs\\.gbr$","silk_top|sst"], "tl_name" : "silk_top" },
{"orig_name" : ["silk.sec","sleg\\.art|ssb\\.art","^ss_bot|ssps\\.gbr$","silk_bot|ssb"], "tl_name" : "silk_bot" },
{"orig_name" : ["\\.st$|\\.tsm$|soldermask_top","mask.top\\.art|smt\\.art","mask.pri\\.art|smcs\\.gbr$","psm\\.art","sm_top|smt"], "tl_name" : "sm_top" },
{"orig_name" : ["\\.sb$|\\.bsm$|soldermask_bottom","mask.bot\\.art|smb\\.art","mask.sec\\.art|smps\\.gbr$","ssm\\.art","sm_bot|smb"], "tl_name" : "sm_botm" },
{"orig_name" : ["^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_top\.art$","^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["^(?:(?!assy|enig|pm|past|ss|silk|sm|soldermask).)+_bottom\.art$","^bot\\.art$","^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["int(\\d+)\\.art"], "tl_name" : "l_($1+1)"},
{"orig_name" : ["l(\\d+).*\\.gbr$","^0?(\\d+)[\\D].*\\.art$","\\.p(\\d+)p?$","\\.l(\\d+)$","^l(\\d+).*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","laye?r?(\\d+)","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^(?:signal|plane|layer)_(\\d+)$","^l(\\d+)$","_l(\\d+)-.{3}\\.art$","lay(\\d+)\\.art$","l(\\d+).*\\.gbr$","^0?(\\d+)[\\D].*\\.art$","\\.p(\\d+)p?$","\\.l(\\d+)$","^l(\\d+).*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","laye?r?(\\d+)","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["(\\d+)-(\\d+)-((?:(?!laser)[a-zA-Z])+)\\.drl$","\\.d(\\d+)-(\\d+)((?:(?!laser)[a-zA-Z])+)$"], "tl_name" : "d($1)-($2)-($3)"},
{"orig_name" : ["\\.ncd(\\d)-(\\d)$","\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["\\.ncdthru$"], "tl_name" : "drill" },
{"orig_name" : ["_l?(\\d+)_l?(\\d+)$","\\.ncd(\\d)-(\\d)$","\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["^drill$","\\.ncdthru$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["^contour\\.gdo$","\\.R1$","outline"], "tl_name" : "outline" },
{"orig_name" : ["^ro\\.art$","^contour\\.gdo$","\\.R1$","outline"], "tl_name" : "outline" },
{"orig_name" : ["^pst\\.art$","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["^sst\\.art$","bot-enig","enig_bot"], "tl_name" : "enig_bot" }
{"orig_name" : ["^sst\\.art$","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["_top_l(\\d+)"], "tl_name" : "d_1-($1)"},
{"orig_name" : ["_l(\\d+)_bottom"], "tl_name" : "d_($1)-($1+1)"}
],
"mergerule" : {
profile:["past_top","sm_top"],
......@@ -827,27 +829,27 @@
"tl_name": [
{"orig_name" : ["^comp_+_top$"], "tl_name" : "comp_+_top" },
{"orig_name" : ["^comp_+_bot$"], "tl_name" : "comp_+_bot" },
{"orig_name" : ["^pmt\\.art$","\\.pma$|\\.spa$","paste.top|soldPasteTop|pastemask.?top","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pmb\\.art$","\\.pmb$|\\.spb$","paste.bot|soldPasteBot|pastemask.?bot","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["tsilk","^sst\\.art$","\\.ssa$","silkscrntop|silkscreentop","silk.top|silk-top"], "tl_name" : "silk_top" },
{"orig_name" : ["bsilk","^ssb\\.art$","\\.ssb$","silkscrnbot|silkscreenbot","silk.bot|silk-bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["^pmt\\.art$","\\.pma$|\\.spa$","paste.?top|soldPasteTop|pastemask.?top","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pmb\\.art$","\\.pmb$|\\.spb$","paste.?bot|soldPasteBot|pastemask.?bot","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["tsilk|silktop","^sst\\.art$","\\.ssa$","silkscrntop|silkscreentop","silk.top|silk-top"], "tl_name" : "silk_top" },
{"orig_name" : ["bsilk|silkbot","^ssb\\.art$","\\.ssb$","silkscrnbot|silkscreenbot","silk.bot|silk-bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["tmask","^smt\\.art$","\\.sma$","soldmask1top|soldermask.?top","sm.top|solder.top"], "tl_name" : "sm_top" },
{"orig_name" : ["bmask","^smb\\.art$","\\.smb$","soldmask1bot|soldermask.?bot","sm.bot|solder.bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^(?:(?!assy|export|enig|pm|past|paste|silk|mask).)+top\\.(pho|art)$","^top$","^top\\.art$"], "tl_name" : "top" },
{"orig_name" : ["^(?:(?!ref).)+l(\\d)\\.art$","-(\\d+)l\\.pho$","^l(\\d+).*\\.art$","^v(\\d+)\\.art$","^g(\\d+)\\.art$","^s(\\d+)\\.art$","\\.l(\\d+)$","Copper(\\d+)\\.ger$","^laye?r?_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^(?:(?!assy|view|enig|pm|past|paste|silk|mask).)+bot\\.(pho|art)$","^bot\\.art$","^bottom$","^bottom.art$"], "tl_name" : "bottom" },
{"orig_name" : ["^top\\.(pho|art)$","^(?:(?!assy|export|enig|pm|past|paste|silk|mask).)+top\\.(pho|art)$","^top$","^top\\.art$"], "tl_name" : "top" },
{"orig_name" : ["_s(\\d+)\\.art$","^(?:(?!ref).)+l(\\d+)\\.art$","-(\\d+)l\\.pho$","^l(\\d+).*\\.art$","^v(\\d+)\\.art$","^g(\\d+)\\.art$","^s(\\d+)\\.art$","\\.l(\\d+)$","Copper(\\d+)\\.ger$","^laye?r?_?(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bottom\\.(pho|art)$","^(?:(?!assy|view|enig|pm|past|paste|silk|mask).)+bot(tom)?\\.(pho|art)$","^bot\\.art$","^bottom$","^bottom.art$"], "tl_name" : "bottom" },
{"orig_name" : ["\\.d(\\d+)$"], "tl_name" : "d_($1)-($1+1)"},
{"orig_name" : ["(\\d+)-(\\d+)plated\\.ncd","thruHolePlated_(\\d+)_(\\d+)\\.ncd","(\\d+)-(\\d+)\\.drl$","^drill(\\d+)-(\\d+)$","^d_(\\d+)-(\\d+)$"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["(\\d+)-(\\d+)-np\\.drl$","ThruHoleNonPlated\\.ncd$","^drill$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack\\.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["p_outline\\.art","panel\\.art$","paneloutline\\.pho","outline\\.art$","\\.bol$","PnlContourNonPlated\\.ger","^outline"], "tl_name" : "outline" },
{"orig_name" : ["p_outline\\.art","panel\\.(art|pho)$","panel-?outline\\.pho","outline\\.art$","\\.bol$","PnlContourNonPlated\\.ger","^outline"], "tl_name" : "outline" },
{"orig_name" : ["topside-golden","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["botside-golden","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
],
"mergerule" : {
profile:["silk_top"],
profile:["silk_top","past_top"],
laser : {
tl_name: "drill($1)-($2)",
regs: ["(\\d+)-(\\d+)\\.drl$"]
......@@ -876,7 +878,7 @@
{
"valid": function(props){
var file = props.file;
return /\.gdo$|\.pho$|^line$|^ftdrill/ig.test(file.name)
return /\.gbr$|\.gdo$|\.pho$|^line$|^ftdrill/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_4"
......@@ -885,8 +887,8 @@
"valid": function(props){
var file = props.file;
return /.+\.ncd$/ig.test(file.name) || /.+\.d\d+$/ig.test(file.name)
},
"type": "Excellon2",
},
"type": "Excellon2",
"format": "Excellon2_5"
},
{
......@@ -905,19 +907,19 @@
{"orig_name" : ["osp-bottom\\.pho","solderpastebottom","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["sleg\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["soldermask1|soldermask-top","top-solder-mask\\.pho","soldermasktop","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["soldermask2|soldermask-bottom","bottom-solder-mask\\.pho","soldermaskbottom","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["top\\.pho","^top$","layertop"], "tl_name" : "top" },
{"orig_name" : ["^lay(\\d+)","layer(\\d+)\\.gdo","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bottom\\.pho$","^bottom$","layerbottom"], "tl_name" : "bottom" },
{"orig_name" : ["^drill(\\d+)-(\\d+)$","^d(\\d+)-(\\d+)$"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["topsoldermask|soldermask1|soldermask-top","top-solder-mask\\.pho","soldermasktop","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["bottomsoldermask|soldermask2|soldermask-bottom","bottom-solder-mask\\.pho","soldermaskbottom","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^m1\\.gbr$","top\\.pho","^top$","lay(?:er)?top"], "tl_name" : "top" },
{"orig_name" : ["^m(\\d+)\\.gbr$","^lay(\\d+)","layer(\\d+)\\.gdo","layer(?:_)?(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^mbot\\.gbr$","^bottom\\.pho$","^bottom$","lay(?:er)?bottom"], "tl_name" : "bottom" },
{"orig_name" : ["^dr(?:l)?(\\d+)-(\\d+)\\.drl","^drill(\\d+)-(\\d+)$","^d(\\d+)-(\\d+)$"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["^drill$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["fab\\.art|fab\\.gbr"], "tl_name" : "fab.art" },
{"orig_name" : ["pcb-set\\.gdo","^pcb-set\\.pho$","^pcb-set$","^array$"], "tl_name" : "array" },
{"orig_name" : ["^outline"], "tl_name" : "outline" },
{"orig_name" : ["au_mask-bottom\\.gdo","au_mask_bottom\\.gdo","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["au_mask-top\\.gdo","au_mask_top\\.gdo","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["au[_-]mask[_-]bot","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["au[_-]mask[_-]top","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["cavitytop","cavity_top"], "tl_name" : "cavity_top" },
{"orig_name" : ["cavitybottom","cavity_bot"], "tl_name" : "cavity_bot" },
],
......@@ -1057,7 +1059,30 @@
})
GEN.COM("tools_set,layer="+layer+",thickness=0,user_params=,slots=by_length")
}
})
});
// 特殊名称
var _matrix = GEN.getMatrix({job:job})
var _layers = Object.keys(_matrix)
var specialLayers = _layers.filter(function(v){return /^gnd.*\.art$|^in.?\.art$|^vcc\.art$/.test(v)})
if(specialLayers.length && specialLayers.indexOf("vcc.art") >= 0){
var _tmpdata = specialLayers.map(function(v) {
if(v == "gnd.art"){return {ori:v, newname:"gnd0.art"}}
if(/in/.test(v)){
return {ori:v, newname:"gnd" + (/in(\d+)\.art/.exec(v)[1]-0.5) + ".art"}
}
if(/vcc/.test(v)){
return {ori:v, newname:"gnd" + specialLayers.length + ".art"}
}
return {ori:v, newname:v}
})
_tmpdata.sort(function(a,b){return (/^gnd(.+)\.art$/.exec(a.newname)[1]) - (/gnd(.+)\.art/.exec(b.newname)[1])})
_tmpdata.forEach(function(item,v){
console.log(_.toString({job:job,layer:item.ori,new_name:'gnd' + (v+2) + ".art"}));
GEN.renameLayer({job:job,layer:item.ori,new_name:'pgp' + (v+2) + ".art"})
})
}
}
}
]
......
11
{"current_process_id":6451,"id":2623,"job_id":231,"msg":"No PN file was found in folder","task_title":"13520012_112:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:52:34\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2021-01-06 15:01:53","start_time":"2021-01-06 15:01:53"}}
{"current_process_id":6447,"id":2622,"job_id":230,"msg":"No PN file was found in folder","task_title":"13520011_111:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:52:22\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2021-01-06 15:01:43","start_time":"2021-01-06 15:01:43"}}
{"current_process_id":6443,"id":2621,"job_id":229,"msg":"No PN file was found in folder","task_title":"13520010_110:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:52:12\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2021-01-06 15:01:33","start_time":"2021-01-06 15:01:33"}}
{"current_process_id":5954,"id":2484,"job_id":233,"msg":"Data format is done","progress":60,"task_title":"13520014_114:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:52:49\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-23 15:16:07","start_time":"2020-12-23 15:16:02"}}
{"current_process_id":4947,"id":2214,"job_id":222,"msg":"Failed to change name(Name clashes)","progress":50,"task_title":"13520003_103:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:08:46\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 21:17:33","start_time":"2020-12-03 21:17:33"}}
{"current_process_id":4927,"id":2209,"job_id":234,"msg":"Failed to change name(Name clashes)","progress":50,"task_title":"13520015_115:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:52:56\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 20:50:32","start_time":"2020-12-03 20:50:32"}}
{"current_process_id":4669,"id":2143,"job_id":601,"msg":"分析线路","progress":85,"task_title":"20443343_1500:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-12-02 13:00:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-02 15:03:21","start_time":"2020-12-02 15:03:21"}}
{"current_process_id":4200,"id":1994,"job_id":519,"msg":"format start","progress":35,"task_title":"20438472_800:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-24 10:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-24 15:07:58","start_time":"2020-11-24 15:07:58"}}
{"current_process_id":873,"id":658,"job_id":99,"progress":0,"task_title":"20438797_1000:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-28 14:27:59\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-08-28 14:29:27","start_time":"2020-08-28 14:28:34"}}
{"current_process_id":852,"id":651,"job_id":95,"progress":0,"task_title":"20208888_100:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-26 14:50:29\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-08-26 14:51:17","start_time":"2020-08-26 14:51:17"}}
{"current_process_id":835,"id":644,"job_id":92,"progress":0,"task_title":"20438188_1200:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-26 10:30:47\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-08-26 10:34:17","start_time":"2020-08-26 10:34:17"}}
\ No newline at end of file
50
{"current_process_id":5747,"id":2418,"job_id":606,"msg":"analysis done","progress":100,"task_title":"20439712_2200:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-12-14 11:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-14 16:22:12","start_time":"2020-12-14 16:22:12"}}
{"current_process_id":4951,"id":2215,"job_id":221,"msg":"analysis done","progress":100,"task_title":"13520002_102:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:08:35\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 21:18:10","start_time":"2020-12-03 21:18:10"}}
{"current_process_id":4931,"id":2210,"job_id":232,"msg":"analysis done","progress":100,"task_title":"13520013_113:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:52:42\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 20:52:20","start_time":"2020-12-03 20:52:20"}}
{"current_process_id":4923,"id":2208,"job_id":237,"msg":"analysis done","progress":100,"task_title":"13520018_118:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:53:31\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 20:50:13","start_time":"2020-12-03 20:50:13"}}
{"current_process_id":4919,"id":2207,"job_id":240,"msg":"analysis done","progress":100,"task_title":"13520021_121:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:54:47\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 20:46:01","start_time":"2020-12-03 20:46:01"}}
{"current_process_id":4915,"id":2206,"job_id":245,"msg":"analysis done","progress":100,"task_title":"13520026_126:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 20:44:09","start_time":"2020-12-03 20:44:09"}}
{"current_process_id":4911,"id":2205,"job_id":251,"msg":"analysis done","progress":100,"task_title":"13520032_132:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:46:09\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 20:36:42","start_time":"2020-12-03 20:36:41"}}
{"current_process_id":4903,"id":2203,"job_id":254,"msg":"analysis done","progress":100,"task_title":"13520035_135:topcam","user_name":"Danphyer Yuan","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:46:39\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-03 19:33:31","start_time":"2020-12-03 19:33:31"}}
{"current_process_id":4665,"id":2141,"job_id":236,"msg":"运行线路分析checklist","progress":100,"task_title":"13520017_117:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:53:18\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-12-02 15:02:47","start_time":"2020-12-02 15:02:47"}}
{"current_process_id":4551,"id":2105,"job_id":597,"msg":"analysis export","progress":100,"task_title":"20439712_1800:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 14:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 14:06:21","start_time":"2020-11-27 14:06:21"}}
{"current_process_id":4495,"id":2091,"job_id":585,"msg":"analysis export","progress":100,"task_title":"13520050_150:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:51:07","start_time":"2020-11-27 10:51:07"}}
{"current_process_id":4491,"id":2090,"job_id":584,"msg":"analysis export","progress":100,"task_title":"13520049_149:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:50:00","start_time":"2020-11-27 10:50:00"}}
{"current_process_id":4487,"id":2089,"job_id":583,"msg":"analysis export","progress":100,"task_title":"13520039_139:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:46:21","start_time":"2020-11-27 10:46:21"}}
{"current_process_id":4483,"id":2088,"job_id":582,"msg":"analysis export","progress":100,"task_title":"13520038_138:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:42:20","start_time":"2020-11-27 10:42:20"}}
{"current_process_id":4479,"id":2087,"job_id":581,"msg":"analysis export","progress":100,"task_title":"13520037_137:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:38:27","start_time":"2020-11-27 10:38:27"}}
{"current_process_id":4475,"id":2086,"job_id":580,"msg":"analysis export","progress":100,"task_title":"13520036_136:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:31:33","start_time":"2020-11-27 10:31:32"}}
{"current_process_id":4471,"id":2085,"job_id":579,"msg":"analysis export","progress":100,"task_title":"13520048_148:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:18:56","start_time":"2020-11-27 10:18:56"}}
{"current_process_id":4467,"id":2084,"job_id":578,"msg":"analysis export","progress":100,"task_title":"13520047_147:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:06:25","start_time":"2020-11-27 10:06:24"}}
{"current_process_id":4463,"id":2083,"job_id":577,"msg":"analysis export","progress":100,"task_title":"13520046_146:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 10:02:53","start_time":"2020-11-27 10:02:52"}}
{"current_process_id":4459,"id":2082,"job_id":576,"msg":"analysis export","progress":100,"task_title":"13520045_145:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 09:57:37","start_time":"2020-11-27 09:57:37"}}
{"current_process_id":4455,"id":2081,"job_id":575,"msg":"analysis export","progress":100,"task_title":"13520044_144:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 09:44:52","start_time":"2020-11-27 09:44:52"}}
{"current_process_id":4451,"id":2080,"job_id":574,"msg":"analysis export","progress":100,"task_title":"13520043_143:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 09:39:17","start_time":"2020-11-27 09:39:17"}}
{"current_process_id":4447,"id":2079,"job_id":573,"msg":"analysis export","progress":100,"task_title":"13520042_142:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 09:34:55","start_time":"2020-11-27 09:34:55"}}
{"current_process_id":4443,"id":2078,"job_id":572,"msg":"analysis export","progress":100,"task_title":"13520041_141:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 09:30:21","start_time":"2020-11-27 09:30:21"}}
{"current_process_id":4439,"id":2077,"job_id":571,"msg":"analysis export","progress":100,"task_title":"13520040_140:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-27 09:25:08","start_time":"2020-11-27 09:25:08"}}
{"current_process_id":3555,"id":1736,"job_id":434,"msg":"analysis export","progress":100,"task_title":"20438188_3005:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-02 14:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-11-04 09:06:26","start_time":"2020-11-04 09:00:28"}}
{"current_process_id":3537,"id":1579,"job_id":253,"msg":"analysis export","progress":100,"task_title":"13520034_134:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:46:27\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 10:43:24","start_time":"2020-10-26 10:37:57"}}
{"current_process_id":3531,"id":1577,"job_id":252,"msg":"analysis export","progress":100,"task_title":"13520033_133:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:46:18\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 10:36:26","start_time":"2020-10-26 10:31:33"}}
{"current_process_id":3516,"id":1572,"job_id":250,"msg":"analysis export","progress":100,"task_title":"13520031_131:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:45:58\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 10:26:23","start_time":"2020-10-26 10:20:48"}}
{"current_process_id":3513,"id":1571,"job_id":248,"msg":"analysis export","progress":100,"task_title":"13520029_129:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:45:32\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 10:19:47","start_time":"2020-10-26 10:17:20"}}
{"current_process_id":3507,"id":1569,"job_id":247,"msg":"analysis export","progress":100,"task_title":"13520028_128:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:45:21\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 10:15:37","start_time":"2020-10-26 10:09:44"}}
{"current_process_id":3501,"id":1567,"job_id":246,"msg":"analysis export","progress":100,"task_title":"13520027_127:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:45:10\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 10:05:57","start_time":"2020-10-26 10:01:23"}}
{"current_process_id":3486,"id":1562,"job_id":244,"msg":"analysis export","progress":100,"task_title":"13520025_125:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:44:42\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 09:57:20","start_time":"2020-10-26 09:55:49"}}
{"current_process_id":3480,"id":1560,"job_id":243,"msg":"analysis export","progress":100,"task_title":"13520024_124:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:44:21\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 09:54:24","start_time":"2020-10-26 09:49:13"}}
{"current_process_id":3471,"id":1557,"job_id":242,"msg":"analysis export","progress":100,"task_title":"13520023_123:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 11:44:11\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 09:47:44","start_time":"2020-10-26 09:46:15"}}
{"current_process_id":3465,"id":1555,"job_id":241,"msg":"analysis export","progress":100,"task_title":"13520022_122:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:55:14\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 09:45:06","start_time":"2020-10-26 09:40:03"}}
{"current_process_id":3453,"id":1551,"job_id":239,"msg":"analysis export","progress":100,"task_title":"13520020_120:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:54:39\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-26 09:38:04","start_time":"2020-10-26 09:28:49"}}
{"current_process_id":3432,"id":1545,"job_id":235,"msg":"analysis export","progress":100,"task_title":"13520016_116:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:53:10\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 15:34:18","start_time":"2020-10-22 15:32:36"}}
{"current_process_id":3402,"id":1535,"job_id":228,"msg":"analysis export","progress":100,"task_title":"13520009_109:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:51:56\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 15:16:09","start_time":"2020-10-22 15:09:15"}}
{"current_process_id":3399,"id":1534,"job_id":227,"msg":"analysis export","progress":100,"task_title":"13520008_108:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:09:38\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 15:08:28","start_time":"2020-10-22 15:03:24"}}
{"current_process_id":3396,"id":1533,"job_id":226,"msg":"analysis export","progress":100,"task_title":"13520007_107:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:09:25\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 15:02:40","start_time":"2020-10-22 14:57:11"}}
{"current_process_id":3390,"id":1531,"job_id":225,"msg":"analysis export","progress":100,"task_title":"13520006_106:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:09:16\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 14:56:00","start_time":"2020-10-22 14:52:48"}}
{"current_process_id":3384,"id":1529,"job_id":224,"msg":"analysis export","progress":100,"task_title":"13520005_105:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:09:06\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 14:50:56","start_time":"2020-10-22 14:45:25"}}
{"current_process_id":3378,"id":1527,"job_id":223,"msg":"analysis export","progress":100,"task_title":"13520004_104:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:08:58\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 14:44:17","start_time":"2020-10-22 14:44:04"}}
{"current_process_id":3354,"id":1519,"job_id":220,"msg":"analysis export","progress":100,"task_title":"13520001_101:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:08:25\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 14:40:54","start_time":"2020-10-22 14:40:20"}}
{"current_process_id":3348,"id":1517,"job_id":219,"msg":"analysis export","progress":100,"task_title":"13520000_100:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:04:51\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-22 14:39:32","start_time":"2020-10-22 14:32:15"}}
{"current_process_id":3016,"id":1396,"job_id":238,"msg":"analysis export","progress":100,"task_title":"13520019_119:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-17 09:53:53\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-21 10:08:01","start_time":"2020-10-21 10:02:39"}}
{"current_process_id":2998,"id":1390,"job_id":198,"msg":"analysis export","progress":100,"task_title":"13520051_100:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:19:42\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-21 09:08:35","start_time":"2020-10-21 09:08:10"}}
{"current_process_id":2908,"id":1359,"job_id":416,"msg":"analysis export","progress":100,"task_title":"20443340_400:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-15 09:24:57\", \"create_user_id\": 3, \"create_user_name\": \"Hedy Sun\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-15 09:31:50","start_time":"2020-10-15 09:25:48"}}
{"current_process_id":2417,"id":1188,"job_id":323,"progress":100,"task_title":"20208888_200:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-28 15:09:30\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"1352"},"task_workflow":{"end_time":"2020-10-09 16:15:10","start_time":"2020-10-09 16:08:37"}}
\ No newline at end of file
19
{"current_process_id":6416,"id":2615,"job_id":157,"msg":"Failed to unzip the file","progress":10,"task_title":"21710046_146:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:56:32\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":6404,"id":2612,"job_id":108,"msg":"Failed to unzip the file","progress":10,"task_title":"21710001_101:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:14:45\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":6381,"id":2604,"job_id":76,"msg":"No PN file was found in folder","task_title":"20438188_1000:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-08-18 15:52:43\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":6379,"id":2603,"job_id":498,"msg":"Error-Signal layer analysis","progress":85,"task_title":"20444218_200:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-09 08:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 11:27:10","start_time":"2021-01-05 11:27:10"}}
{"current_process_id":6375,"id":2602,"job_id":611,"msg":"Error-Signal layer analysis","progress":85,"task_title":"21710053_153:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-12-22 13:11:04\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 11:23:47","start_time":"2021-01-05 11:23:47"}}
{"current_process_id":6367,"id":2600,"job_id":614,"msg":"Error-Signal layer analysis","progress":85,"task_title":"20442426_300:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2021-01-04 10:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 11:21:07","start_time":"2021-01-05 11:21:07"}}
{"current_process_id":6363,"id":2599,"job_id":512,"msg":"Error-Signal layer analysis","progress":85,"task_title":"20439650_600:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-19 13:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 11:20:49","start_time":"2021-01-05 11:20:49"}}
{"current_process_id":5648,"id":2393,"job_id":132,"msg":"Failed to unzip the file","progress":10,"task_title":"21710021_121:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:42:33\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":5632,"id":2389,"job_id":139,"msg":"Failed to unzip the file","progress":10,"task_title":"21710027_127:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:44:26\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":5628,"id":2388,"job_id":141,"msg":"Failed to unzip the file","progress":10,"task_title":"21710029_129:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:44:44\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":5624,"id":2387,"job_id":149,"msg":"Failed to unzip the file","progress":10,"task_title":"21710038_138:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:47:05\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":5604,"id":2382,"job_id":122,"msg":"Failed to unzip the file","progress":10,"task_title":"21710016_116:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:03:41\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{}}
{"current_process_id":3219,"id":1474,"job_id":427,"msg":"format start","progress":35,"task_title":"20438188_2222:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-22 12:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-22 13:10:48","start_time":"2020-10-22 13:10:48"}}
{"current_process_id":2429,"id":1192,"job_id":388,"progress":35,"task_title":"99009900_100:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-10 09:55:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-10 09:55:05","start_time":"2020-10-10 09:55:05"}}
{"current_process_id":876,"id":659,"job_id":100,"progress":0,"task_title":"20436001_600:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-31 13:12:50\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-08-31 13:14:31","start_time":"2020-08-31 13:13:19"}}
{"current_process_id":847,"id":648,"job_id":94,"progress":0,"task_title":"20435468_320:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-26 10:40:43\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-08-26 13:16:29","start_time":"2020-08-26 13:10:30"}}
{"current_process_id":826,"id":641,"job_id":88,"progress":0,"task_title":"20444218_100:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-24 15:23:23\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-08-24 15:34:12","start_time":"2020-08-24 15:24:51"}}
{"current_process_id":810,"id":633,"job_id":82,"progress":0,"task_title":"20443806_300:导入","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-21 10:29:58\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-08-24 12:58:18","start_time":"2020-08-24 12:58:17"}}
{"current_process_id":750,"id":609,"job_id":84,"progress":0,"task_title":"20438188_100:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-21 15:25:58\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-08-21 15:38:04","start_time":"2020-08-21 15:35:30"}}
\ No newline at end of file
61
{"current_process_id":6403,"id":2611,"job_id":617,"msg":"analysis done","progress":100,"task_title":"20444333_210:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2021-01-06 11:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-06 11:03:22","start_time":"2021-01-06 11:03:22"}}
{"current_process_id":6399,"id":2610,"job_id":616,"msg":"analysis done","progress":100,"task_title":"20438188_6000:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2021-01-06 10:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-06 10:47:12","start_time":"2021-01-06 10:47:12"}}
{"current_process_id":6355,"id":2597,"job_id":78,"msg":"analysis done","progress":100,"task_title":"20438188_1001:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-08-19 10:26:43\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 11:04:39","start_time":"2021-01-05 11:04:39"}}
{"current_process_id":6351,"id":2596,"job_id":436,"msg":"analysis done","progress":100,"task_title":"20438188_3006:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-02 16:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:59:15","start_time":"2021-01-05 10:59:15"}}
{"current_process_id":6347,"id":2595,"job_id":494,"msg":"analysis done","progress":100,"task_title":"20443929_300:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 14:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:51:08","start_time":"2021-01-05 10:51:08"}}
{"current_process_id":6339,"id":2593,"job_id":501,"msg":"analysis done","progress":100,"task_title":"20438188_3011:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:30:47","start_time":"2021-01-05 10:30:47"}}
{"current_process_id":6335,"id":2592,"job_id":502,"msg":"analysis done","progress":100,"task_title":"20438188_3012:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:28:45","start_time":"2021-01-05 10:28:44"}}
{"current_process_id":6331,"id":2591,"job_id":510,"msg":"analysis done","progress":100,"task_title":"20443926_200:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:19:07","start_time":"2021-01-05 10:19:07"}}
{"current_process_id":6327,"id":2590,"job_id":493,"msg":"analysis done","progress":100,"task_title":"20443742_200:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 14:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:14:21","start_time":"2021-01-05 10:14:21"}}
{"current_process_id":6319,"id":2588,"job_id":613,"msg":"analysis done","progress":100,"task_title":"21710000_100:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-12-28 15:57:45\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 10:06:48","start_time":"2021-01-05 10:06:48"}}
{"current_process_id":6307,"id":2585,"job_id":513,"msg":"analysis done","progress":100,"task_title":"20443755_300:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-19 13:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 09:59:22","start_time":"2021-01-05 09:59:22"}}
{"current_process_id":6303,"id":2584,"job_id":518,"msg":"analysis done","progress":100,"task_title":"20443742_300:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-23 09:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 09:54:52","start_time":"2021-01-05 09:54:52"}}
{"current_process_id":6299,"id":2583,"job_id":602,"msg":"analysis done","progress":100,"task_title":"20444333_200:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-12-02 14:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2021-01-05 09:49:52","start_time":"2021-01-05 09:49:52"}}
{"current_process_id":5812,"id":2435,"job_id":120,"msg":"analysis done","progress":100,"task_title":"21710014_114:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:03:07\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-22 11:15:53","start_time":"2020-12-22 11:15:53"}}
{"current_process_id":5739,"id":2416,"job_id":163,"msg":"analysis done","progress":100,"task_title":"21710052_152:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:58:29\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 12:02:36","start_time":"2020-12-08 12:02:36"}}
{"current_process_id":5735,"id":2415,"job_id":161,"msg":"analysis done","progress":100,"task_title":"21710051_151:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:57:53\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:58:58","start_time":"2020-12-08 11:58:58"}}
{"current_process_id":5731,"id":2414,"job_id":162,"msg":"analysis done","progress":100,"task_title":"21710050_150:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:58:10\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:57:16","start_time":"2020-12-08 11:57:16"}}
{"current_process_id":5727,"id":2413,"job_id":159,"msg":"analysis done","progress":100,"task_title":"21710048_148:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:57:32\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:55:29","start_time":"2020-12-08 11:55:29"}}
{"current_process_id":5723,"id":2412,"job_id":158,"msg":"analysis done","progress":100,"task_title":"21710047_147:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:57:12\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:47:07","start_time":"2020-12-08 11:47:07"}}
{"current_process_id":5719,"id":2411,"job_id":156,"msg":"analysis done","progress":100,"task_title":"21710045_145:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:56:18\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:45:22","start_time":"2020-12-08 11:45:22"}}
{"current_process_id":5715,"id":2410,"job_id":155,"msg":"analysis done","progress":100,"task_title":"21710044_144:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:55:59\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:39:17","start_time":"2020-12-08 11:39:17"}}
{"current_process_id":5711,"id":2409,"job_id":152,"msg":"analysis done","progress":100,"task_title":"21710041_141:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:47:43\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:38:45","start_time":"2020-12-08 11:38:45"}}
{"current_process_id":5707,"id":2408,"job_id":150,"msg":"analysis done","progress":100,"task_title":"21710039_139:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:47:22\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:38:15","start_time":"2020-12-08 11:38:15"}}
{"current_process_id":5703,"id":2407,"job_id":148,"msg":"analysis done","progress":100,"task_title":"21710037_137:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:46:50\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:36:11","start_time":"2020-12-08 11:36:11"}}
{"current_process_id":5699,"id":2405,"job_id":147,"msg":"analysis done","progress":100,"task_title":"21710035_135:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:46:31\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:32:49","start_time":"2020-12-08 11:32:49"}}
{"current_process_id":5695,"id":2404,"job_id":146,"msg":"analysis done","progress":100,"task_title":"21710034_134:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:46:10\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:29:21","start_time":"2020-12-08 11:29:21"}}
{"current_process_id":5691,"id":2403,"job_id":145,"msg":"analysis done","progress":100,"task_title":"21710033_133:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:46:01\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:24:43","start_time":"2020-12-08 11:24:43"}}
{"current_process_id":5687,"id":2402,"job_id":144,"msg":"analysis done","progress":100,"task_title":"21710032_132:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:45:46\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:21:32","start_time":"2020-12-08 11:21:32"}}
{"current_process_id":5683,"id":2401,"job_id":143,"msg":"analysis done","progress":100,"task_title":"21710031_131:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:45:29\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:17:01","start_time":"2020-12-08 11:17:01"}}
{"current_process_id":5679,"id":2400,"job_id":140,"msg":"analysis done","progress":100,"task_title":"21710028_128:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:44:34\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:09:52","start_time":"2020-12-08 11:09:52"}}
{"current_process_id":5675,"id":2399,"job_id":138,"msg":"analysis done","progress":100,"task_title":"21710026_126:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:44:15\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:08:28","start_time":"2020-12-08 11:08:28"}}
{"current_process_id":5671,"id":2398,"job_id":137,"msg":"analysis done","progress":100,"task_title":"21710025_125:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:44:03\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:05:20","start_time":"2020-12-08 11:05:20"}}
{"current_process_id":5667,"id":2397,"job_id":124,"msg":"analysis done","progress":100,"task_title":"21710018_118:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:04:07\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 11:00:38","start_time":"2020-12-08 11:00:38"}}
{"current_process_id":5663,"id":2396,"job_id":123,"msg":"analysis done","progress":100,"task_title":"21710017_117:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:03:55\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:51:12","start_time":"2020-12-08 10:51:12"}}
{"current_process_id":5659,"id":2395,"job_id":151,"msg":"analysis done","progress":100,"task_title":"21710040_140:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:47:35\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:50:44","start_time":"2020-12-08 10:50:44"}}
{"current_process_id":5655,"id":2394,"job_id":131,"msg":"analysis done","progress":100,"task_title":"21710020_120:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:42:20\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:49:43","start_time":"2020-12-08 10:49:43"}}
{"current_process_id":5647,"id":2392,"job_id":135,"msg":"analysis done","progress":100,"task_title":"21710022_122:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:43:36\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:42:20","start_time":"2020-12-08 10:42:20"}}
{"current_process_id":5643,"id":2391,"job_id":134,"msg":"analysis done","progress":100,"task_title":"21710023_123:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:43:24\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:40:25","start_time":"2020-12-08 10:40:25"}}
{"current_process_id":5639,"id":2390,"job_id":136,"msg":"analysis done","progress":100,"task_title":"21710024_124:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:43:49\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:38:32","start_time":"2020-12-08 10:38:32"}}
{"current_process_id":5619,"id":2385,"job_id":125,"msg":"analysis done","progress":100,"task_title":"21710019_119:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:04:18\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:32:41","start_time":"2020-12-08 10:32:41"}}
{"current_process_id":5615,"id":2384,"job_id":154,"msg":"analysis done","progress":100,"task_title":"21710043_143:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:55:47\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:30:35","start_time":"2020-12-08 10:30:35"}}
{"current_process_id":5611,"id":2383,"job_id":153,"msg":"analysis done","progress":100,"task_title":"21710042_142:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:55:36\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:29:52","start_time":"2020-12-08 10:29:52"}}
{"current_process_id":5599,"id":2380,"job_id":109,"msg":"analysis done","progress":100,"task_title":"21710002_102:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:16:10\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:19:46","start_time":"2020-12-08 10:19:46"}}
{"current_process_id":5595,"id":2379,"job_id":111,"msg":"analysis done","progress":100,"task_title":"21710004_104:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:16:42\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:15:02","start_time":"2020-12-08 10:15:02"}}
{"current_process_id":5591,"id":2378,"job_id":112,"msg":"analysis done","progress":100,"task_title":"21710006_106:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:18:08\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:13:59","start_time":"2020-12-08 10:13:59"}}
{"current_process_id":5587,"id":2377,"job_id":113,"msg":"analysis done","progress":100,"task_title":"21710007_107:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:18:35\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:08:21","start_time":"2020-12-08 10:08:21"}}
{"current_process_id":5583,"id":2376,"job_id":114,"msg":"analysis done","progress":100,"task_title":"21710008_108:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:18:53\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:07:19","start_time":"2020-12-08 10:07:19"}}
{"current_process_id":5579,"id":2375,"job_id":115,"msg":"analysis done","progress":100,"task_title":"21710009_109:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:19:06\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 10:02:45","start_time":"2020-12-08 10:02:45"}}
{"current_process_id":5571,"id":2373,"job_id":116,"msg":"analysis done","progress":100,"task_title":"21710010_110:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 14:19:46\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 09:53:52","start_time":"2020-12-08 09:53:52"}}
{"current_process_id":5567,"id":2372,"job_id":117,"msg":"analysis done","progress":100,"task_title":"21710011_111:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:02:01\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 09:48:13","start_time":"2020-12-08 09:48:13"}}
{"current_process_id":5563,"id":2371,"job_id":118,"msg":"analysis done","progress":100,"task_title":"21710012_112:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:02:29\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 09:47:38","start_time":"2020-12-08 09:47:38"}}
{"current_process_id":5559,"id":2370,"job_id":119,"msg":"analysis done","progress":100,"task_title":"21710013_113:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:02:56\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 09:46:02","start_time":"2020-12-08 09:46:02"}}
{"current_process_id":5551,"id":2368,"job_id":121,"msg":"analysis done","progress":100,"task_title":"21710015_115:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 16:03:29\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-12-08 09:40:56","start_time":"2020-12-08 09:40:56"}}
{"current_process_id":4159,"id":1986,"job_id":429,"msg":"analysis export","progress":100,"task_title":"20435934_901:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-10-22 14:05:30\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-11-16 16:56:54","start_time":"2020-11-16 16:52:46"}}
{"current_process_id":3175,"id":1458,"job_id":142,"msg":"analysis export","progress":100,"task_title":"21710030_130:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-14 09:45:00\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-22 12:43:15","start_time":"2020-10-22 12:42:51"}}
{"current_process_id":3166,"id":1455,"job_id":424,"msg":"analysis export","progress":100,"task_title":"20438188_1111:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-22 11:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-22 11:01:00","start_time":"2020-10-22 11:00:15"}}
{"current_process_id":3145,"id":1448,"job_id":418,"msg":"analysis export","progress":100,"task_title":"20438151_1300:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-19 09:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-22 09:25:33","start_time":"2020-10-22 09:10:50"}}
{"current_process_id":3142,"id":1447,"job_id":392,"msg":"analysis export","progress":100,"task_title":"20438188_3001:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-13 08:38:07\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-22 09:10:12","start_time":"2020-10-22 09:09:54"}}
{"current_process_id":3139,"id":1446,"job_id":393,"msg":"analysis export","progress":100,"task_title":"20438188_3002:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-13 14:18:26\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-10-22 09:09:37","start_time":"2020-10-22 09:07:51"}}
{"current_process_id":1730,"id":952,"job_id":270,"progress":100,"task_title":"20438188_1300:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-22 09:38:55\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-09-23 08:56:54","start_time":"2020-09-23 08:55:10"}}
{"current_process_id":1005,"id":708,"job_id":91,"progress":100,"task_title":"20438188_1100:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-08-26 10:15:29\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"2171"},"task_workflow":{"end_time":"2020-09-10 13:28:12","start_time":"2020-09-10 13:22:58"}}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
var db = require('topsin.database');
var _ = require("lodash")
var fs = require("fs");
db.addConnection({
databse_type:'pg',
database_host:'10.90.2.100:5432',
database_name:'TOPSTQ_ATS_V6',
database_user:'toplinker',
database_pwd:'TopLinker0510'
}, "MES_DB");
var result = db.query("MES_DB", function(query) {
return query.selectArrayMap({
table:'pdm_aimdfm_task',
field:['id','job_id','user_name',"current_process_id",'progress',"msg","task_title"],
order:'id DESC',
})
});
var jobid = {}
var okData = []
result.forEach(function(item){
// 过滤条件 jobid里面没有这个id job_id查询表pdm_job发现是正常料号// 顺便获取时间 task_title是topcam或者分析
if(!jobid[item.job_id]){
var job_info = db.query("MES_DB", function(query) {
return query.selectMap({
table:'pdm_job',
field:['customer_code','del_flag','action_data'],
where:{id:item.job_id}
});
});
if(job_info && job_info.del_flag!=1){
item.job_info = job_info;
var task_workflow = db.query("MES_DB", function(query) {
return query.selectMap({
table:'pdm_aimdfm_task_workprocess',
field:['start_time','end_time','action_data'],
where:{id:item.current_process_id}
});
});
item.task_workflow = task_workflow
okData.push(item)
jobid[item.job_id] = true;
}
}
})
console.log(result.length);
console.log(okData.length);
fs.writeFile("./test.js", _.toString(okData))
\ No newline at end of file
21
{"current_process_id":6465,"id":2627,"job_id":463,"msg":"Data format is done","progress":60,"task_title":"99990021_121:导入","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2021-01-06 15:56:18","start_time":"2021-01-06 15:56:16"}}
{"current_process_id":5940,"id":2480,"job_id":486,"msg":"Data format is done","progress":60,"task_title":"99990044_144:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 14:08:28","start_time":"2020-12-23 14:08:27"}}
{"current_process_id":5936,"id":2478,"job_id":475,"msg":"Data format is done","progress":60,"task_title":"99990033_133:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 12:56:18","start_time":"2020-12-23 12:56:17"}}
{"current_process_id":5930,"id":2475,"job_id":481,"msg":"Data format is done","progress":60,"task_title":"99990039_139:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:40:23","start_time":"2020-12-23 11:40:21"}}
{"current_process_id":5926,"id":2473,"job_id":483,"msg":"Data format is done","progress":60,"task_title":"99990041_141:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:38:14","start_time":"2020-12-23 11:38:12"}}
{"current_process_id":5924,"id":2472,"job_id":484,"msg":"Data format is done","progress":60,"task_title":"99990042_142:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:37:42","start_time":"2020-12-23 11:37:40"}}
{"current_process_id":5922,"id":2471,"job_id":489,"msg":"Data format is done","progress":60,"task_title":"99990047_147:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:36:37","start_time":"2020-12-23 11:36:36"}}
{"current_process_id":5920,"id":2470,"job_id":492,"msg":"Data format is done","progress":60,"task_title":"99990050_150:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:35:38","start_time":"2020-12-23 11:35:37"}}
{"current_process_id":5918,"id":2469,"job_id":599,"msg":"Data format is done","progress":60,"task_title":"99991001_1001:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-30 10:15:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:33:00","start_time":"2020-12-23 11:32:59"}}
{"current_process_id":5916,"id":2468,"job_id":605,"msg":"Data format is done","progress":60,"task_title":"99990006_120:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-12-03 13:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:30:15","start_time":"2020-12-23 11:30:14"}}
{"current_process_id":5914,"id":2467,"job_id":511,"msg":"Data format is done","progress":60,"task_title":"99990005_1051:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-12 10:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:27:54","start_time":"2020-12-23 11:27:53"}}
{"current_process_id":5912,"id":2466,"job_id":496,"msg":"Data format is done","progress":60,"task_title":"99990005_1050:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-05 13:48:14\", \"create_user_id\": 3, \"create_user_name\": \"Hedy Sun\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-23 11:26:45","start_time":"2020-12-23 11:26:43"}}
{"current_process_id":4861,"id":2192,"job_id":473,"msg":"No PN file was found in folder","task_title":"99990031_131:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":4857,"id":2191,"job_id":470,"msg":"No PN file was found in folder","task_title":"99990028_128:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":4849,"id":2189,"job_id":460,"msg":"No PN file was found in folder","task_title":"99990018_118:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":4845,"id":2188,"job_id":459,"msg":"No PN file was found in folder","task_title":"99990017_117:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":4841,"id":2187,"job_id":456,"msg":"No PN file was found in folder","task_title":"99990014_114:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":4837,"id":2186,"job_id":449,"msg":"No PN file was found in folder","task_title":"99990007_107:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":4650,"id":2138,"job_id":598,"msg":"开始导入","task_title":"99991000_1000:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-30 10:15:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{}}
{"current_process_id":3591,"id":1748,"job_id":446,"msg":"创建profile失败","progress":55,"task_title":"99990005_120:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:03:01","start_time":"2020-11-04 10:03:01"}}
{"current_process_id":879,"id":660,"job_id":101,"progress":0,"task_title":"20444372_100:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-09-01 16:19:59\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-09-01 16:27:07","start_time":"2020-09-01 16:27:07"}}
\ No newline at end of file
39
{"current_process_id":6463,"id":2626,"job_id":447,"msg":"analysis done","progress":100,"task_title":"99990006_106:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2021-01-06 15:25:25","start_time":"2021-01-06 15:25:24"}}
{"current_process_id":6459,"id":2625,"job_id":445,"msg":"analysis done","progress":100,"task_title":"99990005_105:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2021-01-06 15:24:25","start_time":"2021-01-06 15:24:25"}}
{"current_process_id":6455,"id":2624,"job_id":442,"msg":"analysis done","progress":100,"task_title":"99990002_102:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2021-01-06 15:23:28","start_time":"2021-01-06 15:23:28"}}
{"current_process_id":6439,"id":2620,"job_id":485,"msg":"analysis done","progress":100,"task_title":"99990043_143:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2021-01-06 15:01:30","start_time":"2021-01-06 15:01:30"}}
{"current_process_id":4815,"id":2180,"job_id":444,"msg":"analysis done","progress":100,"task_title":"99990004_104:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-03 15:33:18","start_time":"2020-12-03 15:33:17"}}
{"current_process_id":4649,"id":2137,"job_id":600,"msg":"运行线路分析checklist","progress":100,"task_title":"99991002_1002:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-12-01 11:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-12-01 16:16:00","start_time":"2020-12-01 16:16:00"}}
{"current_process_id":3810,"id":1821,"job_id":497,"msg":"analysis export","progress":100,"task_title":"99990009_1090:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-05 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-06 10:33:04","start_time":"2020-11-06 10:27:21"}}
{"current_process_id":3726,"id":1793,"job_id":491,"msg":"analysis export","progress":100,"task_title":"99990049_149:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 13:09:13","start_time":"2020-11-04 13:06:11"}}
{"current_process_id":3723,"id":1792,"job_id":490,"msg":"analysis export","progress":100,"task_title":"99990048_148:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 13:05:46","start_time":"2020-11-04 13:04:25"}}
{"current_process_id":3699,"id":1784,"job_id":482,"msg":"analysis export","progress":100,"task_title":"99990040_140:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:51:25","start_time":"2020-11-04 11:48:50"}}
{"current_process_id":3693,"id":1782,"job_id":480,"msg":"analysis export","progress":100,"task_title":"99990038_138:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:48:07","start_time":"2020-11-04 11:45:39"}}
{"current_process_id":3690,"id":1781,"job_id":479,"msg":"analysis export","progress":100,"task_title":"99990037_137:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:45:21","start_time":"2020-11-04 11:42:49"}}
{"current_process_id":3687,"id":1780,"job_id":478,"msg":"analysis export","progress":100,"task_title":"99990036_136:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:42:29","start_time":"2020-11-04 11:38:39"}}
{"current_process_id":3684,"id":1779,"job_id":477,"msg":"analysis export","progress":100,"task_title":"99990035_135:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:38:21","start_time":"2020-11-04 11:33:41"}}
{"current_process_id":3681,"id":1778,"job_id":476,"msg":"analysis export","progress":100,"task_title":"99990034_134:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:33:19","start_time":"2020-11-04 11:30:43"}}
{"current_process_id":3675,"id":1776,"job_id":474,"msg":"analysis export","progress":100,"task_title":"99990032_132:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:29:56","start_time":"2020-11-04 11:25:21"}}
{"current_process_id":3669,"id":1774,"job_id":472,"msg":"analysis export","progress":100,"task_title":"99990030_130:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:24:53","start_time":"2020-11-04 11:22:23"}}
{"current_process_id":3666,"id":1773,"job_id":471,"msg":"analysis export","progress":100,"task_title":"99990029_129:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:22:01","start_time":"2020-11-04 11:19:29"}}
{"current_process_id":3660,"id":1771,"job_id":469,"msg":"analysis export","progress":100,"task_title":"99990027_127:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:18:56","start_time":"2020-11-04 11:14:23"}}
{"current_process_id":3657,"id":1770,"job_id":468,"msg":"analysis export","progress":100,"task_title":"99990026_126:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:14:02","start_time":"2020-11-04 11:11:23"}}
{"current_process_id":3654,"id":1769,"job_id":467,"msg":"analysis export","progress":100,"task_title":"99990025_125:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:10:57","start_time":"2020-11-04 11:06:22"}}
{"current_process_id":3651,"id":1768,"job_id":466,"msg":"analysis export","progress":100,"task_title":"99990024_124:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:06:03","start_time":"2020-11-04 11:03:23"}}
{"current_process_id":3648,"id":1767,"job_id":465,"msg":"analysis export","progress":100,"task_title":"99990023_123:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 11:03:01","start_time":"2020-11-04 10:58:32"}}
{"current_process_id":3645,"id":1766,"job_id":464,"msg":"analysis export","progress":100,"task_title":"99990022_122:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:58:11","start_time":"2020-11-04 10:54:09"}}
{"current_process_id":3639,"id":1764,"job_id":462,"msg":"analysis export","progress":100,"task_title":"99990020_120:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:50:16","start_time":"2020-11-04 10:45:43"}}
{"current_process_id":3636,"id":1763,"job_id":461,"msg":"analysis export","progress":100,"task_title":"99990019_119:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:45:16","start_time":"2020-11-04 10:43:35"}}
{"current_process_id":3627,"id":1760,"job_id":458,"msg":"analysis export","progress":100,"task_title":"99990016_116:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:43:05","start_time":"2020-11-04 10:37:50"}}
{"current_process_id":3624,"id":1759,"job_id":457,"msg":"analysis export","progress":100,"task_title":"99990015_115:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:37:35","start_time":"2020-11-04 10:33:01"}}
{"current_process_id":3618,"id":1757,"job_id":455,"msg":"analysis export","progress":100,"task_title":"99990013_113:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:32:29","start_time":"2020-11-04 10:27:10"}}
{"current_process_id":3615,"id":1756,"job_id":454,"msg":"analysis export","progress":100,"task_title":"99990012_112:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:26:53","start_time":"2020-11-04 10:23:29"}}
{"current_process_id":3612,"id":1755,"job_id":453,"msg":"analysis export","progress":100,"task_title":"99990011_111:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:23:12","start_time":"2020-11-04 10:18:42"}}
{"current_process_id":3609,"id":1754,"job_id":452,"msg":"analysis export","progress":100,"task_title":"99990010_110:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:18:20","start_time":"2020-11-04 10:15:26"}}
{"current_process_id":3606,"id":1753,"job_id":451,"msg":"analysis export","progress":100,"task_title":"99990009_109:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:15:09","start_time":"2020-11-04 10:09:40"}}
{"current_process_id":3603,"id":1752,"job_id":450,"msg":"analysis export","progress":100,"task_title":"99990008_108:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 10:09:22","start_time":"2020-11-04 10:03:50"}}
{"current_process_id":3582,"id":1745,"job_id":443,"msg":"analysis export","progress":100,"task_title":"99990003_103:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 09:59:29","start_time":"2020-11-04 09:56:36"}}
{"current_process_id":3576,"id":1743,"job_id":441,"msg":"analysis export","progress":100,"task_title":"99990001_101:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 09:52:06","start_time":"2020-11-04 09:48:53"}}
{"current_process_id":3573,"id":1742,"job_id":440,"msg":"analysis export","progress":100,"task_title":"99990000_100:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-04 09:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 09:48:19","start_time":"2020-11-04 09:45:17"}}
{"current_process_id":3567,"id":1740,"job_id":438,"msg":"analysis export","progress":100,"task_title":"99990001_103:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-02 16:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 09:18:23","start_time":"2020-11-04 09:15:12"}}
{"current_process_id":3564,"id":1739,"job_id":437,"msg":"analysis export","progress":100,"task_title":"99990001_102:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-02 16:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"vivo"},"task_workflow":{"end_time":"2020-11-04 09:14:46","start_time":"2020-11-04 09:11:32"}}
\ No newline at end of file
17
{"current_process_id":6395,"id":2609,"job_id":507,"msg":"Data format is done","progress":60,"task_title":"20438188_4004:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2021-01-05 11:33:47","start_time":"2021-01-05 11:33:45"}}
{"current_process_id":6392,"id":2608,"job_id":499,"msg":"Failed to unzip the file","task_title":"20421762_500:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-10 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{}}
{"current_process_id":6391,"id":2607,"job_id":506,"msg":"Data format is done","progress":60,"task_title":"20438188_4003:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2021-01-05 11:33:18","start_time":"2021-01-05 11:33:17"}}
{"current_process_id":6389,"id":2606,"job_id":504,"msg":"Data format is done","progress":60,"task_title":"20438188_4001:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2021-01-05 11:33:02","start_time":"2021-01-05 11:33:00"}}
{"current_process_id":5994,"id":2501,"job_id":508,"msg":"Data format is done","progress":60,"task_title":"20438188_4005:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:48:10","start_time":"2020-12-23 16:48:09"}}
{"current_process_id":5992,"id":2500,"job_id":552,"msg":"Data format is done","progress":60,"task_title":"66660031_1311:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:47:21","start_time":"2020-12-23 16:47:19"}}
{"current_process_id":5990,"id":2499,"job_id":557,"msg":"Data format is done","progress":60,"task_title":"66660036_136:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:46:57","start_time":"2020-12-23 16:46:56"}}
{"current_process_id":5988,"id":2498,"job_id":570,"msg":"Data format is done","progress":60,"task_title":"66660050_150:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:45:49","start_time":"2020-12-23 16:45:47"}}
{"current_process_id":5986,"id":2497,"job_id":550,"msg":"Data format is done","progress":60,"task_title":"66660030_130:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:45:24","start_time":"2020-12-23 16:45:23"}}
{"current_process_id":5984,"id":2496,"job_id":546,"msg":"Data format is done","progress":60,"task_title":"66660026_126:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:43:13","start_time":"2020-12-23 16:43:12"}}
{"current_process_id":5982,"id":2495,"job_id":500,"msg":"Data format is done","progress":60,"task_title":"20421762_510:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-10 14:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:40:30","start_time":"2020-12-23 16:40:29"}}
{"current_process_id":5970,"id":2491,"job_id":529,"msg":"Data format is done","progress":60,"task_title":"66660008_108:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-23 16:37:15","start_time":"2020-12-23 16:37:14"}}
{"current_process_id":4343,"id":2042,"job_id":567,"msg":"format start","progress":35,"task_title":"66660047_147:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{}}
{"current_process_id":4329,"id":2037,"job_id":562,"msg":"format start","progress":35,"task_title":"66660041_141:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-24 16:44:58","start_time":"2020-11-24 16:44:58"}}
{"current_process_id":4203,"id":1995,"job_id":520,"msg":"format start","progress":35,"task_title":"20440196_300:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-24 10:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-24 15:08:08","start_time":"2020-11-24 15:08:08"}}
{"current_process_id":3920,"id":1864,"job_id":104,"task_title":"20440383_700:ats_test","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 11:00:39\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-10 10:23:36","start_time":"2020-11-10 10:23:36"}}
{"current_process_id":688,"id":588,"job_id":81,"progress":0,"task_title":"20160816195828_16h13-sa:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-20 13:52:44\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-08-20 14:47:55","start_time":"2020-08-20 14:47:55"}}
\ No newline at end of file
45
{"current_process_id":5547,"id":2367,"job_id":569,"msg":"analysis done","progress":100,"task_title":"66660049_149:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:28:25","start_time":"2020-12-07 18:28:25"}}
{"current_process_id":5543,"id":2366,"job_id":568,"msg":"analysis done","progress":100,"task_title":"66660048_148:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:24:46","start_time":"2020-12-07 18:24:46"}}
{"current_process_id":5539,"id":2365,"job_id":522,"msg":"analysis done","progress":100,"task_title":"66660046_146:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:22:49","start_time":"2020-12-07 18:22:49"}}
{"current_process_id":5535,"id":2364,"job_id":566,"msg":"analysis done","progress":100,"task_title":"66660045_145:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:19:09","start_time":"2020-12-07 18:19:09"}}
{"current_process_id":5531,"id":2363,"job_id":565,"msg":"analysis done","progress":100,"task_title":"66660044_144:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:16:28","start_time":"2020-12-07 18:16:28"}}
{"current_process_id":5527,"id":2362,"job_id":564,"msg":"analysis done","progress":100,"task_title":"66660043_143:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:12:24","start_time":"2020-12-07 18:12:24"}}
{"current_process_id":5523,"id":2361,"job_id":563,"msg":"analysis done","progress":100,"task_title":"66660042_142:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:10:57","start_time":"2020-12-07 18:10:57"}}
{"current_process_id":5519,"id":2360,"job_id":561,"msg":"analysis done","progress":100,"task_title":"66660040_140:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:07:10","start_time":"2020-12-07 18:07:10"}}
{"current_process_id":5515,"id":2359,"job_id":560,"msg":"analysis done","progress":100,"task_title":"66660039_139:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 18:03:14","start_time":"2020-12-07 18:03:14"}}
{"current_process_id":5511,"id":2358,"job_id":559,"msg":"analysis done","progress":100,"task_title":"66660038_138:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:59:11","start_time":"2020-12-07 17:59:11"}}
{"current_process_id":5507,"id":2357,"job_id":558,"msg":"analysis done","progress":100,"task_title":"66660037_137:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:55:19","start_time":"2020-12-07 17:55:19"}}
{"current_process_id":5499,"id":2355,"job_id":556,"msg":"analysis done","progress":100,"task_title":"66660035_135:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:50:21","start_time":"2020-12-07 17:50:21"}}
{"current_process_id":5495,"id":2354,"job_id":555,"msg":"analysis done","progress":100,"task_title":"66660034_134:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:46:55","start_time":"2020-12-07 17:46:55"}}
{"current_process_id":5491,"id":2353,"job_id":554,"msg":"analysis done","progress":100,"task_title":"66660033_133:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:45:24","start_time":"2020-12-07 17:45:24"}}
{"current_process_id":5487,"id":2352,"job_id":553,"msg":"analysis done","progress":100,"task_title":"66660032_132:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:42:07","start_time":"2020-12-07 17:42:07"}}
{"current_process_id":5483,"id":2351,"job_id":551,"msg":"analysis done","progress":100,"task_title":"66660031_131:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:40:35","start_time":"2020-12-07 17:40:35"}}
{"current_process_id":5479,"id":2350,"job_id":549,"msg":"analysis done","progress":100,"task_title":"66660029_129:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:37:21","start_time":"2020-12-07 17:37:21"}}
{"current_process_id":5475,"id":2349,"job_id":548,"msg":"analysis done","progress":100,"task_title":"66660028_128:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:33:14","start_time":"2020-12-07 17:33:14"}}
{"current_process_id":5471,"id":2348,"job_id":547,"msg":"analysis done","progress":100,"task_title":"66660027_127:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:32:49","start_time":"2020-12-07 17:32:49"}}
{"current_process_id":5463,"id":2346,"job_id":545,"msg":"analysis done","progress":100,"task_title":"66660025_125:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:28:12","start_time":"2020-12-07 17:28:12"}}
{"current_process_id":5459,"id":2345,"job_id":544,"msg":"analysis done","progress":100,"task_title":"66660024_124:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:26:44","start_time":"2020-12-07 17:26:44"}}
{"current_process_id":5455,"id":2344,"job_id":543,"msg":"analysis done","progress":100,"task_title":"66660023_123:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:22:08","start_time":"2020-12-07 17:22:08"}}
{"current_process_id":5451,"id":2343,"job_id":542,"msg":"analysis done","progress":100,"task_title":"66660022_122:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:18:46","start_time":"2020-12-07 17:18:46"}}
{"current_process_id":5447,"id":2342,"job_id":541,"msg":"analysis done","progress":100,"task_title":"66660021_121:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:15:26","start_time":"2020-12-07 17:15:26"}}
{"current_process_id":5443,"id":2341,"job_id":540,"msg":"analysis done","progress":100,"task_title":"66660020_120:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:12:13","start_time":"2020-12-07 17:12:13"}}
{"current_process_id":5439,"id":2340,"job_id":539,"msg":"analysis done","progress":100,"task_title":"66660019_119:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:07:56","start_time":"2020-12-07 17:07:56"}}
{"current_process_id":5435,"id":2339,"job_id":538,"msg":"analysis done","progress":100,"task_title":"66660018_118:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:07:23","start_time":"2020-12-07 17:07:23"}}
{"current_process_id":5431,"id":2338,"job_id":537,"msg":"analysis done","progress":100,"task_title":"66660017_117:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 17:03:05","start_time":"2020-12-07 17:03:05"}}
{"current_process_id":5427,"id":2337,"job_id":536,"msg":"analysis done","progress":100,"task_title":"66660016_116:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 16:59:44","start_time":"2020-12-07 16:59:44"}}
{"current_process_id":5423,"id":2336,"job_id":535,"msg":"analysis done","progress":100,"task_title":"66660015_115:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 16:56:31","start_time":"2020-12-07 16:56:31"}}
{"current_process_id":5271,"id":2297,"job_id":533,"msg":"analysis done","progress":100,"task_title":"66660012_112:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:16:00","start_time":"2020-12-07 09:16:00"}}
{"current_process_id":5267,"id":2296,"job_id":532,"msg":"analysis done","progress":100,"task_title":"66660011_111:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:14:21","start_time":"2020-12-07 09:14:21"}}
{"current_process_id":5263,"id":2295,"job_id":531,"msg":"analysis done","progress":100,"task_title":"66660010_110:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:12:40","start_time":"2020-12-07 09:12:40"}}
{"current_process_id":5259,"id":2294,"job_id":530,"msg":"analysis done","progress":100,"task_title":"66660009_109:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:11:01","start_time":"2020-12-07 09:11:01"}}
{"current_process_id":5255,"id":2293,"job_id":528,"msg":"analysis done","progress":100,"task_title":"66660005_105:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:09:20","start_time":"2020-12-07 09:09:20"}}
{"current_process_id":5251,"id":2292,"job_id":527,"msg":"analysis done","progress":100,"task_title":"66660004_104:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:07:39","start_time":"2020-12-07 09:07:39"}}
{"current_process_id":5247,"id":2291,"job_id":526,"msg":"analysis done","progress":100,"task_title":"66660003_103:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-07 09:04:45","start_time":"2020-12-07 09:04:45"}}
{"current_process_id":5179,"id":2274,"job_id":525,"msg":"analysis done","progress":100,"task_title":"66660002_102:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-04 16:33:49","start_time":"2020-12-04 16:33:49"}}
{"current_process_id":5175,"id":2273,"job_id":523,"msg":"analysis done","progress":100,"task_title":"66660000_100:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-04 16:30:42","start_time":"2020-12-04 16:30:42"}}
{"current_process_id":4681,"id":2146,"job_id":534,"msg":"analysis done","progress":100,"task_title":"66660014_114:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-03 10:26:46","start_time":"2020-12-03 10:26:46"}}
{"current_process_id":4575,"id":2112,"job_id":503,"msg":"analysis export","progress":100,"task_title":"20438188_4000:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-12-01 10:58:30","start_time":"2020-12-01 10:58:30"}}
{"current_process_id":4428,"id":2074,"job_id":524,"msg":"analysis export","progress":100,"task_title":"66660001_101:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-24 16:30:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-26 17:47:39","start_time":"2020-11-26 17:42:50"}}
{"current_process_id":4022,"id":1911,"job_id":505,"msg":"analysis export","progress":100,"task_title":"20438188_4002:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-11 14:31:07","start_time":"2020-11-11 14:30:40"}}
{"current_process_id":3561,"id":1735,"job_id":433,"msg":"analysis export","progress":100,"task_title":"20432426_800:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-02 13:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-04 09:11:10","start_time":"2020-11-04 09:09:12"}}
{"current_process_id":3558,"id":1734,"job_id":432,"msg":"analysis export","progress":100,"task_title":"20432426_810:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-02 13:17:45\", \"create_user_id\": 3, \"create_user_name\": \"Hedy Sun\"}","customer_code":"wistron"},"task_workflow":{"end_time":"2020-11-04 09:08:50","start_time":"2020-11-04 09:06:52"}}
\ No newline at end of file
37
{"current_process_id":6424,"id":2617,"job_id":589,"msg":"Failed to unzip the file","progress":10,"task_title":"88880045_145:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":6420,"id":2616,"job_id":195,"msg":"Failed to unzip the file","progress":10,"task_title":"88880031_131:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:19:15\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":6415,"id":2614,"job_id":190,"msg":"Failed to unzip the file","progress":10,"task_title":"88880026_126:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:18:13\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2021-01-06 14:33:23","start_time":"2021-01-06 14:33:23"}}
{"current_process_id":6408,"id":2613,"job_id":188,"msg":"Failed to unzip the file","progress":10,"task_title":"88880024_124:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:17:39\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":6371,"id":2601,"job_id":615,"msg":"Failed to create profile","progress":55,"task_title":"20445169_400:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2021-01-04 10:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2021-01-05 11:23:23","start_time":"2021-01-05 11:23:23"}}
{"current_process_id":5952,"id":2483,"job_id":608,"msg":"Creating Profile","progress":55,"task_title":"20444554_500:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-12-21 15:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-23 14:20:00","start_time":"2020-12-23 14:20:00"}}
{"current_process_id":5830,"id":2441,"job_id":593,"msg":"Error-SMD&BGA analysis","progress":80,"task_title":"88880049_149:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-22 12:14:18","start_time":"2020-12-22 12:14:18"}}
{"current_process_id":5826,"id":2440,"job_id":587,"msg":"Error-SMD&BGA analysis","progress":80,"task_title":"88880043_143:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-22 12:11:33","start_time":"2020-12-22 12:11:33"}}
{"current_process_id":5821,"id":2438,"job_id":197,"task_title":"88880033_133:分析","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:19:37\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-22 12:07:12","start_time":"2020-12-22 12:07:12"}}
{"current_process_id":5003,"id":2228,"job_id":596,"msg":"No PN was found in system","progress":35,"task_title":"88880052_152:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-03 21:21:39","start_time":"2020-12-03 21:21:39"}}
{"current_process_id":4999,"id":2227,"job_id":595,"msg":"No PN was found in system","progress":35,"task_title":"88880051_151:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-03 21:21:29","start_time":"2020-12-03 21:21:29"}}
{"current_process_id":4995,"id":2226,"job_id":594,"msg":"No PN was found in system","progress":35,"task_title":"88880050_150:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-03 21:21:19","start_time":"2020-12-03 21:21:19"}}
{"current_process_id":4958,"id":2217,"job_id":183,"msg":"Error-PN analysis","progress":70,"task_title":"88880019_119:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:16:44\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":4954,"id":2216,"job_id":180,"msg":"Error-PN analysis","progress":70,"task_title":"88880015_115:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:15:58\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":4190,"id":1991,"job_id":517,"msg":"format rename","progress":50,"task_title":"20446035_220:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-20 08:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":4185,"id":1989,"job_id":515,"msg":"format start","progress":35,"task_title":"20446035_200:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-20 08:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-24 14:46:38","start_time":"2020-11-24 14:46:38"}}
{"current_process_id":4052,"id":1933,"job_id":509,"msg":"analysis drill_stack","progress":70,"task_title":"20445829_100:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-11-11 14:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-13 09:28:37","start_time":"2020-11-13 09:28:37"}}
{"current_process_id":4013,"id":1908,"job_id":174,"msg":"analysis drill_stack","progress":70,"task_title":"88880010_110:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:13:35\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-11 14:29:58","start_time":"2020-11-11 14:29:57"}}
{"current_process_id":3862,"id":1840,"job_id":401,"msg":"import start","task_title":"88880006_120:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":3769,"id":1808,"job_id":400,"msg":"import start","task_title":"88880005_120:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":2809,"id":1321,"job_id":404,"msg":"format start","progress":35,"task_title":"88880009_120:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"start_time":"2020-11-06 12:59:08"}}
{"current_process_id":2802,"id":1320,"job_id":403,"msg":"format create profile","progress":55,"task_title":"88880008_120:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":2787,"id":1315,"job_id":398,"progress":55,"task_title":"88880003_120:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":2782,"id":1313,"job_id":396,"progress":35,"task_title":"88880001_120:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-14 13:47:58","start_time":"2020-10-14 13:47:58"}}
{"current_process_id":2776,"id":1311,"job_id":394,"progress":55,"task_title":"88880010_120:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:27:10\", \"create_user_id\": 3, \"create_user_name\": \"Hedy Sun\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-14 13:28:12","start_time":"2020-10-14 13:28:12"}}
{"current_process_id":2420,"id":1189,"job_id":385,"progress":55,"task_title":"20444453_200:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-10-10 09:23:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-10 09:23:20","start_time":"2020-10-10 09:23:20"}}
{"current_process_id":1203,"id":774,"job_id":106,"progress":65,"task_title":"20444453_210:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 13:50:51\", \"create_user_id\": 3, \"create_user_name\": \"Hedy\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-09-15 14:33:21","start_time":"2020-09-15 14:33:21"}}
{"current_process_id":1008,"id":709,"job_id":129,"progress":65,"task_title":"20444350_300:topcam","user_name":"Hedy","job_info":{"action_data":"{\"create_time\": \"2020-09-10 15:48:58\", \"create_user_id\": 3, \"create_user_name\": \"Hedy\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-09-10 15:49:28","start_time":"2020-09-10 15:49:28"}}
{"current_process_id":1002,"id":707,"job_id":126,"progress":65,"task_title":"20444405_200:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-08 11:18:15\", \"create_user_id\": 3, \"create_user_name\": \"Hedy\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-09-10 11:26:59","start_time":"2020-09-10 11:26:59"}}
{"current_process_id":994,"id":703,"job_id":128,"task_title":"20444405_300:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-09 08:23:30\", \"create_user_id\": 3, \"create_user_name\": \"Hedy\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-09-10 11:11:18","start_time":"2020-09-10 11:11:18"}}
{"current_process_id":992,"id":701,"job_id":85,"task_title":"20443948_100:导入","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-08-21 15:28:25\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-09-10 10:59:28","start_time":"2020-09-10 10:59:28"}}
{"current_process_id":981,"id":694,"job_id":127,"progress":0,"task_title":"20444405_210:topcam","user_name":"Hedy","job_info":{"action_data":"{\"create_time\": \"2020-09-08 14:19:02\", \"create_user_id\": 3, \"create_user_name\": \"Hedy\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-09-08 14:19:47","start_time":"2020-09-08 14:19:47"}}
{"current_process_id":973,"id":692,"job_id":107,"task_title":"20444453_220:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-09-04 13:53:30\", \"create_user_id\": 3, \"create_user_name\": \"Hedy\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":864,"id":655,"job_id":96,"progress":0,"task_title":"20442409_200:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-27 08:01:27\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-08-27 08:02:55","start_time":"2020-08-27 08:02:02"}}
{"current_process_id":859,"id":654,"job_id":90,"task_title":"20435468_300:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-26 10:07:01\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":836,"id":645,"job_id":93,"task_title":"20435468_310:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-26 10:35:04\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"yucca"},"task_workflow":{}}
{"current_process_id":741,"id":606,"job_id":79,"progress":0,"task_title":"20438188_1002:topcam","user_name":"管理员","job_info":{"action_data":"{\"create_time\": \"2020-08-19 11:08:19\", \"create_user_id\": 1, \"create_user_name\": \"管理员\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-08-20 17:06:38","start_time":"2020-08-20 17:06:29"}}
\ No newline at end of file
45
{"current_process_id":5804,"id":2433,"job_id":610,"msg":"analysis done","progress":100,"task_title":"20444554_510:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-12-22 09:00:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-22 09:03:25","start_time":"2020-12-22 09:03:25"}}
{"current_process_id":5071,"id":2246,"job_id":590,"msg":"analysis done","progress":100,"task_title":"88880046_146:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-04 13:29:05","start_time":"2020-12-04 13:29:05"}}
{"current_process_id":4739,"id":2161,"job_id":201,"msg":"analysis done","progress":100,"task_title":"88880036_136:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:20:36\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-03 12:56:06","start_time":"2020-12-03 12:56:06"}}
{"current_process_id":4705,"id":2152,"job_id":604,"msg":"analysis done","progress":100,"task_title":"88880003_103:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-12-03 11:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-03 11:47:10","start_time":"2020-12-03 11:47:10"}}
{"current_process_id":4701,"id":2151,"job_id":603,"msg":"analysis done","progress":100,"task_title":"88880002_102:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-12-03 11:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-12-03 11:45:30","start_time":"2020-12-03 11:45:30"}}
{"current_process_id":4531,"id":2100,"job_id":592,"msg":"analysis export","progress":100,"task_title":"88880048_148:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-27 10:56:49","start_time":"2020-11-27 10:56:49"}}
{"current_process_id":4527,"id":2099,"job_id":591,"msg":"analysis export","progress":100,"task_title":"88880047_147:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-27 10:56:22","start_time":"2020-11-27 10:56:22"}}
{"current_process_id":4515,"id":2096,"job_id":588,"msg":"analysis export","progress":100,"task_title":"88880044_144:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-27 10:55:19","start_time":"2020-11-27 10:55:19"}}
{"current_process_id":4507,"id":2094,"job_id":586,"msg":"analysis export","progress":100,"task_title":"88880042_142:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-27 10:45:02\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-27 10:53:54","start_time":"2020-11-27 10:53:54"}}
{"current_process_id":4499,"id":2092,"job_id":395,"msg":"analysis export","progress":100,"task_title":"88880000_120:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-14 13:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-27 10:51:36","start_time":"2020-11-27 10:51:36"}}
{"current_process_id":4188,"id":1990,"job_id":516,"msg":"analysis export","progress":100,"task_title":"20446035_210:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-20 08:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-24 14:48:18","start_time":"2020-11-24 14:46:54"}}
{"current_process_id":3570,"id":1741,"job_id":439,"msg":"analysis export","progress":100,"task_title":"88880034_122:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-02 16:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-04 09:19:33","start_time":"2020-11-04 09:18:34"}}
{"current_process_id":3552,"id":1737,"job_id":435,"msg":"analysis export","progress":100,"task_title":"88880034_121:topcam","user_name":"Sys","job_info":{"action_data":"{\"create_time\": \"2020-11-02 15:15:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-11-04 09:00:03","start_time":"2020-11-04 08:59:04"}}
{"current_process_id":3546,"id":1582,"job_id":205,"msg":"analysis export","progress":100,"task_title":"88880040_140:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:21:21\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 10:51:52","start_time":"2020-10-26 10:50:05"}}
{"current_process_id":3540,"id":1580,"job_id":204,"msg":"analysis export","progress":100,"task_title":"88880039_139:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:21:07\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 10:44:00","start_time":"2020-10-26 10:43:49"}}
{"current_process_id":3534,"id":1578,"job_id":203,"msg":"analysis export","progress":100,"task_title":"88880038_138:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:20:59\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 10:36:56","start_time":"2020-10-26 10:36:46"}}
{"current_process_id":3528,"id":1576,"job_id":202,"msg":"analysis export","progress":100,"task_title":"88880037_137:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:20:50\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 10:30:49","start_time":"2020-10-26 10:30:39"}}
{"current_process_id":3519,"id":1573,"job_id":200,"msg":"analysis export","progress":100,"task_title":"88880035_135:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:20:26\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 10:28:35","start_time":"2020-10-26 10:26:43"}}
{"current_process_id":3504,"id":1568,"job_id":196,"msg":"analysis export","progress":100,"task_title":"88880032_132:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:19:27\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 10:08:34","start_time":"2020-10-26 10:06:36"}}
{"current_process_id":3495,"id":1565,"job_id":194,"msg":"analysis export","progress":100,"task_title":"88880030_130:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:19:05\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:59:59","start_time":"2020-10-26 09:59:49"}}
{"current_process_id":3489,"id":1563,"job_id":193,"msg":"analysis export","progress":100,"task_title":"88880029_129:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:18:51\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:57:47","start_time":"2020-10-26 09:57:36"}}
{"current_process_id":3483,"id":1561,"job_id":192,"msg":"analysis export","progress":100,"task_title":"88880028_128:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:18:40\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:54:48","start_time":"2020-10-26 09:54:39"}}
{"current_process_id":3477,"id":1559,"job_id":191,"msg":"analysis export","progress":100,"task_title":"88880027_127:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:18:25\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:48:28","start_time":"2020-10-26 09:48:18"}}
{"current_process_id":3468,"id":1556,"job_id":189,"msg":"analysis export","progress":100,"task_title":"88880025_125:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:17:48\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:45:38","start_time":"2020-10-26 09:45:28"}}
{"current_process_id":3456,"id":1552,"job_id":187,"msg":"analysis export","progress":100,"task_title":"88880023_123:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:17:30\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:38:30","start_time":"2020-10-26 09:38:19"}}
{"current_process_id":3450,"id":1550,"job_id":186,"msg":"analysis export","progress":100,"task_title":"88880022_122:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:17:22\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:27:55","start_time":"2020-10-26 09:26:05"}}
{"current_process_id":3444,"id":1548,"job_id":185,"msg":"analysis export","progress":100,"task_title":"88880021_121:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:17:09\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-26 09:23:56","start_time":"2020-10-26 09:23:48"}}
{"current_process_id":3435,"id":1546,"job_id":184,"msg":"analysis export","progress":100,"task_title":"88880020_120:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:16:58\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 15:34:49","start_time":"2020-10-22 15:34:39"}}
{"current_process_id":3414,"id":1539,"job_id":181,"msg":"analysis export","progress":100,"task_title":"88880017_117:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:16:15\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 15:20:13","start_time":"2020-10-22 15:17:50"}}
{"current_process_id":3387,"id":1530,"job_id":179,"msg":"analysis export","progress":100,"task_title":"88880014_114:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:15:43\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:51:30","start_time":"2020-10-22 14:51:20"}}
{"current_process_id":3381,"id":1528,"job_id":177,"msg":"analysis export","progress":100,"task_title":"88880013_113:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:14:23\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:44:50","start_time":"2020-10-22 14:44:40"}}
{"current_process_id":3375,"id":1526,"job_id":176,"msg":"analysis export","progress":100,"task_title":"88880012_112:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:14:08\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:43:50","start_time":"2020-10-22 14:43:39"}}
{"current_process_id":3369,"id":1524,"job_id":175,"msg":"analysis export","progress":100,"task_title":"88880011_111:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:13:50\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:43:00","start_time":"2020-10-22 14:42:49"}}
{"current_process_id":3360,"id":1521,"job_id":173,"msg":"analysis export","progress":100,"task_title":"88880009_109:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:13:17\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:41:51","start_time":"2020-10-22 14:41:40"}}
{"current_process_id":3357,"id":1520,"job_id":172,"msg":"analysis export","progress":100,"task_title":"88880008_108:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:13:05\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:41:16","start_time":"2020-10-22 14:41:06"}}
{"current_process_id":3351,"id":1518,"job_id":171,"msg":"analysis export","progress":100,"task_title":"88880007_107:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:12:55\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:40:01","start_time":"2020-10-22 14:39:50"}}
{"current_process_id":3345,"id":1516,"job_id":170,"msg":"analysis export","progress":100,"task_title":"88880006_106:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:12:46\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:32:01","start_time":"2020-10-22 14:31:50"}}
{"current_process_id":3342,"id":1515,"job_id":169,"msg":"analysis export","progress":100,"task_title":"88880005_105:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:12:33\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:31:30","start_time":"2020-10-22 14:31:20"}}
{"current_process_id":3339,"id":1514,"job_id":419,"msg":"analysis export","progress":100,"task_title":"88880004_104:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-19 11:02:13\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:30:55","start_time":"2020-10-22 14:23:37"}}
{"current_process_id":3330,"id":1511,"job_id":165,"msg":"analysis export","progress":100,"task_title":"88880001_101:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 15:11:07\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:22:34","start_time":"2020-10-22 14:22:24"}}
{"current_process_id":3327,"id":1510,"job_id":218,"msg":"analysis export","progress":100,"task_title":"88880000_100:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-09-15 16:08:03\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-22 14:22:09","start_time":"2020-10-22 14:22:00"}}
{"current_process_id":2962,"id":1378,"job_id":415,"msg":"analysis export","progress":100,"task_title":"88880004_130:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-10-15 08:30:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-19 11:28:45","start_time":"2020-10-19 11:21:27"}}
{"current_process_id":2959,"id":1377,"job_id":414,"msg":"analysis export","progress":100,"task_title":"88880004_120:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-10-14 17:45:01\", \"create_user_id\": 1, \"create_user_name\": \"Sys\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-19 11:21:15","start_time":"2020-10-19 11:13:47"}}
{"current_process_id":2911,"id":1360,"job_id":417,"msg":"analysis export","progress":100,"task_title":"88880034_120:topcam","user_name":"Hedy Sun","job_info":{"action_data":"{\"create_time\": \"2020-10-15 10:42:42\", \"create_user_id\": 3, \"create_user_name\": \"Hedy Sun\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-15 10:44:17","start_time":"2020-10-15 10:43:17"}}
{"current_process_id":2836,"id":1332,"job_id":390,"msg":"analysis export","progress":100,"task_title":"20445169_100:topcam","user_name":"Admin","job_info":{"action_data":"{\"create_time\": \"2020-10-12 13:33:01\", \"create_user_id\": 1, \"create_user_name\": \"Admin\"}","customer_code":"yucca"},"task_workflow":{"end_time":"2020-10-14 15:26:47","start_time":"2020-10-14 15:26:28"}}
\ No newline at end of file
(function(){return {
"formats": {
"ODB": {},
"ODB_1": {
"comments": "",
"arrStep": "stp",
"isMerge": "yes"
},
"Gerber274x_1": {
"nf1": 3,
"nf2": 4,
"units": "mm",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Gerber274x_2": {
"nf1": 3,
"nf2": 5,
"units": "inch",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Gerber274x_3": {
"nf1": 3,
"nf2": 5,
"units": "mm",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Gerber274x_4": {
"nf1": 2,
"nf2": 3,
"units": "mm",
"zeroes": "none",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Gerber274x_5": {
"nf1": 2,
"nf2": 3,
"units": "mm",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon1_1":{
"nf1": 3,
"nf2": 0,
"units": "mm",
"zeroes": "leading",
"decimal": "yes",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_1": {
"nf1": 3,
"nf2": 5,
"units": "mm",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_2": {
"nf1": 2,
"nf2": 3,
"units": "inch",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_3": {
"nf1": 2,
"nf2": 5,
"units": "inch",
"zeroes": "trailing",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_4": {
"nf1": 2,
"nf2": 4,
"units": "inch",
"zeroes": "trailing",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_5": {
"nf1": 2,
"nf2": 3,
"units": "mm",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_6": {
"nf1": 3,
"nf2": 4,
"units": "mm",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "mm",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_7": {
"nf1": 3,
"nf2": 4,
"units": "inch",
"zeroes": "none",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_8": {
"nf1": 2,
"nf2": 5,
"units": "inch",
"zeroes": "none",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"Excellon2_9": {
"nf1": 3,
"nf2": 6,
"units": "inch",
"zeroes": "leading",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
},
"IPC356_1": {
"nf1": 2,
"nf2": 4,
"units": "inch",
"zeroes": "none",
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": "inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
},
"customer": {
"2171": {
"step": "cad",
"rules": [
{
"valid": function(props){
var file = props.file;
return /.+\.tgz$/ig.test(file.name)
},
"type": "ODB",
"format": "ODB"
},
{
"valid": function(props){
var file = props.file;
return /.+\.art$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_2",
"format_params": function(props){
var params = props.params
if(params.art_param){
var leading = params.art_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.art_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
var nf1,nf2
if(params.art_param.hasOwnProperty("FORMAT")){
var tmp = params.art_param["FORMAT"].split(".")
if(/\d+/ig.test(tmp[0])){nf1 = Number(tmp[0])}
if(/\d+/ig.test(tmp[1])){nf2 = Number(tmp[1])}
}
return {
"nf1": nf1 || 3,
"nf2": nf2 || 5,
"units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
},
{
"valid": function(props){
var file = props.file;
return /.+\.drl$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_1",
"format_params": function(props){
var params = props.params
if(params.nc_param){
var leading = params.nc_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.nc_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
return {
"nf1": params.nc_param["INTEGER_PLACES"]? Number(params.nc_param["INTEGER_PLACES"]) : 3,
"nf2": params.nc_param["DECIMAL_PLACES"]? Number(params.nc_param["DECIMAL_PLACES"]) : 5,
"units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": params.nc_param["COORDINATES"]? params.nc_param["COORDINATES"].toLowerCase() :"absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
},
{
"valid": function(props){
var file = props.file;
return /.+\.drd$/ig.test(file.name)
},
"type": "Excellon1",
"format": "Excellon1_1"
},
{
"valid": function(props){
var file = props.file;
return /.+\.phd$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_1"
}
],
"tl_name": [
{"orig_name" : ["top_enig","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["bot_enig","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["top_paste","^spt$","^past_top$"], "tl_name" : "past_top" },
{"orig_name" : ["bottom_paste","^spb$","^past_botm$"], "tl_name" : "past_botm" },
{"orig_name" : ["top_silk","^sst$","^silk_top$"], "tl_name" : "silk_top" },
{"orig_name" : ["bottom_silk","^ssb$","^silk_bot$"], "tl_name" : "silk_bot" },
{"orig_name" : ["top_solder","^smt$","^sm_top$"], "tl_name" : "sm_top" },
{"orig_name" : ["bottom_solder","^smb$","^sm_botm$"], "tl_name" : "sm_botm" },
{"orig_name" : "^top$", "tl_name" : "top" },
{"orig_name" : "^drill$", "tl_name" : "drill" },
{"orig_name" : ["^board_outline$","outline.art","^outline$"], "tl_name" : "outline" },
{"orig_name" : ["^rout$","\\.rou$"], "tl_name" : "rout" },
{"orig_name" : "^bottom$", "tl_name" : "bottom" },
{"orig_name" : ["^l(\\d+)","^isl(\\d+)$","^layer_(\\d+)$"], "tl_name" : "l_($1)"},
{"orig_name" : ["_isl(\\d+)_isl(\\d+)","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["_top_isl(\\d+)"], "tl_name" : "d_1-($1)"},
{"orig_name" : ["_isl(\\d+)_bottom"], "tl_name" : "d_($1)-($1+1)"}
]
},
"Yucca": {
"step": "cad",
"rules": [
{
"valid": function(props){
var file = props.file;
return /.+\.tgz$/ig.test(file.name)
},
"type": "ODB",
"format": "ODB"
},
{
"valid": function(props){
var file = props.file;
return /.+\.ipc$/ig.test(file.name)
},
"type": "IPC356",
"format": "IPC356_1"
},
{
"valid": function(props){
var file = props.file;
return /.+\.rou$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_3"
},
{
"valid": function(props){
var file = props.file;
return /.+\.art$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_2",
"format_params": function(props){
var params = props.params
if(params.art_param){
var leading = params.art_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.art_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
var nf1,nf2
if(params.art_param.hasOwnProperty("FORMAT")){
var tmp = params.art_param["FORMAT"].split(".")
if(/\d+/ig.test(tmp[0])){nf1 = Number(tmp[0])}
if(/\d+/ig.test(tmp[1])){nf2 = Number(tmp[1])}
}
return {
"nf1": nf1 || 3,
"nf2": nf2 || 5,
"units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
},
{
"valid": function(props){
var file = props.file;
return /.+\.drl$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_1",
"format_params": function(props){
var params = props.params
if(params.nc_param){
var leading = params.nc_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.nc_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
return {
"nf1": params.nc_param["INTEGER_PLACES"]? Number(params.nc_param["INTEGER_PLACES"]) : 3,
"nf2": params.nc_param["DECIMAL_PLACES"]? Number(params.nc_param["DECIMAL_PLACES"]) : 5,
"units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": params.nc_param["COORDINATES"]? params.nc_param["COORDINATES"].toLowerCase() :"absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
}
],
"tl_name": [
{"orig_name" : ["^pm_top","paste.pri","assytop\\.art","past_top","paste_top"], "tl_name" : "past_top" },
{"orig_name" : ["^pm_bot","paste.sec","assybot\\.art","past_bot","paste_bot"], "tl_name" : "past_botm" },
{"orig_name" : ["silk.pri","pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["silk.sec","sleg\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["mask.top\\.art","mask.pri\\.art","psm\\.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["mask.bot\\.art","mask.sec\\.art","ssm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["\\.l(\d+)$","^l(\\d+).*\\.art$","^0?(\\d+)_.*\\.art$","^l(\\d+)\\.art$","^0(\\d+).*ccp_ms","^s(\\d+)\\.art","lay(\\d+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bottom$","^bottom\\.art$"], "tl_name" : "bottom" },
{"orig_name" : ["\\.d(\\d+)-(\\d+)$","-(\\d+)-(\\d+)\\.drl$","(\\d+)-(\\d+)-laser\\.drl$","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["outline"], "tl_name" : "outline" },
{"orig_name" : ["^pst\\.art$","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["^sst\\.art$","bot-enig","enig_bot"], "tl_name" : "enig_bot" }
],
"mergerule" : {
profile:["past_top"]
},
"extra": [
{
"verification": function(info){
if(!info.type){return false}
return /gerber/ig.test(info.type)
},
"fn": function(props){
var fileInfo = props.fileInfo;
var step = props.step;
fileInfo.forEach(function(item){
var layer = item.file.name.toLowerCase().split(" ").join("-")
var path = item.file.path
var filectx = fs.readFile(path)
var tmp = filectx.match(/Holesize \d\. = [\d\.]+ Tolerance = [\S]+ [\S]+ [\S]+ Quantity = \d+\n/igm)
if(tmp && tmp.length) {
var res = tmp.map(function(v,i) {
var tmp2 = /Holesize \d\. = ([\d\.]+) Tolerance = ([\S]+) ([\S]+) ([\S]+) Quantity = \d+\n/igm.exec(v);
return {
size: tmp2[1],
tolerance: tmp2[2],
type: tmp2[3],
unit: tmp2[4],
row: i+1
}
})
// [{"size":"0.100300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM","row":1}]
GEN.units({type:"mm"})
var toolsInfo = GEN.getTool({job:job, step:step, layer:layer, units:"mm"})
GEN.COM("tools_show,layer="+layer)
// {"1":{"count":"01156","num":"1","type":"plated","min_tol":"0","max_tol":"0","finish_size":"1","drill_size":"1","slot_len":"0","type2":"standard","shape":"hole","bit":0}}
GEN.COM("tools_tab_reset")
var alltype = {
plated: "plate",
non_plated: "nplate",
laser: "via",
via: "via"
}
Object.keys(toolsInfo).forEach(function(row){
var info = toolsInfo[row];
var numberrow = row - 1;
var type = res[numberrow]? res[numberrow].type.toLowerCase() : info.type.toLowerCase();
var min_tol = res[numberrow]? Math.abs( res[numberrow].tolerance.split("/")[1] * 1000 ): info.min_tol;
var max_tol = res[numberrow]? Math.abs(res[numberrow].tolerance.split("/")[0] * 1000) : info.max_tol;
var drill_size = res[numberrow]? res[numberrow].size * 1000 : info.drill_size;
GEN.COM("tools_tab_add,num="+row+",shape="+info.shape+",type="+alltype[type]
+",min_tol="+min_tol+",max_tol="+max_tol+",bit=,finish_size="+drill_size+",drill_size="+drill_size);
})
GEN.COM("tools_set,layer="+layer+",thickness=0,user_params=,slots=by_length")
// {"layer":"gfp2_1216_lte_rl03_am_m1610201_r01-bl-2-3-laser.drl",
// "info":[{"size":"0.090300","tolerance":"+0.020000/-0.020000","type":"PLATED","unit":"MM","row":1}]}
}
})
}
}
]
},
"New_data": {
"step": "cad",
"rules": [
{
"valid": function(props){
var file = props.file;
return /.+\.tgz$/ig.test(file.name)
},
"type": "ODB",
"format": "ODB"
},
{
"valid": function(props){
var file = props.file;
return /.+\.art$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_2",
"format_params": function(props){
var params = props.params
if(params.art_param){
var leading = params.art_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.art_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
var nf1,nf2
if(params.art_param.hasOwnProperty("FORMAT")){
var tmp = params.art_param["FORMAT"].split(".")
if(/\d+/ig.test(tmp[0])){nf1 = Number(tmp[0])}
if(/\d+/ig.test(tmp[1])){nf2 = Number(tmp[1])}
}
return {
"nf1": nf1 || 3,
"nf2": nf2 || 5,
"units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
},
{
"valid": function(props){
var file = props.file;
return /.+\.drl$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_1",
"format_params": function(props){
var params = props.params
if(params.nc_param){
var leading = params.nc_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.nc_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
return {
"nf1": params.nc_param["INTEGER_PLACES"]? Number(params.nc_param["INTEGER_PLACES"]) : 3,
"nf2": params.nc_param["DECIMAL_PLACES"]? Number(params.nc_param["DECIMAL_PLACES"]) : 5,
"units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": params.nc_param["COORDINATES"]? params.nc_param["COORDINATES"].toLowerCase() :"absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
}
],
"tl_name": [
{"orig_name" : ["pasttop.art","^past_top$","top_solderpaste"], "tl_name" : "past_top" },
{"orig_name" : ["^silk_top\\.art$","pleg\\.art","^silk_top$","top_silkscreen"], "tl_name" : "silk_top" },
{"orig_name" : ["_r1\\.phd$","_r1\\.fph$","^smt\\.art$","soldtop.art","^sm_top$","top_soldermask"], "tl_name" : "sm_top" },
{"orig_name" : ["^top\\.art$","^top$"], "tl_name" : "top" },
{"orig_name" : ["_l(\\d+)\\.phd$","_l(\\d+)\\.fph$","^in_(\\d+)\\.art$","^l(\\d+)\\.art$","inner_(\\d+)\\.art","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bot\\.art$","^bottom\\.art","^bottom$"], "tl_name" : "bottom" },
{"orig_name" : ["_r\\d\\.phd$","_r\\d\\.fph$","^smb\\.art$","soldbotm.art","^sm_botm$","bot_soldermask"], "tl_name" : "sm_botm" },
{"orig_name" : ["^silk_bottom\\.art$","sleg\\.art","^silk_bot$","bot_silkscreen"], "tl_name" : "silk_bot" },
{"orig_name" : ["pastbotm\\.art","^past_botm$","bot_solderpaste"], "tl_name" : "past_botm" },
{"orig_name" : ["^nc_drill$","^drill$"], "tl_name" : "drill" },
{"orig_name" : "multipack\\.art", "tl_name" : "array" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : ["outline.art","^outline$"], "tl_name" : "outline" },
{"orig_name" : ["fab.art","fab"], "tl_name" : "fab" },
{"orig_name" : "top-enig", "tl_name" : "top-enig" },
{"orig_name" : "bot-enig", "tl_name" : "bot-enig" },
{"orig_name" : "fab_page2", "tl_name" : "fab_page2" },
{"orig_name" : ["_d(\\d)(\\d+)\\.drd","_d(\\d)(\\d+)\\.fdr","^d(\\d)(\\d+)\\.art$","(\\d+)-(\\d+)-laser\\.drl","d(\\d+)-(\\d+)"], "tl_name" : "d_($1)-($2)"}
]
},
"Wistron":{
"step": "cad",
"rules": [
{
"valid": function(props){
var file = props.file;
return /.+\.tgz$/ig.test(file.name)
},
"type": "ODB",
"format": "ODB"
},
{
"valid": function(props){
var file = props.file;
return /.+\.btd$/ig.test(file.name)
},
"type": "IPC356",
"format": "IPC356_1"
},
{
"valid": function(props){
var file = props.file;
return /.+\.ger$/ig.test(file.name) || /\.pho$|\.gdo$|\.bol$|\.gdo$|\.pma$|\.sma$|\.smb$|\.ssa$|\.ssb$/ig.test(file.name) ||
/.+\.l\d+$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_3"
},
{
"valid": function(props){
var file = props.file;
return /.+\.ncd$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_4"
},
{
"valid": function(props){
var file = props.file;
return /.+\.d\d+$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_6"
},
{
"valid": function(props){
var file = props.file;
return /.+\.art$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_3",
"format_params": function(props){
var params = props.params
if(params.art_param){
var leading = params.art_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.art_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
var nf1,nf2
if(params.art_param.hasOwnProperty("FORMAT")){
var tmp = params.art_param["FORMAT"].split(".")
if(/\d+/ig.test(tmp[0])){nf1 = Number(tmp[0])}
if(/\d+/ig.test(tmp[1])){nf2 = Number(tmp[1])}
}
return {
"nf1": nf1 || 3,
"nf2": nf2 || 5,
"units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "*",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.art_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": "absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
},
{
"valid": function(props){
var file = props.file;
return /.+\.drl$|\.rou$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_4",
"format_params": function(props){
var params = props.params
if (params.ncdrill && !params.nc_param){params.nc_param = params.ncdrill}
if(params.nc_param){
var leading = params.nc_param["SUPPRESS_LEAD_ZEROES"]
var trailing = params.nc_param["SUPPRESS_TRAIL_ZEROES"]
var zeroes = "none"
if(/yes/ig.test(leading)){
zeroes = "leading"
}
if(/yes/ig.test(trailing)){
zeroes = "trailing"
}
return {
"nf1": params.nc_param["INTEGER_PLACES"]? Number(params.nc_param["INTEGER_PLACES"]) : 3,
"nf2": params.nc_param["DECIMAL_PLACES"]? Number(params.nc_param["DECIMAL_PLACES"]) : 5,
"units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"zeroes": zeroes,
"decimal": "no",
"nf_comp": 0,
"break_sr": "yes",
"data_type": "ascii",
"separator": "nl",
"threshold": 200,
"drill_only": "no",
"multiplier": 1,
"resolution": 3,
"tool_units": /METRIC|MM/ig.test(params.nc_param["OUTPUT_UNITS"])? "mm" :"inch",
"coordinates": params.nc_param["COORDINATES"]? params.nc_param["COORDINATES"].toLowerCase() :"absolute",
"merge_by_rule": "no",
"signed_coords": "no",
"text_line_width": 0.0024
}
}
}
}
],
"tl_name": [
{"orig_name" : ["pastmasktop\\.pho|^pmt\\.art$","\\.pma$","SoldPasteTop\\.ger","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["pastmaskbot\\.pho|^pmb\\.art$","\\.pmb$","SoldPasteBot\\.ger","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["silkscreentop\\.pho|tsilk","^sst\\.art$","\\.ssa$","SilkScrnTop\\.ger","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["silkscreenbot\\.pho|bsilk","^ssb\\.art$","\\.ssb$","SilkScrnBot\\.ger","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["soldermasktop\\.pho|tmask","^smt\\.art$","\\.sma$","SoldMask1Top\\.ger","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["soldermaskbot\\.pho|bmask","^smb\\.art$","\\.smb$","SoldMask1Bot\\.ger","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["-top\\.pho$|^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["-(\\d+)l\\.pho$","^l(\\d+).*\\.art$","^v(\\d+)\\.art$","^g(\\d+)\\.art$","^s(\\d+)\\.art$","\\.l(\\d+)$","Copper(\\d+)\\.ger$","^layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["-bot\\.pho$|^bot\\.art$","^bottom$","^bottom.art$"], "tl_name" : "bottom" },
{"orig_name" : ["\\.d(\\d+)$"], "tl_name" : "d_($1)-($1+1)"},
{"orig_name" : ["thruHolePlated_(\\d+)_(\\d+)\\.ncd","(\\d+)-(\\d+)\\.drl$","^drill(\\d+)-(\\d+)$","^d_(\\d+)-(\\d+)$"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["ThruHoleNonPlated\\.ncd$","^drill$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["outline\\.art$","\\.bol$","PnlContourNonPlated\\.ger","^outline"], "tl_name" : "outline" },
{"orig_name" : ["^topside.golden\\.pho$","top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["^botside.golden\\.pho$","bot-enig","enig_bot"], "tl_name" : "enig_bot" },
],
"mergerule" : {
profile:["silk_top"]
}
},
"Vivo":{
"step": "cad",
"rules": [
{
"valid": function(props){
var file = props.file;
return /.+\.tgz$/ig.test(file.name)
},
"type": "ODB",
"format": "ODB"
},
{
"valid": function(props){
var file = props.file;
return /.+\.btd$|.+\.rou$/ig.test(file.name)
},
"type": "IPC356A",
"format": "IPC356A_1"
},
{
"valid": function(props){
var file = props.file;
return /\.gdo$|\.pho$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_4"
},
{
"valid": function(props){
var file = props.file;
return /.+\.ncd$/ig.test(file.name) || /.+\.d\d+$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_5"
},
{
"valid": function(props){
var file = props.file;
return /^ftdrill/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_4"
},
{
"valid": function(props){
var file = props.file;
return /.+\.drl/ig.test(file.name) || /.+\.d\d+$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_7"
}
],
"tl_name": [
{"orig_name" : ["osp-top\\.pho","solderpastetop","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["osp-bottom\\.pho","solderpastebottom","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["pleg\\.art","^ss_top","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["sleg\\.art","^ss_bot","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["soldermask1|soldermask-top","top-solder-mask\\.pho","soldermasktop","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["soldermask2|soldermask-bottom","bottom-solder-mask\\.pho","soldermaskbottom","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["top\\.pho","^top$","layertop"], "tl_name" : "top" },
{"orig_name" : ["^lay(\\d+)","layer(\\d+)\\.gdo","layer_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bottom\\.pho$","^bottom$","layerbottom"], "tl_name" : "bottom" },
{"orig_name" : ["^drill(\\d+)-(\\d+)$","^d(\\d+)-(\\d+)$"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["^drill$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["pcb-set\\.gdo","^pcb-set\\.pho$","^pcb-set$","^array$"], "tl_name" : "array" },
{"orig_name" : ["^outline"], "tl_name" : "outline" },
{"orig_name" : ["au_mask-bottom\\.gdo","au_mask_bottom\\.gdo","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["au_mask-top\\.gdo","au_mask_top\\.gdo","enig_bot"], "tl_name" : "enig_bot" },
{"orig_name" : ["cavitytop","cavity_top"], "tl_name" : "cavity_top" },
{"orig_name" : ["cavitybottom","cavity_bot"], "tl_name" : "cavity_bot" },
],
"mergerule" : {
drill_second: ["(\\d+)-(\\d+)\\.drl$"],
drill: [
{orig_rule:["contournonplated"],drill_type:"non_plated",shape:"slot"},
{orig_rule:["contourplated"],drill_type:"plated",shape:"slot"},
{orig_rule:["thruholenonplated"],drill_type:"non_plated",shape:"hole"},
{orig_rule:["thruholeplated"],drill_type:"plated",shape:"hole"},
],
profile:["enig_bot","past_top"],
laser : {
tl_name: "drill($1)-($2)",
regs: ["(\\d+)-(\\d+)plated\\.ncd$","(\\d+)-(\\d+)\\.drl$"]
}
}
},
"1352":{
"step": "cad",
"rules": [
{
"valid": function(props){
var file = props.file;
return /.+\.tgz$/ig.test(file.name)
},
"type": "ODB",
"format": "ODB"
},
{
"valid": function(props){
var file = props.file;
return /.+\.ipc$/ig.test(file.name)
},
"type": "IPC356",
"format": "IPC356_1"
},
{
"valid": function(props){
var file = props.file;
return /.+\.art$/ig.test(file.name)
},
"type": "Gerber274x",
"format": "Gerber274x_5"
},
{
"valid": function(props){
var file = props.file;
return /.+\.drl$/ig.test(file.name)
},
"type": "Excellon2",
"format": "Excellon2_8"
}
],
"tl_name": [
{"orig_name" : ["pasttop\\.art","past_top"], "tl_name" : "past_top" },
{"orig_name" : ["pastbotm\\.art","past_botm"], "tl_name" : "past_botm" },
{"orig_name" : ["^silktop\\.art$","silk_top"], "tl_name" : "silk_top" },
{"orig_name" : ["^silkbotm\\.art$","silk_bot"], "tl_name" : "silk_bot" },
{"orig_name" : ["soldtop.art","sm_top"], "tl_name" : "sm_top" },
{"orig_name" : ["soldbotm\\.art","sm_bot"], "tl_name" : "sm_botm" },
{"orig_name" : ["^top$","^top.art$"], "tl_name" : "top" },
{"orig_name" : ["^pgp(\\d+)\\.art$","^art(\\d+)\\.art$","^l_(\\d+)"], "tl_name" : "l_($1)"},
{"orig_name" : ["^bot\\.art$","^bottom$","^bottom.art$"], "tl_name" : "bottom" },
{"orig_name" : ["\\.d(\\d+)$"], "tl_name" : "d_($1)-($1+1)"},
{"orig_name" : ["^drill(\\d+)-(\\d+)$","^d_(\\d+)-(\\d+)$"], "tl_name" : "d_($1)-($2)"},
{"orig_name" : ["^drill$"], "tl_name" : "drill" },
{"orig_name" : ["\\.rou$","^rout$"], "tl_name" : "rout" },
{"orig_name" : "fab.art", "tl_name" : "fab.art" },
{"orig_name" : ["multipack.art","^array$"], "tl_name" : "array" },
{"orig_name" : ["\\.bol$","PnlContourNonPlated\\.ger","^outline"], "tl_name" : "outline" },
{"orig_name" : ["top-enig","enig_top"], "tl_name" : "enig_top" },
{"orig_name" : ["bot-enig","enig_bot"], "tl_name" : "enig_bot" },
],
"mergerule" : {
drill:["(\\d+)-(\\d+)\\.drl$"],
profile:["sm_top"],
laser : {
tl_name: "drill($1)-($2)",
regs: ["(\\d+)-(\\d+)\\.drl$"]
}
}
}
},
"data_format": [
{"tl_name":"enig_top" , "new_name":"enig_top" , "attr":{ "context":"board", "type":"document" }},
{"tl_name":"past_top" , "new_name":"past_top" , "attr":{ "context":"board", "type":"solder_paste" }},
{"tl_name":"silk_top" , "new_name":"silk_top" , "attr":{ "context":"board", "type":"silk_screen" }},
{"tl_name":"sm_top" , "new_name":"sm_top" , "attr":{ "context":"board", "type":"solder_mask" }},
{"tl_name":"^top$" , "new_name":"top" , "attr":{ "context":"board", "type":"signal" }},
{"tl_name":"l_(\\d+)","new_name":"l($1)" ,"attr":{"context":"board","type":"signal"}},
{"tl_name":"^bottom$","new_name":"bottom" ,"attr":{"context":"board","type":"signal"}},
{"tl_name":"sm_botm" , "new_name":"sm_botm" , "attr":{ "context":"board", "type":"solder_mask" }},
{"tl_name":"silk_bot" , "new_name":"silk_bot" , "attr":{ "context":"board", "type":"silk_screen" }},
{"tl_name":"past_botm" , "new_name":"past_botm" , "attr":{ "context":"board", "type":"solder_paste" }},
{"tl_name":"enig_bot" , "new_name":"enig_bot" , "attr":{ "context":"board", "type":"document" }},
{"tl_name":"d_(\\d+)-(\\d+)","new_name":"ftdrill($1)-($2)l" ,"attr":{"context":"board","type":"drill"}},
{"tl_name":"drill","new_name":"ftdrill" ,"attr":{"context":"board","type":"drill"}},
{"tl_name":"rout","new_name":"rout" ,"attr":{"context":"board","type":"rout"}},
{"tl_name":"outline","new_name":"outline" ,"attr":{"context":"board","type":"rout"}},
{"tl_name":"array","new_name":"array" ,"attr":{"context":"misc"}},
{"tl_name":"cavity_top","new_name":"cavity_top" ,"attr":{"context":"misc"}},
{"tl_name":"cavity_bot","new_name":"cavity_bot" ,"attr":{"context":"misc"}},
{"tl_name":"fab.art","new_name":"fab.art" ,"attr":{"context":"misc"}}
],
"delSameJob": "yes"
}})()
\ No newline at end of file
/*
NAME:
DESCRIPTION: 锣带输出;
DESCRIPTION: 检查外层是否有异常;
PARAMETER:
[
{
name : 'step',
title : 'step',
type : 'LineEdit',
property : {tool_tip : '目标step,默认是orig'},
},
{
name : 'auto_save',
title : '自动保存',
......@@ -24,7 +30,7 @@ PARAMETER:
HELP:
<html><body bgcolor="#DDECFE">
<font size="3" color="#003DB2"><p>功能简介</p></font>
<p> 锣带输出 </p>
<p> 检查外层是否有异常 </p>
<br>
<font size="3" color="#003DB2"><p>参数配置</p></font>
<p> step信息 </p>
......@@ -50,397 +56,114 @@ var Job = $.job || $.job_name;
var JobId = $.job_id;
var db = $.db || IKM.db
var PAR = {}
if ($.par) { PAR = $.par } else if ($.hasOwnProperty('script_parameter')){ PAR = JSON.parse($.script_parameter); }
if ($.par) {
PAR = $.par
} else if ($.hasOwnProperty('script_parameter')){
PAR = JSON.parse($.script_parameter);
}
if (mode === "aimdfm") {
var database = require("topsin.database");
database.addConnection($.conf.database_conf, "DFM");
var QDfm = database.query("DFM");
$.QDfm = QDfm;
if ($.conf.product_type == "aimdfm") {
QDfm.updateRow({ table: "pdm_aimdfm_task", data: { current_process_title: $.process_title }, where: { id: $.task_id } });
QDfm.updateRow({
table: "pdm_aimdfm_task",
data: {
current_process_title: $.process_title
},
where: { id: $.task_id }
});
}
}
require("topsin.genmath")
var genMath = new GenMath();
var gui = new NewGUI(GUI);
var Status = 'ok';
var resultData = [];
var par = PAR;
var default_par = {
auto_save: "No",
step:"orig",
units:"mm"
}
for(var key in default_par){ if (!par.hasOwnProperty(key) || par[key] == ""){ par[key] = default_par[key] }}
var job = Job;
var Step;
var rou_layer = [];
try {
if(_.isEmpty(job)){throw "参数job不存在"} else { job = job.toLowerCase() }
var par = PAR;
var default_par = {
step: "edit",
auto_save: "No",
}
for(var key in default_par){ // 设置默认属性
if (!par.hasOwnProperty(key) || par[key] == ""){
par[key] = default_par[key]
}
}
if(_.isEmpty(Job)){throw "参数Job不存在"}
var job = Job.toLowerCase()
if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"}
if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
if(mode == "aimdfm"){
if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" }
GEN.checkInout({job:job,mode:"out"});
}
var outLayers = getOutSideLayer({job:job})
// 选择工作step
var workstep = getWorkStep()
if(workstep.length == 0){throw "未找到工作step"}
workstep.forEach(function(step){
Step = step;
GEN.openStep({job:Job,name:step});
GEN.clearLayers();
GEN.affectedLayer( {mode:'all',affected:'no'} );
GEN.COM( "sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select,select_mode=standard,area_touching_mode=exclude");
GEN.zoomHome();
var steplist = GEN.getStepList({job:job})
steplist = steplist.filter(function(v){
var tmpreg = new RegExp(par.step,"ig")
return tmpreg.test(v)
})
steplist.forEach(function(step) {
GEN.openStep({job:job, name:step})
GEN.units({type:"mm"})
var layer = "gtl";
GEN.workLayer({name:layer,display_number:2,clear_before:'yes'})
var drl_layer = layer + "_drl"
if(GEN.isLayerExists({job:job, layer:drl_layer})){GEN.deleteLayer({job:job, layer:drl_layer})}
GEN.createLayer({job:job,layer:drl_layer,type:'drill'})
GEN.selCopyOther({dest:'layer_name',target_layer:drl_layer,invert:'no',dx:0,dy:0,size:0})
if(GEN.isChklistExists({job:job,step:step,chklist:'tmp_chk'})){
GEN.COM("chklist_delete,chklist=tmp_chk")
}
GEN.COM("chklist_create,chklist=tmp_chk")
GEN.COM("chklist_show,chklist=tmp_chk")
GEN.COM("chklist_single,action=valor_analysis_drill,show=yes")
GEN.COM("chklist_pclear")
GEN.COM("chklist_cupd,chklist=valor_analysis_drill,nact=1,params=((pp_drill_layer="+drl_layer+
")(pp_rout_distance=200)(pp_tests=Hole Separation)(pp_extra_hole_type=Pth\;Via)(pp_use_compensated_rout=Skeleton)),mode=regular")
GEN.COM("chklist_pcopy,chklist=valor_analysis_drill,nact=1")
GEN.COM("chklist_ppaste,chklist=tmp_chk,row=0")
GEN.COM("chklist_run,chklist=tmp_chk,nact=1,area=profile")
GEN.COM("chklist_close,chklist=valor_analysis_drill,mode=hide")
GEN.COM("chklist_close,chklist=tmp_chk,mode=hide")
GEN.deleteLayer({job:job, layer:drl_layer})
var meas = GEN.getCheckMeas({job:job,step:step,chklist:'tmp_chk',nact:1})
meas = ["touchh gtl_drl 1.302 mil r5.315 r5.512 SG 2.0707502 6.2600882 2.0695853 6.2595058 1 R",
"touchh gtl_drl 3.222 mil r5.315 r5.512 SG 2.0915237 6.2635829 2.0883541 6.2641619 1 R",
"closeh gtl_drl 11.209 mil r5.512 r5.512 SG 2.0849209 6.2506255 2.0876766 6.2614906 1 R",
"closeh gtl_drl 11.828 mil r5.315 r5.512 SG 2.0904016 6.2611739 2.085407 6.2504523 1 R",
"closeh gtl_drl 12.656 mil r5.315 r5.512 SG 2.0733393 6.2606873 2.0856692 6.2635406 1 Y",
"closeh gtl_drl 12.733 mil r5.315 r5.512 SG 2.0727262 6.2583112 2.0821941 6.2497969 1 Y",
"closeh gtl_drl 13.151 mil r5.512 r5.512 SG 2.0820787 6.2496599 2.0717499 6.2578 1 Y",
"closeh gtl_drl 13.826 mil r5.512 r5.512 SG 2.0722601 6.2601694 2.0856793 6.2634983 1 Y",
"closeh gtl_drl 15.75 mil r5.315 r5.315 SG 2.0733709 6.260529 2.0889031 6.263142 1 G",
"closeh gtl_drl 16.901 mil r5.315 r5.512 SG 2.088911 6.2630973 2.0722949 6.2600094 1 G",
"overlap_width gtl_drl 2.191 mil r5.315 r5.512 SG 2.0889095 6.2640604 2.0910652 6.2636666 1 R",
"overlap_width gtl_drl 4.111 mil r5.315 r5.512 SG 2.0683732 6.2588998 2.0720503 6.2607382 1 R"
]
meas = meas.filter(function(v){return /^touch/.test(v)})
if(meas.length){
meas.forEach(function(v){
var tmparr = v.split(" ")
GEN.COM("sel_net_feat,operation=select,x="+tmparr[7]+",y="+tmparr[8]+",use_ffilter=no")
if(GEN.getSelectCount() > 0){GEN.selDelete()}
})
}
})
})
// 保存
if(/yes/ig.test(par.auto_save)){GEN.checkInout({job:job,mode:"out"}); GEN.saveJob({ job: job });GEN.checkInout({job:job,mode:"in"});GEN.closeJob({job:job});} else {GEN.checkInout({job:job,mode:"in"})}
if(/yes/ig.test(par.auto_save)){
GEN.checkInout({job:job,mode:"out"}) // 结束保存料号 关闭料号
GEN.saveJob({ job: job });
GEN.checkInout({job:job,mode:"in"})
GEN.closeJob({job:job})
} else {
GEN.checkInout({job:job,mode:"in"})
}
if (mode === "aimdfm") {
$.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }});
if (GEN.hasError()) { Status = 'error';resultData.push({ type: "error", title: "GEN错误!", detail: [{ desc: _.join(GEN.STATUS, "\n") }] });
if (GEN.hasError()) {
Status = 'error';resultData.push({ type: "error", title: "GEN错误!", detail: [{ desc: _.join(GEN.STATUS, "\n") }] });
return {status: Status,result_data: resultData};
} else {
resultData.push({ type: "info", title: "操作完成, 请注意检查!" });
return {status: Status,result_data: resultData};
} else { resultData.push({ type: "info", title: "操作完成, 请注意检查!" }); return {status: Status,result_data: resultData}; }
}else { return "Done" }
}
}else {
return "Done"
}
} catch (e) {
IKM.msg(_.join(GEN.STATUS, "\n"));IKM.msg(e);Status = 'error';
IKM.msg(_.join(GEN.STATUS, "\n"))
IKM.msg(e)
Status = 'error';
resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]});
return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error";
}
function NewGUI (gui) {
this.msgBox = function(props){ // title type content button
props = props || {}
return gui.msgBox(props.title || "title",props.type || "info",props.content || "content",props.button || ["ok", "cancel"]);
}
this.selectFromTreeview = gui.selectFromTreeview
this.selectFile = function(props){ // "choose something", "*", true, "file", "/home/abby/fast_io"
props = props || {}
return gui.selectFile(props.title || "choose something",props.filter || "*",props.multiple || false, "file","");
}
this.selectSingle = function(props) {
props = props || {}
return gui.selectSingle({
"title": props.title || "select",
"list": props.list || [],
"default": props["default"] || "",
"columns": props.columns || 2,
"gen":props.gen || GEN
});
}
this.selectMultiple = function(props) {
props = props || {}
return gui.selectMultiple({
"title": props.title || "select",
"list": props.list || [],
"defaultvalue": props["defaultvalue"] || [""],
"defaultsize": props["defaultsize"] || [200, 100],
"columns": props.columns || 2,
"gen":props.gen || GEN
});
}
this.selectFromTable = gui.selectFromTable
this.snapScreen = gui.snapScreen
this.imageViewer = gui.imageViewer
this.inputBox = gui.inputBox
this.showForm = gui.showForm
this.lockUnlockLayer = function(props){
props = props || {}
var tmp = {}
if (props.matrix) {
for (var key in props.matrix) {
var item = props.matrix[key]
tmp[key] = {
row : item.row,
name : item.name
}
}
}
return gui.lockUnlockLayer({
title: props.title || "lockUnlockLayer",
layermatrix:props.layermatrix || tmp
})
}
this.passwordBox = function(props){
props = props || {}
return gui.passwordBox({title:props.title || "password", password:props.password || "1212"})
}
this.selectJobLayer = function (props) {
props = props || {}
return gui.selectJobLayer({
layertypelist: props.layertypelist || [
{name: "all", display_name: "all", filter: function(x) { return x }},
{name: "signal", display_name: "signal", filter: function(x) { return x["layer_type"] === "signal"; }},
{name: "power_ground", display_name: "power_ground", filter: function(x) { return x["layer_type"] === "power_ground"; }},
{name: "mixed", display_name: "mixed", filter: function(x) { return x["layer_type"] === "mixed"; }},
{name: "solder_mask", display_name: "solder_mask", filter: function(x) { return x["layer_type"] === "solder_mask"; }},
{name: "silk_screen", display_name: "silk_screen", filter: function(x) { return x["layer_type"] === "silk_screen"; }},
{name: "solder_paste", display_name: "solder_paste", filter: function(x) { return x["layer_type"] === "solder_paste"; }},
{name: "drill", display_name: "drill", filter: function(x) { return x["layer_type"] === "drill"; }},
{name: "rout", display_name: "rout", filter: function(x) { return x["layer_type"] === "rout"; }},
{name: "document", display_name: "document", filter: function(x) { return x["layer_type"] === "document"; }}
],
//defaultlayertype: "ha",
joblist: props.joblist || [],
defaultJob: props.defaultJob || [], // select by default
steplist: props.steplist || [],
// defaultstep: "step3",
showstep: props.showstep || true,
selectmode: props.selectmode || "multiple", // single/multiple
layermatrix: props.layermatrix || { },
defaultlayer: props.defaultlayer || []
})
}
}
function getWorkStep(props){
var steplists = GEN.getStepList({job:job});
if(steplists.length == 0){return "该料号没有step"}
var steps_tmp = steplists.filter(function(name){
var reg = new RegExp(par.step, "ig")
return reg.test(name)
})
if(steplists.length == 0){return "根据脚本参数过滤出来的step不存在,请检查资料或者脚本参数配置!"}
var workstep = gui.selectMultiple({
title: "请先择工作step",
size:[200,100],
defaultsize:[200,100],
list: steplists.map(function(v){ var tmp = {}; tmp[v] = v ;return tmp}),
defaultvalue: steps_tmp,
columns: 1,
gen: GEN
})
if(workstep.length == 0 ) {return "没有先择step"}
return workstep
}
// rou输出
function output_rou(par) {
var info = par.info;
// var PL = GEN.getProfileLimits({job:Job,step:Step,units:'mm'});
var nc_set = 'zda';
var machine = 'sintai_excellon';
var layers = [];
for (var key in info.layer_info) {
layers.push(info.layer_info[key])
}
layers.forEach(function(layer){
if(/^yes$/i.test(layer.output_flag)){
if(GEN.getNcsetsList({job:Job,step:Step,layer:layer.layer_name}).indexOf(nc_set) >= 0) {
GEN.COM('ncrset_delete',{name:nc_set});
}
GEN.COM('ncrset_cur',{job:Job,step:Step,layer:layer.layer_name,ncset:nc_set});
GEN.COM('ncr_set_machine',{machine:machine,thickness:0});
GEN.COM('ncr_register',{angle:0,mirror:layer.is_mirror,xoff:0,yoff:0,version:1,xorigin:0,yorigin:0,xscale:layer.scale_x,yscale:layer.scale_y,xscale_o:0,yscale_o:0});
GEN.COM('ncr_cre_rout');
GEN.COM('ncr_ncf_export',{dir:info.output_path,name:layer.layer_name});
GEN.COM('ncrset_delete',{name:nc_set});
function getOutSideLayer(props){
var job = props.job
var matrix = GEN.getMatrix({job:job})
var outLayers = [];
for (var key in matrix) {
var info = matrix[key]
if(info.context == "board" && info.layer_type == "signal" && /top|bot/.test(info.side) ){
outLayers.push({
name:key,
side:info.side,
info:info
})
}
})
}
// 用户配置参数
function confirm_gui(par) {
var rows={},n=0;
// var cam = IKM.get_jobinfo({jobname:Job,jobid:JobId,jobcategory:'work',jobinfo:'cam_serial_number',withspec:1});
var folder = 'rou';
var path = PAR.Outpath+"/"+folder;
fs.mkdir(path)
par.layers.forEach(function(layer){
n++;
rows[n] = {};
rows[n].sequence = n;
rows[n].layer_name = layer;
rows[n].scale_x = 1;
rows[n].scale_y = 1;
rows[n].output_flag = 'Yes';
rows[n].is_mirror = 'no';
})
rows.output_path = path;
// var v_data = GUI.showForm({
// title:"Rou输出参数确认单",
// defaultsize:[520,500],
// items: [
// {
// type : 'title',
// property:{
// title:'输出料号和名称',
// },
// n_columns:2,
// },
// {
// type : 'title',
// property:{
// title:'参数确认',
// },
// n_columns:8,
// },
// {
// name : 'layer_info',
// label :'参数确认',
// label_position : 'no',
// "class" : 'TL::Gtk2::TableFormPanel',
// expand : 1,
// property : {
// tl_columns :[
// {
// column_name:'layer_name',
// label:'层别名称',
// width:100,
// type:'label',
// },
// {
// column_name:'scale_x',
// label:'涨缩值X',
// width:80,
// type:'number',
// must_field:1,
// },
// {
// column_name:'scale_y',
// label:'涨缩值Y',
// width:80,
// type:'number',
// must_field:1,
// },
// {
// column_name:'output_flag',
// label:'是否输出',
// width:80,
// type:'radio',
// property:{
// tl_columns : 2,
// tl_list : [{'Yes' : '是'}, {'No':'否'}],
// },
// },
// {
// column_name:'is_mirror',
// label:'是否镜像',
// width:80,
// type:'radio',
// property:{
// tl_columns : 2,
// tl_list : [{'yes' : '是'}, {'no':'否'}],
// },
// }
// ],
// tl_rows:rows,
// },
// set_value_func : function(par){
// var data = par.value;
// Object.keys(data).forEach(function(row_name){
// Object.keys(data[row_name]).forEach(function(col_name){
// par.widget.set_value(row_name,col_name,data[row_name][col_name]);
// })
// })
// },
// get_value_func : function(par){return par.widget.get_all_value();},
// },
// {
// type : 'title',
// property:{
// title:'输出设置',
// },
// n_columns:1,
// },
// {
// name : 'username',
// label : '输出者:',
// type : 'string',
// value:GEN.getUserName(),
// width:100,
// must_field:1,
// },
// {
// name : 'output_path',
// label : '输出路径:',
// type : 'string',
// value:path,
// width:100,
// must_field:1,
// property : {
// editable:0,
// },
// buttons : [
// {
// name:'btn1',label:'选择路径',stock:'gtk-add',
// command:function(par){
// var folder = GUI.select_file({title:'选择路径',type:'select-folder',defaultdir:PAR.Outpath});
// if(!folder){return}
// p.formpanel.set_value('output_path', folder);
// }
// },
// ],
// },
// ]
// });
return rows;
}
// 文件导入设置
function input_layers(par) {
var info = par.info;
var layers = [];
for (var key in info.layer_info) {
layers.push(info.layer_info[key])
}
layers.forEach(function(lyr){
if(/yes/i.test(lyr.output_flag)){
var name = info.output_path+'/'+lyr.layer_name;
var layer= lyr.layer_name.toLowerCase();
GEN.COM("input_manual_reset");
GEN.COM("input_manual_set,path="+name+",job="+par.job+",step="+par.step+
",format=Excellon2,data_type=ascii,units=mm,coordinates=absolute,zeroes=none,nf1=3,nf2=3,decimal=no,separator=nl,tool_units=mm,layer="+layer
+",wheel=,wheel_template=,nf_comp=0,multiplier=1,text_line_width=0.0024,signed_coords=no,break_sr=yes,drill_only=no,merge_by_rule=no,threshold=200,resolution=3");
GEN.COM("input_manual,script_path=");
GEN.COM("matrix_layer_context,job="+par.job+",matrix=matrix,layer="+layer+",context=misc");
}
})
return outLayers
}
\ No newline at end of file
......@@ -30,7 +30,7 @@ PARAMETER:
HELP:
<html><body bgcolor="#DDECFE">
<font size="3" color="#003DB2"><p>功能简介</p></font>
<p> 标题 </p>
<p> 标题 </ p>
<br>
<font size="3" color="#003DB2"><p>参数配置</p></font>
<p> step信息 </p>
......@@ -70,7 +70,7 @@ var Status = 'ok';
var resultData = [];
var par = PAR;
var default_par = {
step: "orig",
step: "cad",
auto_save: "No",
units:"mm"
}
......@@ -81,26 +81,38 @@ try {
if(!GEN.isJobExists({job:job})){throw "料号"+job+"不存在"}
if(!GEN.isJobOpen({job:job})){ GEN.openJob({job:job}) }
if(mode == "aimdfm"){ if(GEN.checkInout({job:job,mode:"test"}) != 0){ throw "the job check" } else { GEN.checkInout({job:job,mode:"out"}) } }
var stepList = GEN.getStepList({job:job})
stepList = stepList.filter(function(step){
var reg = new RegExp(par.step,"ig")
return reg.test(step)
})
GEN.PAUSE("Ok")
IKM.msg("Ok")
GEN.openStep({job:job,name:"cad"})
var matrix = GEN.getMatrix({job:job})
exportInfo("getMatrix"); // 获取matrix
GEN.INFO({entity_type:'matrix', entity_path:job+'/matrix', data_type:'row', parameters:'name'});
exportInfo({matrix:Object.keys(matrix),infores: GEN.INFO_RESULT});
// 保存
// 保存
if(/yes/ig.test(par.auto_save)){GEN.checkInout({job:job,mode:"out"}); GEN.saveJob({ job: job });GEN.checkInout({job:job,mode:"in"});GEN.closeJob({job:job});} else {GEN.checkInout({job:job,mode:"in"})}
if (mode === "aimdfm") {
$.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 33.33},where: { id: $.task_id }});
$.QDfm.updateRow({table: "pdm_aimdfm_task",data: {progress: 100},where: { id: $.task_id }});
if (GEN.hasError()) { Status = 'error';resultData.push({ type: "error", title: "GEN错误!", detail: [{ desc: _.join(GEN.STATUS, "\n") }] });
return {status: Status,result_data: resultData};
} else { resultData.push({ type: "info", title: "操作完成, 请注意检查!" }); return {status: Status,result_data: resultData}; }
}else { return "Done" }
} catch (e) {
GEN.COM("disp_on")
GEN.COM("origin_on")
GEN.COM("checkin_closed_job,job="+job);
IKM.msg(_.join(GEN.STATUS, "\n"));IKM.msg(e);Status = 'error';
resultData.push({type: "error", title: "脚本执行出错!", detail: [{desc: _.toString(e)}]});
return (mode === "aimdfm") ? {status: Status, result_data: resultData} : "Error";
}
function exportInfo(info){
fs.writeFile("/home/toplinker/samba/Test_Scott/tmp", _.toString(info))
}
\ No newline at end of file
......@@ -11,6 +11,14 @@ var JobId = $.job_id;
try {
var _matrix = GEN.getMatrix({job:job})
var _layers = Object.keys(_matrix)
var specialLayers = _layers.filter(function(v){return /^gnd\d?\\.art$|^in\d?\\.art$|^vcc\\.art$/.test(v)})
var _tmpdata = tmp(specialLayers)
_tmpdata.forEach(function(item,v){
GEN.renameLayer({job:job,layer:item.layer,new_name:'gnd' + (v+2) + ".art"})
})
return "Done"
} catch (e) {
return "Error"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment