123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #include "ITSDbF.h"
- #include "ITSUtilF.h"
- #include "AppGlobalF.h"
- #include "ITSSkinF.h"
- #include "ITSLangTransF.h"
- #pragma hdrstop
- #include "FrmParkMsgF.h"
- #include "ITS_OPLibF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "cxClasses"
- #pragma link "cxControls"
- #pragma link "cxCustomData"
- #pragma link "cxData"
- #pragma link "cxDataStorage"
- #pragma link "cxEdit"
- #pragma link "cxFilter"
- #pragma link "cxGraphics"
- #pragma link "cxGrid"
- #pragma link "cxGridCustomTableView"
- #pragma link "cxGridCustomView"
- #pragma link "cxGridLevel"
- #pragma link "cxGridTableView"
- #pragma link "cxLabel"
- #pragma link "cxLookAndFeelPainters"
- #pragma link "cxLookAndFeels"
- #pragma link "cxStyles"
- #pragma link "dxSkinBlack"
- #pragma link "dxSkinBlue"
- #pragma link "dxSkinsCore"
- #pragma link "dxSkinscxPCPainter"
- #pragma link "cxContainer"
- #pragma link "cxPC"
- #pragma link "cxPCdxBarPopupMenu"
- #pragma link "dxSkinMcSkin"
- #pragma resource "*.dfm"
- TFrmParkMsg *FrmParkMsg = NULL;
- //---------------------------------------------------------------------------
- __fastcall TFrmParkMsg::TFrmParkMsg(TComponent* Owner, TPrkPlce *AObj)
- : TForm(Owner)
- {
- LangTrans->Translate(this, ITSDb_GetConnection());
- FObj = AObj;
- pADO->Connection = ITSDb_GetConnection();
- TvList->OptionsView->NoDataToDisplayInfoText = "<주차정보>";
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::FormClose(TObject *Sender, TCloseAction &Action)
- {
- Action = caFree;
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::FormShow(TObject *Sender)
- {
- if (FObj)
- {
- Caption = FObj->CTLR_ID + ": " + FObj->NAME;
- //PnlMenu->Visible = FObj->REAL_DATA_YN == "Y" ? true : false;
- PnlMenu->Visible = true;
- }
- TmrShow->Enabled = true;
- //EdNm->SetFocus();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::TmrShowTimer(TObject *Sender)
- {
- TmrShow->Enabled = false;
- REAL_DESC->Lines->Clear();
- MoPRLT_OPER_DESC->Lines->Clear();
- MoPRLT_ETC_DESC->Lines->Clear();
- if (FObj)
- {
- //EdNmbr->Text = FObj->PRLT_CTLR_NMBR;
- //EdId->Text = FObj->PRLT_CTLR_ID;
- EdNm->Text = FObj->NAME;
- EdTel->Text = FObj->FOPR->OPER_CTT_PC_TEL;
- EdAddr->Text = FObj->ISTL_LCTN_ADDR;
- PRK_CMPRT_CO->Text = String(FObj->PRK_CMPRT_CO) + " 대";
- MoPRLT_OPER_DESC->Lines->Add("기본무료 시간: " + FObj->FOPR->OPERTN_BS_FREE_TIME); // 주차장 회차 (기본 무료) (00:30:00)
- MoPRLT_OPER_DESC->Lines->Add("운영시간 외 무료 개방: " + FObj->FOPR->OPN_CODE == 0 ? "미개방" : "개방"); // 개방코드, 운영시간 외 무료 개방 (0 : 미개방, 1 : 개방)
- //NO_DRV_DAY_OPERTN_AT N NUMBER(1) Y 주차 부제 시행여부 (0 : 미시행, 1 : 2부제, 2 : 5부제, 3 : 10부제, 4 : 승용차요일제, 9 : 기타)
- switch(FObj->FOPR->NO_DRV_DAY_OPERTN_AT)
- {
- case 0: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 미시행"); break;
- case 1: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 2부제"); break;
- case 2: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 5부제"); break;
- case 3: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 10부제"); break;
- case 4: MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 승용차요일제"); break;
- default:MoPRLT_OPER_DESC->Lines->Add("주차 부제 시행여부: 기타"); break; // 9
- }
- switch(FObj->FOPR->PARKING_CHRGE_EXCCLC_MTHD)
- {
- case 0: MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방식: 유인정산"); break;
- case 1: MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방색: 무인정산"); break;
- case 2: MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방색: 혼합정산"); break;
- default:MoPRLT_OPER_DESC->Lines->Add("주차요금 정산 방색: 기타"); break; // 9
- }
- if (FObj->FOPR->PARKING_CHRGE_PYMNT_MN.Length() >= 8) {
- String CHRGE = FObj->FOPR->PARKING_CHRGE_PYMNT_MN;
- String data = "";
- String comma = "";
- if (CHRGE.SubString(1, 1) == "1") data += comma + "현금";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(2, 1) == "1") data += comma + "신용카드";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(3, 1) == "1") data += comma + "교통카드";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(4, 1) == "1") data += comma + "전자지불(하이패스)";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(5, 1) == "1") data += comma + "휴대폰소액결제";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(6, 1) == "1") data += comma + "핀테크(OO페이)";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(7, 1) == "1") data += comma + "MaaS 통합결제";
- if (data.Length() > 0) comma = ", ";
- if (CHRGE.SubString(8, 1) == "1") data += comma + "기타";
- MoPRLT_OPER_DESC->Lines->Add("주차요금 지불수단: " + data);
- // - 아래 유형 조합해서 생성됌 - 예시) 현금/신용카드 혼합결제 시 (11000000), 핀테크 결제 시 (00000100), 1: 현금, 2: 신용카드, 3: 교통카드, 4: 전자지불(하이패스), 5: 휴대폰소액결제, 6: 핀테크(OO페이), 7: MaaS 통합결제, 9: 기타
- }
- MoPRLT_ETC_DESC->Lines->Text = FObj->FOPR->PARTCLR_MATTER;
- PnlMenu->Visible = true;
- }
- TmrQry->Interval = 100;
- TmrQry->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::TmrQryTimer(TObject *Sender)
- {
- TmrQry->Enabled = false;
- if (!FObj) return;
- //if (FObj->REAL_DATA_YN == "Y")
- {
- SelectParkMsg();
- }
- TmrQry->Interval = 60 * 1000;
- TmrQry->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::SelectParkMsg()
- {
- String sQry;
- if (!FObj)
- {
- return;
- }
- CMM_ClearGridTableView(TvList);
- sQry = "SELECT 0 as data_seq, A.prk_plce_nmbr, A.prk_plce_manage_no, A.prk_plce_nm, \r\n"
- " B.cmnc_stts_cd, DECODE(B.cmnc_stts_cd, 'CMS0', '정상', '이상') AS cmnc_stts_desc, \r\n"
- " C.data_colct_time, '전체' AS flr_no, \r\n"
- " C.parking_cgs_sttus, \r\n"
- " DECODE(C.parking_cgs_sttus, 0, '여유', \r\n"
- " 1, '보통', \r\n"
- " 2, '혼잡', \r\n"
- " 3, '만차', \r\n"
- " '알수없음') AS parking_cgs_desc, \r\n"
- " C.prk_cmprt_co AS prk_cmprt_co, \r\n"
- " C.remndr_prk_cmprt_co AS remndr_prk_cmprt_co, \r\n"
- " C.partclr_matter \r\n"
- " FROM TB_PRK_PLCE A, TB_PRK_PLCE_STTS B, \r\n"
- " TB_PRK_PLCE_RT C \r\n"
- " WHERE A.prk_plce_nmbr = :p01 \r\n"
- " AND A.prk_plce_nmbr = B.prk_plce_nmbr \r\n"
- " AND A.prk_plce_nmbr = C.prk_plce_nmbr \r\n"
- " AND A.pis_type != 'N' \r\n"
- " AND A.del_yn = 'N' \r\n"
- "UNION ALL \r\n"
- "SELECT 1 as data_seq, A.prk_plce_nmbr, '' AS prk_plce_manage_no, '' AS prk_plce_nm, \r\n"
- " B.cmnc_stts_cd, '' AS cmnc_stts_desc, \r\n"
- " '' AS data_colct_time, D.flr_no AS flr_no, \r\n"
- " C.parking_cgs_sttus, \r\n"
- " '' AS parking_cgs_desc, \r\n"
- " D.flr_prk_cmprt_co AS prk_cmprt_co, \r\n"
- " D.flr_remndr_prk_cmprt_co AS remndr_prk_cmprt_co, \r\n"
- " C.partclr_matter \r\n"
- " FROM TB_PRK_PLCE A, TB_PRK_PLCE_STTS B, \r\n"
- " TB_PRK_PLCE_RT C, TB_PRK_PLCE_FLR D \r\n"
- " WHERE A.prk_plce_nmbr = :p02 \r\n"
- " AND A.prk_plce_nmbr = B.prk_plce_nmbr \r\n"
- " AND A.prk_plce_nmbr = C.prk_plce_nmbr \r\n"
- " AND A.prk_plce_nmbr = D.prk_plce_nmbr \r\n"
- " AND A.pis_type != 'N' \r\n"
- " AND A.del_yn = 'N' \r\n"
- " ORDER BY prk_plce_nmbr, data_seq, flr_no \r\n";
- try
- {
- int nRow;
- TvList->BeginUpdate();
- try
- {
- pADO->Connection = ITSDb_GetConnection();
- ITSDb_SQLText(pADO, sQry);
- ITSDb_SQLBind(pADO, "p01", FObj->CTLR_NMBR);
- ITSDb_SQLBind(pADO, "p02", FObj->CTLR_NMBR);
- ITSDb_SQLOpen(pADO);
- for( ; !pADO->Eof; pADO->Next())
- {
- nRow = TvList->DataController->AppendRecord();
- TvList->DataController->Values[nRow][Col03->Index] = pADO->FieldByName("cmnc_stts_desc")->AsString;
- String data_colct_time = pADO->FieldByName("data_colct_time")->AsString;
- if (data_colct_time != "")
- TvList->DataController->Values[nRow][Col04->Index] = ITSUtil_StrToDateTime(pADO->FieldByName("data_colct_time")->AsString).FormatString(STR_DATETIME);
- else
- TvList->DataController->Values[nRow][Col04->Index] = data_colct_time;
- TvList->DataController->Values[nRow][Col05->Index] = pADO->FieldByName("parking_cgs_desc")->AsString;
- TvList->DataController->Values[nRow][Col06->Index] = pADO->FieldByName("flr_no")->AsString;
- TvList->DataController->Values[nRow][Col07->Index] = pADO->FieldByName("prk_cmprt_co")->AsString;
- TvList->DataController->Values[nRow][Col08->Index] = pADO->FieldByName("remndr_prk_cmprt_co")->AsString;
- }
- ITSDb_SQLClose(pADO);
- }
- catch(EDatabaseError &E)
- {
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(...)
- {
- throw Exception("알수없는 오류가 발생하였습니다.");
- }
- }
- __finally
- {
- TvList->EndUpdate();
- }
- selPrvInfo();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::selPrvInfo()
- {
- String sQry;
- REAL_DESC->Lines->Clear();
- if (!FObj)
- {
- return;
- }
- sQry = "SELECT A.* \r\n"
- " FROM TB_PRK_PLCE_PRV A \r\n"
- " WHERE A.prk_plce_nmbr = :p01 \r\n"
- " ORDER BY A.VHCTY_AR_SE \r\n";
- try
- {
- try
- {
- pADO->Connection = ITSDb_GetConnection();
- ITSDb_SQLText(pADO, sQry);
- ITSDb_SQLBind(pADO, "p01", FObj->CTLR_NMBR);
- ITSDb_SQLOpen(pADO);
- for( ; !pADO->Eof; pADO->Next())
- {
- int VHCTY_AR_SE = pADO->FieldByName("VHCTY_AR_SE")->AsInteger;
- int VHCTY_AR_PRK_CMPRT_CO = pADO->FieldByName("VHCTY_AR_PRK_CMPRT_CO")->AsInteger;
- int VHCTY_AR_REMNDR_PRK_CMPRT_CO = pADO->FieldByName("VHCTY_AR_REMNDR_PRK_CMPRT_CO")->AsInteger;
- if (VHCTY_AR_PRK_CMPRT_CO == 0) {
- continue;
- }
- switch(VHCTY_AR_SE)
- {
- case 0: REAL_DESC->Lines->Add("경차 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 1: REAL_DESC->Lines->Add("친환경차(전기차): 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 2: REAL_DESC->Lines->Add("화물차 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 3: REAL_DESC->Lines->Add("긴급차량 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 4: REAL_DESC->Lines->Add("장애인 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 5: REAL_DESC->Lines->Add("어르신 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 6: REAL_DESC->Lines->Add("여성 전용: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- case 9: REAL_DESC->Lines->Add("기타: 주차구획수(" + String(VHCTY_AR_PRK_CMPRT_CO) + ") 주차가능(" + String(VHCTY_AR_REMNDR_PRK_CMPRT_CO) + ")"); break;
- }
- }
- ITSDb_SQLClose(pADO);
- }
- catch(EDatabaseError &E)
- {
- throw Exception(String(E.ClassName()) + E.Message);
- }
- catch(...)
- {
- throw Exception("알수없는 오류가 발생하였습니다.");
- }
- }
- __finally
- {
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFrmParkMsg::FormDestroy(TObject *Sender)
- {
- TmrQry->Enabled = false;
- try {
- if (FObj) FObj->FData1 = NULL;
- } catch(...) {}
- }
- //---------------------------------------------------------------------------
|