var g_simBeginTime = []; var g_simulatePkg = {}; var g_simulateSeq = []; var g_simulateMode = false; var g_keyMap = {}; var g_iconAction = {}; function start() { SView.clicked.connect(g_pClicked); SView.contextMenu.connect(onMenuClicked); if(JSON.stringify(g_iconAction) == "{}") { var str = SDAO.readFileData("../../data/model/iconAction.json"); g_iconAction = JSON.parse(str); } } function g_pClicked(itemCout, msgStr) { var context = SApp.getAppContext(); if(itemCout > 0 && context == 1) { executeYcCmd(msgStr); } if(itemCout > 0 && context == 3) { executeSimulateCmd(msgStr); } } function executeYcCmd(msgStr) { var tags = msgStr.split('^'); var keyInfo = ""; var args = ""; if(tags.length < 10) { return; } var objType = tags[0]; var objName = tags[1]; var iconName = tags[2]; var curValue = tags[3]; var keyTagName = tags[8]; if(objName!="多态文本") { return; } if(keyTagName=="") { return; } //showMessageDialog(objName); //SWnd.fileOpen("遥测.glx", "opt", FILE_OPEN_DIALOG, keyTagName); } function executeSimulateCmd(msgStr) { var tags = msgStr.split('^'); var keyInfo = ""; var args = ""; if(tags.length < 10) { return; } var objType = tags[0]; var objName = tags[1]; var iconName = tags[2]; var curValue = tags[3]; var keyTagName = tags[8]; if(objName=="") { return; } if(keyTagName=="") { return; } if(!(iconName in g_iconAction)) { return; } if(0 == g_iconAction[iconName]["Simulate"]) { return; } var retList = SView.getKeyInfoValue(keyTagName,objName); var value = retList[0]; var status = retList[1]; var scriptValue = retList[2]; if(g_keyMap[keyTagName] == null) { g_keyMap[keyTagName] = retList; } var keyTag = SView.truncTag(keyTagName, "key"); var valueNum = SDAO.getDigValueNum(keyTag); if(valueNum == 1) { if(value == 0) value = 1; else value = 0; } else if(valueNum == 2) { if(value <= 1) value = 2; else value = 1; } else { if(value == 1) value = 2; else value = 1; } var lockRet = SView.checkLockLogic(keyTag, value); if(lockRet[0] == false) { showMessageDialog(lockRet[1], lockRet[0]); return; } SView.addReqData(keyTagName, value, 256); var simulateInfo = {}; simulateInfo.beginTime = g_simBeginTime; simulateInfo.tagName = keyTagName; if(scriptValue == 1 || scriptValue == 3) { simulateInfo.desc = "分闸"; } else { simulateInfo.desc = "合闸"; } g_simulateSeq.push(simulateInfo); SView.callTopo(); } function toFillInt(value) { var len = 2; var ret = (Array(len).join('0') + value).slice(-len); return ret; } function beginSimulate() { var date = new Date; var year = date.getUTCFullYear(); var month = date.getUTCMonth(); var day = date.getUTCDate(); var hour = date.getUTCHours(); var min = date.getUTCMinutes(); var second = date.getUTCSeconds(); g_simBeginTime[0] = date.getFullYear() + "-" + toFillInt(date.getMonth()+1) + "-" + toFillInt(date.getDate()) + " " + toFillInt(date.getHours()) + ":" + toFillInt(date.getMinutes()) + ":" + toFillInt(date.getSeconds()); g_simBeginTime[1] = Date.UTC(year,month,day,hour,min,second); } function finishSimulate() { var context = SApp.getAppContext(); if(g_simulateSeq.length == 0 || context == 1) { return; } for(key in g_keyMap) { SView.addReqData(key, g_keyMap[key][0], g_keyMap[key][1]); } SView.callTopo(); g_simulateSeq = []; g_simulatePkg = {}; g_keyMap = {}; } function initTicketInfo() { var context = SApp.getAppContext(); if(g_simulateSeq.length == 0 || context == 1) { return; } g_simulatePkg.content = g_simulateSeq; var str = JSON.stringify(g_simulatePkg); SWnd.fileOpen("界面框架/panel_opt_ticket.glx", "simulate", 3); var code = "insertRecord('" + str + "')"; SWnd.execute("", "界面框架/panel_opt_ticket.glx", code, -1); } function getTicketMode() { var code = "getTicketMode()"; var ret = SWnd.execute("", "index.glx", code, -1); return ret; } function setContextMenu(objInfo) { var context = SApp.getAppContext(); if(context != 1 && context != 3) { return; } if(context == 3) { menuInfo = ["退出模拟操作,1"]; return menuInfo; } var menuInfo; if(objInfo == "") { menuInfo = ["遥信停闪,1"]; return menuInfo; } var tags = objInfo.split('^'); var code = "getTicketMode()"; var ticketMode = SWnd.execute("", "index.glx", code, -1); if(ticketMode == 0) { return; } var valid = false; var iconName = tags[1]; var keyTagName = tags[8]; switch(iconName) { case "刀闸": case "断路器": case "手车刀闸": case "手车_上": case "手车_下": // case "电动隔离开关": // case "断路器": // case "手车": valid = true; break; default: break; } if(valid) { if(ticketMode == 1) { menuInfo = getTopicTicketList(keyTagName); } else if(ticketMode == 2) { menuInfo = ["工作票1,1","工作票2,1"]; } else return; } return menuInfo; } function onMenuClicked(menu, objCount, objInfo) { var context = SApp.getAppContext(); if(context != 1 && context != 3) { return; } if(menu == "退出模拟操作") { var code = "simulate()"; SWnd.execute("","界面框架/view_sim_operate.glx",code,-1); return; } if(menu == "遥信停闪") { SView.clearTwinkle(); return; } var tags = objInfo.split('^'); var keyInfo = ""; var args = ""; if(tags.length < 10) { return; } var objType = tags[0]; var objName = tags[1]; var iconName = tags[2]; var curValue = tags[3]; var keyTagName = tags[8]; var ticketMode = getTicketMode(); if(ticketMode == 1) { SWnd.fileOpen("界面框架/panel_ticket_manage.glx", "", FILE_OPEN_DIALOG, "", menu); } else if(ticketMode == 2) { SWnd.fileOpen("界面框架/view_work_ticket.glx", "", FILE_OPEN_DIALOG, "", menu + "," + keyTagName); } else {} } function getTopicTicketList(keyTagName) { var menuList = []; var sqlStr = "select order_name from operation_order_model where id in(select distinct order_id from operation_order_model_info where key_id_tag = '" + keyTagName + "')"; var record = SDAO.dbSelect(sqlStr); var count = record[0]; if(count < 0) { showMessageDialog("查询失败"); } else { for(var i = 1; i <= count; i++) { menuList.push(record[i][0] + ",1"); } } return menuList; }