CDSUtisF.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSUtisF.h"
  4. #include "ITSDbF.h"
  5. #include "AppGlobalF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. TItsUtis::TItsUtis()
  9. {
  10. FGridIndex = -1; // 그리드 인덱스
  11. Clear();
  12. }
  13. //---------------------------------------------------------------------------
  14. void TItsUtis::Clear()
  15. {
  16. #if 0
  17. FGridIndex = -1; // 그리드 인덱스
  18. #endif
  19. }
  20. //---------------------------------------------------------------------------
  21. TItsUtis::~TItsUtis()
  22. {
  23. }
  24. //---------------------------------------------------------------------------
  25. //---------------------------------------------------------------------------
  26. TItsUtisManager *ItsUtisManager = NULL;
  27. //---------------------------------------------------------------------------
  28. /*
  29. * Utis Manager
  30. */
  31. TItsUtisManager::TItsUtisManager()
  32. {
  33. }
  34. //---------------------------------------------------------------------------
  35. TItsUtisManager::~TItsUtisManager()
  36. {
  37. }
  38. //---------------------------------------------------------------------------
  39. void TItsUtisManager::SetCenterId(String ACenterId)
  40. {
  41. CenterId = ACenterId;
  42. }
  43. //---------------------------------------------------------------------------
  44. bool TItsUtisManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  45. {
  46. return LoadUtisMaster(ADbConn);
  47. }
  48. //---------------------------------------------------------------------------
  49. bool TItsUtisManager::LoadUtisMaster(TADOConnection *ADbConn/*=NULL*/)
  50. {
  51. for (int ii = 0; ii < MAX_UTIS_RUN; ii++)
  52. {
  53. UtisRun.Status[ii] = "0";
  54. UtisRun.TotCnt[ii] = 0;
  55. UtisRun.RunCnt[ii] = 0;
  56. UtisRun.LastTime[ii] = "";
  57. RseRun[ii] = 0;
  58. }
  59. String sQry;
  60. TADOQuery *pADO = NULL;
  61. sQry = "SELECT COUNT(1) AS CCTVCNT \r\n"
  62. " FROM TB_CCTV_CTLR \r\n"
  63. " WHERE DEL_YN = 'N' \r\n";
  64. FTotCctvCnt = 0;
  65. try
  66. {
  67. try
  68. {
  69. pADO = new TADOQuery(NULL);
  70. pADO->Close();
  71. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  72. pADO->SQL->Clear();
  73. pADO->SQL->Text = sQry;
  74. pADO->Open();
  75. for( ; !pADO->Eof; pADO->Next())
  76. {
  77. FTotCctvCnt = pADO->FieldByName("CCTVCNT")->AsInteger;
  78. }
  79. }
  80. catch(EDatabaseError &E)
  81. {
  82. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  83. DBERRORMSG("TItsUtisManager::LoadUtisMaster", String(E.ClassName()), E.Message, sQry);
  84. throw Exception(String(E.ClassName()) + E.Message);
  85. }
  86. catch(Exception &exception)
  87. {
  88. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  89. DBERRORMSG("TItsUtisManager::LoadUtisMaster", String(exception.ClassName()), exception.Message, sQry);
  90. throw Exception(String(exception.ClassName()) + exception.Message);
  91. }
  92. }
  93. __finally
  94. {
  95. if (pADO)
  96. {
  97. pADO->Close();
  98. delete pADO;
  99. }
  100. }
  101. return true;
  102. }
  103. //---------------------------------------------------------------------------
  104. bool TItsUtisManager::LoadUtisStatusFromDb(TADOConnection *ADbConn/*=NULL*/)
  105. {
  106. try
  107. {
  108. ItsUtisManager->FLists.Lock();
  109. for (int ii = 0; ii < MAX_UTIS_RUN; ii++)
  110. {
  111. UtisRun.Status[ii] = "0";
  112. UtisRun.TotCnt[ii] = 0;
  113. UtisRun.RunCnt[ii] = 0;
  114. UtisRun.LastTime[ii] = "";
  115. RseRun[ii] = 0;
  116. }
  117. LoadUtisStatusUtisRun(ADbConn);
  118. LoadUtisStatusRseRun(ADbConn);
  119. }
  120. __finally
  121. {
  122. ItsUtisManager->FLists.UnLock();
  123. }
  124. return true;
  125. }
  126. //---------------------------------------------------------------------------
  127. bool TItsUtisManager::LoadUtisStatusUtisRun(TADOConnection *ADbConn/*=NULL*/)
  128. {
  129. String sQry;
  130. TADOQuery *pADO = NULL;
  131. //
  132. return true;
  133. sQry = "SELECT OPCODE, TO_CHAR(COLLDT, 'YYYY-MM-DD HH24:MI:SS') AS COLLDT, RECORDCNT, \r\n"
  134. " DECODE(OPCODE, '20', DECODE(SIGN(COLLDT - (SYSDATE - 9/60/24)), -1, 'X', 'O'), \r\n"
  135. " DECODE(SIGN(COLLDT - (SYSDATE - 9/60/24)), -1, 'X', 'O')) AS COMMCHK \r\n"
  136. " FROM RUTIS.CENTERCOMM \r\n"
  137. " WHERE COMMTYPE = '1' \r\n"
  138. " AND OPCODE IN ('38', '39', '20') \r\n";
  139. #if 0
  140. SELECT COUNT(1)
  141. FROM RUTIS.CCTVIMG_BLOB A,
  142. (SELECT CCTVID,
  143. MAX(COLLDT) AS COLLDT
  144. FROM RUTIS.CCTVIMG_BLOB
  145. WHERE COLLDT >= (SYSDATE - 9/60/24)
  146. GROUP BY CCTVID) B,
  147. TB_CCTV_CTLR C
  148. WHERE A.CCTVID = B.CCTVID
  149. AND A.COLLDT = B.COLLDT
  150. AND A.CCTVID = TRIM(C.CCTV_CTLR_ID)
  151. AND C.DEL_YN = 'N'
  152. #endif
  153. String sTrfTime = "-?-";
  154. String sDirTime = "-?-";
  155. String sImgTime = "-?-";
  156. int nTrfCnt = 0;
  157. int nDirCnt = 0;
  158. int nImgCnt = 0;
  159. bool bTrf = false;
  160. bool bDir = false;
  161. bool bImg = false;
  162. try
  163. {
  164. try
  165. {
  166. pADO = new TADOQuery(NULL);
  167. pADO->Close();
  168. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  169. pADO->SQL->Clear();
  170. pADO->SQL->Text = sQry;
  171. pADO->Open();
  172. for( ; !pADO->Eof; pADO->Next())
  173. {
  174. String sOpCode = pADO->FieldByName("OPCODE")->AsString;
  175. if (sOpCode == "38") // 5분 교통정보 수신(센터)
  176. {
  177. String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
  178. if (sCommChk == "O")
  179. {
  180. bTrf = true;
  181. }
  182. sTrfTime = pADO->FieldByName("COLLDT")->AsString;
  183. nTrfCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
  184. }
  185. else
  186. if (sOpCode == "39") // 5분 방향별 교통정보 수신(센터)
  187. {
  188. String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
  189. if (sCommChk == "O")
  190. {
  191. bDir = true;
  192. }
  193. sDirTime = pADO->FieldByName("COLLDT")->AsString;
  194. nDirCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
  195. }
  196. else
  197. if (sOpCode == "20") // 정지영상 생성
  198. {
  199. String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
  200. if (sCommChk == "O")
  201. {
  202. bImg = true;
  203. }
  204. sImgTime = pADO->FieldByName("COLLDT")->AsString;
  205. nImgCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
  206. }
  207. }
  208. if (bTrf)
  209. {
  210. UtisRun.Status[1] = "1";
  211. UtisRun.TotCnt[1] = 0;
  212. UtisRun.RunCnt[1] = nTrfCnt;
  213. UtisRun.LastTime[1] = sTrfTime;
  214. }
  215. else
  216. {
  217. UtisRun.Status[1] = "0";
  218. UtisRun.TotCnt[1] = 0;
  219. UtisRun.RunCnt[1] = 0;
  220. UtisRun.LastTime[1] = sTrfTime;
  221. }
  222. if (bDir)
  223. {
  224. UtisRun.Status[2] = "1";
  225. UtisRun.TotCnt[2] = 0;
  226. UtisRun.RunCnt[2] = nDirCnt;
  227. UtisRun.LastTime[2] = sTrfTime;
  228. }
  229. else
  230. {
  231. UtisRun.Status[2] = "0";
  232. UtisRun.TotCnt[2] = 0;
  233. UtisRun.RunCnt[2] = 0;
  234. UtisRun.LastTime[2] = sDirTime;
  235. }
  236. if (bImg)
  237. {
  238. UtisRun.Status[0] = "1";
  239. UtisRun.TotCnt[0] = nImgCnt;//m_nCctvCnt;
  240. if (nImgCnt > FTotCctvCnt)
  241. nImgCnt = FTotCctvCnt;
  242. UtisRun.RunCnt[0] = nImgCnt;
  243. UtisRun.LastTime[0] = sImgTime;
  244. //if (m_nCctvCnt != nImgCnt)
  245. //{
  246. // UtisRun.Status[0] = 2;
  247. //}
  248. }
  249. else
  250. {
  251. UtisRun.Status[0] = "0";
  252. UtisRun.TotCnt[0] = 0;//nImgCnt;//m_nCctvCnt;
  253. UtisRun.RunCnt[0] = 0;//nImgCnt;
  254. UtisRun.LastTime[0] = sImgTime;
  255. }
  256. }
  257. catch(EDatabaseError &E)
  258. {
  259. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  260. DBERRORMSG("TItsUtisManager::LoadUtisStatusUtisRun", String(E.ClassName()), E.Message, sQry);
  261. throw Exception(String(E.ClassName()) + E.Message);
  262. }
  263. catch(Exception &exception)
  264. {
  265. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  266. DBERRORMSG("TItsUtisManager::LoadUtisStatusUtisRun", String(exception.ClassName()), exception.Message, sQry);
  267. throw Exception(String(exception.ClassName()) + exception.Message);
  268. }
  269. }
  270. __finally
  271. {
  272. if (pADO)
  273. {
  274. pADO->Close();
  275. delete pADO;
  276. }
  277. }
  278. return true;
  279. }
  280. //---------------------------------------------------------------------------
  281. bool TItsUtisManager::LoadUtisStatusRseRun(TADOConnection *ADbConn/*=NULL*/)
  282. {
  283. String sQry;
  284. TADOQuery *pADO = NULL;
  285. return true;
  286. sQry = "SELECT 0 AS COLTYPE, COUNT(1) AS UPCNT \r\n"
  287. " FROM RUTIS.RSEMST \r\n"
  288. "UNION ALL \r\n"
  289. "SELECT 1 AS COLTYPE, COUNT(1) AS UPCNT \r\n"
  290. " FROM RUTIS.RSEOPSTATE A, RUTIS.RSEMST B \r\n"
  291. " WHERE B.RSEID = A.RSEID \r\n"
  292. " AND A.COLLDT > SYSDATE - 30/1440 \r\n";
  293. try
  294. {
  295. try
  296. {
  297. pADO = new TADOQuery(NULL);
  298. pADO->Close();
  299. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  300. pADO->SQL->Clear();
  301. pADO->SQL->Text = sQry;
  302. pADO->Open();
  303. for( ; !pADO->Eof; pADO->Next())
  304. {
  305. int nColType = pADO->FieldByName("COLTYPE")->AsInteger;
  306. if (nColType >= 0 && nColType < MAX_UTIS_RUN)
  307. {
  308. RseRun[nColType] = pADO->FieldByName("UPCNT")->AsInteger;
  309. }
  310. }
  311. }
  312. catch(EDatabaseError &E)
  313. {
  314. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  315. DBERRORMSG("TItsUtisManager::LoadUtisStatusRseRun", String(E.ClassName()), E.Message, sQry);
  316. throw Exception(String(E.ClassName()) + E.Message);
  317. }
  318. catch(Exception &exception)
  319. {
  320. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  321. DBERRORMSG("TItsUtisManager::LoadUtisStatusRseRun", String(exception.ClassName()), exception.Message, sQry);
  322. throw Exception(String(exception.ClassName()) + exception.Message);
  323. }
  324. }
  325. __finally
  326. {
  327. if (pADO)
  328. {
  329. pADO->Close();
  330. delete pADO;
  331. }
  332. ItsUtisManager->FLists.UnLock();
  333. }
  334. return true;
  335. }
  336. //---------------------------------------------------------------------------