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/system/service/MMWService.js
2024-01-24 16:47:50 +08:00

668 lines
26 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.setting.deviceName + "/" + 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;
//20201125 雋辰,新增選擇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"; //測試用
//20201125 雋辰,新增選擇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";
//20201125 雋辰,新增選擇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";
//20201125 雋辰,新增選擇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);
});
}
//yenru,建立SigNalR Connect
this.createHub = function (hubName, options) {
var port = options.port || config.server.port;
var name = config.server.name;
var error = undefined;
//20201125 雋辰,新增選擇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);
}
//20201125 雋辰,新增選擇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);
});
}
//eSOP
this.sendToEAISrv_eSOP = function (sendData, showLoading) {
if (showLoading == undefined) {
showLoading = true;
}
if (showLoading) {
$rootScope.showLoading(sendData.msg);
}
//var ip = "localhost"
//var eainame = "EAIws_603STD";
//20201125 雋辰,新增選擇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 + '/' + eainame + '/wsEAI.asmx/GeteSOPInfo_API',
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);
}
//20201125 雋辰,新增選擇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) {
//20201125 雋辰,新增選擇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);
$rootScope.showAlert({
title: contentData.code,
code: contentData.code,
message: contentData.message,
exception: contentData.exception,
stack: contentData.stacktrace,
});
}
}
} 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 {
//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;
}]);
});