FrmParkMsgF.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSDbF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "ITSSkinF.h"
  7. #include "ITSLangTransF.h"
  8. #pragma hdrstop
  9. #include "FrmParkMsgF.h"
  10. #include "ITS_OPLibF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "cxClasses"
  14. #pragma link "cxControls"
  15. #pragma link "cxCustomData"
  16. #pragma link "cxData"
  17. #pragma link "cxDataStorage"
  18. #pragma link "cxEdit"
  19. #pragma link "cxFilter"
  20. #pragma link "cxGraphics"
  21. #pragma link "cxGrid"
  22. #pragma link "cxGridCustomTableView"
  23. #pragma link "cxGridCustomView"
  24. #pragma link "cxGridLevel"
  25. #pragma link "cxGridTableView"
  26. #pragma link "cxLabel"
  27. #pragma link "cxLookAndFeelPainters"
  28. #pragma link "cxLookAndFeels"
  29. #pragma link "cxStyles"
  30. #pragma link "dxSkinBlack"
  31. #pragma link "dxSkinBlue"
  32. #pragma link "dxSkinsCore"
  33. #pragma link "dxSkinscxPCPainter"
  34. #pragma link "cxContainer"
  35. #pragma link "cxPC"
  36. #pragma link "cxPCdxBarPopupMenu"
  37. #pragma link "dxSkinMcSkin"
  38. #pragma resource "*.dfm"
  39. TFrmParkMsg *FrmParkMsg = NULL;
  40. //---------------------------------------------------------------------------
  41. __fastcall TFrmParkMsg::TFrmParkMsg(TComponent* Owner, TPrkPlce *AObj)
  42. : TForm(Owner)
  43. {
  44. LangTrans->Translate(this, ITSDb_GetConnection());
  45. FObj = AObj;
  46. pADO->Connection = ITSDb_GetConnection();
  47. TvList->OptionsView->NoDataToDisplayInfoText = "<주차정보>";
  48. }
  49. //---------------------------------------------------------------------------
  50. void __fastcall TFrmParkMsg::FormClose(TObject *Sender, TCloseAction &Action)
  51. {
  52. Action = caFree;
  53. }
  54. //---------------------------------------------------------------------------
  55. void __fastcall TFrmParkMsg::FormShow(TObject *Sender)
  56. {
  57. if (FObj)
  58. {
  59. Caption = FObj->CTLR_ID + ": " + FObj->NAME;
  60. //PnlMenu->Visible = FObj->REAL_DATA_YN == "Y" ? true : false;
  61. PnlMenu->Visible = true;
  62. }
  63. TmrShow->Enabled = true;
  64. //EdNm->SetFocus();
  65. }
  66. //---------------------------------------------------------------------------
  67. void __fastcall TFrmParkMsg::TmrShowTimer(TObject *Sender)
  68. {
  69. TmrShow->Enabled = false;
  70. REAL_DESC->Lines->Clear();
  71. MoPRLT_OPER_DESC->Lines->Clear();
  72. MoPRLT_ETC_DESC->Lines->Clear();
  73. if (FObj)
  74. {
  75. //EdNmbr->Text = FObj->PRLT_CTLR_NMBR;
  76. //EdId->Text = FObj->PRLT_CTLR_ID;
  77. EdNm->Text = FObj->NAME;
  78. EdTel->Text = FObj->FOPR->OPER_CTT_PC_TEL;
  79. EdAddr->Text = FObj->ISTL_LCTN_ADDR;
  80. PRK_CMPRT_CO->Text = String(FObj->PRK_CMPRT_CO) + " 대";
  81. MoPRLT_OPER_DESC->Lines->Add("기본무료 시간: " + FObj->FOPR->OPERTN_BS_FREE_TIME); // 주차장 회차 (기본 무료) (00:30:00)
  82. MoPRLT_OPER_DESC->Lines->Add("운영시간 외 무료 개방: " + FObj->FOPR->OPN_CODE == 0 ? "미개방" : "개방"); // 개방코드, 운영시간 외 무료 개방 (0 : 미개방, 1 : 개방)
  83. //NO_DRV_DAY_OPERTN_AT N NUMBER(1) Y 주차 부제 시행여부 (0 : 미시행, 1 : 2부제, 2 : 5부제, 3 : 10부제, 4 : 승용차요일제, 9 : 기타)
  84. switch(FObj->FOPR->NO_DRV_DAY_OPERTN_AT)
  85. {
  86. case 0: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 미시행"); break;
  87. case 1: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 2부제"); break;
  88. case 2: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 5부제"); break;
  89. case 3: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 10부제"); break;
  90. case 4: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 승용차요일제"); break;
  91. default:MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 기타"); break; // 9
  92. }
  93. switch(FObj->FOPR->PARKING_CHRGE_EXCCLC_MTHD)
  94. {
  95. case 0: MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방식: 유인정산"); break;
  96. case 1: MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방색: 무인정산"); break;
  97. case 2: MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방색: 혼합정산"); break;
  98. default:MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방색: 기타"); break; // 9
  99. }
  100. if (FObj->FOPR->PARKING_CHRGE_PYMNT_MN.Length() >= 8) {
  101. String CHRGE = FObj->FOPR->PARKING_CHRGE_PYMNT_MN;
  102. String data = "";
  103. String comma = "";
  104. if (CHRGE.SubString(1, 1) == "1") data += comma + "현금";
  105. if (data.Length() > 0) comma = ", ";
  106. if (CHRGE.SubString(2, 1) == "1") data += comma + "신용카드";
  107. if (data.Length() > 0) comma = ", ";
  108. if (CHRGE.SubString(3, 1) == "1") data += comma + "교통카드";
  109. if (data.Length() > 0) comma = ", ";
  110. if (CHRGE.SubString(4, 1) == "1") data += comma + "전자지불(하이패스)";
  111. if (data.Length() > 0) comma = ", ";
  112. if (CHRGE.SubString(5, 1) == "1") data += comma + "휴대폰소액결제";
  113. if (data.Length() > 0) comma = ", ";
  114. if (CHRGE.SubString(6, 1) == "1") data += comma + "핀테크(OO페이)";
  115. if (data.Length() > 0) comma = ", ";
  116. if (CHRGE.SubString(7, 1) == "1") data += comma + "MaaS 통합결제";
  117. if (data.Length() > 0) comma = ", ";
  118. if (CHRGE.SubString(8, 1) == "1") data += comma + "기타";
  119. MoPRLT_OPER_DESC->Lines->Add("주차요금 지불수단: " + data);
  120. // - 아래 유형 조합해서 생성됌 - 예시) 현금/신용카드 혼합결제 시 (11000000), 핀테크 결제 시 (00000100), 1: 현금, 2: 신용카드, 3: 교통카드, 4: 전자지불(하이패스), 5: 휴대폰소액결제, 6: 핀테크(OO페이), 7: MaaS 통합결제, 9: 기타
  121. }
  122. MoPRLT_ETC_DESC->Lines->Text = FObj->FOPR->PARTCLR_MATTER;
  123. PnlMenu->Visible = true;
  124. }
  125. TmrQry->Interval = 100;
  126. TmrQry->Enabled = true;
  127. }
  128. //---------------------------------------------------------------------------
  129. void __fastcall TFrmParkMsg::TmrQryTimer(TObject *Sender)
  130. {
  131. TmrQry->Enabled = false;
  132. if (!FObj) return;
  133. //if (FObj->REAL_DATA_YN == "Y")
  134. {
  135. SelectParkMsg();
  136. }
  137. TmrQry->Interval = 60 * 1000;
  138. TmrQry->Enabled = true;
  139. }
  140. //---------------------------------------------------------------------------
  141. void __fastcall TFrmParkMsg::SelectParkMsg()
  142. {
  143. String sQry;
  144. if (!FObj)
  145. {
  146. return;
  147. }
  148. CMM_ClearGridTableView(TvList);
  149. sQry = "SELECT 0 as data_seq, A.prk_plce_nmbr, A.prk_plce_manage_no, A.prk_plce_nm, \r\n"
  150. " B.cmnc_stts_cd, DECODE(B.cmnc_stts_cd, 'CMS0', '정상', '이상') AS cmnc_stts_desc, \r\n"
  151. " C.data_colct_time, '전체' AS flr_no, \r\n"
  152. " C.parking_cgs_sttus, \r\n"
  153. " DECODE(C.parking_cgs_sttus, 0, '여유', \r\n"
  154. " 1, '보통', \r\n"
  155. " 2, '혼잡', \r\n"
  156. " 3, '만차', \r\n"
  157. " '알수없음') AS parking_cgs_desc, \r\n"
  158. " C.prk_cmprt_co AS prk_cmprt_co, \r\n"
  159. " C.remndr_prk_cmprt_co AS remndr_prk_cmprt_co, \r\n"
  160. " C.partclr_matter \r\n"
  161. " FROM TB_PRK_PLCE A, TB_PRK_PLCE_STTS B, \r\n"
  162. " TB_PRK_PLCE_RT C \r\n"
  163. " WHERE A.prk_plce_nmbr = :p01 \r\n"
  164. " AND A.prk_plce_nmbr = B.prk_plce_nmbr \r\n"
  165. " AND A.prk_plce_nmbr = C.prk_plce_nmbr \r\n"
  166. " AND A.pis_type != 'N' \r\n"
  167. " AND A.del_yn = 'N' \r\n"
  168. "UNION ALL \r\n"
  169. "SELECT 1 as data_seq, A.prk_plce_nmbr, '' AS prk_plce_manage_no, '' AS prk_plce_nm, \r\n"
  170. " B.cmnc_stts_cd, '' AS cmnc_stts_desc, \r\n"
  171. " '' AS data_colct_time, D.flr_no AS flr_no, \r\n"
  172. " C.parking_cgs_sttus, \r\n"
  173. " '' AS parking_cgs_desc, \r\n"
  174. " D.flr_prk_cmprt_co AS prk_cmprt_co, \r\n"
  175. " D.flr_remndr_prk_cmprt_co AS remndr_prk_cmprt_co, \r\n"
  176. " C.partclr_matter \r\n"
  177. " FROM TB_PRK_PLCE A, TB_PRK_PLCE_STTS B, \r\n"
  178. " TB_PRK_PLCE_RT C, TB_PRK_PLCE_FLR D \r\n"
  179. " WHERE A.prk_plce_nmbr = :p02 \r\n"
  180. " AND A.prk_plce_nmbr = B.prk_plce_nmbr \r\n"
  181. " AND A.prk_plce_nmbr = C.prk_plce_nmbr \r\n"
  182. " AND A.prk_plce_nmbr = D.prk_plce_nmbr \r\n"
  183. " AND A.pis_type != 'N' \r\n"
  184. " AND A.del_yn = 'N' \r\n"
  185. " ORDER BY prk_plce_nmbr, data_seq, flr_no \r\n";
  186. try
  187. {
  188. int nRow;
  189. TvList->BeginUpdate();
  190. try
  191. {
  192. pADO->Connection = ITSDb_GetConnection();
  193. ITSDb_SQLText(pADO, sQry);
  194. ITSDb_SQLBind(pADO, "p01", FObj->CTLR_NMBR);
  195. ITSDb_SQLBind(pADO, "p02", FObj->CTLR_NMBR);
  196. ITSDb_SQLOpen(pADO);
  197. for( ; !pADO->Eof; pADO->Next())
  198. {
  199. nRow = TvList->DataController->AppendRecord();
  200. TvList->DataController->Values[nRow][Col03->Index] = pADO->FieldByName("cmnc_stts_desc")->AsString;
  201. String data_colct_time = pADO->FieldByName("data_colct_time")->AsString;
  202. if (data_colct_time != "")
  203. TvList->DataController->Values[nRow][Col04->Index] = ITSUtil_StrToDateTime(pADO->FieldByName("data_colct_time")->AsString).FormatString(STR_DATETIME);
  204. else
  205. TvList->DataController->Values[nRow][Col04->Index] = data_colct_time;
  206. TvList->DataController->Values[nRow][Col05->Index] = pADO->FieldByName("parking_cgs_desc")->AsString;
  207. TvList->DataController->Values[nRow][Col06->Index] = pADO->FieldByName("flr_no")->AsString;
  208. TvList->DataController->Values[nRow][Col07->Index] = pADO->FieldByName("prk_cmprt_co")->AsString;
  209. TvList->DataController->Values[nRow][Col08->Index] = pADO->FieldByName("remndr_prk_cmprt_co")->AsString;
  210. }
  211. ITSDb_SQLClose(pADO);
  212. }
  213. catch(EDatabaseError &E)
  214. {
  215. throw Exception(String(E.ClassName()) + E.Message);
  216. }
  217. catch(...)
  218. {
  219. throw Exception("알수없는 오류가 발생하였습니다.");
  220. }
  221. }
  222. __finally
  223. {
  224. TvList->EndUpdate();
  225. }
  226. selPrvInfo();
  227. }
  228. //---------------------------------------------------------------------------
  229. void __fastcall TFrmParkMsg::selPrvInfo()
  230. {
  231. String sQry;
  232. REAL_DESC->Lines->Clear();
  233. if (!FObj)
  234. {
  235. return;
  236. }
  237. sQry = "SELECT A.* \r\n"
  238. " FROM TB_PRK_PLCE_PRV A \r\n"
  239. " WHERE A.prk_plce_nmbr = :p01 \r\n"
  240. " ORDER BY A.VHCTY_AR_SE \r\n";
  241. try
  242. {
  243. try
  244. {
  245. pADO->Connection = ITSDb_GetConnection();
  246. ITSDb_SQLText(pADO, sQry);
  247. ITSDb_SQLBind(pADO, "p01", FObj->CTLR_NMBR);
  248. ITSDb_SQLOpen(pADO);
  249. for( ; !pADO->Eof; pADO->Next())
  250. {
  251. int VHCTY_AR_SE = pADO->FieldByName("VHCTY_AR_SE")->AsInteger;
  252. int VHCTY_AR_PRK_CMPRT_CO = pADO->FieldByName("VHCTY_AR_PRK_CMPRT_CO")->AsInteger;
  253. int VHCTY_AR_REMNDR_PRK_CMPRT_CO = pADO->FieldByName("VHCTY_AR_REMNDR_PRK_CMPRT_CO")->AsInteger;
  254. if (VHCTY_AR_PRK_CMPRT_CO == 0) {
  255. continue;
  256. }
  257. switch(VHCTY_AR_SE)
  258. {
  259. case 0: REAL_DESC->Lines->Add("경차 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  260. case 1: REAL_DESC->Lines->Add("친환경차(전기차): 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  261. case 2: REAL_DESC->Lines->Add("화물차 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  262. case 3: REAL_DESC->Lines->Add("긴급차량 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  263. case 4: REAL_DESC->Lines->Add("장애인 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  264. case 5: REAL_DESC->Lines->Add("어르신 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  265. case 6: REAL_DESC->Lines->Add("여성 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  266. case 9: REAL_DESC->Lines->Add("기타: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
  267. }
  268. }
  269. ITSDb_SQLClose(pADO);
  270. }
  271. catch(EDatabaseError &E)
  272. {
  273. throw Exception(String(E.ClassName()) + E.Message);
  274. }
  275. catch(...)
  276. {
  277. throw Exception("알수없는 오류가 발생하였습니다.");
  278. }
  279. }
  280. __finally
  281. {
  282. }
  283. }
  284. //---------------------------------------------------------------------------
  285. void __fastcall TFrmParkMsg::FormDestroy(TObject *Sender)
  286. {
  287. TmrQry->Enabled = false;
  288. try {
  289. if (FObj) FObj->FData1 = NULL;
  290. } catch(...) {}
  291. }
  292. //---------------------------------------------------------------------------