CDSUtisF.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSUtisF.h"
  4. #include "ITS_OPLibF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TItsUtis::TItsUtis()
  8. {
  9. FGridIndex = -1; // 그리드 인덱스
  10. Clear();
  11. }
  12. //---------------------------------------------------------------------------
  13. void TItsUtis::Clear()
  14. {
  15. #if 0
  16. FGridIndex = -1; // 그리드 인덱스
  17. #endif
  18. }
  19. //---------------------------------------------------------------------------
  20. TItsUtis::~TItsUtis()
  21. {
  22. }
  23. //---------------------------------------------------------------------------
  24. //---------------------------------------------------------------------------
  25. TItsUtisManager *ItsUtisManager = NULL;
  26. //---------------------------------------------------------------------------
  27. /*
  28. * Utis Manager
  29. */
  30. TItsUtisManager::TItsUtisManager()
  31. {
  32. }
  33. //---------------------------------------------------------------------------
  34. TItsUtisManager::~TItsUtisManager()
  35. {
  36. }
  37. //---------------------------------------------------------------------------
  38. void TItsUtisManager::SetCenterId(String ACenterId)
  39. {
  40. CenterId = ACenterId;
  41. }
  42. //---------------------------------------------------------------------------
  43. bool TItsUtisManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  44. {
  45. return LoadUtisMaster(ADbConn);
  46. }
  47. //---------------------------------------------------------------------------
  48. bool TItsUtisManager::LoadUtisMaster(TADOConnection *ADbConn/*=NULL*/)
  49. {
  50. for (int ii = 0; ii < MAX_UTIS_RUN; ii++)
  51. {
  52. UtisRun.Status[ii] = "0";
  53. UtisRun.TotCnt[ii] = 0;
  54. UtisRun.RunCnt[ii] = 0;
  55. UtisRun.LastTime[ii] = "";
  56. RseRun[ii] = 0;
  57. }
  58. String sQry;
  59. TADOQuery *pADO = NULL;
  60. sQry = "SELECT COUNT(1) AS CCTVCNT \r\n"
  61. " FROM TB_CCTV_CTLR \r\n"
  62. " WHERE DEL_YN = 'N' \r\n";
  63. FTotCctvCnt = 0;
  64. try
  65. {
  66. try
  67. {
  68. pADO = new TADOQuery(NULL);
  69. pADO->Close();
  70. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  71. pADO->SQL->Clear();
  72. pADO->SQL->Text = sQry;
  73. pADO->Prepared = true;
  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->Prepared = true;
  172. pADO->Open();
  173. for( ; !pADO->Eof; pADO->Next())
  174. {
  175. String sOpCode = pADO->FieldByName("OPCODE")->AsString;
  176. if (sOpCode == "38") // 5분 교통정보 수신(센터)
  177. {
  178. String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
  179. if (sCommChk == "O")
  180. {
  181. bTrf = true;
  182. }
  183. sTrfTime = pADO->FieldByName("COLLDT")->AsString;
  184. nTrfCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
  185. }
  186. else
  187. if (sOpCode == "39") // 5분 방향별 교통정보 수신(센터)
  188. {
  189. String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
  190. if (sCommChk == "O")
  191. {
  192. bDir = true;
  193. }
  194. sDirTime = pADO->FieldByName("COLLDT")->AsString;
  195. nDirCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
  196. }
  197. else
  198. if (sOpCode == "20") // 정지영상 생성
  199. {
  200. String sCommChk = pADO->FieldByName("COMMCHK")->AsString;
  201. if (sCommChk == "O")
  202. {
  203. bImg = true;
  204. }
  205. sImgTime = pADO->FieldByName("COLLDT")->AsString;
  206. nImgCnt = pADO->FieldByName("RECORDCNT")->AsInteger;
  207. }
  208. }
  209. if (bTrf)
  210. {
  211. UtisRun.Status[1] = "1";
  212. UtisRun.TotCnt[1] = 0;
  213. UtisRun.RunCnt[1] = nTrfCnt;
  214. UtisRun.LastTime[1] = sTrfTime;
  215. }
  216. else
  217. {
  218. UtisRun.Status[1] = "0";
  219. UtisRun.TotCnt[1] = 0;
  220. UtisRun.RunCnt[1] = 0;
  221. UtisRun.LastTime[1] = sTrfTime;
  222. }
  223. if (bDir)
  224. {
  225. UtisRun.Status[2] = "1";
  226. UtisRun.TotCnt[2] = 0;
  227. UtisRun.RunCnt[2] = nDirCnt;
  228. UtisRun.LastTime[2] = sTrfTime;
  229. }
  230. else
  231. {
  232. UtisRun.Status[2] = "0";
  233. UtisRun.TotCnt[2] = 0;
  234. UtisRun.RunCnt[2] = 0;
  235. UtisRun.LastTime[2] = sDirTime;
  236. }
  237. if (bImg)
  238. {
  239. UtisRun.Status[0] = "1";
  240. UtisRun.TotCnt[0] = nImgCnt;//m_nCctvCnt;
  241. if (nImgCnt > FTotCctvCnt)
  242. nImgCnt = FTotCctvCnt;
  243. UtisRun.RunCnt[0] = nImgCnt;
  244. UtisRun.LastTime[0] = sImgTime;
  245. //if (m_nCctvCnt != nImgCnt)
  246. //{
  247. // UtisRun.Status[0] = 2;
  248. //}
  249. }
  250. else
  251. {
  252. UtisRun.Status[0] = "0";
  253. UtisRun.TotCnt[0] = 0;//nImgCnt;//m_nCctvCnt;
  254. UtisRun.RunCnt[0] = 0;//nImgCnt;
  255. UtisRun.LastTime[0] = sImgTime;
  256. }
  257. }
  258. catch(EDatabaseError &E)
  259. {
  260. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  261. DBERRORMSG("TItsUtisManager::LoadUtisStatusUtisRun", String(E.ClassName()), E.Message, sQry);
  262. throw Exception(String(E.ClassName()) + E.Message);
  263. }
  264. catch(Exception &exception)
  265. {
  266. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  267. DBERRORMSG("TItsUtisManager::LoadUtisStatusUtisRun", String(exception.ClassName()), exception.Message, sQry);
  268. throw Exception(String(exception.ClassName()) + exception.Message);
  269. }
  270. }
  271. __finally
  272. {
  273. if (pADO)
  274. {
  275. pADO->Close();
  276. delete pADO;
  277. }
  278. }
  279. return true;
  280. }
  281. //---------------------------------------------------------------------------
  282. bool TItsUtisManager::LoadUtisStatusRseRun(TADOConnection *ADbConn/*=NULL*/)
  283. {
  284. String sQry;
  285. TADOQuery *pADO = NULL;
  286. return true;
  287. sQry = "SELECT 0 AS COLTYPE, COUNT(1) AS UPCNT \r\n"
  288. " FROM RUTIS.RSEMST \r\n"
  289. "UNION ALL \r\n"
  290. "SELECT 1 AS COLTYPE, COUNT(1) AS UPCNT \r\n"
  291. " FROM RUTIS.RSEOPSTATE A, RUTIS.RSEMST B \r\n"
  292. " WHERE B.RSEID = A.RSEID \r\n"
  293. " AND A.COLLDT > SYSDATE - 30/1440 \r\n";
  294. try
  295. {
  296. try
  297. {
  298. pADO = new TADOQuery(NULL);
  299. pADO->Close();
  300. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  301. pADO->SQL->Clear();
  302. pADO->SQL->Text = sQry;
  303. pADO->Prepared = true;
  304. pADO->Open();
  305. for( ; !pADO->Eof; pADO->Next())
  306. {
  307. int nColType = pADO->FieldByName("COLTYPE")->AsInteger;
  308. if (nColType >= 0 && nColType < MAX_UTIS_RUN)
  309. {
  310. RseRun[nColType] = pADO->FieldByName("UPCNT")->AsInteger;
  311. }
  312. }
  313. }
  314. catch(EDatabaseError &E)
  315. {
  316. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  317. DBERRORMSG("TItsUtisManager::LoadUtisStatusRseRun", String(E.ClassName()), E.Message, sQry);
  318. throw Exception(String(E.ClassName()) + E.Message);
  319. }
  320. catch(Exception &exception)
  321. {
  322. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  323. DBERRORMSG("TItsUtisManager::LoadUtisStatusRseRun", String(exception.ClassName()), exception.Message, sQry);
  324. throw Exception(String(exception.ClassName()) + exception.Message);
  325. }
  326. }
  327. __finally
  328. {
  329. if (pADO)
  330. {
  331. pADO->Close();
  332. delete pADO;
  333. }
  334. ItsUtisManager->FLists.UnLock();
  335. }
  336. return true;
  337. }
  338. //---------------------------------------------------------------------------