CDSIncidentF.cpp 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSIncidentF.h"
  4. #include "VmsCommonLibF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TItsIncident::TItsIncident()
  8. {
  9. FMarker = NULL;
  10. Clear();
  11. }
  12. //---------------------------------------------------------------------------
  13. void TItsIncident::Clear()
  14. {
  15. }
  16. //---------------------------------------------------------------------------
  17. TItsIncident::~TItsIncident()
  18. {
  19. }
  20. //---------------------------------------------------------------------------
  21. //---------------------------------------------------------------------------
  22. TItsIncidentManager *ItsIncidentManager = NULL;
  23. //---------------------------------------------------------------------------
  24. /*
  25. * Incident Manager
  26. */
  27. TItsIncidentManager::TItsIncidentManager()
  28. {
  29. }
  30. //---------------------------------------------------------------------------
  31. TItsIncidentManager::~TItsIncidentManager()
  32. {
  33. }
  34. //---------------------------------------------------------------------------
  35. bool TItsIncidentManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  36. {
  37. bool bResult = true;
  38. String sQry;
  39. TADOQuery *pADO = NULL;
  40. sQry = "SELECT A.*, DECODE(B.INCD_OCRR_ID, NULL, 'N', 'Y') AS DISP_INCD \r\n"
  41. " FROM TB_INCD_OCRR A, VW_INCD_OCRR B \r\n"
  42. " WHERE A.INCD_OCRR_ID = B.INCD_OCRR_ID(+) \r\n";
  43. FLists.Lock();
  44. try
  45. {
  46. FLists.RemoveAll();
  47. try
  48. {
  49. pADO = new TADOQuery(NULL);
  50. pADO->Close();
  51. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  52. pADO->SQL->Clear();
  53. pADO->SQL->Text = sQry;
  54. pADO->Prepared = true;
  55. pADO->Open();
  56. for( ; !pADO->Eof; pADO->Next())
  57. {
  58. TItsIncident *pObj = new TItsIncident();
  59. pObj->INCD_OCRR_ID = pADO->FieldByName("INCD_OCRR_ID")->AsString;
  60. pObj->RGST_DT = pADO->FieldByName("RGST_DT")->AsString;
  61. pObj->INCD_ORGN_CD = pADO->FieldByName("INCD_ORGN_CD")->AsString;
  62. pObj->OCRR_LCTN_NM = pADO->FieldByName("OCRR_LCTN_NM")->AsString;
  63. pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsString;
  64. pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsString;
  65. pObj->INCD_EXPL = pADO->FieldByName("INCD_EXPL")->AsString;
  66. pObj->CMTR_GRAD_CD = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  67. pObj->IFMR_NM = pADO->FieldByName("IFMR_NM")->AsString;
  68. pObj->INCD_CNFM_MTHD_CD = pADO->FieldByName("INCD_CNFM_MTHD_CD")->AsString;
  69. pObj->INCD_CNFM_DT = pADO->FieldByName("INCD_CNFM_DT")->AsString;
  70. pObj->INCD_STRT_DT = pADO->FieldByName("INCD_STRT_DT")->AsString;
  71. pObj->INCD_END_PRAR_DT = pADO->FieldByName("INCD_END_PRAR_DT")->AsString;
  72. pObj->INCD_TYPE_CLSF_CD = pADO->FieldByName("INCD_TYPE_CLSF_CD")->AsString;
  73. pObj->INCD_TYPE_CD = pADO->FieldByName("INCD_TYPE_CD")->AsString;
  74. pObj->INCD_TITL = pADO->FieldByName("INCD_TITL")->AsString;
  75. pObj->INCD_SERN_CD = pADO->FieldByName("INCD_SERN_CD")->AsString;
  76. pObj->DELY_LNGT = pADO->FieldByName("DELY_LNGT")->AsString;
  77. pObj->INCD_LNGT = pADO->FieldByName("INCD_LNGT")->AsString;
  78. pObj->INCD_OCRR_LANE = pADO->FieldByName("INCD_OCRR_LANE")->AsString;
  79. if (pObj->INCD_OCRR_LANE.IsEmpty())
  80. {
  81. pObj->INCD_OCRR_LANE = "000000";
  82. }
  83. else
  84. if (pObj->INCD_OCRR_LANE.Length() != 6)
  85. {
  86. pObj->INCD_OCRR_LANE = "000000";
  87. }
  88. pObj->INCD_CLSR_LANE = pADO->FieldByName("INCD_CLSR_LANE")->AsString;
  89. pObj->TRVL_LMNT_TYPE_CD = pADO->FieldByName("TRVL_LMNT_TYPE_CD")->AsString;
  90. pObj->TRUB_VHCL_YN = pADO->FieldByName("TRUB_VHCL_YN")->AsString;
  91. pObj->FALT_YN = pADO->FieldByName("FALT_YN")->AsString;
  92. pObj->FRWT_YN = pADO->FieldByName("FRWT_YN")->AsString;
  93. pObj->UTIS_CNCT_YN = pADO->FieldByName("UTIS_CNCT_YN")->AsString;
  94. pObj->SMLT_VHCL_UNUM = pADO->FieldByName("SMLT_VHCL_UNUM")->AsString;
  95. pObj->MDLT_VHCL_UNUM = pADO->FieldByName("MDLT_VHCL_UNUM")->AsString;
  96. pObj->INJR_PNUM = pADO->FieldByName("INJR_PNUM")->AsString;
  97. pObj->FTLT_PNUM = pADO->FieldByName("FTLT_PNUM")->AsString;
  98. pObj->WTHR_CD = pADO->FieldByName("WTHR_CD")->AsString;
  99. pObj->RESP_LVL_CD = pADO->FieldByName("RESP_LVL_CD")->AsString;
  100. pObj->VMS_DSPL_YN = pADO->FieldByName("VMS_DSPL_YN")->AsString;
  101. pObj->INCD_PRGR_STEP_CD = pADO->FieldByName("INCD_PRGR_STEP_CD")->AsString;
  102. pObj->INCD_END_CNFM_MTHD_CD = pADO->FieldByName("INCD_END_CNFM_MTHD_CD")->AsString;
  103. pObj->INCD_END_DT = pADO->FieldByName("INCD_END_DT")->AsString;
  104. pObj->MBLZ_EQPM_CONT = pADO->FieldByName("MBLZ_EQPM_CONT")->AsString;
  105. pObj->MBLZ_PNUM = pADO->FieldByName("MBLZ_PNUM")->AsString;
  106. pObj->RECR_CONT = pADO->FieldByName("RECR_CONT")->AsString;
  107. pObj->RECR_PERD = pADO->FieldByName("RECR_PERD")->AsString;
  108. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  109. pObj->DISP_INCD = pADO->FieldByName("DISP_INCD")->AsString;
  110. FLists.Push(pObj->INCD_OCRR_ID, pObj);
  111. pObj->Completed = true;
  112. }
  113. }
  114. catch(EDatabaseError &E)
  115. {
  116. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  117. DBERRORLOG("TItsIncidentManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  118. return false;
  119. throw Exception(String(E.ClassName()) + E.Message);
  120. }
  121. catch(Exception &exception)
  122. {
  123. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  124. DBERRORLOG("TItsIncidentManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  125. return false;
  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 bResult;
  139. }
  140. //---------------------------------------------------------------------------
  141. bool TItsIncidentManager::LoadFromAutoIncident(TADOConnection *ADbConn/*=NULL*/)
  142. {
  143. return true;
  144. bool bResult = true;
  145. String sQry;
  146. TADOQuery *pADO = NULL;
  147. #if 0
  148. sQry = "SELECT A.LINK_ID, A.DETC_DT, A.CLCT_SPED_AVRG, A.ESTM_SPED_AVRG, \r\n"
  149. " A.REAL_YN, B.X_CRDN, B.Y_CRDN, C.ROAD_NAME \r\n"
  150. " FROM TB_INCD_ESTM_SECT A, TB_LINK_VRTX B, TB_LINK C \r\n"
  151. " WHERE A.LINK_ID = B.LINK_ID \r\n"
  152. " AND A.LINK_ID = C.LINK_ID \r\n"
  153. " AND B.ORD = '1' \r\n";
  154. #else
  155. sQry = "SELECT A.LINK_ID, A.DETC_DT, A.CLCT_SPED_AVRG, A.ESTM_SPED_AVRG, \r\n"
  156. " A.REAL_YN, B.X_CRDN, B.Y_CRDN, C.ROAD_NAME, \r\n"
  157. " B.NODE_NAME AS STNAME, D.NODE_NAME AS EDNAME \r\n"
  158. " FROM TB_INCD_ESTM_SECT A, TB_NODE B, TB_LINK C, TB_NODE D \r\n"
  159. " WHERE A.LINK_ID = C.LINK_ID \r\n"
  160. " AND C.F_NODE_ID = B.NODE_ID \r\n"
  161. " AND C.T_NODE_ID = D.NODE_ID \r\n"
  162. " AND A.DETC_DT >= TO_CHAR(SYSDATE - (2*60)/60/24, 'YYYYMMDDHH24MISS') \r\n"
  163. " AND A.REAL_YN = 'N' \r\n";
  164. #endif
  165. FAutoLists.Lock();
  166. try
  167. {
  168. FAutoIncident = 0;
  169. FAutoLists.RemoveAll();
  170. try
  171. {
  172. pADO = new TADOQuery(NULL);
  173. pADO->Close();
  174. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  175. pADO->SQL->Clear();
  176. pADO->SQL->Text = sQry;
  177. pADO->Prepared = true;
  178. pADO->Open();
  179. for( ; !pADO->Eof; pADO->Next())
  180. {
  181. TItsAutoIncident *pObj = new TItsAutoIncident();
  182. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  183. pObj->DETC_DT = pADO->FieldByName("DETC_DT")->AsString;
  184. pObj->CLCT_SPED_AVRG = pADO->FieldByName("CLCT_SPED_AVRG")->AsString;
  185. pObj->ESTM_SPED_AVRG = pADO->FieldByName("ESTM_SPED_AVRG")->AsString;
  186. pObj->REAL_YN = pADO->FieldByName("REAL_YN")->AsString;
  187. pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsString;
  188. pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsString;
  189. pObj->ROAD_NAME = pADO->FieldByName("ROAD_NAME")->AsString;
  190. pObj->STNAME = pADO->FieldByName("STNAME")->AsString;
  191. pObj->EDNAME = pADO->FieldByName("EDNAME")->AsString;
  192. FAutoLists.Push(String(FAutoIncident++), pObj);
  193. }
  194. }
  195. catch(EDatabaseError &E)
  196. {
  197. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  198. DBERRORLOG("TItsIncidentManager::LoadFromAutoIncident", String(E.ClassName()), E.Message, sQry);
  199. return false;
  200. throw Exception(String(E.ClassName()) + E.Message);
  201. }
  202. catch(Exception &exception)
  203. {
  204. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  205. DBERRORLOG("TItsIncidentManager::LoadFromAutoIncident", String(exception.ClassName()), exception.Message, sQry);
  206. return false;
  207. throw Exception(String(exception.ClassName()) + exception.Message);
  208. }
  209. }
  210. __finally
  211. {
  212. if (pADO)
  213. {
  214. pADO->Close();
  215. delete pADO;
  216. }
  217. FAutoLists.UnLock();
  218. }
  219. return bResult;
  220. }
  221. //---------------------------------------------------------------------------
  222. bool TItsIncidentManager::LoadFromVmsIncident(TADOConnection *ADbConn/*=NULL*/)
  223. {
  224. String sQry;
  225. TADOQuery *pADO = NULL;
  226. sQry = "SELECT * FROM TB_INCD_OCRR_VMS \r\n";
  227. FVmsLists.Lock();
  228. try
  229. {
  230. FVmsLists.RemoveAll();
  231. try
  232. {
  233. pADO = new TADOQuery(NULL);
  234. pADO->Close();
  235. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  236. pADO->SQL->Clear();
  237. pADO->SQL->Text = sQry;
  238. pADO->Prepared = true;
  239. pADO->Open();
  240. for( ; !pADO->Eof; pADO->Next())
  241. {
  242. TItsVmsIncident *pObj = new TItsVmsIncident();
  243. pObj->INCD_OCRR_ID = pADO->FieldByName("INCD_OCRR_ID")->AsString;
  244. pObj->STRT_LCTN_NM = pADO->FieldByName("STRT_LCTN_NM")->AsString;
  245. pObj->END_LCTN_NM = pADO->FieldByName("END_LCTN_NM")->AsString;
  246. pObj->OCRR_LCTN_NM = pADO->FieldByName("OCRR_LCTN_NM")->AsString;
  247. pObj->CMTR_GRAD_CD = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  248. pObj->INCD_CLSR_LANE = pADO->FieldByName("INCD_CLSR_LANE")->AsString;
  249. pObj->VMS_DSPL_YN = pADO->FieldByName("VMS_DSPL_YN")->AsString;
  250. pObj->INCD_PRGR_STEP_CD = pADO->FieldByName("INCD_PRGR_STEP_CD")->AsString;
  251. pObj->INCD_STRT_DT = pADO->FieldByName("INCD_STRT_DT")->AsString;
  252. pObj->INCD_END_PRAR_DT = pADO->FieldByName("INCD_END_PRAR_DT")->AsString;
  253. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  254. pObj->VMS_INCD_TYPE_CD = pADO->FieldByName("VMS_INCD_TYPE_CD")->AsString;
  255. pObj->VMS_INCD_DETL_TYPE_CD = pADO->FieldByName("VMS_INCD_DETL_TYPE_CD")->AsString;
  256. pObj->VMS_INCD_RSTR_TYPE_CD = pADO->FieldByName("VMS_INCD_RSTR_TYPE_CD")->AsString;
  257. FVmsLists.Push(pObj->INCD_OCRR_ID, pObj);
  258. }
  259. }
  260. catch(EDatabaseError &E)
  261. {
  262. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  263. DBERRORMSG("TItsIncidentManager::LoadFromVmsIncident", String(E.ClassName()), E.Message, sQry);
  264. throw Exception(String(E.ClassName()) + E.Message);
  265. }
  266. catch(Exception &exception)
  267. {
  268. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  269. DBERRORMSG("TItsIncidentManager::LoadFromVmsIncident", String(exception.ClassName()), exception.Message, sQry);
  270. throw Exception(String(exception.ClassName()) + exception.Message);
  271. }
  272. }
  273. __finally
  274. {
  275. if (pADO)
  276. {
  277. pADO->Close();
  278. delete pADO;
  279. }
  280. FVmsLists.UnLock();
  281. }
  282. return true;
  283. }
  284. //---------------------------------------------------------------------------
  285. bool TItsIncidentManager::UpdateIncidentInfo(TItsIncident *AObj, TADOConnection *ADbConn/*=NULL*/)
  286. {
  287. String sQry;
  288. TADOQuery *pADO = NULL;
  289. sQry = "UPDATE TB_INCD_OCRR \r\n"
  290. " SET INCD_ORGN_CD = :p02, \r\n"
  291. " OCRR_LCTN_NM = :p03, \r\n"
  292. " X_CRDN = :p04, \r\n"
  293. " Y_CRDN = :p05, \r\n"
  294. " INCD_EXPL = :p06, \r\n"
  295. " CMTR_GRAD_CD = :p07, \r\n"
  296. " IFMR_NM = :p08, \r\n"
  297. " INCD_CNFM_MTHD_CD = :p09, \r\n"
  298. " INCD_CNFM_DT = :p10, \r\n"
  299. " INCD_STRT_DT = :p11, \r\n"
  300. " INCD_END_PRAR_DT = :p12, \r\n"
  301. " INCD_TYPE_CLSF_CD = :p13, \r\n"
  302. " INCD_TYPE_CD = :p14, \r\n"
  303. " INCD_TITL = :p15, \r\n"
  304. " INCD_SERN_CD = :p16, \r\n"
  305. " DELY_LNGT = :p17, \r\n"
  306. " INCD_LNGT = :p18, \r\n"
  307. " INCD_OCRR_LANE = :p19, \r\n"
  308. " INCD_CLSR_LANE = :p20, \r\n"
  309. " TRVL_LMNT_TYPE_CD = :p21, \r\n"
  310. " TRUB_VHCL_YN = :p22, \r\n"
  311. " FALT_YN = :p23, \r\n"
  312. " FRWT_YN = :p24, \r\n"
  313. " UTIS_CNCT_YN = :p25, \r\n"
  314. " SMLT_VHCL_UNUM = :p26, \r\n"
  315. " MDLT_VHCL_UNUM = :p27, \r\n"
  316. " INJR_PNUM = :p28, \r\n"
  317. " FTLT_PNUM = :p29, \r\n"
  318. " WTHR_CD = :p30, \r\n"
  319. " RESP_LVL_CD = :p31, \r\n"
  320. " VMS_DSPL_YN = :p32, \r\n"
  321. " INCD_PRGR_STEP_CD = :p33, \r\n"
  322. " INCD_END_CNFM_MTHD_CD = :p34, \r\n"
  323. " INCD_END_DT = :p35, \r\n"
  324. " MBLZ_EQPM_CONT = :p36, \r\n"
  325. " MBLZ_PNUM = :p37, \r\n"
  326. " RECR_CONT = :p38, \r\n"
  327. " RECR_PERD = :p39, \r\n"
  328. " LINK_ID = :p40 \r\n"
  329. " WHERE INCD_OCRR_ID = :p01 \r\n";
  330. try
  331. {
  332. try
  333. {
  334. pADO = new TADOQuery(NULL);
  335. pADO->Close();
  336. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  337. pADO->SQL->Clear();
  338. pADO->SQL->Text = sQry;
  339. pADO->Parameters->ParamByName("p01")->Value = AObj->INCD_OCRR_ID;
  340. pADO->Parameters->ParamByName("p02")->Value = AObj->INCD_ORGN_CD;
  341. pADO->Parameters->ParamByName("p03")->Value = AObj->OCRR_LCTN_NM;
  342. pADO->Parameters->ParamByName("p04")->Value = AObj->X_CRDN;
  343. pADO->Parameters->ParamByName("p05")->Value = AObj->Y_CRDN;
  344. pADO->Parameters->ParamByName("p06")->Value = AObj->INCD_EXPL;
  345. pADO->Parameters->ParamByName("p07")->Value = AObj->CMTR_GRAD_CD;
  346. pADO->Parameters->ParamByName("p08")->Value = AObj->IFMR_NM;
  347. pADO->Parameters->ParamByName("p09")->Value = AObj->INCD_CNFM_MTHD_CD;
  348. pADO->Parameters->ParamByName("p10")->Value = AObj->INCD_CNFM_DT;
  349. pADO->Parameters->ParamByName("p11")->Value = AObj->INCD_STRT_DT;
  350. pADO->Parameters->ParamByName("p12")->Value = AObj->INCD_END_PRAR_DT;
  351. pADO->Parameters->ParamByName("p13")->Value = AObj->INCD_TYPE_CLSF_CD;
  352. pADO->Parameters->ParamByName("p14")->Value = AObj->INCD_TYPE_CD;
  353. pADO->Parameters->ParamByName("p15")->Value = AObj->INCD_TITL;
  354. pADO->Parameters->ParamByName("p16")->Value = AObj->INCD_SERN_CD;
  355. pADO->Parameters->ParamByName("p17")->Value = AObj->DELY_LNGT;
  356. pADO->Parameters->ParamByName("p18")->Value = AObj->INCD_LNGT;
  357. pADO->Parameters->ParamByName("p19")->Value = AObj->INCD_OCRR_LANE;
  358. pADO->Parameters->ParamByName("p20")->Value = AObj->INCD_CLSR_LANE;
  359. pADO->Parameters->ParamByName("p21")->Value = AObj->TRVL_LMNT_TYPE_CD;
  360. pADO->Parameters->ParamByName("p22")->Value = AObj->TRUB_VHCL_YN;
  361. pADO->Parameters->ParamByName("p23")->Value = AObj->FALT_YN;
  362. pADO->Parameters->ParamByName("p24")->Value = AObj->FRWT_YN;
  363. pADO->Parameters->ParamByName("p25")->Value = AObj->UTIS_CNCT_YN;
  364. pADO->Parameters->ParamByName("p26")->Value = AObj->SMLT_VHCL_UNUM;
  365. pADO->Parameters->ParamByName("p27")->Value = AObj->MDLT_VHCL_UNUM;
  366. pADO->Parameters->ParamByName("p28")->Value = AObj->INJR_PNUM;
  367. pADO->Parameters->ParamByName("p29")->Value = AObj->FTLT_PNUM;
  368. pADO->Parameters->ParamByName("p30")->Value = AObj->WTHR_CD;
  369. pADO->Parameters->ParamByName("p31")->Value = AObj->RESP_LVL_CD;
  370. pADO->Parameters->ParamByName("p32")->Value = AObj->VMS_DSPL_YN;
  371. pADO->Parameters->ParamByName("p33")->Value = AObj->INCD_PRGR_STEP_CD;
  372. pADO->Parameters->ParamByName("p34")->Value = AObj->INCD_END_CNFM_MTHD_CD;
  373. pADO->Parameters->ParamByName("p35")->Value = AObj->INCD_END_DT;
  374. pADO->Parameters->ParamByName("p36")->Value = AObj->MBLZ_EQPM_CONT;
  375. pADO->Parameters->ParamByName("p37")->Value = AObj->MBLZ_PNUM;
  376. pADO->Parameters->ParamByName("p38")->Value = AObj->RECR_CONT;
  377. pADO->Parameters->ParamByName("p39")->Value = AObj->RECR_PERD;
  378. pADO->Parameters->ParamByName("p40")->Value = AObj->LINK_ID;
  379. pADO->ExecSQL();
  380. return true;
  381. }
  382. catch(EDatabaseError &E)
  383. {
  384. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  385. DBERRORMSG("TItsIncidentManager::UpdateIncidentInfo", String(E.ClassName()), E.Message, sQry);
  386. throw Exception(String(E.ClassName()) + E.Message);
  387. }
  388. catch(Exception &exception)
  389. {
  390. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  391. DBERRORMSG("TItsIncidentManager::UpdateIncidentInfo", String(exception.ClassName()), exception.Message, sQry);
  392. throw Exception(String(exception.ClassName()) + exception.Message);
  393. }
  394. }
  395. __finally
  396. {
  397. if (pADO)
  398. {
  399. pADO->Close();
  400. delete pADO;
  401. }
  402. UpdateIncidentLoc(AObj, ADbConn);
  403. }
  404. return false;
  405. }
  406. //---------------------------------------------------------------------------
  407. bool TItsIncidentManager::DeleteIncidentLoc(String AIncidId, TADOConnection *ADbConn/*=NULL*/)
  408. {
  409. String sQry;
  410. TADOQuery *pADO = NULL;
  411. sQry = "DELETE ROTA.INCIDENT_LOC \r\n"
  412. " WHERE INCIDENTID = :p01 \r\n";
  413. try
  414. {
  415. try
  416. {
  417. pADO = new TADOQuery(NULL);
  418. pADO->Close();
  419. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  420. pADO->SQL->Clear();
  421. pADO->SQL->Text = sQry;
  422. pADO->Parameters->ParamByName("p01")->Value = AIncidId;
  423. pADO->ExecSQL();
  424. return true;
  425. }
  426. catch(EDatabaseError &E)
  427. {
  428. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  429. DBERRORMSG("TItsIncidentManager::DeleteIncidentLoc", String(E.ClassName()), E.Message, sQry);
  430. throw Exception(String(E.ClassName()) + E.Message);
  431. }
  432. catch(Exception &exception)
  433. {
  434. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  435. DBERRORMSG("TItsIncidentManager::DeleteIncidentLoc", String(exception.ClassName()), exception.Message, sQry);
  436. throw Exception(String(exception.ClassName()) + exception.Message);
  437. }
  438. }
  439. __finally
  440. {
  441. if (pADO)
  442. {
  443. pADO->Close();
  444. delete pADO;
  445. }
  446. }
  447. return false;
  448. }
  449. //---------------------------------------------------------------------------
  450. bool TItsIncidentManager::UpdateIncidentLoc(TItsIncident *AObj, TADOConnection *ADbConn/*=NULL*/)
  451. {
  452. String sQry;
  453. TADOQuery *pADO = NULL;
  454. //공단에서 넘어온 돌발은 공단연계가 표출안되게
  455. if (AObj->INCD_ORGN_CD == "IST5")
  456. {
  457. return true;
  458. }
  459. //1. 기존 정보가 어떤것인지 확인하기 귀찮으니까 일단 삭제해 버리자.
  460. DeleteIncidentLoc(AObj->INCD_OCRR_ID, ADbConn);
  461. //2. 공단으로 정보를 연계하는 경우에만 정보를 입력하도록 한다.
  462. if (AObj->UTIS_CNCT_YN != "Y") return true;
  463. sQry = "INSERT INTO ROTA.INCIDENT_LOC ( \r\n"
  464. " INCIDENTID, \r\n"
  465. " LOGDATE, \r\n"
  466. " REPORTDATE, \r\n"
  467. " LINKID, \r\n"
  468. " USERID, \r\n"
  469. " REPORTERID, \r\n"
  470. " STARTDATE, \r\n"
  471. " ENDDATE, \r\n"
  472. " TRAFFICGRADE, \r\n"
  473. " TROUBLEGRADE, \r\n"
  474. " INCIDENTTITLE, \r\n"
  475. " INCIDENTINFO, \r\n"
  476. " INCIDENTCODE, \r\n"
  477. " INCIDENTSUBCODE, \r\n"
  478. " LOCATION, \r\n"
  479. " DATARESTYPE, \r\n"
  480. " COORDX, \r\n"
  481. " COORDY ) \r\n"
  482. " VALUES (:p01, \r\n"
  483. " TO_DATE(:p02, 'YYYYMMDDHH24MISS'), \r\n"
  484. " TO_DATE(:p03, 'YYYYMMDDHH24MISS'), \r\n"
  485. " :p04, \r\n"
  486. " :p05, \r\n"
  487. " :p06, \r\n"
  488. " TO_DATE(:p07, 'YYYYMMDDHH24MISS'), \r\n"
  489. " TO_DATE(:p08, 'YYYYMMDDHH24MISS'), \r\n"
  490. " :p09, \r\n"
  491. " :p10, \r\n"
  492. " :p11, \r\n"
  493. " :p12, \r\n"
  494. " :p13, \r\n"
  495. " :p14, \r\n"
  496. " :p15, \r\n"
  497. " :p16, \r\n"
  498. " :p17, \r\n"
  499. " :p18) \r\n";
  500. try
  501. {
  502. try
  503. {
  504. pADO = new TADOQuery(NULL);
  505. pADO->Close();
  506. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  507. pADO->SQL->Clear();
  508. pADO->SQL->Text = sQry;
  509. pADO->Parameters->ParamByName("p01")->Value = AObj->INCD_OCRR_ID;
  510. pADO->Parameters->ParamByName("p02")->Value = AObj->RGST_DT;
  511. pADO->Parameters->ParamByName("p03")->Value = AObj->INCD_CNFM_DT;
  512. pADO->Parameters->ParamByName("p04")->Value = AObj->LINK_ID;
  513. pADO->Parameters->ParamByName("p05")->Value = AObj->INCD_OCRR_ID.SubString(1, 3);
  514. pADO->Parameters->ParamByName("p06")->Value = AObj->INCD_OCRR_ID.SubString(1, 3);
  515. pADO->Parameters->ParamByName("p07")->Value = AObj->INCD_STRT_DT;
  516. pADO->Parameters->ParamByName("p08")->Value = AObj->INCD_END_PRAR_DT;
  517. pADO->Parameters->ParamByName("p09")->Value = AObj->CMTR_GRAD_CD.SubString(1, 2);
  518. pADO->Parameters->ParamByName("p10")->Value = AObj->INCD_SERN_CD;
  519. pADO->Parameters->ParamByName("p11")->Value = AObj->INCD_TITL.Trim();
  520. pADO->Parameters->ParamByName("p12")->Value = AObj->INCD_EXPL.Trim().SubString(1, 250);
  521. pADO->Parameters->ParamByName("p13")->Value = AObj->INCD_TYPE_CLSF_CD;
  522. pADO->Parameters->ParamByName("p14")->Value = AObj->INCD_TYPE_CD;
  523. pADO->Parameters->ParamByName("p15")->Value = AObj->OCRR_LCTN_NM.Trim();
  524. pADO->Parameters->ParamByName("p16")->Value = "";
  525. pADO->Parameters->ParamByName("p17")->Value = AObj->X_CRDN;
  526. pADO->Parameters->ParamByName("p18")->Value = AObj->Y_CRDN;
  527. pADO->ExecSQL();
  528. return true;
  529. }
  530. catch(EDatabaseError &E)
  531. {
  532. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  533. DBERRORMSG("TItsIncidentManager::UpdateIncidentLoc", String(E.ClassName()), E.Message, sQry);
  534. throw Exception(String(E.ClassName()) + E.Message);
  535. }
  536. catch(Exception &exception)
  537. {
  538. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  539. DBERRORMSG("TItsIncidentManager::UpdateIncidentLoc", String(exception.ClassName()), exception.Message, sQry);
  540. throw Exception(String(exception.ClassName()) + exception.Message);
  541. }
  542. }
  543. __finally
  544. {
  545. if (pADO)
  546. {
  547. pADO->Close();
  548. delete pADO;
  549. }
  550. }
  551. return false;
  552. }
  553. //---------------------------------------------------------------------------
  554. bool TItsIncidentManager::MergeVmsIncidentInfo(String AINCD_OCRR_ID, // '돌발상황 발생 ID
  555. String ASTRT_LCTN_NM, // '시작 위치 명
  556. String AEND_LCTN_NM, // '종료 위치 명
  557. String AOCRR_LCTN_NM, // '발생 위치 명
  558. String ACMTR_GRAD_CD, // '소통 등급 코드
  559. String AINCD_CLSR_LANE, // '돌발상황 차단 차로
  560. String AVMS_DSPL_YN, // 'VMS 표출 여부
  561. String AINCD_PRGR_STEP_CD, // '돌발상황 진행 단계 코드
  562. String AINCD_STRT_DT, // '돌발상황 시작 일시
  563. String AINCD_END_PRAR_DT, // '돌발상황 종료 예정 일시
  564. String ALINK_ID, // '링크ID
  565. String AVMS_INCD_TYPE_CD, // 'VMS 돌발유형코드
  566. String AVMS_INCD_DETL_TYPE_CD, // 'VMS 돌발세부유형코드
  567. String AVMS_INCD_RSTR_TYPE_CD, // 'VMS 돌발통제코드
  568. TADOConnection *ADbConn/*=NULL*/)
  569. {
  570. String sQry;
  571. TADOQuery *pADO = NULL;
  572. sQry = "MERGE INTO TB_INCD_OCRR_VMS L \r\n"
  573. " USING (SELECT :p01 INCD_OCRR_ID, \r\n"
  574. " :p02 STRT_LCTN_NM, \r\n"
  575. " :p03 END_LCTN_NM, \r\n"
  576. " :p04 OCRR_LCTN_NM, \r\n"
  577. " :p05 CMTR_GRAD_CD, \r\n"
  578. " :p06 INCD_CLSR_LANE, \r\n"
  579. " :p07 VMS_DSPL_YN, \r\n"
  580. " :p08 INCD_PRGR_STEP_CD, \r\n"
  581. " :p09 INCD_STRT_DT, \r\n"
  582. " :p10 INCD_END_PRAR_DT, \r\n"
  583. " :p11 LINK_ID, \r\n"
  584. " :p12 VMS_INCD_TYPE_CD, \r\n"
  585. " :p13 VMS_INCD_DETL_TYPE_CD, \r\n"
  586. " :p14 VMS_INCD_RSTR_TYPE_CD \r\n"
  587. " FROM DUAL ) M \r\n"
  588. "ON (L.INCD_OCRR_ID = M.INCD_OCRR_ID) \r\n"
  589. "WHEN MATCHED THEN \r\n"
  590. " UPDATE SET L.STRT_LCTN_NM = M.STRT_LCTN_NM, \r\n"
  591. " L.END_LCTN_NM = M.END_LCTN_NM, \r\n"
  592. " L.OCRR_LCTN_NM = M.OCRR_LCTN_NM, \r\n"
  593. " L.CMTR_GRAD_CD = M.CMTR_GRAD_CD, \r\n"
  594. " L.INCD_CLSR_LANE = M.INCD_CLSR_LANE, \r\n"
  595. " L.VMS_DSPL_YN = M.VMS_DSPL_YN, \r\n"
  596. " L.INCD_PRGR_STEP_CD = M.INCD_PRGR_STEP_CD, \r\n"
  597. " L.INCD_STRT_DT = M.INCD_STRT_DT, \r\n"
  598. " L.INCD_END_PRAR_DT = M.INCD_END_PRAR_DT, \r\n"
  599. " L.LINK_ID = M.LINK_ID, \r\n"
  600. " L.VMS_INCD_TYPE_CD = M.VMS_INCD_TYPE_CD, \r\n"
  601. " L.VMS_INCD_DETL_TYPE_CD = M.VMS_INCD_DETL_TYPE_CD, \r\n"
  602. " L.VMS_INCD_RSTR_TYPE_CD = M.VMS_INCD_RSTR_TYPE_CD \r\n"
  603. "WHEN NOT MATCHED THEN \r\n"
  604. " INSERT (L.INCD_OCRR_ID, L.STRT_LCTN_NM, L.END_LCTN_NM, \r\n"
  605. " L.OCRR_LCTN_NM, L.CMTR_GRAD_CD, L.INCD_CLSR_LANE, \r\n"
  606. " L.VMS_DSPL_YN, L.INCD_PRGR_STEP_CD, L.INCD_STRT_DT, \r\n"
  607. " L.INCD_END_PRAR_DT, L.LINK_ID, L.VMS_INCD_TYPE_CD, \r\n"
  608. " L.VMS_INCD_DETL_TYPE_CD, L.VMS_INCD_RSTR_TYPE_CD) \r\n"
  609. " VALUES (M.INCD_OCRR_ID, M.STRT_LCTN_NM, M.END_LCTN_NM, \r\n"
  610. " M.OCRR_LCTN_NM, M.CMTR_GRAD_CD, M.INCD_CLSR_LANE, \r\n"
  611. " M.VMS_DSPL_YN, M.INCD_PRGR_STEP_CD, M.INCD_STRT_DT, \r\n"
  612. " M.INCD_END_PRAR_DT, M.LINK_ID, M.VMS_INCD_TYPE_CD, \r\n"
  613. " M.VMS_INCD_DETL_TYPE_CD, M.VMS_INCD_RSTR_TYPE_CD) \r\n";
  614. try
  615. {
  616. try
  617. {
  618. pADO = new TADOQuery(NULL);
  619. pADO->Close();
  620. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  621. pADO->SQL->Clear();
  622. pADO->SQL->Text = sQry;
  623. pADO->Parameters->ParamByName("p01")->Value = AINCD_OCRR_ID;
  624. pADO->Parameters->ParamByName("p02")->Value = ASTRT_LCTN_NM;
  625. pADO->Parameters->ParamByName("p03")->Value = AEND_LCTN_NM;
  626. pADO->Parameters->ParamByName("p04")->Value = AOCRR_LCTN_NM;
  627. pADO->Parameters->ParamByName("p05")->Value = ACMTR_GRAD_CD;
  628. pADO->Parameters->ParamByName("p06")->Value = AINCD_CLSR_LANE;
  629. pADO->Parameters->ParamByName("p07")->Value = AVMS_DSPL_YN;
  630. pADO->Parameters->ParamByName("p08")->Value = AINCD_PRGR_STEP_CD;
  631. pADO->Parameters->ParamByName("p09")->Value = AINCD_STRT_DT;
  632. pADO->Parameters->ParamByName("p10")->Value = AINCD_END_PRAR_DT;
  633. pADO->Parameters->ParamByName("p11")->Value = ALINK_ID;
  634. pADO->Parameters->ParamByName("p12")->Value = AVMS_INCD_TYPE_CD;
  635. pADO->Parameters->ParamByName("p13")->Value = AVMS_INCD_DETL_TYPE_CD;
  636. pADO->Parameters->ParamByName("p14")->Value = AVMS_INCD_RSTR_TYPE_CD;
  637. pADO->ExecSQL();
  638. return true;
  639. }
  640. catch(EDatabaseError &E)
  641. {
  642. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  643. DBERRORMSG("TItsIncidentManager::MergeVmsIncidentInfo", String(E.ClassName()), E.Message, sQry);
  644. throw Exception(String(E.ClassName()) + E.Message);
  645. }
  646. catch(Exception &exception)
  647. {
  648. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  649. DBERRORMSG("TItsIncidentManager::MergeVmsIncidentInfo", String(exception.ClassName()), exception.Message, sQry);
  650. throw Exception(String(exception.ClassName()) + exception.Message);
  651. }
  652. }
  653. __finally
  654. {
  655. if (pADO)
  656. {
  657. pADO->Close();
  658. delete pADO;
  659. }
  660. }
  661. return false;
  662. }
  663. //---------------------------------------------------------------------------
  664. bool TItsIncidentManager::UpdateVmsIncidentInfo(String AINCD_OCRR_ID, String AINCD_PRGR_STEP_CD, TADOConnection *ADbConn/*=NULL*/)
  665. {
  666. String sQry;
  667. TADOQuery *pADO = NULL;
  668. sQry = "UPDATE TB_INCD_OCRR_VMS \r\n"
  669. " SET INCD_PRGR_STEP_CD = :p02 \r\n"
  670. " WHERE INCD_OCRR_ID = :p01 \r\n";
  671. try
  672. {
  673. try
  674. {
  675. pADO = new TADOQuery(NULL);
  676. pADO->Close();
  677. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  678. pADO->SQL->Clear();
  679. pADO->SQL->Text = sQry;
  680. pADO->Parameters->ParamByName("p01")->Value = AINCD_OCRR_ID;
  681. pADO->Parameters->ParamByName("p02")->Value = AINCD_PRGR_STEP_CD;
  682. pADO->ExecSQL();
  683. return true;
  684. }
  685. catch(EDatabaseError &E)
  686. {
  687. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  688. DBERRORMSG("TItsIncidentManager::UpdateVmsIncidentInfo", String(E.ClassName()), E.Message, sQry);
  689. throw Exception(String(E.ClassName()) + E.Message);
  690. }
  691. catch(Exception &exception)
  692. {
  693. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  694. DBERRORMSG("TItsIncidentManager::UpdateVmsIncidentInfo", String(exception.ClassName()), exception.Message, sQry);
  695. throw Exception(String(exception.ClassName()) + exception.Message);
  696. }
  697. }
  698. __finally
  699. {
  700. if (pADO)
  701. {
  702. pADO->Close();
  703. delete pADO;
  704. }
  705. }
  706. return false;
  707. }
  708. //---------------------------------------------------------------------------
  709. bool TItsIncidentManager::GetNextIncidentId(String ACenterId, String &AIncidentId, TADOConnection *ADbConn/*=NULL*/)
  710. {
  711. String sQry;
  712. TADOQuery *pADO = NULL;
  713. #if 0
  714. sQry = "SELECT SQ_INCD_ID.NEXTVAL AS NEWID FROM DUAL \r\n";
  715. #else
  716. sQry = "SELECT LPAD(NVL(MAX(SUBSTR(INCD_OCRR_ID, -9)), '000000000') + 1, 9, '0') AS NEWID \r\n"
  717. " FROM TB_INCD_OCRR \r\n"
  718. " WHERE SUBSTR(INCD_OCRR_ID, 1, 3) = :p01 \r\n";
  719. #endif
  720. AIncidentId = "";
  721. try
  722. {
  723. try
  724. {
  725. pADO = new TADOQuery(NULL);
  726. pADO->Close();
  727. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  728. pADO->SQL->Clear();
  729. pADO->SQL->Text = sQry;
  730. #if 0
  731. pADO->Prepared = true;
  732. pADO->Open();
  733. AIncidentId = pADO->FieldByName("NEWID")->AsString;
  734. #else
  735. pADO->Parameters->ParamByName("p01")->Value = ACenterId;
  736. pADO->Prepared = true;
  737. pADO->Open();
  738. AIncidentId = ACenterId + pADO->FieldByName("NEWID")->AsString;
  739. #endif
  740. return true;
  741. }
  742. catch(EDatabaseError &E)
  743. {
  744. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  745. DBERRORMSG("TItsIncidentManager::GetNextIncidentId", String(E.ClassName()), E.Message, sQry);
  746. throw Exception(String(E.ClassName()) + E.Message);
  747. }
  748. catch(Exception &exception)
  749. {
  750. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  751. DBERRORMSG("TItsIncidentManager::GetNextIncidentId", String(exception.ClassName()), exception.Message, sQry);
  752. throw Exception(String(exception.ClassName()) + exception.Message);
  753. }
  754. }
  755. __finally
  756. {
  757. if (pADO)
  758. {
  759. pADO->Close();
  760. delete pADO;
  761. }
  762. }
  763. return false;
  764. }
  765. //---------------------------------------------------------------------------