CDSFacilityCodeF.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSFacilityCodeF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. //---------------------------------------------------------------------------
  8. TFacilityCodeManager *FacilityCodeManager = NULL;
  9. //---------------------------------------------------------------------------
  10. /*
  11. * TFacilityCodeManager Manager
  12. */
  13. TFacilityCodeManager::TFacilityCodeManager()
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17. TFacilityCodeManager::~TFacilityCodeManager()
  18. {
  19. }
  20. //---------------------------------------------------------------------------
  21. bool TFacilityCodeManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  22. {
  23. LoadEqpmTypeDb(ADbConn);
  24. LoadFailOccrDb(ADbConn);
  25. LoadFailCodeDb(ADbConn);
  26. return true;
  27. }
  28. //---------------------------------------------------------------------------
  29. bool TFacilityCodeManager::LoadHndlTypeDb(TADOConnection *ADbConn/*=NULL*/)
  30. {
  31. String sQry;
  32. TADOQuery *pADO = NULL;
  33. sQry = "SELECT FAIL_HNDL_CD, \r\n"
  34. " FAIL_HNDL_CD_NM \r\n"
  35. " FROM TB_FAIL_HNDL_TYPE \r\n";
  36. try
  37. {
  38. FHndlLists.Lock();
  39. FHndlLists.RemoveAll();
  40. try
  41. {
  42. pADO = new TADOQuery(NULL);
  43. pADO->Close();
  44. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  45. pADO->SQL->Clear();
  46. pADO->SQL->Text = sQry;
  47. pADO->Open();
  48. for( ; !pADO->Eof; pADO->Next())
  49. {
  50. TFacilityHndlType *pCode = new TFacilityHndlType();
  51. pCode->FAIL_HNDL_CD = pADO->FieldByName("FAIL_HNDL_CD")->AsString; //장애 처리 코드
  52. pCode->FAIL_HNDL_CD_NM = pADO->FieldByName("FAIL_HNDL_CD_NM")->AsString; //장애 처리 코드 명
  53. pCode->Completed = true;
  54. pCode->Modified = false;
  55. FHndlLists.Push(pCode->FAIL_HNDL_CD, pCode);
  56. }
  57. }
  58. catch(EDatabaseError &E)
  59. {
  60. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  61. DBERRORMSG("TFacilityCodeManager::LoadHndlTypeDb", String(E.ClassName()), E.Message, sQry);
  62. throw Exception(String(E.ClassName()) + E.Message);
  63. }
  64. catch(Exception &exception)
  65. {
  66. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  67. DBERRORMSG("TFacilityCodeManager::LoadHndlTypeDb", String(exception.ClassName()), exception.Message, sQry);
  68. throw Exception(String(exception.ClassName()) + exception.Message);
  69. }
  70. }
  71. __finally
  72. {
  73. if (pADO)
  74. {
  75. pADO->Close();
  76. delete pADO;
  77. }
  78. FHndlLists.UnLock();
  79. }
  80. return true;
  81. }
  82. //---------------------------------------------------------------------------
  83. bool TFacilityCodeManager::LoadEqpmTypeDb(TADOConnection *ADbConn/*=NULL*/)
  84. {
  85. String sQry;
  86. TADOQuery *pADO = NULL;
  87. sQry = "SELECT EQPM_TYPE_CD, \r\n"
  88. " EQPM_TYPE_CD_NM, \r\n"
  89. " FCLT_TYPE \r\n"
  90. " FROM TB_FAIL_EQPM_TYPE \r\n";
  91. try
  92. {
  93. FLists.Lock();
  94. FLists.RemoveAll();
  95. try
  96. {
  97. pADO = new TADOQuery(NULL);
  98. pADO->Close();
  99. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  100. pADO->SQL->Clear();
  101. pADO->SQL->Text = sQry;
  102. pADO->Open();
  103. for( ; !pADO->Eof; pADO->Next())
  104. {
  105. TFacilityEqpmType *pEqpm = new TFacilityEqpmType();
  106. pEqpm->EQPM_TYPE_CD = pADO->FieldByName("EQPM_TYPE_CD")->AsString; //장비 유형 코드
  107. pEqpm->EQPM_TYPE_CD_NM = pADO->FieldByName("EQPM_TYPE_CD_NM")->AsString; //장비 유형 코드 명
  108. pEqpm->FCLT_TYPE = pADO->FieldByName("FCLT_TYPE")->AsString; //시설물 유형
  109. pEqpm->Completed = true;
  110. pEqpm->Modified = false;
  111. FLists.Push(pEqpm->EQPM_TYPE_CD, pEqpm);
  112. }
  113. }
  114. catch(EDatabaseError &E)
  115. {
  116. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  117. DBERRORMSG("TFacilityCodeManager::LoadEqpmTypeDb", String(E.ClassName()), E.Message, sQry);
  118. throw Exception(String(E.ClassName()) + E.Message);
  119. }
  120. catch(Exception &exception)
  121. {
  122. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  123. DBERRORMSG("TFacilityCodeManager::LoadEqpmTypeDb", String(exception.ClassName()), exception.Message, sQry);
  124. throw Exception(String(exception.ClassName()) + exception.Message);
  125. }
  126. }
  127. __finally
  128. {
  129. if (pADO)
  130. {
  131. pADO->Close();
  132. delete pADO;
  133. }
  134. FLists.UnLock();
  135. }
  136. return true;
  137. }
  138. //---------------------------------------------------------------------------
  139. bool TFacilityCodeManager::LoadFailOccrDb(TADOConnection *ADbConn/*=NULL*/)
  140. {
  141. String sQry;
  142. TADOQuery *pADO = NULL;
  143. sQry = "SELECT A.EQPM_TYPE_CD, B.FAIL_OCRR_CD, \r\n"
  144. " MIN(C.FAIL_OCRR_CD_NM) AS FAIL_OCRR_CD_NM \r\n"
  145. " FROM TB_FAIL_EQPM_TYPE A, \r\n"
  146. " TB_FAIL_DETL_CD B, \r\n"
  147. " TB_FAIL_OCRR_DVSN C \r\n"
  148. " WHERE A.EQPM_TYPE_CD = B.EQPM_TYPE_CD \r\n"
  149. " AND B.FAIL_OCRR_CD = C.FAIL_OCRR_CD \r\n"
  150. " GROUP BY A.EQPM_TYPE_CD, B.FAIL_OCRR_CD \r\n";
  151. try
  152. {
  153. FLists.Lock();
  154. try
  155. {
  156. pADO = new TADOQuery(NULL);
  157. pADO->Close();
  158. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  159. pADO->SQL->Clear();
  160. pADO->SQL->Text = sQry;
  161. pADO->Open();
  162. for( ; !pADO->Eof; pADO->Next())
  163. {
  164. String EQPM_TYPE_CD = pADO->FieldByName("EQPM_TYPE_CD")->AsString; //장비 유형 코드
  165. TFacilityEqpmType *pEqpm = FLists.Find(EQPM_TYPE_CD);
  166. if (!pEqpm) continue;
  167. TFacilityFailOccr *pOccr = new TFacilityFailOccr();
  168. pOccr->EQPM_TYPE_CD = EQPM_TYPE_CD; //장비 유형 코드
  169. pOccr->FAIL_OCRR_CD = pADO->FieldByName("FAIL_OCRR_CD")->AsString; //장애 발생 코드
  170. pOccr->FAIL_OCRR_CD_NM = pADO->FieldByName("FAIL_OCRR_CD_NM")->AsString; //장애 발생 코드 명
  171. pOccr->Completed = true;
  172. pOccr->Modified = false;
  173. pEqpm->FLists.Push(pOccr->FAIL_OCRR_CD, pOccr);
  174. }
  175. }
  176. catch(EDatabaseError &E)
  177. {
  178. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  179. DBERRORMSG("TFacilityCodeManager::LoadFailOccrDb", String(E.ClassName()), E.Message, sQry);
  180. throw Exception(String(E.ClassName()) + E.Message);
  181. }
  182. catch(Exception &exception)
  183. {
  184. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  185. DBERRORMSG("TFacilityCodeManager::LoadFailOccrDb", String(exception.ClassName()), exception.Message, sQry);
  186. throw Exception(String(exception.ClassName()) + exception.Message);
  187. }
  188. }
  189. __finally
  190. {
  191. if (pADO)
  192. {
  193. pADO->Close();
  194. delete pADO;
  195. }
  196. FLists.UnLock();
  197. }
  198. return true;
  199. }
  200. //---------------------------------------------------------------------------
  201. bool TFacilityCodeManager::LoadFailCodeDb(TADOConnection *ADbConn/*=NULL*/)
  202. {
  203. String sQry;
  204. TADOQuery *pADO = NULL;
  205. sQry = "SELECT A.EQPM_TYPE_CD, B.FAIL_OCRR_CD, B.FAIL_CD, \r\n"
  206. " MIN(C.FAIL_CD_NM) AS FAIL_CD_NM \r\n"
  207. " FROM TB_FAIL_EQPM_TYPE A, \r\n"
  208. " TB_FAIL_DETL_CD B, \r\n"
  209. " TB_FAIL_TYPE C \r\n"
  210. " WHERE A.EQPM_TYPE_CD = B.EQPM_TYPE_CD \r\n"
  211. " AND B.FAIL_CD = C.FAIL_CD \r\n"
  212. " GROUP BY A.EQPM_TYPE_CD, B.FAIL_OCRR_CD, B.FAIL_CD \r\n";
  213. try
  214. {
  215. FLists.Lock();
  216. try
  217. {
  218. pADO = new TADOQuery(NULL);
  219. pADO->Close();
  220. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  221. pADO->SQL->Clear();
  222. pADO->SQL->Text = sQry;
  223. pADO->Open();
  224. for( ; !pADO->Eof; pADO->Next())
  225. {
  226. String EQPM_TYPE_CD = pADO->FieldByName("EQPM_TYPE_CD")->AsString; //장비 유형 코드
  227. TFacilityEqpmType *pEqpm = FLists.Find(EQPM_TYPE_CD);
  228. if (!pEqpm) continue;
  229. String FAIL_OCRR_CD = pADO->FieldByName("FAIL_OCRR_CD")->AsString; //장비 유형 코드
  230. TFacilityFailOccr *pOccr = pEqpm->FLists.Find(FAIL_OCRR_CD);
  231. if (!pOccr) continue;
  232. TFacilityFailCode *pCode = new TFacilityFailCode();
  233. pCode->EQPM_TYPE_CD = EQPM_TYPE_CD; //장비 유형 코드
  234. pCode->FAIL_OCRR_CD = FAIL_OCRR_CD; //장애 발생 코드
  235. pCode->FAIL_CD = pADO->FieldByName("FAIL_CD")->AsString; //장애 코드 명
  236. pCode->FAIL_CD_NM = pADO->FieldByName("FAIL_CD_NM")->AsString; //장애 코드 명
  237. pCode->Completed = true;
  238. pCode->Modified = false;
  239. pOccr->FLists.Push(pCode->FAIL_CD, pCode);
  240. }
  241. }
  242. catch(EDatabaseError &E)
  243. {
  244. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  245. DBERRORMSG("TFacilityCodeManager::LoadFailCodeDb", String(E.ClassName()), E.Message, sQry);
  246. throw Exception(String(E.ClassName()) + E.Message);
  247. }
  248. catch(Exception &exception)
  249. {
  250. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  251. DBERRORMSG("TFacilityCodeManager::LoadFailCodeDb", String(exception.ClassName()), exception.Message, sQry);
  252. throw Exception(String(exception.ClassName()) + exception.Message);
  253. }
  254. }
  255. __finally
  256. {
  257. if (pADO)
  258. {
  259. pADO->Close();
  260. delete pADO;
  261. }
  262. FLists.UnLock();
  263. }
  264. return true;
  265. }
  266. //---------------------------------------------------------------------------