This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/iMES_PAD/module/moduleWIP/program/mrs-eqp/mrs06/mrs06Service.js
2024-01-24 16:47:50 +08:00

301 lines
15 KiB
JavaScript

define(["angularAMD"], function (angularAMD) {
angularAMD.service('mrs06Service', ["$rootScope", "$filter", "$stateParams", "config", "DashboardService", "MMWService", '$mdDialog', '$timeout',
function ($rootScope, $filter, $stateParams, config, $DashboardService, $MMWService, $mdDialog, $timeout) {
this.init = function (options) {
function openDialog() {
$mdDialog.dialog('module/moduleWIP/program/mrs-eqp/mrs06/mrs06.html',
function (dialog) {
var intCheckInConfirmState = null;
var intPMWoReleased = null;
var dtReason = []; //品質原因(設備)
var equipmentState = null; //當前設備的狀態
var dtPMWoBasis = []; //保養工單
var selectEQStateName = null;
var dtViolateState = []; //互斥狀態
dialog.dtEQPStateBasis = []; //設備狀態基本
dialog.selectEQState = null; //選擇的狀態
dialog.reasonKeyIn = null; //原因輸入框
dialog.desc = null; //描述輸入框
dialog.dtInputReason = [];
function LoadBasis(callback) {
var uri = [];
var content = [];
uri.push('kcEQP.clsEQPBasis.ShowEQPStateBasis');
content.push({});
uri.push('kcQC.clsQCBasis.ShowReasonBasis');
content.push({ ReasonType: 6, IssueState: 2 });
uri.push('kcEMS.clsEMSEquipment.LoadEquipmentState');
content.push({ EquipmentNo: $rootScope.bindingEQP });
uri.push('kcEQP.clsEQPStateControl.ShowStateControlType');
content.push({ ControlType: 'WIP Tracking', ControlNo: 'CheckInConfirm' });
uri.push('kcEQP.clsEQPStateControl.ShowStateControlType');
content.push({ ControlType: 'PM Work Order', ControlNo: 'PMWoReleased' });
uri.push('kcEMS.clsEMSEquipment.ShowViolateStateChange');
content.push({});
$MMWService.sendToMESSrv_Multi({
uri: uri,
content: content,
success: function (data) {
LoadBasis_Transf(data, uri);
if (callback)
callback();
}
});
}
function LoadBasis_Transf(data, uri) {
var tmpJson = JSON.parse(data.ResultJson);
var tmp;
var index = 0;
//kcEQP.clsEQPBasis.LoadEQPStateBasis
tmp = JSON.parse(tmpJson[uri[index]]);
tmp = tmp[Object.keys(tmp)[0]];
dialog.dtEQPStateBasis = tmp;
index++
//kcQC.clsQCBasis.ShowReasonBasis
tmp = JSON.parse(tmpJson[uri[index]]);
tmp = tmp[Object.keys(tmp)[0]];
dtReason = tmp;
index++
//kcEMS.clsEMSEquipment.LoadEquipmentState
tmp = JSON.parse(tmpJson[uri[index]]);
tmp = tmp[Object.keys(tmp)[0]];
if (tmp.length > 0) {
equipmentState = tmp[0].EQUIPMENTSTATE;
}
index++
//kcEQP.clsEQPStateControl.ShowStateControlType
tmp = JSON.parse(tmpJson[uri[index]]);
tmp = tmp[Object.keys(tmp)[0]];
if (tmp.length > 0) intCheckInConfirmState = tmp[0].EQUIPMENTSTATE
index++
//kcEQP.clsEQPStateControl.ShowStateControlType
tmp = JSON.parse(tmpJson[uri[index] + '(2)']);
tmp = tmp[Object.keys(tmp)[0]];
if (tmp.length > 0) intPMWoReleased = tmp[0].EQUIPMENTSTATE
index++
//kcEMS.clsEMSEquipment.ShowViolateStateChange
tmp = JSON.parse(tmpJson[uri[index]]);
tmp = tmp[Object.keys(tmp)[0]];
dtViolateState = tmp;
index++
}
dialog.InputReason = function (reasonNo, event) {
if (event != undefined && event.keyCode != 13)
return;
var tmp = dtReason.filter(item => item.REASONNO == reasonNo);
var tmp2 = dialog.dtInputReason.filter(item => item.REASONNO == reasonNo);
if (tmp.length <= 0) {
$rootScope.showMessage('[%REASONNO%]:' + reasonNo, '0000-230004');
} else if (tmp2.length > 0) {
$rootScope.showMessage('[%REASONNO%]:' + reasonNo, '0000-202108');
} else {
dialog.dtInputReason.push($rootScope.deepCopy(tmp[0]));
}
dialog.reasonKeyIn = '';
}
dialog.dtInputReason_delete = function (index, item) {
dialog.dtInputReason.splice(index, 1);
}
function ShowPMWoBasis(callback) {
var uri = [];
var content = [];
uri.push('kcPM.clsPMBasis.ShowPMWoBasis');
content.push({ AdditionalXML: "<additional><condition> WONo In (Select Distinct A.WONo From tblPMWOBasis A,tblPMWODetail B Where A.WONo=B.WONo And A.Issuestate=2 And B.WOStatus=2 And B.EQUIPMENTNO='" + $rootScope.bindingEQP + "')</condition></additional>" });
$MMWService.sendToMESSrv_Multi({
uri: uri,
content: content,
success: function (data) {
ShowPMWoBasis_Transf(data, uri);
if (callback)
callback();
}
});
}
function ShowPMWoBasis_Transf(data, uri) {
var tmpJson = JSON.parse(data.ResultJson);
var tmp;
var index = 0;
//kcPM.clsPMBasis.ShowPMWoBasis
tmp = JSON.parse(tmpJson[uri[index]]);
tmp = tmp[Object.keys(tmp)[0]];
dtPMWoBasis = tmp;
index++
}
function EditEquipmentState(callback) {
var uri = [];
var content = [];
uri.push('kcEMS.clsEMSEquipment.EditEquipmentState');
content.push({
UserNo: config.cache.account,
EquipmentNo: $rootScope.bindingEQP,
EquipmentState: dialog.selectEQState,
Description: dialog.desc,
dtEMSReasons: dialog.dtInputReason
});
$MMWService.sendToMESSrv_Multi({
uri: uri,
content: content,
success: function (data) {
if (callback)
callback();
}
});
}
function funDisableViolateStateButton() {
dialog.dtEQPStateBasis.forEach(item => {
var tmp = dtViolateState.filter(function (item2) {
return item2.EQUIPMENTSTATE == equipmentState && item2.VIOLATIVESTATE == item.EQUIPMENTSTATE;
});
if (tmp.length > 0)
item.Hidden = true;
else
item.Hidden = false;
if (item.EQUIPMENTSTATE == equipmentState)
item.Hidden = true;
});
}
////
LoadBasis(function () {
funDisableViolateStateButton();
});
return {
background: {
click: function () {
dialog.hide();
if (typeof (feedback) == 'function')
feedback();
}
},
back: function () {
dialog.hide();
if (options.close)
options.close();
},
confirm: function () {
if ($rootScope.IsNullOrEmpty(dialog.desc)) {
$rootScope.showMessage('[%GETSELREASONNO%] [%CANNOTBEEMPTY%]', '0000-200005');
return;
}
if (dialog.dtInputReason.length <= 0) {
$rootScope.showMessage('[%REASONNO%] [%UNSELREASONNO%]', '0000-200001');
return;
}
if (dialog.selectEQState == null) {
$rootScope.showMessage('[%LASTSTATUS%] [%UNSELREASONNO%]', '0000-200005');
return;
}
if (intPMWoReleased != dialog.selectEQState) {
dtPMWoBasis = [];
ShowPMWoBasis(function () {
if (dtPMWoBasis.length > 0) {
$rootScope.showMessage("[%EquipmentNo%]: " & $rootScope.bindingEQP & " [%PMWo does not finish yet not allow to change equipment state%]", "0000-200015");
return;
}
EditEquipmentState(function (data) {
var result = {
eqState: dialog.selectEQState,
eqName: selectEQStateName
};
if (options.callBack)
options.callBack(result);
dialog.hide();
});
})
} else {
EditEquipmentState(function (data) {
var result = {
eqState: dialog.selectEQState,
eqName: selectEQStateName
};
if (options.callBack)
options.callBack(result);
dialog.hide();
});
}
},
selectStatus: function (item) {
dialog.selectEQState = item.EQUIPMENTSTATE;
selectEQStateName = item.STATENAME;
},
GetEQPStateColor: function (item) {
var style = {};
////無法決定如何顯示 設備狀態顏色,先註解效果
//style['border-color'] = $rootScope.ArgbInt2HexStr(item.STATECOLOR);
//style['border-width'] = '1px';
//style['border-style'] = 'solid';
return style;
},
scanQrcode: function (type) {
$rootScope.OpenScanner({
after: function (result) {
if (!$rootScope.IsNullOrEmpty(result)) {
dialog.InputReason(result);
}
},
exception: function () {
//目前裝置無法使用相機
$rootScope.showAlert($filter('translate')('common.msg.camera_not_support'));
},
orientation: "landscape"
});
}
}
}
);
}
openDialog();
}
}
]);
});