CDSTrafficOprLinkF.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSTrafficOprLinkF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TItsTrafficOprLink::TItsTrafficOprLink()
  8. {
  9. Clear();
  10. FGridIndex = -1; // 그리드 인덱스
  11. }
  12. //---------------------------------------------------------------------------
  13. void TItsTrafficOprLink::Clear()
  14. {
  15. #if 0
  16. FLINK_ID = ""; // 링크ID
  17. FCRTN_DT = ""; // 생성 일시
  18. FAPLY_STRT_DT = ""; // 적용 시작 일시
  19. FAPLY_END_DT = ""; // 적용 종료 일시
  20. FTFVL = ""; // 교통량
  21. FSPED = ""; // 속도
  22. FOCPY_RATE = ""; // 점유율
  23. FTRVL_HH = ""; // 통행 시간
  24. FGridIndex = -1; // 그리드 인덱스
  25. #endif
  26. }
  27. //---------------------------------------------------------------------------
  28. TItsTrafficOprLink::~TItsTrafficOprLink()
  29. {
  30. }
  31. //---------------------------------------------------------------------------
  32. void TItsTrafficOprLink::SetValue(String &AOrgValue, String AValue)
  33. {
  34. if (AOrgValue != AValue)
  35. {
  36. AOrgValue = AValue;
  37. if (FCompleted) FModified = true;
  38. }
  39. }
  40. //---------------------------------------------------------------------------
  41. void TItsTrafficOprLink::SetFLINK_ID(String AValue)
  42. {
  43. SetValue(FLINK_ID, AValue);
  44. }
  45. //---------------------------------------------------------------------------
  46. void TItsTrafficOprLink::SetFCRTN_DT(String AValue)
  47. {
  48. SetValue(FCRTN_DT, AValue);
  49. }
  50. //---------------------------------------------------------------------------
  51. void TItsTrafficOprLink::SetFAPLY_STRT_DT(String AValue)
  52. {
  53. SetValue(FAPLY_STRT_DT, AValue);
  54. }
  55. //---------------------------------------------------------------------------
  56. void TItsTrafficOprLink::SetFAPLY_END_DT(String AValue)
  57. {
  58. SetValue(FAPLY_END_DT, AValue);
  59. }
  60. //---------------------------------------------------------------------------
  61. void TItsTrafficOprLink::SetFTFVL(String AValue)
  62. {
  63. SetValue(FTFVL, AValue);
  64. }
  65. //---------------------------------------------------------------------------
  66. void TItsTrafficOprLink::SetFSPED(String AValue)
  67. {
  68. SetValue(FSPED, AValue);
  69. }
  70. //---------------------------------------------------------------------------
  71. void TItsTrafficOprLink::SetFOCPY_RATE(String AValue)
  72. {
  73. SetValue(FOCPY_RATE, AValue);
  74. }
  75. //---------------------------------------------------------------------------
  76. void TItsTrafficOprLink::SetFTRVL_HH(String AValue)
  77. {
  78. SetValue(FTRVL_HH, AValue);
  79. }
  80. //---------------------------------------------------------------------------
  81. //---------------------------------------------------------------------------
  82. TItsTrafficOprLinkManager *ItsTrafficOprLinkManager = NULL;
  83. //---------------------------------------------------------------------------
  84. /*
  85. * TrafficOprLink Manager
  86. */
  87. TItsTrafficOprLinkManager::TItsTrafficOprLinkManager()
  88. {
  89. }
  90. //---------------------------------------------------------------------------
  91. TItsTrafficOprLinkManager::~TItsTrafficOprLinkManager()
  92. {
  93. }
  94. //---------------------------------------------------------------------------
  95. bool TItsTrafficOprLinkManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  96. {
  97. String sQry;
  98. TADOQuery *pADO = NULL;
  99. sQry = "SELECT LINK_ID, CRTN_DT, \r\n"
  100. " APLY_STRT_DT, APLY_END_DT, \r\n"
  101. " NVL(TFVL, 0) AS TFVL, \r\n"
  102. " NVL(SPED, 0) AS SPED, \r\n"
  103. " NVL(OCPY_RATE, 0) AS OCPY_RATE, \r\n"
  104. " NVL(TRVL_HH, 0) AS TRVL_HH \r\n"
  105. " FROM TB_LINK_SYOP_TRAF \r\n";
  106. // " ORDER BY 1, 2 \r\n";
  107. try
  108. {
  109. FDataSeq = 0;
  110. FLists.Lock();
  111. FLists.RemoveAll();
  112. try
  113. {
  114. pADO = new TADOQuery(NULL);
  115. pADO->Close();
  116. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  117. pADO->SQL->Clear();
  118. pADO->SQL->Text = sQry;
  119. pADO->Open();
  120. for( ; !pADO->Eof; pADO->Next())
  121. {
  122. TItsTrafficOprLink *pTrafficOprLink = new TItsTrafficOprLink();
  123. pTrafficOprLink->FLINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  124. pTrafficOprLink->FCRTN_DT = pADO->FieldByName("CRTN_DT")->AsString;
  125. pTrafficOprLink->FAPLY_STRT_DT = pADO->FieldByName("APLY_STRT_DT")->AsString;
  126. pTrafficOprLink->FAPLY_END_DT = pADO->FieldByName("APLY_END_DT")->AsString;
  127. pTrafficOprLink->FTFVL = pADO->FieldByName("TFVL")->AsString;
  128. pTrafficOprLink->FSPED = pADO->FieldByName("SPED")->AsString;
  129. pTrafficOprLink->FOCPY_RATE = pADO->FieldByName("OCPY_RATE")->AsString;
  130. pTrafficOprLink->FTRVL_HH = pADO->FieldByName("TRVL_HH")->AsString;
  131. FLists.Push(String(FDataSeq++), pTrafficOprLink);
  132. pTrafficOprLink->Completed = true;
  133. }
  134. }
  135. catch(EDatabaseError &E)
  136. {
  137. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  138. DBERRORMSG("TItsTrafficOprLinkManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  139. throw Exception(String(E.ClassName()) + E.Message);
  140. }
  141. catch(Exception &exception)
  142. {
  143. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  144. DBERRORMSG("TItsTrafficOprLinkManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  145. throw Exception(String(exception.ClassName()) + exception.Message);
  146. }
  147. }
  148. __finally
  149. {
  150. if (pADO)
  151. {
  152. pADO->Close();
  153. delete pADO;
  154. }
  155. FLists.UnLock();
  156. }
  157. return true;
  158. }
  159. //---------------------------------------------------------------------------
  160. bool TItsTrafficOprLinkManager::AllDelete(TADOConnection *ADbConn/*=NULL*/)
  161. {
  162. String sQry;
  163. TADOQuery *pADO = NULL;
  164. sQry = "DELETE FROM TB_LINK_SYOP_TRAF \r\n";
  165. try
  166. {
  167. FDataSeq = 0;
  168. FLists.Lock();
  169. FLists.RemoveAll();
  170. try
  171. {
  172. pADO = new TADOQuery(NULL);
  173. pADO->Close();
  174. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  175. pADO->SQL->Clear();
  176. pADO->SQL->Text = sQry;
  177. pADO->ExecSQL();
  178. }
  179. catch(EDatabaseError &E)
  180. {
  181. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  182. DBERRORMSG("TItsTrafficOprLinkManager::AllDelete", String(E.ClassName()), E.Message, sQry);
  183. throw Exception(String(E.ClassName()) + E.Message);
  184. }
  185. catch(Exception &exception)
  186. {
  187. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  188. DBERRORMSG("TItsTrafficOprLinkManager::AllDelete", String(exception.ClassName()), exception.Message, sQry);
  189. throw Exception(String(exception.ClassName()) + exception.Message);
  190. }
  191. }
  192. __finally
  193. {
  194. if (pADO)
  195. {
  196. pADO->Close();
  197. delete pADO;
  198. }
  199. FLists.UnLock();
  200. }
  201. return true;
  202. }
  203. //---------------------------------------------------------------------------
  204. bool TItsTrafficOprLinkManager::AllApply(int ALinkLevel, TADOConnection *ADbConn/*=NULL*/)
  205. {
  206. String sQry;
  207. TADOQuery *pADO = NULL;
  208. if (ALinkLevel == 1)
  209. {
  210. sQry = "INSERT INTO TB_LINK_SYOP_TRAF(LINK_ID, CRTN_DT, APLY_STRT_DT, APLY_END_DT, TFVL, SPED, OCPY_RATE, TRVL_HH) \r\n"
  211. "SELECT LINK_ID, \r\n"
  212. " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS CRTN_DT, \r\n"
  213. " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS APLY_STRT_DT, \r\n"
  214. " TO_CHAR(SYSDATE+1, 'YYYYMMDDHH24MISS') AS APLY_END_DT, \r\n"
  215. " 0, \r\n"
  216. " 100, \r\n"
  217. " 0, \r\n"
  218. " 0 \r\n"
  219. " FROM TB_LINK_TRAF \r\n"
  220. " WHERE SPED > 0 \r\n";
  221. }
  222. else if (ALinkLevel == 2)
  223. {
  224. sQry = "INSERT INTO TB_LINK_SYOP_TRAF(LINK_ID, CRTN_DT, APLY_STRT_DT, APLY_END_DT, TFVL, SPED, OCPY_RATE, TRVL_HH) \r\n"
  225. "SELECT IFSC_ID, \r\n"
  226. " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS CRTN_DT, \r\n"
  227. " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS APLY_STRT_DT, \r\n"
  228. " TO_CHAR(SYSDATE+1, 'YYYYMMDDHH24MISS') AS APLY_END_DT, \r\n"
  229. " 0, \r\n"
  230. " 100, \r\n"
  231. " 0, \r\n"
  232. " 0 \r\n"
  233. " FROM TB_IFSC_TRAF \r\n"
  234. " WHERE SPED > 0 \r\n";
  235. }
  236. else return true;
  237. try
  238. {
  239. String sSysDate = Now().FormatString("YYYYMMDDHHNNSS");
  240. FLists.Lock();
  241. try
  242. {
  243. pADO = new TADOQuery(NULL);
  244. pADO->Close();
  245. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  246. pADO->SQL->Clear();
  247. pADO->SQL->Text = sQry;
  248. //pADO->Parameters->ParamByName("p01")->Value = sSysDate
  249. pADO->ExecSQL();
  250. }
  251. catch(EDatabaseError &E)
  252. {
  253. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  254. DBERRORMSG("TItsTrafficOprLinkManager::AllApply", String(E.ClassName()), E.Message, sQry);
  255. throw Exception(String(E.ClassName()) + E.Message);
  256. }
  257. catch(Exception &exception)
  258. {
  259. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  260. DBERRORMSG("TItsTrafficOprLinkManager::AllApply", String(exception.ClassName()), exception.Message, sQry);
  261. throw Exception(String(exception.ClassName()) + exception.Message);
  262. }
  263. }
  264. __finally
  265. {
  266. if (pADO)
  267. {
  268. pADO->Close();
  269. delete pADO;
  270. }
  271. FLists.UnLock();
  272. }
  273. return true;
  274. }
  275. //---------------------------------------------------------------------------