CDSRepeatCongestF.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSRepeatCongestF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TItsRepeatCongest::TItsRepeatCongest()
  8. {
  9. }
  10. //---------------------------------------------------------------------------
  11. TItsRepeatCongest::~TItsRepeatCongest()
  12. {
  13. }
  14. //---------------------------------------------------------------------------
  15. //---------------------------------------------------------------------------
  16. TItsRepeatCongestManager *ItsRepeatCongestManager = NULL;
  17. //---------------------------------------------------------------------------
  18. /*
  19. * RepeatCongest Manager
  20. */
  21. TItsRepeatCongestManager::TItsRepeatCongestManager()
  22. {
  23. }
  24. //---------------------------------------------------------------------------
  25. TItsRepeatCongestManager::~TItsRepeatCongestManager()
  26. {
  27. }
  28. //---------------------------------------------------------------------------
  29. bool TItsRepeatCongestManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  30. {
  31. bool bResult = true;
  32. String sQry;
  33. TADOQuery *pADO = NULL;
  34. sQry = "SELECT * \r\n"
  35. " FROM TB_REPT_CNGS_SECT \r\n";
  36. // " ORDER BY IFSC_ID \r\n";
  37. try
  38. {
  39. FDataSeq = 0;
  40. FLists.Lock();
  41. FListsCnfm.Lock();
  42. FLists.RemoveAll();
  43. FListsCnfm.RemoveAll();
  44. try
  45. {
  46. pADO = new TADOQuery(NULL);
  47. pADO->Close();
  48. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  49. pADO->SQL->Clear();
  50. pADO->SQL->Text = sQry;
  51. pADO->Prepared = true;
  52. pADO->Open();
  53. for( ; !pADO->Eof; pADO->Next())
  54. {
  55. TItsRepeatCongest *pRepeatCongest = new TItsRepeatCongest();
  56. pRepeatCongest->IFSC_ID = pADO->FieldByName("IFSC_ID")->AsString; // 정보제공구간 ID
  57. pRepeatCongest->STAT_YM = pADO->FieldByName("CRTN_YMD")->AsString; // 통계 년월
  58. pRepeatCongest->DAY_TYPE_CD = pADO->FieldByName("DAY_TYPE_CD")->AsString; // 요일 유형 코드
  59. pRepeatCongest->CNFS_STRT_HM = pADO->FieldByName("CNFS_STRT_HM")->AsString; // 혼잡 시작 시분
  60. pRepeatCongest->CNFS_END_HM = pADO->FieldByName("CNFS_END_HM")->AsString; // 혼잡 종료 시분
  61. pRepeatCongest->AVRG_SPED = pADO->FieldByName("AVRG_SPED")->AsString; // 평균 속도
  62. pRepeatCongest->AVRG_TRVL_HH = pADO->FieldByName("AVRG_TRVL_HH")->AsString; // 평균 통행 시간
  63. pRepeatCongest->DCSN_YN = pADO->FieldByName("DCSN_YN")->AsString; // 확정 여부
  64. pRepeatCongest->CRTN_YMD = pADO->FieldByName("CRTN_YMD")->AsString; // 생성 일자
  65. pRepeatCongest->REPT_CNGS_SECT_ORGN_CD = pADO->FieldByName("REPT_CNGS_SECT_ORGN_CD")->AsString; // 반복 정체 구간 원본 코드
  66. if( pRepeatCongest->DCSN_YN != "Y" )
  67. FLists.Push(String(FDataSeq++), pRepeatCongest);
  68. else
  69. FListsCnfm.Push(String(FDataSeq++), pRepeatCongest);
  70. pRepeatCongest->Completed = true;
  71. }
  72. }
  73. catch(EDatabaseError &E)
  74. {
  75. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  76. DBERRORLOG("TItsRepeatCongestManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  77. return false;
  78. throw Exception(String(E.ClassName()) + E.Message);
  79. }
  80. catch(Exception &exception)
  81. {
  82. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  83. DBERRORLOG("TItsRepeatCongestManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  84. return false;
  85. throw Exception(String(exception.ClassName()) + exception.Message);
  86. }
  87. }
  88. __finally
  89. {
  90. if (pADO)
  91. {
  92. pADO->Close();
  93. delete pADO;
  94. }
  95. FLists.UnLock();
  96. FListsCnfm.UnLock();
  97. }
  98. #if 1
  99. return bResult;
  100. #else
  101. return LoadFromDbWthrCnfm(ADbConn);
  102. #endif
  103. }
  104. //---------------------------------------------------------------------------
  105. bool TItsRepeatCongestManager::LoadFromDbWthr(TADOConnection *ADbConn/*=NULL*/)
  106. {
  107. bool bResult = true;
  108. String sQry;
  109. TADOQuery *pADO = NULL;
  110. sQry = "SELECT * \r\n"
  111. " FROM TB_REPT_CNGS_SECT_WTHR \r\n";
  112. // " ORDER BY IFSC_ID \r\n";
  113. try
  114. {
  115. FDataSeqWthr = 0;
  116. FListsWthr.Lock();
  117. FListsCnfmWthr.Lock();
  118. FListsWthr.RemoveAll();
  119. FListsCnfmWthr.RemoveAll();
  120. try
  121. {
  122. pADO = new TADOQuery(NULL);
  123. pADO->Close();
  124. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  125. pADO->SQL->Clear();
  126. pADO->SQL->Text = sQry;
  127. pADO->Prepared = true;
  128. pADO->Open();
  129. for( ; !pADO->Eof; pADO->Next())
  130. {
  131. TItsRepeatCongestWthr *pRepeatCongest = new TItsRepeatCongestWthr();
  132. pRepeatCongest->IFSC_ID = pADO->FieldByName("IFSC_ID")->AsString; // 정보제공구간 ID
  133. pRepeatCongest->CRTN_YMD = pADO->FieldByName("CRTN_YMD")->AsString; // 생성 일자
  134. pRepeatCongest->WTHR_TYPE_CD = pADO->FieldByName("WTHR_TYPE_CD")->AsString; // 기상 코드
  135. pRepeatCongest->CNFS_STRT_HM = pADO->FieldByName("CNFS_STRT_HM")->AsString; // 혼잡 시작 시분
  136. pRepeatCongest->CNFS_END_HM = pADO->FieldByName("CNFS_END_HM")->AsString; // 혼잡 종료 시분
  137. pRepeatCongest->AVRG_SPED = pADO->FieldByName("AVRG_SPED")->AsString; // 평균 속도
  138. pRepeatCongest->AVRG_TRVL_HH = pADO->FieldByName("AVRG_TRVL_HH")->AsString; // 평균 통행 시간
  139. pRepeatCongest->DCSN_YN = pADO->FieldByName("DCSN_YN")->AsString; // 확정 여부
  140. pRepeatCongest->REPT_CNGS_SECT_ORGN_CD = pADO->FieldByName("REPT_CNGS_SECT_ORGN_CD")->AsString; // 반복 정체 구간 원본 코드
  141. if( pRepeatCongest->DCSN_YN != "Y" )
  142. FListsWthr.Push(String(FDataSeqWthr++), pRepeatCongest);
  143. else
  144. FListsCnfmWthr.Push(String(FDataSeqWthr++), pRepeatCongest);
  145. pRepeatCongest->Completed = true;
  146. }
  147. }
  148. catch(EDatabaseError &E)
  149. {
  150. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  151. DBERRORLOG("TItsRepeatCongestManager::LoadFromDbWthr", String(E.ClassName()), E.Message, sQry);
  152. return false;
  153. throw Exception(String(E.ClassName()) + E.Message);
  154. }
  155. catch(Exception &exception)
  156. {
  157. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  158. DBERRORLOG("TItsRepeatCongestManager::LoadFromDbWthr", String(exception.ClassName()), exception.Message, sQry);
  159. return false;
  160. throw Exception(String(exception.ClassName()) + exception.Message);
  161. }
  162. }
  163. __finally
  164. {
  165. if (pADO)
  166. {
  167. pADO->Close();
  168. delete pADO;
  169. }
  170. FListsWthr.UnLock();
  171. FListsCnfmWthr.UnLock();
  172. }
  173. return bResult;
  174. }
  175. //---------------------------------------------------------------------------
  176. bool TItsRepeatCongestManager::LoadFromDbWthrCnfm(TADOConnection *ADbConn/*=NULL*/)
  177. {
  178. bool bResult = true;
  179. String sQry;
  180. TADOQuery *pADO = NULL;
  181. sQry = "SELECT * \r\n"
  182. " FROM TB_REPT_CNGS_SECT_WTHR \r\n"
  183. " WHERE DCSN_YN = 'Y' \r\n";
  184. // " ORDER BY IFSC_ID \r\n";
  185. try
  186. {
  187. FDataSeqWthr = 0;
  188. FListsWthr.Lock();
  189. FListsCnfmWthr.Lock();
  190. FListsWthr.RemoveAll();
  191. FListsCnfmWthr.RemoveAll();
  192. try
  193. {
  194. pADO = new TADOQuery(NULL);
  195. pADO->Close();
  196. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  197. pADO->SQL->Clear();
  198. pADO->SQL->Text = sQry;
  199. pADO->Prepared = true;
  200. pADO->Open();
  201. for( ; !pADO->Eof; pADO->Next())
  202. {
  203. TItsRepeatCongestWthr *pRepeatCongest = new TItsRepeatCongestWthr();
  204. pRepeatCongest->IFSC_ID = pADO->FieldByName("IFSC_ID")->AsString; // 정보제공구간 ID
  205. pRepeatCongest->CRTN_YMD = pADO->FieldByName("CRTN_YMD")->AsString; // 생성 일자
  206. pRepeatCongest->WTHR_TYPE_CD = pADO->FieldByName("WTHR_TYPE_CD")->AsString; // 기상 코드
  207. pRepeatCongest->CNFS_STRT_HM = pADO->FieldByName("CNFS_STRT_HM")->AsString; // 혼잡 시작 시분
  208. pRepeatCongest->CNFS_END_HM = pADO->FieldByName("CNFS_END_HM")->AsString; // 혼잡 종료 시분
  209. pRepeatCongest->AVRG_SPED = pADO->FieldByName("AVRG_SPED")->AsString; // 평균 속도
  210. pRepeatCongest->AVRG_TRVL_HH = pADO->FieldByName("AVRG_TRVL_HH")->AsString; // 평균 통행 시간
  211. pRepeatCongest->DCSN_YN = pADO->FieldByName("DCSN_YN")->AsString; // 확정 여부
  212. pRepeatCongest->REPT_CNGS_SECT_ORGN_CD = pADO->FieldByName("REPT_CNGS_SECT_ORGN_CD")->AsString; // 반복 정체 구간 원본 코드
  213. if( pRepeatCongest->DCSN_YN != "Y" )
  214. FListsWthr.Push(String(FDataSeqWthr++), pRepeatCongest);
  215. else
  216. FListsCnfmWthr.Push(String(FDataSeqWthr++), pRepeatCongest);
  217. pRepeatCongest->Completed = true;
  218. }
  219. }
  220. catch(EDatabaseError &E)
  221. {
  222. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  223. DBERRORLOG("TItsRepeatCongestManager::LoadFromDbWthrCnfm", String(E.ClassName()), E.Message, sQry);
  224. return false;
  225. throw Exception(String(E.ClassName()) + E.Message);
  226. }
  227. catch(Exception &exception)
  228. {
  229. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  230. DBERRORLOG("TItsRepeatCongestManager::LoadFromDbWthrCnfm", String(exception.ClassName()), exception.Message, sQry);
  231. return false;
  232. throw Exception(String(exception.ClassName()) + exception.Message);
  233. }
  234. }
  235. __finally
  236. {
  237. if (pADO)
  238. {
  239. pADO->Close();
  240. delete pADO;
  241. }
  242. FListsWthr.UnLock();
  243. FListsCnfmWthr.UnLock();
  244. }
  245. return bResult;
  246. }
  247. //---------------------------------------------------------------------------