CDSIncidentF.cpp 38 KB

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