CDSDsrcF.cpp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSDsrcF.h"
  4. #include "ITSDbF.h"
  5. #include "AppGlobalF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. TItsDsrc::TItsDsrc()
  9. {
  10. FCompleted = false;
  11. FEditMode = DB_INIT;
  12. FGridIndex = -1;
  13. MEM_DEL = "N";
  14. //Clear();
  15. }
  16. //---------------------------------------------------------------------------
  17. void TItsDsrc::Clear()
  18. {
  19. ID = "";
  20. RSE_ID = "";
  21. ROAD_SPOT_ID = "";
  22. LOG_CNNC_ID = "";
  23. LOG_CNNC_PW = "";
  24. ISTL_LCTN_NM = "";
  25. LCTN_X = "";
  26. LCTN_Y = "";
  27. IP = "";
  28. PORT = "";
  29. MNFC_CMPY_CD = "";
  30. DEL_YN = "";
  31. MEM_DEL = "";
  32. CLCT_ABNR_BASI = 0;
  33. }
  34. //---------------------------------------------------------------------------
  35. TItsDsrc::~TItsDsrc()
  36. {
  37. }
  38. //---------------------------------------------------------------------------
  39. //---------------------------------------------------------------------------
  40. TItsDsrcManager *ItsDsrcManager = NULL;
  41. //---------------------------------------------------------------------------
  42. /*
  43. * Dsrc Manager
  44. */
  45. TItsDsrcManager::TItsDsrcManager()
  46. {
  47. }
  48. //---------------------------------------------------------------------------
  49. TItsDsrcManager::~TItsDsrcManager()
  50. {
  51. FLists.RemoveAll();
  52. }
  53. //---------------------------------------------------------------------------
  54. bool TItsDsrcManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  55. {
  56. String sQry;
  57. TADOQuery *pADO = NULL;
  58. sQry = "SELECT ID, \r\n"
  59. " RSE_ID, \r\n"
  60. " ROAD_SPOT_ID, \r\n"
  61. " LOG_CNNC_ID, \r\n"
  62. " LOG_CNNC_PW, \r\n"
  63. " ISTL_LCTN_NM, \r\n"
  64. " LCTN_X, \r\n"
  65. " LCTN_Y, \r\n"
  66. " IP, \r\n"
  67. " PORT, \r\n"
  68. " MNFC_CMPY_CD, \r\n"
  69. " DEL_YN, \r\n"
  70. " CLCT_ABNR_BASI \r\n"
  71. " FROM TB_RSE_MSTR \r\n";
  72. //" WHERE DEL_YN = 'N' \r\n";
  73. //" ORDER BY TO_NUMBER(ID) \r\n";
  74. try
  75. {
  76. FLists.Lock();
  77. FLists.RemoveAll();
  78. try
  79. {
  80. pADO = new TADOQuery(NULL);
  81. pADO->Close();
  82. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  83. pADO->SQL->Clear();
  84. pADO->SQL->Text = sQry;
  85. pADO->Prepared = true;
  86. pADO->Open();
  87. for( ; !pADO->Eof; pADO->Next())
  88. {
  89. TItsDsrc *pObj = new TItsDsrc();
  90. pObj->ID = pADO->FieldByName("ID")->AsString;
  91. pObj->RSE_ID = pADO->FieldByName("RSE_ID")->AsString;
  92. pObj->ROAD_SPOT_ID = pADO->FieldByName("ROAD_SPOT_ID")->AsString;
  93. pObj->LOG_CNNC_ID = pADO->FieldByName("LOG_CNNC_ID")->AsString;
  94. pObj->LOG_CNNC_PW = pADO->FieldByName("LOG_CNNC_PW")->AsString;
  95. pObj->ISTL_LCTN_NM = pADO->FieldByName("ISTL_LCTN_NM")->AsString;
  96. pObj->LCTN_X = pADO->FieldByName("LCTN_X")->AsString;
  97. pObj->LCTN_Y = pADO->FieldByName("LCTN_Y")->AsString;
  98. pObj->IP = pADO->FieldByName("IP")->AsString;
  99. pObj->PORT = pADO->FieldByName("PORT")->AsString;
  100. pObj->MNFC_CMPY_CD = pADO->FieldByName("MNFC_CMPY_CD")->AsString;
  101. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  102. pObj->CLCT_ABNR_BASI = pADO->FieldByName("CLCT_ABNR_BASI")->AsInteger;
  103. FLists.Push(pObj->ID, pObj);
  104. pObj->Completed = true;
  105. pObj->MEM_DEL = "N";
  106. }
  107. }
  108. catch(EDatabaseError &E)
  109. {
  110. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  111. DBERRORMSG("RSE정보조회", String(E.ClassName()), E.Message, sQry);
  112. throw Exception(String(E.ClassName()) + E.Message);
  113. }
  114. catch(Exception &exception)
  115. {
  116. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  117. DBERRORMSG("RSE정보조회", String(exception.ClassName()), exception.Message, sQry);
  118. throw Exception(String(exception.ClassName()) + exception.Message);
  119. }
  120. }
  121. __finally
  122. {
  123. if (pADO)
  124. {
  125. pADO->Close();
  126. delete pADO;
  127. }
  128. FLists.UnLock();
  129. }
  130. return true;
  131. }
  132. //---------------------------------------------------------------------------
  133. bool TItsDsrcManager::GetNextRseId(String &ANewId, TADOConnection *ADbConn/*=NULL*/)
  134. {
  135. String sQry;
  136. TADOQuery *pADO = NULL;
  137. sQry = "SELECT TO_NUMBER(CASE WHEN EXISTS (SELECT 1 FROM TB_RSE_MSTR) \r\n"
  138. " THEN (SELECT TRIM(MAX(TO_NUMBER(ID)) + 1) \r\n"
  139. " FROM TB_RSE_MSTR) \r\n"
  140. " ELSE '1' END) NEWID \r\n"
  141. " FROM DUAL \r\n";
  142. ANewId = "";
  143. try
  144. {
  145. try
  146. {
  147. pADO = new TADOQuery(NULL);
  148. pADO->Close();
  149. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  150. pADO->SQL->Clear();
  151. pADO->SQL->Text = sQry;
  152. pADO->Prepared = true;
  153. pADO->Open();
  154. ANewId = pADO->FieldByName("NEWID")->AsString;
  155. return true;
  156. }
  157. catch(EDatabaseError &E)
  158. {
  159. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  160. DBERRORMSG("RSE 신규ID조회", String(E.ClassName()), E.Message, sQry);
  161. throw Exception(String(E.ClassName()) + E.Message);
  162. }
  163. catch(Exception &exception)
  164. {
  165. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  166. DBERRORMSG("RSE 신규ID조회", String(exception.ClassName()), exception.Message, sQry);
  167. throw Exception(String(exception.ClassName()) + exception.Message);
  168. }
  169. }
  170. __finally
  171. {
  172. if (pADO)
  173. {
  174. pADO->Close();
  175. delete pADO;
  176. }
  177. }
  178. return false;
  179. }
  180. //---------------------------------------------------------------------------
  181. bool TItsDsrcManager::DeleteDsrc(TItsDsrc *AObj, TADOConnection *ADbConn/*=NULL*/)
  182. {
  183. String sQry;
  184. TADOQuery *pADO = NULL;
  185. sQry = "UPDATE TB_RSE_MSTR \r\n"
  186. " SET DEL_YN = 'Y' \r\n"
  187. " WHERE ID = :p01 \r\n";
  188. try
  189. {
  190. FLists.Lock();
  191. try
  192. {
  193. pADO = new TADOQuery(NULL);
  194. pADO->Close();
  195. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  196. pADO->SQL->Clear();
  197. pADO->SQL->Text = sQry;
  198. pADO->Parameters->ParamByName("p01")->Value = AObj->ID;
  199. pADO->ExecSQL();
  200. //TODO: 세종시
  201. sQry = "UPDATE TB_FCLT_INFR \r\n"
  202. " SET DEL_YN = 'Y' \r\n"
  203. " WHERE FCLT_ID = :p01 \r\n";
  204. #if 0
  205. //TODO: 기타지역
  206. sQry = "DELETE TB_FCLT_INFR \r\n"
  207. " WHERE FCLT_ID = :p01 \r\n";
  208. //" AND FCLT_TYPE = 'DSRC' \r\n";
  209. #endif
  210. pADO->SQL->Clear();
  211. pADO->SQL->Text = sQry;
  212. //TODO: 세종시
  213. pADO->Parameters->ParamByName("p01")->Value = AObj->RSE_ID;
  214. #if 0
  215. //TODO: 기타지역
  216. pADO->Parameters->ParamByName("p01")->Value = AObj->ID;
  217. #endif
  218. pADO->ExecSQL();
  219. return true;
  220. }
  221. catch(EDatabaseError &E)
  222. {
  223. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  224. DBERRORMSG("RSE정보삭제", String(E.ClassName()), E.Message, sQry);
  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. DBERRORMSG("RSE정보삭제", String(exception.ClassName()), exception.Message, sQry);
  231. throw Exception(String(exception.ClassName()) + exception.Message);
  232. }
  233. }
  234. __finally
  235. {
  236. if (pADO)
  237. {
  238. pADO->Close();
  239. delete pADO;
  240. }
  241. FLists.UnLock();
  242. }
  243. return true;
  244. }
  245. //---------------------------------------------------------------------------
  246. bool TItsDsrcManager::UpdateDsrc(String AOldRseId, TItsDsrc *AObj, TADOConnection *ADbConn/*=NULL*/)
  247. {
  248. String sQry;
  249. TADOQuery *pADO = NULL;
  250. sQry = "UPDATE TB_RSE_MSTR \r\n"
  251. " SET RSE_ID = :p02, \r\n"
  252. " ROAD_SPOT_ID = :p03, \r\n"
  253. " LOG_CNNC_ID = :p04, \r\n"
  254. " LOG_CNNC_PW = :p05, \r\n"
  255. " ISTL_LCTN_NM = :p06, \r\n"
  256. " LCTN_X = :p07, \r\n"
  257. " LCTN_Y = :p08, \r\n"
  258. " IP = :p09, \r\n"
  259. " PORT = :p10, \r\n"
  260. " MNFC_CMPY_CD = :p11, \r\n"
  261. " DEL_YN = :p12, \r\n"
  262. " CLCT_ABNR_BASI = :p13 \r\n"
  263. " WHERE ID = :p01 \r\n";
  264. try
  265. {
  266. FLists.Lock();
  267. try
  268. {
  269. pADO = new TADOQuery(NULL);
  270. pADO->Close();
  271. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  272. pADO->SQL->Clear();
  273. pADO->SQL->Text = sQry;
  274. if (AObj->DEL_YN == "") AObj->DEL_YN = "N";
  275. pADO->Parameters->ParamByName("p01")->Value = AObj->ID;
  276. pADO->Parameters->ParamByName("p02")->Value = AObj->RSE_ID;
  277. pADO->Parameters->ParamByName("p03")->Value = AObj->ROAD_SPOT_ID;
  278. pADO->Parameters->ParamByName("p04")->Value = AObj->LOG_CNNC_ID;
  279. pADO->Parameters->ParamByName("p05")->Value = AObj->LOG_CNNC_PW;
  280. pADO->Parameters->ParamByName("p06")->Value = AObj->ISTL_LCTN_NM;
  281. pADO->Parameters->ParamByName("p07")->Value = AObj->LCTN_X;
  282. pADO->Parameters->ParamByName("p08")->Value = AObj->LCTN_Y;
  283. pADO->Parameters->ParamByName("p09")->Value = AObj->IP;
  284. pADO->Parameters->ParamByName("p10")->Value = AObj->PORT;
  285. pADO->Parameters->ParamByName("p11")->Value = AObj->MNFC_CMPY_CD;
  286. pADO->Parameters->ParamByName("p12")->Value = AObj->DEL_YN;
  287. pADO->Parameters->ParamByName("p13")->Value = AObj->CLCT_ABNR_BASI;
  288. pADO->ExecSQL();
  289. sQry = "UPDATE TB_FCLT_INFR \r\n"
  290. " SET FCLT_LCTN = :p02, \r\n"
  291. " DEL_YN = 'N' \r\n"
  292. " WHERE FCLT_ID = :p01 \r\n";
  293. //" AND FCLT_TYPE = 'DSRC' \r\n";
  294. pADO->SQL->Clear();
  295. pADO->SQL->Text = sQry;
  296. pADO->Parameters->ParamByName("p01")->Value = AObj->RSE_ID;
  297. pADO->Parameters->ParamByName("p02")->Value = AObj->ISTL_LCTN_NM;
  298. pADO->ExecSQL();
  299. return true;
  300. }
  301. catch(EDatabaseError &E)
  302. {
  303. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  304. DBERRORMSG("RSE정보업데이트", String(E.ClassName()), E.Message, sQry);
  305. throw Exception(String(E.ClassName()) + E.Message);
  306. }
  307. catch(Exception &exception)
  308. {
  309. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  310. DBERRORMSG("RSE정보업데이트", String(exception.ClassName()), exception.Message, sQry);
  311. throw Exception(String(exception.ClassName()) + exception.Message);
  312. }
  313. }
  314. __finally
  315. {
  316. if (pADO)
  317. {
  318. pADO->Close();
  319. delete pADO;
  320. }
  321. FLists.UnLock();
  322. }
  323. return true;
  324. }
  325. //---------------------------------------------------------------------------
  326. bool TItsDsrcManager::InsertDsrc(TItsDsrc *AObj, TADOConnection *ADbConn/*=NULL*/)
  327. {
  328. String sQry;
  329. TADOQuery *pADO = NULL;
  330. sQry = "INSERT INTO TB_RSE_MSTR(ID, RSE_ID, ROAD_SPOT_ID, LOG_CNNC_ID, LOG_CNNC_PW, \r\n"
  331. " ISTL_LCTN_NM, LCTN_X, LCTN_Y, IP, PORT, \r\n"
  332. " MNFC_CMPY_CD, DEL_YN, CLCT_ABNR_BASI) \r\n"
  333. " VALUES(:p01, :p02, :p03, :p04, :p05, \r\n"
  334. " :p06, :p07, :p08, :p09, :p10, \r\n"
  335. " :p11, :p12, :p13) \r\n";
  336. try
  337. {
  338. FLists.Lock();
  339. try
  340. {
  341. pADO = new TADOQuery(NULL);
  342. pADO->Close();
  343. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  344. pADO->SQL->Clear();
  345. pADO->SQL->Text = sQry;
  346. pADO->Parameters->ParamByName("p01")->Value = AObj->ID;
  347. pADO->Parameters->ParamByName("p02")->Value = AObj->RSE_ID;
  348. pADO->Parameters->ParamByName("p03")->Value = AObj->ROAD_SPOT_ID;
  349. pADO->Parameters->ParamByName("p04")->Value = AObj->LOG_CNNC_ID;
  350. pADO->Parameters->ParamByName("p05")->Value = AObj->LOG_CNNC_PW;
  351. pADO->Parameters->ParamByName("p06")->Value = AObj->ISTL_LCTN_NM;
  352. pADO->Parameters->ParamByName("p07")->Value = AObj->LCTN_X;
  353. pADO->Parameters->ParamByName("p08")->Value = AObj->LCTN_Y;
  354. pADO->Parameters->ParamByName("p09")->Value = AObj->IP;
  355. pADO->Parameters->ParamByName("p10")->Value = AObj->PORT;
  356. pADO->Parameters->ParamByName("p11")->Value = AObj->MNFC_CMPY_CD;
  357. pADO->Parameters->ParamByName("p12")->Value = AObj->DEL_YN;
  358. pADO->Parameters->ParamByName("p13")->Value = AObj->CLCT_ABNR_BASI;
  359. pADO->ExecSQL();
  360. sQry = "INSERT INTO TB_FCLT_INFR(FCLT_ID, FCLT_TYPE, FCLT_LCTN, RSCE_YN, DEL_YN, USE_YEAR, AMT) \r\n"
  361. " VALUES(:p01, 'DSRC', :p03, 'N', 'N', '0', '0') \r\n";
  362. pADO->SQL->Clear();
  363. pADO->SQL->Text = sQry;
  364. pADO->Parameters->ParamByName("p01")->Value = AObj->RSE_ID;
  365. pADO->Parameters->ParamByName("p03")->Value = AObj->ISTL_LCTN_NM;
  366. pADO->ExecSQL();
  367. return true;
  368. }
  369. catch(EDatabaseError &E)
  370. {
  371. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  372. DBERRORMSG("RSE정보입력", String(E.ClassName()), E.Message, sQry);
  373. throw Exception(String(E.ClassName()) + E.Message);
  374. }
  375. catch(Exception &exception)
  376. {
  377. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  378. DBERRORMSG("RSE정보입력", String(exception.ClassName()), exception.Message, sQry);
  379. throw Exception(String(exception.ClassName()) + exception.Message);
  380. }
  381. }
  382. __finally
  383. {
  384. if (pADO)
  385. {
  386. pADO->Close();
  387. delete pADO;
  388. }
  389. FLists.UnLock();
  390. }
  391. return true;
  392. }
  393. //---------------------------------------------------------------------------
  394. bool TItsDsrcManager::UpdateClctAbnrBasi(int AClctAbnrBasi, TADOConnection *ADbConn/*=NULL*/)
  395. {
  396. String sQry;
  397. TADOQuery *pADO = NULL;
  398. sQry = "UPDATE TB_RSE_MSTR \r\n"
  399. " SET CLCT_ABNR_BASI = :p01 \r\n";
  400. try
  401. {
  402. FLists.Lock();
  403. try
  404. {
  405. pADO = new TADOQuery(NULL);
  406. pADO->Close();
  407. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  408. pADO->SQL->Clear();
  409. pADO->SQL->Text = sQry;
  410. pADO->Parameters->ParamByName("p01")->Value = AClctAbnrBasi;
  411. pADO->ExecSQL();
  412. FOR_STL(TItsDsrc*, pObj, FLists)
  413. {
  414. if (pObj->DEL_YN == "Y") continue;
  415. pObj->CLCT_ABNR_BASI = AClctAbnrBasi;
  416. }
  417. return true;
  418. }
  419. catch(EDatabaseError &E)
  420. {
  421. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  422. DBERRORMSG("RSE정보업데이트", String(E.ClassName()), E.Message, sQry);
  423. throw Exception(String(E.ClassName()) + E.Message);
  424. }
  425. catch(Exception &exception)
  426. {
  427. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  428. DBERRORMSG("RSE정보업데이트", String(exception.ClassName()), exception.Message, sQry);
  429. throw Exception(String(exception.ClassName()) + exception.Message);
  430. }
  431. }
  432. __finally
  433. {
  434. if (pADO)
  435. {
  436. pADO->Close();
  437. delete pADO;
  438. }
  439. FLists.UnLock();
  440. }
  441. return true;
  442. }
  443. //---------------------------------------------------------------------------