using System;
|
using System.Data;
|
using System.Configuration;
|
using System.Web;
|
using System.Web.Security;
|
using System.Web.UI;
|
using System.Web.UI.HtmlControls;
|
using System.Web.UI.WebControls;
|
using System.Web.UI.WebControls.WebParts;
|
using System.Runtime.CompilerServices;
|
using System.Data.OracleClient;
|
|
namespace CCSTrace.CCS.Function
|
{
|
public class InitialEventData
|
{
|
private String m_AcceptNum = "";
|
private int m_CaseID = 0;
|
private int m_Year = 0;
|
private bool m_ChangeYear = false;
|
private String m_AcceptTime = "";
|
private RecordLog _PLog;
|
private OracleConnection _ConnectionTPC;
|
|
//New CaseID and New AcceptNum must be seen by others,so it need not controled by transaction
|
[MethodImpl(MethodImplOptions.Synchronized)]
|
public InitialEventData(OracleConnection _Conn, RecordLog _Log)
|
{
|
_ConnectionTPC = _Conn;
|
_PLog = _Log;
|
|
String SqlStmt = "SELECT ACCEPTNUM,CASEID,YEAR,TO_CHAR(SYSDATE,'YYYY/MM/DD') as ACCEPTTIME FROM EOS.EVENTNUM";
|
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
try
|
{
|
if (reader.Read())
|
{
|
m_AcceptNum = reader["ACCEPTNUM"].ToString();
|
m_CaseID = Convert.ToInt32(reader["CASEID"].ToString());
|
m_Year = Convert.ToInt32(reader["YEAR"].ToString());
|
m_AcceptTime = reader["ACCEPTTIME"].ToString();
|
}
|
else
|
{
|
_PLog.Error("起始號碼資料遺失!");
|
return;
|
}
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("Problems occur when Initializing EventData: " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
return;
|
}
|
finally
|
{
|
reader.Close();
|
Command.Dispose();
|
}
|
|
CheckAcceptNum();
|
|
while (!UpdateDataBase(m_ChangeYear)) {
|
this.RegetNumber();
|
CheckAcceptNum();
|
}
|
}
|
|
public int getNewCaseID() {
|
return this.m_CaseID;
|
}
|
|
public String getNewAcceptNum() {
|
return this.m_AcceptNum;
|
}
|
|
private bool UpdateDataBase(bool m_ChangeYear) {
|
String SqlStmt;
|
bool m_Result = false;
|
|
if (m_ChangeYear)
|
SqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(m_AcceptNum) + 1).ToString() + "',CASEID = "
|
+ (m_CaseID + 1) + ",YEAR = " + (m_Year + 1) + " WHERE CASEID = " + this.m_CaseID;
|
else
|
SqlStmt = "UPDATE EOS.EVENTNUM SET ACCEPTNUM = '" + (Convert.ToInt32(m_AcceptNum) + 1).ToString() + "',CASEID = "
|
+ (m_CaseID + 1) + " WHERE CASEID = " + this.m_CaseID;
|
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC);
|
|
try
|
{
|
if (Command.ExecuteNonQuery() > 0)
|
m_Result = true;
|
}
|
catch (Exception e)
|
{
|
_PLog.Error("Problems occur during EventNumCreating: " + e.Message);
|
Console.WriteLine(e.StackTrace);
|
throw e;
|
}
|
finally
|
{
|
Command.Dispose();
|
}
|
|
return m_Result;
|
}
|
|
private void CheckAcceptNum() {
|
int NowYear = Convert.ToInt32(m_AcceptTime.Substring(0, 4)) - 1911;
|
int NowMonth = Convert.ToInt32(m_AcceptTime.Substring(5, 2));
|
String Tmp = this.m_AcceptNum;
|
|
if (Convert.ToInt32(Tmp.Substring(0, 3)) == NowYear)
|
{
|
if (Convert.ToInt32(Tmp.Substring(3, 2)) != NowMonth)
|
{
|
// 新月份
|
if (NowMonth < 10)
|
m_AcceptNum = NowYear.ToString() + "0" + NowMonth.ToString() + "0001";
|
else
|
m_AcceptNum = NowYear.ToString() + NowMonth.ToString() + "0001";
|
}
|
} else {
|
m_AcceptNum = NowYear.ToString() + "010001"; // 新年度
|
this.m_ChangeYear = true;
|
}
|
|
if ( !m_ChangeYear)
|
{
|
}
|
}
|
|
private void RegetNumber()
|
{
|
String SqlStmt = "SELECT ACCEPTNUM,CASEID,YEAR FROM EOS.EVENTNUM";
|
OracleCommand Command = new OracleCommand(SqlStmt, _ConnectionTPC);
|
OracleDataReader reader = Command.ExecuteReader();
|
|
try
|
{
|
if (reader.Read())
|
{
|
m_AcceptNum = reader["ACCEPTNUM"].ToString();
|
m_CaseID = Convert.ToInt32(reader["CASEID"].ToString());
|
m_Year = Convert.ToInt32(reader["YEAR"].ToString());
|
}
|
}
|
catch (Exception e)
|
{
|
Console.WriteLine(e.Message);
|
Console.WriteLine(e.StackTrace);
|
}
|
finally
|
{
|
reader.Close();
|
Command.Dispose();
|
}
|
}
|
}
|
}
|