123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338 |
- //---------------------------------------------------------------------------
- #pragma hdrstop
- #include "CDSAtmpF.h"
- #include "CDSCtlrF.h"
- #include "VmsUtilsF.h"
- #include "VMSCommLibF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- TCDSAtmp::TCDSAtmp()
- {
- }
- //---------------------------------------------------------------------------
- TCDSAtmp::~TCDSAtmp()
- {
- }
- //---------------------------------------------------------------------------
- void TCDSAtmp::Init()
- {
- SUCCESS = false;
- MSRM_DT = "";
- MSRM_SYST_NM = "";
- SO2_VAL = "";
- CO_VAL = "";
- NO2_VAL = "";
- O3_VAL = "";
- PM10_VAL = "";
- PM10_24HH_VAL = "";
- PM25_VAL = "";
- PM25_24HH_VAL = "";
- INTG_ATMP_VAL = "";
- INTG_ATMP_GRAD = "";
- SO2_GRAD = "";
- CO_GRAD = "";
- O3_GRAD = "";
- NO2_GRAD = "";
- PM10_24HH_GRAD = "";
- PM25_24HH_GRAD = "";
- PM10_1HH_GRAD = "";
- PM25_1HH_GRAD = "";
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetPM10_VAL(bool AUnit/*=true*/)
- {
- //미세먼지
- if (SUCCESS)
- if (AUnit)
- return PM10_VAL + " ㎍/㎥";
- else
- return PM10_VAL;
- return (AUnit) ? "- ㎍/㎥" : "-";
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetPM25_VAL(bool AUnit/*=true*/)
- {
- //초미세먼지
- if (SUCCESS)
- if (AUnit)
- return PM25_VAL + " ㎍/㎥";
- else
- return PM25_VAL;
- return (AUnit) ? "- ㎍/㎥" : "-";
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetATMP_VAL(bool AUnit/*=true*/)
- {
- //통합대기환경수치
- if (SUCCESS)
- if (AUnit)
- return INTG_ATMP_VAL;
- else
- return INTG_ATMP_VAL;
- return "-";
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetO3_VAL(bool AUnit/*=true*/)
- {
- //오존농도
- if (SUCCESS)
- if (AUnit)
- return O3_VAL + " ppm";
- else
- return O3_VAL;
- return (AUnit) ? "- ppm" : "-";
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetGradeDesc(int AGrad)
- {
- if (!SUCCESS) return "-";
- switch(AGrad)
- {
- case 1: return "좋음";
- case 2: return "보통";
- case 3: return "나쁨";
- case 4: return "매우나쁨";
- }
- return "-";
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetPM10_GRAD()
- {
- return GetGradeDesc(PM10_1HH_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetPM25_GRAD()
- {
- return GetGradeDesc(PM25_1HH_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetATMP_GRAD()
- {
- return GetGradeDesc(INTG_ATMP_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- AnsiString TCDSAtmp::GetO3_GRAD()
- {
- return GetGradeDesc(O3_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- int TCDSAtmp::GetGradeColor(int AGrad)
- {
- if (!SUCCESS) return clGreen;
- switch(AGrad)
- {
- case 1: return 2;//밝은녹색(Lime)
- case 2: return 5;//하늘색(Aqua)
- case 3: return 4;//주황색(Orange)
- case 4: return 1;//적색(Red)
- }
- return 3;
- }
- //---------------------------------------------------------------------------
- int TCDSAtmp::GetPM10_CLR()
- {
- return GetGradeColor(PM10_1HH_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- int TCDSAtmp::GetPM25_CLR()
- {
- return GetGradeColor(PM25_1HH_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- int TCDSAtmp::GetATMP_CLR()
- {
- return GetGradeColor(INTG_ATMP_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- int TCDSAtmp::GetO3_CLR()
- {
- return GetGradeColor(O3_GRAD.ToIntDef(0));
- }
- //---------------------------------------------------------------------------
- //---------------------------------------------------------------------------
- TCDSAtmpManager *CDSAtmpManager = NULL;
- //---------------------------------------------------------------------------
- TCDSAtmpManager::TCDSAtmpManager()
- {
- }
- //---------------------------------------------------------------------------
- TCDSAtmpManager::~TCDSAtmpManager()
- {
- FLists.RemoveAll();
- }
- //---------------------------------------------------------------------------
- int TCDSAtmpManager::LoadAtmpInfo(TADOConnection *ADbConn)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- int nSelCnt = 0;
- DDBSTART;
- sQry = "SELECT A.* \r\n"
- " FROM TB_ATMP_PLTN_STTN A \r\n";
- try
- {
- FOR_STL(TCDSAtmp*, pTmp, FLists)
- {
- pTmp->DEL_YN = "Y";
- }
-
- TCDSAtmp *pObj;
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Connection = ADbConn;
- SQLText(pADO, sQry, true);
- SQLOpen(pADO);
- for( ; !pADO->Eof; pADO->Next())
- {
- AnsiString ATMP_STTN_NMBR = pADO->FieldByName("ATMP_STTN_NMBR")->AsString;
- pObj = FLists.Find(ATMP_STTN_NMBR);
- if (!pObj)
- {
- pObj = new TCDSAtmp();
- pObj->ATMP_STTN_NMBR = ATMP_STTN_NMBR;
- FLists.Push(pObj->ATMP_STTN_NMBR, pObj);
- }
- pObj->ATMP_STTN_NM = pADO->FieldByName("ATMP_STTN_NM")->AsString;
- pObj->VMS_DISP_NM = pADO->FieldByName("VMS_DISP_NM")->AsString;
- pObj->DEL_YN = pADO->FieldByName("DEL_YN")->AsString;
- 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 TCDSAtmpManager::LoadAtmpRtPnstInfo(TADOConnection *ADbConn)
- {
- String sQry;
- TADOQuery *pADO = NULL;
- int nSelCnt = 0;
- DDBSTART;
- sQry = "SELECT * \r\n"
- " FROM TB_ATMP_PLTN_RT_PNST \r\n"
- " WHERE MSRM_DT >= TO_CHAR(SYSDATE-120/1440,'YYYYMMDDHH24MISS') \r\n";
- try
- {
- FOR_STL(TCDSAtmp*, pTmp, FLists)
- {
- pTmp->Init();
- }
- TCDSAtmp *pObj;
- try
- {
- pADO = new TADOQuery(NULL);
- pADO->Connection = ADbConn;
- SQLText(pADO, sQry, true);
- SQLOpen(pADO);
- for( ; !pADO->Eof; pADO->Next())
- {
- AnsiString ATMP_STTN_NMBR = pADO->FieldByName("ATMP_STTN_NMBR")->AsString;
- pObj = FLists.Find(ATMP_STTN_NMBR);
- if (!pObj)
- {
- continue;
- }
- pObj->MSRM_DT = pADO->FieldByName("MSRM_DT")->AsString.Trim(); // N VARCHAR2(14) Y 측정 일시
- pObj->MSRM_SYST_NM = pADO->FieldByName("MSRM_SYST_NM")->AsString.Trim(); // N VARCHAR2(10) Y 측정 시스템 명
- pObj->CO_VAL = pADO->FieldByName("CO_VAL")->AsString.Trim(); // N VARCHAR2(10) Y CO 값
- pObj->SO2_VAL = pADO->FieldByName("SO2_VAL")->AsString.Trim(); // N VARCHAR2(10) Y SO2 값
- pObj->NO2_VAL = pADO->FieldByName("NO2_VAL")->AsString.Trim(); // N VARCHAR2(10) Y NO2 값
- pObj->O3_VAL = pADO->FieldByName("O3_VAL")->AsString.Trim(); // N VARCHAR2(10) Y O3 값
- pObj->PM10_VAL = pADO->FieldByName("PM10_VAL")->AsString.Trim(); // N VARCHAR2(10) Y PM10 값
- pObj->PM10_24HH_VAL = pADO->FieldByName("PM10_24HH_VAL")->AsString.Trim(); // N VARCHAR2(10) Y PM10 24시간 값
- pObj->PM25_VAL = pADO->FieldByName("PM25_VAL")->AsString.Trim(); // N VARCHAR2(10) Y PM25 값
- pObj->PM25_24HH_VAL = pADO->FieldByName("PM25_24HH_VAL")->AsString.Trim(); // N VARCHAR2(10) Y PM25 24시간 값
- pObj->INTG_ATMP_VAL = pADO->FieldByName("INTG_ATMP_VAL")->AsString.Trim(); // N VARCHAR2(10) Y 통합 대기 값
- pObj->INTG_ATMP_GRAD = pADO->FieldByName("INTG_ATMP_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y 통합 대기 등급
- pObj->SO2_GRAD = pADO->FieldByName("SO2_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y SO2 등급
- pObj->CO_GRAD = pADO->FieldByName("CO_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y CO 등급
- pObj->O3_GRAD = pADO->FieldByName("O3_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y O3 드급
- pObj->NO2_GRAD = pADO->FieldByName("NO2_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y NO2 등급
- pObj->PM10_24HH_GRAD = pADO->FieldByName("PM10_24HH_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y PM10 24시간 등급
- pObj->PM25_24HH_GRAD = pADO->FieldByName("PM25_24HH_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y PM25 24시간 등급
- pObj->PM10_1HH_GRAD = pADO->FieldByName("PM10_1HH_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y PM10 1시간 등급
- pObj->PM25_1HH_GRAD = pADO->FieldByName("PM25_1HH_GRAD")->AsString.Trim(); // N VARCHAR2(10) Y PM25 1시간 등급
- pObj->SUCCESS = true;
- if (pObj->PM10_1HH_GRAD.ToIntDef(0) == 0 &&
- pObj->PM25_1HH_GRAD.ToIntDef(0) == 0 &&
- pObj->INTG_ATMP_GRAD.ToIntDef(0) == 0
- )
- {
- pObj->SUCCESS = false;
- }
- 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;
- }
- //---------------------------------------------------------------------------
|