This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/iMES_PDA/module/system/service/MMWService.js
2024-01-24 16:47:50 +08:00

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;
}]);
});