123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include "CDSUtisF.h"
- #include "ITSDbF.h"
- #include "AppGlobalF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- TItsUtis::TItsUtis()
- {
- FGridIndex = -1; // 그리드 인덱스
- Clear();
- }
- //---------------------------------------------------------------------------
- void TItsUtis::Clear()
- {
- #if 0
- FGridIndex = -1; // 그리드 인덱스
- #endif
- }
- //---------------------------------------------------------------------------
- TItsUtis::~TItsUtis()
- {
- }
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- TItsUtisManager *ItsUtisManager = NULL;
- //---------------------------------------------------------------------------
- /*
- * Utis Manager
- */
- TItsUtisManager::TItsUtisManager()
- {
- }
- //---------------------------------------------------------------------------
- TItsUtisManager::~TItsUtisManager()
- {
- }
- //---------------------------------------------------------------------------
- void TItsUtisManager::SetCenterId(String ACenterId)
- {
- CenterId = ACenterId;
- }
- //---------------------------------------------------------------------------
- bool TItsUtisManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
- {
- return LoadUtisMaster(ADbConn);
- }
- //---------------------------------------------------------------------------
- bool TItsUtisManager::LoadUtisMaster(TADOConnection *ADbConn/*=NULL*/)
- {
- for (int ii = 0; ii < MAX_UTIS_RUN; ii++)
- {
- UtisRun.Status[ii] = "0";
- UtisRun.TotCnt[ii] = 0;
- UtisRun.RunCnt[ii] = 0;
- UtisRun.LastTime[ii] = "";
- RseRun[ii] = 0;
- }
- String sQry;
- TADOQuery *pADO = NULL;
- sQry = "SELECT COUNT(1) AS CCTVCNT \r\n"
- " FROM TB_CCTV_CTLR \r\n"
- " WHERE DEL_YN = 'N' \r\n";
- FTotCctvCnt = 0;
- try
- {
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- FTotCctvCnt = pADO->FieldByName("CCTVCNT")->AsInteger;
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsUtisManager::LoadUtisMaster", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &exception)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsUtisManager::LoadUtisMaster", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- }
- return true;
- }
- //---------------------------------------------------------------------------
- bool TItsUtisManager::LoadUtisStatusFromDb(TADOConnection *ADbConn/*=NULL*/)
- {
- try
- {
- ItsUtisManager->FLists.Lock();
- for (int ii = 0; ii < MAX_UTIS_RUN; ii++)
- {
- UtisRun.Status[ii] = "0";
- UtisRun.TotCnt[ii] = 0;
- UtisRun.RunCnt[ii] = 0;
- UtisRun.LastTime[ii] = "";
- RseRun[ii] = 0;
- }
- LoadUtisStatusUtisRun(ADbConn);
- LoadUtisStatusRseRun(ADbConn);
- }
- __finally
- {
- ItsUtisManager->FLists.UnLock();
- }
- return true;
- }
- //---------------------------------------------------------------------------
- bool TItsUtisManager::LoadUtisStatusUtisRun(TADOConnection *ADbConn/*=NULL*/)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- //
- return true;
- sQry = "SELECT OPCODE, TO_CHAR(COLLDT, 'YYYY-MM-DD HH24:MI:SS') AS COLLDT, RECORDCNT, \r\n"
- " DECODE(OPCODE, '20', DECODE(SIGN(COLLDT - (SYSDATE - 9/60/24)), -1, 'X', 'O'), \r\n"
- " DECODE(SIGN(COLLDT - (SYSDATE - 9/60/24)), -1, 'X', 'O')) AS COMMCHK \r\n"
- " FROM RUTIS.CENTERCOMM \r\n"
- " WHERE COMMTYPE = '1' \r\n"
- " AND OPCODE IN ('38', '39', '20') \r\n";
- #if 0
- SELECT COUNT(1)
- FROM RUTIS.CCTVIMG_BLOB A,
- (SELECT CCTVID,
- MAX(COLLDT) AS COLLDT
- FROM RUTIS.CCTVIMG_BLOB
- WHERE COLLDT >= (SYSDATE - 9/60/24)
- GROUP BY CCTVID) B,
- TB_CCTV_CTLR C
- WHERE A.CCTVID = B.CCTVID
- AND A.COLLDT = B.COLLDT
- AND A.CCTVID = TRIM(C.CCTV_CTLR_ID)
- AND C.DEL_YN = 'N'
- #endif
- String sTrfTime = "-?-";
- String sDirTime = "-?-";
- String sImgTime = "-?-";
- int nTrfCnt = 0;
- int nDirCnt = 0;
- int nImgCnt = 0;
- bool bTrf = false;
- bool bDir = false;
- bool bImg = false;
- try
- {
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String sOpCode = pADO->FieldByName("OPCODE")->AsString;
- if (sOpCode == "38") // 5분 교통정보 수신(센터)
- {
- String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
- if (sCommChk == "O")
- {
- bTrf = true;
- }
- sTrfTime = pADO->FieldByName("COLLDT")->AsString;
- nTrfCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
- }
- else
- if (sOpCode == "39") // 5분 방향별 교통정보 수신(센터)
- {
- String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
- if (sCommChk == "O")
- {
- bDir = true;
- }
- sDirTime = pADO->FieldByName("COLLDT")->AsString;
- nDirCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
- }
- else
- if (sOpCode == "20") // 정지영상 생성
- {
- String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
- if (sCommChk == "O")
- {
- bImg = true;
- }
- sImgTime = pADO->FieldByName("COLLDT")->AsString;
- nImgCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
- }
- }
- if (bTrf)
- {
- UtisRun.Status[1] = "1";
- UtisRun.TotCnt[1] = 0;
- UtisRun.RunCnt[1] = nTrfCnt;
- UtisRun.LastTime[1] = sTrfTime;
- }
- else
- {
- UtisRun.Status[1] = "0";
- UtisRun.TotCnt[1] = 0;
- UtisRun.RunCnt[1] = 0;
- UtisRun.LastTime[1] = sTrfTime;
- }
- if (bDir)
- {
- UtisRun.Status[2] = "1";
- UtisRun.TotCnt[2] = 0;
- UtisRun.RunCnt[2] = nDirCnt;
- UtisRun.LastTime[2] = sTrfTime;
- }
- else
- {
- UtisRun.Status[2] = "0";
- UtisRun.TotCnt[2] = 0;
- UtisRun.RunCnt[2] = 0;
- UtisRun.LastTime[2] = sDirTime;
- }
- if (bImg)
- {
- UtisRun.Status[0] = "1";
- UtisRun.TotCnt[0] = nImgCnt;//m_nCctvCnt;
- if (nImgCnt > FTotCctvCnt)
- nImgCnt = FTotCctvCnt;
- UtisRun.RunCnt[0] = nImgCnt;
- UtisRun.LastTime[0] = sImgTime;
- //if (m_nCctvCnt != nImgCnt)
- //{
- // UtisRun.Status[0] = 2;
- //}
- }
- else
- {
- UtisRun.Status[0] = "0";
- UtisRun.TotCnt[0] = 0;//nImgCnt;//m_nCctvCnt;
- UtisRun.RunCnt[0] = 0;//nImgCnt;
- UtisRun.LastTime[0] = sImgTime;
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsUtisManager::LoadUtisStatusUtisRun", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &exception)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsUtisManager::LoadUtisStatusUtisRun", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- }
- return true;
- }
- //---------------------------------------------------------------------------
- bool TItsUtisManager::LoadUtisStatusRseRun(TADOConnection *ADbConn/*=NULL*/)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- return true;
- sQry = "SELECT 0 AS COLTYPE, COUNT(1) AS UPCNT \r\n"
- " FROM RUTIS.RSEMST \r\n"
- "UNION ALL \r\n"
- "SELECT 1 AS COLTYPE, COUNT(1) AS UPCNT \r\n"
- " FROM RUTIS.RSEOPSTATE A, RUTIS.RSEMST B \r\n"
- " WHERE B.RSEID = A.RSEID \r\n"
- " AND A.COLLDT > SYSDATE - 30/1440 \r\n";
- try
- {
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- int nColType = pADO->FieldByName("COLTYPE")->AsInteger;
- if (nColType >= 0 && nColType < MAX_UTIS_RUN)
- {
- RseRun[nColType] = pADO->FieldByName("UPCNT")->AsInteger;
- }
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsUtisManager::LoadUtisStatusRseRun", String(E.ClassName()), E.Message, sQry);
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(Exception &exception)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TItsUtisManager::LoadUtisStatusRseRun", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- ItsUtisManager->FLists.UnLock();
- }
- return true;
- }
- //---------------------------------------------------------------------------
|