Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
Scott
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Scott Sun
Scott
Commits
79cbbdc2
Commit
79cbbdc2
authored
Apr 24, 2020
by
Scott Sun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s
parent
ba8d156b
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
578 additions
and
409 deletions
+578
-409
ATS_AIM_customer_data_analysis.js
ats/analysis/ATS_AIM_customer_data_analysis.js
+487
-117
ATS_AIM_data_input.js
ats/input/ATS_AIM_data_input.js
+13
-18
ATS_AIM_data_format.js
ats/rename/ATS_AIM_data_format.js
+4
-26
config_ats.js
config_ats.js
+12
-14
ATS_AIM_input_data copy.js
test/ATS_AIM_input_data copy.js
+1
-1
mytest.js
test/mytest.js
+2
-231
test.js
test/test.js
+59
-2
No files found.
ats/analysis/ATS_AIM_customer_data_analysis.js
View file @
79cbbdc2
This diff is collapsed.
Click to expand it.
ats/input/ATS_AIM_data_input.js
View file @
79cbbdc2
...
...
@@ -5,21 +5,6 @@ NAME:
DESCRIPTION: ;
PARAMETER:
[
{
name : 'path',
title : '资料路径',
type : 'LineEdit',
property : {tool_tip : '存放所有料号的文件夹路径,不需要进入到料号文件夹内'},
},
{
name : 'customer',
title : '客户配置',
type : 'ComboBox',
property : {
item_list:['customer_1','customer_2','new_data'],
tool_tip:'客户代码'
}
},
{
name : 'db',
title : '料号db',
...
...
@@ -86,8 +71,15 @@ if ($.hasOwnProperty('script_parameter')){
try
{
var
par
=
PAR
;
if
(
!
par
.
hasOwnProperty
(
"customer"
)
||
par
.
customer
==
""
){
throw
"未填写配置"
};
if
(
!
par
.
hasOwnProperty
(
"path"
)
||
par
.
path
==
""
){
throw
"未填写路径"
};
var
db_path
=
db
.
query
(
""
,
function
(
q
){
return
q
.
selectValue
({
table
:
'pub_conf'
,
field
:
'text_data'
,
where
:{
path
:
"quote-data-upload"
}
})
});
if
(
_
.
isEmpty
(
db_path
)){
throw
"quote-data-upload error"
}
par
.
path
=
db_path
;
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
console
.
log
(
"========================cfg"
);
par
.
config_path
=
"cam/input_data"
...
...
@@ -103,6 +95,7 @@ try {
where
:{
id
:
JobId
}
})
});
if
(
_
.
isEmpty
(
db_customer
)){
throw
"customer error"
}
if
(
db_customer
&&
!
(
/^done$/ig
.
test
(
db_customer
))
&&
db_customer
!=
""
){
par
.
customer
=
db_customer
}
...
...
@@ -127,7 +120,9 @@ try {
custCfg
.
db
=
par
.
db
||
custCfg
.
db
var
step
=
custCfg
.
step
.
toLowerCase
()
// 获取路径下文件信息
var
path
=
par
.
path
||
custCfg
.
path
var
path
=
JSON
.
parse
(
par
.
path
).
path
console
.
log
(
"=============>path:"
+
path
)
if
(
!
fs
.
exists
(
path
)){
throw
"path error"
}
var
pathInfo
=
fs
.
listDir
(
path
,
1
)
// 判断存不存在料号文件
var
jobFile
=
pathInfo
.
filter
(
function
(
v
){
return
v
.
baseName
.
toLowerCase
()
==
job
})
...
...
ats/rename/ATS_AIM_data_format.js
View file @
79cbbdc2
...
...
@@ -3,15 +3,6 @@ NAME:
DESCRIPTION: ;
PARAMETER:
[
{
name : 'customer',
title : '客户配置',
type : 'ComboBox',
property : {
item_list:['customer_1','customer_2','new_data'],
tool_tip:'客户代码'
}
},
{
name : 'config_path',
title : '配置地址',
...
...
@@ -70,7 +61,6 @@ if ($.hasOwnProperty('script_parameter')){
try
{
var
mode
=
"use"
// develop
var
par
=
PAR
;
if
(
!
par
.
hasOwnProperty
(
"customer"
)
||
par
.
customer
==
""
){
throw
"未填写配置"
};
if
(
!
par
.
hasOwnProperty
(
"config_path"
)
||
par
.
config_path
==
""
){
console
.
log
(
"========================cfg"
);
par
.
config_path
=
"cam/input_data"
...
...
@@ -82,6 +72,7 @@ try {
where
:{
id
:
JobId
}
})
});
if
(
_
.
isEmpty
(
db_customer
)){
throw
"customer error"
}
if
(
db_customer
&&
!
(
/^done$/ig
.
test
(
db_customer
))
&&
db_customer
!=
""
){
par
.
customer
=
db_customer
}
...
...
@@ -130,21 +121,6 @@ try {
if
(
err
){
throw
err
}
// 创建profile
var
new_martix
=
GEN
.
getMatrix
({
job
:
job
})
var
profileLayer
=
Object
.
keys
(
new_martix
).
filter
(
function
(
v
){
return
new_martix
[
v
].
layer_type
==
"rout"
})
if
(
profileLayer
.
length
){
var
tmp
=
profileLayer
[
0
]
if
(
profileLayer
.
indexOf
(
"outline"
)
>=
0
){
tmp
=
"outline"
}
var
step
=
GEN
.
getStepList
({
job
:
job
})[
0
];
GEN
.
openStep
({
job
:
job
,
name
:
step
})
GEN
.
workLayer
({
name
:
tmp
,
display_number
:
2
,
clear_before
:
'yes'
})
GEN
.
selCreateProfile
()
GEN
.
closeStep
()
}
// end
GEN
.
checkInout
({
job
:
job
,
mode
:
"out"
})
// 结束保存料号 关闭料号
GEN
.
saveJob
({
job
:
job
});
...
...
@@ -310,6 +286,8 @@ function setDrill(props){ // 设置钻孔
var signalLayer =matrix.filter(function(v){
return v.attr.type == "
signal
" && v.attr.context == "
board
"
})
console.log("
=================>
setdrill
:
drillLayer
:
" + _.toString(drillLayer));
var layerCount = GEN.getLayerCount({job:job})
// findSignal 根据传入的数字找到对应的signal层 如 1 => top ; 2 => layer_2
function findSignal(num){
...
...
@@ -317,7 +295,7 @@ function setDrill(props){ // 设置钻孔
}
function doDrill(drills){ // 分析钻孔层
return drills.map(function(v){
if(v.name == "
drill
" || v.name=="
rout
"){
if(v.name == "
drill
" || v.name=="
rout
"
|| v.name=="
outline
"
){
return {start:findSignal(1), end:findSignal(layerCount), layer:v.name}
} else {
var tmp = /(
\
d+)-(
\
d+)/ig.exec(v.tl_name);
...
...
config_ats.js
View file @
79cbbdc2
...
...
@@ -148,8 +148,7 @@
}
},
"customer"
:
{
"Customer_1"
:
{
"path"
:
"/opt/resource/customer_1"
,
"2171"
:
{
"step"
:
"cad"
,
"rules"
:
[
{
...
...
@@ -206,8 +205,7 @@
{
"orig_name"
:
[
"_isl(
\\
d+)_bottom"
],
"tl_name"
:
"d_($1)-($1+1)"
}
]
},
"Customer_2"
:
{
"path"
:
"/opt/resource/customer_2"
,
"yucca"
:
{
"step"
:
"cad"
,
"rules"
:
[
{
...
...
@@ -346,7 +344,6 @@
]
},
"New_data"
:
{
"path"
:
"/opt/resource/new_data"
,
"step"
:
"cad"
,
"rules"
:
[
{
...
...
@@ -450,14 +447,15 @@
],
"tl_name"
:
[
{
"orig_name"
:
[
"pasttop.art"
,
"^past_top$"
,
"top_solderpaste"
],
"tl_name"
:
"past_top"
},
{
"orig_name"
:
[
"pleg.art"
,
"^silk_top$"
,
"top_silkscreen"
],
"tl_name"
:
"silk_top"
},
{
"orig_name"
:
[
"soldtop.art"
,
"^sm_top$"
,
"top_soldermask"
],
"tl_name"
:
"sm_top"
},
{
"orig_name"
:
[
"
top.art
"
,
"^top$"
],
"tl_name"
:
"top"
},
{
"orig_name"
:
[
"inner_(
\\
d+)
\\
.art"
,
"layer_(
\\
d+)"
],
"tl_name"
:
"l_($1)"
},
{
"orig_name"
:
[
"bottom.art"
,
"^bottom$"
],
"tl_name"
:
"bottom"
},
{
"orig_name"
:
[
"soldbotm.art"
,
"^sm_botm$"
,
"bot_soldermask"
],
"tl_name"
:
"sm_botm"
},
{
"orig_name"
:
[
"sleg.art"
,
"^silk_bot$"
,
"bot_silkscreen"
],
"tl_name"
:
"silk_bot"
},
{
"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"
},
...
...
@@ -465,7 +463,7 @@
{
"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+)-laser
\\
.drl"
,
"d(
\\
d+)-(
\\
d+)"
],
"tl_name"
:
"d_($1)-($2)"
}
{
"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)"
}
]
}
},
...
...
@@ -486,5 +484,5 @@
{
"tl_name"
:
"array"
,
"new_name"
:
"array"
,
"attr"
:{
"context"
:
"misc"
}},
{
"tl_name"
:
"fab.art"
,
"new_name"
:
"fab.art"
,
"attr"
:{
"context"
:
"misc"
}}
],
"delSameJob"
:
"
no
"
"delSameJob"
:
"
yes
"
}})()
\ No newline at end of file
test/ATS_AIM_input_data copy.js
View file @
79cbbdc2
test/mytest.js
View file @
79cbbdc2
...
...
@@ -8,242 +8,13 @@ var GEN = $.gen;
var
GUI
=
$
.
gui
;
var
Job
=
$
.
job
;
var
JobId
=
$
.
job_id
;
var
drill_toll_manage
=
{}
try
{
var
job
=
"sj"
;
if
(
GEN
.
isJobExists
({
job
:
job
})){
GEN
.
closeJob
({
job
:
job
})
GEN
.
deleteJob
({
job
:
job
})
}
var
config
=
{
format
:
{
"Gerber274x_1"
:
{
"nf1"
:
5
,
"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
},
"Excellon2_1"
:
{
"nf1"
:
2
,
"nf2"
:
3
,
"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
}
},
odb
:
[{
vaild
:
function
(
item
){
return
/
\.
tgz$/ig
.
test
(
item
.
name
)
// 以.tgz结尾的
}
}],
gerber
:
[
{
vaild
:
function
(
item
){
return
/
\.
art$/ig
.
test
(
item
.
name
)
// 以.art结尾的
},
type
:
"Gerber274x"
,
format
:
"Gerber274x_1"
},
{
vaild
:
function
(
item
){
return
/
\.
drl$/ig
.
test
(
item
.
name
)
// 以.drl结尾的
},
type
:
"Excellon2"
,
format
:
"Excellon2_1"
}
]
}
var
path
=
"C:/Users/Administrator/Desktop/sj(1)"
var
inputInfo
=
getJobInfo
({
path
:
path
,
job
:
job
,
config
:
config
}
)
IKM
.
msg
(
1
)
if
(
/gerber/ig
.
test
(
inputInfo
.
type
)){
inputInfo
.
data
.
forEach
(
function
(
file
){
if
(
/
\.
drl$/ig
.
test
(
file
.
name
)){
var
backUpName
=
file
.
name
+
".backup"
// 备份
fs
.
copyFile
(
file
.
path
,
file
.
dir
+
"/"
+
backUpName
)
// 读取
var
data
=
fs
.
readFile
(
file
.
path
)
data
=
data
.
split
(
"
\n
"
)
var
head
=
getHead
(
data
)
var
body
=
data
// 解析head
var
headData
=
head
.
filter
(
function
(
v
){
return
/Holesize.+Tolerance.+PLATED/ig
.
test
(
v
)
})
headData
.
map
(
function
(
v
){
var
res
=
{
holesize
:
{},
tolerance
:
{},
attr
:
""
,
unit
:
""
,
quantity
:
0
}
var
holesize_tmp
=
/
(
Holesize.+
)
Tolerance/
.
exec
(
v
)[
1
];
holesize_tmp
=
holesize_tmp
.
split
(
"="
)
res
.
holesize
.
key
=
holesize_tmp
[
0
].
trim
()
res
.
holesize
.
value
=
holesize_tmp
[
1
].
trim
()
var
Tolerance_tmp
=
/
(
Tolerance.
{23})
/
.
exec
(
v
)[
1
];
Tolerance_tmp
=
Tolerance_tmp
.
split
(
"="
)[
1
].
split
(
"/"
)
res
.
tolerance
.
top
=
Tolerance_tmp
[
0
].
trim
()
res
.
tolerance
.
bot
=
Tolerance_tmp
[
1
].
trim
()
res
.
attr
=
/NON_PLATED/ig
.
test
(
v
)
?
"non_plated"
:
"plated"
res
.
unit
=
/MILS/ig
.
test
(
v
)
?
"inch"
:
"mm"
res
.
quantity
=
parseInt
(
v
.
split
(
"="
).
pop
())
if
(
!
drill_toll_manage
.
hasOwnProperty
(
file
.
name
)){
drill_toll_manage
[
file
.
name
]
=
{}
}
drill_toll_manage
[
file
.
name
][
/
(\d
+
)
/ig
.
exec
(
res
.
holesize
.
key
)[
1
]]
=
res
})
// 给body添加刀
var
count
=
0
;
body
=
body
.
filter
(
function
(
v
){
return
!
(
/T
\d
+/ig
.
test
(
v
))
})
body
.
forEach
(
function
(
v
,
i
){
if
(
/^%$|^M00/ig
.
test
(
v
)){
var
k
=
"T"
+
getK
(
++
count
)
body
[
i
]
=
v
+
"
\n
"
+
k
}
})
// 写入文件
var
resStr
=
head
.
join
(
"
\n
"
)
+
"
\n
"
+
body
.
join
(
"
\n
"
)
fs
.
writeFile
(
file
.
path
,
resStr
)
}
})
importGerber
({
job
:
job
,
step
:
"pcs"
,
db
:
"genesis"
,
data
:
inputInfo
.
data
})
// 导入后 修改 tool manager
var
stepList
=
GEN
.
getStepList
({
job
:
job
})
var
matrix
=
GEN
.
getMatrix
({
job
:
job
})
var
drill_layers
=
Object
.
keys
(
matrix
).
filter
(
function
(
v
){
return
matrix
[
v
].
layer_type
==
"drill"
})
stepList
.
forEach
(
function
(
step
){
GEN
.
openStep
({
job
:
job
,
name
:
step
})
drill_layers
.
forEach
(
function
(
layer
){
var
drill_tool_manage_info
=
drill_toll_manage
[
layer
]
var
drill_tool_keys
=
Object
.
keys
(
drill_tool_manage_info
).
sort
(
function
(
a
,
b
){
return
a
-
b
})
GEN
.
COM
(
"tools_tab_reset"
)
drill_tool_keys
.
forEach
(
function
(
key
){
var
val
=
drill_tool_manage_info
[
key
]
GEN
.
COM
(
"tools_tab_add"
,
{
num
:
key
,
type
:
/plated/ig
.
test
(
val
.
attr
)
?
"plate"
:
"nplate"
,
min_tol
:
Number
(
val
.
tolerance
.
top
),
max_tol
:
Number
(
val
.
tolerance
.
bot
),
finish_size
:
Number
(
val
.
holesize
.
value
),
drill_size
:
Number
(
val
.
holesize
.
value
)
})
})
GEN
.
COM
(
"tools_set"
,{
layer
:
layer
,
thickness
:
0
,
user_params
:
1
,
slots
:
"by_length"
})
})
GEN
.
closeStep
()
})
}
return
"Done"
}
catch
(
e
)
{
IKM
.
msg
(
e
)
return
"Error"
}
function
getJobInfo
(
props
){
var
path
=
props
.
path
var
config
=
props
.
config
var
job
=
props
.
job
var
files
=
fs
.
listDir
(
path
)
files
=
files
.
filter
(
function
(
v
){
return
v
.
isFile
})
// 过滤出文件
// 先判断是不是odb
var
odbFiles
=
files
.
filter
(
function
(
file
){
// 拿到odb文件
return
config
.
odb
.
reduce
(
function
(
a
,
b
){
if
(
b
.
vaild
(
file
)){
a
=
true
}
return
a
},
false
)
})
if
(
odbFiles
.
length
){
return
{
type
:
"odb"
,
data
:
odbFiles
[
0
]
}
}
var
gerberFiles
=
files
.
filter
(
function
(
file
){
// 拿到odb文件
return
config
.
gerber
.
reduce
(
function
(
a
,
b
){
if
(
b
.
vaild
(
file
)){
file
.
gerber
=
config
.
format
[
b
.
format
];
file
.
type
=
b
.
type
;
a
=
true
}
return
a
},
false
)
})
if
(
gerberFiles
.
length
){
return
{
type
:
"gerber"
,
data
:
gerberFiles
}
}
return
"none"
}
function
importGerber
(
props
){
// job db step
var
job
=
props
.
job
var
step
=
props
.
step
var
files
=
props
.
data
GEN
.
createJob
({
name
:
job
,
db
:
props
.
db
})
GEN
.
createStep
({
job
:
job
,
name
:
props
.
step
})
var
gerberInfo
=
files
.
map
(
function
(
item
){
var
gerberCfg
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
gerber
));
gerberCfg
.
layer
=
item
.
name
.
toLowerCase
()
gerberCfg
.
path
=
item
.
path
gerberCfg
.
format
=
item
.
type
gerberCfg
.
job
=
job
gerberCfg
.
step
=
step
return
gerberCfg
})
GEN
.
COM
(
"input_manual_reset"
)
gerberInfo
.
forEach
(
function
(
v
){
GEN
.
COM
(
"input_manual_set"
,
v
)
})
GEN
.
COM
(
"input_manual"
)
}
function
getHead
(
arr
,
head
){
head
=
head
||
[];
if
(
arr
[
0
]
!=
"%"
){
head
.
push
(
arr
.
shift
())
return
getHead
(
arr
,
head
)
}
else
{
return
head
}
}
function
getK
(
count
){
return
count
<
10
?
"0"
+
String
(
count
)
:
String
(
count
)
}
\ No newline at end of file
test/test.js
View file @
79cbbdc2
var
func
=
function
(
ARGV
)
{
var
jobId
=
ARGV
[
"job_id"
];
var
tableName
=
"pdm_job_"
+
ARGV
[
"jobcategory"
]
+
"_layer"
;
//GUI.msgbox({text: TDataParse.variant2JsonStr(tableName)});
var
db
=
new
TSqlQueryV2
(
T_SQLCNT_POOL
.
getSqlDatabase
());
db
.
begin
();
try
{
var
oLayers
=
db
.
selectMapMap
({
table
:
tableName
,
field
:
[
"odb_name"
,
"release_status"
],
where
:
{
job_id
:
jobId
},
uniquefield
:
"odb_name"
});
if
(
db
.
lastError
().
isValid
())
throw
db
.
lastError
();
//GUI.msgbox({text: TDataParse.variant2JsonStr(oLayers)});
db
.
deleteRow
({
table
:
tableName
,
where
:
{
job_id
:
jobId
}
});
if
(
db
.
lastError
().
isValid
())
throw
db
.
lastError
();
var
str
=
"-0.0001"
var
fieldLst
=
[
"name"
,
"odb_context"
,
"odb_type"
,
"odb_polarity"
,
"odb_side"
,
"drl_start"
,
"drl_end"
,
"row_num"
,
"type"
,
"drl_start_num"
,
"drl_end_num"
,
"drl_from_num"
,
"drl_to_num"
,
"drl_connect_to"
,
"odb_name"
,
"side"
,
"stackup_num"
,
"customer_field"
,
"input_file_name"
,
"odb_row_num"
];
console
.
log
(
Number
(
str
));
for
(
var
i
=
0
;
i
<
ARGV
[
"layers"
].
length
;
i
++
)
{
layerName
=
ARGV
[
"layers"
][
i
];
var
layerInfo
=
ARGV
[
"matrix"
][
layerName
];
var
tmpData
=
{
"job_id"
:
jobId
,
"name"
:
layerInfo
[
"name"
]
};
if
(
ARGV
[
"releasestatus"
]
!=
undefined
&&
ARGV
[
"releasestatus"
]
!=
null
&&
ARGV
[
"releasestatus"
].
length
>
0
&&
ARGV
[
"releasestatus"
][
layerInfo
[
"odb_name"
]]
!=
undefined
&&
ARGV
[
"releasestatus"
][
layerInfo
[
"odb_name"
]]
!=
null
)
{
tmpData
[
"release_status"
]
=
ARGV
[
"releasestatus"
];
}
else
{
tmpData
[
"release_status"
]
=
oLayers
.
hasOwnProperty
(
layerInfo
[
"odb_name"
])
?
oLayers
[
layerInfo
[
"odb_name"
]][
"release_status"
]
:
null
;
}
for
(
n
=
0
;
n
<
fieldLst
.
length
;
n
++
)
{
tmpData
[
fieldLst
[
n
]]
=
layerInfo
[
fieldLst
[
n
]];
}
//GUI.msgbox({text: TDataParse.variant2JsonStr(tmpData)});
db
.
insertRow
({
table
:
tableName
,
data
:
tmpData
});
if
(
db
.
lastError
().
isValid
())
throw
db
.
lastError
();
}
db
.
commit
();
return
new
TDataResponse
();
}
catch
(
err
)
{
print
(
err
.
text
());
db
.
rollback
();
return
new
TDataResponse
(
err
,
""
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment