CDSVilgFrcsF.cpp 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSVilgFrcsF.h"
  4. #include "ITSDbF.h"
  5. #include "AppGlobalF.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. //---------------------------------------------------------------------------
  9. TItsVilgFrcsManager *ItsVilgFrcsManager = NULL;
  10. //---------------------------------------------------------------------------
  11. /*
  12. * VilgFrcs Manager
  13. */
  14. TItsVilgFrcsManager::TItsVilgFrcsManager()
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18. TItsVilgFrcsManager::~TItsVilgFrcsManager()
  19. {
  20. }
  21. //---------------------------------------------------------------------------
  22. bool TItsVilgFrcsManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  23. {
  24. String sQry;
  25. TADOQuery *pADO = NULL;
  26. sQry = "SELECT * \r\n"
  27. " FROM TB_VILG_FRCS_ZONE \r\n"
  28. " ORDER BY VILG_FRCS_ZONE_NM \r\n";
  29. try
  30. {
  31. FLists.Lock();
  32. FLists.RemoveAll();
  33. try
  34. {
  35. pADO = new TADOQuery(NULL);
  36. pADO->Close();
  37. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  38. pADO->SQL->Clear();
  39. pADO->SQL->Text = sQry;
  40. pADO->Open();
  41. for( ; !pADO->Eof; pADO->Next())
  42. {
  43. TItsVilgFrcs *pObj = new TItsVilgFrcs();
  44. pObj->VILG_FRCS_ZONE_CD = pADO->FieldByName("VILG_FRCS_ZONE_CD")->AsString; // N NUMBER(14) N 동네 예보 구역 코드
  45. pObj->VILG_FRCS_ZONE_NM = pADO->FieldByName("VILG_FRCS_ZONE_NM")->AsString; // N VARCHAR2(40) Y 동네 예보 구역 명
  46. pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsString; //X 좌표
  47. pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsString; //Y 좌표
  48. FLists.Push(pObj->VILG_FRCS_ZONE_CD, pObj);
  49. }
  50. }
  51. catch(EDatabaseError &E)
  52. {
  53. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  54. DBERRORMSG("TItsVilgFrcsManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  55. throw Exception(String(E.ClassName()) + E.Message);
  56. }
  57. catch(Exception &exception)
  58. {
  59. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  60. DBERRORMSG("TItsVilgFrcsManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  61. throw Exception(String(exception.ClassName()) + exception.Message);
  62. }
  63. }
  64. __finally
  65. {
  66. if (pADO)
  67. {
  68. pADO->Close();
  69. delete pADO;
  70. }
  71. FLists.UnLock();
  72. }
  73. #if 0
  74. return true;
  75. #else
  76. return LoadFromDbAtmp(ADbConn);
  77. #endif
  78. }
  79. //---------------------------------------------------------------------------
  80. bool TItsVilgFrcsManager::LoadFromDbAtmp(TADOConnection *ADbConn/*=NULL*/)
  81. {
  82. String sQry;
  83. TADOQuery *pADO = NULL;
  84. sQry = "SELECT * \r\n"
  85. " FROM TB_ATMP_PLTN_STTN \r\n"
  86. " ORDER BY STTN_NM \r\n";
  87. try
  88. {
  89. FAtmpLists.Lock();
  90. FAtmpLists.RemoveAll();
  91. try
  92. {
  93. pADO = new TADOQuery(NULL);
  94. pADO->Close();
  95. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  96. pADO->SQL->Clear();
  97. pADO->SQL->Text = sQry;
  98. pADO->Open();
  99. for( ; !pADO->Eof; pADO->Next())
  100. {
  101. TItsAtmpPltn *pObj = new TItsAtmpPltn();
  102. pObj->STTN_NM = pADO->FieldByName("STTN_NM")->AsString; // N VARCHAR2(30) N 측정소 명
  103. pObj->STTN_ADDR = pADO->FieldByName("STTN_ADDR")->AsString; // N VARCHAR2(200) Y 측정소 주소
  104. pObj->ISTL_YY = pADO->FieldByName("ISTL_YY")->AsString; // N VARCHAR2(4) Y 설치 년도
  105. pObj->MNGM_INTN_NM = pADO->FieldByName("MNGM_INTN_NM")->AsString; // N VARCHAR2(100) Y 관리 기관 명
  106. pObj->MSRM_SYST_NM = pADO->FieldByName("MSRM_SYST_NM")->AsString; // N VARCHAR2(10) Y 측정 시스템 명
  107. pObj->MSRM_ITEM = pADO->FieldByName("MSRM_ITEM")->AsString; // N VARCHAR2(100) Y 측정 항목
  108. pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsString; //X 좌표
  109. pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsString; //Y 좌표
  110. FAtmpLists.Push(pObj->STTN_NM, pObj);
  111. }
  112. }
  113. catch(EDatabaseError &E)
  114. {
  115. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  116. DBERRORMSG("TItsVilgFrcsManager::LoadFromDbAtmp", String(E.ClassName()), E.Message, sQry);
  117. throw Exception(String(E.ClassName()) + E.Message);
  118. }
  119. catch(Exception &exception)
  120. {
  121. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  122. DBERRORMSG("TItsVilgFrcsManager::LoadFromDbAtmp", String(exception.ClassName()), exception.Message, sQry);
  123. throw Exception(String(exception.ClassName()) + exception.Message);
  124. }
  125. }
  126. __finally
  127. {
  128. if (pADO)
  129. {
  130. pADO->Close();
  131. delete pADO;
  132. }
  133. FAtmpLists.UnLock();
  134. }
  135. return true;
  136. }
  137. //---------------------------------------------------------------------------
  138. bool TItsVilgFrcsManager::LoadVilgFrcsInfo(TADOConnection *ADbConn/*=NULL*/)
  139. {
  140. String sQry;
  141. TADOQuery *pADO = NULL;
  142. sQry = "SELECT A.*, \r\n"
  143. " NVL((SELECT CMMN_CD \r\n"
  144. " FROM TB_CMMN_CD \r\n"
  145. " WHERE CMMN_CLSF_CD = 'DFW' \r\n"
  146. " AND CMMN_CD_KOR_NM(+) = WTCD_KOR_NM), 'XXX') AS WTCD_KOR_CD \r\n"
  147. " FROM TB_VILG_FRCS A \r\n"
  148. " WHERE (A.VILG_FRCS_ZONE_CD, A.ANNC_DT) IN (SELECT VILG_FRCS_ZONE_CD, MAX(ANNC_DT) AS ANNC_DT \r\n"
  149. " FROM TB_VILG_FRCS \r\n"
  150. " WHERE ANNC_DT >= TO_CHAR(SYSDATE-240/1440,'YYYYMMDDHH24MISS') \r\n"
  151. " AND ORD = 0 \r\n"
  152. " GROUP BY VILG_FRCS_ZONE_CD) \r\n"
  153. " AND A.ORD = 0 \r\n";
  154. try
  155. {
  156. float fTemp;
  157. FLists.Lock();
  158. try
  159. {
  160. pADO = new TADOQuery(NULL);
  161. pADO->Close();
  162. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  163. pADO->SQL->Clear();
  164. pADO->SQL->Text = sQry;
  165. pADO->Open();
  166. for( ; !pADO->Eof; pADO->Next())
  167. {
  168. String VILG_FRCS_ZONE_CD = pADO->FieldByName("VILG_FRCS_ZONE_CD")->AsString;
  169. TItsVilgFrcs *pObj = FLists.Find(VILG_FRCS_ZONE_CD);
  170. if (!pObj) continue;
  171. pObj->ANNC_DT = pADO->FieldByName("ANNC_DT")->AsString; // N VARCHAR2(14) N 발표 일시
  172. pObj->ORD = pADO->FieldByName("ORD")->AsString; // N NUMBER(3) N 0 순서
  173. pObj->HH = pADO->FieldByName("HH")->AsString; // N NUMBER(3) Y 0 시간
  174. pObj->DD = pADO->FieldByName("DD")->AsString; // N NUMBER(3) Y 0 일
  175. pObj->PRST_TMPR = pADO->FieldByName("PRST_TMPR")->AsString; // N NUMBER(6,3) Y 현재 온도
  176. pObj->HGHS_TMPR = pADO->FieldByName("HGHS_TMPR")->AsString; // N NUMBER(6,3) Y 최고 온도
  177. pObj->LWST_TMPR = pADO->FieldByName("LWST_TMPR")->AsString; // N NUMBER(6,3) Y 최저 온도
  178. #if 0
  179. pObj->ATMP_STTS = pADO->FieldByName("ATMP_STTS")->AsString; // N NUMBER(2) Y 대기 상태
  180. #else
  181. switch(pADO->FieldByName("ATMP_STTS")->AsInteger)
  182. {
  183. case 1: pObj->ATMP_STTS = "맑음"; break;
  184. case 2: pObj->ATMP_STTS = "구름조금"; break;
  185. case 3: pObj->ATMP_STTS = "구름많음"; break;
  186. case 4: pObj->ATMP_STTS = "흐림"; break;
  187. default:
  188. pObj->ATMP_STTS = pADO->FieldByName("ATMP_STTS")->AsString;
  189. break;
  190. }
  191. #endif
  192. pObj->WTCD_KOR_NM = pADO->FieldByName("WTCD_KOR_NM")->AsString; // N VARCHAR2(20) Y 날씨 한글 명
  193. #if 0
  194. pObj->PRCP_STTS = pADO->FieldByName("PRCP_STTS")->AsString; // N NUMBER(3) Y 0 강수 상태
  195. #else
  196. switch(pADO->FieldByName("PRCP_STTS")->AsInteger)
  197. {
  198. case 0: pObj->PRCP_STTS = "없음"; break;
  199. case 1: pObj->PRCP_STTS = "비"; break;
  200. case 2: pObj->PRCP_STTS = "비/눈"; break;
  201. case 3: pObj->PRCP_STTS = "눈"; break;
  202. default:
  203. pObj->PRCP_STTS = pADO->FieldByName("PRCP_STTS")->AsString;
  204. break;
  205. }
  206. #endif
  207. pObj->WTCD_ENGL_NM = pADO->FieldByName("WTCD_ENGL_NM")->AsString; // N VARCHAR2(20) Y 날씨 영문 명
  208. pObj->PRCP_PR = pADO->FieldByName("PRCP_PR")->AsString; // N NUMBER(5,2) Y 0 강수 확률
  209. pObj->ESTM_PRAM_12HH = pADO->FieldByName("ESTM_PRAM_12HH")->AsString; // N NUMBER(5,2) Y 0 예상 강수량 12시간
  210. pObj->ESTM_SNOW_AMUT_12HH = pADO->FieldByName("ESTM_SNOW_AMUT_12HH")->AsString; // N NUMBER(5,2) Y 0 예상 눈 량 12시간
  211. pObj->WNSP = pADO->FieldByName("WNSP")->AsString; // N NUMBER(5,2) Y 0 풍속
  212. pObj->WNDR = pADO->FieldByName("WNDR")->AsString; // N NUMBER(2) Y 풍향
  213. pObj->WNDR_KOR_NM = pADO->FieldByName("WNDR_KOR_NM")->AsString; // N VARCHAR2(20) Y 풍향 한글 명
  214. pObj->WNDR_ENGL_NM = pADO->FieldByName("WNDR_ENGL_NM")->AsString; // N VARCHAR2(20) Y 풍향 영문 명
  215. pObj->HMDT = pADO->FieldByName("HMDT")->AsString; // N NUMBER(5,2) Y 0 습도
  216. pObj->ESTM_PRCP_AMUT_6HH = pADO->FieldByName("ESTM_PRCP_AMUT_6HH")->AsString; // N NUMBER(5,2) Y 0 예상 강수 량 6시간
  217. pObj->ESTM_SNOW_AMUT_6HH = pADO->FieldByName("ESTM_SNOW_AMUT_6HH")->AsString; // N NUMBER(5,2) Y 0 예상 눈 량 6시간
  218. pObj->WTCD_KOR_CD = pADO->FieldByName("WTCD_KOR_CD")->AsString;
  219. if (pObj->WTCD_KOR_CD == "XXX" || pObj->VILG_FRCS_ZONE_NM.Trim() == "")
  220. {
  221. pObj->VILG_FRCS_ZONE_NM = "정보없음";
  222. }
  223. // 호우알람
  224. fTemp = pADO->FieldByName("ESTM_PRCP_AMUT_6HH")->AsFloat;
  225. pObj->PRCP_ALARM = VILG_NONE; // 강풍알람
  226. if (fTemp >= 110) pObj->PRCP_ALARM = VILG_ALARM;
  227. else if (fTemp >= 70) pObj->PRCP_ALARM = VILG_WARNING;
  228. if (pObj->PRCP_ALARM != VILG_NONE)
  229. {
  230. }
  231. // 대설알람
  232. fTemp = pADO->FieldByName("ESTM_SNOW_AMUT_6HH")->AsFloat;
  233. fTemp *= 4;
  234. //pObj->ESTM_SNOW_AMUT_6HH = FormatFloat("#0.#0", fTemp);
  235. pObj->SNOW_ALARM = VILG_NONE; // 강풍알람
  236. if (fTemp >= 20) pObj->SNOW_ALARM = VILG_ALARM;
  237. else if (fTemp >= 5) pObj->SNOW_ALARM = VILG_WARNING;
  238. if (pObj->SNOW_ALARM != VILG_NONE)
  239. {
  240. }
  241. }
  242. }
  243. catch(EDatabaseError &E)
  244. {
  245. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  246. DBERRORMSG("TItsVilgFrcsManager::LoadVilgFrcsInfo", String(E.ClassName()), E.Message, sQry);
  247. throw Exception(String(E.ClassName()) + E.Message);
  248. }
  249. catch(Exception &exception)
  250. {
  251. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  252. DBERRORMSG("TItsVilgFrcsManager::LoadVilgFrcsInfo", String(exception.ClassName()), exception.Message, sQry);
  253. throw Exception(String(exception.ClassName()) + exception.Message);
  254. }
  255. }
  256. __finally
  257. {
  258. if (pADO)
  259. {
  260. pADO->Close();
  261. delete pADO;
  262. }
  263. FLists.UnLock();
  264. }
  265. LoadVilgShprInfo(ADbConn);
  266. LoadAtmpPltnInfo(ADbConn);
  267. return LoadAtmpSprpInfo(ADbConn);
  268. }
  269. //---------------------------------------------------------------------------
  270. bool TItsVilgFrcsManager::LoadVilgShprInfo(TADOConnection *ADbConn/*=NULL*/)
  271. {
  272. String sQry;
  273. TADOQuery *pADO = NULL;
  274. sQry = "SELECT * \r\n"
  275. " FROM TB_SHPR_RLCN_PNST \r\n"
  276. " WHERE ANNC_DT >= TO_CHAR(SYSDATE-120/1440,'YYYYMMDDHH24MISS') \r\n";
  277. try
  278. {
  279. int nTemp;
  280. float fTemp;
  281. FLists.Lock();
  282. try
  283. {
  284. pADO = new TADOQuery(NULL);
  285. pADO->Close();
  286. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  287. pADO->SQL->Clear();
  288. pADO->SQL->Text = sQry;
  289. pADO->Open();
  290. for( ; !pADO->Eof; pADO->Next())
  291. {
  292. String VILG_FRCS_ZONE_CD = pADO->FieldByName("VILG_FRCS_ZONE_CD")->AsString;
  293. TItsVilgFrcs *pObj = FLists.Find(VILG_FRCS_ZONE_CD);
  294. if (!pObj) continue;
  295. pObj->shpr.ANNC_DT = pADO->FieldByName("ANNC_DT")->AsString; // N VARCHAR2(14) N 발표 일시
  296. pObj->shpr.TMPR = pADO->FieldByName("TMPR")->AsString; // N NUMBER(6,3) Y 온도
  297. pObj->shpr.PRAM_1HH = pADO->FieldByName("PRAM_1HH")->AsString; // N NUMBER(5,2) Y 0 강수량 1시간
  298. pObj->shpr.ATMP_STTS = pADO->FieldByName("ATMP_STTS")->AsString; // N NUMBER(2) Y 대기 상태
  299. pObj->shpr.ESWS_WNSP = pADO->FieldByName("ESWS_WNSP")->AsString; // N NUMBER(5,2) Y 0 동서 풍속
  300. pObj->shpr.NRST_WNSP = pADO->FieldByName("NRST_WNSP")->AsString; // N NUMBER(5,2) Y 0 남북 풍속
  301. pObj->shpr.HMDT = pADO->FieldByName("HMDT")->AsString; // N NUMBER(5,2) Y 0 습도
  302. pObj->shpr.PRCP_STTS = pADO->FieldByName("PRCP_STTS")->AsString; // N NUMBER(3) Y 0 강수 상태
  303. pObj->shpr.THND_STTS = pADO->FieldByName("THND_STTS")->AsString; // N NUMBER(2) Y 낙뢰 상태
  304. pObj->shpr.WNDR = pADO->FieldByName("WNDR")->AsString; // N NUMBER(2) Y 풍향
  305. pObj->shpr.WNSP = pADO->FieldByName("WNSP")->AsString; // N NUMBER(5,2) Y 0 풍속
  306. //하늘상태 - 맑음(1), 구름조금(2), 구름많음(3), 흐림(4)
  307. switch(pObj->shpr.ATMP_STTS.ToIntDef(0))
  308. {
  309. case 1: pObj->shpr.ATMP_STTS_NM = "맑음"; break;
  310. case 2: pObj->shpr.ATMP_STTS_NM = "구름조금"; break;
  311. case 3: pObj->shpr.ATMP_STTS_NM = "구름많음"; break;
  312. case 4: pObj->shpr.ATMP_STTS_NM = "흐림"; break;
  313. default: pObj->shpr.ATMP_STTS_NM = "-"; break;
  314. }
  315. // 동서바람성분(m/s) - 동(+), 서(-)
  316. fTemp = pADO->FieldByName("ESWS_WNSP")->AsFloat;
  317. if (fTemp > 0) pObj->shpr.ESWS_WNSP_NM = "동 " + FormatFloat("#0.#0", fTemp);
  318. else if (fTemp < 0) pObj->shpr.ESWS_WNSP_NM = "서 " + FormatFloat("#0.#0", fTemp*-1);
  319. else pObj->shpr.ESWS_WNSP_NM = "-";
  320. // 남북바람성분(m/s) - 북(+), 남(-)
  321. fTemp = pADO->FieldByName("NRST_WNSP")->AsFloat;
  322. if (fTemp > 0) pObj->shpr.NRST_WNSP_NM = "북 " + FormatFloat("#0.#0", fTemp);
  323. else if (fTemp < 0) pObj->shpr.NRST_WNSP_NM = "남 " + FormatFloat("#0.#0", fTemp*-1);
  324. else pObj->shpr.NRST_WNSP_NM = "-";
  325. //강수형태 - 없음(0), 비(1), 비/눈(2), 눈(3)
  326. switch(pObj->shpr.PRCP_STTS.ToIntDef(0))
  327. {
  328. case 0: pObj->shpr.PRCP_STTS_NM = "없음"; break;
  329. case 1: pObj->shpr.PRCP_STTS_NM = "비"; break;
  330. case 2: pObj->shpr.PRCP_STTS_NM = "비/눈"; break;
  331. case 3: pObj->shpr.PRCP_STTS_NM = "눈"; break;
  332. default: pObj->shpr.PRCP_STTS_NM = "-"; break;
  333. }
  334. //낙뢰 - 없음(0), 있음(1)
  335. switch(pObj->shpr.THND_STTS.ToIntDef(0))
  336. {
  337. case 0: pObj->shpr.THND_STTS_NM = "없음"; break;
  338. case 1: pObj->shpr.THND_STTS_NM = "비"; break;
  339. default: pObj->shpr.THND_STTS_NM = "-"; break;
  340. }
  341. fTemp = pADO->FieldByName("WNSP")->AsFloat;
  342. pObj->shpr.WNSP_ALARM = VILG_NONE; // 강풍알람
  343. if (fTemp >= 21) pObj->shpr.WNSP_ALARM = VILG_ALARM;
  344. else if (fTemp >= 14) pObj->shpr.WNSP_ALARM = VILG_WARNING;
  345. if (pObj->shpr.WNSP_ALARM != VILG_NONE)
  346. {
  347. }
  348. }
  349. }
  350. catch(EDatabaseError &E)
  351. {
  352. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  353. DBERRORMSG("TItsVilgFrcsManager::LoadVilgShprInfo", String(E.ClassName()), E.Message, sQry);
  354. throw Exception(String(E.ClassName()) + E.Message);
  355. }
  356. catch(Exception &exception)
  357. {
  358. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  359. DBERRORMSG("TItsVilgFrcsManager::LoadVilgShprInfo", String(exception.ClassName()), exception.Message, sQry);
  360. throw Exception(String(exception.ClassName()) + exception.Message);
  361. }
  362. }
  363. __finally
  364. {
  365. if (pADO)
  366. {
  367. pADO->Close();
  368. delete pADO;
  369. }
  370. FLists.UnLock();
  371. }
  372. return true;
  373. }
  374. //---------------------------------------------------------------------------
  375. String TItsVilgFrcsManager::GetGradeDesc(String &ACode)
  376. {
  377. ACode = ACode.Trim();
  378. if (ACode == "1") return ATMP_GOOD;
  379. if (ACode == "2") return ATMP_NORMAL;
  380. if (ACode == "3") return ATMP_BAD;
  381. if (ACode == "4") return ATM_VERY_BAD;
  382. ACode = "0";
  383. return ATMP_NONE;
  384. }
  385. //---------------------------------------------------------------------------
  386. bool TItsVilgFrcsManager::LoadAtmpPltnInfo(TADOConnection *ADbConn/*=NULL*/)
  387. {
  388. String sQry;
  389. TADOQuery *pADO = NULL;
  390. sQry = "SELECT * \r\n"
  391. " FROM TB_ATMP_PLTN_RT_PNST \r\n"
  392. " WHERE MSRM_DT >= TO_CHAR(SYSDATE-120/1440,'YYYYMMDDHH24MISS') \r\n";
  393. try
  394. {
  395. int nTemp;
  396. float fTemp;
  397. FAtmpLists.Lock();
  398. try
  399. {
  400. pADO = new TADOQuery(NULL);
  401. pADO->Close();
  402. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  403. pADO->SQL->Clear();
  404. pADO->SQL->Text = sQry;
  405. pADO->Open();
  406. for( ; !pADO->Eof; pADO->Next())
  407. {
  408. String STTN_NM = pADO->FieldByName("STTN_NM")->AsString;
  409. TItsAtmpPltn *pObj = FAtmpLists.Find(STTN_NM);
  410. if (!pObj) continue;
  411. pObj->pnst.STTN_NM = STTN_NM; // N VARCHAR2(30) N 측정소 명
  412. pObj->pnst.MSRM_DT = pADO->FieldByName("MSRM_DT")->AsString; // N VARCHAR2(14) Y 측정 일시
  413. pObj->pnst.MSRM_SYST_NM = pADO->FieldByName("MSRM_SYST_NM")->AsString; // N VARCHAR2(10) Y 측정 시스템 명
  414. pObj->pnst.CO_VAL = pADO->FieldByName("CO_VAL")->AsString; // N VARCHAR2(10) Y CO 값
  415. pObj->pnst.SO2_VAL = pADO->FieldByName("SO2_VAL")->AsString; // N VARCHAR2(10) Y SO2 값
  416. pObj->pnst.NO2_VAL = pADO->FieldByName("NO2_VAL")->AsString; // N VARCHAR2(10) Y NO2 값
  417. pObj->pnst.O3_VAL = pADO->FieldByName("O3_VAL")->AsString; // N VARCHAR2(10) Y O3 값
  418. pObj->pnst.PM10_VAL = pADO->FieldByName("PM10_VAL")->AsString; // N VARCHAR2(10) Y PM10 값
  419. pObj->pnst.PM10_24HH_VAL = pADO->FieldByName("PM10_24HH_VAL")->AsString; // N VARCHAR2(10) Y PM10 24시간 값
  420. pObj->pnst.PM25_VAL = pADO->FieldByName("PM25_VAL")->AsString; // N VARCHAR2(10) Y PM25 값
  421. pObj->pnst.PM25_24HH_VAL = pADO->FieldByName("PM25_24HH_VAL")->AsString; // N VARCHAR2(10) Y PM25 24시간 값
  422. pObj->pnst.INTG_ATMP_VAL = pADO->FieldByName("INTG_ATMP_VAL")->AsString; // N VARCHAR2(10) Y 통합 대기 값
  423. pObj->pnst.INTG_ATMP_GRAD = pADO->FieldByName("INTG_ATMP_GRAD")->AsString; // N VARCHAR2(10) Y 통합 대기 등급
  424. pObj->pnst.SO2_GRAD = pADO->FieldByName("SO2_GRAD")->AsString; // N VARCHAR2(10) Y SO2 등급
  425. pObj->pnst.CO_GRAD = pADO->FieldByName("CO_GRAD")->AsString; // N VARCHAR2(10) Y CO 등급
  426. pObj->pnst.O3_GRAD = pADO->FieldByName("O3_GRAD")->AsString; // N VARCHAR2(10) Y O3 드급
  427. pObj->pnst.NO2_GRAD = pADO->FieldByName("NO2_GRAD")->AsString; // N VARCHAR2(10) Y NO2 등급
  428. pObj->pnst.PM10_24HH_GRAD = pADO->FieldByName("PM10_24HH_GRAD")->AsString; // N VARCHAR2(10) Y PM10 24시간 등급
  429. pObj->pnst.PM25_24HH_GRAD = pADO->FieldByName("PM25_24HH_GRAD")->AsString; // N VARCHAR2(10) Y PM25 24시간 등급
  430. pObj->pnst.PM10_1HH_GRAD = pADO->FieldByName("PM10_1HH_GRAD")->AsString; // N VARCHAR2(10) Y PM10 1시간 등급
  431. pObj->pnst.PM25_1HH_GRAD = pADO->FieldByName("PM25_1HH_GRAD")->AsString; // N VARCHAR2(10) Y PM25 1시간 등급
  432. pObj->pnst.INTG_ATMP_GRAD_NM = GetGradeDesc(pObj->pnst.INTG_ATMP_GRAD);
  433. pObj->pnst.SO2_GRAD_NM = GetGradeDesc(pObj->pnst.SO2_GRAD);
  434. pObj->pnst.CO_GRAD_NM = GetGradeDesc(pObj->pnst.CO_GRAD);
  435. pObj->pnst.O3_GRAD_NM = GetGradeDesc(pObj->pnst.O3_GRAD);
  436. pObj->pnst.NO2_GRAD_NM = GetGradeDesc(pObj->pnst.NO2_GRAD);
  437. pObj->pnst.PM10_24HH_GRAD_NM = GetGradeDesc(pObj->pnst.PM10_24HH_GRAD);
  438. pObj->pnst.PM25_24HH_GRAD_NM = GetGradeDesc(pObj->pnst.PM25_24HH_GRAD);
  439. pObj->pnst.PM10_1HH_GRAD_NM = GetGradeDesc(pObj->pnst.PM10_1HH_GRAD);
  440. pObj->pnst.PM25_1HH_GRAD_NM = GetGradeDesc(pObj->pnst.PM25_1HH_GRAD);
  441. }
  442. }
  443. catch(EDatabaseError &E)
  444. {
  445. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  446. DBERRORMSG("TItsVilgFrcsManager::LoadAtmpPltnInfo", String(E.ClassName()), E.Message, sQry);
  447. throw Exception(String(E.ClassName()) + E.Message);
  448. }
  449. catch(Exception &exception)
  450. {
  451. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  452. DBERRORMSG("TItsVilgFrcsManager::LoadAtmpPltnInfo", String(exception.ClassName()), exception.Message, sQry);
  453. throw Exception(String(exception.ClassName()) + exception.Message);
  454. }
  455. }
  456. __finally
  457. {
  458. if (pADO)
  459. {
  460. pADO->Close();
  461. delete pADO;
  462. }
  463. FAtmpLists.UnLock();
  464. }
  465. return true;
  466. }
  467. //---------------------------------------------------------------------------
  468. bool TItsVilgFrcsManager::LoadAtmpSprpInfo(TADOConnection *ADbConn/*=NULL*/)
  469. {
  470. String sQry;
  471. TADOQuery *pADO = NULL;
  472. sQry = "SELECT * \r\n"
  473. " FROM TB_ATMP_PLTN_SPRP_PNST A \r\n"
  474. " WHERE A.ANNC_DVSN = '1' \r\n"
  475. " AND A.ANNC_DT > TO_CHAR(SYSDATE-31/1440,'YYYYMMDDHH24') \r\n";
  476. try
  477. {
  478. FSprpLists.Lock();
  479. FSprpLists.RemoveAll();
  480. try
  481. {
  482. pADO = new TADOQuery(NULL);
  483. pADO->Close();
  484. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  485. pADO->SQL->Clear();
  486. pADO->SQL->Text = sQry;
  487. pADO->Open();
  488. for( ; !pADO->Eof; pADO->Next())
  489. {
  490. TItsAtmpSprp *pObj = new TItsAtmpSprp();
  491. pObj->ATMP_PLTN_KIND = pADO->FieldByName("ATMP_PLTN_KIND")->AsString.Trim(); // N VARCHAR2(1) N 대기 오염 종류(1:미세먼지, 2:초미세먼지)
  492. pObj->ANNC_DT = pADO->FieldByName("ANNC_DT")->AsString.Trim(); // N VARCHAR2(14) Y Update 시간
  493. pObj->REGN_CD = pADO->FieldByName("REGN_CD")->AsString.Trim(); // N VARCHAR2(1) Y 2 권역 코드(1:북부권, 2:동부권, 3:중부권, 4:남부권) 남양주=동부권
  494. pObj->ANNC_YMD = pADO->FieldByName("ANNC_YMD")->AsString.Trim(); // N VARCHAR2(8) Y 발표 일자(4)
  495. pObj->ANNC_HH = pADO->FieldByName("ANNC_HH")->AsString.Trim(); // N VARCHAR2(2) Y 발표 시간(2)
  496. pObj->ANNC_GRAD = pADO->FieldByName("ANNC_GRAD")->AsString.Trim(); // N VARCHAR2(1) Y 발표 등급(1:주의보, 2:경보, 5:황사경보)
  497. pObj->ANNC_DVSN = pADO->FieldByName("ANNC_DVSN")->AsString.Trim(); // N VARCHAR2(1) Y 발표 구분(1:발령, 0:해제, 2:발령내역없음)
  498. FSprpLists.Push(pObj->ATMP_PLTN_KIND, pObj);
  499. }
  500. }
  501. catch(EDatabaseError &E)
  502. {
  503. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  504. DBERRORMSG("TItsVilgFrcsManager::LoadAtmpSprpInfo", String(E.ClassName()), E.Message, sQry);
  505. throw Exception(String(E.ClassName()) + E.Message);
  506. }
  507. catch(Exception &exception)
  508. {
  509. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  510. DBERRORMSG("TItsVilgFrcsManager::LoadAtmpSprpInfo", String(exception.ClassName()), exception.Message, sQry);
  511. throw Exception(String(exception.ClassName()) + exception.Message);
  512. }
  513. }
  514. __finally
  515. {
  516. if (pADO)
  517. {
  518. pADO->Close();
  519. delete pADO;
  520. }
  521. FSprpLists.UnLock();
  522. }
  523. return true;
  524. }
  525. //---------------------------------------------------------------------------