CDSDsrcSectF.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSDsrcSectF.h"
  4. #include "ITS_OPLibF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TItsDsrcSectLink::TItsDsrcSectLink()
  8. {
  9. FCompleted = false;
  10. FEditMode = DB_INIT;
  11. FGridIndex = -1;
  12. MEM_DEL = "N";
  13. //Clear();
  14. }
  15. //---------------------------------------------------------------------------
  16. void TItsDsrcSectLink::Clear()
  17. {
  18. RSE_SECT_ID = "";
  19. LINK_ID = "";
  20. LINK_ORD = "";
  21. }
  22. //---------------------------------------------------------------------------
  23. TItsDsrcSectLink::~TItsDsrcSectLink()
  24. {
  25. }
  26. //---------------------------------------------------------------------------
  27. TItsDsrcSect::TItsDsrcSect()
  28. {
  29. FCompleted = false;
  30. FEditMode = DB_INIT;
  31. FGridIndex = -1;
  32. MEM_DEL = "N";
  33. //Clear();
  34. }
  35. //---------------------------------------------------------------------------
  36. void TItsDsrcSect::Clear()
  37. {
  38. String RSE_SECT_ID = "";
  39. String DSTC = "";
  40. String RSE_SECT_NM = "";
  41. String STRT_SPOT_NM = "";
  42. String END_SPOT_NM = "";
  43. String DEL_YN = "";
  44. String STRT_ID = "";
  45. String END_ID = "";
  46. }
  47. //---------------------------------------------------------------------------
  48. TItsDsrcSect::~TItsDsrcSect()
  49. {
  50. }
  51. //---------------------------------------------------------------------------
  52. //---------------------------------------------------------------------------
  53. TItsDsrcSectManager *ItsDsrcSectManager = NULL;
  54. //---------------------------------------------------------------------------
  55. /*
  56. * DsrcSect Manager
  57. */
  58. TItsDsrcSectManager::TItsDsrcSectManager()
  59. {
  60. }
  61. //---------------------------------------------------------------------------
  62. TItsDsrcSectManager::~TItsDsrcSectManager()
  63. {
  64. FLists.RemoveAll();
  65. }
  66. //---------------------------------------------------------------------------
  67. bool TItsDsrcSectManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  68. {
  69. FLists.RemoveAll();
  70. LoadSectMstr(ADbConn);
  71. LoadSectLink(ADbConn);
  72. return true;
  73. }
  74. //---------------------------------------------------------------------------
  75. bool TItsDsrcSectManager::LoadSectLink(TADOConnection *ADbConn/*=NULL*/)
  76. {
  77. String sQry;
  78. TADOQuery *pADO = NULL;
  79. sQry = "SELECT RSE_SECT_ID, \r\n"
  80. " LINK_ID, \r\n"
  81. " LINK_ORD \r\n"
  82. " FROM TB_RSE_SECT_LINK \r\n";
  83. try
  84. {
  85. FLists.Lock();
  86. try
  87. {
  88. pADO = new TADOQuery(NULL);
  89. pADO->Close();
  90. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  91. pADO->SQL->Clear();
  92. pADO->SQL->Text = sQry;
  93. pADO->Prepared = true;
  94. pADO->Open();
  95. for( ; !pADO->Eof; pADO->Next())
  96. {
  97. String sRseSectId = pADO->FieldByName("RSE_SECT_ID")->AsString;
  98. TItsDsrcSect *pObj = FLists.Find(sRseSectId);
  99. if (!pObj) continue;
  100. TItsDsrcSectLink *pLinkObj = new TItsDsrcSectLink();
  101. pLinkObj->RSE_SECT_ID = pADO->FieldByName("RSE_SECT_ID")->AsString;
  102. pLinkObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  103. pLinkObj->LINK_ORD = pADO->FieldByName("LINK_ORD")->AsString;
  104. pLinkObj->DEL_YN = "N";
  105. pObj->FLinkLists.Push(pLinkObj->LINK_ORD, pLinkObj);
  106. pLinkObj->Completed = true;
  107. pLinkObj->MEM_DEL = "N";
  108. }
  109. }
  110. catch(EDatabaseError &E)
  111. {
  112. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  113. DBERRORMSG("RSE구간링크정보조회", String(E.ClassName()), E.Message, sQry);
  114. throw Exception(String(E.ClassName()) + E.Message);
  115. }
  116. catch(Exception &exception)
  117. {
  118. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  119. DBERRORMSG("RSE구간링크정보조회", String(exception.ClassName()), exception.Message, sQry);
  120. throw Exception(String(exception.ClassName()) + exception.Message);
  121. }
  122. }
  123. __finally
  124. {
  125. if (pADO)
  126. {
  127. pADO->Close();
  128. delete pADO;
  129. }
  130. FLists.UnLock();
  131. }
  132. return true;
  133. }
  134. //---------------------------------------------------------------------------
  135. bool TItsDsrcSectManager::LoadSectMstr(TADOConnection *ADbConn/*=NULL*/)
  136. {
  137. String sQry;
  138. TADOQuery *pADO = NULL;
  139. sQry = "SELECT RSE_SECT_ID , \r\n"
  140. " DSTC , \r\n"
  141. " RSE_SECT_NM , \r\n"
  142. " STRT_SPOT_NM, \r\n"
  143. " END_SPOT_NM , \r\n"
  144. " DEL_YN , \r\n"
  145. " STRT_ID , \r\n"
  146. " END_ID \r\n"
  147. " FROM TB_RSE_SECT_MSTR \r\n";
  148. //" WHERE DEL_YN = 'N' \r\n";
  149. //" ORDER BY TO_NUMBER(RSE_SECT_ID) \r\n";
  150. try
  151. {
  152. FLists.Lock();
  153. FLists.RemoveAll();
  154. try
  155. {
  156. pADO = new TADOQuery(NULL);
  157. pADO->Close();
  158. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  159. pADO->SQL->Clear();
  160. pADO->SQL->Text = sQry;
  161. pADO->Prepared = true;
  162. pADO->Open();
  163. for( ; !pADO->Eof; pADO->Next())
  164. {
  165. TItsDsrcSect *pObj = new TItsDsrcSect();
  166. pObj->RSE_SECT_ID = pADO->FieldByName("RSE_SECT_ID")->AsString;
  167. pObj->DSTC = pADO->FieldByName("DSTC")->AsString;
  168. pObj->RSE_SECT_NM = pADO->FieldByName("RSE_SECT_NM")->AsString;
  169. pObj->STRT_SPOT_NM = pADO->FieldByName("STRT_SPOT_NM")->AsString;
  170. pObj->END_SPOT_NM = pADO->FieldByName("END_SPOT_NM")->AsString;
  171. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  172. pObj->STRT_ID = pADO->FieldByName("STRT_ID")->AsString;
  173. pObj->END_ID = pADO->FieldByName("END_ID")->AsString;
  174. FLists.Push(pObj->RSE_SECT_ID, pObj);
  175. pObj->Completed = true;
  176. pObj->MEM_DEL = "N";
  177. }
  178. }
  179. catch(EDatabaseError &E)
  180. {
  181. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  182. DBERRORMSG("RSE구간정보조회", 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("RSE구간정보조회", 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 TItsDsrcSectManager::GetNextSectId(String &ANewId, TADOConnection *ADbConn/*=NULL*/)
  205. {
  206. String sQry;
  207. TADOQuery *pADO = NULL;
  208. sQry = "SELECT TO_NUMBER(CASE WHEN EXISTS (SELECT 1 FROM TB_RSE_SECT_MSTR) \r\n"
  209. " THEN (SELECT TRIM(MAX(TO_NUMBER(RSE_SECT_ID)) + 1) \r\n"
  210. " FROM TB_RSE_SECT_MSTR) \r\n"
  211. " ELSE '1' END) AS NEWID \r\n"
  212. " FROM DUAL \r\n";
  213. ANewId = "";
  214. try
  215. {
  216. try
  217. {
  218. pADO = new TADOQuery(NULL);
  219. pADO->Close();
  220. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  221. pADO->SQL->Clear();
  222. pADO->SQL->Text = sQry;
  223. pADO->Prepared = true;
  224. pADO->Open();
  225. ANewId = pADO->FieldByName("NEWID")->AsString;
  226. return true;
  227. }
  228. catch(EDatabaseError &E)
  229. {
  230. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  231. DBERRORMSG("RSE 신규구간ID조회", String(E.ClassName()), E.Message, sQry);
  232. throw Exception(String(E.ClassName()) + E.Message);
  233. }
  234. catch(Exception &exception)
  235. {
  236. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  237. DBERRORMSG("RSE 신규구간ID조회", String(exception.ClassName()), exception.Message, sQry);
  238. throw Exception(String(exception.ClassName()) + exception.Message);
  239. }
  240. }
  241. __finally
  242. {
  243. if (pADO)
  244. {
  245. pADO->Close();
  246. delete pADO;
  247. }
  248. }
  249. return false;
  250. }
  251. //---------------------------------------------------------------------------
  252. bool TItsDsrcSectManager::DeleteSect(String ASectId, TADOConnection *ADbConn/*=NULL*/)
  253. {
  254. String sQry;
  255. TADOQuery *pADO = NULL;
  256. //수집구간목록
  257. sQry = "DELETE TB_RSE_SECT_LINK WHERE RSE_SECT_ID = :p01 \r\n";
  258. try
  259. {
  260. FLists.Lock();
  261. try
  262. {
  263. pADO = new TADOQuery(NULL);
  264. pADO->Close();
  265. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  266. pADO->SQL->Clear();
  267. pADO->SQL->Text = sQry;
  268. pADO->Parameters->ParamByName("p01")->Value = ASectId;
  269. pADO->ExecSQL();
  270. #if 0
  271. //정보제공이력-->외래키를 삭제하는것이 맞음
  272. sQry = "DELETE TB_RSE_OFFR_INFR_HS WHERE OFFR_SECT_ID = :p01 \r\n";
  273. pADO->SQL->Clear();
  274. pADO->SQL->Text = sQry;
  275. pADO->Parameters->ParamByName("p01")->Value = AOfferSectId;
  276. pADO->ExecSQL();
  277. #endif
  278. //수집구간 마스터
  279. //sQry = "DELETE TB_RSE_SECT_MSTR WHERE RSE_SECT_ID = :p01 \r\n";
  280. sQry = "UPDATE TB_RSE_SECT_MSTR SET DEL_YN = 'Y' WHERE RSE_SECT_ID = :p01 \r\n";
  281. pADO->SQL->Clear();
  282. pADO->SQL->Text = sQry;
  283. pADO->Parameters->ParamByName("p01")->Value = ASectId;
  284. pADO->ExecSQL();
  285. return true;
  286. }
  287. catch(EDatabaseError &E)
  288. {
  289. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  290. DBERRORMSG("RSE구간정보삭제", String(E.ClassName()), E.Message, sQry);
  291. throw Exception(String(E.ClassName()) + E.Message);
  292. }
  293. catch(Exception &exception)
  294. {
  295. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  296. DBERRORMSG("RSE구간정보삭제", String(exception.ClassName()), exception.Message, sQry);
  297. throw Exception(String(exception.ClassName()) + exception.Message);
  298. }
  299. }
  300. __finally
  301. {
  302. if (pADO)
  303. {
  304. pADO->Close();
  305. delete pADO;
  306. }
  307. FLists.UnLock();
  308. }
  309. return true;
  310. }
  311. //---------------------------------------------------------------------------
  312. bool TItsDsrcSectManager::SaveSect(TItsDsrcSect *AObj, TADOConnection *ADbConn/*=NULL*/)
  313. {
  314. String sQry;
  315. TADOQuery *pADO = NULL;
  316. //수집구간 링크구성정보 삭제
  317. sQry = "DELETE FROM TB_RSE_SECT_LINK WHERE RSE_SECT_ID = :p01 \r\n";
  318. try
  319. {
  320. FLists.Lock();
  321. try
  322. {
  323. pADO = new TADOQuery(NULL);
  324. pADO->Close();
  325. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  326. pADO->SQL->Clear();
  327. pADO->SQL->Text = sQry;
  328. pADO->Parameters->ParamByName("p01")->Value = AObj->RSE_SECT_ID;
  329. pADO->ExecSQL();
  330. //수집구간 마스터
  331. sQry = "MERGE INTO TB_RSE_SECT_MSTR L \r\n"
  332. "USING (SELECT :p01 AS RSE_SECT_ID, \r\n"
  333. " :p02 AS DSTC, \r\n"
  334. " :p03 AS RSE_SECT_NM, \r\n"
  335. " :p04 AS STRT_SPOT_NM, \r\n"
  336. " :p05 AS END_SPOT_NM, \r\n"
  337. " :p06 AS DEL_YN, \r\n"
  338. " :p07 AS STRT_ID, \r\n"
  339. " :p08 AS END_ID \r\n"
  340. " FROM DUAL) M \r\n"
  341. " ON (L.RSE_SECT_ID = M.RSE_SECT_ID) \r\n"
  342. "WHEN MATCHED THEN \r\n"
  343. " UPDATE SET DSTC = M.DSTC, \r\n"
  344. " RSE_SECT_NM = M.RSE_SECT_NM, \r\n"
  345. " STRT_SPOT_NM = M.STRT_SPOT_NM, \r\n"
  346. " END_SPOT_NM = M.END_SPOT_NM, \r\n"
  347. " DEL_YN = M.DEL_YN, \r\n"
  348. " STRT_ID = M.STRT_ID, \r\n"
  349. " END_ID = M.END_ID \r\n"
  350. "WHEN NOT MATCHED THEN \r\n"
  351. "INSERT ( RSE_SECT_ID, DSTC, RSE_SECT_NM, \r\n"
  352. " STRT_SPOT_NM, END_SPOT_NM, \r\n"
  353. " DEL_YN, STRT_ID, END_ID) \r\n"
  354. "VALUES (M.RSE_SECT_ID, M.DSTC, M.RSE_SECT_NM, \r\n"
  355. " M.STRT_SPOT_NM, M.END_SPOT_NM, \r\n"
  356. " M.DEL_YN, M.STRT_ID, M.END_ID) \r\n";
  357. pADO->SQL->Clear();
  358. pADO->SQL->Text = sQry;
  359. pADO->Parameters->ParamByName("p01")->Value = AObj->RSE_SECT_ID;
  360. pADO->Parameters->ParamByName("p02")->Value = AObj->DSTC;
  361. pADO->Parameters->ParamByName("p03")->Value = AObj->RSE_SECT_NM;
  362. pADO->Parameters->ParamByName("p04")->Value = AObj->STRT_SPOT_NM;
  363. pADO->Parameters->ParamByName("p05")->Value = AObj->END_SPOT_NM;
  364. pADO->Parameters->ParamByName("p06")->Value = AObj->DEL_YN;
  365. pADO->Parameters->ParamByName("p07")->Value = AObj->STRT_ID;
  366. pADO->Parameters->ParamByName("p08")->Value = AObj->END_ID;
  367. pADO->ExecSQL();
  368. //정보제공구간 링크구성정보 입력
  369. sQry = "INSERT INTO TB_RSE_SECT_LINK (RSE_SECT_ID, LINK_ID, LINK_ORD) \r\n"
  370. " VALUES (:p01, :p02, :p03) \r\n";
  371. int nOrd = 1;
  372. pADO->SQL->Clear();
  373. pADO->SQL->Text = sQry;
  374. FOR_STL(TItsDsrcSectLink *, pObj, AObj->FLinkLists)
  375. {
  376. pADO->Parameters->ParamByName("p01")->Value = AObj->RSE_SECT_ID;
  377. pADO->Parameters->ParamByName("p02")->Value = pObj->LINK_ID;
  378. pADO->Parameters->ParamByName("p03")->Value = nOrd;
  379. pADO->ExecSQL();
  380. nOrd++;
  381. }
  382. return true;
  383. }
  384. catch(EDatabaseError &E)
  385. {
  386. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  387. DBERRORMSG("RSE구간정보업데이트", String(E.ClassName()), E.Message, sQry);
  388. throw Exception(String(E.ClassName()) + E.Message);
  389. }
  390. catch(Exception &exception)
  391. {
  392. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  393. DBERRORMSG("RSE구간정보업데이트", String(exception.ClassName()), exception.Message, sQry);
  394. throw Exception(String(exception.ClassName()) + exception.Message);
  395. }
  396. }
  397. __finally
  398. {
  399. if (pADO)
  400. {
  401. pADO->Close();
  402. delete pADO;
  403. }
  404. FLists.UnLock();
  405. }
  406. return true;
  407. }
  408. //---------------------------------------------------------------------------