CDSParkF.cpp 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSParkF.h"
  4. #include "CDSCtlrF.h"
  5. #include "VmsUtilsF.h"
  6. #include "VMSCommLibF.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. //---------------------------------------------------------------------------
  10. //---------------------------------------------------------------------------
  11. TCDSPark::TCDSPark()
  12. {
  13. REG_PRK_CMPRT_CO = 0;
  14. RUN_PRK_CMPRT_CO = 0;
  15. PARKING_CGS_STTUS = 9;
  16. REMNDR_PRK_CMPRT_CO = 0;
  17. Init();
  18. }
  19. //---------------------------------------------------------------------------
  20. TCDSPark::~TCDSPark()
  21. {
  22. }
  23. //---------------------------------------------------------------------------
  24. void TCDSPark::Init()
  25. {
  26. SUCCESS = false;
  27. CMNC_STTS_CD = "CMS1";
  28. PARKING_CGS_STTUS_DESC = "-";
  29. PARKING_CGS_STTUS = 9;
  30. REMNDR_PRK_CMPRT_CO = 0;
  31. }
  32. //---------------------------------------------------------------------------
  33. void TCDSPark::CalcCgsSttus()
  34. {
  35. if (!SUCCESS) {
  36. PARKING_CGS_STTUS_DESC = "점검중";
  37. PARKING_CGS_STTUS = 9;
  38. return;
  39. }
  40. // 주차장 상태 코드 (0 : 여유 (점유 50% 미만), 1 : 보통 (점유 70% 미만), 2 : 혼잡 (점유 90% 미만), 3 : 만차 (점유 90% 초과))
  41. switch(PARKING_CGS_STTUS)
  42. {
  43. case 0: PARKING_CGS_STTUS_DESC = "여유"; break;
  44. case 1: PARKING_CGS_STTUS_DESC = "보통"; break;
  45. case 2: PARKING_CGS_STTUS_DESC = "혼잡"; break;
  46. case 3: PARKING_CGS_STTUS_DESC = "만차"; break;
  47. default: PARKING_CGS_STTUS_DESC = "점검중";
  48. SUCCESS = false;
  49. break;
  50. }
  51. }
  52. //---------------------------------------------------------------------------
  53. int TCDSPark::GetGradeColor()
  54. {
  55. if (!SUCCESS) {
  56. return 3;//황색(Yellow)
  57. }
  58. switch(PARKING_CGS_STTUS)
  59. {
  60. case 0: return 2;//밝은녹색(Lime)
  61. case 1: return 2;//밝은녹색(Lime)
  62. case 2: return 3;//황색(Yellow)
  63. case 3: return 1;//적색(Red)
  64. default: return grade_delay;;
  65. }
  66. }
  67. //---------------------------------------------------------------------------
  68. AnsiString TCDSPark::GetParkName() {
  69. return VMS_DSPL_NM;
  70. }
  71. //---------------------------------------------------------------------------
  72. AnsiString TCDSPark::GetCountText(AnsiString ATxt, int ACount) {
  73. if (!SUCCESS) {
  74. return " ";
  75. }
  76. bool isSpace = false;
  77. String sType = "";
  78. if (ATxt.Pos(" ")) {
  79. isSpace = true;
  80. }
  81. if (ATxt.Pos("대")) {
  82. sType = "대";
  83. }
  84. if (ATxt.Pos("면")) {
  85. sType = "면";
  86. }
  87. if (sType != "") {
  88. if (isSpace) {
  89. return AnsiString(ACount) + " " + sType;
  90. }
  91. return AnsiString(ACount) + sType;
  92. }
  93. return AnsiString(ACount);
  94. }
  95. //---------------------------------------------------------------------------
  96. AnsiString TCDSPark::GetRemainCo(AnsiString ATxt) {
  97. return GetCountText(ATxt, REMNDR_PRK_CMPRT_CO);
  98. }
  99. //---------------------------------------------------------------------------
  100. AnsiString TCDSPark::GetTotalCo(AnsiString ATxt) {
  101. return GetCountText(ATxt, REG_PRK_CMPRT_CO);
  102. }
  103. //---------------------------------------------------------------------------
  104. AnsiString TCDSPark::GetCgsSttus() {
  105. return PARKING_CGS_STTUS_DESC;
  106. }
  107. //---------------------------------------------------------------------------
  108. //---------------------------------------------------------------------------
  109. TCDSParkManager *CDSParkManager = NULL;
  110. //---------------------------------------------------------------------------
  111. TCDSParkManager::TCDSParkManager()
  112. {
  113. }
  114. //---------------------------------------------------------------------------
  115. TCDSParkManager::~TCDSParkManager()
  116. {
  117. FLists.RemoveAll();
  118. }
  119. //---------------------------------------------------------------------------
  120. int TCDSParkManager::LoadFromDb(TADOConnection *ADbConn)
  121. {
  122. String sQry;
  123. TADOQuery *pADO = NULL;
  124. int nSelCnt = 0;
  125. DWORD dwTick = GetTickCount();
  126. SELSTART;
  127. sQry = "SELECT A.PRK_PLCE_NMBR, A.PRK_PLCE_MANAGE_NO, \r\n"
  128. " A.PRK_PLCE_NM, A.VMS_DSPL_NM, \r\n"
  129. " NVL(B.CMNC_STTS_CD, 'CMS1') AS CMNC_STTS_CD, \r\n"
  130. " A.PRK_CMPRT_CO AS REG_PRK_CMPRT_CO, \r\n"
  131. " NVL(C.PRK_CMPRT_CO, A.PRK_CMPRT_CO) AS RUN_PRK_CMPRT_CO, \r\n"
  132. " NVL(C.PARKING_CGS_STTUS, 9) AS PARKING_CGS_STTUS, \r\n"
  133. " NVL(C.REMNDR_PRK_CMPRT_CO, 0) AS REMNDR_PRK_CMPRT_CO \r\n"
  134. " FROM TB_PRK_PLCE A, TB_PRK_PLCE_STTS B, TB_PRK_PLCE_RT C \r\n"
  135. " WHERE A.DEL_YN = 'N' \r\n"
  136. " AND A.PIS_TYPE != 'N' \r\n"
  137. " AND A.PRK_PLCE_NMBR = B.PRK_PLCE_NMBR(+) \r\n"
  138. " AND A.PRK_PLCE_NMBR = C.PRK_PLCE_NMBR(+) \r\n";
  139. try
  140. {
  141. FOR_STL(TCDSPark*, pTmp, FLists)
  142. {
  143. pTmp->Init();
  144. }
  145. TCDSPark *pObj;
  146. try
  147. {
  148. pADO = new TADOQuery(NULL);
  149. pADO->Connection = ADbConn;
  150. SQLText(pADO, sQry, true);
  151. SQLOpen(pADO);
  152. for( ; !pADO->Eof; pADO->Next())
  153. {
  154. AnsiString PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString;
  155. pObj = FLists.Find(PRK_PLCE_NMBR);
  156. if (!pObj)
  157. {
  158. pObj = new TCDSPark();
  159. pObj->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  160. pObj->PRK_PLCE_MANAGE_NO = pADO->FieldByName("PRK_PLCE_MANAGE_NO")->AsString;
  161. FLists.Push(PRK_PLCE_NMBR, pObj);
  162. }
  163. pObj->PRK_PLCE_NM = pADO->FieldByName("PRK_PLCE_NM")->AsString;
  164. pObj->VMS_DSPL_NM = pADO->FieldByName("VMS_DSPL_NM")->AsString;
  165. pObj->CMNC_STTS_CD = pADO->FieldByName("CMNC_STTS_CD")->AsString;
  166. pObj->REG_PRK_CMPRT_CO = pADO->FieldByName("REG_PRK_CMPRT_CO")->AsInteger;
  167. pObj->RUN_PRK_CMPRT_CO = pADO->FieldByName("RUN_PRK_CMPRT_CO")->AsInteger;
  168. pObj->PARKING_CGS_STTUS = pADO->FieldByName("PARKING_CGS_STTUS")->AsInteger;
  169. pObj->REMNDR_PRK_CMPRT_CO = pADO->FieldByName("REMNDR_PRK_CMPRT_CO")->AsInteger;
  170. if (pObj->VMS_DSPL_NM == "") {
  171. pObj->VMS_DSPL_NM = pObj->PRK_PLCE_NM;
  172. }
  173. if (pObj->CMNC_STTS_CD == "CMS0") {
  174. pObj->SUCCESS = true;
  175. }
  176. pObj->CalcCgsSttus();
  177. nSelCnt++;
  178. }
  179. }
  180. catch(EDatabaseError &E)
  181. {
  182. DBERROR(String(E.ClassName()), E.Message, sQry);
  183. return -1;
  184. }
  185. catch(Exception &e)
  186. {
  187. DBERROR(String(e.ClassName()), e.Message, sQry);
  188. return -1;
  189. }
  190. }
  191. __finally
  192. {
  193. SQLFree(pADO);
  194. }
  195. SELEND(nSelCnt, dwTick);
  196. if (JOBTIME(dwTick) > g_AppCfg.JobTimeout) {
  197. TIMEDELAY(nSelCnt, dwTick);
  198. }
  199. return nSelCnt;
  200. }
  201. //---------------------------------------------------------------------------