define(['angularAMD'], function (angularAMD) { angularAMD.service('epm00Service', [ '$rootScope', '$filter', '$stateParams', 'config', 'MMWService', 'DashboardService', 'RouterExtendProvider', '$mdDialog', '$timeout', function ( $rootScope, $filter, $stateParams, config, $MMWService, $DashboardService, $RouterExtendProvider, $mdDialog, $timeout ) { this.init = function (options) { function openDialog() { $mdDialog.dialog( 'module/moduleEPM/program/mrs-epm/epm00/epm00.html', function (dialog) { $rootScope.EQPBreakDownList = []; $rootScope.selectAll = false; //是否全選 $rootScope.InitBreakDownNo = "" ; //序號 $rootScope.userInfo = config.cache.account; $rootScope.exeTime = ""; //統一執行時間 dialog.nowtime = moment()//.format('yyyy/MM/dd hh/mm/ss'); dialog.EQPNO; var list; //取得設備資料 function funLoadEquipmentBasis_ALL() { $MMWService.sendToMESSrv({ uri: 'kcEQP.clsEQPBasis.LoadEquipmentBasis', content: { IssueState: 2 }, success: function (data) { var tmpJson = JSON.parse(data.ResultJson); var tmp; tmp = tmpJson.EQPEquipmentBasis; list = tmp; } }); } //取得設備資料 dialog.EQPEvent = function () { $rootScope.showSelect({ title: "{{'epm00.title1'|translate}}" , label: "EQUIPMENTNO", code: "EQUIPMENTNO", order: "EQUIPMENTNO", selectCode: '', list: list, confirm: function (s_item, s_dialog) { s_dialog.hide(); if (s_item.EQUIPMENTNO) { dialog.EQPNO = s_item.EQUIPMENTNO; //重置資料 $rootScope.EQPBreakDownList = []; $rootScope.selectAll = false; //是否全選 $rootScope.InitBreakDownNo = ""; //序號 $rootScope.tmpState = ""; //取得選擇的設備 scan_device_ID = dialog.EQPNO; if (dialog.EQPNO != "") { //dialog.scan_device_ID = scan_device_ID; //檢查輸入的設備是否存在 funLoadEquipmentBasis(dialog.EQPNO, function (EQPdata) { if (EQPdata.EQPEquipmentBasis.length > 0) { var strEQPType = EQPdata.EQPEquipmentBasis[0].EQUIPMENTTYPE; //檢查設備是否已登錄 funGetEQPBreakDownState(dialog.EQPNO, function (data) { //沒有資料 if (data.PMEQPBreakDownState[0].EQPSERIALNO == null) { if (strEQPType != "" && strEQPType !== "undefined") { //依設備類型取得故障原因 funLoadEQPTypeBreakDownMap(strEQPType, function (EQPBDdata) { if (EQPBDdata.PMEQPTypeBreakDownMap.length > 0) { $rootScope.EQPBreakDownList = EQPBDdata.PMEQPTypeBreakDownMap; //dialog.EQPBreakDownList = $rootScope.EQPBreakDownList; //取得登錄序號 $rootScope.InitBreakDownNo = ""; //序號 funInitBreakDownNo(function (data) { $rootScope.InitBreakDownNo = data.ReturnValue; }); //取得EQP State Control的設定 funGetStateControlType(function (data) { $rootScope.tmpState = data.EQPStateControl[0].EQUIPMENTSTATE; }); } else { //沒有資料可登錄, 請先關聯故障原因 $rootScope.showAlert($filter('translate')('epm00.msg.msg01'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } }); } } else { //設備已登錄 $rootScope.showAlert($filter('translate')('epm00.msg.msg02'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } }); } else { //設備不存在 $rootScope.showAlert($filter('translate')('epm00.msg.msg03'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } }); } else { //請刷入設備編號 $rootScope.showAlert($filter('translate')('epm00.msg.msg04'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } } }, }); } funLoadEquipmentBasis_ALL(); return { scan_device_ID:'', beforeShown:function(){ $rootScope.focusById('scan_device_ID'); }, background: { click: function () { dialog.hide(); if (typeof (feedback) == 'function') feedback(); } }, barcodeScan : function(event){ //barcode example if(event == undefined || event.keyCode == 13){ //重置資料 $rootScope.EQPBreakDownList = []; $rootScope.selectAll = false; //是否全選 $rootScope.InitBreakDownNo = "" ; //序號 $rootScope.tmpState = ""; //取得刷入的設備 scan_device_ID = document.getElementById('scan_device_ID').value; if (scan_device_ID != ""){ //dialog.scan_device_ID = scan_device_ID; //檢查輸入的設備是否存在 funLoadEquipmentBasis(scan_device_ID, function(EQPdata){ if (EQPdata.EQPEquipmentBasis.length > 0){ var strEQPType = EQPdata.EQPEquipmentBasis[0].EQUIPMENTTYPE; //檢查設備是否已登錄 funGetEQPBreakDownState(scan_device_ID, function(data){ //沒有資料 if (data.PMEQPBreakDownState[0].EQPSERIALNO == null){ if (strEQPType != "" && strEQPType !== "undefined"){ //依設備類型取得故障原因 funLoadEQPTypeBreakDownMap(strEQPType, function(EQPBDdata){ if (EQPBDdata.PMEQPTypeBreakDownMap.length > 0){ $rootScope.EQPBreakDownList = EQPBDdata.PMEQPTypeBreakDownMap; //取得登錄序號 $rootScope.InitBreakDownNo = "" ; //序號 funInitBreakDownNo(function(data){ $rootScope.InitBreakDownNo = data.ReturnValue; }); //取得EQP State Control的設定 funGetStateControlType(function(data){ $rootScope.tmpState = data.EQPStateControl[0].EQUIPMENTSTATE; }); } else { //沒有資料可登錄, 請先關聯故障原因 $rootScope.showAlert($filter('translate')('epm00.msg.msg01'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } }); } } else { //設備已登錄 $rootScope.showAlert($filter('translate')('epm00.msg.msg02'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } }); } else { //設備不存在 $rootScope.showAlert($filter('translate')('epm00.msg.msg03'), function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } }); } else { //請刷入設備編號 $rootScope.showAlert($filter('translate')('epm00.msg.msg04') , function () { $rootScope.focusById('scan_device_ID'); document.getElementById('scan_device_ID').value = ""; }); } } }, scanQrcode : function(){ $rootScope.OpenScanner({ after : function(result){ dialog.EQPNO = result.text; dialog.barcodeScan(); }, exception: function(){ //目前裝置無法使用相機 $rootScope.showAlert($filter('translate')('common.msg.camera_not_support')); }, orientation : "landscape" }); }, scan_focus : function(){ $rootScope.focusById('illustrate'); document.getElementById('illustrate').value = ""; }, itemClickSelect : function (item) { $rootScope.selectAll = false; item.isSelect = !item.isSelect; //checkMachineHide(item.isSelect, item.LOTNO); }, clickSelect : function () { if (!($rootScope.EQPBreakDownList.length > 0)) { $rootScope.selectAll = false; return; } else $rootScope.selectAll = !$rootScope.selectAll; var i = 0; for (i = 0; i < $rootScope.EQPBreakDownList.length; i++) { $rootScope.EQPBreakDownList[i].isSelect = $rootScope.selectAll; console.log(i); //checkMachineHide($rootScope.EQPBreakDownList[i].isSelect, $rootScope.EQPBreakDownList[i].LOTNO); } }, back: function () { dialog.hide(); if (options.close) options.close(); }, confirm: function () { //检查设备是否设定设备管控 LoadEquipmentState(scan_device_ID, function (data) { if (data.EMSEquipmentState.length > 0) { if ($rootScope.EQPBreakDownList.length > 0) { var selectList = []; var i = 0; for (i = 0; i < $rootScope.EQPBreakDownList.length; i++) { if ($rootScope.EQPBreakDownList[i].isSelect) selectList.push($rootScope.EQPBreakDownList[i]); } if (selectList.length > 0) { //取得執行時間 $rootScope.exeTime = moment().format('YYYY-MM-DD HH:mm:ss'); if ($rootScope.InitBreakDownNo != "") { //填寫設備故障現況資料 funAddEQPBreakDownState(scan_device_ID, function (data){ //依breakdownserialno將設備故障明細資料刪除 funDelEQPBreakDownStateDetail(function (data){ //填寫設備故障明細資料 for (var index in selectList){ var strBreakDownNo = selectList[index].BREAKDOWNNO; funAddEQPBreakDownStateDetail(strBreakDownNo, function(data){ }); } if ($rootScope.tmpState != "" && $rootScope.tmpState !== "undefined"){ //變更設備狀態 funEditEquipmentState funEditEquipmentState(scan_device_ID, $rootScope.tmpState, function(data){ //修改EQP BreakDownState為 Waiting(待處理)及EQPSerialNo funEditEQPBreakDownState(function(data){ if (options.callback) options.callback(true); dialog.hide(); }); }); } else { //EQP State Control Set Not Found! $rootScope.showAlert($filter('translate')('epm00.msg.msg07')); } }); }); } else { //取不到序號 $rootScope.showAlert($filter('translate')('epm00.msg.msg05')); } } else { //請選取資料 $rootScope.showAlert($filter('translate')('epm00.msg.msg06')); } } else { //沒有資料可登錄 $rootScope.showAlert($filter('translate')('epm00.msg.msg08')); } //if (options.callback) options.callback(true); //dialog.hide(); } else { $rootScope.showAlert($filter('translate')("epm00.NoEquipmentState")); } }); }, }; } ); } openDialog(); }; //取得设备设定的状态 function LoadEquipmentState(strEquipmentNo, callback) { $MMWService.sendToMESSrv({ uri: 'kcEMS.clsEMSEquipment.LoadEquipmentState', content: { EquipmentNo: strEquipmentNo, }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } //取得設備資料 function funLoadEquipmentBasis(strEquipmentNo, callback) { $MMWService.sendToMESSrv({ uri : 'kcEQP.clsEQPBasis.LoadEquipmentBasis', content: { EquipmentNo: strEquipmentNo, IssueState:2 }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } //取得設備故障原因資訊 function funLoadEQPTypeBreakDownMap(strEquipmentType, callback) { $MMWService.sendToMESSrv({ uri : 'kcPM.clsPMBasis.LoadEQPTypeBreakDownMap', content: { EquipmentType: strEquipmentType }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } //取得序號 function funInitBreakDownNo(callback) { $MMWService.sendToMESSrv({ uri : 'udPM.clsPM.InitBreakDownNo', content: { }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } //填寫設備故障現況資料 function funAddEQPBreakDownState(strEquipmentNo, callback) { $MMWService.sendToMESSrv({ uri : 'kcPM.clsPMBasis.AddEQPBreakDownState', content: { EquipmentNo: strEquipmentNo, BreakDownStartTime: $rootScope.exeTime, BreakDownSerialNo: $rootScope.InitBreakDownNo, //Description: 'iPAD', Description: illustrate.value, Creator:$rootScope.userInfo, CreateDate:$rootScope.exeTime }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } //依breakdownserialno將設備故障明細資料刪除 function funDelEQPBreakDownStateDetail(callback) { $MMWService.sendToMESSrv({ uri : 'kcPM.clsPMBasis.DelEQPBreakDownStateDetail', content: { BreakDownSerialNo: $rootScope.InitBreakDownNo }, success: function (data) { var data = JSON.parse(data.ResultJson); console.log(data); if (data.Result != 'fail') { if (callback) callback(data); } else { $rootScope.showAlert(data.SysMsg); } } }); } //填寫設備故障明細資料 function funAddEQPBreakDownStateDetail(strBreakDownNo, callback) { $MMWService.sendToMESSrv({ uri : 'kcPM.clsPMBasis.AddEQPBreakDownStateDetail', content: { BreakDownSerialNo: $rootScope.InitBreakDownNo, BreakDownNo :strBreakDownNo }, success: function (data) { var data = JSON.parse(data.ResultJson); console.log(data); if (data.Result != 'fail') { if (callback) callback(data); } else { $rootScope.showAlert(data.SysMsg); } } }); } //取得EQP State Control的設定 function funGetStateControlType(callback) { $MMWService.sendToMESSrv({ uri : 'kcEQP.clsEQPStateControl.GetStateControlType', content: { ControlNo: "BreakDown", ControlType: "EQP Break Down" }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } //變更設備狀態 function funEditEquipmentState(strEquipmentNoNo, iEquipmentState, callback) { $MMWService.sendToMESSrv({ uri : 'kcEMS.clsEMSEquipment.EditEquipmentState', content: { EquipmentNo: strEquipmentNoNo, EquipmentState :iEquipmentState, UserNo: $rootScope.userInfo, Description: "Confirm EQP Break Down(iPAD)", StartTime:$rootScope.exeTime }, success: function (data) { var data = JSON.parse(data.ResultJson); console.log(data); if (data.Result != 'fail') { if (callback) callback(data); } else { $rootScope.showAlert(data.SysMsg); } } }); } //修改EQP BreakDownState為 Waiting(待處理)及EQPSerialNo function funEditEQPBreakDownState(callback) { $MMWService.sendToMESSrv({ uri : 'kcPM.clsPMBasis.EditEQPBreakDownState', content: { BreakDownSerialNo: $rootScope.InitBreakDownNo, State: 1 }, success: function (data) { var data = JSON.parse(data.ResultJson); console.log(data); if (data.Result != 'fail') { if (callback) callback(data); } else { $rootScope.showAlert(data.SysMsg); } } }); } //檢查機台是否已登錄 function funGetEQPBreakDownState(strEquipmentNo, callback) { $MMWService.sendToMESSrv({ uri : 'kcPM.clsPMBasis.GetEQPBreakDownState', content: { EquipmentNo: strEquipmentNo }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } }, ]); });