CDSPrkPlceF.cpp 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSPrkPlceF.h"
  4. #include "ITS_OPLibF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TPrkPlce::TPrkPlce()
  8. {
  9. FOPR = new TPrkPlceOpr();
  10. }
  11. //---------------------------------------------------------------------------
  12. TPrkPlce::~TPrkPlce()
  13. {
  14. }
  15. //---------------------------------------------------------------------------
  16. //---------------------------------------------------------------------------
  17. TPrkPlceManager *PrkPlceManager = NULL;
  18. //---------------------------------------------------------------------------
  19. /*
  20. * PrltPrk Manager
  21. */
  22. TPrkPlceManager::TPrkPlceManager()
  23. {
  24. }
  25. //---------------------------------------------------------------------------
  26. TPrkPlceManager::~TPrkPlceManager()
  27. {
  28. FLists.RemoveAll();
  29. }
  30. //---------------------------------------------------------------------------
  31. bool TPrkPlceManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  32. {
  33. String sQry;
  34. TADOQuery *pADO = NULL;
  35. sQry = "SELECT * \r\n"
  36. " FROM TB_PRK_PLCE \r\n"
  37. " WHERE pis_type != 'N' \r\n"
  38. " AND del_yn = 'N' \r\n";
  39. FLists.Lock();
  40. try
  41. {
  42. FLists.RemoveAll();
  43. try
  44. {
  45. pADO = new TADOQuery(NULL);
  46. pADO->Close();
  47. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  48. pADO->SQL->Clear();
  49. pADO->SQL->Text = sQry;
  50. pADO->Prepared = true;
  51. pADO->Open();
  52. for( ; !pADO->Eof; pADO->Next())
  53. {
  54. TPrkPlce *pObj = new TPrkPlce();
  55. pObj->CTLR_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString;
  56. pObj->CTLR_ID = pADO->FieldByName("PRK_PLCE_MANAGE_NO")->AsString;
  57. pObj->PRK_PLCE_STTUS_VER = pADO->FieldByName("PRK_PLCE_STTUS_VER")->AsString;
  58. pObj->NAME = pADO->FieldByName("PRK_PLCE_NM")->AsString;
  59. pObj->ISTL_LCTN_NM = pADO->FieldByName("PRK_PLCE_NM")->AsString;
  60. pObj->ISTL_LCTN_ADDR = pADO->FieldByName("PRK_PLCE_ADRES")->AsString.Trim();
  61. pObj->VMS_DSPL_NM = pADO->FieldByName("VMS_DSPL_NM")->AsString;
  62. //pObj->PRK_PLCE_ADRES = pADO->FieldByName("PRK_PLCE_ADRES")->AsString;
  63. pObj->PRK_PLCE_INSTL_DE = pADO->FieldByName("PRK_PLCE_INSTL_DE")->AsString;
  64. pObj->PRK_PLCE_ABL_DE = pADO->FieldByName("PRK_PLCE_ABL_DE")->AsString;
  65. pObj->PRK_PLCE_ENTRC_NM = pADO->FieldByName("PRK_PLCE_ENTRC_NM")->AsString;
  66. //pObj->PRK_PLCE_ENTRC_LA = pADO->FieldByName("PRK_PLCE_ENTRC_LA")->AsString;
  67. //pObj->PRK_PLCE_ENTRC_LO = pADO->FieldByName("PRK_PLCE_ENTRC_LO")->AsString;
  68. pObj->PRK_PLCE_ENTRC_EXTTY = pADO->FieldByName("PRK_PLCE_ENTRC_EXTTY")->AsInteger;
  69. pObj->PARKING_TY = pADO->FieldByName("PARKING_TY")->AsInteger;
  70. pObj->PARKING_US = pADO->FieldByName("PARKING_US")->AsInteger;
  71. pObj->AR_LEVEL_SE = pADO->FieldByName("AR_LEVEL_SE")->AsInteger;
  72. //pObj->PRK_PLCE_IMAGE_DATA = pADO->FieldByName("PRK_PLCE_IMAGE_DATA")->AsString;
  73. pObj->PRK_PLCE_IMAGE_TYPE = pADO->FieldByName("PRK_PLCE_IMAGE_TYPE")->AsInteger;
  74. pObj->PRK_PLCE_IMAGE_DC = pADO->FieldByName("PRK_PLCE_IMAGE_DC")->AsString;
  75. pObj->SYS_NE = pADO->FieldByName("SYS_NE")->AsString;
  76. pObj->PARKING_CNTRL_SYS_INSTL_DE = pADO->FieldByName("PARKING_CNTRL_SYS_INSTL_DE")->AsString;
  77. pObj->RELATION_LAW_AND_ORDINANCES = pADO->FieldByName("RELATION_LAW_AND_ORDINANCES")->AsString;
  78. pObj->PRK_AVAIL_CARTYPE = pADO->FieldByName("PRK_AVAIL_CARTYPE")->AsString;
  79. pObj->PRK_CMPRT_CO = pADO->FieldByName("PRK_CMPRT_CO")->AsInteger;
  80. pObj->COLCT_DEVICE_INSTL_AT = pADO->FieldByName("COLCT_DEVICE_INSTL_AT")->AsInteger;
  81. pObj->MASTER_CONTROLLER = pADO->FieldByName("MASTER_CONTROLLER")->AsInteger;
  82. pObj->SLAVE_CONTROLLER = pADO->FieldByName("SLAVE_CONTROLLER")->AsInteger;
  83. pObj->COLCT_DEVICE_QTY = pADO->FieldByName("COLCT_DEVICE_QTY")->AsInteger;
  84. pObj->COLCT_DEVICE_KND = pADO->FieldByName("COLCT_DEVICE_KND")->AsString;
  85. //pObj->TYPE_IMGAGE = pADO->FieldByName("TYPE_IMGAGE")->AsInteger;
  86. //pObj->TYPE_GEOMAGNETIC = pADO->FieldByName("TYPE_GEOMAGNETIC")->AsInteger;
  87. //pObj->TYPE_RADAR = pADO->FieldByName("TYPE_RADAR")->AsInteger;
  88. //pObj->TYPE_LOOP = pADO->FieldByName("TYPE_LOOP")->AsInteger;
  89. //pObj->TYPE_ULTRASONIC = pADO->FieldByName("TYPE_ULTRASONIC")->AsInteger;
  90. //pObj->TYPE_ETC = pADO->FieldByName("TYPE_ETC")->AsInteger;
  91. pObj->COLCT_DEVICE_INSTL_DE = pADO->FieldByName("COLCT_DEVICE_INSTL_DE")->AsString;
  92. pObj->CRM_PRV_CCTV_INSTL_AT = pADO->FieldByName("CRM_PRV_CCTV_INSTL_AT")->AsInteger;
  93. pObj->CRM_PRV_CCTV_INSTL_CO = pADO->FieldByName("CRM_PRV_CCTV_INSTL_CO")->AsInteger;
  94. pObj->INFO_CREATE_TIME = pADO->FieldByName("INFO_CREATE_TIME")->AsString;
  95. //pObj->PIS_TYPE = pADO->FieldByName("PIS_TYPE")->AsString;
  96. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  97. pObj->TYPE_CD = pADO->FieldByName("PIS_TYPE")->AsString.Trim();
  98. pObj->X_CRDN = pADO->FieldByName("PRK_PLCE_ENTRC_LO")->AsFloat;
  99. pObj->Y_CRDN = pADO->FieldByName("PRK_PLCE_ENTRC_LA")->AsFloat;
  100. pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString.Trim();
  101. FLists.Push(pObj->CTLR_NMBR, pObj);
  102. pObj->Completed = true;
  103. pObj->MEM_DEL = "N";
  104. }
  105. }
  106. catch(EDatabaseError &E)
  107. {
  108. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  109. DBERRORMSG("TPrkPlceManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  110. throw Exception(String(E.ClassName()) + E.Message);
  111. }
  112. catch(Exception &exception)
  113. {
  114. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  115. DBERRORMSG("TPrkPlceManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  116. throw Exception(String(exception.ClassName()) + exception.Message);
  117. }
  118. }
  119. __finally
  120. {
  121. if (pADO)
  122. {
  123. pADO->Close();
  124. delete pADO;
  125. }
  126. FLists.UnLock();
  127. }
  128. LoadFromDbOpr(ADbConn);
  129. LoadFromDbFlr(ADbConn);
  130. return true;
  131. }
  132. //---------------------------------------------------------------------------
  133. bool TPrkPlceManager::LoadStatusFromDb(TADOConnection *ADbConn/*=NULL*/)
  134. {
  135. String sQry;
  136. TADOQuery *pADO = NULL;
  137. sQry = "SELECT * \r\n"
  138. " FROM TB_PRK_PLCE_STTS A, TB_PRK_PLCE B \r\n"
  139. " WHERE B.pis_type != 'N' \r\n"
  140. " AND B.del_yn = 'N' \r\n"
  141. " AND A.prk_plce_nmbr = B.prk_plce_nmbr \r\n"
  142. " AND A.UPDT_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS') \r\n";
  143. FLists.Lock();
  144. try
  145. {
  146. TPrkPlce *pObj = NULL;
  147. try
  148. {
  149. pADO = new TADOQuery(NULL);
  150. pADO->Close();
  151. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  152. pADO->SQL->Clear();
  153. pADO->SQL->Text = sQry;
  154. pADO->Prepared = true;
  155. pADO->Open();
  156. //int nRows = pADO->RecordCount;
  157. for( ; !pADO->Eof; pADO->Next())
  158. {
  159. String sPrltNmbr = pADO->FieldByName("prk_plce_nmbr")->AsString;
  160. pObj = FLists.Find(sPrltNmbr);
  161. if (!pObj) continue;
  162. String UPDT_DT = pADO->FieldByName("UPDT_DT")->AsString;
  163. String CONN_STTS_CD = pADO->FieldByName("CMNC_STTS_CD")->AsString;
  164. if (CONN_STTS_CD != "CMS0")
  165. {
  166. pObj->STATE.Comm = park_comm_error;
  167. //통신장애
  168. continue;
  169. }
  170. pObj->STATE.Comm = park_comm_normal;
  171. }
  172. }
  173. catch(EDatabaseError &E)
  174. {
  175. DBERRORMSG("TPrkPlceManager::LoadStatusFromDb", String(E.ClassName()), E.Message, sQry);
  176. throw Exception(String(E.ClassName()) + E.Message);
  177. }
  178. catch(Exception &e)
  179. {
  180. DBERRORMSG("TPrkPlceManager::LoadStatusFromDb", String(e.ClassName()), e.Message, sQry);
  181. throw Exception(String(e.ClassName()) + e.Message);
  182. }
  183. }
  184. __finally
  185. {
  186. if (pADO)
  187. {
  188. pADO->Close();
  189. delete pADO;
  190. }
  191. FLists.UnLock();
  192. }
  193. return true;
  194. }
  195. //---------------------------------------------------------------------------
  196. bool TPrkPlceManager::LoadFromDbOpr(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  197. {
  198. String sQry;
  199. TADOQuery *pADO = NULL;
  200. sQry = "SELECT A.* \r\n"
  201. " FROM TB_PRK_PLCE_OPR A \r\n"
  202. " WHERE A.prk_plce_nmbr = :p01 \r\n";
  203. try
  204. {
  205. try
  206. {
  207. pADO = new TADOQuery(NULL);
  208. pADO->Close();
  209. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  210. pADO->SQL->Clear();
  211. pADO->SQL->Text = sQry;
  212. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  213. pADO->Prepared = true;
  214. pADO->Open();
  215. for( ; !pADO->Eof; pADO->Next())
  216. {
  217. AObj->FOPR->PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  218. AObj->FOPR->PRK_PLCE_OPR_VER = pADO->FieldByName("PRK_PLCE_OPR_VER")->AsString; // N VARCHAR2(10) Y 주차운영 정보버전
  219. AObj->FOPR->CMPT_INST_NM = pADO->FieldByName("CMPT_INST_NM")->AsString; // N VARCHAR2(32) Y 관할기관명
  220. AObj->FOPR->OPER_DEPT_NM = pADO->FieldByName("OPER_DEPT_NM")->AsString; // N VARCHAR2(32) Y 운영기관 정보 - 운영부서명
  221. AObj->FOPR->OPER_PERSON_NM = pADO->FieldByName("OPER_PERSON_NM")->AsString; // N VARCHAR2(10) Y 운영기관 정보 - 운영기관 담당자
  222. AObj->FOPR->OPER_CTT_PC_TEL = pADO->FieldByName("OPER_CTT_PC_TEL")->AsString; // N VARCHAR2(13) Y 운영기관 정보 - 운영담당자 전화번호
  223. AObj->FOPR->OPER_CTT_PC_EMAIL = pADO->FieldByName("OPER_CTT_PC_EMAIL")->AsString; // N VARCHAR2(50) Y 운영기관 정보 - 운영담당자 이메일
  224. AObj->FOPR->NO_DRV_DAY_OPERTN_AT = pADO->FieldByName("NO_DRV_DAY_OPERTN_AT")->AsInteger; // N NUMBER(1) Y 주차 부제 시행여부 (0 : 미시행, 1 : 2부제, 2 : 5부제, 3 : 10부제, 4 : 승용차요일제, 9 : 기타)
  225. AObj->FOPR->OPERTN_BS_FREE_TIME = pADO->FieldByName("OPERTN_BS_FREE_TIME")->AsString; // N VARCHAR2(8) Y 기본무료 시간, 주차장 회차 (기본 무료) (00:30:00)
  226. AObj->FOPR->OPN_CODE = pADO->FieldByName("OPN_CODE")->AsInteger; // N NUMBER(1) Y 개방코드, 운영시간 외 무료 개방 (0 : 미개방, 1 : 개방)
  227. AObj->FOPR->PARKING_CHRGE_EXCCLC_MTHD = pADO->FieldByName("PARKING_CHRGE_EXCCLC_MTHD")->AsInteger; // N NUMBER(1) Y 주차요금 정산 방식 (0 : 유인정산, 1 : 무인정산, 2 : 혼합정산, 9 : 기타)
  228. AObj->FOPR->PARKING_CHRGE_PYMNT_MN = pADO->FieldByName("PARKING_CHRGE_PYMNT_MN")->AsString; // N VARCHAR2(8) Y 주차요금 지불수단 - 아래 유형 조합해서 생성됌 - 예시) 현금/신용카드 혼합결제 시 (11000000), 핀테크 결제 시 (00000100), 1: 현금, 2: 신용카드, 3: 교통카드, 4: 전자지불(하이패스), 5: 휴대폰소액결제, 6: 핀테크(OO페이), 7: MaaS 통합결제, 9: 기타
  229. AObj->FOPR->PARKING_RESVE_OPERTN_AT = pADO->FieldByName("PARKING_RESVE_OPERTN_AT")->AsInteger; // N NUMBER(1) Y 주차예약 시행여부 (0 : 미시행, 1 : 시행-주차장, 2 : 시행-주차구역, 3 : 시행-주차면)
  230. AObj->FOPR->PARTCLR_MATTER = pADO->FieldByName("PARTCLR_MATTER")->AsString; // N VARCHAR2(128) Y 특이사항
  231. AObj->FOPR->INFO_CREATE_TIME = pADO->FieldByName("INFO_CREATE_TIME")->AsString; // N VARCHAR2(14) Y 주차정보를 입력하여 생성하는 시각, (YYYY-MM-DD hh:mm:ss)
  232. }
  233. }
  234. catch(EDatabaseError &E)
  235. {
  236. DBERRORMSG("TPrkPlceManager::LoadFromDbOpr", String(E.ClassName()), E.Message, sQry);
  237. throw Exception(String(E.ClassName()) + E.Message);
  238. }
  239. catch(Exception &e)
  240. {
  241. DBERRORMSG("TPrkPlceManager::LoadFromDbOpr", String(e.ClassName()), e.Message, sQry);
  242. throw Exception(String(e.ClassName()) + e.Message);
  243. }
  244. }
  245. __finally
  246. {
  247. if (pADO)
  248. {
  249. pADO->Close();
  250. delete pADO;
  251. }
  252. }
  253. return true;
  254. }
  255. //---------------------------------------------------------------------------
  256. bool TPrkPlceManager::LoadFromDbOpr(TADOConnection *ADbConn/*=NULL*/)
  257. {
  258. String sQry;
  259. TADOQuery *pADO = NULL;
  260. sQry = "SELECT A.* \r\n"
  261. " FROM TB_PRK_PLCE_OPR A \r\n";
  262. try
  263. {
  264. try
  265. {
  266. pADO = new TADOQuery(NULL);
  267. pADO->Close();
  268. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  269. pADO->SQL->Clear();
  270. pADO->SQL->Text = sQry;
  271. pADO->Prepared = true;
  272. pADO->Open();
  273. for( ; !pADO->Eof; pADO->Next())
  274. {
  275. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString;
  276. TPrkPlce *AObj = FLists.Find(PRK_PLCE_NMBR);
  277. if (AObj == NULL) {
  278. continue;
  279. }
  280. AObj->FOPR->PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  281. AObj->FOPR->PRK_PLCE_OPR_VER = pADO->FieldByName("PRK_PLCE_OPR_VER")->AsString; // N VARCHAR2(10) Y 주차운영 정보버전
  282. AObj->FOPR->CMPT_INST_NM = pADO->FieldByName("CMPT_INST_NM")->AsString; // N VARCHAR2(32) Y 관할기관명
  283. AObj->FOPR->OPER_DEPT_NM = pADO->FieldByName("OPER_DEPT_NM")->AsString; // N VARCHAR2(32) Y 운영기관 정보 - 운영부서명
  284. AObj->FOPR->OPER_PERSON_NM = pADO->FieldByName("OPER_PERSON_NM")->AsString; // N VARCHAR2(10) Y 운영기관 정보 - 운영기관 담당자
  285. AObj->FOPR->OPER_CTT_PC_TEL = pADO->FieldByName("OPER_CTT_PC_TEL")->AsString; // N VARCHAR2(13) Y 운영기관 정보 - 운영담당자 전화번호
  286. AObj->FOPR->OPER_CTT_PC_EMAIL = pADO->FieldByName("OPER_CTT_PC_EMAIL")->AsString; // N VARCHAR2(50) Y 운영기관 정보 - 운영담당자 이메일
  287. AObj->FOPR->NO_DRV_DAY_OPERTN_AT = pADO->FieldByName("NO_DRV_DAY_OPERTN_AT")->AsInteger; // N NUMBER(1) Y 주차 부제 시행여부 (0 : 미시행, 1 : 2부제, 2 : 5부제, 3 : 10부제, 4 : 승용차요일제, 9 : 기타)
  288. AObj->FOPR->OPERTN_BS_FREE_TIME = pADO->FieldByName("OPERTN_BS_FREE_TIME")->AsString; // N VARCHAR2(8) Y 기본무료 시간, 주차장 회차 (기본 무료) (00:30:00)
  289. AObj->FOPR->OPN_CODE = pADO->FieldByName("OPN_CODE")->AsInteger; // N NUMBER(1) Y 개방코드, 운영시간 외 무료 개방 (0 : 미개방, 1 : 개방)
  290. AObj->FOPR->PARKING_CHRGE_EXCCLC_MTHD = pADO->FieldByName("PARKING_CHRGE_EXCCLC_MTHD")->AsInteger; // N NUMBER(1) Y 주차요금 정산 방식 (0 : 유인정산, 1 : 무인정산, 2 : 혼합정산, 9 : 기타)
  291. AObj->FOPR->PARKING_CHRGE_PYMNT_MN = pADO->FieldByName("PARKING_CHRGE_PYMNT_MN")->AsString; // N VARCHAR2(8) Y 주차요금 지불수단 - 아래 유형 조합해서 생성됌 - 예시) 현금/신용카드 혼합결제 시 (11000000), 핀테크 결제 시 (00000100), 1: 현금, 2: 신용카드, 3: 교통카드, 4: 전자지불(하이패스), 5: 휴대폰소액결제, 6: 핀테크(OO페이), 7: MaaS 통합결제, 9: 기타
  292. AObj->FOPR->PARKING_RESVE_OPERTN_AT = pADO->FieldByName("PARKING_RESVE_OPERTN_AT")->AsInteger; // N NUMBER(1) Y 주차예약 시행여부 (0 : 미시행, 1 : 시행-주차장, 2 : 시행-주차구역, 3 : 시행-주차면)
  293. AObj->FOPR->PARTCLR_MATTER = pADO->FieldByName("PARTCLR_MATTER")->AsString; // N VARCHAR2(128) Y 특이사항
  294. AObj->FOPR->INFO_CREATE_TIME = pADO->FieldByName("INFO_CREATE_TIME")->AsString; // N VARCHAR2(14) Y 주차정보를 입력하여 생성하는 시각, (YYYY-MM-DD hh:mm:ss)
  295. }
  296. }
  297. catch(EDatabaseError &E)
  298. {
  299. DBERRORMSG("TPrkPlceManager::LoadFromDbOpr", String(E.ClassName()), E.Message, sQry);
  300. throw Exception(String(E.ClassName()) + E.Message);
  301. }
  302. catch(Exception &e)
  303. {
  304. DBERRORMSG("TPrkPlceManager::LoadFromDbOpr", String(e.ClassName()), e.Message, sQry);
  305. throw Exception(String(e.ClassName()) + e.Message);
  306. }
  307. }
  308. __finally
  309. {
  310. if (pADO)
  311. {
  312. pADO->Close();
  313. delete pADO;
  314. }
  315. }
  316. return true;
  317. }
  318. //---------------------------------------------------------------------------
  319. bool TPrkPlceManager::LoadFromDbOprChrge(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  320. {
  321. String sQry;
  322. TADOQuery *pADO = NULL;
  323. sQry = "SELECT A.* \r\n"
  324. " FROM TB_PRK_PLCE_OPR_CHRGE A \r\n"
  325. " WHERE A.prk_plce_nmbr = :p01 \r\n";
  326. try
  327. {
  328. try
  329. {
  330. pADO = new TADOQuery(NULL);
  331. pADO->Close();
  332. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  333. pADO->SQL->Clear();
  334. pADO->SQL->Text = sQry;
  335. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  336. pADO->Prepared = true;
  337. pADO->Open();
  338. for( ; !pADO->Eof; pADO->Next())
  339. {
  340. int CHRGE = pADO->FieldByName("CHRGE")->AsInteger;
  341. TPrkPlceOprChrge *pChrge = AObj->FOPR->FChrges.Find(CHRGE);
  342. if (pChrge == NULL) {
  343. pChrge = new TPrkPlceOprChrge();
  344. pChrge->PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString;
  345. pChrge->CHRGE = CHRGE;
  346. AObj->FOPR->FChrges.Push(CHRGE, pChrge);
  347. }
  348. pChrge->PARKING_CHRGE_BS_TIME = pADO->FieldByName("PARKING_CHRGE_BS_TIME")->AsInteger;
  349. pChrge->PARKING_CHRGE_BS_CHRGE = pADO->FieldByName("PARKING_CHRGE_BS_CHRGE")->AsInteger;
  350. pChrge->PARKING_CHRGE_ADIT_UNIT_TIME = pADO->FieldByName("PARKING_CHRGE_ADIT_UNIT_TIME")->AsInteger;
  351. pChrge->PARKING_CHRGE_ADIT_UNIT_CHRGE = pADO->FieldByName("PARKING_CHRGE_ADIT_UNIT_CHRGE")->AsInteger;
  352. }
  353. }
  354. catch(EDatabaseError &E)
  355. {
  356. DBERRORMSG("TPrkPlceManager::LoadFromDbOprChrge", String(E.ClassName()), E.Message, sQry);
  357. throw Exception(String(E.ClassName()) + E.Message);
  358. }
  359. catch(Exception &e)
  360. {
  361. DBERRORMSG("TPrkPlceManager::LoadFromDbOprChrge", String(e.ClassName()), e.Message, sQry);
  362. throw Exception(String(e.ClassName()) + e.Message);
  363. }
  364. }
  365. __finally
  366. {
  367. if (pADO)
  368. {
  369. pADO->Close();
  370. delete pADO;
  371. }
  372. }
  373. return true;
  374. }
  375. //---------------------------------------------------------------------------
  376. bool TPrkPlceManager::LoadFromDbOprSched(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  377. {
  378. String sQry;
  379. TADOQuery *pADO = NULL;
  380. sQry = "SELECT A.* \r\n"
  381. " FROM TB_PRK_PLCE_OPR_SCHED A \r\n"
  382. " WHERE A.prk_plce_nmbr = :p01 \r\n";
  383. try
  384. {
  385. try
  386. {
  387. pADO = new TADOQuery(NULL);
  388. pADO->Close();
  389. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  390. pADO->SQL->Clear();
  391. pADO->SQL->Text = sQry;
  392. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  393. pADO->Prepared = true;
  394. pADO->Open();
  395. for( ; !pADO->Eof; pADO->Next())
  396. {
  397. int SCHED = pADO->FieldByName("SCHED")->AsInteger;
  398. TPrkPlceOprSched *pSched = AObj->FOPR->FScheds.Find(SCHED);
  399. if (pSched == NULL) {
  400. pSched = new TPrkPlceOprSched();
  401. pSched->PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString;
  402. pSched->SCHED = SCHED;
  403. AObj->FOPR->FScheds.Push(SCHED, pSched);
  404. }
  405. pSched->OPERTN_START_TIME = pADO->FieldByName("OPERTN_START_TIME")->AsString;
  406. pSched->OPERTN_END_TIME = pADO->FieldByName("OPERTN_END_TIME")->AsString;
  407. pSched->PARKING_CHRGE_LEVY_AT = pADO->FieldByName("PARKING_CHRGE_LEVY_AT")->AsInteger;
  408. }
  409. }
  410. catch(EDatabaseError &E)
  411. {
  412. DBERRORMSG("TPrkPlceManager::LoadFromDbOprSched", String(E.ClassName()), E.Message, sQry);
  413. throw Exception(String(E.ClassName()) + E.Message);
  414. }
  415. catch(Exception &e)
  416. {
  417. DBERRORMSG("TPrkPlceManager::LoadFromDbOprSched", String(e.ClassName()), e.Message, sQry);
  418. throw Exception(String(e.ClassName()) + e.Message);
  419. }
  420. }
  421. __finally
  422. {
  423. if (pADO)
  424. {
  425. pADO->Close();
  426. delete pADO;
  427. }
  428. }
  429. return true;
  430. }
  431. //---------------------------------------------------------------------------
  432. bool TPrkPlceManager::LoadFromDbFlr(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  433. {
  434. String sQry;
  435. TADOQuery *pADO = NULL;
  436. sQry = "SELECT A.PRK_PLCE_NMBR, A.FLR_NO, \r\n"
  437. " A.FLR_PRK_CMPRT_CO, \r\n"
  438. " A.FLR_REMNDR_PRK_CMPRT_CO, \r\n"
  439. " A.DATA_COLCT_TIME \r\n"
  440. " FROM TB_PRK_PLCE_FLR A \r\n"
  441. " WHERE A.prk_plce_nmbr = :p01 \r\n";
  442. try
  443. {
  444. //AObj->FFlrs.Clear();
  445. try
  446. {
  447. pADO = new TADOQuery(NULL);
  448. pADO->Close();
  449. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  450. pADO->SQL->Clear();
  451. pADO->SQL->Text = sQry;
  452. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  453. pADO->Prepared = true;
  454. pADO->Open();
  455. for( ; !pADO->Eof; pADO->Next())
  456. {
  457. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  458. String FLR_NO = pADO->FieldByName("FLR_NO")->AsString; // N VARCHAR2(10) N 층 번호
  459. int FLR_PRK_CMPRT_CO = pADO->FieldByName("FLR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 층별 주차구획 수, 120(면), 시설정보+ 실시간정보
  460. int FLR_REMNDR_PRK_CMPRT_CO = pADO->FieldByName("FLR_REMNDR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 층별 잔여 주차구획 수, 120(면), 실시간정보
  461. String DATA_COLCT_TIME = pADO->FieldByName("DATA_COLCT_TIME")->AsString; // N VARCHAR2(14) Y 실시간 주차데이터 수집시간 (YYYY-MM-DD hh:mm:ss)
  462. TPrkPlceFlr *pFlr = AObj->FFlrs.Find(FLR_NO);
  463. if (pFlr == NULL) {
  464. pFlr = new TPrkPlceFlr();
  465. pFlr->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  466. pFlr->FLR_NO = FLR_NO;
  467. AObj->FFlrs.Push(FLR_NO, pFlr);
  468. }
  469. pFlr->FLR_PRK_CMPRT_CO = FLR_PRK_CMPRT_CO;
  470. pFlr->FLR_REMNDR_PRK_CMPRT_CO = FLR_REMNDR_PRK_CMPRT_CO;
  471. pFlr->DATA_COLCT_TIME = DATA_COLCT_TIME;
  472. }
  473. }
  474. catch(EDatabaseError &E)
  475. {
  476. DBERRORMSG("TPrkPlceManager::LoadFromDbFlr", String(E.ClassName()), E.Message, sQry);
  477. throw Exception(String(E.ClassName()) + E.Message);
  478. }
  479. catch(Exception &e)
  480. {
  481. DBERRORMSG("TPrkPlceManager::LoadFromDbFlr", String(e.ClassName()), e.Message, sQry);
  482. throw Exception(String(e.ClassName()) + e.Message);
  483. }
  484. }
  485. __finally
  486. {
  487. if (pADO)
  488. {
  489. pADO->Close();
  490. delete pADO;
  491. }
  492. }
  493. return true;
  494. }
  495. //---------------------------------------------------------------------------
  496. bool TPrkPlceManager::LoadFromDbFlr(TADOConnection *ADbConn/*=NULL*/)
  497. {
  498. String sQry;
  499. TADOQuery *pADO = NULL;
  500. sQry = "SELECT A.PRK_PLCE_NMBR, A.FLR_NO, \r\n"
  501. " A.FLR_PRK_CMPRT_CO, \r\n"
  502. " A.FLR_REMNDR_PRK_CMPRT_CO, \r\n"
  503. " A.DATA_COLCT_TIME \r\n"
  504. " FROM TB_PRK_PLCE_FLR A \r\n";
  505. try
  506. {
  507. //AObj->FFlrs.Clear();
  508. try
  509. {
  510. pADO = new TADOQuery(NULL);
  511. pADO->Close();
  512. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  513. pADO->SQL->Clear();
  514. pADO->SQL->Text = sQry;
  515. pADO->Prepared = true;
  516. pADO->Open();
  517. for( ; !pADO->Eof; pADO->Next())
  518. {
  519. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  520. String FLR_NO = pADO->FieldByName("FLR_NO")->AsString; // N VARCHAR2(10) N 층 번호
  521. int FLR_PRK_CMPRT_CO = pADO->FieldByName("FLR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 층별 주차구획 수, 120(면), 시설정보+ 실시간정보
  522. int FLR_REMNDR_PRK_CMPRT_CO = pADO->FieldByName("FLR_REMNDR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 층별 잔여 주차구획 수, 120(면), 실시간정보
  523. String DATA_COLCT_TIME = pADO->FieldByName("DATA_COLCT_TIME")->AsString; // N VARCHAR2(14) Y 실시간 주차데이터 수집시간 (YYYY-MM-DD hh:mm:ss)
  524. TPrkPlce *AObj = FLists.Find(PRK_PLCE_NMBR);
  525. if (AObj == NULL) {
  526. continue;
  527. }
  528. TPrkPlceFlr *pFlr = AObj->FFlrs.Find(FLR_NO);
  529. if (pFlr == NULL) {
  530. pFlr = new TPrkPlceFlr();
  531. pFlr->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  532. pFlr->FLR_NO = FLR_NO;
  533. AObj->FFlrs.Push(FLR_NO, pFlr);
  534. }
  535. pFlr->FLR_PRK_CMPRT_CO = FLR_PRK_CMPRT_CO;
  536. pFlr->FLR_REMNDR_PRK_CMPRT_CO = FLR_REMNDR_PRK_CMPRT_CO;
  537. pFlr->DATA_COLCT_TIME = DATA_COLCT_TIME;
  538. }
  539. }
  540. catch(EDatabaseError &E)
  541. {
  542. DBERRORMSG("TPrkPlceManager::LoadFromDbFlr", String(E.ClassName()), E.Message, sQry);
  543. throw Exception(String(E.ClassName()) + E.Message);
  544. }
  545. catch(Exception &e)
  546. {
  547. DBERRORMSG("TPrkPlceManager::LoadFromDbFlr", String(e.ClassName()), e.Message, sQry);
  548. throw Exception(String(e.ClassName()) + e.Message);
  549. }
  550. }
  551. __finally
  552. {
  553. if (pADO)
  554. {
  555. pADO->Close();
  556. delete pADO;
  557. }
  558. }
  559. return true;
  560. }
  561. //---------------------------------------------------------------------------
  562. bool TPrkPlceManager::LoadFromDbFlrDev(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  563. {
  564. String sQry;
  565. TADOQuery *pADO = NULL;
  566. sQry = "SELECT A.* \r\n"
  567. " FROM TB_PRK_PLCE_FLR_DEV A \r\n"
  568. " WHERE A.prk_plce_nmbr = :p01 \r\n"
  569. " ORDER BY A.PRK_PLCE_NMBR, A.FLR_NO, TO_NUMBER(A.DEVICE_ID) \r\n";
  570. try
  571. {
  572. //AObj->FFlrs.Clear();
  573. try
  574. {
  575. pADO = new TADOQuery(NULL);
  576. pADO->Close();
  577. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  578. pADO->SQL->Clear();
  579. pADO->SQL->Text = sQry;
  580. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  581. pADO->Prepared = true;
  582. pADO->Open();
  583. for( ; !pADO->Eof; pADO->Next())
  584. {
  585. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  586. String FLR_NO = pADO->FieldByName("FLR_NO")->AsString; // N VARCHAR2(10) N 층 번호
  587. int DEVICE_ID = pADO->FieldByName("DEVICE_ID")->AsInteger; // N VARCHAR2(5) N 주차정보수집장치 ID
  588. int X_POS = pADO->FieldByName("X_POS")->AsInteger; // N NUMBER(4) Y 0 이미지 좌표 X
  589. int Y_POS = pADO->FieldByName("Y_POS")->AsInteger; // N NUMBER(4) Y 0 이미지 좌표 Y
  590. TPrkPlceFlr *pFlr = AObj->FFlrs.Find(FLR_NO);
  591. if (pFlr != NULL) {
  592. // 무조건 주차장 층 정보가 존재해야 한다.
  593. TPrkPlceFlrDev *pFlrDev = pFlr->FFlrDevs.Find(DEVICE_ID);
  594. if (pFlrDev == NULL) {
  595. pFlrDev = new TPrkPlceFlrDev();
  596. pFlrDev->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  597. pFlrDev->FLR_NO = FLR_NO;
  598. pFlrDev->DEVICE_ID = DEVICE_ID;
  599. pFlr->FFlrDevs.Push(DEVICE_ID, pFlrDev);
  600. }
  601. pFlrDev->X_POS = X_POS;
  602. pFlrDev->Y_POS = Y_POS;
  603. }
  604. }
  605. }
  606. catch(EDatabaseError &E)
  607. {
  608. DBERRORMSG("TPrkPlceManager::LoadFromDbFlrDev", String(E.ClassName()), E.Message, sQry);
  609. throw Exception(String(E.ClassName()) + E.Message);
  610. }
  611. catch(Exception &e)
  612. {
  613. DBERRORMSG("TPrkPlceManager::LoadFromDbFlrDev", String(e.ClassName()), e.Message, sQry);
  614. throw Exception(String(e.ClassName()) + e.Message);
  615. }
  616. }
  617. __finally
  618. {
  619. if (pADO)
  620. {
  621. pADO->Close();
  622. delete pADO;
  623. }
  624. }
  625. return true;
  626. }
  627. //---------------------------------------------------------------------------
  628. bool TPrkPlceManager::LoadFromDbAr(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  629. {
  630. String sQry;
  631. TADOQuery *pADO = NULL;
  632. sQry = "SELECT A.* \r\n"
  633. " FROM TB_PRK_PLCE_AR A \r\n"
  634. " WHERE A.prk_plce_nmbr = :p01 \r\n";
  635. try
  636. {
  637. //FOR_STL(TPrkPlceFlr *, pFlr, AObj->FFlrs)
  638. //{
  639. // pFlr->FArs.Clear();
  640. //}
  641. try
  642. {
  643. pADO = new TADOQuery(NULL);
  644. pADO->Close();
  645. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  646. pADO->SQL->Clear();
  647. pADO->SQL->Text = sQry;
  648. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  649. pADO->Prepared = true;
  650. pADO->Open();
  651. for( ; !pADO->Eof; pADO->Next())
  652. {
  653. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  654. String FLR_NO = pADO->FieldByName("FLR_NO")->AsString; // N VARCHAR2(10) N 층 번호
  655. String AR_NO = pADO->FieldByName("AR_NO")->AsString; // N VARCHAR2(10) N 구역 일련번호
  656. int AR_PRK_CMPRT_CO = pADO->FieldByName("AR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 구역별 주차 구획 수, 120(면), 시설정보+실시간정보
  657. int AR_REMNDR_PRK_CMPRT_CO = pADO->FieldByName("AR_REMNDR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 구역별 잔여 주차 구획 수, 120(면), 실시간정보
  658. TPrkPlceFlr *pFlr = AObj->FFlrs.Find(FLR_NO);
  659. if (pFlr) {
  660. TPrkPlceAr *pAr = pFlr->FArs.Find(AR_NO);
  661. if (pAr == NULL) {
  662. pAr = new TPrkPlceAr();
  663. pAr->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  664. pAr->FLR_NO = FLR_NO;
  665. pAr->AR_NO = AR_NO;
  666. pFlr->FArs.Push(AR_NO, pAr);
  667. }
  668. pAr->AR_PRK_CMPRT_CO = AR_PRK_CMPRT_CO;
  669. pAr->AR_REMNDR_PRK_CMPRT_CO = AR_REMNDR_PRK_CMPRT_CO;
  670. }
  671. }
  672. }
  673. catch(EDatabaseError &E)
  674. {
  675. DBERRORMSG("TPrkPlceManager::LoadFromDbAr", String(E.ClassName()), E.Message, sQry);
  676. throw Exception(String(E.ClassName()) + E.Message);
  677. }
  678. catch(Exception &e)
  679. {
  680. DBERRORMSG("TPrkPlceManager::LoadFromDbAr", String(e.ClassName()), e.Message, sQry);
  681. throw Exception(String(e.ClassName()) + e.Message);
  682. }
  683. }
  684. __finally
  685. {
  686. if (pADO)
  687. {
  688. pADO->Close();
  689. delete pADO;
  690. }
  691. }
  692. return true;
  693. }
  694. //---------------------------------------------------------------------------
  695. bool TPrkPlceManager::LoadFromDbPrv(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  696. {
  697. String sQry;
  698. TADOQuery *pADO = NULL;
  699. sQry = "SELECT A.* \r\n"
  700. " FROM TB_PRK_PLCE_PRV A \r\n"
  701. " WHERE A.prk_plce_nmbr = :p01 \r\n";
  702. try
  703. {
  704. //AObj->FPrvs.Clear();
  705. try
  706. {
  707. pADO = new TADOQuery(NULL);
  708. pADO->Close();
  709. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  710. pADO->SQL->Clear();
  711. pADO->SQL->Text = sQry;
  712. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  713. pADO->Prepared = true;
  714. pADO->Open();
  715. for( ; !pADO->Eof; pADO->Next())
  716. {
  717. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  718. int VHCTY_AR_SE = pADO->FieldByName("VHCTY_AR_SE")->AsInteger; // N NUMBER(1) N 전용주차구역 구분 (0: 경차 전용, 1: 친환경차 (전기차), 2: 화물차 전용, 3: 긴급차량 전용, 4: 장애인 전용, 5: 어르신 전용, 6: 여성 전용, 9: 기타)
  719. int VHCTY_AR_PRK_CMPRT_CO = pADO->FieldByName("VHCTY_AR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 전용주차구역별 주차 구획 수, 시설정보+실시간정보
  720. int VHCTY_AR_REMNDR_PRK_CMPRT_CO = pADO->FieldByName("VHCTY_AR_REMNDR_PRK_CMPRT_CO")->AsInteger; // N NUMBER(18) Y 전용주차구역별 잔여 주차 구획 수, 실시간정보
  721. TPrkPlcePrv *pPrv = AObj->FPrvs.Find(VHCTY_AR_SE);
  722. if (pPrv == NULL) {
  723. pPrv = new TPrkPlcePrv();
  724. pPrv->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  725. pPrv->VHCTY_AR_SE = VHCTY_AR_SE;
  726. AObj->FPrvs.Push(VHCTY_AR_SE, pPrv);
  727. }
  728. pPrv->VHCTY_AR_PRK_CMPRT_CO = VHCTY_AR_PRK_CMPRT_CO;
  729. pPrv->VHCTY_AR_REMNDR_PRK_CMPRT_CO = VHCTY_AR_REMNDR_PRK_CMPRT_CO;
  730. }
  731. }
  732. catch(EDatabaseError &E)
  733. {
  734. DBERRORMSG("TPrkPlceManager::LoadFromDbPrv", String(E.ClassName()), E.Message, sQry);
  735. throw Exception(String(E.ClassName()) + E.Message);
  736. }
  737. catch(Exception &e)
  738. {
  739. DBERRORMSG("TPrkPlceManager::LoadFromDbPrv", String(e.ClassName()), e.Message, sQry);
  740. throw Exception(String(e.ClassName()) + e.Message);
  741. }
  742. }
  743. __finally
  744. {
  745. if (pADO)
  746. {
  747. pADO->Close();
  748. delete pADO;
  749. }
  750. }
  751. return true;
  752. }
  753. //---------------------------------------------------------------------------
  754. bool TPrkPlceManager::LoadFromDbDev(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  755. {
  756. String sQry;
  757. TADOQuery *pADO = NULL;
  758. sQry = "SELECT A.* \r\n"
  759. " FROM TB_PRK_PLCE_DEV A \r\n"
  760. " WHERE A.prk_plce_nmbr = :p01 \r\n"
  761. " ORDER BY A.PRK_PLCE_NMBR, TO_NUMBER(A.DEVICE_ID) \r\n";
  762. try
  763. {
  764. try
  765. {
  766. pADO = new TADOQuery(NULL);
  767. pADO->Close();
  768. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  769. pADO->SQL->Clear();
  770. pADO->SQL->Text = sQry;
  771. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  772. pADO->Prepared = true;
  773. pADO->Open();
  774. for( ; !pADO->Eof; pADO->Next())
  775. {
  776. String PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString; // N NUMBER(10) N 주차장 관리 번호
  777. int DEVICE_ID = pADO->FieldByName("DEVICE_ID")->AsInteger; // N VARCHAR2(5) N 주차정보수집장치 ID
  778. int DEVICE_TYPE = pADO->FieldByName("DEVICE_TYPE")->AsInteger; // N NUMBER(1) Y 주차정보수집장치 종류 (0 : 영상식, 1 : 지자기, 2 : 레이더, 3 : 루프, 4 : 초음파, 9 : 기타)
  779. String PRK_UNIT_ID = pADO->FieldByName("PRK_UNIT_ID")->AsString; // N VARCHAR2(10) Y 주차면 ID, 층번호+구역일련번호 예시) 1FA01 1층 A구역 01번 주차면
  780. int TYPED_PARKING_LOTS = pADO->FieldByName("TYPED_PARKING_LOTS")->AsInteger; // N NUMBER(1) Y 주차면 유형 (0 : 일반, 1 : 경차 전용, 2 : 대형(화물)전용, 3 : 긴급차량전용, 4 : 장애인 전용, 5 : 여성 전용, 9 : 기타)
  781. int OCCUPATION = pADO->FieldByName("OCCUPATION")->AsInteger; // N NUMBER(1) Y 주차면 점유여부 (0 : 주차가능 (주차면 비점유), 1 : 주차불가 (주차면 점유))
  782. int CONNECTED = pADO->FieldByName("CONNECTED")->AsInteger; // N NUMBER(1) Y 통신상태 (0 : 불량, 1 : 정상)
  783. TPrkPlceDev *pDev = AObj->FDevs.Find(DEVICE_ID);
  784. if (pDev == NULL) {
  785. pDev = new TPrkPlceDev();
  786. pDev->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  787. pDev->DEVICE_ID = DEVICE_ID;
  788. pDev->DEVICE_TYPE = DEVICE_TYPE;
  789. pDev->PRK_UNIT_ID = PRK_UNIT_ID;
  790. AObj->FDevs.Push(DEVICE_ID, pDev);
  791. }
  792. pDev->TYPED_PARKING_LOTS = TYPED_PARKING_LOTS;
  793. pDev->OCCUPATION = OCCUPATION;
  794. pDev->CONNECTED = CONNECTED;
  795. }
  796. }
  797. catch(EDatabaseError &E)
  798. {
  799. DBERRORMSG("TPrkPlceManager::LoadFromDbDev", String(E.ClassName()), E.Message, sQry);
  800. throw Exception(String(E.ClassName()) + E.Message);
  801. }
  802. catch(Exception &e)
  803. {
  804. DBERRORMSG("TPrkPlceManager::LoadFromDbDev", String(e.ClassName()), e.Message, sQry);
  805. throw Exception(String(e.ClassName()) + e.Message);
  806. }
  807. }
  808. __finally
  809. {
  810. if (pADO)
  811. {
  812. pADO->Close();
  813. delete pADO;
  814. }
  815. }
  816. return true;
  817. }
  818. //---------------------------------------------------------------------------
  819. bool TPrkPlceManager::GetNextPrkNmbr(int &ANmbr, int &AId, TADOConnection *ADbConn/*=NULL*/)
  820. {
  821. String sQry;
  822. TADOQuery *pADO = NULL;
  823. sQry = "SELECT NVL(MAX(prk_plce_nmbr), 0) + 1 AS NEWID FROM TB_PRK_PLCE";
  824. try
  825. {
  826. try
  827. {
  828. pADO = new TADOQuery(NULL);
  829. pADO->Close();
  830. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  831. pADO->SQL->Clear();
  832. pADO->SQL->Text = sQry;
  833. pADO->Prepared = true;
  834. pADO->Open();
  835. ANmbr = pADO->FieldByName("NEWID")->AsInteger;
  836. AId = ANmbr / 10000;
  837. return true;
  838. }
  839. catch(EDatabaseError &E)
  840. {
  841. DBERRORLOG("TPrkPlceManager::GetNextPrkNmbr", String(E.ClassName()), E.Message, sQry);
  842. throw Exception(String(E.ClassName()) + E.Message);
  843. }
  844. catch(Exception &e)
  845. {
  846. DBERRORLOG("TPrkPlceManager::GetNextPrkNmbr", String(e.ClassName()), e.Message, sQry);
  847. throw Exception(String(e.ClassName()) + e.Message);
  848. }
  849. }
  850. __finally
  851. {
  852. if (pADO)
  853. {
  854. pADO->Close();
  855. delete pADO;
  856. }
  857. }
  858. return false;
  859. }
  860. //---------------------------------------------------------------------------
  861. bool TPrkPlceManager::DeletePrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  862. {
  863. String sQry;
  864. TADOQuery *pADO = NULL;
  865. sQry = "UPDATE TB_PRK_PLCE \r\n"
  866. " SET DEL_YN = 'Y' \r\n"
  867. " WHERE prk_plce_nmbr = :p01 \r\n";
  868. try
  869. {
  870. FLists.Lock();
  871. try
  872. {
  873. pADO = new TADOQuery(NULL);
  874. pADO->Close();
  875. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  876. pADO->SQL->Clear();
  877. pADO->SQL->Text = sQry;
  878. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  879. pADO->ExecSQL();
  880. sQry = "DELETE TB_FCLT_INFR \r\n"
  881. " WHERE FCLT_ID = :p01 \r\n";
  882. " AND FCLT_TYPE = 'PARK' \r\n";
  883. pADO->SQL->Clear();
  884. pADO->SQL->Text = sQry;
  885. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_ID;
  886. pADO->ExecSQL();
  887. return true;
  888. }
  889. catch(EDatabaseError &E)
  890. {
  891. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  892. DBERRORMSG("TPrkPlceManager::DeletePrkPlce", String(E.ClassName()), E.Message, sQry);
  893. throw Exception(String(E.ClassName()) + E.Message);
  894. }
  895. catch(Exception &exception)
  896. {
  897. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  898. DBERRORMSG("TPrkPlceManager::DeletePrkPlce", String(exception.ClassName()), exception.Message, sQry);
  899. throw Exception(String(exception.ClassName()) + exception.Message);
  900. }
  901. }
  902. __finally
  903. {
  904. if (pADO)
  905. {
  906. pADO->Close();
  907. delete pADO;
  908. }
  909. FLists.UnLock();
  910. }
  911. return true;
  912. }
  913. //---------------------------------------------------------------------------
  914. bool TPrkPlceManager::InsertPrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  915. {
  916. return MergePrkPlce(AObj, ADbConn);
  917. }
  918. //---------------------------------------------------------------------------
  919. bool TPrkPlceManager::UpdatePrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  920. {
  921. return MergePrkPlce(AObj, ADbConn);
  922. }
  923. //---------------------------------------------------------------------------
  924. bool TPrkPlceManager::MergePrkPlce(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  925. {
  926. String sQry;
  927. TADOQuery *pADO = NULL;
  928. sQry = "MERGE INTO TB_PRK_PLCE L \r\n"
  929. "USING (SELECT \r\n"
  930. " :p01 AS PRK_PLCE_NMBR, \r\n"
  931. " :p02 AS PRK_PLCE_MANAGE_NO, \r\n"
  932. " :p03 AS PRK_PLCE_STTUS_VER, \r\n"
  933. " :p04 AS PRK_PLCE_NM, \r\n"
  934. " :p44 AS VMS_DSPL_NM, \r\n"
  935. " :p05 AS PRK_PLCE_ADRES, \r\n"
  936. " :p06 AS PRK_PLCE_INSTL_DE, \r\n"
  937. " :p07 AS PRK_PLCE_ABL_DE, \r\n"
  938. " :p08 AS PRK_PLCE_ENTRC_NM, \r\n"
  939. " :p09 AS PRK_PLCE_ENTRC_LA, \r\n"
  940. " :p10 AS PRK_PLCE_ENTRC_LO, \r\n"
  941. " :p11 AS PRK_PLCE_ENTRC_EXTTY, \r\n"
  942. " :p12 AS PARKING_TY, \r\n"
  943. " :p13 AS PARKING_US, \r\n"
  944. " :p14 AS AR_LEVEL_SE, \r\n"
  945. //" :p15 AS PRK_PLCE_IMAGE_DATA, \r\n"
  946. " :p16 AS PRK_PLCE_IMAGE_TYPE, \r\n"
  947. " :p17 AS PRK_PLCE_IMAGE_DC, \r\n"
  948. " :p18 AS SYS_NE, \r\n"
  949. " :p19 AS PARKING_CNTRL_SYS_INSTL_DE, \r\n"
  950. " :p20 AS RELATION_LAW_AND_ORDINANCES, \r\n"
  951. " :p21 AS PRK_AVAIL_CARTYPE, \r\n"
  952. " :p22 AS PRK_CMPRT_CO, \r\n"
  953. " :p23 AS COLCT_DEVICE_INSTL_AT, \r\n"
  954. " :p24 AS MASTER_CONTROLLER, \r\n"
  955. " :p25 AS SLAVE_CONTROLLER, \r\n"
  956. " :p26 AS COLCT_DEVICE_QTY, \r\n"
  957. " :p27 AS COLCT_DEVICE_KND, \r\n"
  958. //" :p28 AS TYPE_IMGAGE, \r\n"
  959. //" :p29 AS TYPE_GEOMAGNETIC, \r\n"
  960. //" :p30 AS TYPE_RADAR, \r\n"
  961. //" :p31 AS TYPE_LOOP, \r\n"
  962. //" :p32 AS TYPE_ULTRASONIC, \r\n"
  963. //" :p33 AS TYPE_ETC, \r\n"
  964. " :p34 AS COLCT_DEVICE_INSTL_DE, \r\n"
  965. " :p35 AS CRM_PRV_CCTV_INSTL_AT, \r\n"
  966. " :p36 AS CRM_PRV_CCTV_INSTL_CO, \r\n"
  967. " :p37 AS PIS_TYPE, \r\n"
  968. " :p38 AS INFO_CREATE_TIME \r\n"
  969. " FROM DUAL) M \r\n"
  970. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR) \r\n"
  971. "WHEN MATCHED THEN \r\n"
  972. " UPDATE SET \r\n"
  973. " L.PRK_PLCE_MANAGE_NO = M.PRK_PLCE_MANAGE_NO, \r\n"
  974. " L.PRK_PLCE_STTUS_VER = M.PRK_PLCE_STTUS_VER, \r\n"
  975. " L.PRK_PLCE_NM = M.PRK_PLCE_NM, \r\n"
  976. " L.VMS_DSPL_NM = M.VMS_DSPL_NM, \r\n"
  977. " L.PRK_PLCE_ADRES = M.PRK_PLCE_ADRES, \r\n"
  978. " L.PRK_PLCE_INSTL_DE = M.PRK_PLCE_INSTL_DE, \r\n"
  979. " L.PRK_PLCE_ABL_DE = M.PRK_PLCE_ABL_DE, \r\n"
  980. " L.PRK_PLCE_ENTRC_NM = M.PRK_PLCE_ENTRC_NM, \r\n"
  981. " L.PRK_PLCE_ENTRC_LA = M.PRK_PLCE_ENTRC_LA, \r\n"
  982. " L.PRK_PLCE_ENTRC_LO = M.PRK_PLCE_ENTRC_LO, \r\n"
  983. " L.PRK_PLCE_ENTRC_EXTTY = M.PRK_PLCE_ENTRC_EXTTY, \r\n"
  984. " L.PARKING_TY = M.PARKING_TY, \r\n"
  985. " L.PARKING_US = M.PARKING_US, \r\n"
  986. " L.AR_LEVEL_SE = M.AR_LEVEL_SE, \r\n"
  987. //" L.PRK_PLCE_IMAGE_DATA = M.PRK_PLCE_IMAGE_DATA, \r\n"
  988. " L.PRK_PLCE_IMAGE_TYPE = M.PRK_PLCE_IMAGE_TYPE, \r\n"
  989. " L.PRK_PLCE_IMAGE_DC = M.PRK_PLCE_IMAGE_DC, \r\n"
  990. " L.SYS_NE = M.SYS_NE, \r\n"
  991. " L.PARKING_CNTRL_SYS_INSTL_DE = M.PARKING_CNTRL_SYS_INSTL_DE, \r\n"
  992. " L.RELATION_LAW_AND_ORDINANCES = M.RELATION_LAW_AND_ORDINANCES, \r\n"
  993. " L.PRK_AVAIL_CARTYPE = M.PRK_AVAIL_CARTYPE, \r\n"
  994. " L.PRK_CMPRT_CO = M.PRK_CMPRT_CO, \r\n"
  995. " L.COLCT_DEVICE_INSTL_AT = M.COLCT_DEVICE_INSTL_AT, \r\n"
  996. " L.MASTER_CONTROLLER = M.MASTER_CONTROLLER, \r\n"
  997. " L.SLAVE_CONTROLLER = M.SLAVE_CONTROLLER, \r\n"
  998. " L.COLCT_DEVICE_QTY = M.COLCT_DEVICE_QTY, \r\n"
  999. " L.COLCT_DEVICE_KND = M.COLCT_DEVICE_KND, \r\n"
  1000. //" L.TYPE_IMGAGE = M.TYPE_IMGAGE, \r\n"
  1001. //" L.TYPE_GEOMAGNETIC = M.TYPE_GEOMAGNETIC, \r\n"
  1002. //" L.TYPE_RADAR = M.TYPE_RADAR, \r\n"
  1003. //" L.TYPE_LOOP = M.TYPE_LOOP, \r\n"
  1004. //" L.TYPE_ULTRASONIC = M.TYPE_ULTRASONIC, \r\n"
  1005. //" L.TYPE_ETC = M.TYPE_ETC, \r\n"
  1006. " L.COLCT_DEVICE_INSTL_DE = M.COLCT_DEVICE_INSTL_DE, \r\n"
  1007. " L.CRM_PRV_CCTV_INSTL_AT = M.CRM_PRV_CCTV_INSTL_AT, \r\n"
  1008. " L.CRM_PRV_CCTV_INSTL_CO = M.CRM_PRV_CCTV_INSTL_CO, \r\n"
  1009. " L.PIS_TYPE = M.PIS_TYPE, \r\n"
  1010. " L.INFO_CREATE_TIME = M.INFO_CREATE_TIME \r\n"
  1011. "WHEN NOT MATCHED THEN \r\n"
  1012. " INSERT ( \r\n"
  1013. " PRK_PLCE_NMBR, \r\n"
  1014. " PRK_PLCE_MANAGE_NO, \r\n"
  1015. " PRK_PLCE_STTUS_VER, \r\n"
  1016. " PRK_PLCE_NM, \r\n"
  1017. " VMS_DSPL_NM, \r\n"
  1018. " PRK_PLCE_ADRES, \r\n"
  1019. " PRK_PLCE_INSTL_DE, \r\n"
  1020. " PRK_PLCE_ABL_DE, \r\n"
  1021. " PRK_PLCE_ENTRC_NM, \r\n"
  1022. " PRK_PLCE_ENTRC_LA, \r\n"
  1023. " PRK_PLCE_ENTRC_LO, \r\n"
  1024. " PRK_PLCE_ENTRC_EXTTY, \r\n"
  1025. " PARKING_TY, \r\n"
  1026. " PARKING_US, \r\n"
  1027. " AR_LEVEL_SE, \r\n"
  1028. //" PRK_PLCE_IMAGE_DATA, \r\n"
  1029. " PRK_PLCE_IMAGE_TYPE, \r\n"
  1030. " PRK_PLCE_IMAGE_DC, \r\n"
  1031. " SYS_NE, \r\n"
  1032. " PARKING_CNTRL_SYS_INSTL_DE, \r\n"
  1033. " RELATION_LAW_AND_ORDINANCES, \r\n"
  1034. " PRK_AVAIL_CARTYPE, \r\n"
  1035. " PRK_CMPRT_CO, \r\n"
  1036. " COLCT_DEVICE_INSTL_AT, \r\n"
  1037. " MASTER_CONTROLLER, \r\n"
  1038. " SLAVE_CONTROLLER, \r\n"
  1039. " COLCT_DEVICE_QTY, \r\n"
  1040. " COLCT_DEVICE_KND, \r\n"
  1041. //" TYPE_IMGAGE, \r\n"
  1042. //" TYPE_GEOMAGNETIC, \r\n"
  1043. //" TYPE_RADAR, \r\n"
  1044. //" TYPE_LOOP, \r\n"
  1045. //" TYPE_ULTRASONIC, \r\n"
  1046. //" TYPE_ETC, \r\n"
  1047. " COLCT_DEVICE_INSTL_DE, \r\n"
  1048. " CRM_PRV_CCTV_INSTL_AT, \r\n"
  1049. " CRM_PRV_CCTV_INSTL_CO, \r\n"
  1050. " PIS_TYPE, \r\n"
  1051. " INFO_CREATE_TIME ) \r\n"
  1052. " VALUES ( \r\n"
  1053. " M.PRK_PLCE_NMBR, \r\n"
  1054. " M.PRK_PLCE_MANAGE_NO, \r\n"
  1055. " M.PRK_PLCE_STTUS_VER, \r\n"
  1056. " M.PRK_PLCE_NM, \r\n"
  1057. " M.VMS_DSPL_NM, \r\n"
  1058. " M.PRK_PLCE_ADRES, \r\n"
  1059. " M.PRK_PLCE_INSTL_DE, \r\n"
  1060. " M.PRK_PLCE_ABL_DE, \r\n"
  1061. " M.PRK_PLCE_ENTRC_NM, \r\n"
  1062. " M.PRK_PLCE_ENTRC_LA, \r\n"
  1063. " M.PRK_PLCE_ENTRC_LO, \r\n"
  1064. " M.PRK_PLCE_ENTRC_EXTTY, \r\n"
  1065. " M.PARKING_TY, \r\n"
  1066. " M.PARKING_US, \r\n"
  1067. " M.AR_LEVEL_SE, \r\n"
  1068. //" M.PRK_PLCE_IMAGE_DATA, \r\n"
  1069. " M.PRK_PLCE_IMAGE_TYPE, \r\n"
  1070. " M.PRK_PLCE_IMAGE_DC, \r\n"
  1071. " M.SYS_NE, \r\n"
  1072. " M.PARKING_CNTRL_SYS_INSTL_DE, \r\n"
  1073. " M.RELATION_LAW_AND_ORDINANCES, \r\n"
  1074. " M.PRK_AVAIL_CARTYPE, \r\n"
  1075. " M.PRK_CMPRT_CO, \r\n"
  1076. " M.COLCT_DEVICE_INSTL_AT, \r\n"
  1077. " M.MASTER_CONTROLLER, \r\n"
  1078. " M.SLAVE_CONTROLLER, \r\n"
  1079. " M.COLCT_DEVICE_QTY, \r\n"
  1080. " M.COLCT_DEVICE_KND, \r\n"
  1081. //" M.TYPE_IMGAGE, \r\n"
  1082. //" M.TYPE_GEOMAGNETIC, \r\n"
  1083. //" M.TYPE_RADAR, \r\n"
  1084. //" M.TYPE_LOOP, \r\n"
  1085. //" M.TYPE_ULTRASONIC, \r\n"
  1086. //" M.TYPE_ETC, \r\n"
  1087. " M.COLCT_DEVICE_INSTL_DE, \r\n"
  1088. " M.CRM_PRV_CCTV_INSTL_AT, \r\n"
  1089. " M.CRM_PRV_CCTV_INSTL_CO, \r\n"
  1090. " M.PIS_TYPE, \r\n"
  1091. " M.INFO_CREATE_TIME ) \r\n";
  1092. try
  1093. {
  1094. try
  1095. {
  1096. pADO = new TADOQuery(NULL);
  1097. pADO->Close();
  1098. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  1099. pADO->SQL->Clear();
  1100. pADO->SQL->Text = sQry;
  1101. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_NMBR;
  1102. pADO->Parameters->ParamByName("p02")->Value = AObj->CTLR_ID;
  1103. pADO->Parameters->ParamByName("p03")->Value = AObj->PRK_PLCE_STTUS_VER;
  1104. pADO->Parameters->ParamByName("p04")->Value = AObj->NAME;
  1105. pADO->Parameters->ParamByName("p44")->Value = AObj->VMS_DSPL_NM;
  1106. pADO->Parameters->ParamByName("p05")->Value = AObj->ISTL_LCTN_ADDR;
  1107. pADO->Parameters->ParamByName("p06")->Value = AObj->PRK_PLCE_INSTL_DE;
  1108. pADO->Parameters->ParamByName("p07")->Value = AObj->PRK_PLCE_ABL_DE;
  1109. pADO->Parameters->ParamByName("p08")->Value = AObj->PRK_PLCE_ENTRC_NM;
  1110. pADO->Parameters->ParamByName("p09")->Value = AObj->Y_CRDN;
  1111. pADO->Parameters->ParamByName("p10")->Value = AObj->X_CRDN;
  1112. pADO->Parameters->ParamByName("p11")->Value = AObj->PRK_PLCE_ENTRC_EXTTY;
  1113. pADO->Parameters->ParamByName("p12")->Value = AObj->PARKING_TY;
  1114. pADO->Parameters->ParamByName("p13")->Value = AObj->PARKING_US;
  1115. pADO->Parameters->ParamByName("p14")->Value = AObj->AR_LEVEL_SE;
  1116. //pADO->Parameters->ParamByName("p15")->Value = AObj->PRK_PLCE_IMAGE_DATA;
  1117. pADO->Parameters->ParamByName("p16")->Value = AObj->PRK_PLCE_IMAGE_TYPE;
  1118. pADO->Parameters->ParamByName("p17")->Value = AObj->PRK_PLCE_IMAGE_DC;
  1119. pADO->Parameters->ParamByName("p18")->Value = AObj->SYS_NE;
  1120. pADO->Parameters->ParamByName("p19")->Value = AObj->PARKING_CNTRL_SYS_INSTL_DE;
  1121. pADO->Parameters->ParamByName("p20")->Value = AObj->RELATION_LAW_AND_ORDINANCES;
  1122. pADO->Parameters->ParamByName("p21")->Value = AObj->PRK_AVAIL_CARTYPE;
  1123. pADO->Parameters->ParamByName("p22")->Value = AObj->PRK_CMPRT_CO;
  1124. pADO->Parameters->ParamByName("p23")->Value = AObj->COLCT_DEVICE_INSTL_AT;
  1125. pADO->Parameters->ParamByName("p24")->Value = AObj->MASTER_CONTROLLER;
  1126. pADO->Parameters->ParamByName("p25")->Value = AObj->SLAVE_CONTROLLER;
  1127. pADO->Parameters->ParamByName("p26")->Value = AObj->COLCT_DEVICE_QTY;
  1128. pADO->Parameters->ParamByName("p27")->Value = AObj->COLCT_DEVICE_KND;
  1129. //pADO->Parameters->ParamByName("p28")->Value = AObj->TYPE_IMGAGE;
  1130. //pADO->Parameters->ParamByName("p29")->Value = AObj->TYPE_GEOMAGNETIC;
  1131. //pADO->Parameters->ParamByName("p30")->Value = AObj->TYPE_RADAR;
  1132. //pADO->Parameters->ParamByName("p31")->Value = AObj->TYPE_LOOP;
  1133. //pADO->Parameters->ParamByName("p32")->Value = AObj->TYPE_ULTRASONIC;
  1134. //pADO->Parameters->ParamByName("p33")->Value = AObj->TYPE_ETC;
  1135. pADO->Parameters->ParamByName("p34")->Value = AObj->COLCT_DEVICE_INSTL_DE;
  1136. pADO->Parameters->ParamByName("p35")->Value = AObj->CRM_PRV_CCTV_INSTL_AT;
  1137. pADO->Parameters->ParamByName("p36")->Value = AObj->CRM_PRV_CCTV_INSTL_CO;
  1138. pADO->Parameters->ParamByName("p37")->Value = AObj->TYPE_CD;
  1139. pADO->Parameters->ParamByName("p38")->Value = AObj->INFO_CREATE_TIME;
  1140. pADO->ExecSQL();
  1141. MergePrkPlceOpr(AObj->FOPR, ADbConn);
  1142. MergeFcltInfo(AObj, ADbConn);
  1143. }
  1144. catch(EDatabaseError &E)
  1145. {
  1146. DBERRORMSG("TPrkPlceManager::MergePrkPlce", String(E.ClassName()), E.Message, sQry);
  1147. throw Exception(String(E.ClassName()) + E.Message);
  1148. }
  1149. catch(Exception &e)
  1150. {
  1151. DBERRORMSG("TPrkPlceManager::MergePrkPlce", String(e.ClassName()), e.Message, sQry);
  1152. throw Exception(String(e.ClassName()) + e.Message);
  1153. }
  1154. }
  1155. __finally
  1156. {
  1157. if (pADO)
  1158. {
  1159. pADO->Close();
  1160. delete pADO;
  1161. }
  1162. }
  1163. return true;
  1164. }
  1165. //---------------------------------------------------------------------------
  1166. bool TPrkPlceManager::MergePrkPlceOpr(TPrkPlceOpr *AObj, TADOConnection *ADbConn/*=NULL*/)
  1167. {
  1168. String sQry;
  1169. TADOQuery *pADO = NULL;
  1170. sQry = "MERGE INTO TB_PRK_PLCE_OPR L \r\n"
  1171. "USING (SELECT \r\n"
  1172. " :p01 AS PRK_PLCE_NMBR, \r\n"
  1173. " :p02 AS PRK_PLCE_OPR_VER, \r\n"
  1174. " :p03 AS CMPT_INST_NM, \r\n"
  1175. " :p04 AS OPER_DEPT_NM, \r\n"
  1176. " :p05 AS OPER_PERSON_NM, \r\n"
  1177. " :p06 AS OPER_CTT_PC_TEL, \r\n"
  1178. " :p07 AS OPER_CTT_PC_EMAIL, \r\n"
  1179. " :p08 AS NO_DRV_DAY_OPERTN_AT, \r\n"
  1180. " :p09 AS OPERTN_BS_FREE_TIME, \r\n"
  1181. " :p10 AS OPN_CODE, \r\n"
  1182. " :p11 AS PARKING_CHRGE_EXCCLC_MTHD, \r\n"
  1183. " :p12 AS PARKING_CHRGE_PYMNT_MN, \r\n"
  1184. " :p13 AS PARKING_RESVE_OPERTN_AT, \r\n"
  1185. " :p14 AS PARTCLR_MATTER, \r\n"
  1186. " :p15 AS INFO_CREATE_TIME \r\n"
  1187. " FROM DUAL) M \r\n"
  1188. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR) \r\n"
  1189. "WHEN MATCHED THEN \r\n"
  1190. " UPDATE SET \r\n"
  1191. " L.PRK_PLCE_OPR_VER = M.PRK_PLCE_OPR_VER, \r\n"
  1192. " L.CMPT_INST_NM = M.CMPT_INST_NM, \r\n"
  1193. " L.OPER_DEPT_NM = M.OPER_DEPT_NM, \r\n"
  1194. " L.OPER_PERSON_NM = M.OPER_PERSON_NM, \r\n"
  1195. " L.OPER_CTT_PC_TEL = M.OPER_CTT_PC_TEL, \r\n"
  1196. " L.OPER_CTT_PC_EMAIL = M.OPER_CTT_PC_EMAIL, \r\n"
  1197. " L.NO_DRV_DAY_OPERTN_AT = M.NO_DRV_DAY_OPERTN_AT, \r\n"
  1198. " L.OPERTN_BS_FREE_TIME = M.OPERTN_BS_FREE_TIME, \r\n"
  1199. " L.OPN_CODE = M.OPN_CODE, \r\n"
  1200. " L.PARKING_CHRGE_EXCCLC_MTHD = M.PARKING_CHRGE_EXCCLC_MTHD, \r\n"
  1201. " L.PARKING_CHRGE_PYMNT_MN = M.PARKING_CHRGE_PYMNT_MN, \r\n"
  1202. " L.PARKING_RESVE_OPERTN_AT = M.PARKING_RESVE_OPERTN_AT, \r\n"
  1203. " L.PARTCLR_MATTER = M.PARTCLR_MATTER, \r\n"
  1204. " L.INFO_CREATE_TIME = M.INFO_CREATE_TIME \r\n"
  1205. "WHEN NOT MATCHED THEN \r\n"
  1206. " INSERT ( \r\n"
  1207. " PRK_PLCE_NMBR, \r\n"
  1208. " PRK_PLCE_OPR_VER, \r\n"
  1209. " CMPT_INST_NM, \r\n"
  1210. " OPER_DEPT_NM, \r\n"
  1211. " OPER_PERSON_NM, \r\n"
  1212. " OPER_CTT_PC_TEL, \r\n"
  1213. " OPER_CTT_PC_EMAIL, \r\n"
  1214. " NO_DRV_DAY_OPERTN_AT, \r\n"
  1215. " OPERTN_BS_FREE_TIME, \r\n"
  1216. " OPN_CODE, \r\n"
  1217. " PARKING_CHRGE_EXCCLC_MTHD, \r\n"
  1218. " PARKING_CHRGE_PYMNT_MN, \r\n"
  1219. " PARKING_RESVE_OPERTN_AT, \r\n"
  1220. " PARTCLR_MATTER, \r\n"
  1221. " INFO_CREATE_TIME ) \r\n"
  1222. " VALUES ( \r\n"
  1223. " M.PRK_PLCE_NMBR, \r\n"
  1224. " M.PRK_PLCE_OPR_VER, \r\n"
  1225. " M.CMPT_INST_NM, \r\n"
  1226. " M.OPER_DEPT_NM, \r\n"
  1227. " M.OPER_PERSON_NM, \r\n"
  1228. " M.OPER_CTT_PC_TEL, \r\n"
  1229. " M.OPER_CTT_PC_EMAIL, \r\n"
  1230. " M.NO_DRV_DAY_OPERTN_AT, \r\n"
  1231. " M.OPERTN_BS_FREE_TIME, \r\n"
  1232. " M.OPN_CODE, \r\n"
  1233. " M.PARKING_CHRGE_EXCCLC_MTHD, \r\n"
  1234. " M.PARKING_CHRGE_PYMNT_MN, \r\n"
  1235. " M.PARKING_RESVE_OPERTN_AT, \r\n"
  1236. " M.PARTCLR_MATTER, \r\n"
  1237. " M.INFO_CREATE_TIME ) \r\n";
  1238. try
  1239. {
  1240. try
  1241. {
  1242. pADO = new TADOQuery(NULL);
  1243. pADO->Close();
  1244. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  1245. pADO->SQL->Clear();
  1246. pADO->SQL->Text = sQry;
  1247. pADO->Parameters->ParamByName("p01")->Value = AObj->PRK_PLCE_NMBR;
  1248. pADO->Parameters->ParamByName("p02")->Value = AObj->PRK_PLCE_OPR_VER;
  1249. pADO->Parameters->ParamByName("p03")->Value = AObj->CMPT_INST_NM;
  1250. pADO->Parameters->ParamByName("p04")->Value = AObj->OPER_DEPT_NM;
  1251. pADO->Parameters->ParamByName("p05")->Value = AObj->OPER_PERSON_NM;
  1252. pADO->Parameters->ParamByName("p06")->Value = AObj->OPER_CTT_PC_TEL;
  1253. pADO->Parameters->ParamByName("p07")->Value = AObj->OPER_CTT_PC_EMAIL;
  1254. pADO->Parameters->ParamByName("p08")->Value = AObj->NO_DRV_DAY_OPERTN_AT;
  1255. pADO->Parameters->ParamByName("p09")->Value = AObj->OPERTN_BS_FREE_TIME;
  1256. pADO->Parameters->ParamByName("p10")->Value = AObj->OPN_CODE;
  1257. pADO->Parameters->ParamByName("p11")->Value = AObj->PARKING_CHRGE_EXCCLC_MTHD;
  1258. pADO->Parameters->ParamByName("p12")->Value = AObj->PARKING_CHRGE_PYMNT_MN;
  1259. pADO->Parameters->ParamByName("p13")->Value = AObj->PARKING_RESVE_OPERTN_AT;
  1260. pADO->Parameters->ParamByName("p14")->Value = AObj->PARTCLR_MATTER;
  1261. pADO->Parameters->ParamByName("p15")->Value = AObj->INFO_CREATE_TIME;
  1262. pADO->ExecSQL();
  1263. }
  1264. catch(EDatabaseError &E)
  1265. {
  1266. DBERRORMSG("TPrkPlceManager::MergePrkPlceOpr", String(E.ClassName()), E.Message, sQry);
  1267. throw Exception(String(E.ClassName()) + E.Message);
  1268. }
  1269. catch(Exception &e)
  1270. {
  1271. DBERRORMSG("TPrkPlceManager::MergePrkPlceOpr", String(e.ClassName()), e.Message, sQry);
  1272. throw Exception(String(e.ClassName()) + e.Message);
  1273. }
  1274. }
  1275. __finally
  1276. {
  1277. if (pADO)
  1278. {
  1279. pADO->Close();
  1280. delete pADO;
  1281. }
  1282. }
  1283. return true;
  1284. }
  1285. //---------------------------------------------------------------------------
  1286. bool TPrkPlceManager::MergePrkPlcePrv(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  1287. {
  1288. String sQry;
  1289. TADOQuery *pADO = NULL;
  1290. #if 0
  1291. sQry = "MERGE INTO TB_PRK_PLCE_PRV L \r\n"
  1292. "USING (SELECT \r\n"
  1293. " :p01 AS PRK_PLCE_NMBR, \r\n"
  1294. " :p02 AS VHCTY_AR_SE, \r\n"
  1295. " :p03 AS VHCTY_AR_PRK_CMPRT_CO, \r\n"
  1296. " 0 AS VHCTY_AR_REMNDR_PRK_CMPRT_CO \r\n"
  1297. " FROM DUAL) M \r\n"
  1298. " ON (L.PRK_PLCE_NMBR = M.PRK_PLCE_NMBR) \r\n"
  1299. "WHEN MATCHED THEN \r\n"
  1300. " UPDATE SET \r\n"
  1301. " L.VHCTY_AR_SE = M.VHCTY_AR_SE, \r\n"
  1302. " L.VHCTY_AR_PRK_CMPRT_CO = M.VHCTY_AR_PRK_CMPRT_CO \r\n"
  1303. "WHEN NOT MATCHED THEN \r\n"
  1304. " INSERT ( \r\n"
  1305. " PRK_PLCE_NMBR, \r\n"
  1306. " VHCTY_AR_SE, \r\n"
  1307. " VHCTY_AR_PRK_CMPRT_CO, \r\n"
  1308. " VHCTY_AR_REMNDR_PRK_CMPRT_CO ) \r\n"
  1309. " VALUES ( \r\n"
  1310. " M.PRK_PLCE_NMBR, \r\n"
  1311. " M.VHCTY_AR_SE, \r\n"
  1312. " M.VHCTY_AR_PRK_CMPRT_CO, \r\n"
  1313. " M.VHCTY_AR_REMNDR_PRK_CMPRT_CO ) \r\n";
  1314. try
  1315. {
  1316. try
  1317. {
  1318. pADO = new TADOQuery(NULL);
  1319. pADO->Close();
  1320. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  1321. pADO->SQL->Clear();
  1322. pADO->SQL->Text = sQry;
  1323. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_ID;
  1324. pADO->Parameters->ParamByName("p02")->Value = "PARK";
  1325. pADO->Parameters->ParamByName("p03")->Value = AObj->NAME;
  1326. pADO->ExecSQL();
  1327. return true;
  1328. }
  1329. catch(EDatabaseError &E)
  1330. {
  1331. DBERRORMSG("TPrkPlceManager::MergeFcltInfo", String(E.ClassName()), E.Message, sQry);
  1332. throw Exception(String(E.ClassName()) + E.Message);
  1333. }
  1334. catch(Exception &e)
  1335. {
  1336. DBERRORMSG("TPrkPlceManager::MergeFcltInfo", String(e.ClassName()), e.Message, sQry);
  1337. throw Exception(String(e.ClassName()) + e.Message);
  1338. }
  1339. }
  1340. __finally
  1341. {
  1342. if (pADO)
  1343. {
  1344. pADO->Close();
  1345. delete pADO;
  1346. }
  1347. }
  1348. #endif
  1349. return true;
  1350. }
  1351. //---------------------------------------------------------------------------
  1352. bool TPrkPlceManager::MergeFcltInfo(TPrkPlce *AObj, TADOConnection *ADbConn/*=NULL*/)
  1353. {
  1354. String sQry;
  1355. TADOQuery *pADO = NULL;
  1356. sQry = "MERGE INTO TB_FCLT_INFR L \r\n"
  1357. "USING (SELECT :p01 AS FCLT_ID, \r\n"
  1358. " :p02 AS FCLT_TYPE, \r\n"
  1359. " :p03 AS FCLT_LCTN \r\n"
  1360. " FROM DUAL) M \r\n"
  1361. " ON (L.FCLT_ID = M.FCLT_ID AND L.FCLT_TYPE = M.FCLT_TYPE) \r\n"
  1362. "WHEN MATCHED \r\n"
  1363. "THEN \r\n"
  1364. " UPDATE SET L.FCLT_LCTN = M.FCLT_LCTN, \r\n"
  1365. " L.DEL_YN = 'N' \r\n"
  1366. "WHEN NOT MATCHED \r\n"
  1367. "THEN \r\n"
  1368. " INSERT ( FCLT_ID, FCLT_TYPE, FCLT_LCTN) \r\n"
  1369. " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN) \r\n";
  1370. try
  1371. {
  1372. try
  1373. {
  1374. pADO = new TADOQuery(NULL);
  1375. pADO->Close();
  1376. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  1377. pADO->SQL->Clear();
  1378. pADO->SQL->Text = sQry;
  1379. pADO->Parameters->ParamByName("p01")->Value = AObj->CTLR_ID;
  1380. pADO->Parameters->ParamByName("p02")->Value = "PARK";
  1381. pADO->Parameters->ParamByName("p03")->Value = AObj->NAME;
  1382. pADO->ExecSQL();
  1383. return true;
  1384. }
  1385. catch(EDatabaseError &E)
  1386. {
  1387. DBERRORMSG("TPrkPlceManager::MergeFcltInfo", String(E.ClassName()), E.Message, sQry);
  1388. throw Exception(String(E.ClassName()) + E.Message);
  1389. }
  1390. catch(Exception &e)
  1391. {
  1392. DBERRORMSG("TPrkPlceManager::MergeFcltInfo", String(e.ClassName()), e.Message, sQry);
  1393. throw Exception(String(e.ClassName()) + e.Message);
  1394. }
  1395. }
  1396. __finally
  1397. {
  1398. if (pADO)
  1399. {
  1400. pADO->Close();
  1401. delete pADO;
  1402. }
  1403. }
  1404. return true;
  1405. }
  1406. //---------------------------------------------------------------------------