CDSParkF.cpp 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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. #if 0
  34. void TCDSPark::CalcTotal()
  35. {
  36. if (!SUCCESS) return;
  37. TOTAL = GNRL_RMND_PRZN_NUM +
  38. LGVH_RMND_PRZN_NUM +
  39. HVVH_RMND_PRZN_NUM +
  40. EMVH_RMND_PRZN_NUM +
  41. HNDC_RMND_PRZN_NUM +
  42. WMON_RMND_PRZN_NUM +
  43. ELVH_RMND_PRZN_NUM +
  44. ETC_RMND_PRZN_NUM;
  45. if (TOTAL == 0)
  46. {
  47. CNGT_DESC = "만차";
  48. CNGT_LEVL = 3;
  49. }
  50. else
  51. if (TOTAL > CNGT_NPLS)
  52. {
  53. CNGT_DESC = "원활";
  54. CNGT_LEVL = 1;
  55. }
  56. else
  57. {
  58. CNGT_DESC = "혼잡";
  59. CNGT_LEVL = 2;
  60. }
  61. }
  62. #endif
  63. //---------------------------------------------------------------------------
  64. void TCDSPark::CalcCgsSttus()
  65. {
  66. if (!SUCCESS) {
  67. PARKING_CGS_STTUS_DESC = "점검중";
  68. PARKING_CGS_STTUS = 9;
  69. return;
  70. }
  71. // 주차장 상태 코드 (0 : 여유 (점유 50% 미만), 1 : 보통 (점유 70% 미만), 2 : 혼잡 (점유 90% 미만), 3 : 만차 (점유 90% 초과))
  72. switch(PARKING_CGS_STTUS)
  73. {
  74. case 0: PARKING_CGS_STTUS_DESC = "여유"; break;
  75. case 1: PARKING_CGS_STTUS_DESC = "보통"; break;
  76. case 2: PARKING_CGS_STTUS_DESC = "혼잡"; break;
  77. case 3: PARKING_CGS_STTUS_DESC = "만차"; break;
  78. default: PARKING_CGS_STTUS_DESC = "점검중";
  79. SUCCESS = false;
  80. break;
  81. }
  82. }
  83. //---------------------------------------------------------------------------
  84. int TCDSPark::GetGradeColor()
  85. {
  86. if (!SUCCESS) {
  87. return 3;//황색(Yellow)
  88. }
  89. switch(PARKING_CGS_STTUS)
  90. {
  91. case 0: return 2;//밝은녹색(Lime)
  92. case 1: return 2;//밝은녹색(Lime)
  93. case 2: return 3;//황색(Yellow)
  94. case 3: return 1;//적색(Red)
  95. default: return grade_delay;;
  96. }
  97. }
  98. //---------------------------------------------------------------------------
  99. AnsiString TCDSPark::GetParkName() {
  100. return VMS_DSPL_NM;
  101. }
  102. //---------------------------------------------------------------------------
  103. AnsiString TCDSPark::GetCountText(AnsiString ATxt, int ACount) {
  104. if (!SUCCESS) {
  105. return " ";
  106. }
  107. bool isSpace = false;
  108. String sType = "";
  109. if (ATxt.Pos(" ")) {
  110. isSpace = true;
  111. }
  112. if (ATxt.Pos("대")) {
  113. sType = "대";
  114. }
  115. if (ATxt.Pos("면")) {
  116. sType = "면";
  117. }
  118. if (sType != "") {
  119. if (isSpace) {
  120. return AnsiString(ACount) + " " + sType;
  121. }
  122. return AnsiString(ACount) + sType;
  123. }
  124. return AnsiString(ACount);
  125. }
  126. //---------------------------------------------------------------------------
  127. AnsiString TCDSPark::GetRemainCo(AnsiString ATxt) {
  128. return GetCountText(ATxt, REMNDR_PRK_CMPRT_CO);
  129. }
  130. //---------------------------------------------------------------------------
  131. AnsiString TCDSPark::GetTotalCo(AnsiString ATxt) {
  132. return GetCountText(ATxt, REG_PRK_CMPRT_CO);
  133. }
  134. //---------------------------------------------------------------------------
  135. AnsiString TCDSPark::GetCgsSttus() {
  136. return PARKING_CGS_STTUS_DESC;
  137. }
  138. //---------------------------------------------------------------------------
  139. //---------------------------------------------------------------------------
  140. TCDSParkManager *CDSParkManager = NULL;
  141. //---------------------------------------------------------------------------
  142. TCDSParkManager::TCDSParkManager()
  143. {
  144. }
  145. //---------------------------------------------------------------------------
  146. TCDSParkManager::~TCDSParkManager()
  147. {
  148. FLists.RemoveAll();
  149. }
  150. //---------------------------------------------------------------------------
  151. int TCDSParkManager::LoadFromDb(TADOConnection *ADbConn)
  152. {
  153. String sQry;
  154. TADOQuery *pADO = NULL;
  155. int nSelCnt = 0;
  156. DDBSTART;
  157. sQry = "SELECT A.PRK_PLCE_NMBR, A.PRK_PLCE_MANAGE_NO, \r\n"
  158. " A.PRK_PLCE_NM, A.VMS_DSPL_NM, \r\n"
  159. " NVL(B.CMNC_STTS_CD, 'CMS1') AS CMNC_STTS_CD, \r\n"
  160. " A.PRK_CMPRT_CO AS REG_PRK_CMPRT_CO, \r\n"
  161. " NVL(C.PRK_CMPRT_CO, A.PRK_CMPRT_CO) AS RUN_PRK_CMPRT_CO, \r\n"
  162. " NVL(C.PARKING_CGS_STTUS, 9) AS PARKING_CGS_STTUS, \r\n"
  163. " NVL(C.REMNDR_PRK_CMPRT_CO, 0) AS REMNDR_PRK_CMPRT_CO \r\n"
  164. " FROM TB_PRK_PLCE A, TB_PRK_PLCE_STTS B, TB_PRK_PLCE_RT C \r\n"
  165. " WHERE A.DEL_YN = 'N' \r\n"
  166. " AND A.PIS_TYPE != 'N' \r\n"
  167. " AND A.PRK_PLCE_NMBR = B.PRK_PLCE_NMBR(+) \r\n"
  168. " AND A.PRK_PLCE_NMBR = C.PRK_PLCE_NMBR(+) \r\n";
  169. try
  170. {
  171. FOR_STL(TCDSPark*, pTmp, FLists)
  172. {
  173. pTmp->Init();
  174. }
  175. TCDSPark *pObj;
  176. try
  177. {
  178. pADO = new TADOQuery(NULL);
  179. pADO->Connection = ADbConn;
  180. SQLText(pADO, sQry, true);
  181. SQLOpen(pADO);
  182. for( ; !pADO->Eof; pADO->Next())
  183. {
  184. AnsiString PRK_PLCE_NMBR = pADO->FieldByName("PRK_PLCE_NMBR")->AsString;
  185. pObj = FLists.Find(PRK_PLCE_NMBR);
  186. if (!pObj)
  187. {
  188. pObj = new TCDSPark();
  189. pObj->PRK_PLCE_NMBR = PRK_PLCE_NMBR;
  190. pObj->PRK_PLCE_MANAGE_NO = pADO->FieldByName("PRK_PLCE_MANAGE_NO")->AsString;
  191. FLists.Push(PRK_PLCE_NMBR, pObj);
  192. }
  193. pObj->PRK_PLCE_NM = pADO->FieldByName("PRK_PLCE_NM")->AsString;
  194. pObj->VMS_DSPL_NM = pADO->FieldByName("VMS_DSPL_NM")->AsString;
  195. pObj->CMNC_STTS_CD = pADO->FieldByName("CMNC_STTS_CD")->AsString;
  196. pObj->REG_PRK_CMPRT_CO = pADO->FieldByName("REG_PRK_CMPRT_CO")->AsInteger;
  197. pObj->RUN_PRK_CMPRT_CO = pADO->FieldByName("RUN_PRK_CMPRT_CO")->AsInteger;
  198. pObj->PARKING_CGS_STTUS = pADO->FieldByName("PARKING_CGS_STTUS")->AsInteger;
  199. pObj->REMNDR_PRK_CMPRT_CO = pADO->FieldByName("REMNDR_PRK_CMPRT_CO")->AsInteger;
  200. if (pObj->VMS_DSPL_NM == "") {
  201. pObj->VMS_DSPL_NM = pObj->PRK_PLCE_NM;
  202. }
  203. if (pObj->CMNC_STTS_CD == "CMS0") {
  204. pObj->SUCCESS = true;
  205. }
  206. pObj->CalcCgsSttus();
  207. nSelCnt++;
  208. }
  209. }
  210. catch(EDatabaseError &E)
  211. {
  212. DBERROR(String(E.ClassName()), E.Message, sQry);
  213. return -1;
  214. }
  215. catch(Exception &e)
  216. {
  217. DBERROR(String(e.ClassName()), e.Message, sQry);
  218. return -1;
  219. }
  220. }
  221. __finally
  222. {
  223. SQLFree(pADO);
  224. }
  225. IDBSTOP(nSelCnt);
  226. return nSelCnt;
  227. }
  228. //---------------------------------------------------------------------------