/*
NAME:
DESCRIPTION: 描述;
PARAMETER:
[
{
name : 'step',
title : 'step',
type : 'LineEdit',
property : {tool_tip : '目标step,默认是orig'}
},
{
name : 'auto_save',
title : '自动保存',
type : 'RadioBox',
property : {
item_list:[
{name:'yes',text:'YES'},
{name:'no',text:'NO'},
],
tool_tip:'是否自动保存料号开关'
}
}
]
VERSION_HISTORY:
V1.00 2021-03-08 Scott Sun
1.新版本
HELP:
功能简介
标题 p>
参数配置
step信息
注意事项
无
*/
// 引入模块 包 外部参数
let $ = require('topcam.scriptfunc').argv();
let fs = require("fs");
let _ = require('lodash');
let mode = $.ikm ? "topcam" : "aimdfm";
if(!$.ikm) {
$.ikm = require('topcam.ikm6')($)
}
let IKM = $.ikm;
let GEN = $.gen;
let Job = $.job || $.job_name;
let JobId = $.job_id;
let db = $.db || IKM.db;
let GUI = $.gui;
let PAR = {};
if ($.par) { PAR = $.par } else if ($.hasOwnProperty('script_parameter')) { PAR = JSON.parse($.script_parameter); }
if (mode === "aimdfm") {
IKM.crud("updateRow", {
table: "pdm_aimdfm_task",
data: { current_process_title: $.process_title },
where: { id: $.task_id }
})
}
let Status = 'ok';
let resultData = [];
let par = PAR; // 接收参数
let default_par = { // 设置默认参数
step: "orig",
auto_save: "No",
units: "mm"
}
for (let key in default_par) {
if (!par.hasOwnProperty(key) || par[key] == "") {
par[key] = default_par[key]
}
}
// 定义变量;
let job = Job.toLowerCase();
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"
}
GEN.checkInout({job: job,mode: "out"});
}
IKM.msg(IKM.command(`function(props){
return GUI.showForm({
'title': "Add Script",
'use_core_engine': true,
'size': '400x300',
'items': {
name:"user",
type:"LineEdit",
title:"User",
property:{},
pack:{
label:"User"
}
},
'values':{
'user':'TestUserName'
},
'include_hidden_items': true,
})
}`,{}, 1).data)
// 保存料号
if (/yes/ig.test(par.auto_save)) {
GEN.checkInout({ job, mode: "out" });
GEN.saveJob({ job });
GEN.checkInout({ job, mode: "in" });
}
// 结尾返回 固定写法
let Return = "Done"
if (mode === "aimdfm") {
IKM.crud("updateRow", {
table: "pdm_aimdfm_task",
data: { progress: 100 },
where: { id: $.task_id }
})
let tmperr = { type: "info", title: "操作完成, 请注意检查!" }
if (GEN.hasError()) {
Status = 'error';
tmperr = { type: "error", title: "GEN错误!", detail: [{ desc: GEN.STATUS.join("\n") }] }
}
resultData.push(tmperr);
Return = { status: Status, result_data: resultData };
}
_Return_Label_ = Return
} catch (e) {
if(GEN.STATUS.length > 0) {
IKM.msg(GEN.STATUS.join("\n"));
}
IKM.msg(e);
Status = 'error';
resultData.push({ type: "error", title: "脚本执行出错!", detail: [{ desc: _.toString(e) }] });
_Return_Label_ = (mode === "aimdfm") ? { status: Status, result_data: resultData } : "Error";
}
/**
* 获取层别
* @param {Object} 过滤选项
* @returns {Array}
*/
function getLayer(props = {}){
let matrix = GEN.getMatrix({job:job})
return Object.keys(matrix).reduce((a,b)=>{
let info = matrix[b];
let ret = true;
for (let key in props) {
if (info[key]) {
if(/object string|object number/ig.test({}.toString.call(props[key]))){
if(props[key] != info[key]){
ret = false
}
}
if(/object RegExp/ig.test({}.toString.call(props[key]))){
let reg = new RegExp(props[key],"ig")
if(!reg.test(info[key])){
ret = false
}
}
if(/object function/ig.test({}.toString.call(props[key]))){
if(!props[key](info[key])){
ret = false
}
}
}
}
if (ret) {
a.push(props.res == "info" ? info : b)
}
return a
},[])
}