This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/MESud/udSYS_Customer/clsSerialNoFunction.cs

174 lines
5.9 KiB
C#
Raw Normal View History

2024-01-15 10:57:41 +08:00
using System;
using System.Data;
using static iMESCore.DataBase.iMESSql;
using iMESCore.Settings;
using iMESException;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
namespace udSYS_Customer
{
public class clsSerialNoFunction : IDisposable
{
private AppSettings objSetting = new AppSettings();
private IDbConnection cnnTemp;
private IDbCommand cmmTemp;
private string strConnectionString; // Connection string
private string strDataBaseType; // DataBase Type:oracle, mysql, access
private string strMQType; // MessageQueue Type:TIBCO, MQSeries, MSMQ
private string strSQLAddField;
private string strSQLAddValue;
private string strSQL;
#region IDisposable Support
private bool disposedValue; // 偵測多餘的呼叫
// //Initial Object----------------------------------
public clsSerialNoFunction()
{
// //Get database type
strDataBaseType = objSetting.GetDataBaseType();
// //Get connection string
strConnectionString = objSetting.GetConnectionString(strDataBaseType);
// //Get Message Queue Type
strMQType = objSetting.GetMQType();
}
// IDisposable
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
// TODO: 處置 Managed 狀態 (Managed 物件)。
}
// 釋放 Unmanaged 資源 (Unmanaged 物件) 並覆寫下方的 Finalize()。
if (objSetting != null)
objSetting = null;
// 將大型欄位設為 null。
}
disposedValue = true;
}
// 只有當上方的 Dispose(disposing As Boolean) 具有要釋放 Unmanaged 資源的程式碼時,才覆寫 Finalize()。
~clsSerialNoFunction()
{
// 請勿變更這個程式碼。請將清除程式碼放在上方的 Dispose(disposing As Boolean) 中。
Dispose(false);
}
// Visual Basic 加入這個程式碼的目的,在於能正確地實作可處置的模式。
public void Dispose()
{
// 請勿變更這個程式碼。請將清除程式碼放在上方的 Dispose(disposing As Boolean) 中。
Dispose(true);
// 覆寫上列 Finalize() 時,取消下行的註解狀態。
GC.SuppressFinalize(this);
}
#endregion
#region --- Property ---
public string ConnectionString
{
get
{
return strConnectionString;
}
}
public string DataBaseType
{
get
{
return strDataBaseType;
}
}
public string MQType
{
get
{
return strMQType;
}
}
#endregion
// 2018/04/10 OwenLiu, Mantis:0045761, 增加客製 SerialNoFunction 支援機制
// colParameters 變更為下述格式(FunctionName 及 . 可省略)
// [FunctionName][.]<Key>
// FunctionName 必須以 funC_ 作為名稱的前綴字串,才可以正常運作
// 前端(WinForm)呼叫範例(新開發的功能,儘量以 <FunctionName><.><Key> 方式加入以避免同樣的Key 對不同的ScriptFunction
// 有不同的值,造成執行階段引發的錯誤編碼結果
// -----------------------------------------------------------------------------------------------------------
// Dim strAddition As String = ""
// Dim aryAdditionKey() As String = {"FabCode", "funC_GetSample.FabCode"}
// Dim aryAdditionVal() As String = {"F1_", "F2_"}
// If Not aryAdditionKey Is Nothing AndAlso Not aryAdditionKey.Length.Equals(0) Then
// For i As Integer = LBound(aryAdditionKey) To UBound(aryAdditionKey)
// strAddition += CombineAddXML_Add(aryAdditionKey(i), "String", CInput(aryAdditionVal(i)))
// Next i
// strParameter += CombineXMLAdditional(strAddition)
// End If
// -----------------------------------------------------------------------------------------------------------
public string funC_GetSample(Collection colParameters)
{
IDbConnection cnnTemp = null;
string strResult = string.Empty;
string strFunctionName = System.Reflection.MethodBase.GetCurrentMethod().Name;
string strParameterKey = string.Empty;
string FabCode = string.Empty;
try
{
// 建立連線
cnnTemp = CreateConnection_None(strConnectionString, strDataBaseType);
// 取出參數
strParameterKey = "FabCode";
if (colParameters.Contains(strFunctionName + "." + strParameterKey))
{
// 有只針對此Function傳入的Parameter
FabCode = Conversions.ToString(colParameters[strFunctionName + "." + strParameterKey]);
}
else if (colParameters.Contains(strParameterKey))
{
// 泛用的Parameter
FabCode = Conversions.ToString(colParameters[strParameterKey]);
}
else
{
// 找不到傳入的Parameter
throw new MESException("0000-200002", "[%Parameter%] [%not found%]: [%" + strParameterKey + "%]");
}
strResult = FabCode;
}
catch (Exception ex)
{
throw;
}
finally
{
// 關閉連線
CloseConnection(cnnTemp);
}
return strResult;
}
}
}