633 lines
24 KiB
JavaScript
633 lines
24 KiB
JavaScript
//MobileMidleware standard send Service
|
|
define(["angularAMD"], function (angularAMD) {
|
|
angularAMD.service('MMWService', ['$rootScope', '$filter', '$translate', 'config', '$http', 'Hub',
|
|
function($rootScope, $filter, $translate, config, $http, $Hub){
|
|
var MMWService = this;
|
|
/**prepare header data**/
|
|
function prepareHeader(data){
|
|
var header = {};
|
|
//TODO
|
|
header.Method = data.uri;
|
|
header["mds.userid"] = config.cache.account||'';
|
|
header["mds.password"] = config.cache.password||'';
|
|
header["mds.environment"] = config.setting.environment;
|
|
header["mds.language_mode"] = $translate.use();
|
|
header["mds.computer_name"] = config.client.ip;
|
|
header["mds.sessionno"] = config.mdssessionno;
|
|
return header;
|
|
}
|
|
|
|
function prepareMESHeader(data){
|
|
var header = {};
|
|
var languagemode = $translate.use();
|
|
if (languagemode == 'en_US') languagemode = 'en';
|
|
if (languagemode == 'zh_CN') languagemode = 'zh-chs';
|
|
if (languagemode == 'zh_TW') languagemode = 'zh-cht';
|
|
//TODO
|
|
header["method"] = data.uri;
|
|
header["invoketype"] = data.invoketype;
|
|
header["userid"] = config.cache.account||'';
|
|
header["languagemode"] = languagemode;
|
|
header["computername"] = config.client.ip;
|
|
header["sessionno"] = config.mdssessionno;
|
|
return header;
|
|
}
|
|
|
|
/* prepare content data
|
|
* add default fields
|
|
* use angular merge method to combine data.content
|
|
*/
|
|
function prepareContent(data){
|
|
var content = {};
|
|
content.CompanyID = config.setting.companyId;
|
|
content.Equipment = config.cache.equipment;
|
|
content = angular.merge(content, data.content);
|
|
return content;
|
|
}
|
|
|
|
/* MMW send method
|
|
* '*' mean require
|
|
* sendData fields example {
|
|
* *uri : header's method
|
|
* *content : data you want send
|
|
* *success : success callback method , paramter is feedback data
|
|
* *error : error callback method , paramter is feedback data
|
|
* netError : connect error callback method , paramter is feedback data
|
|
* notify : notify callback method , paramter is feedback data
|
|
* }
|
|
*/
|
|
this.sendToWMMServer = function(sendData, showLoading){
|
|
var digiwin = digiwin;
|
|
if(showLoading == undefined)
|
|
showLoading = true;
|
|
|
|
if(showLoading){
|
|
$rootScope.showLoading();
|
|
}
|
|
|
|
//TODO TransactClient 及 send 是否可以修改?
|
|
var header = prepareHeader(sendData);
|
|
var content = prepareContent(sendData);
|
|
//if(digiwin != undefined){
|
|
if(false){
|
|
digiwin.exec(
|
|
function(data){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectSuccess(data, sendData.success, sendData.error);
|
|
},
|
|
function(data){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectError(data, sendData.netError);
|
|
},
|
|
function(data){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectNotify(data, sendData.notify);
|
|
},
|
|
"TransactClient", "send", [sendData.uri, JSON.stringify(content), header]);
|
|
} else {
|
|
send(header, content, sendData, showLoading);
|
|
}
|
|
}
|
|
|
|
this.sendToEAIServer = function(sendData, showLoading){
|
|
if(showLoading == undefined){
|
|
showLoading = true;
|
|
}
|
|
if(showLoading){
|
|
$rootScope.showLoading(sendData.msg);
|
|
}
|
|
|
|
//var ip = config.server.eaiip;
|
|
//var port = config.server.eaiport;
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var port = config.server.port;
|
|
//var name = "MES_Production_MESws_EAI";
|
|
|
|
//sendData.invoke = sendData.invoke||'/wsEAI.asmx/invokeSrv_Json';
|
|
var data = {
|
|
url : 'http://'+ip+':'+port+'/'+name+'/wsEAI.asmx/InvokeSrv_json',
|
|
//url : 'http://10.40.10.66/MESws_STD/wsInvoke.asmx/invokeSrv',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"uri":sendData.uri,
|
|
"content":JSON.stringify(sendData.content)
|
|
}
|
|
};
|
|
|
|
console.log(JSON.stringify(data));
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
iMESConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectError(status_code, respose, data, sendData.netError);
|
|
});
|
|
}
|
|
|
|
|
|
|
|
//帳號認證用接口
|
|
this.sendToMESSrv_Session_plain = function(sendData, showLoading){
|
|
if(showLoading == undefined){
|
|
showLoading = true;
|
|
}
|
|
if(showLoading){
|
|
$rootScope.showLoading(sendData.msg);
|
|
}
|
|
//var ip = "localhost"; //測試用
|
|
//var name = "MESws_STD_603"; //測試用
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var name = config.server.name;
|
|
var port = config.server.port;
|
|
var header = prepareMESHeader(sendData);
|
|
|
|
//sendData.invoke = sendData.invoke||'/wsInvoke.asmx/invokeSrv_Session_plainjson';
|
|
var data = {
|
|
//url : 'http://'+ip+':'+port+'/'+name+'/wsInvoke.asmx/invokeSrv_Session_json',
|
|
url : 'http://'+ip+':'+port+'/'+name+'/wsInvoke.asmx/invokeSrv_Session_plainjson',
|
|
//url : 'http://10.40.10.66:80/MESws_STD/wsInvoke.asmx/invokeSrv_Session',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"uri":JSON.stringify(header),
|
|
"content":JSON.stringify(sendData.content)
|
|
}
|
|
};
|
|
console.log(JSON.stringify(data));
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
//$http(data).success(function(data,parameter) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
iMESConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectError(status_code, respose, data, sendData.netError);
|
|
});
|
|
}
|
|
|
|
|
|
// JSON共用接口
|
|
this.sendToMESSrv_plain = function(sendData, showLoading){
|
|
if(showLoading == undefined){
|
|
showLoading = true;
|
|
}
|
|
if(showLoading){
|
|
$rootScope.showLoading(sendData.msg);
|
|
}
|
|
//var ip = "localhost"
|
|
//var name = "MESws_STD_603";
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var name = config.server.name;
|
|
var port = config.server.port;
|
|
var header = prepareMESHeader(sendData);
|
|
|
|
//sendData.invoke = sendData.invoke||'/wsInvoke.asmx/invokeSrv_plainjson';
|
|
var data = {
|
|
//url : 'http://'+ip+':'+port+'/'+name+'/wsInvoke.asmx/invokeSrv_Session_json',
|
|
url : 'http://'+ip+':'+port+'/'+name+'/wsInvoke.asmx/invokeSrv_plainjson',
|
|
//url : 'http://10.40.10.66:80/MESws_STD/wsInvoke.asmx/invokeSrv_plainjson',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"uri":JSON.stringify(header),
|
|
"content":JSON.stringify(sendData.content)
|
|
}
|
|
};
|
|
console.log(JSON.stringify(data));
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
//$http(data).success(function(data,parameter) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
//if (sendData.uri=="kcUSR.clsUSRSecurity.Test_Connection"){
|
|
// $rootScope.showAlert("測試成功");
|
|
//}
|
|
iMESConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
//if (sendData.uri=="kcUSR.clsUSRSecurity.Test_Connection"){
|
|
// $rootScope.showAlert("與伺服器連線出錯",1);
|
|
//}
|
|
//MMWConnectError(status_code, respose, data, sendData.netError);
|
|
//20200604 雋辰,改為只顯示label不彈錯誤框
|
|
if(sendData.error)
|
|
sendData.error();
|
|
});
|
|
}
|
|
|
|
|
|
// EAI JSON共用接口
|
|
this.sendToEAISrv = function(sendData, showLoading){
|
|
if(showLoading == undefined){
|
|
showLoading = true;
|
|
}
|
|
if(showLoading){
|
|
$rootScope.showLoading(sendData.msg);
|
|
}
|
|
//var ip = "localhost"
|
|
//var eainame = "EAIws_603STD";
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var port = config.server.port;
|
|
var eainame = config.server.eainame;
|
|
var header = prepareMESHeader(sendData);
|
|
|
|
//sendData.invoke = sendData.invoke||'EAIws/wsEAI.asmx/invokeSrv_json';
|
|
var data = {
|
|
//url : 'http://'+ip+':'+port+'/'+name+'/wsEAI.asmx/invokeSrv_json',
|
|
url : 'http://'+ip+':'+port+'/'+eainame+'/wsEAI.asmx/invokeSrv_json',
|
|
//url : 'http://10.40.10.66:80/MESws_EAI_603/EAIws/wsEAI.asmx/invokeSrv_json',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"uri":JSON.stringify(header),
|
|
"content":JSON.stringify(sendData.content)
|
|
}
|
|
};
|
|
console.log(JSON.stringify(data));
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
//$http(data).success(function(data,parameter) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
iMESEAIConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
//MMWConnectError(status_code, respose, data, sendData.netError);
|
|
//20200604 雋辰,改為只顯示label不彈錯誤框
|
|
if(sendData.error)
|
|
sendData.error();
|
|
});
|
|
}
|
|
|
|
//yenru,建立SigNalR Connect
|
|
this.createHub = function(hubName, options){
|
|
var port = options.port||config.server.port;
|
|
var name = config.server.name;
|
|
var error = undefined;
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
options.rootPath = 'http://'+ip+':'+port+'/'+name+'/Notification';
|
|
options.useSharedConnection = false;
|
|
|
|
options.errorHandler = function(error){
|
|
$rootScope.hideLoading();
|
|
console.error(error);
|
|
//$rootScope.showAlert(error);
|
|
try{
|
|
$rootScope.$apply();
|
|
}catch(e){
|
|
console.error(e);
|
|
}
|
|
};
|
|
|
|
options.stateChanged = function(state){
|
|
switch (state.newState) {
|
|
case $.signalR.connectionState.connecting:
|
|
$rootScope.showLoading();
|
|
break;
|
|
case $.signalR.connectionState.connected:
|
|
$rootScope.hideLoading();
|
|
if(options.connected){
|
|
options.connected();
|
|
}
|
|
break;
|
|
case $.signalR.connectionState.reconnecting:
|
|
//your code here
|
|
break;
|
|
case $.signalR.connectionState.disconnected:
|
|
//當為人為中斷的時候則不顯示訊息
|
|
if(options.disconnected){
|
|
options.disconnected();
|
|
} else {
|
|
if(hub && hub.connection_close != 'manual'){
|
|
$rootScope.showConfirm($filter('translate')('common.msg.lose_server_connect'),function(dialog){
|
|
dialog.hide();
|
|
hub.connect();
|
|
});
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
};
|
|
var hub = new $Hub(hubName, options);
|
|
return hub;
|
|
};
|
|
|
|
//2019/06/26 OwenLiu, MES JSON 共用接口
|
|
this.sendToMESSrv = function(sendData, showLoading){
|
|
if(showLoading == undefined){
|
|
showLoading = true;
|
|
}
|
|
if(showLoading){
|
|
$rootScope.showLoading(sendData.msg);
|
|
}
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var name = config.server.name;
|
|
var port = config.server.port;
|
|
var header = prepareMESHeader(sendData);
|
|
|
|
var data = {
|
|
url : 'http://'+ip+':'+port+'/'+name+'/wsInvoke.asmx/invokeSrv_json',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"uri":JSON.stringify(header),
|
|
"content":JSON.stringify(sendData.content)
|
|
}
|
|
};
|
|
console.log(JSON.stringify(data));
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
//$http(data).success(function(data,parameter) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
iMESEAIConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectError(status_code, respose, data, sendData.netError);
|
|
});
|
|
}
|
|
// 2020-04-28 yenru ADD Multi KC data Querry
|
|
this.sendToMESSrv_Multi = function(sendData, showLoading){
|
|
if(showLoading == undefined){
|
|
showLoading = true;
|
|
}
|
|
if(showLoading){
|
|
$rootScope.showLoading(sendData.msg);
|
|
}
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var name = config.server.name;
|
|
var port = config.server.port;
|
|
var header = prepareMESHeader(sendData);
|
|
|
|
var data = {
|
|
url : 'http://'+ip+':'+port+'/'+name+'/wsInvoke.asmx/InvokeSrv_Json_Multi',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"uri":JSON.stringify(header),
|
|
"content":JSON.stringify(sendData.content)
|
|
}
|
|
};
|
|
console.log(JSON.stringify(data));
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
iMESEAIConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectError(status_code, respose, data, sendData.netError);
|
|
});
|
|
}
|
|
function send(header, content, sendData, showLoading){
|
|
//20210505 ,新增選擇DNS/IP
|
|
var ip = config.setting.DNSMode ? config.server.DNS : config.server.ip;
|
|
var data = {
|
|
url : 'http://'+ip+':'+config.server.port+'/'+config.server.name+'/api/v1/transaction/json',
|
|
method : 'POST',
|
|
headers : {
|
|
'Content-Type': 'application/json;charset=UTF-8'
|
|
},
|
|
data : {
|
|
"applicationId":config.applicationId,
|
|
"uri": sendData.uri,
|
|
"headers":header,
|
|
"cookies":[],
|
|
'content':JSON.stringify(content)
|
|
}
|
|
};
|
|
if(config.server.timeout != 0)
|
|
data.timeout =config.server.timeout;
|
|
|
|
$http(data).success(function(data, status, headers, config) {
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectSuccess(data, sendData.success, sendData.error);
|
|
}).error(function(respose,status_code,c,d){
|
|
if(showLoading)
|
|
$rootScope.hideLoading();
|
|
|
|
MMWConnectError(status_code, respose, data, sendData.netError);
|
|
});
|
|
}
|
|
|
|
/**STD send success handler**/
|
|
function iMESConnectSuccess(data, success, error){
|
|
var contentData;
|
|
try{
|
|
contentData = JSON.parse(data.d);
|
|
} catch(e){
|
|
$rootScope.showAlert('Can\'t parse content : ' + data.d);
|
|
}
|
|
if(contentData){
|
|
try{
|
|
if(contentData.Code === '0' || contentData.Code === null || contentData.code === '0' || contentData.code === null){
|
|
if(success)
|
|
success(contentData);
|
|
} else if(contentData.Code === '-1' || contentData.code === '-1'){
|
|
//20181002 modify by Dustdusk for M#51006: 判斷是否需要登出
|
|
if(MMWService.needLogout)
|
|
MMWService.needLogout(MMWService.needLogoutExtend);
|
|
} else {
|
|
if(error){
|
|
error(contentData);
|
|
} else {
|
|
//$rootScope.showAlert($filter('translate')('Login.errorMsg.'+contentData.Code))
|
|
$rootScope.showAlert(contentData.exception);
|
|
}
|
|
}
|
|
} catch(e){
|
|
$rootScope.showAlert(e.stack);
|
|
console.error(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**EAI send success handler**/
|
|
function iMESEAIConnectSuccess(data, success, error){
|
|
var contentData;
|
|
try{
|
|
contentData = JSON.parse(data.d);
|
|
} catch(e){
|
|
$rootScope.showAlert('Can\'t parse content : ' + data.d);
|
|
}
|
|
if(contentData){
|
|
try{
|
|
if(contentData.Code === '0' || contentData.Code === null){
|
|
if(success)
|
|
success(contentData);
|
|
} else if(contentData.Code === '-1'){
|
|
//20181002 modify by Dustdusk for M#51006: 判斷是否需要登出
|
|
if(MMWService.needLogout)
|
|
MMWService.needLogout(MMWService.needLogoutExtend);
|
|
} else {
|
|
//if(error){
|
|
// error(contentData);
|
|
//} else {
|
|
// //$rootScope.showAlert($filter('translate')('Login.errorMsg.'+contentData.code))
|
|
// if (contentData.Exception) {
|
|
// if(success)
|
|
// success(contentData);
|
|
// //2020/08/12 Grace 調整訊息顯示
|
|
// //$rootScope.showAlert(contentData.Exception);
|
|
// //var msg = "Code:" + contentData.Code + "<p>" + contentData.CodeInformation + "<p>" +"Message:" +contentData.Message +"<p>" +"exception:" +contentData.Exception + "<p>" +"stack:" +contentData.StackTrace;
|
|
// //$rootScope.showAlert(msg);
|
|
|
|
// //2021/05/18 凱煊 修正錯誤處理
|
|
// $rootScope.showAlert({
|
|
// title: contentData.CodeInformation,
|
|
// code: contentData.Code,
|
|
// message: contentData.Message,
|
|
// exception: contentData.Exception,
|
|
// stack: contentData.StackTrace,
|
|
// });
|
|
// }
|
|
// else{$rootScope.showAlert(contentData.description);}
|
|
//}
|
|
//20210601 13871,修改程與PAD相同處理方式
|
|
//20200828 雋辰,修正錯誤處理,
|
|
if (contentData.Exception) {
|
|
$rootScope.showAlert({
|
|
title: contentData.CodeInformation,
|
|
code: contentData.Code,
|
|
message: contentData.Message,
|
|
exception: contentData.Exception,
|
|
stack: contentData.StackTrace,
|
|
});
|
|
}
|
|
else { $rootScope.showAlert(contentData.description); }
|
|
if (error) {
|
|
error(contentData);
|
|
}
|
|
}
|
|
} catch(e){
|
|
$rootScope.showAlert(e.stack);
|
|
console.error(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**send success handler**/
|
|
function MMWConnectSuccess(data, success, error){
|
|
var contentData;
|
|
try{
|
|
contentData = JSON.parse(data.content);
|
|
} catch(e){
|
|
$rootScope.showAlert('Can\'t parse content : ' + data.content);
|
|
}
|
|
if(contentData){
|
|
try{
|
|
contentData.mdssessionno = data.headers.mdssessionno;
|
|
if(contentData.IsSuccess){
|
|
if(contentData.needlogout && MMWService.needLogout){
|
|
MMWService.needLogout(MMWService.needLogoutExtend);
|
|
} else {
|
|
if(success)
|
|
success(contentData);
|
|
}
|
|
} else {
|
|
if(error){
|
|
error(contentData);
|
|
} else {
|
|
$rootScope.showAlert(contentData.SysException);
|
|
}
|
|
}
|
|
} catch(e){
|
|
$rootScope.showAlert(e.stack);
|
|
console.error(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**send error handler**/
|
|
function MMWConnectError(status_code, respose, data, callback){
|
|
var msg = '';
|
|
if(status_code == 500){
|
|
if(!respose.Message){
|
|
msg = angular.element(new DOMParser().parseFromString(respose, 'text/html')).find('body')[0].innerHTML;
|
|
} else {
|
|
msg = respose.Message;
|
|
}
|
|
} else if(status_code == -1){
|
|
msg = $filter('translate')('error.connect_timeout');
|
|
} else {
|
|
msg = 'respose code : '+ status_code + '<br>'+$filter('translate')('error.connectRefused');
|
|
}
|
|
|
|
$rootScope.showAlert(msg, function(data){
|
|
if(callback)
|
|
callback(data);
|
|
});
|
|
}
|
|
|
|
/**send notify handler**/
|
|
function MMWConnectNotify(data, callback){
|
|
$rootScope.showAlert($filter('translate')('error.connectNotify'), function(data){
|
|
if(callback)
|
|
callback(data);
|
|
});
|
|
}
|
|
|
|
MMWService.needLogout = undefined;
|
|
MMWService.needLogoutExtend = undefined;
|
|
}]);
|
|
});
|