12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #include "ITSSkinF.h"
- #include "ITSUtilF.h"
- #include "AppGlobalF.h"
- #include "ITSLangTransF.h"
- #include "ITSMapF.h"
- #include "WindowMsgF.h"
- #include "CDSSgnlCtlrF.h"
- #include "ITS_OPLibF.h"
- #include "CDSLayerF.h"
- #include "FrmCctvImgF.h"
- #include "FrmVmsMsgF.h"
- #include "FrmStreamPlayerF.h"
- #pragma hdrstop
- #include "EVSP000MF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "cxButtons"
- #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 "dxSkinBlue"
- #pragma link "dxSkinsCore"
- #pragma link "dxSkinscxPCPainter"
- #pragma link "FRAME_OpenMapF"
- #pragma link "FRAME_SgnlCtlrListF"
- #pragma link "dxSkinBlack"
- #pragma link "dxSkinMcSkin"
- #pragma link "cxPC"
- #pragma link "cxPCdxBarPopupMenu"
- #pragma link "cxCalc"
- #pragma link "cxCheckBox"
- #pragma resource "*.dfm"
- TEVSP000M *EVSP000M = NULL;
- //---------------------------------------------------------------------------
- void TEVSP000M_MapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
- {
- try
- {
- if (!EVSP000M) return;
- EVSP000M->OpenMapCallback(ASender, AFunc, AArgs, AFirst);
- }
- catch(Exception &exception)
- {
- }
- }
- //---------------------------------------------------------------------------
- __fastcall TEVSP000M::TEVSP000M(TComponent* Owner)
- : TForm(Owner)
- {
- LangTrans->Translate(this, ITSDb_GetConnection());
- ITSSkin_Load(this);
- CMM_LoadForm(g_sFormsDir, this);
- FUpdate= false;
- FTitle = Caption;
- FLayerIdx = LyrTp_Evsp;
- FRAMEOpenMap1->LayerIdx = FLayerIdx;
- FRAMEOpenMap1->MapCallbackFunc = TEVSP000M_MapCallback;
- //FRAMEOpenMap1->ChkShowNmbr->Caption = "교차로 번호";
- FRAMEOpenMap1->ChkShowNmbr->Visible = false;
- ChkCctv->Parent = FRAMEOpenMap1->PnlGisTool;
- ChkCctv->Align = alLeft;
- ChkVms->Parent = FRAMEOpenMap1->PnlGisTool;
- ChkVms->Align = alLeft;
- ChkCctv->Visible = true;
- ChkVms->Visible = true;
- EditMode = false;
- PgRunInfo->Properties->ActivePage = TsSgnlIxr;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::CommClose()
- {
- try {
- CMM_SaveForm(g_sFormsDir, this);
- } catch(...) {
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::FormShow(TObject *Sender)
- {
- APP_FillCode(CbType, "VHCL");
- Refresh();
- FRAMEOpenMap1->OpenMap();
- FormInit();
- TmrShow->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::FormInit()
- {
- FNewDb = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TmrShowTimer(TObject *Sender)
- {
- TmrShow->Enabled = false;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::BtnCloseClick(TObject *Sender)
- {
- Close();
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::FormClose(TObject *Sender, TCloseAction &Action)
- {
- CommClose();
- EVSP000M = NULL;
- Action = caFree;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::FormCloseQuery(TObject *Sender, bool &CanClose)
- {
- FRAMEOpenMap1->OnCloseQuery(CanClose);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::OpenMapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
- {
- try
- {
- if (AFirst)
- {
- sJs.printf(L"setMapImageSize(%d, %d, %d)", LyrTp_Evsp, 24, 24);
- FRAMEOpenMap1->ExecScript(sJs);
- FRAMEOpenMap1->ExecScript("showTrafficLayer(0)");
- //sJs.printf(L"setEditMode(%d, 1)", LyrTp_Link);
- //FRAMEOpenMap1->ExecScript(sJs);
- //FRAMEOpenMap1->ExecScript("initEditLayer()");
- //FRAMEOpenMap1->ExecScript("setEditArrow(1)");
- //FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
- FRAMEOpenMap1->ExecScript("setNormalMode(1)");
- FRAMEOpenMap1->ExecScript("initTrafficLayer()");
- FRAMEOpenMap1->ExecScript("showTrafficTooltip(0)");
- sJs.printf(L"setTrafficLayerZoomVisible(%d, '1^2^3^4^5^6^7^8^9^10^11^12')", LyrTp_Link);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"showHideTooltip(%d, 0)", LyrTp_Pos);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"setMapImagePath(%d, 'facility/carPos_')", LyrTp_Pos);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"setTrafficLayerZoomVisible(%d, '1^2^3^4^5^6^7^8^9^10^11^12')", LyrTp_Pos);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"setMapImageSize(%d, %d, %d)", LyrTp_Pos, 48, 48);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"setMapImageSize(%d, %d, %d)", LyrTp_MoveCar, 48, 48);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"showLayer(%d, %d)", LyrTp_MoveCar, 1);
- FRAMEOpenMap1->ExecScript(sJs);
- Application->ProcessMessages();
- TmrInitGis->Enabled = true;
- return;
- }
- if (AFunc.Pos("onfacilityrightclick")) {
- int nLyrType;
- String sFID;
- //int X, Y;
- TStringList *pStringList = new TStringList;
- pStringList->CommaText = AArgs;
- try
- {
- nLyrType = pStringList->Strings[0].ToIntDef(0);
- sFID = pStringList->Strings[1];
- //X = pStringList->Strings[4].ToIntDef(0);
- //Y = pStringList->Strings[5].ToIntDef(0);
- //if (nLyrType != LyrTp_Vds)
- {
- OnMapPopupMenu(nLyrType, sFID, false);
- }
- }
- catch(Exception &e)
- {
- }
- delete pStringList;
- }
- } catch(Exception &exception) {
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::InitGisFacility()
- {
- String sTemp;
- TCDSObject *pObj;
- TItsLayer *pLayer;
- ItsFacilityManager->FLists.Lock();
- try
- {
- FOR_STL(TItsFacility*, pFacility, ItsFacilityManager->FLists) {
- pObj = pFacility->Object;
- if (pObj == NULL) {
- continue;
- }
- if (pFacility->FCLT_TYPE != "VMS" && pFacility->FCLT_TYPE != "CCTV") {
- continue;
- }
- pLayer = ItsLayerManager->FLists.Find(pFacility->FCLT_TYPE);
- if (pLayer) {
- if (pLayer->arrObj != "") pLayer->arrObj += "|";
- sTemp.printf(L"%s,%s,%s,%.6f,%.6f,%d,0,0,0", pObj->CTLR_NMBR.c_str(), pObj->CTLR_ID.c_str(), pObj->NAME.c_str(), pObj->X_CRDN, pObj->Y_CRDN, 0);
- pLayer->arrObj += sTemp;
- }
- }
- } __finally {
- ItsFacilityManager->FLists.UnLock();
- }
- FOR_STL(TItsLayer*, pLayer, ItsLayerManager->FLists) {
- pLayer->Visible = false;
- if (pLayer->arrObj != "") {
- sJs.printf(L"addFacility(%d, '%s')", pLayer->Index, pLayer->arrObj.c_str());
- FRAMEOpenMap1->ExecScript(sJs);
- pLayer->arrObj = "";
- sJs.printf(L"showLayer(%d, %d)", pLayer->Index, 1);
- FRAMEOpenMap1->ExecScript(sJs);
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TmrInitGisTimer(TObject *Sender)
- {
- TmrInitGis->Enabled = false;
- if (!FRAMEOpenMap1->MapStart) return;
- InitGisFacility();
- LoadEvspVehicleRunInfo();
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::LoadEvspVehicleRunInfo()
- {
- if (LoadPrioSgnlReqInfr()) {
- LoadPrioSgnlOperIxr();
- LoadPrioSgnlPath();
- }
- LoadEmrgVhclOperHs();
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::OnMapPopupMenu(int ALayerType, String AFID, bool AOnList)
- {
- FSelId = AFID;
- POINT p;
- GetCursorPos(&p);
- switch(ALayerType)
- {
- case LyrTp_Cctv:
- pmuCctv->Popup(p.x, p.y);
- break;
- case LyrTp_Vms:
- pmuVms->Popup(p.x, p.y);
- break;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::ShowStrmCamera(String AId, TPoint pt)
- {
- TItsFacility *pFacility = ItsFacilityManager->FLists.Find(AId);
- if (!pFacility) return;
- TCDSObject *pObj = (TCDSObject*)pFacility->Object;
- if (!pObj) return;
- try {
- if (pObj->FData3)
- {
- TFrmStreamPlayer *pForm = (TFrmStreamPlayer *)pObj->FData3;
- pForm->SetFocus();
- }
- else
- {
- TFrmStreamPlayer *pForm = new TFrmStreamPlayer(EVSP000M);
- pForm->FObj.ID = pObj->CTLR_ID;
- pForm->FObj.NAME = pObj->NAME;
- pForm->FObj.STRM_ADDR = pObj->STRM_ADDR;
- pForm->FObj.FULL_STRM_ADDR = pObj->FULL_STRM_ADDR;
- pForm->FObj.Data = (TCDSObject*)pObj;
- pForm->FObj.FCLT_TYPE = pObj->TYPE_CD;
- pForm->FObj.Installed = true;
- pForm->Parent = EVSP000M;
- if ((pt.x + pForm->Width + 5) > this->Width)
- {
- pt.x = this->Width - pForm->Width - 5;
- }
- if ((pt.y + pForm->Height + 5) > this->Height)
- {
- pt.y = this->Height - pForm->Height - 5;
- }
- //pForm->Left = Left + pt.x;
- //pForm->Top = Top + pt.y;
- pForm->Left = pt.x;
- pForm->Top = pt.y;
- pObj->FData3 = (void*)pForm;
- pForm->Show();
- }
- } catch(...) {}
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::ShowVmsMessage(String AId, TPoint pt)
- {
- TItsFacility *pFacility = ItsFacilityManager->FLists.Find(AId);
- if (!pFacility) return;
- TVmsCtlr *pObj = (TVmsCtlr*)pFacility->Object;
- if (!pObj) return;
- try {
- if (pObj->FData3)
- {
- TFrmVmsMsg *pForm = (TFrmVmsMsg *)pObj->FData3;
- pForm->SetFocus();
- }
- else
- {
- TFrmVmsMsg *pForm = new TFrmVmsMsg(EVSP000M, pObj);
- pForm->Parent = EVSP000M;
- int nHG = pForm->ClientHeight - pForm->PnlVmsMsgDisp->Height;
- int nWG = pForm->ClientWidth - pForm->PnlVmsMsgDisp->Width;
- if ((pt.x + pForm->Width + 5) > this->Width)
- {
- pt.x = this->Width - pForm->Width - 5;
- }
- if ((pt.y + pForm->Height + 5) > this->Height)
- {
- pt.y = this->Height - pForm->Height - 5;
- }
- //pForm->Left = Left + pt.x;
- //pForm->Top = Top + pt.y;
- pForm->Left = pt.x;
- pForm->Top = pt.y;
- pObj->FData3 = (void*)pForm;
- pForm->Show();
- }
- } catch(...) {}
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::mnuVmsCamClick(TObject *Sender)
- {
- Application->ProcessMessages();
- TPoint pt;
- GetCursorPos(&pt);
- pt = EVSP000M->ScreenToClient(pt);
- ShowStrmCamera(FSelId, pt);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::mnuVmsMsgClick(TObject *Sender)
- {
- Application->ProcessMessages();
- TPoint pt;
- GetCursorPos(&pt);
- pt = EVSP000M->ScreenToClient(pt);
- ShowVmsMessage(FSelId, pt);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::mnuCctvCamClick(TObject *Sender)
- {
- Application->ProcessMessages();
- TPoint pt;
- GetCursorPos(&pt);
- pt = EVSP000M->ScreenToClient(pt);
- ShowStrmCamera(FSelId, pt);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::pmuFacilityPopup(TObject *Sender)
- {
- TPopupMenu *pPopup = (TPopupMenu*)Sender;
- TItsFacility *pFacility = ItsFacilityManager->FLists.Find(FSelId);
- if (!pFacility) return;
- String sLayerType = ItsLayerManager->GetLayerName(pFacility->FCLT_TYPE);
- if (sLayerType == "") return;
- TCDSObject *pObj = pFacility->Object;
- if (!pObj) return;
- pPopup->Items->Items[0]->Caption = "[" + sLayerType + "] " + pObj->NAME;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TvListCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
- bool &ADone)
- {
- if (AViewInfo) {
- String sRunInfo = AViewInfo->GridRecord->DisplayTexts[Col06->Index];
- if (sRunInfo.Pos("N")) {
- ACanvas->Brush->Color = clYellow;
- ACanvas->Font->Color = clRed;
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
- TMouseButton AButton, TShiftState AShift, bool &AHandled)
- {
- TcxDataController *pGDC = TvList->DataController;
- int nRow = pGDC->FocusedRecordIndex;
- if( nRow <= -1 )
- return;
- String sVehicleId = pGDC->Values[nRow][Col01->Index];
- String sRunInfo = pGDC->Values[nRow][Col06->Index];
- String sServiceId = pGDC->Values[nRow][Col05->Index];
- GrpOprInfo->Caption = "▶ 운영정보 - " + sVehicleId;
- LoadEvspVehicleOprIxrInfo(sVehicleId);
- LoadEvspVehicleOprPathInfo(sVehicleId);
- TReqVhcl *pObj = FReqLists.Find(sVehicleId);
- if (pObj != NULL) {
- FRAMEOpenMap1->SelectObjectByPos(pObj->X_CRDN, pObj->Y_CRDN, true);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::LoadEvspVehicleOprIxrInfo(String AVehicleId)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- CMM_ClearGridTableView(TvIxr);
- sQry = "SELECT B.SRVC_ID, B.IXR_NMBR, \r\n"
- " NVL(C.IXR_NM, '-') AS IXR_NM, \r\n"
- " B.IXR_ORD \r\n"
- " FROM PRIO_SGNL_REQ_INFR A, \r\n"
- " PRIO_SGNL_OPER_IXR B, \r\n"
- " SGNL_IXR_MNGM C \r\n"
- " WHERE A.EMRG_VHCL_ID = :p01 \r\n"
- " AND A.END_YN = 'N' \r\n"
- " AND A.SRVC_ID = B.SRVC_ID \r\n"
- " AND B.IXR_NMBR = C.SGNL_IXR_NMBR(+) \r\n"
- " ORDER BY B.IXR_ORD \r\n";
- try
- {
- int nRow;
- TvIxr->BeginUpdate();
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Parameters->ParamByName("p01")->Value = AVehicleId;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- nRow = TvIxr->DataController->AppendRecord();
- TvIxr->DataController->Values[nRow][ColIxr01->Index] = pADO->FieldByName("IXR_ORD")->AsInteger;
- TvIxr->DataController->Values[nRow][ColIxr02->Index] = pADO->FieldByName("SRVC_ID")->AsString;
- TvIxr->DataController->Values[nRow][ColIxr03->Index] = pADO->FieldByName("IXR_NMBR")->AsString + "." + pADO->FieldByName("IXR_NM")->AsString;
- TvIxr->DataController->Values[nRow][ColIxr06->Index] = pADO->FieldByName("IXR_NMBR")->AsString;
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TEVSP000M::LoadEvspVehicleOprIxrInfo", 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("TEVSP000M::LoadEvspVehicleOprIxrInfo", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- TvIxr->EndUpdate();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::LoadEvspVehicleOprPathInfo(String AVehicleId)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- CMM_ClearGridTableView(TvPath);
- sQry = "SELECT B.SRVC_ID, B.PHAS, \r\n"
- " TO_CHAR(B.CLCT_DT, 'YYYY-MM-DD HH24:MI:SS') AS CLCT_DT \r\n"
- " FROM PRIO_SGNL_REQ_INFR A, \r\n"
- " PRIO_SGNL_PATH B \r\n"
- " WHERE A.EMRG_VHCL_ID = :p01 \r\n"
- " AND A.END_YN = 'N' \r\n"
- " AND A.SRVC_ID = B.SRVC_ID \r\n"
- " ORDER BY B.SRVC_ID \r\n";
- try
- {
- int nRow;
- TvPath->BeginUpdate();
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Parameters->ParamByName("p01")->Value = AVehicleId;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String SRVC_ID = pADO->FieldByName("SRVC_ID")->AsString;
- String CLCT_DT = pADO->FieldByName("CLCT_DT")->AsString;
- String PHAS = pADO->FieldByName("PHAS")->AsString;
- TStringList *pStringList = new TStringList;
- pStringList->CommaText = PHAS;
- int SEQ = 1;
- int IDX = 0;
- int COUNT = pStringList->Count;
- for (int ii = 0; ii < (COUNT/6); ii++) {
- IDX = ii * 6;
- float POS_X = pStringList->Strings[IDX+4].ToIntDef(0)/1000000.;
- float POS_Y = pStringList->Strings[IDX+5].ToIntDef(0)/1000000.;
- if (POS_X < 100. || POS_X > 140.) {
- continue;
- }
- if (POS_Y < 30. || POS_Y > 50.) {
- continue;
- }
- nRow = TvPath->DataController->AppendRecord();
- TvPath->DataController->Values[nRow][ColPath02->Index] = SRVC_ID;
- TvPath->DataController->Values[nRow][ColPath01->Index] = SEQ;
- TvPath->DataController->Values[nRow][ColPath03->Index] = POS_X;
- TvPath->DataController->Values[nRow][ColPath04->Index] = POS_Y;
- SEQ++;
- }
- delete pStringList;
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TEVSP000M::LoadEvspVehicleOprPathInfo", 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("TEVSP000M::LoadEvspVehicleOprPathInfo", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- TvPath->EndUpdate();
- }
- }
- //---------------------------------------------------------------------------
- bool __fastcall TEVSP000M::LoadPrioSgnlReqInfr()
- {
- String sQry;
- TADOQuery *pADO = NULL;
- sQry = "SELECT A.EMRG_VHCL_ID, NVL(A.VHCL_NMBR, A.EMRG_VHCL_ID) AS VHCL_NMBR, \r\n"
- " A.VHCL_KIND, A.USE_YN, \r\n"
- " NVL(B.SRVC_ID, '-') AS SRVC_ID, NVL(B.END_YN, '-') AS END_YN \r\n"
- " FROM EMRG_VHCL A \r\n"
- " LEFT OUTER JOIN PRIO_SGNL_REQ_INFR B \r\n"
- " ON A.EMRG_VHCL_ID = B.EMRG_VHCL_ID \r\n"
- " WHERE A.USE_YN = 'Y' \r\n"
- " ORDER BY B.END_YN, A.EMRG_VHCL_ID \r\n";
- CMM_ClearGridTableView(TvList);
- bool isUpdate = false;
- try
- {
- int nRow;
- TvList->BeginUpdate();
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String VHCL_ID = pADO->FieldByName("EMRG_VHCL_ID")->AsString;
- int VHCL_NMBR = pADO->FieldByName("VHCL_NMBR")->AsInteger;
- nRow = TvList->DataController->AppendRecord();
- TvList->DataController->Values[nRow][Col01->Index] = VHCL_ID;
- TvList->DataController->Values[nRow][Col02->Index] = VHCL_NMBR;
- String VHCL_KIND = pADO->FieldByName("VHCL_KIND")->AsString;
- String USE_YN = pADO->FieldByName("USE_YN")->AsString;
- String END_YN = pADO->FieldByName("END_YN")->AsString;
- if (USE_YN == "Y") USE_YN = "[Y] 사용";
- else if (USE_YN == "N") USE_YN = "[N] 미사용";
- if (END_YN == "Y") END_YN = "[Y] 종료";
- else if (END_YN == "N") END_YN = "[N] 운영중";
- String VHCL_KIND_DESC = APP_GetCodeName(CbType, VHCL_KIND);
- TvList->DataController->Values[nRow][Col03->Index] = "[" + VHCL_KIND + "] " + VHCL_KIND_DESC;
- TvList->DataController->Values[nRow][Col04->Index] = USE_YN;
- TvList->DataController->Values[nRow][Col05->Index] = pADO->FieldByName("SRVC_ID")->AsString;
- TvList->DataController->Values[nRow][Col06->Index] = END_YN;
- TReqVhcl *pReqVhcl = FReqLists.Find(VHCL_ID);
- if (pReqVhcl == NULL) {
- isUpdate = true;
- pReqVhcl = new TReqVhcl();
- pReqVhcl->VHCL_ID = VHCL_ID;
- pReqVhcl->VHCL_NMBR = String(VHCL_NMBR);
- pReqVhcl->VHCL_KIND_DESC = VHCL_KIND_DESC;
- pReqVhcl->END_YN = END_YN;
- FReqLists.Push(pReqVhcl->VHCL_ID, pReqVhcl);
- }
- else {
- if (pReqVhcl->END_YN != END_YN) {
- pReqVhcl->END_YN = END_YN;
- isUpdate = true;
- }
- }
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TEVSP000M::LoadPrioSgnlReqInfr", 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("TEVSP000M::LoadPrioSgnlReqInfr", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- TvList->EndUpdate();
- }
- return isUpdate;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::LoadPrioSgnlOperIxr()
- {
- String sQry;
- TADOQuery *pADO = NULL;
- FIxrLists.Clear();
- sQry = "SELECT A.EMRG_VHCL_ID, B.SRVC_ID, B.IXR_NMBR, \r\n"
- " B.IXR_ORD \r\n"
- " FROM PRIO_SGNL_REQ_INFR A, \r\n"
- " PRIO_SGNL_OPER_IXR B \r\n"
- " WHERE A.END_YN = 'N' \r\n"
- " AND A.SRVC_ID = B.SRVC_ID \r\n"
- " ORDER BY B.IXR_ORD \r\n";
- try
- {
- int nRow;
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String IXR_NMBR = pADO->FieldByName("IXR_NMBR")->AsString;
- TSgnlCtlr* pIxr = SgnlCtlrManager->FLists.Find(IXR_NMBR);
- if (!pIxr) {
- continue;
- }
- TOprIxr *pOprIxr = new TOprIxr();
- pOprIxr->VHCL_ID = pADO->FieldByName("EMRG_VHCL_ID")->AsString;
- pOprIxr->ORD = pADO->FieldByName("IXR_ORD")->AsInteger;
- pOprIxr->IXR_NMBR = IXR_NMBR;
- pOprIxr->X_CRDN = pIxr->X_CRDN;
- pOprIxr->Y_CRDN = pIxr->Y_CRDN;
- pOprIxr->IXR_NM = pIxr->IXR_NM;
- FIxrLists.Push(pOprIxr->IXR_NMBR, pOprIxr);
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TEVSP000M::LoadPrioSgnlOperIxr", 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("TEVSP000M::LoadPrioSgnlOperIxr", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- }
- UpdateOprIxrInfo();
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::LoadPrioSgnlPath()
- {
- String sQry;
- TADOQuery *pADO = NULL;
- sQry = "SELECT A.EMRG_VHCL_ID, B.SRVC_ID, \r\n"
- " TO_CHAR(B.CLCT_DT, 'YYYY-MM-DD HH24:MI:SS') AS CLCT_DT, \r\n"
- " B.PHAS \r\n"
- " FROM PRIO_SGNL_REQ_INFR A, \r\n"
- " PRIO_SGNL_PATH B \r\n"
- " WHERE A.END_YN = 'N' \r\n"
- " AND A.SRVC_ID = B.SRVC_ID \r\n"
- " ORDER BY A.EMRG_VHCL_ID \r\n";
- sJs.printf(L"removeLayerObject(%d)", LyrTp_CarPos);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"removeLayerObject(%d)", LyrTp_Link);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"removeLayerObject(%d)", LyrTp_Pos);
- FRAMEOpenMap1->ExecScript(sJs);
- String arrStr = "";
- String arrEnd = "";
- String arrObj = "";
- String sTemp;
- String sLast = "";
- try
- {
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String EMRG_VHCL_ID = pADO->FieldByName("EMRG_VHCL_ID")->AsString;
- String SRVC_ID = pADO->FieldByName("SRVC_ID")->AsString;
- String CLCT_DT = pADO->FieldByName("CLCT_DT")->AsString;
- String PHAS = pADO->FieldByName("PHAS")->AsString;
- TStringList *pStringList = new TStringList;
- pStringList->CommaText = PHAS;
- String X_CRDN_ARR = "";
- String Y_CRDN_ARR = "";
- int SEQ = 1;
- int IDX = 0;
- int COUNT = pStringList->Count;
- int TOTAL = COUNT/6;
- for (int ii = 0; ii < TOTAL; ii++) {
- IDX = ii * 6;
- float POS_X = pStringList->Strings[IDX+4].ToIntDef(0)/1000000.;
- float POS_Y = pStringList->Strings[IDX+5].ToIntDef(0)/1000000.;
- if (POS_X < 100. || POS_X > 140.) {
- continue;
- }
- if (POS_Y < 30. || POS_Y > 50.) {
- continue;
- }
- if (arrObj != "") arrObj += "|";
- String KEY = SRVC_ID + "." + String(SEQ);
- if (SEQ == 1) {
- sTemp.printf(L"%s,%s,%d,%.6f,%.6f,0,0,0,0", KEY.c_str(), KEY.c_str(), SEQ, POS_X, POS_Y);
- arrStr.printf(L"%s,%s,%d,%.6f,%.6f,3,0,0,0", KEY.c_str(), KEY.c_str(), SEQ, POS_X, POS_Y);
- }
- else {
- sTemp.printf(L"%s,%s,%d,%.6f,%.6f,1,0,0,0", KEY.c_str(), KEY.c_str(), SEQ, POS_X, POS_Y);
- sLast.printf(L"%s,%s,%d,%.6f,%.6f,2,0,0,0", KEY.c_str(), KEY.c_str(), SEQ, POS_X, POS_Y);
- arrEnd.printf(L"%s,%s,%d,%.6f,%.6f,4,0,0,0", KEY.c_str(), KEY.c_str(), SEQ, POS_X, POS_Y);
- }
- arrObj += sTemp;
- sTemp.printf(L"%.6f", POS_X);
- if (X_CRDN_ARR != "") X_CRDN_ARR += ",";
- X_CRDN_ARR += sTemp;
- sTemp.printf(L"%.6f", POS_Y);
- if (Y_CRDN_ARR != "") Y_CRDN_ARR += ",";
- Y_CRDN_ARR += sTemp;
- SEQ++;
- }
- sJs.printf(L"addLink('%s', '%s', '1', '%d', '%d', '%d', %d, '%s', '%s')",
- SRVC_ID.c_str(),
- SRVC_ID.c_str(),
- SEQ-1,
- SEQ-1,
- SEQ-1,
- 1,
- X_CRDN_ARR.c_str(),
- Y_CRDN_ARR.c_str());
- FRAMEOpenMap1->ExecScript(sJs);
- delete pStringList;
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TEVSP000M::LoadPrioSgnlPath", 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("TEVSP000M::LoadPrioSgnlPath", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- if (arrObj != "") {
- if (sLast != "") {
- arrObj += "|";
- arrObj += sLast;
- }
- sJs.printf(L"addFacility(%d, '%s')", LyrTp_Pos, String(arrStr + "|" + arrEnd).c_str());
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"addFacility(%d, '%s')", LyrTp_CarPos, arrObj.c_str());
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"showLayer(%d, %d)", LyrTp_CarPos, 1);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"showLayer(%d, %d)", LyrTp_Pos, 1);
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"showLayer(%d, %d)", LyrTp_Link, 1);
- FRAMEOpenMap1->ExecScript(sJs);
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::LoadEmrgVhclOperHs()
- {
- String sQry;
- TADOQuery *pADO = NULL;
- sQry = "SELECT A.EMRG_VHCL_ID, B.SRVC_ID, \r\n"
- " TO_CHAR(B.CLCT_DT, 'YYYY-MM-DD HH24:MI:SS') AS CLCT_DT, \r\n"
- " B.CLCT_NMBR, \r\n"
- " B.X_CRDN/1000000 AS X_CRDN, B.Y_CRDN/1000000 AS Y_CRDN \r\n"
- " FROM PRIO_SGNL_REQ_INFR A, \r\n"
- " EMRG_VHCL_OPER_HS B \r\n"
- " WHERE A.END_YN = 'N' \r\n"
- " AND A.EMRG_VHCL_ID = B.EMRG_VHCL_ID \r\n"
- " AND A.SRVC_ID = B.SRVC_ID \r\n"
- " ORDER BY A.EMRG_VHCL_ID, B.CLCT_NMBR \r\n";
- try
- {
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Close();
- pADO->Connection = ITSDb_GetConnection();
- pADO->SQL->Clear();
- pADO->SQL->Text = sQry;
- pADO->Prepared = true;
- pADO->Open();
- for( ; !pADO->Eof; pADO->Next())
- {
- String VHCL_ID = pADO->FieldByName("EMRG_VHCL_ID")->AsString;
- TReqVhcl *pReqVhcl = FReqLists.Find(VHCL_ID);
- if (pReqVhcl != NULL) {
- pReqVhcl->END_YN = "N";
- pReqVhcl->X_CRDN = pADO->FieldByName("X_CRDN")->AsFloat;
- pReqVhcl->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsFloat;
- }
- }
- }
- catch(EDatabaseError &E)
- {
- ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
- DBERRORMSG("TEVSP000M::LoadEmrgVhclOperHs", 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("TEVSP000M::LoadEmrgVhclOperHs", String(exception.ClassName()), exception.Message, sQry);
- throw Exception(String(exception.ClassName()) + exception.Message);
- }
- }
- __finally
- {
- if (pADO)
- {
- pADO->Close();
- delete pADO;
- }
- sJs.printf(L"removeLayerObject(%d)", LyrTp_MoveCar);
- FRAMEOpenMap1->ExecScript(sJs);
- String arrObj = "";
- String sTemp;
- double X_CRDN = 0.;
- double Y_CRDN = 0.;
- FOR_STL(TReqVhcl*, pObj, FReqLists) {
- if (pObj->END_YN == "N" && pObj->X_CRDN != 0. && pObj->Y_CRDN != 0.) {
- if (arrObj != "") arrObj += "|";
- X_CRDN = pObj->X_CRDN;
- Y_CRDN = pObj->Y_CRDN;
- sTemp.printf(L"%s,%s,%s,%.6f,%.6f,0,0,0,0", pObj->VHCL_ID.c_str(), pObj->VHCL_KIND_DESC.c_str(), pObj->VHCL_NMBR.c_str(), pObj->X_CRDN, pObj->Y_CRDN);
- arrObj += sTemp;
- }
- }
- if (arrObj != "")
- {
- sJs.printf(L"addFacility(%d, '%s')", LyrTp_MoveCar, arrObj.c_str());
- FRAMEOpenMap1->ExecScript(sJs);
- sJs.printf(L"selectPosWithoutArrow(0, '%.7f', '%.7f')", X_CRDN, Y_CRDN);
- FRAMEOpenMap1->ExecScript(sJs);
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::UpdateOprIxrInfo()
- {
- if (!FRAMEOpenMap1->MapStart) return;
- sJs.printf(L"removeLayerObject(%d)", FLayerIdx);
- FRAMEOpenMap1->ExecScript(sJs);
- String arrObj = "";
- String sTemp;
- String VHCL_ID;
- int ORD;
- SgnlCtlrManager->FLists.Lock();
- try
- {
- FOR_STL(TOprIxr*, pObj, FIxrLists) {
- //String IXR_INFO = pObj->VHCL_ID + "-" + String(pObj->ORD) + ", " + pObj->IXR_NMBR;
- if (arrObj != "") arrObj += "|";
- sTemp.printf(L"%s,%d,%s,%.6f,%.6f,0,0,0,0", pObj->IXR_NMBR.c_str(), pObj->ORD, pObj->IXR_NM.c_str(), pObj->X_CRDN, pObj->Y_CRDN);
- arrObj += sTemp;
- }
- } __finally {
- SgnlCtlrManager->FLists.UnLock();
- if (arrObj != "")
- {
- sJs.printf(L"addFacility(%d, '%s')", FLayerIdx, arrObj.c_str());
- FRAMEOpenMap1->ExecScript(sJs);
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::ChkShowHideFacilityClick(TObject *Sender)
- {
- // CCTV/VMS Show/Hide
- if (!FRAMEOpenMap1->MapStart) return;
- TcxCheckBox *pCheckBox = (TcxCheckBox*)Sender;
- sJs.printf(L"showLayer(%d, %d)", pCheckBox->Tag, (pCheckBox->Checked) ? 1 : 0);
- FRAMEOpenMap1->ExecScript(sJs);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TvIxrCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
- TMouseButton AButton, TShiftState AShift, bool &AHandled)
- {
- TcxDataController *pGDC = TvIxr->DataController;
- int nRow = pGDC->FocusedRecordIndex;
- if( nRow <= -1 )
- return;
- String IXR_NMBR = pGDC->Values[nRow][ColIxr06->Index];
- sJs.printf(L"selectLayerObject(%d, '%s', %d)", FLayerIdx, IXR_NMBR.c_str(), FRAMEOpenMap1->MapZoom);
- FRAMEOpenMap1->ExecScript(sJs);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TvPathCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
- TMouseButton AButton, TShiftState AShift, bool &AHandled)
- {
- TcxDataController *pGDC = TvPath->DataController;
- int nRow = pGDC->FocusedRecordIndex;
- if( nRow <= -1 )
- return;
- float xCrdn = pGDC->Values[nRow][ColPath03->Index];
- float yCrdn = pGDC->Values[nRow][ColPath04->Index];
- FRAMEOpenMap1->SelectObjectByPos(xCrdn, yCrdn, true);
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::BtnSearchClick(TObject *Sender)
- {
- TSqlCursor sqlCrs;
- BtnSearch->Enabled = false;
- LoadEvspVehicleRunInfo();
- BtnSearch->Enabled = true;
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::ChkAutoRefreshClick(TObject *Sender)
- {
- BtnSearch->Enabled = !ChkAutoRefresh->Checked;
- if (ChkAutoRefresh->Checked) {
- String interVal = CboAutoRefreshSec->Text;
- interVal = StringReplace(interVal , "초", "", TReplaceFlags() << rfReplaceAll);
- interVal = interVal.Trim();
- int refreshSec = interVal.ToIntDef(5);
- TmrRefresh->Interval = refreshSec * 1000;
- TmrRefreshTimer((TObject*)TmrRefresh);
- }
- else {
- TmrRefresh->Enabled = false;
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TEVSP000M::TmrRefreshTimer(TObject *Sender)
- {
- TmrRefresh->Enabled = false;
- BtnSearchClick((TObject*)BtnSearch);
- if (ChkAutoRefresh->Checked) {
- TmrRefresh->Enabled = true;
- BtnSearch->Enabled = false;
- }
- else {
- BtnSearch->Enabled = true;
- }
- }
- //---------------------------------------------------------------------------
|