define(['angularAMD'], function (angularAMD) { angularAMD.service('epm01tmpService', [ '$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/epm01/epm01.tmp.html', function (dialog) { dialog.EQUIPMENTNO = options.EQUIPMENTNO; dialog.BREAKDOWNSERIALNO = options.BREAKDOWNSERIALNO; dialog.BREAKDOWNSTARTTIME = options.BREAKDOWNSTARTTIME; dialog.selEQPStatus = "off"; //閒置 dialog.DESCRIPTION; dialog.EQUIPMENTTYPE; dialog.EQUIPMENTNAME; dialog.StartDate = options.CREATEDATE; dialog.EndDate = moment().format('YYYY/MM/DD HH:mm:ss'); //取得維修資料 funLoadRepairBasis(function(RepairData){ if (RepairData.PMRepairBasis.length > 0){ $rootScope.RepairList = RepairData.PMRepairBasis; } else { //沒有維修資料 $rootScope.showAlert($filter('translate')('epm01tmp.msg.msg01')); } }); dialog.EQUIPMENTTYPE = options.EQUIPMENTTYPE; dialog.EQUIPMENTNAME = options.EQUIPMENTNAME; return { css_url:'module/moduleEPM/program/mrs-epm/epm01/epm01tmpService.css', itemClickSelect : function (item) { $rootScope.selectAll = false; item.isSelect = !item.isSelect; }, changeEQPState: function () { var orgEQPState = dialog.selEQPStatus; var change; if (orgEQPState == 'off') change = 'on'; else change = 'off'; dialog.selEQPStatus = change; }, back: function () { dialog.hide(); if (options.close) options.close(); }, confirm: function () { var selectList = []; //已選取的資料 var i = 0; for (i = 0; i < $rootScope.RepairList.length; i++) { if ($rootScope.RepairList[i].isSelect) selectList.push($rootScope.RepairList[i]); } if (selectList.length > 0) { //開始維修時間,不可大於故障開始時間 var BDStartDate = moment(dialog.BREAKDOWNSTARTTIME).format("YYYY/MM/DD HH:mm:ss"); var EQPStatus = "0"; var strControlNo = ""; var strControlType = ""; var strDesc = ""; if (dialog.StartDate != undefined && dialog.EndDate != undefined){ if (dialog.StartDate >= dialog.BREAKDOWNSTARTTIME) { //結束維修時間不可大於開始維修時間 if (dialog.StartDate < dialog.EndDate) { if (dialog.selEQPStatus == 'off') { EQPStatus = "0"; //閒置 strControlNo = "Idle"; strControlType = "EQP Break Down"; strDesc = "EQP Repair Register-Idle"; } else { EQPStatus = "1"; //生產 strControlNo = "ContinueToProduction"; strControlType = "EQP Break Down"; strDesc = "EQP Repair Register-Production"; } //整理資料值 var strUserNo= config.cache.account; var ary_invoke=[]; var ary_content=[]; ary_invoke.length=0; ary_content.length=0; ary_invoke.push('kcPM.clsPMBasis.GetEQPBreakDownState'); ary_content.push({ BreakDownSerialNo: dialog.BREAKDOWNSERIALNO, columns:['EQPSerialNo','Creator','CreateDate'], m_transfer: [ { "level": "G", "parname": "EQPSerialNo", "value": "EQPSerialNo" }, { "level": "G", "parname": "Creator", "value": "Creator" }, { "level": "G", "parname": "CreateDate", "value": "CreateDate" }, ] }); ary_invoke.push('kcPM.clsPMBasis.AddEQPBreakDownLog'); ary_content.push({ BreakDownSerialNo:dialog.BREAKDOWNSERIALNO, EquipmentNo:dialog.EQUIPMENTNO, BreakDownStartTime:dialog.BREAKDOWNSTARTTIME, BreakDownEndTime:dialog.StartDate, //Description:'from iPAD', Description:dialog.DESCRIPTION, columns:[] }); ary_invoke.push('kcPM.clsPMBasis.ShowEQPBreakDownStateDetail'); ary_content.push({ BreakDownSerialNo: dialog.BREAKDOWNSERIALNO, columns:['BreakDownNo'], m_transfer: [ { "level": "G", "parname": "BreakDownNo", "value": "BreakDownNo" } ] }); ary_invoke.push('kcPM.clsPMBasis.AddEQPBreakDownLogDetail'); ary_content.push({ BreakDownSerialNo: dialog.BREAKDOWNSERIALNO, columns:[]}); ary_invoke.push('kcPM.clsPMBasis.AddEQPRepairLog'); ary_content.push({ BreakDownSerialNo: dialog.BREAKDOWNSERIALNO, EquipmentNo:dialog.EQUIPMENTNO, BreakDownStartTime:dialog.BREAKDOWNSTARTTIME, RepairSerialNo:dialog.BREAKDOWNSERIALNO, RepairStartTime:dialog.StartDate, RepairEndTime:dialog.EndDate, RepairUserNo:strUserNo, //Description:'from iPAD', Description:dialog.DESCRIPTION, columns:[]}); for (i = 0; i < selectList.length; i++) { var RepaireNo = selectList[i].REPAIRNO; ary_invoke.push('kcPM.clsPMBasis.AddEQPRepairLogDetail'); ary_content.push({ RepairSerialNo: dialog.BREAKDOWNSERIALNO, RepairNo:RepaireNo, columns:[]}); } ary_invoke.push('kcEMS.clsEMSEquipment.GetEquipmentState'); ary_content.push({ EquipmentNo:dialog.EQUIPMENTNO, columns:['EQUIPMENTNO'], m_transfer: [ { "level": "S", "parname": "EQUIPMENTNO", "value": "EQUIPMENTNO" } ] }); ary_invoke.push('kcEQP.clsEQPStateControl.GetStateControlType'); ary_content.push({ ControlNo:strControlNo, ControlType:strControlType, columns:['EquipmentState'], m_transfer: [ { "level": "S", "parname": "EquipmentState", "value": "EquipmentState" } ] }); ary_invoke.push('kcEMS.clsEMSEquipment.EditEquipmentState'); ary_content.push({ EquipmentNo:dialog.EQUIPMENTNO, UserNo:strUserNo, Description: strDesc, StartTime:dialog.EndDate, columns:[] }); ary_invoke.push('kcPM.clsPMBasis.DelEQPBreakDownState'); ary_content.push({ BreakDownSerialNo: dialog.BREAKDOWNSERIALNO, columns:[]}); //執行修復登錄 funUpdEQPRepairRegister(ary_invoke, ary_content, function(data){ var result = JSON.parse(JSON.parse(data.ResultJson)[ary_invoke[2]]); if (options.callback) options.callback(true); dialog.hide(); }); } else { //結束維修時間,不可大於開始維修時間! $rootScope.showAlert($filter('translate')('epm01tmp.msg.msg02')); } } else { //開始維修時間,不可大於故障開始時間! $rootScope.showAlert($filter('translate')('epm01tmp.msg.msg03')); } } else { //請選取維修時間! $rootScope.showAlert($filter('translate')('epm01tmp.msg.msg05')); } } else { //請選取維修項目! $rootScope.showAlert($filter('translate')('epm01tmp.msg.msg04')); } }, }; } ); } openDialog(); }; //取得維修資料 function funLoadRepairBasis(callback) { $MMWService.sendToMESSrv({ uri : 'kcpm.clspmbasis.LoadRepairBasis', content: { IssueState:2 }, success: function (data) { var data = JSON.parse(data.ResultJson); if (callback) callback(data); } }); } function funUpdEQPRepairRegister(ary_invoke, ary_content, callback) { $MMWService.sendToMESSrv_Multi({ uri : ary_invoke, content:ary_content, success: function (data) { if (callback) callback(data); } }); } }, ]); });