CDSPrkPlceF.cpp 80 KB

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