//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "ITSDbF.h" #include "AppGlobalF.h" #pragma hdrstop #include "TAS0010MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxCalc" #pragma link "cxCalendar" #pragma link "cxClasses" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxDropDownEdit" #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 "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxMaskEdit" #pragma link "cxSpinEdit" #pragma link "cxSplitter" #pragma link "cxStyles" #pragma link "cxTextEdit" #pragma link "cxTimeEdit" #pragma link "cxTrackBar" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma link "FRAME_FlashMapF" #pragma resource "*.dfm" TTAS0010M *TAS0010M = NULL; //--------------------------------------------------------------------------- __fastcall TTAS0010M::TTAS0010M(TComponent* Owner) : TForm(Owner) { ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FTitle = "È¥ÀâÁöµµºÐ¼®"; FRAMEGisMap1->DrawMode = 2; //¼ÒÅëÁ¤º¸Ç¥Ãâ //FRAMEGisMap1->GrpTool->Visible = false; FRAMEGisMap1->ImgZoomIn->Left = 9; FRAMEGisMap1->ImgZoomOut->Left = FRAMEGisMap1->ImgZoomIn->Left + 35; FRAMEGisMap1->ImgStnd->Left = FRAMEGisMap1->ImgZoomOut->Left + 35; FRAMEGisMap1->ImgZoomIn->Visible = true; FRAMEGisMap1->ImgZoomOut->Visible = true; FRAMEGisMap1->ImgStnd->Visible = true; FTargetIdx = -1; } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TTAS0010M::CommClose() { try { if (BtnStop->Enabled) BtnStopClick((TObject*)BtnStop); CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TTAS0010M::FormShow(TObject *Sender) { Refresh(); FormInit(); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TTAS0010M::FormInit() { ADOQry->Connection = ITSDb_GetConnection(); ADOSta->Connection = ITSDb_GetConnection(); m_pGDC = TvList->DataController; TDateTime dtNow = Now() - ((double)3 / (double)24); DtStDate->Date = dtNow; DtEdDate->Date = Now(); //DtStTime->EditValue = dtNow.FormatString("hh") + ":00"; dtNow = Now() - ((double)2 / (double)24); //DtEdTime->EditValue = dtNow.FormatString("hh") + ":59"; DtStTime->Time = StrToDateTime(dtNow.FormatString("hh") + ":00"); DtEdTime->Time = StrToDateTime(dtNow.FormatString("hh") + ":59"); } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TTAS0010M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; if (TmrShow->Tag == 1) { int nIndex = m_pGDC->FocusedRecordIndex; if (nIndex < 0) { cxTrackBar1->Position = 0; FStatTime = ""; BtnPlay->Enabled = true; BtnStop->Enabled = false; BtnSearch->Enabled = true; return; } if (m_pGDC->FocusedRecordIndex + 1 == m_pGDC->RecordCount) { cxTrackBar1->Position = 0; FStatTime = ""; BtnPlay->Enabled = true; BtnStop->Enabled = false; BtnSearch->Enabled = true; return; } m_pGDC->FocusedRecordIndex++; nIndex = m_pGDC->FocusedRecordIndex; FSimIndex = nIndex; cxTrackBar1->Position = nIndex; FStatTime = VarToStr(m_pGDC->Values[nIndex][Column04->Index]); cxGroupBox1->Caption = "¢º ¼ÒÅëÁ¤º¸ Ç¥Ãâ - " + VarToStr(m_pGDC->Values[nIndex][Column02->Index]); SelStatisticsHistory(FStatTime); BtnPlay->Enabled = false; BtnStop->Enabled = true; TmrShow->Interval = SeRefreshSec->Value * 1000; TmrShow->Enabled = true; } else { FRAMEGisMap1->LinkLevel = 2; FRAMEGisMap1->LoadGisMap(); } } //--------------------------------------------------------------------------- /* * Search ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TTAS0010M::BtnSearchClick(TObject *Sender) { Application->ProcessMessages(); TSqlCursor sqlCrs((TControl*)BtnSearch); FStDateTime = DtStDate->Date.FormatString("yyyymmdd") + DtStTime->Time.FormatString("hhnn"); FEdDateTime = DtEdDate->Date.FormatString("yyyymmdd") + DtEdTime->Time.FormatString("hhnn"); if (FStDateTime > FEdDateTime) { Application->MessageBox(FrmLang->lblQryDtErr->Caption.c_str(),//L"°Ë»ö ½ÃÀ۽ð¢ÀÌ °Ë»ö Á¾·á½Ã°¢ º¸´Ù Å®´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); ActiveControl = DtStDate; return; } if ( StrToInt(DtEdTime->Time.FormatString("hh")) - StrToInt(DtStTime->Time.FormatString("hh")) >= 3) { Application->MessageBox(L"3½Ã°£ ÀÌ»óÀÇ Á¤º¸¸¦ Á¶È¸ÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); ActiveControl = DtStDate; return; } FLinkLevel = String(CbLinkLevel->ItemIndex+1); FTargetIdx = CbTarget->ItemIndex; switch(FTargetIdx) { case 0: //ÀÌ·Â Á¤º¸(Åë°è 5ºÐ Á¤º¸) case 1: //Åë°è 15ºÐ Á¤º¸ FStDateTime = FStDateTime + "00"; FEdDateTime = FEdDateTime + "59"; break; case 2: //ÆÐÅÏ 5ºÐ Á¤º¸ case 3: //ÆÐÅÏ 15ºÐ Á¤º¸ FStDateTime = FStDateTime; FEdDateTime = FEdDateTime; break; } SelHistory(); ClearGis(); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TTAS0010M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); TAS0010M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::DtStDatePropertiesValidate(TObject *Sender, Variant &DisplayValue, TCaption &ErrorText, bool &Error) { DtEdDate->Date = DtStDate->Date; } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::SelHistory() { TSqlCursor sqlCrs; String sQry; TADOQuery *pADO = ADOQry; //select substr('20180108xxyy', 1, 6), substr('20180108xxyy', 9, 4) from dual switch(FTargetIdx) { case 0: //ÀÌ·Â Á¤º¸(Åë°è 5ºÐ Á¤º¸) sQry = "SELECT PRCN_DT AS PRCN_DT, COUNT(IFSC_ID) CNT \r\n" " FROM TB_IFSC_TRAF_HS A \r\n" " WHERE PRCN_DT BETWEEN :p01 AND :p03 \r\n" " GROUP BY PRCN_DT \r\n" " ORDER BY PRCN_DT \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", FStDateTime); ITSDb_SQLBind(pADO, "p03", FEdDateTime); break; case 1: //Åë°è 15ºÐ Á¤º¸ sQry = "SELECT STAT_DT AS PRCN_DT, COUNT(IFSC_ID) CNT \r\n" " FROM TB_IFSC_15M_STAT A \r\n" " WHERE STAT_DT BETWEEN :p01 AND :p03 \r\n" " GROUP BY STAT_DT \r\n" " ORDER BY STAT_DT \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", FStDateTime); ITSDb_SQLBind(pADO, "p03", FEdDateTime); break; case 2: //ÆÐÅÏ 5ºÐ Á¤º¸ sQry = "SELECT STAT_YM || ' ' || STAT_HM AS PRCN_DT, COUNT(IFSC_ID) CNT \r\n" " FROM TB_IFSC_5M_PTRN A \r\n" " WHERE STAT_YM = SUBSTR(:p01, 1, 6) \r\n" " AND STAT_HM BETWEEN SUBSTR(:p02, 9, 4) AND SUBSTR(:p03, 9, 4) \r\n" " GROUP BY STAT_YM || ' ' || STAT_HM \r\n" " ORDER BY STAT_YM || ' ' || STAT_HM \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", FStDateTime); ITSDb_SQLBind(pADO, "p02", FStDateTime); ITSDb_SQLBind(pADO, "p03", FEdDateTime); break; case 3: //ÆÐÅÏ 15ºÐ Á¤º¸ sQry = "SELECT STAT_YM || ' ' || STAT_HM AS PRCN_DT, COUNT(IFSC_ID) CNT \r\n" " FROM TB_IFSC_15M_PTRN A \r\n" " WHERE STAT_YM = SUBSTR(:p01, 1, 6) \r\n" " AND STAT_HM BETWEEN SUBSTR(:p02, 9, 4) AND SUBSTR(:p03, 9, 4) \r\n" " GROUP BY STAT_YM || ' ' || STAT_HM \r\n" " ORDER BY STAT_YM || ' ' || STAT_HM \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", FStDateTime); ITSDb_SQLBind(pADO, "p02", FStDateTime); ITSDb_SQLBind(pADO, "p03", FEdDateTime); break; } try { ITSDb_SQLOpen(pADO); DspHistory(); } catch(EDatabaseError &E) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); DBERRORMSG(Caption, String(exception.ClassName()), exception.Message, sQry); throw Exception(String(exception.ClassName()) + exception.Message); } } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::DspHistory() { TADOQuery *pADO = ADOQry; try { CMM_ClearGridTableView(TvList); int nRow = 0; try { TvList->BeginUpdate(); m_pGDC->RecordCount = pADO->RecordCount; for( ; !pADO->Eof; pADO->Next(), nRow++) { m_pGDC->Values[nRow][Column01->Index] = nRow+1; //m_pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("PRCN_DT2")->AsDateTime.DateTimeString(); //°¡°ø½Ã°¢ //m_pGDC->Values[nRow][Column02->Index] = ITSUtil_StrToTime(pADO->FieldByName("PRCN_DT")->AsString); //°¡°ø½Ã°¢ m_pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("PRCN_DT")->AsString; //°¡°ø½Ã°¢ m_pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("CNT")->AsInteger; m_pGDC->Values[nRow][Column04->Index] = pADO->FieldByName("PRCN_DT")->AsString; } } __finally { if (pADO) { pADO->Close(); } TvList->EndUpdate(); CxList->SetFocus(); LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + " °Ç"; cxTrackBar1->Position = 0; cxTrackBar1->Properties->Max = nRow; cxTrackBar1->Properties->Frequency = cxTrackBar1->Properties->Max * 0.1; String sEnd = "µ¥ÀÌÅÍ " + LblRecords->Caption + " ÀÌ Á¶È¸ µÇ¾ú½À´Ï´Ù."; Application->MessageBox(sEnd.c_str(), L"µ¥ÀÌÅÍ Á¶È¸ ¿Ï·á", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } } catch(EDatabaseError &E) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); throw Exception(String(E.ClassName()) + E.Message); } catch(...) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); throw Exception(FrmLang->lblDbErr->Caption);//"¾Ë¼ö¾ø´Â ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."); } } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::BtnPlayClick(TObject *Sender) { if (m_pGDC->RecordCount <= 0) { Application->MessageBox(L"Ç¥ÃâÇÒ Á¤º¸°¡ ¾ø½À´Ï´Ù. ÀÌ·ÂÁ¤º¸¸¦ ´Ù½Ã Á¶È¸ÇϽŠÈÄ ÀÛ¾÷À» ÁøÇà ÇϽʽÿä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } m_pGDC->FocusedRecordIndex = 0; int nIndex = m_pGDC->FocusedRecordIndex; if (nIndex < 0) return; FSimIndex = nIndex; cxTrackBar1->Position = nIndex; FStatTime = VarToStr(m_pGDC->Values[nIndex][Column04->Index]); CxList->SetFocus(); BtnPlay->Enabled = false; BtnStop->Enabled = true; BtnSearch->Enabled = false; cxGroupBox1->Caption = "¢º ¼ÒÅëÁ¤º¸ Ç¥Ãâ - " + VarToStr(m_pGDC->Values[nIndex][Column02->Index]); SelStatisticsHistory(FStatTime); TmrShow->Tag = 1; TmrShow->Interval = SeRefreshSec->Value * 1000; TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::BtnStopClick(TObject *Sender) { TmrShow->Enabled = false; BtnPlay->Enabled = true; BtnStop->Enabled = false; BtnSearch->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::SelStatisticsHistory(String AStatTime) { int ii; TSqlCursor sqlCrs; String sQry; TADOQuery *pADO = ADOSta; switch(FTargetIdx) { case 0: //ÀÌ·Â Á¤º¸ sQry = "SELECT A.IFSC_ID, NVL(B.CMTR_GRAD_CD, 'LTC0') TRFGRD, C.SPED, \r\n" " C.PRCN_DT REGDATE \r\n" " FROM TB_IFSC A, \r\n" " TB_CMTR_GRAD_CLSF B, \r\n" " TB_IFSC_TRAF_HS C \r\n" " WHERE A.IFSC_ID = C.IFSC_ID \r\n" " AND A.SECT_GRAD_CD = B.SECT_GRAD_CD \r\n" " AND (C.SPED >= B.LWST_TRVL_SPED AND C.SPED <= B.HGHS_TRVL_SPED) \r\n" " AND C.PRCN_DT = :p01 \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AStatTime); break; case 1: //Åë°è 15ºÐ Á¤º¸ sQry = "SELECT A.IFSC_ID, NVL(B.CMTR_GRAD_CD, 'LTC0') TRFGRD, C.SPED, \r\n" " C.STAT_DT REGDATE \r\n" " FROM TB_IFSC A, \r\n" " TB_CMTR_GRAD_CLSF B, \r\n" " TB_IFSC_15M_STAT C \r\n" " WHERE A.IFSC_ID = C.IFSC_ID \r\n" " AND A.SECT_GRAD_CD = B.SECT_GRAD_CD \r\n" " AND (C.SPED >= B.LWST_TRVL_SPED AND C.SPED <= B.HGHS_TRVL_SPED) \r\n" " AND C.STAT_DT = :p01 \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AStatTime); break; case 2: //ÆÐÅÏ 5ºÐ Á¤º¸ sQry = "SELECT A.IFSC_ID, NVL(B.CMTR_GRAD_CD, 'LTC0') TRFGRD, \r\n" " C.SPED, C.STAT_YM || C.STAT_HM REGDATE \r\n" " FROM TB_IFSC A, \r\n" " TB_CMTR_GRAD_CLSF B, \r\n" " TB_IFSC_5M_PTRN C \r\n" " WHERE A.IFSC_ID = C.IFSC_ID \r\n" " AND A.SECT_GRAD_CD = B.SECT_GRAD_CD \r\n" " AND (C.SPED >= B.LWST_TRVL_SPED AND C.SPED <= B.HGHS_TRVL_SPED) \r\n" " AND C.STAT_YM = SUBSTR(:p01, 1, 6) \r\n" " AND C.STAT_HM = SUBSTR(:p02, 8, 4) \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AStatTime); ITSDb_SQLBind(pADO, "p02", AStatTime); break; case 3: //ÆÐÅÏ 15ºÐ Á¤º¸ sQry = "SELECT A.IFSC_ID, NVL(B.CMTR_GRAD_CD, 'LTC0') TRFGRD, \r\n" " C.SPED, C.STAT_YM || C.STAT_HM REGDATE \r\n" " FROM TB_IFSC A, \r\n" " TB_CMTR_GRAD_CLSF B, \r\n" " TB_IFSC_15M_PTRN C \r\n" " WHERE A.IFSC_ID = C.IFSC_ID \r\n" " AND A.SECT_GRAD_CD = B.SECT_GRAD_CD \r\n" " AND (C.SPED >= B.LWST_TRVL_SPED AND C.SPED <= B.HGHS_TRVL_SPED) \r\n" " AND C.STAT_YM = SUBSTR(:p01, 1, 6) \r\n" " AND C.STAT_HM = SUBSTR(:p02, 8, 4) \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AStatTime); ITSDb_SQLBind(pADO, "p02", AStatTime); break; } try { String sLinkInfo = ""; ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { String sLinkId = pADO->FieldByName("IFSC_ID")->AsString; String TRFGRD = pADO->FieldByName("TRFGRD")->AsString; if (TRFGRD == "LTC1") sLinkInfo += sLinkId + ",1|"; else if (TRFGRD == "LTC2") sLinkInfo += sLinkId + ",2|"; else if (TRFGRD == "LTC3") sLinkInfo += sLinkId + ",3|"; else sLinkInfo += sLinkId + ",0|"; } if (sLinkInfo != "") { sLinkInfo = sLinkInfo.SubString(1, sLinkInfo.Length()-1); if (FRAMEGisMap1->MapStart) { TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "DispTrafficHistory", sLinkInfo); } } } catch(EDatabaseError &E) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2); DBERRORMSG(Caption, String(exception.ClassName()), exception.Message, sQry); throw Exception(String(exception.ClassName()) + exception.Message); } } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::ClearGis() { cxGroupBox1->Caption = "¢º ¼ÒÅëÁ¤º¸ Ç¥Ãâ"; } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (BtnPlay->Enabled == false) return; int nRow = m_pGDC->FocusedRecordIndex; if( nRow <= -1 ) return; FStatTime = VarToStr(m_pGDC->Values[nRow][Column04->Index]); cxGroupBox1->Caption = "¢º ¼ÒÅëÁ¤º¸ Ç¥Ãâ - " + VarToStr(m_pGDC->Values[nRow][Column02->Index]); SelStatisticsHistory(FStatTime); } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::BtnSearch2Click(TObject *Sender) { Application->ProcessMessages(); TSqlCursor sqlCrs((TControl*)BtnSearch); String sLinkId = EdLinkId->Text.Trim(); TmrClear->Enabled = false; //TXiMapUtil::ClearPath(FRAMEGisMap1->xclntMap); //TXiMapUtil::MoveServiceLink(FRAMEGisMap1->xclntMap, sLinkId); TmrClear->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TTAS0010M::TmrClearTimer(TObject *Sender) { try { //TXiMapUtil::ClearPath(FRAMEGisMap1->xclntMap); } catch(...) {} } //---------------------------------------------------------------------------