CDSFacilityCodeF.cpp 11 KB

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