//--------------------------------------------------------------------------- #pragma hdrstop #include "CDSManagerF.h" #include "CDSCtlrF.h" #include "CDSIfscF.h" #include "CDSFormF.h" #include "CDSImageF.h" #include "CDSAtmpF.h" #include "CDSSafeF.h" #include "CDSParkF.h" #include "VmsUtilsF.h" #include "VMSCommLibF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- TCDSManager *CDSManager = NULL; //--------------------------------------------------------------------------- TCDSManager::TCDSManager() { FIsStaticCycle = false; } //--------------------------------------------------------------------------- TCDSManager::~TCDSManager() { } //--------------------------------------------------------------------------- int TCDSManager::ClearVmsProvideMode() { int nSelCnt= 0; DDBSTART; FFormDsplDt = Now().FormatString("yyyymmddhhnnss"); CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (pObj->Server.useFlag != use_enable) continue; if (!pObj->FProvide) continue; pObj->CTRLMODE->MaxDisplayForm = 0;//pObj->VMS_MAX_PHSE_NUM; //0 pObj->CTRLMODE->Enable = object_disable; pObj->CTRLMODE->SvcDate = FFormDsplDt; pObj->CTRLMODE->SaveFlag = true; pObj->CTRLMODE->pTimer = Now(); pObj->CTRLMODE->Result = false; pObj->InitSchedule(); //½ºÄÉÁÙÁ¤º¸ pObj->InitIncident(); //µ¹¹ßÁ¤º¸ pObj->InitEvent(); //À̺¥Æ®(°ø»ç/Çà»ç)Á¤º¸ pObj->InitSafe(); //Àç³­¾ÈÀüÁ¤º¸ pObj->FExistCngsForm = false; //Á¤Ã¼ÆûÀÌ ¾ø´Â°ÍÀ¸·Î ÃʱâÈ­ pObj->pForms->Clear(); nSelCnt++; } IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::LoadVmsEventOccrInf(TADOConnection *ADbConn) { AnsiString sQry; int nSelCnt = 0; TADOQuery *pADO = NULL; DDBSTART; sQry = "SELECT V.VMS_CTLR_NMBR, V.LINK_ID, V.IFSC_ID, V.VMS_IFSC_ID, \r\n" " V.VMS_IFSC_NM, V.DSPL_STRT_NODE_NM, V.DSPL_END_NODE_NM, \r\n" " V.DETR_ID, V.DSPL_PRRT, I.INCD_OCRR_ID, I.STRT_LCTN_NM, \r\n" " V.ROAD_NM, V.SPOT_NM, \r\n" " I.END_LCTN_NM, I.OCRR_LCTN_NM, I.INCD_TITL, \r\n" " (SELECT CMMN_CD_KOR_NM \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CD = I.VMS_INCD_TYPE_CD \r\n" " AND CMMN_CLSF_CD = 'VIT') AS VMS_INCD_TYPE_NM, \r\n" " I.VMS_INCD_TYPE_CD, \r\n" " CASE WHEN I.VMS_INCD_TYPE_CD = 'VIT1' THEN \r\n" " (SELECT CMMN_CD_KOR_NM \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CD = I.VMS_INCD_DETL_TYPE_CD \r\n" " AND CMMN_CLSF_CD = 'IDT') \r\n" " ELSE \r\n" " (SELECT CMMN_CD_KOR_NM \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CD = I.VMS_INCD_DETL_TYPE_CD \r\n" " AND CMMN_CLSF_CD = 'EDT') \r\n" " END AS VMS_INCD_DETL_NM, \r\n" " I.VMS_INCD_DETL_TYPE_CD, \r\n" " (SELECT CMMN_CD_KOR_NM \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CD = I.CMTR_GRAD_CD \r\n" " AND CMMN_CLSF_CD = 'LTC') AS CMTR_GRAD_NM, \r\n" #if 0 " I.VMS_INCD_RSTR_TYPE_CD, \r\n" " (SELECT CMMN_CD_KOR_NM \r\n" " FROM TB_CMMN_CD \r\n" " WHERE CMMN_CD = I.VMS_INCD_RSTR_TYPE_CD \r\n" " AND CMMN_CLSF_CD = 'VRT') AS VMS_INCD_RSTR_TYPE_NM, \r\n" #endif " I.CMTR_GRAD_CD, \r\n" " I.INCD_CLSR_LANE, \r\n" " I.INCD_STRT_DT, \r\n" " I.INCD_END_PRAR_DT \r\n" " FROM (SELECT D.VMS_CTLR_NMBR, A.LINK_ID, \r\n" " A.IFSC_ID, B.VMS_IFSC_ID, \r\n" " C.VMS_IFSC_NM, \r\n" " C.DSPL_STRT_NODE_NM, \r\n" " C.DSPL_END_NODE_NM, \r\n" " NVL(C.DETR_ID, 0) AS DETR_ID, \r\n" " C.ROAD_NM, C.SPOT_NM, \r\n" " D.DSPL_PRRT \r\n" " FROM TB_IFSC_LINK_RLTN A, \r\n" // " FROM TB_IFSC_RLTN_LINK A, \r\n" // " TB_VMS_IFSC_RLTN_IFSC B, \r\n" " TB_VMS_LINK_IFSC B, \r\n" " TB_VMS_IFSC C, \r\n" " TB_VMS_IFSC_RLTN D \r\n" " WHERE A.IFSC_ID = B.IFSC_ID \r\n" " AND B.VMS_IFSC_ID = C.VMS_IFSC_ID \r\n" " AND C.VMS_IFSC_ID = D.VMS_IFSC_ID ) V, \r\n" " (SELECT A.*, B.INCD_TITL \r\n" " FROM TB_INCD_OCRR_VMS A, \r\n" " TB_INCD_OCRR B \r\n" " WHERE A.INCD_PRGR_STEP_CD = 'ISS2' \r\n" " AND A.VMS_DSPL_YN = 'Y' \r\n" " AND A.INCD_OCRR_ID = B.INCD_OCRR_ID \r\n" " AND A.INCD_END_PRAR_DT > TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n" " AND A.VMS_INCD_TYPE_CD IN ('VIT1', 'VIT2') ) I \r\n" " WHERE V.LINK_ID = I.LINK_ID \r\n" " ORDER BY V.VMS_CTLR_NMBR \r\n"; try { pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; try { SQLText(pADO, sQry, false); SQLOpen(pADO); int nIdx; for( ; !pADO->Eof; pADO->Next()) { AnsiString sVmsNmbr = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(sVmsNmbr); if (!pObj) continue; if (!pObj->FProvide) continue; AnsiString VMS_INCD_TYPE_CD = pADO->FieldByName("VMS_INCD_TYPE_CD")->AsString; AnsiString INCD_OCRR_ID = pADO->FieldByName("INCD_OCRR_ID")->AsString; VMS_EVENT_INFO *pEvt; if (VMS_INCD_TYPE_CD == "VIT1") { //»ç°í if (pObj->INCIDENT->Count >= VMS_MAX_EVENT) { MERROR("VMS Incident Over: %s, %d", pObj->CTLR_NMBR.c_str(), pObj->INCIDENT->Count); continue; } bool bDup = false; for (int ii = 0; ii < pObj->INCIDENT->Count; ii++) { if (INCD_OCRR_ID == pObj->INCIDENT->Unit[ii].INCD_OCRR_ID) { bDup = true; break; } } if (bDup) { MERROR("VMS Incident dup: %s, %s", pObj->CTLR_NMBR.c_str(), INCD_OCRR_ID.c_str()); continue; } nIdx = pObj->INCIDENT->Count; pEvt = pObj->INCIDENT; } else { //°ø»ç/Çà»ç if (pObj->EVENT->Count >= VMS_MAX_EVENT) { MERROR("VMS Event Over: %s, %d", pObj->CTLR_NMBR.c_str(), pObj->EVENT->Count); continue; } bool bDup = false; for (int ii = 0; ii < pObj->EVENT->Count; ii++) { if (INCD_OCRR_ID == pObj->EVENT->Unit[ii].INCD_OCRR_ID) { bDup = true; break; } } if (bDup) { MERROR("VMS Event dup: %s, %s", pObj->CTLR_NMBR.c_str(), INCD_OCRR_ID.c_str()); continue; } nIdx = pObj->EVENT->Count; pEvt = pObj->EVENT; } pEvt->Unit[nIdx].LINK_ID = pADO->FieldByName("LINK_ID")->AsString; pEvt->Unit[nIdx].IFSC_ID = pADO->FieldByName("IFSC_ID")->AsString; pEvt->Unit[nIdx].VMS_IFSC_ID = pADO->FieldByName("VMS_IFSC_ID")->AsString; pEvt->Unit[nIdx].VMS_IFSC_NM = pADO->FieldByName("VMS_IFSC_NM")->AsString; pEvt->Unit[nIdx].DSPL_STRT_NODE_NM = pADO->FieldByName("DSPL_STRT_NODE_NM")->AsString; pEvt->Unit[nIdx].DSPL_END_NODE_NM = pADO->FieldByName("DSPL_END_NODE_NM")->AsString; pEvt->Unit[nIdx].DETR_ID = pADO->FieldByName("DETR_ID")->AsString.Trim(); pEvt->Unit[nIdx].DSPL_PRRT = pADO->FieldByName("DSPL_PRRT")->AsString; pEvt->Unit[nIdx].INCD_OCRR_ID = INCD_OCRR_ID; pEvt->Unit[nIdx].STRT_LCTN_NM = pADO->FieldByName("STRT_LCTN_NM")->AsString; pEvt->Unit[nIdx].END_LCTN_NM = pADO->FieldByName("END_LCTN_NM")->AsString; if (pEvt->Unit[nIdx].STRT_LCTN_NM == "") { pEvt->Unit[nIdx].STRT_LCTN_NM = pEvt->Unit[nIdx].DSPL_STRT_NODE_NM; } if (pEvt->Unit[nIdx].END_LCTN_NM == "") { pEvt->Unit[nIdx].END_LCTN_NM = pEvt->Unit[nIdx].DSPL_END_NODE_NM; } pEvt->Unit[nIdx].OCRR_LCTN_NM = pADO->FieldByName("OCRR_LCTN_NM")->AsString; pEvt->Unit[nIdx].VMS_INCD_TYPE_NM = pADO->FieldByName("VMS_INCD_TYPE_NM")->AsString; pEvt->Unit[nIdx].VMS_INCD_TYPE_CD = pADO->FieldByName("VMS_INCD_TYPE_CD")->AsString; pEvt->Unit[nIdx].VMS_INCD_DETL_NM = pADO->FieldByName("VMS_INCD_DETL_NM")->AsString; pEvt->Unit[nIdx].VMS_INCD_DETL_TYPE_CD = pADO->FieldByName("VMS_INCD_DETL_TYPE_CD")->AsString; pEvt->Unit[nIdx].CMTR_GRAD_NM = pADO->FieldByName("CMTR_GRAD_NM")->AsString; pEvt->Unit[nIdx].CMTR_GRAD_CD = pADO->FieldByName("CMTR_GRAD_CD")->AsString; pEvt->Unit[nIdx].INCD_CLSR_LANE = pADO->FieldByName("INCD_CLSR_LANE")->AsString; pEvt->Unit[nIdx].INCD_STRT_DT = pADO->FieldByName("INCD_STRT_DT")->AsString; pEvt->Unit[nIdx].INCD_END_PRAR_DT = pADO->FieldByName("INCD_END_PRAR_DT")->AsString; pEvt->Unit[nIdx].ROAD_NM = pADO->FieldByName("ROAD_NM")->AsString; pEvt->Unit[nIdx].SPOT_NM = pADO->FieldByName("SPOT_NM")->AsString; #if 0 pEvt->Unit[nIdx].VMS_INCD_RSTR_TYPE_CD = pADO->FieldByName("VMS_INCD_RSTR_TYPE_CD")->AsString; pEvt->Unit[nIdx].VMS_INCD_RSTR_TYPE_NM = pADO->FieldByName("VMS_INCD_RSTR_TYPE_NM")->AsString; #else pEvt->Unit[nIdx].VMS_INCD_RSTR_TYPE_CD = "X"; pEvt->Unit[nIdx].VMS_INCD_RSTR_TYPE_NM = "ÁÖÀÇ¿ä¸Á"; #endif pEvt->Unit[nIdx].INCD_TITL = pADO->FieldByName("INCD_TITL")->AsString; pEvt->Count++; nSelCnt++; } } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } if (0) { CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (!pObj->Used) continue; MDEBUG("VMS Event(I/E): %s, %d/%d EA", pObj->CTLR_NMBR.c_str(), pObj->INCIDENT->Count, pObj->EVENT->Count); } } IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::LoadVmsScheduleInfo(TADOConnection *ADbConn) { AnsiString sQry; int nSelCnt = 0; TADOQuery *pADO = NULL; DDBSTART; sQry = "SELECT * \r\n" " FROM ( \r\n" " SELECT B.*, \r\n" " SUBSTR(DECODE(TO_CHAR(SYSDATE, 'D'), '1', B.SCH_WEEK1, \r\n" " '2', B.SCH_WEEK2, \r\n" " '3', B.SCH_WEEK3, \r\n" " '4', B.SCH_WEEK4, \r\n" " '5', B.SCH_WEEK5, \r\n" " '6', B.SCH_WEEK6, \r\n" " B.SCH_WEEK7), \r\n" " TO_NUMBER(TO_CHAR(SYSDATE, 'HH24'))+1, 1) AS SCH_YN \r\n" " FROM TB_VMS_CTLR A, \r\n" " TB_VMS_DSPL_SCH B, \r\n" " TB_VMS_FORM C \r\n" " WHERE A.DEL_YN = 'N' \r\n" " AND B.USE_YN = 'Y' \r\n" " AND C.VALID_YN = 'Y' \r\n" " AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND A.OPER_MODE = B.VMS_SCH_TYPE \r\n" " AND B.VMS_FORM_ID = C.VMS_FORM_ID \r\n" " AND TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') BETWEEN \r\n" " B.DSPL_STRT_HH AND B.DSPL_END_HH \r\n" " ) \r\n" " WHERE SCH_YN = '1' \r\n" " ORDER BY VMS_CTLR_NMBR ASC, PHASE ASC \r\n"; TCDSForm *pCDSForm; try { pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; try { SQLText(pADO, sQry, false); SQLOpen(pADO); int nIdx; AnsiString VMS_SCH_TYPE; //VARCHAR2(5) N VMS ½ºÄÉÁÙ À¯Çü(A:ÀÚµ¿,F:°íÁ¤,B:±âº») int VMS_SCH_FORM_TYPE; //NUMBER(3) N VMS Æû ½ºÄÉÁì À¯Çü(0:±³Åë,1:µ¹¹ß,2:°ø»çÇà»ç,3:È«º¸,4:¿ìȸ,5:Á¤Ã¼,6:¾ÈÀü,7:µ¿¿µ»ó,8:½ºÆ®¸®¹Ö¿µ»ó) int PHASE; //NUMBER(2) N PHASE AnsiString VMS_FORM_ID; //NUMBER(5) Y VMS FORM ID int DSPL_HH; //NUMBER(3) Y 0 Ç¥Ã⠽ð£ AnsiString DSPL_STRT_HH; //VARCHAR2(14) N Ç¥Ãâ½ÃÀ۽ð£ AnsiString DSPL_END_HH; //VARCHAR2(14) N Ç¥ÃâÁ¾·á½Ã°£ AnsiString SYMB_LIB_NMBR; //NUMBER(4) Y 0 µ¿¿µ»óÀÎ °æ¿ì µ¿¿µ»ó ÆÄÀÏ ½É¹ú ¾ÆÀ̵ð AnsiString STRM_ADDR; //VARCHAR2(60) Y ½ºÆ®¸®¹ÖÀΰæ¿ì ½ºÆ®¸®¹Ö ÁÖ¼Ò bool bBottomTraffic; TCDSIfsc *pCDSIfsc; int nBottomTrafficCnt; int nFigureTrafficCnt; //////////////////////// 20200515 Ãß°¡ÇÔ int nFigureDisplayTm; //////////////////////// 20200515 Ãß°¡ÇÔ String FIGURE_VMS_IFSC_ID; //////////////////////// 20200515 Ãß°¡ÇÔ bool DSPL_CNGS_YN; AnsiString FRST_VMS_IFSC_ID; //NUMBER(10) Y 1´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString SECD_VMS_IFSC_ID; //NUMBER(10) Y 2´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString THIR_VMS_IFSC_ID; //NUMBER(10) Y 3´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString FOUR_VMS_IFSC_ID; //NUMBER(10) Y 4´Ü VMS Á¤º¸Á¦°ø±¸°£ ID AnsiString FRST_IMG_IFSC_ID; //NUMBER(10) Y 1´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID AnsiString SECD_IMG_IFSC_ID; //NUMBER(10) Y 2´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID AnsiString THIR_IMG_IFSC_ID; //NUMBER(10) Y 3´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID AnsiString FOUR_IMG_IFSC_ID; //NUMBER(10) Y 4´Ü À̹ÌÁö Á¤º¸Á¦°ø±¸°£ ID for( ; !pADO->Eof; pADO->Next()) { AnsiString VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; //VMS ½ºÄÉÁÙ À¯Çü(A:ÀÚµ¿,F:°íÁ¤,B:±âº») VMS_SCH_TYPE = pADO->FieldByName("VMS_SCH_TYPE")->AsString; //VMS Æû ½ºÄÉÁì À¯Çü(0:±³Åë, 1:µ¹¹ß,2:°ø»çÇà»ç, 3:È«º¸, 4:¿ìȸ, 5:Á¤Ã¼, 6:¾ÈÀü, 7:µ¿¿µ»ó, 8:½ºÆ®¸®¹Ö¿µ»ó) VMS_SCH_FORM_TYPE = pADO->FieldByName("VMS_SCH_FORM_TYPE")->AsInteger; PHASE = pADO->FieldByName("PHASE")->AsInteger; VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString.Trim(); DSPL_HH = pADO->FieldByName("DSPL_HH")->AsInteger; DSPL_STRT_HH = pADO->FieldByName("DSPL_STRT_HH")->AsString.Trim(); DSPL_END_HH = pADO->FieldByName("DSPL_END_HH")->AsString.Trim(); SYMB_LIB_NMBR = pADO->FieldByName("SYMBLIB_NMBR")->AsString.Trim(); STRM_ADDR = pADO->FieldByName("STRM_ADDR")->AsString.Trim(); DSPL_CNGS_YN = pADO->FieldByName("DSPL_CNGS_YN")->AsString.Trim() == "Y" ? true : false; FRST_VMS_IFSC_ID = pADO->FieldByName("FRST_VMS_IFSC_ID")->AsString.Trim(); SECD_VMS_IFSC_ID = pADO->FieldByName("SECD_VMS_IFSC_ID")->AsString.Trim(); THIR_VMS_IFSC_ID = pADO->FieldByName("THIR_VMS_IFSC_ID")->AsString.Trim(); FOUR_VMS_IFSC_ID = pADO->FieldByName("FOUR_VMS_IFSC_ID")->AsString.Trim(); FRST_IMG_IFSC_ID = FRST_VMS_IFSC_ID;//pADO->FieldByName("FRST_IMG_IFSC_ID")->AsString; SECD_IMG_IFSC_ID = SECD_VMS_IFSC_ID;//pADO->FieldByName("SECD_IMG_IFSC_ID")->AsString; THIR_IMG_IFSC_ID = THIR_VMS_IFSC_ID;//pADO->FieldByName("THIR_IMG_IFSC_ID")->AsString; FOUR_IMG_IFSC_ID = FOUR_VMS_IFSC_ID;//pADO->FieldByName("FOUR_IMG_IFSC_ID")->AsString; if (VMS_SCH_FORM_TYPE < eSchTp_traffic || VMS_SCH_FORM_TYPE >= eSchTp_max) { MERROR("Unknown Form Type: VmsNmbr(%s), FormId(%s), FormScheduleType(%d)", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str(), VMS_SCH_FORM_TYPE); continue; } TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(VMS_CTLR_NMBR); if (!pObj) { MERROR("Not Found VMS: VmsNmbr(%s)", VMS_CTLR_NMBR.c_str()); continue; } if (!pObj->FProvide) { //Á¦°øÇÏÁö ¾Ê¾Æµµ µÅ´Â VMS - mode change·Î È£ÃâÇÏ´Â °æ¿ìÀÓ. continue; } pCDSForm = CDSFormManager->FLists.Find(VMS_FORM_ID); if (!pCDSForm) { MERROR("VMS Schedule Not Found Form: VmsNmbr(%s)-[%s]", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str()); continue; } if (pObj->SCHEDULE->Count >= VMS_MAX_SCHEDULE) { MERROR("VMS Schedule Count Over: %s, %d", VMS_CTLR_NMBR.c_str(), pObj->SCHEDULE->Count); continue; } //TODO: Á¶È¸Á¤·ÄÀº ±âº»,°íÁ¤,ÀÚµ¿(µ¹¹ß,°ø»ç,Çà»ç,¿ìȸ,±³Åë,Á¤Ã¼Æû) ¼øÀ¸·Î Á¶È¸µÈ´Ù. // µû¶ó¼­ °¢ Æû¿¡ ´ëÇÑ󸮸¦ ¼öÇàÇÏ¸é µÈ´Ù. //==> ½Å±ÔÀÛ¾÷¿¡¼­ Æû Ç¥Ãâ ¿ì¼±¼øÀ§Àû¿ëÇÔ ==> Á¶È¸Á¤·ÄÀÌ ¿µÇâÀÌ ÀÖ´ÂÁö È®ÀÎÇØ¾ßÇÔ. //eFormTp_traf_1 = 11, // ¼ÒÅë»óȲ(1´Ü) //eFormTp_traf_2 = 12, // ¼ÒÅë»óȲ(2´Ü) //eFormTp_traf_3 = 13, // ¼ÒÅë»óȲ(3´Ü) //eFormTp_traf_4 = 14, // ¼ÒÅë»óȲ(4´Ü) if (VMS_SCH_FORM_TYPE == eSchTp_traffic && pCDSForm->VMS_FORM_TYPE_CD == eFormTp_traf_1) { //±³ÅëÁ¤º¸½ºÄÉÁìÀÌ°í ÆûÀÇ À¯ÇüÀÌ ¼ÒÅëÁ¤º¸(1´Ü) Àΰæ¿ì.... //ÇØ´ç ÆûÀÌ µ¹¹ßÀ̳ª À̺¥Æ®°¡ µî·ÏµÇ¾î ÀÖ´Ù¸é //ÆûÀ» »ý¼ºÇÏÁö ¾Ê´Â´Ù. AnsiString FRST_VMS_IFSC_ID = pADO->FieldByName("FRST_VMS_IFSC_ID")->AsString; if (FRST_VMS_IFSC_ID != "") { for (int ii = 0; ii < pObj->SCHEDULE->Count && ii < VMS_MAX_SCHEDULE; ii++) { if (pObj->SCHEDULE->Unit[ii].VMS_SCH_FORM_TYPE == eSchTp_incident || //µ¹¹ß pObj->SCHEDULE->Unit[ii].VMS_SCH_FORM_TYPE == eSchTp_gongsa || //°ø»ç/Çà»ç pObj->SCHEDULE->Unit[ii].VMS_SCH_FORM_TYPE == eSchTp_deture ) //¿ìȸ { if (pObj->SCHEDULE->Unit[ii].EVENT) { if (FRST_VMS_IFSC_ID == pObj->SCHEDULE->Unit[ii].EVENT->VMS_IFSC_ID) { //ÆûÀ» »ý¼ºÇÏÁö ¾Ê´Â´Ù. continue; } } } } } } bBottomTraffic = false; nFigureDisplayTm = DSPL_HH; FIGURE_VMS_IFSC_ID = ""; nFigureTrafficCnt = 0; //Àüü Ç¥ÃâÇÒ ÇÏ´Ü ¼ÒÅëÁ¤º¸ °¹¼ö switch(VMS_SCH_FORM_TYPE) { case eSchTp_traffic: //±³ÅëÁ¤º¸ //µµÇü½Ä ¼ÒÅëÁ¤º¸ ÀÎ °æ¿ì ÇØ´ç µµÇüÀÇ ¼ÒÅëÁ¤º¸°¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎ if (pCDSForm->VMS_FORM_TYPE_CD == eFormtp_figure) { bool bTraffic = false; TCDSImage *pBakTrfImg = CDSImageManager->FLists.Find(pCDSForm->TrfBakImgId); if (pBakTrfImg) { FOR_STL(TCDSImageCell*, pCell, pBakTrfImg->FLists) { TCDSIfsc *pTmpIfsc1 = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (pTmpIfsc1) { if (pTmpIfsc1->CMTR_GRAD_CD != "0") { FIGURE_VMS_IFSC_ID = pCell->VMS_IFSC_ID; // ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸°¡ ¾øÀ» °æ¿ì ù¹øÂ° Á¦°ø±¸°£À» Ç¥ÃâÇϱâ À§ÇÔ. 20200515 Ãß°¡ÇÔ bTraffic = true; //¼ÒÅëÁ¤º¸°¡ Çϳª¶óµµ Á¸ÀçÇÔ break; } } } } /////////////////////////////////////////////////////// TODO 20200528 ==> ¹Î°£Á¤º¸ ¿¬°è¿¡¼­ Á¤º¸°¡ ¼öÁýµÇÁö ¾Ê´Â °æ¿ì °¡ Á¾Á¾ À־ /////////////////////////////////////////////////////// µµÇü½Ä ¼ÒÅëÁ¤º¸¸¦ ä¿ìÁö ¸øÇÑ´Ù. /////////////////////////////////////////////////////// °áÃø±¸°£ÀÌ 3±¸°£ ÀÌ»óÀÌ¸é µµÇü½Ä ¼ÒÅëÁ¤º¸ Ç¥ÃâÇÏÁö ¸»ÀÚ if (bTraffic) { int nMissingCnt = 0; TCDSIfsc *pTmpIfsc1; FOR_STL(TCDSImageCell*, pCell, pBakTrfImg->FLists) { if (pCell->IsDup) continue; //Áߺ¹ VMS_IFSC_ID ÀÎ °æ¿ì skip... pTmpIfsc1 = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (pTmpIfsc1) { if (pTmpIfsc1->CMTR_GRAD_CD == "0") { nMissingCnt++; } } } if (nMissingCnt >= 3) { bTraffic == false; MERROR("VMS Figure IFSC Traffic Missing count over: VmsNmbr(%s)-[%s], %d EA Missing", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str(), nMissingCnt); } } if (bTraffic == false) { //µµÇü½Ä ±¸°£ÀÇ ¸ðµç ¼ÒÅëÁ¤º¸°¡ »ý¼ºµÇÁö ¾Ê¾ÒÀ½===> °¡°ø¼­¹ö°¡ Á×¾ú°Å³ª ¼öÁýµÇÁö ¾Ê¾ÒÀ½. //Ç¥ÃâÇÒ ³»¿ëÀÌ ¾øÀ½==> skip ÇØ¾ßÇÔ MERROR("VMS Figure IFSC Traffic Failed: VmsNmbr(%s)-[%s]", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str()); continue; } } //µµÇü½Ä ¼ÒÅëÁ¤º¸ ÆûÀ϶§ ÇÏ´Ü¿¡ Á¤º¸Á¦°ø±¸°£ ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇØ¾ß ÇÏ´Â °æ¿ì if (pCDSForm->VMS_FORM_TYPE_CD == eFormtp_figure && pCDSForm->TrfIfsc) { //µµÇü½Ä VMSÀÎ °æ¿ì ÇÏ´Ü¿¡ ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇÏ´Â °æ¿ì ´ÙÁ߯ûÀÌ »ý¼ºµÊ //Á¦°ø±¸°£¼ÒÅëÁ¤º¸°¡ Á¤Ã¼, ÁöüÀÎ °æ¿ì¸¸ ÇÏ´Ü ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇÔ //µµÇü½Ä ¹è°æ¼¿¿¡ µî·ÏµÈ ±¸°£¿¡ ´ëÇØ¼­ Ç¥ÃâÇϵµ·ÏÇÔ TCDSImage *pBakTrfImg = CDSImageManager->FLists.Find(pCDSForm->TrfBakImgId); if (pBakTrfImg) { TCDSIfsc *pTmpIfsc1; //Á¤Ã¼±¸°£ °¹¼ö È®ÀÎ FOR_STL(TCDSImageCell*, pCell, pBakTrfImg->FLists) { if (pCell->IsDup) continue; //Áߺ¹ VMS_IFSC_ID ÀÎ °æ¿ì skip... pTmpIfsc1 = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (pTmpIfsc1) { if (pTmpIfsc1->CMTR_GRAD_CD == "3") { bBottomTraffic = true; //µµÇü½Ä¹è°æ¼ÒÅëÁ¤º¸ÀÇ ¼¿³»ÀÇ ±¸°£Á¤º¸ ¼ÒÅëÁ¤º¸°¡ Çϳª¶óµµ ÀÖÀ¸¸é //µµÇü½Ä ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇÔ nFigureTrafficCnt++; //break; } } } //Áöü(¼­Çà)±¸°£ °¹¼ö È®ÀÎ FOR_STL(TCDSImageCell*, pCell, pBakTrfImg->FLists) { if (pCell->IsDup) continue; //Áߺ¹ VMS_IFSC_ID ÀÎ °æ¿ì skip... pTmpIfsc1 = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (pTmpIfsc1) { if (pTmpIfsc1->CMTR_GRAD_CD == "2") { bBottomTraffic = true; //µµÇü½Ä¹è°æ¼ÒÅëÁ¤º¸ÀÇ ¼¿³»ÀÇ ±¸°£Á¤º¸ ¼ÒÅëÁ¤º¸°¡ Çϳª¶óµµ ÀÖÀ¸¸é //µµÇü½Ä ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇÔ nFigureTrafficCnt++; //break; } } } //////////////////////// 20200515 Ãß°¡ÇÔ(S) if (FIGURE_VMS_IFSC_ID != "" && bBottomTraffic == false) { //¼ÒÅëÁ¤º¸´Â Á¸ÀçÇÏÁö¸¸ Áöü, Á¤Ã¼°¡ ¾ø´Â °æ¿ì ÇÏ´Ü ¼ÒÅëÁ¤º¸¸¦ Ç¥Ãâ¸øÇÏ°Ô µÈ´Ù. //¸¸ÀÏ ÇÏ´Ü °íÁ¤¹®ÀÚ°¡ Á¸ÀçÇÏ´Â °æ¿ì ÇÏ´Ü °íÁ¤¹®ÀÚ¸¦ Ç¥ÃâÇÏ¸é µÇÁö¸¸ //°íÁ¤¹®ÀÚ°¡ Á¸ÀçÇϱ⠾ÊÀ¸¸é ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸°¡ ¾øÀ¸¹Ç·Î ù¹øÂ° ±¸°£ÀÇ Á¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ÇÑ´Ù. if (pCDSForm->TrfFixed == false) { bBottomTraffic = true; //ù¹øÂ° ¼ÒÅëÁ¤º¸°¡ Ç¥ÃâµÇµµ·Ï ÇÔ nFigureTrafficCnt++; } } //////////////////////// 20200515 Ãß°¡ÇÔ(E) } } //µµÇü½Ä ¼ÒÅëÁ¤º¸ ÆûÀ϶§ ÇÏ´Ü¿¡ VMS Ãà ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇØ¾ß ÇÏ´Â °æ¿ì if (pCDSForm->VMS_FORM_TYPE_CD == eFormtp_figure && pCDSForm->TrfAxis) { //µµÇü½Ä VMSÀÎ °æ¿ì ÇÏ´Ü¿¡ ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇÏ´Â °æ¿ì ´ÙÁ߯ûÀÌ »ý¼ºµÊ //Ãà ¼ÒÅëÁ¤º¸ÀÎ °æ¿ì ¸ðµç Ãà¿¡ ´ëÇØ ¼ÒÅëÁ¤º¸¸¦ Ç¥Ãâ, ÃÖ´ë Ç¥Ãâ¼³Á¤°ªÀÌ ¼³Á¤µÈ °æ¿ì ¼³Á¤°ª¸¸Å­¸¸ Ç¥ÃâµÇ°Ô ¼öÁ¤(20200515) FOR_STL(TVmsIfsc*, pIfsc, pObj->FIfscLists) { if (!pIfsc->IsUsed) continue; pCDSIfsc = CDSIfscManager->FLists.Find(pIfsc->VMS_IFSC_ID); if (!pCDSIfsc) continue; if (pCDSIfsc->AXIS_YN != "Y") continue; if (pCDSIfsc->CMTR_GRAD_CD != "0") { if (FIGURE_VMS_IFSC_ID == "") { FIGURE_VMS_IFSC_ID = pIfsc->VMS_IFSC_ID; // ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸°¡ ¾øÀ» °æ¿ì ù¹øÂ° Á¦°ø±¸°£À» Ç¥ÃâÇϱâ À§ÇÔ. 20200515 Ãß°¡ÇÔ } bBottomTraffic = true; nFigureTrafficCnt++; //break; } } //////////////////////// 20200515 Ãß°¡ÇÔ(S) if (FIGURE_VMS_IFSC_ID != "" && bBottomTraffic == false) { //¼ÒÅëÁ¤º¸´Â Á¸ÀçÇÏÁö¸¸ Áöü, Á¤Ã¼°¡ ¾ø´Â °æ¿ì ÇÏ´Ü ¼ÒÅëÁ¤º¸¸¦ Ç¥Ãâ¸øÇÏ°Ô µÈ´Ù. //¸¸ÀÏ ÇÏ´Ü °íÁ¤¹®ÀÚ°¡ Á¸ÀçÇÏ´Â °æ¿ì ÇÏ´Ü °íÁ¤¹®ÀÚ¸¦ Ç¥ÃâÇÏ¸é µÇÁö¸¸ //°íÁ¤¹®ÀÚ°¡ Á¸ÀçÇϱ⠾ÊÀ¸¸é ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸°¡ ¾øÀ¸¹Ç·Î ù¹øÂ° ±¸°£ÀÇ Á¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ÇÑ´Ù. if (pCDSForm->TrfFixed == false) { bBottomTraffic = true; //ù¹øÂ° ¼ÒÅëÁ¤º¸°¡ Ç¥ÃâµÇµµ·Ï ÇÔ nFigureTrafficCnt++; } } //////////////////////// 20200515 Ãß°¡ÇÔ(E) } //////////////////////// 20200515 Ãß°¡ÇÔ(S) if (bBottomTraffic && g_AppCfg.BottomTrafficMaxCnt > 0) { //ÇϴܼÒÅëÁ¤º¸¸¦ ÀÏÁ¤°¹¼ö¸¸ Ç¥ÃâÇÏ´Â °æ¿ì Ç¥ÃâÇÒ ¼ÒÅëÁ¤º¸°¡ ¼³Á¤°ªº¸´Ù Å©¸é ¼³Á¤°ªÀ¸·Î ¸ÂÃá´Ù. if (nFigureTrafficCnt > g_AppCfg.BottomTrafficMaxCnt) { nFigureTrafficCnt = g_AppCfg.BottomTrafficMaxCnt; } if (g_AppCfg.BottomTrafficCycle > 0) { int nTm = nFigureDisplayTm / nFigureTrafficCnt; if (nTm < g_AppCfg.BottomTrafficCycle) { //Ç¥ÃâÇÒ ½Ã°£ÀÌ ¼³Á¤°ªº¸´Ù ÀÛÀ¸·Î ¼³Á¤°ªÀ¸·Î Ç¥Ãâ½Ã°¢À» ¼³Á¤ nFigureDisplayTm = g_AppCfg.BottomTrafficCycle; } else { nFigureDisplayTm = nTm; // ¼³Á¤°ªº¸´Ù Å©¸é °è»êµÈ °ªÀ» Ç¥Ãâ½Ã°¢À¸·Î ¼³Á¤ } } } //////////////////////// 20200515 Ãß°¡ÇÔ(E) nBottomTrafficCnt = 0; if (bBottomTraffic) { //µµÇü½Ä ´ÙÁß ¼ÒÅëÁ¤º¸ Ç¥ÃâÀÎ °æ¿ì //ÇϴܼÒÅëÁ¤º¸¸¦ Ç¥ÃâÇϴ°æ¿ì Á¤Ã¼, Áöü ¼øÀ¸·Î Ç¥Ãâ if (pCDSForm->TrfIfsc) { //Á¤º¸Á¦°ø±¸°£ ¼ÒÅëÁ¤º¸ ¼øÈ¯Ç¥Ãâ(Á¤Ã¼) //µµÇü½Ä ¹è°æ¼¿¿¡ µî·ÏµÈ ±¸°£¿¡ ´ëÇØ¼­ Ç¥ÃâÇϵµ·ÏÇÔ TCDSImage *pBakTrfImg1 = CDSImageManager->FLists.Find(pCDSForm->TrfBakImgId); if (pBakTrfImg1) { FOR_STL(TCDSImageCell*, pCell, pBakTrfImg1->FLists) { if (pCell->IsDup) continue; //Áߺ¹ VMS_IFSC_ID ÀÎ °æ¿ì skip... TCDSIfsc *pTmpIfsc1 = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (!pTmpIfsc1) continue; if (pTmpIfsc1->CMTR_GRAD_CD != "3") continue; nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { nIdx = pObj->SCHEDULE->Count; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = pCell->VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = nFigureDisplayTm; //µµÇü½ÄÆûÀÌ ½ÇÁ¦·Î Ç¥ÃâµÉ ½Ã°£ pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pCell->VMS_IFSC_ID; //ÇÏ´Ü Á¦°ø±¸°£ ID pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; nBottomTrafficCnt++; if (g_AppCfg.BottomTrafficMaxCnt > 0 && nBottomTrafficCnt >= g_AppCfg.BottomTrafficMaxCnt) { break; } } } } //Á¤º¸Á¦°ø±¸°£ ¼ÒÅëÁ¤º¸ ¼øÈ¯Ç¥Ãâ(Áöü) //µµÇü½Ä ¹è°æ¼¿¿¡ µî·ÏµÈ ±¸°£¿¡ ´ëÇØ¼­ Ç¥Ãâ TCDSImage *pBakTrfImg2 = CDSImageManager->FLists.Find(pCDSForm->TrfBakImgId); if (pBakTrfImg2) { FOR_STL(TCDSImageCell*, pCell, pBakTrfImg2->FLists) { if (pCell->IsDup) continue; //Áߺ¹ VMS_IFSC_ID ÀÎ °æ¿ì skip... TCDSIfsc *pTmpIfsc1 = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (!pTmpIfsc1) continue; if (pTmpIfsc1->CMTR_GRAD_CD != "2") continue; if (g_AppCfg.BottomTrafficMaxCnt > 0 && nBottomTrafficCnt >= g_AppCfg.BottomTrafficMaxCnt) { break; } nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; nIdx = pObj->SCHEDULE->Count; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = pCell->VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = nFigureDisplayTm; //µµÇü½ÄÆûÀÌ ½ÇÁ¦·Î Ç¥ÃâµÉ ½Ã°£ pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pCell->VMS_IFSC_ID; //ÇÏ´Ü Á¦°ø±¸°£ ID pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; nBottomTrafficCnt++; } } } //////////////////////// 20200515 Ãß°¡ÇÔ(S) if (nBottomTrafficCnt == 0) { //¼ÒÅëÁ¤º¸°¡ ¸ðµÎ ¼ÒÅë¿øÈ°À̰í ÇϴܰíÁ¤¹®ÀÚÇ¥Ãâµµ ¾ø´Â °æ¿ì ù¹øÂ° Á¤º¸Á¦°ø±¸°£ÀÇ ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ÇÑ´Ù. nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; nIdx = pObj->SCHEDULE->Count; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = nFigureDisplayTm; //µµÇü½ÄÆûÀÌ ½ÇÁ¦·Î Ç¥ÃâµÉ ½Ã°£ pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; //ÇÏ´Ü Á¦°ø±¸°£ ID pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; nBottomTrafficCnt++; } } //////////////////////// 20200515 Ãß°¡ÇÔ(E) } //µµÇü½Ä¹è°æ¼ÒÅëÁ¤º¸ ó¸® ¿Ï·á if (pCDSForm->TrfAxis) { //Ãà¼ÒÅëÁ¤º¸ ¼øÈ¯Ç¥Ãâ FOR_STL(TVmsIfsc*, pIfsc, pObj->FIfscLists) { if (!pIfsc->IsUsed) continue; pCDSIfsc = CDSIfscManager->FLists.Find(pIfsc->VMS_IFSC_ID); if (!pCDSIfsc) continue; if (pCDSIfsc->AXIS_YN != "Y") continue; if (pCDSIfsc->CMTR_GRAD_CD == "0") continue; nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { nIdx = pObj->SCHEDULE->Count; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = nFigureDisplayTm; //µµÇü½ÄÆûÀÌ ½ÇÁ¦·Î Ç¥ÃâµÉ ½Ã°£ pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pIfsc->VMS_IFSC_ID; //ÇÏ´Ü Á¦°ø±¸°£ ID pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; nBottomTrafficCnt++; if (g_AppCfg.BottomTrafficMaxCnt > 0 && nBottomTrafficCnt >= g_AppCfg.BottomTrafficMaxCnt) { break; } } } //////////////////////// 20200515 Ãß°¡ÇÔ(S) if (nBottomTrafficCnt == 0) { //¼ÒÅëÁ¤º¸°¡ ¸ðµÎ ¼ÒÅë¿øÈ°À̰í ÇϴܰíÁ¤¹®ÀÚÇ¥Ãâµµ ¾ø´Â °æ¿ì ù¹øÂ° VMSÃàÀÇ ¼ÒÅëÁ¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ÇÑ´Ù. nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { nIdx = pObj->SCHEDULE->Count; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = nFigureDisplayTm; //µµÇü½ÄÆûÀÌ ½ÇÁ¦·Î Ç¥ÃâµÉ ½Ã°£ pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = FIGURE_VMS_IFSC_ID; //ÇÏ´Ü Á¦°ø±¸°£ ID pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; nBottomTrafficCnt++; } } //////////////////////// 20200515 Ãß°¡ÇÔ(E) } } else { //µµÇü½Ä ´ÙÁßÇ¥ÃâÀÌ ¾Æ´Ñ°æ¿ì(ÇϴܼÒÅëÁ¤º¸°¡ ¾ø´Â °æ¿ì) nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; case eSchTp_safe: //Àç³­¾ÈÀü //Àç³­¾ÈÀü ½ºÄÉÁÙÀÎ °æ¿ì ÇØ´ç VMS¿¡ ¹ß»ýÇÑ ¸ðµç Àç³­¾ÈÀü Á¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ½ºÄÉÁÙ Ãß°¡ for (int ii = 0; ii < pObj->SAFE->Count && ii < VMS_MAX_SAFE; ii++) { //if (pForm->MSG_TP == pObj->SAFE->Unit[ii].MSG_TP) //Àç³­¾ÈÀü ¸Þ½ÃÁö Ç¥Ãâ¿äÇüÀÌ °°Àº°æ¿ì¿¡¸¸(2´Ü,3´Ü¸Þ½ÃÁö) { nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Unit[nIdx].SAFE = &pObj->SAFE->Unit[ii]; pObj->SCHEDULE->Count++; nSelCnt++; } } } break; case eSchTp_incident: //µ¹¹ß //µ¹¹ß ½ºÄÉÁÙÀÎ °æ¿ì ÇØ´ç VMS¿¡ ¹ß»ýÇÑ ¸ðµç µ¹¹ß Á¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ½ºÄÉÁÙ Ãß°¡ for (int ii = 0; ii < pObj->INCIDENT->Count; ii++) { nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pObj->INCIDENT->Unit[ii].VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].EVENT = &pObj->INCIDENT->Unit[ii]; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; case eSchTp_gongsa: //°ø»ç/Çà»ç¹®¾È //°ø»ç/Çà»ç ½ºÄÉÁÙÀÎ °æ¿ì ÇØ´ç VMS¿¡ ¹ß»ýÇÑ ¸ðµç µ¹¹ß Á¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ½ºÄÉÁÙ Ãß°¡ for (int ii = 0; ii < pObj->EVENT->Count; ii++) { nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pObj->EVENT->Unit[ii].VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].EVENT = &pObj->EVENT->Unit[ii]; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; case eSchTp_hongbo: //È«º¸ nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } break; case eSchTp_deture: //¿ìȸµµ·Î //µ¹¹ß¹ß»ýÇÑ ±¸°£Áß ¿ìȸµµ·Î ±¸°£ÀÌ Àִ°æ¿ì for (int ii = 0; ii < pObj->INCIDENT->Count; ii++) { if (pObj->INCIDENT->Unit[ii].DETR_ID == "0") continue; nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pObj->INCIDENT->Unit[ii].VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].EVENT = &pObj->INCIDENT->Unit[ii]; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } //°ø»ç/Çà»ç ¹ß»ýÇÑ ±¸°£Áß ¿ìȸµµ·Î ±¸°£ÀÌ Àִ°æ¿ì for (int ii = 0; ii < pObj->EVENT->Count; ii++) { if (pObj->EVENT->Unit[ii].DETR_ID == "0") continue; nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pObj->EVENT->Unit[ii].VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].EVENT = &pObj->EVENT->Unit[ii]; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; case eSchTp_congest: //Á¤Ã¼»óȲ { //VMS¿¡ ¼³Á¤µÈ ¸ðµç Á¤Ã¼±¸°£ÆÇÁ¤±¸°£¿¡ ´ëÇÏ¿© Á¤Ã¼ ÆÇÁ¤ int nCngsCnt = 0; FOR_STL(TVmsIfsc*, pCngs, pObj->FIfscLists) { if (!pCngs->IsUsed) continue; if (!pCngs->CNGS_CNFM_YN) continue; //Á¤Ã¼ÆÇÁ¤ÀÌ ¾Æ´Ñ°æ¿ì if (pCngs->CNGST_CNT < g_AppCfg.CngsContCnt) continue; //¼³Á¤µÇ¾î ÀÖ´Â Á¤Ã¼ÆÇÁ¤ Ƚ¼öº¸´Ù ÀÛÀ¸¸é Á¤Ã¼¾Æ´Ô //Á¤Ã¼ÆÇÁ¤µÈ Á¤Ã¼Æû »ý¼º //½ºÄÉÁì°¹¼ö¸¦ ÃʰúÇÏÁö ¾ÊÀ¸¸é Æû ½ºÄÉÁìÃß°¡ nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE && nCngsCnt <= pObj->FMaxCngsForm) { pObj->FExistCngsForm = true; // TODO: ÇØ´ç Á¦¾î±â¿¡ Á¤Ã¼ÆûÀÌ Á¸ÀçÇÏ´ÂÁö¸¦ Ç÷¡±× ¼³Á¤ // ´Ù¸¥ ÆûµéÀº Á¤Ã¼ÆûÀÌ Á¸ÀçÇÒ¶§ Ç¥ÃâÇÒÁö ¿©ºÎ°¡ °áÁ¤µÊ pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = pCngs->VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].VMS_IFSC_ID = pCngs->VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } } break; case eSchTp_video: //µ¿¿µ»ó case eSchTp_stream: //½ºÆ®¸®¹Ö¿µ»ó nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { //µ¿¿µ»ó¸íĪÀ̳ª ½ºÆ®¸®¹ÖÁÖ¼Ò°¡ ¼³Á¤µÇÁö ¾ÊÀº °ÍÀº Ç¥ÃâÇÏÁö ¾Ê´Â´Ù. if ( (VMS_SCH_FORM_TYPE == eSchTp_video && SYMB_LIB_NMBR != "" && SYMB_LIB_NMBR != "200" && STRM_ADDR != "") || (VMS_SCH_FORM_TYPE == eSchTp_stream && SYMB_LIB_NMBR != "" && SYMB_LIB_NMBR == "300" && STRM_ADDR != "") ) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = FRST_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = SECD_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = THIR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = FOUR_VMS_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = FRST_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = SECD_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = THIR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = FOUR_IMG_IFSC_ID; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; case eSchTp_atmp: //9:´ë±âȯ°æ { AnsiString ATMP_STTN_NMBR = ""; bool isAtmp = false; if (CDSAtmpManager) { FOR_STL(TCDSFormObj*, pTmpObj, pCDSForm->FLists) { if (pTmpObj->VMS_FORM_OBJECT_TYPE_CD >= 401 && pTmpObj->VMS_FORM_OBJECT_TYPE_CD <= 413) { ATMP_STTN_NMBR = pTmpObj->VMS_IFSC_ID; TCDSAtmp *pAtmp = CDSAtmpManager->FLists.Find(pTmpObj->VMS_IFSC_ID); if (pAtmp && pAtmp->SUCCESS) { isAtmp = true; break; } } } } if (isAtmp == false) { //Æû¿¡ ¼ÓÇÑ ´ë±âȯ°æÀÇ ¸ðµç Á¤º¸°¡ À¯È¿ÇÏÁö ¾Ê´Â °æ¿ì ÆûÀ» »ý¼ºÇÏÁö ¾Ê´Â´Ù. MERROR("VMS ATMP Failed: VmsNmbr(%s)-[%s]", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str()); break; } nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { #if 0 AnsiString ATMP_STTN_NMBR = pADO->FieldByName("FRST_VMS_IFSC_ID")->AsString; TCDSAtmp *pAtmpObj = CDSAtmpManager->FLists.Find(ATMP_STTN_NMBR); if (!pAtmpObj) break; if (pAtmpObj->SUCCESS == false) { MERROR("VMS ATMP Failed: VmsNmbr(%s)-[%s], %s.%s", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str(), ATMP_STTN_NMBR.c_str(), pAtmpObj->ATMP_STTN_NM.c_str()); break; } #endif pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = ATMP_STTN_NMBR; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; case eSchTp_park: //10:ÁÖÂ÷Á¤º¸ { bool isParkingForm = false; FOR_STL(TCDSFormObj*, pTmpObj, pCDSForm->FLists) { if (pTmpObj->VMS_FORM_OBJECT_TYPE_CD == 101 || pTmpObj->VMS_FORM_OBJECT_TYPE_CD == 102 || pTmpObj->VMS_FORM_OBJECT_TYPE_CD == 103 || pTmpObj->VMS_FORM_OBJECT_TYPE_CD == 104) { TCDSPark *pPark = NULL; if (CDSParkManager) { pPark = CDSParkManager->FLists.Find(pTmpObj->VMS_IFSC_ID); //ÁÖÂ÷À徯À̵ð·Î ÁÖÂ÷ÀåÁ¤º¸¸¦ ãÀ½ } if (pPark && pPark->SUCCESS) { isParkingForm = true; break; } } } if (isParkingForm == false) { //Æû¿¡ ¼ÓÇÑ ÁÖÂ÷ÀåÀÇ ¸ðµç Á¤º¸°¡ À¯È¿ÇÏÁö ¾Ê´Â °æ¿ì ÆûÀ» »ý¼ºÇÏÁö ¾Ê´Â´Ù. MERROR("VMS PARKING Failed: VmsNmbr(%s)-[%s]", VMS_CTLR_NMBR.c_str(), VMS_FORM_ID.c_str()); break; } nIdx = pObj->SCHEDULE->Count; if (nIdx < VMS_MAX_SCHEDULE) { pObj->SCHEDULE->Unit[nIdx].VMS_SCH_TYPE = VMS_SCH_TYPE; pObj->SCHEDULE->Unit[nIdx].VMS_SCH_FORM_TYPE = VMS_SCH_FORM_TYPE; pObj->SCHEDULE->Unit[nIdx].PHASE = PHASE; pObj->SCHEDULE->Unit[nIdx].VMS_FORM_ID = VMS_FORM_ID; pObj->SCHEDULE->Unit[nIdx].FRST_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].SECD_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_VMS_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FRST_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].SECD_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].THIR_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].FOUR_IMG_IFSC_ID = ""; pObj->SCHEDULE->Unit[nIdx].DSPL_HH = DSPL_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_STRT_HH = DSPL_STRT_HH; pObj->SCHEDULE->Unit[nIdx].DSPL_END_HH = DSPL_END_HH; pObj->SCHEDULE->Unit[nIdx].SYMB_LIB_NMBR = SYMB_LIB_NMBR; pObj->SCHEDULE->Unit[nIdx].STRM_ADDR = STRM_ADDR; pObj->SCHEDULE->Unit[nIdx].DSPL_CNGS_YN = DSPL_CNGS_YN; pObj->SCHEDULE->Count++; nSelCnt++; } } break; } } } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } if (0) { CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (!pObj->Used) continue; MDEBUG("VMS Schedule: %s, %d EA", pObj->CTLR_NMBR.c_str(), pObj->SCHEDULE->Count); } } IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::LoadVmsOperationMode(TADOConnection *ADbConn) { AnsiString sQry; int nSelCnt = 0; TADOQuery *pADO = NULL; DDBSTART; sQry = "SELECT A.VMS_CTLR_NMBR, A.OPER_MODE, \r\n" " NVL(A.VMS_MAX_PHSE_NUM, 16) AS VMS_MAX_PHSE_NUM \r\n" " FROM TB_VMS_CTLR A \r\n" " WHERE A.DEL_YN = 'N' \r\n"; try { pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; try { SQLText(pADO, sQry, false); SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { AnsiString VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(VMS_CTLR_NMBR); if (!pObj) continue; pObj->OPER_MODE = pADO->FieldByName("OPER_MODE")->AsString.Trim(); int nMaxFormCnt = pADO->FieldByName("VMS_MAX_PHSE_NUM")->AsInteger; if (pObj->OPER_MODE != "A" && pObj->OPER_MODE != "F" && pObj->OPER_MODE != "B") { pObj->OPER_MODE = "A"; } if (pObj->OPER_MODE == "A") pObj->DSTATE.OprMode = 'A'; else if (pObj->OPER_MODE == "B") pObj->DSTATE.OprMode = 'B'; else pObj->DSTATE.OprMode = 'F'; if (pObj->CTRLMODE->Control == pObj->DSTATE.OprMode) pObj->FModeChange = false; else pObj->FModeChange = true; pObj->CTRLMODE->Control = pObj->DSTATE.OprMode; pObj->RSTATE.OprMode = pObj->CTRLMODE->Control; //pObj->VMS_MAX_PHSE_NUM = INT_VMS_MAX_FORM; //nMaxFormCnt; if (pObj->VMS_MAX_PHSE_NUM > INT_VMS_MAX_FORM) pObj->VMS_MAX_PHSE_NUM = INT_VMS_MAX_FORM; pObj->CTRLMODE->MaxDisplayForm = pObj->VMS_MAX_PHSE_NUM; #if 0 if (pObj->CTRLMODE->MaxDisplayForm > INT_MAX_VMS_FORM) pObj->CTRLMODE->MaxDisplayForm = INT_MAX_VMS_FORM; #endif //VMSº° Á¤Ã¼Æû°¹¼ö¸¦ Á¦ÇÑÇÏ´Â °æ¿ì ¿©±â¿¡¼­ ó¸®Çϵµ·Ï ÇÏÀÚ pObj->FMaxCngsForm = VMS_MAX_CNGS_FORM; //ÇöÀç´Â µðÆúÆ®, Áï ¸ðµçÁ¤º¸ »ý¼º nSelCnt++; } } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::UpdateVmsProvideResult(TADOConnection *ADbConn, void *ACtlrObj) { int nSelCnt = 0; AnsiString sQry; TADOQuery *pADO = NULL; int nFormCnt = 0; // DDBSTART; TCDSCtlr* AObj = (TCDSCtlr*)ACtlrObj; if (!AObj) return VERR_MEMORY_ALLOC; sQry = "UPDATE TB_VMS_DSPL_PRST \r\n" " SET DSPL_DT = :p03, \r\n" " DNLD_YN = :p04 \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n" " AND PHASE <= :p02 \r\n"; String VMS_CTLR_NMBR; String PHASE; String DSPL_DT; String DNLD_YN; try { nFormCnt = AObj->pForms->Count(); if (nFormCnt == 0) return VERR_NONE; pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; VMS_CTLR_NMBR = AObj->CTLR_NMBR; PHASE = String(nFormCnt); DSPL_DT = AObj->CTRLMODE->SvcDate; DNLD_YN = AObj->CTRLMODE->Result ? "Y" : "N"; try { SQLText(pADO, sQry, false); SQLBind(pADO, "p01", VMS_CTLR_NMBR); SQLBind(pADO, "p02", PHASE); SQLBind(pADO, "p03", DSPL_DT); SQLBind(pADO, "p04", DNLD_YN); nSelCnt = SQLExec(pADO); } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } if (AObj->DSPL_DT == DSPL_DT) { MWARN("DCOM %30.30s: %s, %d EA [%s], Already HS Insert.[%s][%s][%d]", "UpdateVmsProvideResult", AObj->CTLR_NMBR.c_str(), nFormCnt, AnsiString(DNLD_YN).c_str(), AnsiString(DSPL_DT).c_str(), AnsiString(AObj->DSPL_DT).c_str(), AObj->PHASE); MINFO("DCOM %30.30s: %s, %d EA [%s]", "UpdateVmsProvideResult", AObj->CTLR_NMBR.c_str(), nFormCnt, DNLD_YN.c_str()); return nSelCnt; } // ÀÌ·Â ÀúÀå--Á¦°ø½Ã°¢ÀÌ µ¿ÀÏÇÑ°Ô ÀÌ·ÂÀ¸·Î ÀúÀåµÉ¼ö Àֱ⶧¹®¿¡ Æ®·£Àè¼ÇÀ» ´Ù½Ã½ÃÀÛÇÑ´Ù. // ÀÌÀü VMSÀÎ °æ¿ì ÀÓ... sQry = "INSERT INTO TB_VMS_DSPL_PRST_HS \r\n" " (DSPL_DT, VMS_CTLR_NMBR, PHASE, \r\n" " VMS_SCH_TYPE, VMS_SCH_FORM_TYPE, \r\n" " VMS_FORM_ID, DSPL_HH, \r\n" " VMS_DSPL_MSG_DATA, VMS_DSPL_MSG_TXT, \r\n" " VMS_FORM_DSPL_DRCT_CD, VMS_FORM_DSPL_MTHD_CD, \r\n" " DNLD_YN) \r\n" " SELECT DSPL_DT, VMS_CTLR_NMBR, PHASE, \r\n" " VMS_SCH_TYPE, VMS_SCH_FORM_TYPE, \r\n" " VMS_FORM_ID, DSPL_HH, \r\n" " VMS_DSPL_MSG_DATA, VMS_DSPL_MSG_TXT, \r\n" " VMS_FORM_DSPL_DRCT_CD, VMS_FORM_DSPL_MTHD_CD, \r\n" " DNLD_YN \r\n" " FROM TB_VMS_DSPL_PRST \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n" " AND DSPL_DT = :p02 \r\n" " AND PHASE <= :p03 \r\n"; try { SQLText(pADO, sQry, false); SQLBind(pADO, "p01", VMS_CTLR_NMBR); SQLBind(pADO, "p02", DSPL_DT); SQLBind(pADO, "p03", PHASE); nSelCnt += SQLExec(pADO); AObj->DSPL_DT = DSPL_DT; AObj->PHASE = nFormCnt; AObj->CTRLMODE->SaveFlag = true; AObj->CTRLMODE->pTimer = Now(); MINFO("DCOM %30.30s: %s, %d EA [%s], HS Insert.[%s][%d]", "UpdateVmsProvideResult", AObj->CTLR_NMBR.c_str(), nFormCnt, AnsiString(DNLD_YN).c_str(), AnsiString(AObj->DSPL_DT).c_str(), AObj->PHASE); } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } MINFO("DCOM %30.30s: %s, %d EA [%s]", "UpdateVmsProvideResult", AObj->CTLR_NMBR.c_str(), nFormCnt, AnsiString(DNLD_YN).c_str()); // IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::SaveVmsProvideForm(TADOConnection *ADbConn, void *ACtlrObj) { // VMS Á¦°øÁ¤º¸ °´Ã¼ ÄÚµå typedef enum en_vms_object_type { vms_obj_none, /* 0:Á¤º¸¾øÀ½ */ vms_obj_text, /* 1:¹®ÀÚ¿­ */ vms_obj_bitmap, /* 2:Bitmap ID */ vms_obj_draw, /* 3:Draw */ } EN_VMS_OBJECT_TYPE; AnsiString sQry; AnsiString uQry; TADOQuery *pSADO = NULL; TADOQuery *pUADO = NULL; int nSelCnt = 0; DDBSTART; TCDSCtlr* AObj = (TCDSCtlr*)ACtlrObj; if (!AObj) return VERR_MEMORY_ALLOC; int nFormCnt = AObj->pForms->Count(); if (nFormCnt == 0) return VERR_NONE; sQry = "MERGE INTO TB_VMS_DSPL_PRST L \r\n" "USING (SELECT :p01 AS VMS_CTLR_NMBR, \r\n" " :p02 AS PHASE, \r\n" " :p03 AS DSPL_DT, \r\n" " :p04 AS VMS_SCH_TYPE, \r\n" " :p05 AS VMS_SCH_FORM_TYPE, \r\n" " :p06 AS VMS_FORM_ID, \r\n" " :p07 AS DSPL_HH, \r\n" " :p08 AS VMS_DSPL_MSG_DATA, \r\n" " :p09 AS VMS_DSPL_MSG_TXT, \r\n" " :p10 AS VMS_FORM_DSPL_DRCT_CD, \r\n" " :p11 AS VMS_FORM_DSPL_MTHD_CD, \r\n" " :p12 AS DNLD_YN \r\n" " FROM DUAL) M \r\n" " ON (L.VMS_CTLR_NMBR = M.VMS_CTLR_NMBR AND L.PHASE = M.PHASE) \r\n" "WHEN MATCHED THEN \r\n" "UPDATE SET L.DSPL_DT = M.DSPL_DT, \r\n" " L.VMS_SCH_TYPE = M.VMS_SCH_TYPE, \r\n" " L.VMS_SCH_FORM_TYPE = M.VMS_SCH_FORM_TYPE, \r\n" " L.VMS_FORM_ID = M.VMS_FORM_ID, \r\n" " L.DSPL_HH = M.DSPL_HH, \r\n" " L.VMS_DSPL_MSG_DATA = M.VMS_DSPL_MSG_DATA, \r\n" " L.VMS_DSPL_MSG_TXT = M.VMS_DSPL_MSG_TXT, \r\n" " L.VMS_FORM_DSPL_DRCT_CD = M.VMS_FORM_DSPL_DRCT_CD, \r\n" " L.VMS_FORM_DSPL_MTHD_CD = M.VMS_FORM_DSPL_MTHD_CD, \r\n" " L.DNLD_YN = M.DNLD_YN \r\n" "WHEN NOT MATCHED THEN \r\n" "INSERT (VMS_CTLR_NMBR, PHASE, DSPL_DT, \r\n" " VMS_SCH_TYPE, VMS_SCH_FORM_TYPE, \r\n" " VMS_FORM_ID, DSPL_HH, \r\n" " VMS_DSPL_MSG_DATA, VMS_DSPL_MSG_TXT, \r\n" " VMS_FORM_DSPL_DRCT_CD, VMS_FORM_DSPL_MTHD_CD, \r\n" " DNLD_YN) \r\n" "VALUES (M.VMS_CTLR_NMBR, M.PHASE, M.DSPL_DT, \r\n" " M.VMS_SCH_TYPE, M.VMS_SCH_FORM_TYPE, \r\n" " M.VMS_FORM_ID, M.DSPL_HH, \r\n" " M.VMS_DSPL_MSG_DATA, M.VMS_DSPL_MSG_TXT, \r\n" " M.VMS_FORM_DSPL_DRCT_CD, M.VMS_FORM_DSPL_MTHD_CD, \r\n" " M.DNLD_YN) \r\n"; uQry = "UPDATE TB_VMS_DSPL_PRST \r\n" " SET VMS_DSPL_MSG_IMAG = :p03 \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n" " AND PHASE = :p02 \r\n"; try { pSADO = new TADOQuery(NULL); pSADO->Connection = ADbConn; pUADO = new TADOQuery(NULL); pUADO->Connection = ADbConn; try { AObj->pForms->Lock(); SQLText(pSADO, sQry, false); SQLText(pUADO, uQry, false); for (int ii = 0; ii < nFormCnt; ii++) { TVmsForm *pForm = AObj->pForms->GetItem(ii); String VMS_CTLR_NMBR = AObj->CTLR_NMBR; String PHASE = String(ii+1); String DSPL_DT = AObj->CTRLMODE->SvcDate; String VMS_SCH_TYPE = pForm->VMS_SCH_TYPE; String VMS_SCH_FORM_TYPE = pForm->VMS_SCH_FORM_TYPE; String VMS_FORM_ID = pForm->VMS_FORM_ID; String DSPL_HH = String(pForm->DSPL_HH); String VMS_DSPL_MSG_DATA = ""; String VMS_DSPL_MSG_TXT = ""; String VMS_FORM_DSPL_DRCT_CD = pForm->VMS_FORM_DSPL_DRCT_CD; String VMS_FORM_DSPL_MTHD_CD = pForm->VMS_FORM_DSPL_MTHD_CD; String DNLD_YN = pForm->SvcRes ? "Y" : "N"; AnsiString sTmp = ""; AnsiString sCont = ""; int nObjCnt, nObjType; try { //ÆûÁ¾·ù/Ç¥Ãâ½Ã°£/¹è°æ»ö»ó sCont.printf("%02X%02X%02X|", pForm->VMS_FORM_TYPE_CD, pForm->DSPL_HH, pForm->VMS_FORM_COLR_CD); VMS_DSPL_MSG_DATA += sCont; nObjCnt = pForm->Count(); for (int jj = 0; jj < nObjCnt; jj++) { TVmsFormObj *pFormObj = pForm->GetItem(jj); if (pFormObj->ImageId == "") pFormObj->ImageId = "1"; //ÀÌ·ÂÀúÀå¿ë if (pFormObj->TextData == "") pFormObj->TextData = " "; //ÀÌ·ÂÀúÀå¿ë switch(pFormObj->ObjectType) { case 1: //½Éº¼ case 2: //À̹ÌÁö case 167: //@¿ìȸ¼ÒÅëÁ¤º¸À̹ÌÁö case 200: //µ¿¿µ»ó case 300: //½ºÆ¼¸®¹Ö¿µ»ó case 406: //@ÅëÇÕ´ë±âµî±Þ À̹ÌÁö case 407: //@¹Ì¼¼¸ÕÁöµî±Þ À̹ÌÁö case 408: //@Ãʹ̼¼¸ÕÁöµî±Þ À̹ÌÁö case 413: //@¿ÀÁ¸µî±ÞÀ̹ÌÁö nObjType = vms_obj_bitmap; sTmp.printf("%02X%04X%04X%02X%04X%04X%s|", pFormObj->IsBlinking, pFormObj->PosX, pFormObj->PosY, pFormObj->BkColor, pFormObj->Width, pFormObj->Height, pFormObj->ImageId.c_str()); sCont.printf("%02X%02X%s", nObjType, sTmp.Length(), sTmp.c_str()); VMS_DSPL_MSG_DATA += sCont; break; case 3: //¼ÒÅëÁ¤º¸¹è°æÀ̹ÌÁö case 17: //1´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö1 case 27: //2´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö2 case 37: //3´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö3 case 47: //4´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö4 { nObjType = vms_obj_draw; sTmp.printf("%02X%04X%04X%02X%04X%04X%s+", pFormObj->IsBlinking, pFormObj->PosX, pFormObj->PosY, pFormObj->BkColor, pFormObj->Width, pFormObj->Height, pFormObj->ImageId.c_str()); sCont.printf("%02X%02X%s", nObjType, sTmp.Length(), sTmp.c_str()); VMS_DSPL_MSG_DATA += sCont; AnsiString sVertex = ""; TCDSImage *pSymbol = CDSImageManager->FLists.Find(pFormObj->ImageId); if (pSymbol) { sTmp = ""; int nCnt = 0; FOR_STL(TCDSImageCell*, pCell, pSymbol->FLists) { TCDSIfsc *pIfsc = NULL; if (pFormObj->ObjectType == 3) pIfsc = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); else pIfsc = CDSIfscManager->FLists.Find(pFormObj->IFSC_ID); if (pIfsc) { sVertex.sprintf("%03d%03d%d", pCell->POSX, pCell->POSY, pIfsc->CMTR_GRAD_CD.ToIntDef(0)); sTmp += sVertex; nCnt++; } } sCont.printf("%02X%s|", nCnt, sTmp.c_str()); VMS_DSPL_MSG_DATA += sCont; } else { VMS_DSPL_MSG_DATA += "X|"; } } break; default://±âŸ ¹®ÀÚ¿­ VMS_DSPL_MSG_TXT += pFormObj->TextData; VMS_DSPL_MSG_TXT += " "; nObjType = vms_obj_text; sTmp.printf("%02X%04X%04X%02X%02X%02X%02X%02X%02X%s|", pFormObj->IsBlinking, pFormObj->PosX, pFormObj->PosY, pFormObj->BkColor, pFormObj->TextFontSize, pFormObj->TextFontColor, pFormObj->TextFontName, pFormObj->TextFontBold, pFormObj->TextData.Length(), pFormObj->TextData); sCont.printf("%02X%02X%s", nObjType, sTmp.Length(), sTmp.c_str()); VMS_DSPL_MSG_DATA += sCont; break; } } /* * À¥Á¢±Ù¼º¿¡¼­ È«º¸À̹ÌÁöµµ alt ·Î ³»¿ëÀ» Áö¿øÇØ¾ß Çϱ⶧¹®¿¡ * ÆûÀÇ ¼³¸íÀÌ ¿ì¼±ÀûÀ¸·Î ¼³Á¤µÇµµ·Ï ÇÁ·Î±×·¥ ¼öÁ¤(20210615) */ if (VMS_DSPL_MSG_TXT == "") { TCDSForm *pCDSForm = CDSFormManager->FLists.Find(pForm->VMS_FORM_ID); if (pCDSForm) { if (pCDSForm->VMS_FORM_EXPL.Length() > pCDSForm->VMS_FORM_NM.Length()) { VMS_DSPL_MSG_TXT = pCDSForm->VMS_FORM_EXPL; } else { VMS_DSPL_MSG_TXT = pCDSForm->VMS_FORM_NM; } } } if (VMS_DSPL_MSG_DATA.Length() > 1500) VMS_DSPL_MSG_DATA = VMS_DSPL_MSG_DATA.SubString(1, 1499); if (VMS_DSPL_MSG_TXT.Length() > 400) VMS_DSPL_MSG_TXT = VMS_DSPL_MSG_TXT.SubString(1, 399); SQLBind(pSADO, "p01", VMS_CTLR_NMBR); SQLBind(pSADO, "p02", PHASE); SQLBind(pSADO, "p03", DSPL_DT); SQLBind(pSADO, "p04", VMS_SCH_TYPE); SQLBind(pSADO, "p05", VMS_SCH_FORM_TYPE); SQLBind(pSADO, "p06", VMS_FORM_ID); SQLBind(pSADO, "p07", DSPL_HH); SQLBind(pSADO, "p08", VMS_DSPL_MSG_DATA); SQLBind(pSADO, "p09", VMS_DSPL_MSG_TXT); SQLBind(pSADO, "p10", VMS_FORM_DSPL_DRCT_CD); SQLBind(pSADO, "p11", VMS_FORM_DSPL_MTHD_CD); SQLBind(pSADO, "p12", DNLD_YN); SQLExec(pSADO); try { SQLBind(pUADO, "p01", VMS_CTLR_NMBR); SQLBind(pUADO, "p02", PHASE); //pUADO->Parameters->ParamByName("p03")->LoadFromStream(pStream, ftBlob); pUADO->Parameters->ParamByName("p03")->LoadFromStream(pForm->pStream, ftBlob); SQLExec(pUADO); //MINFO("[%s] FormImage Size: %d", AObj->VmsNo.c_str(), pForm->pStream->Size); //pForm->pBitmap->SaveToFile(g_sFtpFormDir + AObj->VmsId + "\\" + PHASE + ".bmp"); //pImage->Picture->SaveToFile(g_sFtpFormDir + AObj->VmsId + "\\" + PHASE + ".bmp"); } catch(Exception &e) { } nSelCnt++; } __finally { } } } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { AObj->pForms->UnLock(); SQLFree(pSADO); SQLFree(pUADO); } MINFO("DCOM %30.30s: %s, %d EA", "SaveVmsProvideForm", AObj->CTLR_NMBR.c_str(), nSelCnt); //IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::LoadVmsOnOffTime(TADOConnection *ADbConn) { String sQry; TADOQuery *pADO = NULL; int nSelCnt = 0; DDBSTART; sQry = "SELECT A.VMS_CTLR_NMBR, \r\n" " A.PANL_ON_TIME, \r\n" " A.PANL_OFF_TIME \r\n" " FROM TB_VMS_CTLR A \r\n" " WHERE A.DEL_YN = 'N' \r\n"; BYTE OnOff, OldOnOff; int nOnTime, nOffTime, nCurrTime; nCurrTime = Now().FormatString("hhnn").ToIntDef(0); try { try { pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; SQLText(pADO, sQry, true); SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { AnsiString VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString.Trim(); TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(VMS_CTLR_NMBR); if (!pObj) continue; 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 if (pObj->PANL_ON_TIME == "9999" || pObj->PANL_ON_TIME.Length() != 4) pObj->PANL_ON_TIME = "0000"; if (pObj->PANL_OFF_TIME == "9999" || pObj->PANL_OFF_TIME.Length() != 4) pObj->PANL_OFF_TIME = "0000"; pObj->MODULE.PowerOnTime = Now().FormatString("yyyymmdd") + pObj->PANL_ON_TIME; pObj->MODULE.PowerOffTime = Now().FormatString("yyyymmdd") + pObj->PANL_OFF_TIME; pObj->MODULE.Retry = VMS_MAX_RETRY_COUNT; OldOnOff = pObj->MODULE.OnOff; OnOff = vms_req_board_power_on; nOnTime = pObj->PANL_ON_TIME.ToIntDef(0); nOffTime = pObj->PANL_OFF_TIME.ToIntDef(0); if (nOnTime != nOffTime) { if (nOnTime > nOffTime) { // 0100(off), 0500(on) if (nCurrTime >= nOffTime && nCurrTime < nOnTime) { OnOff = vms_req_board_power_off; } } else if (nOffTime > nOnTime) { // 2300(off), 0500(on) if (nCurrTime >= nOffTime || nCurrTime < nOnTime) { OnOff = vms_req_board_power_off; } } } if (OldOnOff != OnOff) { if (pObj->FSession && pObj->FSession->State == eSS_Connected) { pObj->MODULE.IsOnOff = true; pObj->MODULE.OnOff = OnOff; IPC_JOB_MESSAGE *pMsg = g_jobBuff.GetBuff(); pMsg->Type = eVmsStatusControl; pMsg->ObjPtr = (DWORD)pObj->FSession; pMsg->Buff[0] = 0x01; pMsg->Buff[1] = OnOff; pMsg->Len = 2; g_jobQ.PushBlocking((DWORD)pMsg); } } #if 0 if (pObj->FSession && pObj->FSession->State == eSS_Connected && pObj->MODULE.OnOff != pObj->PANL_PWER_MODE) { pObj->MODULE.IsOnOff = true; } #endif nSelCnt++; } } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } // MINFO("DCOM <<< Check VMS Job Schedule: OnOffTime, %d EA", nSelCnt); IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::LoadVmsDownLoadJob(TADOConnection *ADbConn) { String sQry; TADOQuery *pADO = NULL; int nSelCnt = 0; int nDnIdx; VMS_DOWNLOAD_INFO *pInfo; //return nSelCnt; DDBSTART; sQry = "SELECT A.VMS_CTLR_NMBR, A.RGST_DT, \r\n" " A.FILETYPE, A.FILEID \r\n" " FROM TB_VMS_DOWNLOAD A \r\n" " WHERE A.SENDSTARTDATE <= TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n" " AND A.SENDRESULT = 0 \r\n" " ORDER BY A.VMS_CTLR_NMBR, A.RGST_DT DESC, A.FILETYPE, A.FILEID \r\n"; CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; pObj->InitDownLoadInfo(); } try { try { pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; SQLText(pADO, sQry, true); SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { AnsiString VMS_CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsString.Trim(); TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(VMS_CTLR_NMBR); if (!pObj) continue; if (pObj->DOWNLOAD->Count < VMS_MAX_DOWNLOAD) { pInfo = pObj->DOWNLOAD; nDnIdx = pInfo->Count++; pInfo->Unit[nDnIdx].RegDate = pADO->FieldByName("RGST_DT")->AsString; pInfo->Unit[nDnIdx].FileType = pADO->FieldByName("FILETYPE")->AsString; pInfo->Unit[nDnIdx].FileId = pADO->FieldByName("FILEID")->AsString; pInfo->Unit[nDnIdx].SendEndDate = Now().FormatString("yyyymmddhhnnss"); pInfo->Unit[nDnIdx].SendStep = send_wait; pInfo->Unit[nDnIdx].SendResult = vms_download_fail; } nSelCnt++; } } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (pObj->DOWNLOAD->Count > 0) { pObj->DOWNLOAD->Enable = vms_download_enable; pObj->DOWNLOAD->SaveFlag = true; } } // MINFO("DCOM <<< Check VMS Job Schedule: DownloadJob, %d EA", nSelCnt); IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::SaveVmsDownLoadJob(TADOConnection *ADbConn, void *ACtlrObj) { int nSelCnt = 0; AnsiString sQry; TADOQuery *pADO = NULL; DDBSTART; TCDSCtlr* AObj = (TCDSCtlr*)ACtlrObj; if (!AObj) return VERR_MEMORY_ALLOC; sQry = "UPDATE TB_VMS_DOWNLOAD \r\n" " SET SENDENDDATE = :p05, \r\n" " SENDSTEP = :p06, \r\n" " SENDRESULT = :p07 \r\n" " WHERE RGST_DT = :p01 \r\n" " AND VMS_CTLR_NMBR = :p02 \r\n" " AND FILETYPE = :p03 \r\n" " AND FILEID = :p04 \r\n"; try { pADO = new TADOQuery(NULL); pADO->Connection = ADbConn; try { SQLText(pADO, sQry, false); for (int ii = 0; ii < AObj->DOWNLOAD->Count && ii < VMS_MAX_DOWNLOAD; ii++) { SQLBind(pADO, "p01", AObj->DOWNLOAD->Unit[ii].RegDate); SQLBind(pADO, "p02", AObj->CTLR_NMBR); SQLBind(pADO, "p03", AObj->DOWNLOAD->Unit[ii].FileType); SQLBind(pADO, "p04", AObj->DOWNLOAD->Unit[ii].FileId); SQLBind(pADO, "p05", AObj->DOWNLOAD->Unit[ii].SendEndDate); SQLBind(pADO, "p06", AObj->DOWNLOAD->Unit[ii].SendStep); SQLBind(pADO, "p07", AObj->DOWNLOAD->Unit[ii].SendResult); nSelCnt = SQLExec(pADO); } pADO->Connection->CommitTrans(); } catch(EDatabaseError &E) { DBERROR(String(E.ClassName()), E.Message, sQry); return -1; } catch(Exception &e) { DBERROR(String(e.ClassName()), e.Message, sQry); return -1; } } __finally { SQLFree(pADO); } MDEBUG("SaveVmsDownLoad: End, %s", AObj->CTLR_NMBR.c_str()); IDBSTOP(nSelCnt); return nSelCnt; } //--------------------------------------------------------------------------- int TCDSManager::SaveVmsDownloadForm(TADOConnection *ADbConn) { int nSaveVmsCnt = 0; int nSaveFormCnt = 0; DDBSTART; //»ý¼ºÇÑ ÆûÀ» µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÑ´Ù. CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (pObj->Server.useFlag != use_enable) continue; if (!pObj->FProvide) continue; nSaveFormCnt += SaveVmsProvideForm(ADbConn, (void*)pObj); nSaveVmsCnt++; } //»ý¼ºÇÑ ÆûÀ» Á¦¾î±â¿¡ Àü¼ÛÇÒ ¼ö ÀÖµµ·Ï Ç÷¡±×¸¦ ¼³Á¤ÇÑ´Ù. for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (pObj->Server.useFlag != use_enable) continue; if (!pObj->FProvide) continue; if (pObj->pForms->Count() > 0) { pObj->CTRLMODE->Enable = object_enable; pObj->CTRLMODE->SaveFlag = true; pObj->CTRLMODE->Result = false; } } IDBSTOP(nSaveVmsCnt); return nSaveVmsCnt; } //--------------------------------------------------------------------------- int TCDSManager::SendVmsDownloadForm() { INT_VMS_FORM_SAVE_REQ Req; memset((char*)&Req, 0x00, sizeof(Req)); memcpy(Req.Date, FFormDsplDt.c_str(), INT_VMS_MAX_DATETIME); return CComm_VmsFormSaveNotify(&Req); } //--------------------------------------------------------------------------- int TCDSManager::MakeVmsScenarioForm(TADOConnection *ADbConn) { int nResult = VERR_NONE; DDBSTART; CDSManager->ClearVmsProvideMode(); if (LOAD_DB) { if (CDSFontManager) CDSFontManager->LoadFontNameInfo(ADbConn); if (CDSImageManager) CDSImageManager->LoadVmsSymbolInfo(ADbConn); if (CDSFormManager) CDSFormManager->LoadVmsFormInfo(ADbConn); if (CDSIfscManager) CDSIfscManager->LoadVmsIfscInfo(ADbConn); if (CDSAtmpManager) CDSAtmpManager->LoadAtmpInfo(ADbConn); } //Àç³­ÀçÇØ°¡ ¹ß»ýÇÑ Á¤º¸¸¦ VMS¿¡ ¸ÊÇÎÇÑ´Ù. if (CDSSafeManager) { nResult = CDSSafeManager->LoadSafeOccrInfo(ADbConn); if (nResult < 0) { MERROR("LoadSafeOccrInfo: error: %d", nResult); } } //´ë±âȯ°æÁ¤º¸¸¦ Àоî¿Â´Ù if (CDSAtmpManager) { nResult = CDSAtmpManager->LoadAtmpRtPnstInfo(ADbConn); if (nResult < 0) { MERROR("LoadAtmpRtPnstInfo: error: %d", nResult); } } //ÁÖÂ÷Á¤º¸¸¦ Àоî¿Â´Ù if (CDSParkManager) { nResult = CDSParkManager->LoadFromDb(ADbConn); if (nResult < 0) { MERROR("CDSParkManager->LoadFromDb: error: %d", nResult); } } //µ¹¹ß/°ø»ç/Çà»ç°¡ ¹ß»ýÇÑ Á¤º¸¸¦ VMS¿¡ ¸ÊÇÎÇÑ´Ù. nResult = CDSManager->LoadVmsEventOccrInf(ADbConn); if (nResult < 0) { MERROR("LoadVmsEventOccrInf: error: %d", nResult); } // VMS±¸°£ ¼ÒÅëÁ¤º¸¸¦ ¸ðµÎ Àоî¿ÀÀÚ..(µ¥ÀÌÅͰ¡ ¸¹À» °æ¿ì ÇØ´çµÇ´Â Á¤º¸¸¸ Àоî¿Àµµ·Ï ¼öÁ¤ nResult = CDSIfscManager->LoadVmsIfscTrafficInfo(ADbConn); if (nResult < 0) { MERROR("LoadVmsIfscTrafficInfo: error: %d", nResult); } //Á¤Ã¼ÆûÀ» À§ÇÑ Á¤Ã¼Á¤º¸ ÆÇÁ¤ //½ºÄÉÁìÁ¤º¸¸¦ ÀбâÀü¿¡ VMSº° Á¤Ã¼ÆÇÁ¤Á¶°Ç¿¡ µû¶ó Á¤Ã¼Á¤º¸¸¦ ÆÇÁ¤ÇÑ´Ù. if (CDSManager->FIsStaticCycle) { try { CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; FOR_STL(TVmsIfsc*, pIfsc, pObj->FIfscLists) { if (!pIfsc->IsUsed) continue; if (!pIfsc->CNGS_CNFM_YN) continue; //Á¤Ã¼ÆÇÁ¤ÀÌ ¾Æ´Ñ°æ¿ì TCDSIfsc *pTrfIfsc = CDSIfscManager->FLists.Find(pIfsc->VMS_IFSC_ID); if (!pTrfIfsc) { pIfsc->CNGST_CNT = 0; continue; } if (pTrfIfsc->SPED <= pIfsc->CNGS_CNFM_SPED) { //ÇöÀç¼Óµµ°ªÀÌ Á¤Ã¼ÆÇÁ¤¼Óµµ ÀÌÇÏÀ̸é Á¤Ã¼ÆÇÁ¤ Ƚ¼ö¸¦ Áõ°¡ if (pIfsc->CNGST_CNT == 0) { pIfsc->dtCngst = Now(); } pIfsc->CNGST_CNT++; } else { //Á¤Ã¼ÆÇÁ¤¼Óµµº¸´Ù Å©¸é Á¤Ã¼È½¼ö¸¦ ÃʱâÈ­ pIfsc->CNGST_CNT = 0; } } } } catch(Exception &e) { } } //VMSÀÇ ½ºÄÉÁÙÁ¤º¸¸¦ Á¶È¸ÇÑ´Ù. nResult = LoadVmsScheduleInfo(ADbConn); if (nResult < 0) { MERROR("LoadVmsScheduleInfo: error: %d", nResult); } CDSManager->FIsStaticCycle = false; //Á¤ÁÖ±â Á¤º¸Á¦°øÁÖ±â Ç÷¡±× ¼³Á¤ IDBSTOP(nResult); return nResult; } //--------------------------------------------------------------------------- int TCDSManager::DownloadVmsForm(TADOConnection *ADbConn, int ACommand) { int nResult = 0; DDBSTART; if (ACommand == dbm_dnld_form_cycle || ACommand == dbm_dnld_form_init) { //Á¤Áֱ⠴ٿî·Îµå ÀÌ¸é ¸ðµç VMS¿¡ ¸Þ½ÃÁö´Ù¿î·Îµå Ç÷¡±× Ȱ¼ºÈ­ ½ÃÅ´ //¸ðµåº¯°æ¿¡ ÀÇÇÑ ´Ù¿î·ÎµåÀΰæ¿ì¿¡´Â ³»ºÎÅë½ÅÀ» ¼ö½ÅÇÑ °÷¿¡¼­ Ç÷¡±×¸¦ Ȱ¼ºÈ­ ½ÃÄ×À½. //1. ÇöÀç ¿î¿µ¸ðµå¸¦ ´Ù½Ã Çѹø ÀÐÀ½ if (LoadVmsOperationMode(ADbConn) < 0) { return -1; } //¸ðµç VMS¿¡ ¸Þ½ÃÁö´Ù¿î·Îµå Ç÷¡±× Ȱ¼ºÈ­ ½ÃÅ´ CDSCtlrManager->InitProvide(NULL); } nResult = MakeVmsScenarioForm(ADbConn); IDBSTOP(nResult); return nResult; } //--------------------------------------------------------------------------- int TCDSManager::SaveProvideResult(TADOConnection *ADbConn, void *AData) { int ii; TCDSCtlr *pObj; int nJobCnt = 0; int nResult; VMS_PROVIDE_RESULE *pSave; DDBSTART; pSave = (VMS_PROVIDE_RESULE*)AData; if (!pSave) { MERROR("SaveProvideResult: Data NULL"); return -1; } switch(pSave->Type) { case provide_form: { INT_VMS_FORM_DOWNLOAD_REQ VmsSave; memset(&VmsSave, 0x00, sizeof(VmsSave)); VmsSave.Count = 0; MINFO("DCOM %30.30s: %d EA", "VMS Msg Provide Result Save", pSave->Count); for (ii = 0; ii < pSave->Count && ii < MAX_VMS_PROVIDE_RESULT; ii++) { pObj = (TCDSCtlr*)pSave->pObj[ii]; if (!pObj) continue; if ((nResult = UpdateVmsProvideResult(ADbConn, (void*)pObj)) < 0) { MERROR("ProvideSave: UpdateVmsProvideResult failed: %d", nResult); } else { nJobCnt++; memcpy(VmsSave.Unit[VmsSave.Count].VmsId, pObj->CTLR_NMBR.c_str(), INT_VMS_MAX_ID); memcpy(VmsSave.Unit[VmsSave.Count].Date, pObj->CTRLMODE->SvcDate.c_str(), INT_VMS_MAX_DATETIME); VmsSave.Unit[VmsSave.Count].Result = pObj->CTRLMODE->Result ? vms_download_succ : vms_download_fail; VmsSave.Count++; if (VmsSave.Count >= INT_VMS_MAX_FORM_DOWNLOAD) { CComm_VmsFormDownLoadNotify(&VmsSave); VmsSave.Count = 0; } } } if (VmsSave.Count > 0) { CComm_VmsFormDownLoadNotify(&VmsSave); } } break; case provide_download: for (ii = 0; ii < pSave->Count && ii < MAX_VMS_PROVIDE_RESULT; ii++) { pObj = (TCDSCtlr*)pSave->pObj[ii]; if (!pObj) continue; nJobCnt++; if ((nResult = SaveVmsDownLoadJob(ADbConn, (void*)pObj)) < 0) { MERROR("SaveProvideResult: SaveVmsDownLoadJob failed: %d", nResult); } } break; } IDBSTOP(nJobCnt); return nJobCnt; } //---------------------------------------------------------------------------