//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSVmsCtlrF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TVmsIfscRltn::TVmsIfscRltn() { } //--------------------------------------------------------------------------- TVmsIfscRltn::~TVmsIfscRltn() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsMsg::TVmsMsg() { for (int ii = 0; ii < INT_VMS_MAX_FORM; ii++) { PHASE[ii].pVmsBmp = NULL; } Init(); }; //--------------------------------------------------------------------------- TVmsMsg::~TVmsMsg() { for (int ii = 0; ii < INT_VMS_MAX_FORM; ii++) { if (PHASE[ii].pVmsBmp) { PHASE[ii].pVmsBmp->FreeImage(); PHASE[ii].pVmsBmp->Assign(NULL); delete PHASE[ii].pVmsBmp; PHASE[ii].pVmsBmp = NULL; } } }; //--------------------------------------------------------------------------- void TVmsMsg::Init() { Total = 0; Curr = 0; OFFER_DT = "19990101000000"; OFFER_YN = false; for (int ii = 0; ii < INT_VMS_MAX_FORM; ii++) { PHASE[ii].DSPL_HH = 4; //Ç¥Ãâ½Ã°£ PHASE[ii].DNLD_YN = "N"; //´Ù¿î·Îµå¼º°ø¿©ºÎ PHASE[ii].DSPL_CD = ""; //Ç¥Ãâ¹æ¹ý PHASE[ii].VMS_SCH_FORM_TYPE = 0; PHASE[ii].VMS_DSPL_MSG_TXT = ""; } }; //--------------------------------------------------------------------------- void VmsInitStatus(INT_VMS_STATE *AState) { int ii; if (AState->Comm != vms_comm_normal && AState->Wcomm != vms_wcomm_normal) { AState->DoorStatus = vms_door_unknown; /* µµ¾î»óÅÂÁ¤º¸ÄÚµå, 0:¿­¸² 1:´ÝÈû 2:¾Ë¼ö¾øÀ½ */ AState->ModulePowerStatus = vms_module_power_unknown; /* ¸ðµâÀü¿ø»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->BodyTemp = 0; /* ÇÔü¿Âµµ°ª(¡É), ¹üÀ§(-128~127) */ AState->LuminanceStatus = 0; /* È­¸éÀÇ ¹à±â°ª (ÃÖ´ë ÈÖµµ°ªÀ» 100À¸·Î ÇßÀ» ¶§ÀÇ ¹éºÐÀ² °ª), ¹üÀ§(0~100) */ AState->FanStatus = vms_fan_unknown; /* Fan µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü, 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->HeaterStatus = vms_heater_unknown; /* Heater µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå, 0:ÄÑÁü, 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ AState->ExternalLightStatus = vms_unknown; /* ¼±Åà ¿ÜºÎÁ¶¸í µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü, 2:ÀÚµ¿(°ø´ÜÀº ¹Ì»ç¿ë) */ AState->AlarmLightStatus = vms_unknown; /* ¼±Åà °æ±¤µî µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü */ AState->SpeakerStatus = vms_unknown; /* ¼±Åà ½ºÇÇÄ¿ µ¿ÀÛ»óÅÂÁ¤º¸ÄÚµå 0:ÄÑÁü, 1:²¨Áü */ //memset(&AState->ControllerCurrentTime, 0x00, sizeof(AState->ControllerCurrentTime)); /*¼±Åà Á¦¾î±â ½Ã°£ (YYYYMMDDHHMMSS) */ AState->Voltage = 0; /* Àü¾Ð, ¹üÀ§(0~255), »ç¿ë¾ÈÇÔ */ // AState->ModuleState = vms_unknown; /* ¸ðµâ »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ #if 0 //AState->ModuleHorizontal = 0; /* °¡·Î ¸ðµâ¼ö */ //AState->ModuleVertical = 0; /* ¼¼·Î ¸ðµâ¼ö */ for (ii = 0; ii < INT_VMS_MAX_MODULE_BIT; ii++) AState->ModuleStatus[ii] = 0xFF;//vms_unknown; /* ¸ðµâ °³º° »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ //AState->PowerCount = 0; /* Àü¿ø °¹¼ö */ for (ii = 0; ii < INT_VMS_MAX_POWER_BIT; ii++) AState->PowerStatus[ii] = 0xFF;//vms_unknown; /* Àü¿ø °³º° »óÅÂ, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ #endif #if 0 AState->ScheduledMessageOperatingTime = 0; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ AState->ModuleOperatingTemperature = 0; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ AState->FanOperatingTemperature = 0; /* Çʼö Fan µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ AState->HeaterOperatingTemperature = 0; /* Çʼö Heater µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ AState->ExternalLightOperatingLuminance = 0; /* ¼±Åà ¿ÜºÎÀüµî µ¿ÀÛ ±âÁØ ÈÖµµ°ª */ AState->ModuleBasicFailureRate = 0; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ AState->MaximumRetry = 0; /* ¼±Åà ÃÖ´ë Àç½Ãµµ Ƚ¼ö(ȸ) */ AState->ResponseTimeOut = 0; /* ¼±Åà ÃÖ´ëÀÀ´ä´ë±â½Ã°£ (ÃÊ) */ AState->BlinkingCycleTime = 0; /* ¼±Åà Á¡¸ê½Ã°£ ÁÖ±â ( 1/10ÃÊ´ÜÀ§) */ #endif } for (ii = 0; ii < INT_VMS_MAX_MODULE_BIT; ii++) AState->ModuleStatus[ii] = 0xFF;//vms_unknown; /* ¸ðµâ °³º° »óÅÂ, 0:Á¤»ó 1:Àå¾Ö 2:¾Ë¼ö¾øÀ½ */ //AState->PowerCount = 0; /* Àü¿ø °¹¼ö */ for (ii = 0; ii < INT_VMS_MAX_POWER_BIT; ii++) AState->PowerStatus[ii] = 0xFF;//vms_unknown; /* Àü¿ø °³º° »óÅÂ, 0:ÄÑÁü 1:²¨Áü 2:¾Ë¼ö¾øÀ½ */ } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsCtlr::TVmsCtlr() { memset(&STATE, 0x00, sizeof(STATE)); STATE.Comm = vms_comm_error; VmsInitStatus(&STATE); STATE.Comm = vms_comm_error; InitFormCount(); VmsMsg = NULL; VmsMsg = new TVmsMsg(); VmsMsg->Init(); RunState = state_error; } //--------------------------------------------------------------------------- TVmsCtlr::~TVmsCtlr() { FIfscRltn.RemoveAll(); } //--------------------------------------------------------------------------- void TVmsCtlr::CheckRunState() { RunState = STATE.Comm; if (STATE.Comm == vms_comm_normal && STATE.Wcomm != vms_wcomm_normal) { STATE.DoorStatus = vms_door_unknown; STATE.ModulePowerStatus = vms_module_power_unknown; STATE.BodyTemp = 0; STATE.LuminanceStatus = 0; STATE.FanStatus = vms_fan_unknown; STATE.HeaterStatus = vms_heater_unknown; } } //--------------------------------------------------------------------------- TVmsSize::TVmsSize() { } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- TVmsCtlrManager *VmsCtlrManager = NULL; //--------------------------------------------------------------------------- TVmsCtlrManager::TVmsCtlrManager() { FImgStream = NULL; } //--------------------------------------------------------------------------- TVmsCtlrManager::~TVmsCtlrManager() { FVmsSize.RemoveAll(); FLists.RemoveAll(); if (FImgStream) delete FImgStream; FImgStream = NULL; } //--------------------------------------------------------------------------- void TVmsCtlrManager::InitFormCount() { FLists.Lock(); try { FOR_STL(TVmsCtlr*, pObj, FLists) { pObj->InitFormCount(); } } __finally { FLists.UnLock(); } }; //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsSize(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; FVmsSize.Lock(); try { FVmsSize.RemoveAll(); } __finally { FVmsSize.UnLock(); } sQry = "SELECT VMS_TYPE_CD, VMS_TYPE_NM, \r\n" " VMS_WDTH, VMS_HGHT, MODL_ROW_NUM, MODL_COL_NUM \r\n" " FROM TB_VMS_TYPE \r\n" " WHERE USE_YN = 'Y' \r\n"; FVmsSize.Lock(); try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TVmsSize *pObj = new TVmsSize(); pObj->TypeCd = pADO->FieldByName("VMS_TYPE_CD")->AsString; pObj->TypeNm = pADO->FieldByName("VMS_TYPE_NM")->AsString; pObj->Width = pADO->FieldByName("VMS_WDTH")->AsInteger; pObj->Height = pADO->FieldByName("VMS_HGHT")->AsInteger; FVmsSize.Push(pObj->TypeCd, pObj); } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadVmsSize", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadVmsSize", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FVmsSize.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; FMinWidth = 1000; FMinHeight= 1000; FMaxWidth = 0; FMaxHeight= 0; sQry = "SELECT A.*, \r\n" " B.VMS_TYPE_NM, \r\n" " B.VMS_WDTH, B.VMS_HGHT, \r\n" " B.ROW_NUM, B.COL_NUM, \r\n" " B.MODL_ROW_NUM, B.MODL_COL_NUM, \r\n" " B.POWR_ROW_NUM, B.POWR_COL_NUM \r\n" " FROM TB_VMS_CTLR A, \r\n" " TB_VMS_TYPE B \r\n" " WHERE A.VMS_TYPE_CD = B.VMS_TYPE_CD \r\n" " AND A.DEL_YN = 'N' \r\n"; FLists.Lock(); try { FLists.RemoveAll(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { TVmsCtlr *pObj = new TVmsCtlr(); pObj->VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; // N NUMBER(10) N VMS Á¦¾î±â ¹øÈ£ pObj->VMS_CTLR_ID = pADO->FieldByName("VMS_CTLR_ID")->AsString.Trim(); // N VARCHAR2(10) Y VMS Á¦¾î±â ID pObj->VMS_NM = pADO->FieldByName("VMS_NM")->AsString.Trim(); // N VARCHAR2(40) Y VMS ¸íĪ pObj->VMS_CTLR_IP = pADO->FieldByName("VMS_CTLR_IP")->AsString.Trim(); // N VARCHAR2(20) Y VMS Á¦¾î±â ¾ÆÀÌÇÇ #if 0 pObj->VMS_CTLR_PORT = pADO->FieldByName("VMS_CTLR_PORT")->AsInteger; // N NUMBER(5) Y 0 VMS Á¦¾î±â Æ÷Æ® pObj->VMS_CTLR_LOCAL_NO = pADO->FieldByName("VMS_CTLR_LOCAL_NO")->AsInteger; // N NUMBER(5) Y 0 VMS Á¦¾î±â Áö¿ª¹øÈ£ pObj->DEF_PHSE_CHNG_CYCL = pADO->FieldByName("DEF_PHSE_CHNG_CYCL")->AsInteger; // N NUMBER(3) Y 5 ±âº»¸Þ½ÃÁöÁÖ±â pObj->FAN_MODE = pADO->FieldByName("FAN_MODE")->AsInteger; // N NUMBER(3) Y 2 FAN µ¿ÀÛ¸ðµå(0x00:²¨Áü,0x01:ÄÑÁü,0x02:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) pObj->FAN_RUN_TMPR = pADO->FieldByName("FAN_RUN_TMPR")->AsInteger; // N NUMBER(3) Y 30 ÆÒ µ¿ÀÛ ¿Âµµ pObj->HETR_MODE = pADO->FieldByName("HETR_MODE")->AsInteger; // N NUMBER(3) Y 2 È÷ÅÍ µ¿ÀÛ¸ðµå(0x00:²¨Áü,0x01:ÄÑÁü,0x02:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) pObj->HETR_RUN_TMPR = pADO->FieldByName("HETR_RUN_TMPR")->AsInteger; // N NUMBER(3) Y 0 È÷ÅÍ µ¿ÀÛ ¿Âµµ pObj->BRGH_CURR_STEP = pADO->FieldByName("BRGH_CURR_STEP")->AsInteger; // N NUMBER(3) Y 40 ÈÖµµ ÇöÀç ´Ü°è(0~100) pObj->BRGH_WEEK_STEP = pADO->FieldByName("BRGH_WEEK_STEP")->AsInteger; // N NUMBER(3) Y 64 ÈÖµµ ÁÖ°£ ´Ü°è(0~100) pObj->BRGH_NGHT_STEP = pADO->FieldByName("BRGH_NGHT_STEP")->AsInteger; // N NUMBER(3) Y 48 ÈÖµµ ¾ß°£ ´Ü°è(0~100) pObj->MODL_ERR_RATE = pADO->FieldByName("MODL_ERR_RATE")->AsInteger; // N NUMBER(3) Y 10 VMS ¸ðµâ ¿À·ù À² pObj->CMNC_FAIL_RATE = pADO->FieldByName("CMNC_FAIL_RATE")->AsInteger; // N NUMBER(3) Y 60 VMS Åë½Å ¿À·ù ±âº» °ª pObj->WEB_CMRA_CMPY = pADO->FieldByName("WEB_CMRA_CMPY")->AsString.Trim(); // N VARCHAR2(50) Y À¥Ä«¸Þ¶óÁ¦Á¶»ç(»ï¼ºÄ«¸Þ¶ó'Samsung') pObj->WEB_CMRA_MDL = pADO->FieldByName("WEB_CMRA_MDL")->AsString.Trim(); // N VARCHAR2(126) Y À¥Ä«¸Þ¶ó¸ðµ¨ pObj->ISTL_LCTN_ADDR = pADO->FieldByName("ISTL_LCTN_ADDR")->AsString.Trim(); // N VARCHAR2(200) Y ¼³Ä¡ À§Ä¡ ÁÖ¼Ò #else pObj->VMS_CTLR_PORT = pADO->FieldByName("VMS_CMNC_PORT")->AsInteger; // N NUMBER(5) Y 0 VMS Á¦¾î±â Æ÷Æ® #endif pObj->VMS_TYPE_CD = pADO->FieldByName("VMS_TYPE_CD")->AsString.Trim(); // N VARCHAR2(7) Y VMS À¯Çü ÄÚµå pObj->ISTL_LCTN_NM = pADO->FieldByName("ISTL_LCTN_NM")->AsString.Trim(); // N VARCHAR2(40) Y ¼³Ä¡ À§Ä¡ ¸í pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsFloat; // N NUMBER(11,8) Y X ÁÂÇ¥ pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsFloat; // N NUMBER(10,8) Y Y ÁÂÇ¥ pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString.Trim(); // N CHAR(1) Y 'N' »èÁ¦ ¿©ºÎ pObj->WEB_CMRA_IP = pADO->FieldByName("WEB_CMRA_IP")->AsString.Trim(); // N VARCHAR2(20) Y À¥ Ä«¸Þ¶ó ¾ÆÀÌÇÇ pObj->WEB_CMRA_PORT = pADO->FieldByName("WEB_CMRA_PORT")->AsString.Trim(); // N NUMBER(5) Y À¥Ä«¸Þ¶ó Æ÷Æ® pObj->WEB_CMRA_ID = pADO->FieldByName("WEB_CMRA_ID")->AsString.Trim(); // N VARCHAR2(20) Y À¥Ä«¸Þ¶ó ID pObj->WEB_CMRA_PWD = pADO->FieldByName("WEB_CMRA_PWD")->AsString.Trim(); // N VARCHAR2(20) Y À¥Ä«¸Þ¶ó ºñ¹Ð¹øÈ£ pObj->STRM_SESN_NM = pADO->FieldByName("STRM_SESN_NM")->AsString.Trim(); // N VARCHAR2(200) Y ½ºÆ®¸®¹Ö ¼¼¼Ç ¸í pObj->OPER_MODE = pADO->FieldByName("OPER_MODE")->AsString.Trim(); // N VARCHAR2(7) Y 'A' ¿î¿µ ¸ðµå pObj->VMS_MAX_PHSE_NUM = pADO->FieldByName("VMS_MAX_PHSE_NUM")->AsInteger; // N NUMBER(2) Y 14 VMS ÃÖ´ë Ç¥Ãâ¸é °³¼ö pObj->PANL_ON_TIME = pADO->FieldByName("PANL_ON_TIME")->AsString.Trim(); // N VARCHAR2(4) Y '0400' Àü±¤ÆÇ ON TIME pObj->PANL_OFF_TIME = pADO->FieldByName("PANL_OFF_TIME")->AsString.Trim(); // N VARCHAR2(4) Y '0200' Àü±¤ÆÇ OFF TIME pObj->PANL_PWER_MODE = pADO->FieldByName("PANL_PWER_MODE")->AsInteger; // N NUMBER(3) Y 2 Àü±¤ÆÇ Àü¿ø ¸ðµå(0x00:²¨Áü,0x01:ÄÑÁü,0x02:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) pObj->BRGH_MODE = pADO->FieldByName("BRGH_MODE")->AsInteger; // N NUMBER(3) Y 2 ÈÖµµ ¸ðµå(0x00:ÁÖ°£,0x01:¾ß°£,0x00:ÀÚµ¿,0x09:¾Ë¼ö¾øÀ½) pObj->VMS_TYPE_NM = pADO->FieldByName("VMS_TYPE_NM")->AsString; pObj->WIDTH = pADO->FieldByName("VMS_WDTH")->AsString.Trim().ToIntDef(576); pObj->HEIGHT = pADO->FieldByName("VMS_HGHT")->AsString.Trim().ToIntDef(320); pObj->ROW_NUM = pADO->FieldByName("ROW_NUM")->AsInteger; pObj->COL_NUM = pADO->FieldByName("COL_NUM")->AsInteger; pObj->MODL_ROW_NUM = pADO->FieldByName("MODL_ROW_NUM")->AsInteger; pObj->MODL_COL_NUM = pADO->FieldByName("MODL_COL_NUM")->AsInteger; pObj->POWR_ROW_NUM = pADO->FieldByName("POWR_ROW_NUM")->AsInteger; pObj->POWR_COL_NUM = pADO->FieldByName("POWR_COL_NUM")->AsInteger; if (pObj->WIDTH > FMaxWidth) FMaxWidth = pObj->WIDTH; if (pObj->WIDTH < FMinWidth) FMinWidth = pObj->WIDTH; if (pObj->HEIGHT > FMaxHeight) FMaxHeight = pObj->HEIGHT; if (pObj->HEIGHT < FMinHeight) FMinHeight = pObj->HEIGHT; #if 0 pObj->STATE.ScheduledMessageOperatingTime = pObj->VMS_PHSE_CHNG_CYCL; /* Çʼö °èȹµÈ ¸Þ½ÃÁöÀÇ µ¿À۽ð£(ÃÊ) */ pObj->STATE.ModuleOperatingTemperature = pObj->VMS_CMNC_ERR_BASS_VAL; /* Çʼö ¸ðµâ Àü¿øÀÌ ²¨Áö´Â ¿Âµµ°ª(¡É) */ pObj->STATE.FanOperatingTemperature = pObj->FAN_MTNS_TMPR; /* Çʼö Fan µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ pObj->STATE.HeaterOperatingTemperature = pObj->HETR_MTNS_TMPR; /* Çʼö Heater µ¿ÀÛ ±âÁØ ¿Âµµ°ª(¡É) */ pObj->STATE.ModuleBasicFailureRate = pObj->VMS_MODL_ERR_RATE; /* ¼±Åà ¸ðµâ Àå¾ÖÀ² (ÇÑ °³ÀÇ ¸ðµâÀ» Àå¾Ö·Î ó¸®Çϱâ À§ÇÑ Çȼ¿ÀÇ ¹éºÐÀ²°ª) */ #endif FLists.Push(pObj->VMS_CTLR_NMBR, pObj); pObj->Completed = true; } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadStatusFromDb(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; #if 0 //CMNC_STTS_CD 1 CMS0 CMS Á¤»ó connected Y 2 CMS1 CMS Åë½ÅµÎÀý Not connected Y 3 CMS2 CMS Á¤º¸¾øÀ½ Y //COBXDOOR_OPEN_STTS_CD 1 CDS0 CDS ´ÝÈû a door closed Y 2 CDS1 CDS ¿­¸² a door opened Y 3 CDS2 CDS Á¤º¸¾øÀ½ Y 1 CRS0 CRS °¡µ¿ operated Y 2 CRS1 CRS ÁßÁö stopped Y 1 CPS0 CPS ON Power On Y 2 CPS1 CPS OFF Power Off Y //HETR_STTS_CD 1 HTS0 HTS °¡µ¿ operated Y 2 HTS1 HTS ÁßÁö stopped Y 3 HTS2 HTS Á¤º¸¾øÀ½ Y //PWER_STTS_CD 1 PWS0 PWS Á¤»ó normal Y 2 PWS1 PWS ¿À·ù abnormal Y //FAN_STTS_CD 1 PAS0 PAS °¡µ¿ operated Y 2 PAS1 PAS ÁßÁö stopped Y 3 PAS2 PAS Á¤º¸¾øÀ½ Y //¸ðµâ 1 MOS0 MOS Á¤»ó normal Y 2 MOS1 MOS ¿À·ù abnormal Y #endif #if 0 sQry = "SELECT * \r\n" " FROM TB_VMS_CTLR_STTS A, TB_VMS_CTLR B \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND A.UPDT_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS') \r\n"; #else sQry = "SELECT * \r\n" " FROM TB_VMS_STTS_PRST A, TB_VMS_CTLR B \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND A.RGST_DT >= TO_CHAR(SYSDATE-5/1440, 'YYYYMMDDHH24MISS') \r\n"; #endif FLists.Lock(); try { TVmsCtlr *pObj = NULL; #if 0 FOR_STL(TVmsCtlr*, pTmp, FLists) { pTmp->STATE.Comm = vms_comm_error; VmsInitStatus(&pTmp->STATE); pTmp->RunState = state_error; } #endif try { int nORD; pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); //int nRows = pADO->RecordCount; for( ; !pADO->Eof; pADO->Next()) { String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; pObj = FLists.Find(sVmsNmbr); if (!pObj) continue; String UPDT_DT = pADO->FieldByName("UPDT_DT")->AsString; String CMNC_STTS_CD = pADO->FieldByName("CMNC_STTS_CD")->AsString; if (CMNC_STTS_CD != "CMS0") { //Åë½ÅÀå¾Ö continue; } pObj->STATE.Comm = vms_comm_normal; String CBOXDOOR_OPEN_STTS_CD = pADO->FieldByName("CBOX_DOOR_STTS_CD")->AsString; if (CBOXDOOR_OPEN_STTS_CD == "CDS0") pObj->STATE.DoorStatus = vms_door_close; else if (CBOXDOOR_OPEN_STTS_CD == "CDS1") pObj->STATE.DoorStatus = vms_door_open; String CBOXFAN_STTS_CD = pADO->FieldByName("FAN_STTS_CD")->AsString; if (CBOXFAN_STTS_CD == "MOS0") pObj->STATE.ModulePowerStatus = vms_module_power_on; else if (CBOXFAN_STTS_CD == "MOS1") pObj->STATE.ModulePowerStatus = vms_module_power_off; String CBOX_TMPR = pADO->FieldByName("CBOX_TMPR")->AsString; pObj->STATE.BodyTemp = CBOX_TMPR.ToIntDef(0); String CBOX_HMDT = pADO->FieldByName("BRGH_VAL")->AsString; pObj->STATE.LuminanceStatus = CBOX_HMDT.ToIntDef(0); String FAN_STTS_CD = pADO->FieldByName("FAN_STTS_CD")->AsString; if (FAN_STTS_CD == "PAS0") pObj->STATE.FanStatus = vms_fan_on; else if (FAN_STTS_CD == "PAS1") pObj->STATE.FanStatus = vms_fan_off; String HETR_STTS_CD = pADO->FieldByName("HETR_STTS_CD")->AsString; if (HETR_STTS_CD == "HTS0") pObj->STATE.HeaterStatus = vms_heater_on; else if (HETR_STTS_CD == "HTS1") pObj->STATE.HeaterStatus = vms_heater_off; String COMM_STTS_CD = pADO->FieldByName("COMM_STTS_CD")->AsString; if (COMM_STTS_CD == "CMS0") pObj->STATE.Wcomm = vms_wcomm_normal; else if (COMM_STTS_CD == "CMS1") pObj->STATE.Wcomm = vms_wcomm_error; pObj->CheckRunState(); } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadStatusFromDb", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadStatusFromDb", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::DeleteVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET DEL_YN = 'Y' \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->ExecSQL(); sQry = "DELETE TB_FCLT_INFR \r\n" " WHERE FCLT_ID = :p01 \r\n"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_ID; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::DeleteVms", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::DeleteVms", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::InsertVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "INSERT INTO TB_VMS_CTLR \r\n" " ( \r\n" " VMS_CTLR_NMBR, \r\n" " VMS_CTLR_ID, \r\n" " VMS_NM, \r\n" " VMS_CTLR_IP, \r\n" " VMS_CTLR_PORT, \r\n" " VMS_CTLR_LOCAL_NO, \r\n" " VMS_TYPE_CD, \r\n" " ISTL_LCTN_NM, \r\n" " X_CRDN, \r\n" " Y_CRDN, \r\n" " DEL_YN, \r\n" " WEB_CMRA_IP, \r\n" " WEB_CMRA_PORT, \r\n" " WEB_CMRA_ID, \r\n" " WEB_CMRA_PWD, \r\n" " STRM_SESN_NM, \r\n" " VMS_MAX_PHSE_NUM, \r\n" " PANL_ON_TIME, \r\n" " PANL_OFF_TIME, \r\n" " ISTL_LCTN_ADDR \r\n" " ) \r\n" " VALUES (:p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05, \r\n" " :p06, \r\n" " :p07, \r\n" " :p08, \r\n" " :p09, \r\n" " :p10, \r\n" " :p11, \r\n" " :p12, \r\n" " :p13, \r\n" " :p14, \r\n" " :p15, \r\n" " :p16, \r\n" " :p17, \r\n" " :p18, \r\n" " :p19, \r\n" " :p20) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->Parameters->ParamByName("p02")->Value = AObj->VMS_CTLR_ID; pADO->Parameters->ParamByName("p03")->Value = AObj->VMS_NM; pADO->Parameters->ParamByName("p04")->Value = AObj->VMS_CTLR_IP; pADO->Parameters->ParamByName("p05")->Value = AObj->VMS_CTLR_PORT; pADO->Parameters->ParamByName("p06")->Value = AObj->VMS_CTLR_LOCAL_NO; pADO->Parameters->ParamByName("p07")->Value = AObj->VMS_TYPE_CD; pADO->Parameters->ParamByName("p08")->Value = AObj->ISTL_LCTN_NM; pADO->Parameters->ParamByName("p09")->Value = AObj->X_CRDN; pADO->Parameters->ParamByName("p10")->Value = AObj->Y_CRDN; pADO->Parameters->ParamByName("p11")->Value = AObj->DEL_YN; pADO->Parameters->ParamByName("p12")->Value = AObj->WEB_CMRA_IP; pADO->Parameters->ParamByName("p13")->Value = AObj->WEB_CMRA_PORT; pADO->Parameters->ParamByName("p14")->Value = AObj->WEB_CMRA_ID; pADO->Parameters->ParamByName("p15")->Value = AObj->WEB_CMRA_PWD; pADO->Parameters->ParamByName("p16")->Value = AObj->STRM_SESN_NM; pADO->Parameters->ParamByName("p17")->Value = AObj->VMS_MAX_PHSE_NUM; pADO->Parameters->ParamByName("p18")->Value = AObj->PANL_ON_TIME; pADO->Parameters->ParamByName("p19")->Value = AObj->PANL_OFF_TIME; pADO->Parameters->ParamByName("p20")->Value = AObj->ISTL_LCTN_ADDR; pADO->ExecSQL(); return MergeFcltInfo(AObj, ADbConn); } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::InsertVms", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::InsertVms", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::UpdateVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { return MergeVms(AObj, ADbConn); } //--------------------------------------------------------------------------- bool TVmsCtlrManager::MergeVms(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "MERGE INTO TB_VMS_CTLR L \r\n" "USING (SELECT :p01 AS VMS_CTLR_NMBR, \r\n" " :p02 AS VMS_CTLR_ID, \r\n" " :p03 AS VMS_NM, \r\n" " :p04 AS VMS_CTLR_IP, \r\n" " :p05 AS VMS_CTLR_PORT, \r\n" " :p06 AS VMS_CTLR_LOCAL_NO, \r\n" " :p07 AS VMS_TYPE_CD, \r\n" " :p08 AS ISTL_LCTN_NM, \r\n" " :p09 AS X_CRDN, \r\n" " :p10 AS Y_CRDN, \r\n" " :p11 AS DEL_YN, \r\n" " :p12 AS WEB_CMRA_IP, \r\n" " :p13 AS WEB_CMRA_PORT, \r\n" " :p14 AS WEB_CMRA_ID, \r\n" " :p15 AS WEB_CMRA_PWD, \r\n" " :p16 AS STRM_SESN_NM, \r\n" " :p17 AS VMS_MAX_PHSE_NUM, \r\n" " :p18 AS PANL_ON_TIME, \r\n" " :p19 AS PANL_OFF_TIME, \r\n" " :p20 AS ISTL_LCTN_ADDR \r\n" " FROM DUAL) M \r\n" " ON (L.VMS_CTLR_NMBR = M.VMS_CTLR_NMBR) \r\n" "WHEN MATCHED THEN \r\n" " UPDATE SET L.VMS_CTLR_ID = M.VMS_CTLR_ID, \r\n" " L.VMS_NM = M.VMS_NM, \r\n" " L.VMS_CTLR_IP = M.VMS_CTLR_IP, \r\n" " L.VMS_CTLR_PORT = M.VMS_CTLR_PORT, \r\n" " L.VMS_CTLR_LOCAL_NO = M.VMS_CTLR_LOCAL_NO, \r\n" " L.VMS_TYPE_CD = M.VMS_TYPE_CD, \r\n" " L.ISTL_LCTN_NM = M.ISTL_LCTN_NM, \r\n" " L.X_CRDN = M.X_CRDN, \r\n" " L.Y_CRDN = M.Y_CRDN, \r\n" " L.DEL_YN = M.DEL_YN, \r\n" " L.WEB_CMRA_IP = M.WEB_CMRA_IP, \r\n" " L.WEB_CMRA_PORT = M.WEB_CMRA_PORT, \r\n" " L.WEB_CMRA_ID = M.WEB_CMRA_ID, \r\n" " L.WEB_CMRA_PWD = M.WEB_CMRA_PWD, \r\n" " L.STRM_SESN_NM = M.STRM_SESN_NM, \r\n" " L.VMS_MAX_PHSE_NUM = M.VMS_MAX_PHSE_NUM, \r\n" " L.PANL_ON_TIME = M.PANL_ON_TIME, \r\n" " L.PANL_OFF_TIME = M.PANL_OFF_TIME, \r\n" " L.ISTL_LCTN_ADDR = M.ISTL_LCTN_ADDR \r\n" "WHEN NOT MATCHED THEN \r\n" " INSERT ( \r\n" " VMS_CTLR_NMBR, \r\n" " VMS_CTLR_ID, \r\n" " VMS_NM, \r\n" " VMS_CTLR_IP, \r\n" " VMS_CTLR_PORT, \r\n" " VMS_CTLR_LOCAL_NO, \r\n" " VMS_TYPE_CD, \r\n" " ISTL_LCTN_NM, \r\n" " X_CRDN, \r\n" " Y_CRDN, \r\n" " DEL_YN, \r\n" " WEB_CMRA_IP, \r\n" " WEB_CMRA_PORT, \r\n" " WEB_CMRA_ID, \r\n" " WEB_CMRA_PWD, \r\n" " STRM_SESN_NM, \r\n" " VMS_MAX_PHSE_NUM, \r\n" " PANL_ON_TIME, \r\n" " PANL_OFF_TIME, \r\n" " ISTL_LCTN_ADDR \r\n" " ) \r\n" " VALUES ( \r\n" " M.VMS_CTLR_NMBR, \r\n" " M.VMS_CTLR_ID, \r\n" " M.VMS_NM, \r\n" " M.VMS_CTLR_IP, \r\n" " M.VMS_CTLR_PORT, \r\n" " M.VMS_CTLR_LOCAL_NO, \r\n" " M.VMS_TYPE_CD, \r\n" " M.ISTL_LCTN_NM, \r\n" " M.X_CRDN, \r\n" " M.Y_CRDN, \r\n" " M.DEL_YN, \r\n" " M.WEB_CMRA_IP, \r\n" " M.WEB_CMRA_PORT, \r\n" " M.WEB_CMRA_ID, \r\n" " M.WEB_CMRA_PWD, \r\n" " M.STRM_SESN_NM, \r\n" " M.VMS_MAX_PHSE_NUM, \r\n" " M.PANL_ON_TIME, \r\n" " M.PANL_OFF_TIME, \r\n" " M.ISTL_LCTN_ADDR \r\n" " ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->Parameters->ParamByName("p02")->Value = AObj->VMS_CTLR_ID; pADO->Parameters->ParamByName("p03")->Value = AObj->VMS_NM; pADO->Parameters->ParamByName("p04")->Value = AObj->VMS_CTLR_IP; pADO->Parameters->ParamByName("p05")->Value = AObj->VMS_CTLR_PORT; pADO->Parameters->ParamByName("p06")->Value = AObj->VMS_CTLR_LOCAL_NO; pADO->Parameters->ParamByName("p07")->Value = AObj->VMS_TYPE_CD; pADO->Parameters->ParamByName("p08")->Value = AObj->ISTL_LCTN_NM; pADO->Parameters->ParamByName("p09")->Value = AObj->X_CRDN; pADO->Parameters->ParamByName("p10")->Value = AObj->Y_CRDN; pADO->Parameters->ParamByName("p11")->Value = AObj->DEL_YN; pADO->Parameters->ParamByName("p12")->Value = AObj->WEB_CMRA_IP; pADO->Parameters->ParamByName("p13")->Value = AObj->WEB_CMRA_PORT; pADO->Parameters->ParamByName("p14")->Value = AObj->WEB_CMRA_ID; pADO->Parameters->ParamByName("p15")->Value = AObj->WEB_CMRA_PWD; pADO->Parameters->ParamByName("p16")->Value = AObj->STRM_SESN_NM; pADO->Parameters->ParamByName("p17")->Value = AObj->VMS_MAX_PHSE_NUM; pADO->Parameters->ParamByName("p18")->Value = AObj->PANL_ON_TIME; pADO->Parameters->ParamByName("p19")->Value = AObj->PANL_OFF_TIME; pADO->Parameters->ParamByName("p20")->Value = AObj->ISTL_LCTN_ADDR; pADO->ExecSQL(); return MergeFcltInfo(AObj, ADbConn); } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::MergeVms", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::MergeVms", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::MergeFcltInfo(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "MERGE INTO TB_FCLT_INFR L \r\n" "USING (SELECT :p01 AS FCLT_ID, \r\n" " :p02 AS FCLT_TYPE, \r\n" " :p03 AS FCLT_LCTN \r\n" " FROM DUAL) M \r\n" " ON (L.FCLT_ID = M.FCLT_ID AND L.FCLT_TYPE = M.FCLT_TYPE) \r\n" "WHEN MATCHED \r\n" "THEN \r\n" " UPDATE SET L.FCLT_LCTN = M.FCLT_LCTN, \r\n" " L.DEL_YN = 'N' \r\n" "WHEN NOT MATCHED \r\n" "THEN \r\n" " INSERT ( FCLT_ID, FCLT_TYPE, FCLT_LCTN) \r\n" " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_ID; pADO->Parameters->ParamByName("p02")->Value = "VMS"; pADO->Parameters->ParamByName("p03")->Value = AObj->VMS_NM; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::MergeFcltInfo", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::MergeFcltInfo", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::GetNextVmsId(int &ANmbr, int &AId, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT NVL(MAX(VMS_CTLR_NMBR), 10000) + 1 AS NEWID FROM TB_VMS_CTLR \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); ANmbr = pADO->FieldByName("NEWID")->AsInteger; AId = ANmbr / 10000; return true; } catch(EDatabaseError &E) { DBERRORMSG("VmsCtlrManager::GetNextVmsId", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VmsCtlrManager::GetNextVmsId", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return false; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::UpdateCtlrInfo(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_CTLR \r\n" " SET PANL_ON_TIME = :p01, \r\n" " PANL_OFF_TIME = :p02 \r\n" " WHERE DEL_YN = 'N' \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->PANL_ON_TIME; pADO->Parameters->ParamByName("p02")->Value = AObj->PANL_OFF_TIME; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::UpdateCtlrInfo", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::UpdateCtlrInfo", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::UpdateIfscCngsSpeedInfo(int ACngsSpd, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "UPDATE TB_VMS_RLTN_IFSC \r\n" " SET CNGS_CNFM_SPED = :p01 \r\n"; try { try { String sGradCd; pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = ACngsSpd; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORLOG("TVmsCtlrManager::UpdateIfscCngsSpeedInfo", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORLOG("TVmsCtlrManager::UpdateIfscCngsSpeedInfo", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadIfscRltn(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; FLists.Lock(); try { FOR_STL(TVmsCtlr*, pObj, FLists) { pObj->FIfscRltn.RemoveAll(); } } __finally { FLists.UnLock(); } #if 0 sQry = "SELECT A.VMS_CTLR_NMBR, B.VMS_IFSC_ID, B.DSPL_PRRT, \r\n" " B.CNGS_CNFM_YN, B.CNGS_CNFM_SPED \r\n" " FROM TB_VMS_CTLR A, \r\n" " TB_VMS_RLTN_IFSC B, \r\n" " TB_VMS_IFSC C \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND B.VMS_IFSC_ID = C.VMS_IFSC_ID \r\n" " ORDER BY A.VMS_CTLR_NMBR, B.DSPL_PRRT \r\n"; #else //±¸¹Ì Ä÷³ Ãß°¡ÇÏÁö ¾Ê´Â °æ¿ì¿¡´Â alias »ç¿ë, Å×ÀÌºí ¸íĪ º¯°æµÊ sQry = "SELECT A.VMS_CTLR_NMBR, B.VMS_IFSC_ID, B.DSPL_PRRT, \r\n" " 'N' AS CNGS_CNFM_YN, 5 AS CNGS_CNFM_SPED \r\n" " FROM TB_VMS_CTLR A, \r\n" " TB_VMS_IFSC_RLTN B, \r\n" " TB_VMS_IFSC C \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND B.VMS_IFSC_ID = C.VMS_IFSC_ID \r\n" " ORDER BY A.VMS_CTLR_NMBR, B.DSPL_PRRT \r\n"; #endif FLists.Lock(); try { String VMS_CTLR_NMBR; try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; TVmsCtlr *pVms = FLists.Find(String(VMS_CTLR_NMBR)); if (!pVms) continue; TVmsIfscRltn *pObj = new TVmsIfscRltn(); if (pObj) { pObj->VMS_CTLR_NMBR = VMS_CTLR_NMBR; pObj->VMS_IFSC_ID = pADO->FieldByName("VMS_IFSC_ID")->AsInteger; pObj->DSPL_PRRT = pADO->FieldByName("DSPL_PRRT")->AsInteger; pObj->CNGS_CNFM_YN = pADO->FieldByName("CNGS_CNFM_YN")->AsString; pObj->CNGS_CNFM_SPED= pADO->FieldByName("CNGS_CNFM_SPED")->AsInteger; pVms->FIfscRltn.Push(pObj->DSPL_PRRT, pObj); } } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadIfscRltn", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadIfscRltn", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } FLists.UnLock(); } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::SaveIfscRltn(TVmsCtlr *AObj, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; int ii; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); sQry = "DELETE FROM TB_VMS_RLTN_IFSC WHERE VMS_CTLR_NMBR = :p01"; pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->ExecSQL(); sQry = "INSERT INTO TB_VMS_RLTN_IFSC(VMS_CTLR_NMBR, VMS_IFSC_ID, DSPL_PRRT, CNGS_CNFM_YN, CNGS_CNFM_SPED) VALUES(:p01, :p02, :p03, :p04, :p05)"; ii = 0; pADO->SQL->Clear(); pADO->SQL->Text = sQry; FOR_STL(TVmsIfscRltn *, pLink, AObj->FIfscRltn) { pADO->Parameters->ParamByName("p01")->Value = AObj->VMS_CTLR_NMBR; pADO->Parameters->ParamByName("p02")->Value = pLink->VMS_IFSC_ID; pADO->Parameters->ParamByName("p03")->Value = String(ii+1); pADO->Parameters->ParamByName("p04")->Value = pLink->CNGS_CNFM_YN; pADO->Parameters->ParamByName("p05")->Value = pLink->CNGS_CNFM_SPED; pADO->ExecSQL(); ii++; } return true; } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::SaveIfscRltn", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::SaveIfscRltn", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsMsg(TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.*, \r\n" " TO_CHAR(SYSDATE - 8/1440, 'YYYYMMDDHH24MISS') AS SVC_DT \r\n" " FROM TB_VMS_DSPL_PRST A, \r\n" " (SELECT VMS_CTLR_NMBR, MAX(DSPL_DT) AS DSPL_DT \r\n" " FROM TB_VMS_DSPL_PRST \r\n" " GROUP BY VMS_CTLR_NMBR) B \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND A.DSPL_DT = B.DSPL_DT \r\n" " ORDER BY A.VMS_CTLR_NMBR, A.PHASE \r\n"; FLists.Lock(); try { FOR_STL(TVmsCtlr*, pTmpObj, FLists) { pTmpObj->Lock(); pTmpObj->VmsMsg->Init(); pTmpObj->UnLock(); } } __finally { FLists.UnLock(); } TVmsCtlr *pObj = NULL; String sOldVmsNmbr = ""; int nPhase = 0; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Prepared = true; pADO->Open(); for( ; !pADO->Eof; pADO->Next()) { String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; if (sVmsNmbr != sOldVmsNmbr) { if (pObj) { pObj->VmsMsg->Total = nPhase; pObj->VmsMsg->Curr = 0; pObj->UnLock(); } pObj = FLists.Find(sVmsNmbr); if (pObj) { pObj->Lock(); nPhase = 0; sOldVmsNmbr = sVmsNmbr; } else continue; } if (!pObj) continue; if (nPhase >= INT_VMS_MAX_FORM) continue; SAFE_DELETE(FImgStream); FImgStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_MSG_IMAG"), bmRead); if (FImgStream && FImgStream->Size > 0) { try { if (!pObj->VmsMsg->PHASE[nPhase].pVmsBmp) { pObj->VmsMsg->PHASE[nPhase].pVmsBmp = new Graphics::TBitmap(); } pObj->VmsMsg->PHASE[nPhase].pVmsBmp->FreeImage(); pObj->VmsMsg->PHASE[nPhase].pVmsBmp->LoadFromStream(FImgStream); int PHASE = pADO->FieldByName("PHASE")->AsInteger; pObj->VmsMsg->PHASE[nPhase].DSPL_HH = pADO->FieldByName("DSPL_HH")->AsInteger; pObj->VmsMsg->PHASE[nPhase].DNLD_YN = pADO->FieldByName("DNLD_YN")->AsString; pObj->VmsMsg->PHASE[nPhase].DSPL_CD = pADO->FieldByName("VMS_FORM_DSPL_MTHD_CD")->AsString; pObj->VmsMsg->PHASE[nPhase].VMS_SCH_FORM_TYPE = pADO->FieldByName("VMS_SCH_FORM_TYPE")->AsInteger; if (pObj->VmsMsg->PHASE[nPhase].VMS_SCH_FORM_TYPE == eSchTp_video || pObj->VmsMsg->PHASE[nPhase].VMS_SCH_FORM_TYPE == eSchTp_stream ) { pObj->VmsMsg->PHASE[nPhase].VMS_DSPL_MSG_TXT = pADO->FieldByName("VMS_DSPL_MSG_TXT")->AsString.Trim(); } if (pObj->VmsMsg->PHASE[nPhase].DSPL_HH <= 0) pObj->VmsMsg->PHASE[nPhase].DSPL_HH = 3; //if (pObj->VmsMsg->PHASE[nPhase].DSPL_HH >= 10) pObj->VmsMsg->PHASE[nPhase].DSPL_HH = 10; String DSPL_DT = pADO->FieldByName("DSPL_DT")->AsString; String SVC_DT = pADO->FieldByName("SVC_DT")->AsString; pObj->VmsMsg->OFFER_DT = DSPL_DT; if (DSPL_DT >= SVC_DT) { pObj->VmsMsg->OFFER_YN = true; } else { pObj->VmsMsg->OFFER_YN = false; } if (pObj->VmsMsg->PHASE[nPhase].DNLD_YN == "N") { pObj->VmsMsg->OFFER_YN = false; } //TODO if (pObj->STATE.Comm != vms_comm_normal) { pObj->VmsMsg->OFFER_YN = false; } nPhase++; } catch(Exception &e) { } } } if (pObj) { pObj->VmsMsg->Total = nPhase; pObj->VmsMsg->Curr = 0; pObj->UnLock(); } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadVmsMsg", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadVmsMsg", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::LoadVmsFormUsage(TADOConnection *ADbConn/*=NULL*/) { InitFormCount(); String sQry; TADOQuery *pADO = NULL; #if 0 sQry = "SELECT A.VMS_CTLR_NMBR, \r\n" " A.VMS_SCH_TYPE, \r\n" " A.VMS_SCH_FORM_TYPE, \r\n" " A.DSPL_STRT_HH, \r\n" " A.DSPL_END_HH, \r\n" " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS CURR_HH, \r\n" " A.USE_YN \r\n" " FROM TB_VMS_DSPL_SCH A, \r\n" " TB_VMS_FORM B \r\n" " WHERE 1=1 \r\n" // " AND B.VALID_YN = 'Y' \r\n" " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"; #else sQry = "SELECT A.VMS_CTLR_NMBR, \r\n" " A.TRFC_SITU_TYPE_CD AS VMS_SCH_TYPE, \r\n" " A.TRFC_SITU_TYPE_CD AS VMS_SCH_FORM_TYPE, \r\n" " A.DSPL_STRT_HH, \r\n" " A.DSPL_END_HH, \r\n" " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS CURR_HH, \r\n" " 'Y' AS USE_YN \r\n" " FROM TB_VMS_TRFC_INFR_DSPL_SCH A, \r\n" " TB_VMS_FORM B \r\n" " WHERE 1=1 \r\n" " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"; #endif try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLOpen(pADO); TVmsCtlr *pObj; int nSchType, nFormType; for( ; !pADO->Eof; pADO->Next()) { String sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; pObj = FLists.Find(sVmsNmbr); if (!pObj) continue; String sSchType = pADO->FieldByName("VMS_SCH_TYPE")->AsString.Trim(); if (sSchType == "A") nSchType = enScheduleAuto; else if (sSchType == "F") nSchType = enScheduleFix; else if (sSchType == "B") nSchType = enScheduleBase; else continue; nFormType = pADO->FieldByName("VMS_SCH_FORM_TYPE")->AsInteger; if (nFormType < eSchTp_traffic && nFormType >= eSchTp_max) continue; pObj->FormCnt[nSchType].Total[nFormType]++; //µî·ÏµÇ¾îÀÖ´Â Àüü Æû ¼ýÀÚ if (pADO->FieldByName("USE_YN")->AsString != 'Y') continue; //»ç¿ëÇÏ´Â °ÍÁß¿¡ ÇöÀç½Ã°¢ÀÌ Á¦°ø½Ã°¢¾È¿¡ µé¾îÀִ°ÍÀº Ä«¿îÆ®ÇÏÁö ¾ÊÀ½. String sStrHH = pADO->FieldByName("DSPL_STRT_HH")->AsString; String sEndHH = pADO->FieldByName("DSPL_END_HH")->AsString; String sCurHH = pADO->FieldByName("CURR_HH")->AsString; if (sCurHH >= sStrHH && sCurHH <= sEndHH) { pObj->FormCnt[nSchType].Use[nFormType]++; //»ç¿ë°¡´É Æû ¼ýÀÚ } } } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::LoadVmsFormUsage", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::LoadVmsFormUsage", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool TVmsCtlrManager::InsVmsControlHs(String ACtlDt, String AVmsNmbr, String ACtlType, String ACtlVal, String ACtlRes, String AUserId, TADOConnection *ADbConn/*=NULL*/) { String sQry; TADOQuery *pADO = NULL; sQry = "INSERT INTO TB_VMS_CTRL_HS( \r\n" " CTRL_DT, \r\n" " VMS_CTLR_NMBR, \r\n" " CTRL_TYPE, \r\n" " CTRL_VAL, \r\n" " CTRL_RESULT, \r\n" " USER_ID \r\n" " ) \r\n" " VALUES( \r\n" " :p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05, \r\n" " :p06 \r\n" " ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = ACtlDt; pADO->Parameters->ParamByName("p02")->Value = AVmsNmbr; pADO->Parameters->ParamByName("p03")->Value = ACtlType; pADO->Parameters->ParamByName("p04")->Value = ACtlVal; pADO->Parameters->ParamByName("p05")->Value = ACtlRes; pADO->Parameters->ParamByName("p06")->Value = AUserId; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORMSG("TVmsCtlrManager::InsVmsControlHs", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVmsCtlrManager::InsVmsControlHs", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- int VmsGetFormTypeIdx(int AFormType) { int nFormTypeIdx = -1; switch(AFormType) { case eFormTp_traf_1: // ¼ÒÅë»óȲ(1´Ü) case eFormTp_traf_2: // ¼ÒÅë»óȲ(2´Ü) case eFormTp_traf_3: // ¼ÒÅë»óȲ(3´Ü) case eFormTp_traf_4: // ¼ÒÅë»óȲ(4´Ü) case eFormtp_figure: // ¼ÒÅë»óȲ(µµÇü½Ä¹è°æ¼ÒÅëÁ¤º¸) nFormTypeIdx = eSchTp_traffic; break; case eFormTp_congest: // Á¤Ã¼¼ÒÅë»óȲ nFormTypeIdx = eSchTp_congest; break; case eFormTp_incident: // µ¹¹ß¹®¾È nFormTypeIdx = eSchTp_incident; break; case eFormTp_gongsa: // °ø»ç/Çà»ç¹®¾È nFormTypeIdx = eSchTp_gongsa; break; case eFormTp_hongbo: // È«º¸¹®¾È nFormTypeIdx = eSchTp_hongbo; break; case eFormTp_deture: // ¿ìȸµµ·Î nFormTypeIdx = eSchTp_deture; break; case eFormTp_safe: // Àç³­¾ÈÀü nFormTypeIdx = eSchTp_safe; break; case eFormTp_video: // µ¿¿µ»ó nFormTypeIdx = eSchTp_video; break; case eFormTp_stream: // ½ºÆ®¸®¹Ö¿µ»ó nFormTypeIdx = eSchTp_stream; break; case eFormTp_atmp: // ´ë±âȯ°æ nFormTypeIdx = eSchTp_atmp; break; case eFormTp_park: // ÁÖÂ÷Á¤º¸ nFormTypeIdx = eSchTp_park; break; default: break; } return nFormTypeIdx; }