CDSSafeF.cpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSSafeF.h"
  4. #include "CDSCtlrF.h"
  5. #include "VmsUtilsF.h"
  6. #include "VMSCommLibF.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. //---------------------------------------------------------------------------
  10. //---------------------------------------------------------------------------
  11. TCDSSafe::TCDSSafe()
  12. {
  13. }
  14. //---------------------------------------------------------------------------
  15. TCDSSafe::~TCDSSafe()
  16. {
  17. }
  18. //---------------------------------------------------------------------------
  19. void TCDSSafe::Init()
  20. {
  21. }
  22. //---------------------------------------------------------------------------
  23. //---------------------------------------------------------------------------
  24. TCDSSafeManager *CDSSafeManager = NULL;
  25. //---------------------------------------------------------------------------
  26. TCDSSafeManager::TCDSSafeManager()
  27. {
  28. }
  29. //---------------------------------------------------------------------------
  30. TCDSSafeManager::~TCDSSafeManager()
  31. {
  32. FLists.RemoveAll();
  33. }
  34. //---------------------------------------------------------------------------
  35. int TCDSSafeManager::LoadSafeOccrInfo(TADOConnection *ADbConn)
  36. {
  37. String sQry;
  38. TADOQuery *pADO = NULL;
  39. int nSelCnt = 0;
  40. DDBSTART;
  41. sQry = "SELECT X.VMS_CTLR_NMBR, \r\n"
  42. " Y.SAFE_ALM_ID, Y.MSG_TP, Y.RGST_DT, Y.ALM_STRT_DT, Y.ALM_END_DT, \r\n"
  43. " Y.MSG_LN_1, Y.MSG_LN_2, Y.MSG_LN_3 \r\n"
  44. " FROM (SELECT A.VMS_CTLR_NMBR \r\n"
  45. " FROM TB_VMS_CTLR A \r\n"
  46. " WHERE A.DEL_YN = 'N' \r\n"
  47. " ) X, \r\n"
  48. " (SELECT B.SAFE_ALM_ID, B.MSG_TP, B.RGST_DT, B.ALM_STRT_DT, B.ALM_END_DT, \r\n"
  49. " B.MSG_LN_1, B.MSG_LN_2, B.MSG_LN_3 \r\n"
  50. " FROM TB_VMS_SAFE_ALM B \r\n"
  51. " WHERE TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') BETWEEN B.ALM_STRT_DT AND B.ALM_END_DT \r\n"
  52. " ) Y \r\n"
  53. " ORDER BY X.VMS_CTLR_NMBR, Y.SAFE_ALM_ID, Y.MSG_TP \r\n";
  54. try
  55. {
  56. pADO = new TADOQuery(NULL);
  57. pADO->Connection = ADbConn;
  58. try
  59. {
  60. SQLText(pADO, sQry, false);
  61. SQLOpen(pADO);
  62. for( ; !pADO->Eof; pADO->Next())
  63. {
  64. AnsiString CTLR_NMBR = pADO->FieldByName("VMS_CTLR_NMBR")->AsAnsiString;
  65. TCDSCtlr *pObj = CDSCtlrManager->FLists.Find(CTLR_NMBR);
  66. if (!pObj) continue;
  67. if (!pObj->FProvide) continue;
  68. if (pObj->SAFE->Count >= VMS_MAX_SAFE)
  69. {
  70. MERROR("VMS Safe Over: %s, %d", CTLR_NMBR.c_str(), pObj->SAFE->Count);
  71. continue;
  72. }
  73. VMS_SAFE_DETL* pEvt = &pObj->SAFE->Unit[pObj->SAFE->Count];
  74. pEvt->SAFE_ALM_ID = pADO->FieldByName("SAFE_ALM_ID")->AsString.Trim(); //재난안전 알람 ID(YYYYMMDDNNNNN)
  75. pEvt->MSG_TP = pADO->FieldByName("MSG_TP")->AsInteger; //표출메시지종류(2:2단메시지,3:3단메시지)
  76. pEvt->RGST_DT = pADO->FieldByName("RGST_DT")->AsString.Trim(); //등록 일시(YYYYMMDDHH24MISS)
  77. pEvt->ALM_STRT_DT = pADO->FieldByName("ALM_STRT_DT")->AsString.Trim(); //방송시작시각(YYYYMMDDHH24MISS)
  78. pEvt->ALM_END_DT = pADO->FieldByName("ALM_END_DT")->AsString.Trim(); //방송종료시각(YYYYMMDDHH24MISS)
  79. pEvt->MSG_LN_1 = pADO->FieldByName("MSG_LN_1")->AsString; //재난안전문자 1열
  80. pEvt->MSG_LN_2 = pADO->FieldByName("MSG_LN_2")->AsString; //재난안전문자 2열
  81. pEvt->MSG_LN_3 = pADO->FieldByName("MSG_LN_3")->AsString; //재난안전문자 3열
  82. pObj->SAFE->Count++;
  83. nSelCnt++;
  84. }
  85. if (nSelCnt > 0)
  86. {
  87. sQry = "UPDATE TB_VMS_SAFE_ALM \r\n"
  88. " SET ALM_CNFM = 'Y' \r\n"
  89. " WHERE ALM_CNFM = 'N' \r\n"
  90. " AND TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') BETWEEN ALM_STRT_DT AND ALM_END_DT \r\n";
  91. pADO->SQL->Clear();
  92. pADO->SQL->Text = sQry;
  93. SQLExec(pADO);
  94. }
  95. }
  96. catch(EDatabaseError &E)
  97. {
  98. DBERROR(String(E.ClassName()), E.Message, sQry);
  99. }
  100. catch(Exception &e)
  101. {
  102. DBERROR(String(e.ClassName()), e.Message, sQry);
  103. }
  104. }
  105. __finally
  106. {
  107. SQLFree(pADO);
  108. }
  109. IDBSTOP(nSelCnt);
  110. return nSelCnt;
  111. }
  112. //---------------------------------------------------------------------------