CDSIncidentF.cpp 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089
  1. //---------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #include "CDSIncidentF.h"
  4. #include "AppGlobalF.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. TItsIncident::TItsIncident()
  8. {
  9. FMarker = NULL;
  10. Clear();
  11. }
  12. //---------------------------------------------------------------------------
  13. void TItsIncident::Clear()
  14. {
  15. #if 0
  16. FINCD_OCRR_ID = ""; //돌발상황 발생 ID
  17. FRGST_DT = ""; //등록 일시
  18. FINCD_ORGN_CD = ""; //돌발상황 원본 코드 : IST
  19. FOCRR_LCTN_NM = ""; //발생 위치 명
  20. FX_CRDN = ""; //X 좌표
  21. FY_CRDN = ""; //Y 좌표
  22. FINCD_EXPL = ""; //돌발상황 설명
  23. FCMTR_GRAD_CD = ""; //소통 등급 코드 : LTCU
  24. FIFMR_NM = ""; //제보자 명
  25. FINCD_CNFM_MTHD_CD = ""; //돌발상황 확인 방법 코드 : ICM
  26. FINCD_CNFM_DT = ""; //돌발상황 확인 일시
  27. FINCD_STRT_DT = ""; //돌발상황 시작 일시
  28. FINCD_END_PRAR_DT = ""; //돌발상황 종료 예정 일시
  29. FINCD_TYPE_CLSF_CD = ""; //돌발상황 유형 분류 코드 : IDTU
  30. FINCD_TYPE_CD = ""; //돌발상황 유형 코드 : ACTU, CRTU, EVTU, WETU 중 하나
  31. FINCD_TITL = ""; //돌발상황 제목
  32. FINCD_SERN_CD = ""; //돌발상황 심각도 코드 : SRLU
  33. FDELY_LNGT = ""; //지체 길이
  34. FINCD_LNGT = ""; //돌발상황 길이
  35. FINCD_OCRR_LANE = ""; //돌발상황 발생 차로
  36. FINCD_CLSR_LANE = ""; //돌발상황 차단 차로
  37. FTRVL_LMNT_TYPE_CD = ""; //통행 제한 유형 코드 : PRTU
  38. FTRUB_VHCL_YN = ""; //고장 차량 여부
  39. FFALT_YN = ""; //낙하물 여부
  40. FFRWT_YN = ""; //화재위험물 여부
  41. FUTIS_CNCT_YN = ""; //UTIS 연계 여부
  42. FSMLT_VHCL_UNUM = ""; //소형 차량 대수
  43. FMDLT_VHCL_UNUM = ""; //중대형 차량 대수
  44. FINJR_PNUM = ""; //부상자 인원수
  45. FFTLT_PNUM = ""; //사망자 인원수
  46. FWTHR_CD = ""; //기상 코드 : DFW
  47. FRESP_LVL_CD = ""; //대응 수준 코드 : RSL
  48. FVMS_DSPL_YN = ""; //VMS 표출 여부
  49. FINCD_PRGR_STEP_CD = ""; //돌발상황 진행 단계 코드 : ISS
  50. FINCD_END_CNFM_MTHD_CD = ""; //돌발상황 종료 확인 방법 코드 : ICM
  51. FINCD_END_DT = ""; //돌발상황 종료 일시
  52. FMBLZ_EQPM_CONT = ""; //출동 장비 내용
  53. FMBLZ_PNUM = ""; //출동 인원수
  54. FRECR_CONT = ""; //복구 내용
  55. FRECR_PERD = ""; //복구 기간
  56. FLINK_ID = ""; //돌발발생 LINK ID
  57. #endif
  58. }
  59. //---------------------------------------------------------------------------
  60. TItsIncident::~TItsIncident()
  61. {
  62. }
  63. //---------------------------------------------------------------------------
  64. void TItsIncident::SetValue(String &AOrgValue, String AValue)
  65. {
  66. if (AOrgValue != AValue)
  67. {
  68. AOrgValue = AValue;
  69. if (FCompleted) FModified = true;
  70. }
  71. }
  72. //---------------------------------------------------------------------------
  73. void TItsIncident::SetFINCD_OCRR_ID(String AValue)
  74. {
  75. SetValue(FINCD_OCRR_ID, AValue);
  76. }
  77. //---------------------------------------------------------------------------
  78. void TItsIncident::SetFRGST_DT(String AValue)
  79. {
  80. SetValue(FRGST_DT, AValue);
  81. }
  82. //---------------------------------------------------------------------------
  83. void TItsIncident::SetFINCD_ORGN_CD(String AValue)
  84. {
  85. SetValue(FINCD_ORGN_CD, AValue);
  86. }
  87. //---------------------------------------------------------------------------
  88. void TItsIncident::SetFOCRR_LCTN_NM(String AValue)
  89. {
  90. SetValue(FOCRR_LCTN_NM, AValue);
  91. }
  92. //---------------------------------------------------------------------------
  93. void TItsIncident::SetFX_CRDN(String AValue)
  94. {
  95. SetValue(FX_CRDN, AValue);
  96. }
  97. //---------------------------------------------------------------------------
  98. void TItsIncident::SetFY_CRDN(String AValue)
  99. {
  100. SetValue(FY_CRDN, AValue);
  101. }
  102. //---------------------------------------------------------------------------
  103. void TItsIncident::SetFINCD_EXPL(String AValue)
  104. {
  105. SetValue(FINCD_EXPL, AValue);
  106. }
  107. //---------------------------------------------------------------------------
  108. void TItsIncident::SetFCMTR_GRAD_CD(String AValue)
  109. {
  110. SetValue(FCMTR_GRAD_CD, AValue);
  111. }
  112. //---------------------------------------------------------------------------
  113. void TItsIncident::SetFIFMR_NM(String AValue)
  114. {
  115. SetValue(FIFMR_NM, AValue);
  116. }
  117. //---------------------------------------------------------------------------
  118. void TItsIncident::SetFINCD_CNFM_MTHD_CD(String AValue)
  119. {
  120. SetValue(FINCD_CNFM_MTHD_CD, AValue);
  121. }
  122. //---------------------------------------------------------------------------
  123. void TItsIncident::SetFINCD_CNFM_DT(String AValue)
  124. {
  125. SetValue(FINCD_CNFM_DT, AValue);
  126. }
  127. //---------------------------------------------------------------------------
  128. void TItsIncident::SetFINCD_STRT_DT(String AValue)
  129. {
  130. SetValue(FINCD_STRT_DT, AValue);
  131. }
  132. //---------------------------------------------------------------------------
  133. void TItsIncident::SetFINCD_END_PRAR_DT(String AValue)
  134. {
  135. SetValue(FINCD_END_PRAR_DT, AValue);
  136. }
  137. //---------------------------------------------------------------------------
  138. void TItsIncident::SetFINCD_TYPE_CLSF_CD(String AValue)
  139. {
  140. SetValue(FINCD_TYPE_CLSF_CD, AValue);
  141. }
  142. //---------------------------------------------------------------------------
  143. void TItsIncident::SetFINCD_TYPE_CD(String AValue)
  144. {
  145. SetValue(FINCD_TYPE_CD, AValue);
  146. }
  147. //---------------------------------------------------------------------------
  148. void TItsIncident::SetFINCD_TITL(String AValue)
  149. {
  150. SetValue(FINCD_TITL, AValue);
  151. }
  152. //---------------------------------------------------------------------------
  153. void TItsIncident::SetFINCD_SERN_CD(String AValue)
  154. {
  155. SetValue(FINCD_SERN_CD, AValue);
  156. }
  157. //---------------------------------------------------------------------------
  158. void TItsIncident::SetFDELY_LNGT(String AValue)
  159. {
  160. SetValue(FDELY_LNGT, AValue);
  161. }
  162. //---------------------------------------------------------------------------
  163. void TItsIncident::SetFINCD_LNGT(String AValue)
  164. {
  165. SetValue(FINCD_LNGT, AValue);
  166. }
  167. //---------------------------------------------------------------------------
  168. void TItsIncident::SetFINCD_OCRR_LANE(String AValue)
  169. {
  170. SetValue(FINCD_OCRR_LANE, AValue);
  171. }
  172. //---------------------------------------------------------------------------
  173. void TItsIncident::SetFINCD_CLSR_LANE(String AValue)
  174. {
  175. SetValue(FINCD_CLSR_LANE, AValue);
  176. }
  177. //---------------------------------------------------------------------------
  178. void TItsIncident::SetFTRVL_LMNT_TYPE_CD(String AValue)
  179. {
  180. SetValue(FTRVL_LMNT_TYPE_CD, AValue);
  181. }
  182. //---------------------------------------------------------------------------
  183. void TItsIncident::SetFTRUB_VHCL_YN(String AValue)
  184. {
  185. SetValue(FTRUB_VHCL_YN, AValue);
  186. }
  187. //---------------------------------------------------------------------------
  188. void TItsIncident::SetFFALT_YN(String AValue)
  189. {
  190. SetValue(FFALT_YN, AValue);
  191. }
  192. //---------------------------------------------------------------------------
  193. void TItsIncident::SetFFRWT_YN(String AValue)
  194. {
  195. SetValue(FFRWT_YN, AValue);
  196. }
  197. //---------------------------------------------------------------------------
  198. void TItsIncident::SetFUTIS_CNCT_YN(String AValue)
  199. {
  200. SetValue(FUTIS_CNCT_YN, AValue);
  201. }
  202. //---------------------------------------------------------------------------
  203. void TItsIncident::SetFSMLT_VHCL_UNUM(String AValue)
  204. {
  205. SetValue(FSMLT_VHCL_UNUM, AValue);
  206. }
  207. //---------------------------------------------------------------------------
  208. void TItsIncident::SetFMDLT_VHCL_UNUM(String AValue)
  209. {
  210. SetValue(FMDLT_VHCL_UNUM, AValue);
  211. }
  212. //---------------------------------------------------------------------------
  213. void TItsIncident::SetFINJR_PNUM(String AValue)
  214. {
  215. SetValue(FINJR_PNUM, AValue);
  216. }
  217. //---------------------------------------------------------------------------
  218. void TItsIncident::SetFFTLT_PNUM(String AValue)
  219. {
  220. SetValue(FFTLT_PNUM, AValue);
  221. }
  222. //---------------------------------------------------------------------------
  223. void TItsIncident::SetFWTHR_CD(String AValue)
  224. {
  225. SetValue(FWTHR_CD, AValue);
  226. }
  227. //---------------------------------------------------------------------------
  228. void TItsIncident::SetFRESP_LVL_CD(String AValue)
  229. {
  230. SetValue(FRESP_LVL_CD, AValue);
  231. }
  232. //---------------------------------------------------------------------------
  233. void TItsIncident::SetFVMS_DSPL_YN(String AValue)
  234. {
  235. SetValue(FVMS_DSPL_YN, AValue);
  236. }
  237. //---------------------------------------------------------------------------
  238. void TItsIncident::SetFINCD_PRGR_STEP_CD(String AValue)
  239. {
  240. SetValue(FINCD_PRGR_STEP_CD, AValue);
  241. }
  242. //---------------------------------------------------------------------------
  243. void TItsIncident::SetFINCD_END_CNFM_MTHD_CD(String AValue)
  244. {
  245. SetValue(FINCD_END_CNFM_MTHD_CD, AValue);
  246. }
  247. //---------------------------------------------------------------------------
  248. void TItsIncident::SetFINCD_END_DT(String AValue)
  249. {
  250. SetValue(FINCD_END_DT, AValue);
  251. }
  252. //---------------------------------------------------------------------------
  253. void TItsIncident::SetFMBLZ_EQPM_CONT(String AValue)
  254. {
  255. SetValue(FMBLZ_EQPM_CONT, AValue);
  256. }
  257. //---------------------------------------------------------------------------
  258. void TItsIncident::SetFMBLZ_PNUM(String AValue)
  259. {
  260. SetValue(FMBLZ_PNUM, AValue);
  261. }
  262. //---------------------------------------------------------------------------
  263. void TItsIncident::SetFRECR_CONT(String AValue)
  264. {
  265. SetValue(FRECR_CONT, AValue);
  266. }
  267. //---------------------------------------------------------------------------
  268. void TItsIncident::SetFRECR_PERD(String AValue)
  269. {
  270. SetValue(FRECR_PERD, AValue);
  271. }
  272. //---------------------------------------------------------------------------
  273. void TItsIncident::SetFLINK_ID(String AValue)
  274. {
  275. SetValue(FLINK_ID, AValue);
  276. }
  277. //---------------------------------------------------------------------------
  278. //---------------------------------------------------------------------------
  279. TItsIncidentManager *ItsIncidentManager = NULL;
  280. //---------------------------------------------------------------------------
  281. /*
  282. * Incident Manager
  283. */
  284. TItsIncidentManager::TItsIncidentManager()
  285. {
  286. }
  287. //---------------------------------------------------------------------------
  288. TItsIncidentManager::~TItsIncidentManager()
  289. {
  290. }
  291. //---------------------------------------------------------------------------
  292. bool TItsIncidentManager::LoadFromDb(TADOConnection *ADbConn/*=NULL*/)
  293. {
  294. bool bResult = true;
  295. String sQry;
  296. TADOQuery *pADO = NULL;
  297. sQry = "SELECT A.*, DECODE(B.INCD_OCRR_ID, NULL, 'N', 'Y') AS DISP_INCD \r\n"
  298. " FROM TB_INCD_OCRR A, VW_INCD_OCRR B \r\n"
  299. " WHERE A.INCD_OCRR_ID = B.INCD_OCRR_ID(+) \r\n";
  300. try
  301. {
  302. FLists.Lock();
  303. FLists.RemoveAll();
  304. try
  305. {
  306. pADO = new TADOQuery(NULL);
  307. pADO->Close();
  308. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  309. pADO->SQL->Clear();
  310. pADO->SQL->Text = sQry;
  311. pADO->Open();
  312. for( ; !pADO->Eof; pADO->Next())
  313. {
  314. TItsIncident *pObj = new TItsIncident();
  315. pObj->FINCD_OCRR_ID = pADO->FieldByName("INCD_OCRR_ID")->AsString;
  316. pObj->FRGST_DT = pADO->FieldByName("RGST_DT")->AsString;
  317. pObj->FINCD_ORGN_CD = pADO->FieldByName("INCD_ORGN_CD")->AsString;
  318. pObj->FOCRR_LCTN_NM = pADO->FieldByName("OCRR_LCTN_NM")->AsString;
  319. pObj->FX_CRDN = pADO->FieldByName("X_CRDN")->AsString;
  320. pObj->FY_CRDN = pADO->FieldByName("Y_CRDN")->AsString;
  321. pObj->FINCD_EXPL = pADO->FieldByName("INCD_EXPL")->AsString;
  322. pObj->FCMTR_GRAD_CD = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  323. pObj->FIFMR_NM = pADO->FieldByName("IFMR_NM")->AsString;
  324. pObj->FINCD_CNFM_MTHD_CD = pADO->FieldByName("INCD_CNFM_MTHD_CD")->AsString;
  325. pObj->FINCD_CNFM_DT = pADO->FieldByName("INCD_CNFM_DT")->AsString;
  326. pObj->FINCD_STRT_DT = pADO->FieldByName("INCD_STRT_DT")->AsString;
  327. pObj->FINCD_END_PRAR_DT = pADO->FieldByName("INCD_END_PRAR_DT")->AsString;
  328. pObj->FINCD_TYPE_CLSF_CD = pADO->FieldByName("INCD_TYPE_CLSF_CD")->AsString;
  329. pObj->FINCD_TYPE_CD = pADO->FieldByName("INCD_TYPE_CD")->AsString;
  330. pObj->FINCD_TITL = pADO->FieldByName("INCD_TITL")->AsString;
  331. pObj->FINCD_SERN_CD = pADO->FieldByName("INCD_SERN_CD")->AsString;
  332. pObj->FDELY_LNGT = pADO->FieldByName("DELY_LNGT")->AsString;
  333. pObj->FINCD_LNGT = pADO->FieldByName("INCD_LNGT")->AsString;
  334. pObj->FINCD_OCRR_LANE = pADO->FieldByName("INCD_OCRR_LANE")->AsString;
  335. if (pObj->FINCD_OCRR_LANE.IsEmpty())
  336. {
  337. pObj->FINCD_OCRR_LANE = "000000";
  338. }
  339. else
  340. if (pObj->FINCD_OCRR_LANE.Length() != 6)
  341. {
  342. pObj->FINCD_OCRR_LANE = "000000";
  343. }
  344. pObj->FINCD_CLSR_LANE = pADO->FieldByName("INCD_CLSR_LANE")->AsString;
  345. pObj->FTRVL_LMNT_TYPE_CD = pADO->FieldByName("TRVL_LMNT_TYPE_CD")->AsString;
  346. pObj->FTRUB_VHCL_YN = pADO->FieldByName("TRUB_VHCL_YN")->AsString;
  347. pObj->FFALT_YN = pADO->FieldByName("FALT_YN")->AsString;
  348. pObj->FFRWT_YN = pADO->FieldByName("FRWT_YN")->AsString;
  349. pObj->FUTIS_CNCT_YN = pADO->FieldByName("UTIS_CNCT_YN")->AsString;
  350. pObj->FSMLT_VHCL_UNUM = pADO->FieldByName("SMLT_VHCL_UNUM")->AsString;
  351. pObj->FMDLT_VHCL_UNUM = pADO->FieldByName("MDLT_VHCL_UNUM")->AsString;
  352. pObj->FINJR_PNUM = pADO->FieldByName("INJR_PNUM")->AsString;
  353. pObj->FFTLT_PNUM = pADO->FieldByName("FTLT_PNUM")->AsString;
  354. pObj->FWTHR_CD = pADO->FieldByName("WTHR_CD")->AsString;
  355. pObj->FRESP_LVL_CD = pADO->FieldByName("RESP_LVL_CD")->AsString;
  356. pObj->FVMS_DSPL_YN = pADO->FieldByName("VMS_DSPL_YN")->AsString;
  357. pObj->FINCD_PRGR_STEP_CD = pADO->FieldByName("INCD_PRGR_STEP_CD")->AsString;
  358. pObj->FINCD_END_CNFM_MTHD_CD = pADO->FieldByName("INCD_END_CNFM_MTHD_CD")->AsString;
  359. pObj->FINCD_END_DT = pADO->FieldByName("INCD_END_DT")->AsString;
  360. pObj->FMBLZ_EQPM_CONT = pADO->FieldByName("MBLZ_EQPM_CONT")->AsString;
  361. pObj->FMBLZ_PNUM = pADO->FieldByName("MBLZ_PNUM")->AsString;
  362. pObj->FRECR_CONT = pADO->FieldByName("RECR_CONT")->AsString;
  363. pObj->FRECR_PERD = pADO->FieldByName("RECR_PERD")->AsString;
  364. pObj->FLINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  365. pObj->DISP_INCD = pADO->FieldByName("DISP_INCD")->AsString;
  366. FLists.Push(pObj->INCD_OCRR_ID, pObj);
  367. pObj->Completed = true;
  368. }
  369. }
  370. catch(EDatabaseError &E)
  371. {
  372. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  373. DBERRORLOG("TItsIncidentManager::LoadFromDb", String(E.ClassName()), E.Message, sQry);
  374. return false;
  375. throw Exception(String(E.ClassName()) + E.Message);
  376. }
  377. catch(Exception &exception)
  378. {
  379. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  380. DBERRORLOG("TItsIncidentManager::LoadFromDb", String(exception.ClassName()), exception.Message, sQry);
  381. return false;
  382. throw Exception(String(exception.ClassName()) + exception.Message);
  383. }
  384. }
  385. __finally
  386. {
  387. if (pADO)
  388. {
  389. pADO->Close();
  390. delete pADO;
  391. }
  392. FLists.UnLock();
  393. }
  394. return bResult;
  395. }
  396. //---------------------------------------------------------------------------
  397. bool TItsIncidentManager::LoadFromAutoIncident(TADOConnection *ADbConn/*=NULL*/)
  398. {
  399. bool bResult = true;
  400. String sQry;
  401. TADOQuery *pADO = NULL;
  402. #if 0
  403. sQry = "SELECT A.LINK_ID, A.DETC_DT, A.CLCT_SPED_AVRG, A.ESTM_SPED_AVRG, \r\n"
  404. " A.REAL_YN, B.X_CRDN, B.Y_CRDN, C.ROAD_NAME \r\n"
  405. " FROM TB_INCD_ESTM_SECT A, TB_LINK_VRTX B, TB_LINK C \r\n"
  406. " WHERE A.LINK_ID = B.LINK_ID \r\n"
  407. " AND A.LINK_ID = C.LINK_ID \r\n"
  408. " AND B.ORD = '1' \r\n";
  409. #else
  410. sQry = "SELECT A.LINK_ID, A.DETC_DT, A.CLCT_SPED_AVRG, A.ESTM_SPED_AVRG, \r\n"
  411. " A.REAL_YN, B.X_CRDN, B.Y_CRDN, C.ROAD_NAME, \r\n"
  412. " B.NODE_NAME AS STNAME, D.NODE_NAME AS EDNAME \r\n"
  413. " FROM TB_INCD_ESTM_SECT A, TB_NODE B, TB_LINK C, TB_NODE D \r\n"
  414. " WHERE A.LINK_ID = C.LINK_ID \r\n"
  415. " AND C.F_NODE = B.NODE_ID \r\n"
  416. " AND C.T_NODE = D.NODE_ID \r\n"
  417. " AND A.DETC_DT >= TO_CHAR(SYSDATE - (2*60)/60/24, 'YYYYMMDDHH24MISS') \r\n"
  418. " AND A.REAL_YN = 'N' \r\n";
  419. #endif
  420. try
  421. {
  422. FAutoIncident = 0;
  423. FAutoLists.Lock();
  424. FAutoLists.RemoveAll();
  425. try
  426. {
  427. pADO = new TADOQuery(NULL);
  428. pADO->Close();
  429. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  430. pADO->SQL->Clear();
  431. pADO->SQL->Text = sQry;
  432. pADO->Open();
  433. for( ; !pADO->Eof; pADO->Next())
  434. {
  435. TItsAutoIncident *pObj = new TItsAutoIncident();
  436. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  437. pObj->DETC_DT = pADO->FieldByName("DETC_DT")->AsString;
  438. pObj->CLCT_SPED_AVRG = pADO->FieldByName("CLCT_SPED_AVRG")->AsString;
  439. pObj->ESTM_SPED_AVRG = pADO->FieldByName("ESTM_SPED_AVRG")->AsString;
  440. pObj->REAL_YN = pADO->FieldByName("REAL_YN")->AsString;
  441. pObj->X_CRDN = pADO->FieldByName("X_CRDN")->AsString;
  442. pObj->Y_CRDN = pADO->FieldByName("Y_CRDN")->AsString;
  443. pObj->ROAD_NAME = pADO->FieldByName("ROAD_NAME")->AsString;
  444. pObj->STNAME = pADO->FieldByName("STNAME")->AsString;
  445. pObj->EDNAME = pADO->FieldByName("EDNAME")->AsString;
  446. FAutoLists.Push(String(FAutoIncident++), pObj);
  447. }
  448. }
  449. catch(EDatabaseError &E)
  450. {
  451. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  452. DBERRORLOG("TItsIncidentManager::LoadFromAutoIncident", String(E.ClassName()), E.Message, sQry);
  453. return false;
  454. throw Exception(String(E.ClassName()) + E.Message);
  455. }
  456. catch(Exception &exception)
  457. {
  458. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  459. DBERRORLOG("TItsIncidentManager::LoadFromAutoIncident", String(exception.ClassName()), exception.Message, sQry);
  460. return false;
  461. throw Exception(String(exception.ClassName()) + exception.Message);
  462. }
  463. }
  464. __finally
  465. {
  466. if (pADO)
  467. {
  468. pADO->Close();
  469. delete pADO;
  470. }
  471. FAutoLists.UnLock();
  472. }
  473. return bResult;
  474. }
  475. //---------------------------------------------------------------------------
  476. bool TItsIncidentManager::LoadFromVmsIncident(TADOConnection *ADbConn/*=NULL*/)
  477. {
  478. String sQry;
  479. TADOQuery *pADO = NULL;
  480. sQry = "SELECT * FROM TB_INCD_OCRR_VMS \r\n";
  481. try
  482. {
  483. FVmsLists.Lock();
  484. FVmsLists.RemoveAll();
  485. try
  486. {
  487. pADO = new TADOQuery(NULL);
  488. pADO->Close();
  489. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  490. pADO->SQL->Clear();
  491. pADO->SQL->Text = sQry;
  492. pADO->Open();
  493. for( ; !pADO->Eof; pADO->Next())
  494. {
  495. TItsVmsIncident *pObj = new TItsVmsIncident();
  496. pObj->INCD_OCRR_ID = pADO->FieldByName("INCD_OCRR_ID")->AsString;
  497. pObj->STRT_LCTN_NM = pADO->FieldByName("STRT_LCTN_NM")->AsString;
  498. pObj->END_LCTN_NM = pADO->FieldByName("END_LCTN_NM")->AsString;
  499. pObj->OCRR_LCTN_NM = pADO->FieldByName("OCRR_LCTN_NM")->AsString;
  500. pObj->CMTR_GRAD_CD = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  501. pObj->INCD_CLSR_LANE = pADO->FieldByName("INCD_CLSR_LANE")->AsString;
  502. pObj->VMS_DSPL_YN = pADO->FieldByName("VMS_DSPL_YN")->AsString;
  503. pObj->INCD_PRGR_STEP_CD = pADO->FieldByName("INCD_PRGR_STEP_CD")->AsString;
  504. pObj->INCD_STRT_DT = pADO->FieldByName("INCD_STRT_DT")->AsString;
  505. pObj->INCD_END_PRAR_DT = pADO->FieldByName("INCD_END_PRAR_DT")->AsString;
  506. pObj->LINK_ID = pADO->FieldByName("LINK_ID")->AsString;
  507. pObj->VMS_INCD_TYPE_CD = pADO->FieldByName("VMS_INCD_TYPE_CD")->AsString;
  508. pObj->VMS_INCD_DETL_TYPE_CD = pADO->FieldByName("VMS_INCD_DETL_TYPE_CD")->AsString;
  509. pObj->VMS_INCD_RSTR_TYPE_CD = pADO->FieldByName("VMS_INCD_RSTR_TYPE_CD")->AsString;
  510. FVmsLists.Push(pObj->INCD_OCRR_ID, pObj);
  511. }
  512. }
  513. catch(EDatabaseError &E)
  514. {
  515. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  516. DBERRORMSG("TItsIncidentManager::LoadFromVmsIncident", String(E.ClassName()), E.Message, sQry);
  517. throw Exception(String(E.ClassName()) + E.Message);
  518. }
  519. catch(Exception &exception)
  520. {
  521. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  522. DBERRORMSG("TItsIncidentManager::LoadFromVmsIncident", String(exception.ClassName()), exception.Message, sQry);
  523. throw Exception(String(exception.ClassName()) + exception.Message);
  524. }
  525. }
  526. __finally
  527. {
  528. if (pADO)
  529. {
  530. pADO->Close();
  531. delete pADO;
  532. }
  533. FVmsLists.UnLock();
  534. }
  535. return true;
  536. }
  537. //---------------------------------------------------------------------------
  538. bool TItsIncidentManager::UpdateIncidentInfo(TItsIncident *AObj, TADOConnection *ADbConn/*=NULL*/)
  539. {
  540. String sQry;
  541. TADOQuery *pADO = NULL;
  542. sQry = "UPDATE TB_INCD_OCRR \r\n"
  543. " SET INCD_ORGN_CD = :p02, \r\n"
  544. " OCRR_LCTN_NM = :p03, \r\n"
  545. " X_CRDN = :p04, \r\n"
  546. " Y_CRDN = :p05, \r\n"
  547. " INCD_EXPL = :p06, \r\n"
  548. " CMTR_GRAD_CD = :p07, \r\n"
  549. " IFMR_NM = :p08, \r\n"
  550. " INCD_CNFM_MTHD_CD = :p09, \r\n"
  551. " INCD_CNFM_DT = :p10, \r\n"
  552. " INCD_STRT_DT = :p11, \r\n"
  553. " INCD_END_PRAR_DT = :p12, \r\n"
  554. " INCD_TYPE_CLSF_CD = :p13, \r\n"
  555. " INCD_TYPE_CD = :p14, \r\n"
  556. " INCD_TITL = :p15, \r\n"
  557. " INCD_SERN_CD = :p16, \r\n"
  558. " DELY_LNGT = :p17, \r\n"
  559. " INCD_LNGT = :p18, \r\n"
  560. " INCD_OCRR_LANE = :p19, \r\n"
  561. " INCD_CLSR_LANE = :p20, \r\n"
  562. " TRVL_LMNT_TYPE_CD = :p21, \r\n"
  563. " TRUB_VHCL_YN = :p22, \r\n"
  564. " FALT_YN = :p23, \r\n"
  565. " FRWT_YN = :p24, \r\n"
  566. " UTIS_CNCT_YN = :p25, \r\n"
  567. " SMLT_VHCL_UNUM = :p26, \r\n"
  568. " MDLT_VHCL_UNUM = :p27, \r\n"
  569. " INJR_PNUM = :p28, \r\n"
  570. " FTLT_PNUM = :p29, \r\n"
  571. " WTHR_CD = :p30, \r\n"
  572. " RESP_LVL_CD = :p31, \r\n"
  573. " VMS_DSPL_YN = :p32, \r\n"
  574. " INCD_PRGR_STEP_CD = :p33, \r\n"
  575. " INCD_END_CNFM_MTHD_CD = :p34, \r\n"
  576. " INCD_END_DT = :p35, \r\n"
  577. " MBLZ_EQPM_CONT = :p36, \r\n"
  578. " MBLZ_PNUM = :p37, \r\n"
  579. " RECR_CONT = :p38, \r\n"
  580. " RECR_PERD = :p39, \r\n"
  581. " LINK_ID = :p40 \r\n"
  582. " WHERE INCD_OCRR_ID = :p01 \r\n";
  583. try
  584. {
  585. try
  586. {
  587. pADO = new TADOQuery(NULL);
  588. pADO->Close();
  589. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  590. pADO->SQL->Clear();
  591. pADO->SQL->Text = sQry;
  592. pADO->Parameters->ParamByName("p01")->Value = AObj->INCD_OCRR_ID;
  593. pADO->Parameters->ParamByName("p02")->Value = AObj->INCD_ORGN_CD;
  594. pADO->Parameters->ParamByName("p03")->Value = AObj->OCRR_LCTN_NM;
  595. pADO->Parameters->ParamByName("p04")->Value = AObj->X_CRDN;
  596. pADO->Parameters->ParamByName("p05")->Value = AObj->Y_CRDN;
  597. pADO->Parameters->ParamByName("p06")->Value = AObj->INCD_EXPL;
  598. pADO->Parameters->ParamByName("p07")->Value = AObj->CMTR_GRAD_CD;
  599. pADO->Parameters->ParamByName("p08")->Value = AObj->IFMR_NM;
  600. pADO->Parameters->ParamByName("p09")->Value = AObj->INCD_CNFM_MTHD_CD;
  601. pADO->Parameters->ParamByName("p10")->Value = AObj->INCD_CNFM_DT;
  602. pADO->Parameters->ParamByName("p11")->Value = AObj->INCD_STRT_DT;
  603. pADO->Parameters->ParamByName("p12")->Value = AObj->INCD_END_PRAR_DT;
  604. pADO->Parameters->ParamByName("p13")->Value = AObj->INCD_TYPE_CLSF_CD;
  605. pADO->Parameters->ParamByName("p14")->Value = AObj->INCD_TYPE_CD;
  606. pADO->Parameters->ParamByName("p15")->Value = AObj->INCD_TITL;
  607. pADO->Parameters->ParamByName("p16")->Value = AObj->INCD_SERN_CD;
  608. pADO->Parameters->ParamByName("p17")->Value = AObj->DELY_LNGT;
  609. pADO->Parameters->ParamByName("p18")->Value = AObj->INCD_LNGT;
  610. pADO->Parameters->ParamByName("p19")->Value = AObj->INCD_OCRR_LANE;
  611. pADO->Parameters->ParamByName("p20")->Value = AObj->INCD_CLSR_LANE;
  612. pADO->Parameters->ParamByName("p21")->Value = AObj->TRVL_LMNT_TYPE_CD;
  613. pADO->Parameters->ParamByName("p22")->Value = AObj->TRUB_VHCL_YN;
  614. pADO->Parameters->ParamByName("p23")->Value = AObj->FALT_YN;
  615. pADO->Parameters->ParamByName("p24")->Value = AObj->FRWT_YN;
  616. pADO->Parameters->ParamByName("p25")->Value = AObj->UTIS_CNCT_YN;
  617. pADO->Parameters->ParamByName("p26")->Value = AObj->SMLT_VHCL_UNUM;
  618. pADO->Parameters->ParamByName("p27")->Value = AObj->MDLT_VHCL_UNUM;
  619. pADO->Parameters->ParamByName("p28")->Value = AObj->INJR_PNUM;
  620. pADO->Parameters->ParamByName("p29")->Value = AObj->FTLT_PNUM;
  621. pADO->Parameters->ParamByName("p30")->Value = AObj->WTHR_CD;
  622. pADO->Parameters->ParamByName("p31")->Value = AObj->RESP_LVL_CD;
  623. pADO->Parameters->ParamByName("p32")->Value = AObj->VMS_DSPL_YN;
  624. pADO->Parameters->ParamByName("p33")->Value = AObj->INCD_PRGR_STEP_CD;
  625. pADO->Parameters->ParamByName("p34")->Value = AObj->INCD_END_CNFM_MTHD_CD;
  626. pADO->Parameters->ParamByName("p35")->Value = AObj->INCD_END_DT;
  627. pADO->Parameters->ParamByName("p36")->Value = AObj->MBLZ_EQPM_CONT;
  628. pADO->Parameters->ParamByName("p37")->Value = AObj->MBLZ_PNUM;
  629. pADO->Parameters->ParamByName("p38")->Value = AObj->RECR_CONT;
  630. pADO->Parameters->ParamByName("p39")->Value = AObj->RECR_PERD;
  631. pADO->Parameters->ParamByName("p40")->Value = AObj->LINK_ID;
  632. pADO->ExecSQL();
  633. return true;
  634. }
  635. catch(EDatabaseError &E)
  636. {
  637. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  638. DBERRORMSG("TItsIncidentManager::UpdateIncidentInfo", String(E.ClassName()), E.Message, sQry);
  639. throw Exception(String(E.ClassName()) + E.Message);
  640. }
  641. catch(Exception &exception)
  642. {
  643. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  644. DBERRORMSG("TItsIncidentManager::UpdateIncidentInfo", String(exception.ClassName()), exception.Message, sQry);
  645. throw Exception(String(exception.ClassName()) + exception.Message);
  646. }
  647. }
  648. __finally
  649. {
  650. if (pADO)
  651. {
  652. pADO->Close();
  653. delete pADO;
  654. }
  655. UpdateIncidentLoc(AObj, ADbConn);
  656. }
  657. return false;
  658. }
  659. //---------------------------------------------------------------------------
  660. bool TItsIncidentManager::DeleteIncidentLoc(String AIncidId, TADOConnection *ADbConn/*=NULL*/)
  661. {
  662. String sQry;
  663. TADOQuery *pADO = NULL;
  664. sQry = "DELETE INCIDENT_LOC \r\n"
  665. " WHERE INCIDENTID = :p01 \r\n";
  666. try
  667. {
  668. try
  669. {
  670. pADO = new TADOQuery(NULL);
  671. pADO->Close();
  672. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  673. pADO->SQL->Clear();
  674. pADO->SQL->Text = sQry;
  675. pADO->Parameters->ParamByName("p01")->Value = AIncidId;
  676. pADO->ExecSQL();
  677. return true;
  678. }
  679. catch(EDatabaseError &E)
  680. {
  681. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  682. DBERRORMSG("TItsIncidentManager::DeleteIncidentLoc", String(E.ClassName()), E.Message, sQry);
  683. throw Exception(String(E.ClassName()) + E.Message);
  684. }
  685. catch(Exception &exception)
  686. {
  687. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  688. DBERRORMSG("TItsIncidentManager::DeleteIncidentLoc", String(exception.ClassName()), exception.Message, sQry);
  689. throw Exception(String(exception.ClassName()) + exception.Message);
  690. }
  691. }
  692. __finally
  693. {
  694. if (pADO)
  695. {
  696. pADO->Close();
  697. delete pADO;
  698. }
  699. }
  700. return false;
  701. }
  702. //---------------------------------------------------------------------------
  703. bool TItsIncidentManager::UpdateIncidentLoc(TItsIncident *AObj, TADOConnection *ADbConn/*=NULL*/)
  704. {
  705. String sQry;
  706. TADOQuery *pADO = NULL;
  707. //공단에서 넘어온 돌발은 공단연계가 표출안되게
  708. if (AObj->INCD_ORGN_CD == "IST5")
  709. {
  710. return true;
  711. }
  712. //1. 기존 정보가 어떤것인지 확인하기 귀찮으니까 일단 삭제해 버리자.
  713. DeleteIncidentLoc(AObj->INCD_OCRR_ID, ADbConn);
  714. sQry = "INSERT INTO INCIDENT_LOC ( \r\n"
  715. " INCIDENTID, \r\n"
  716. " LOGDATE, \r\n"
  717. " REPORTDATE, \r\n"
  718. " LINKID, \r\n"
  719. " USERID, \r\n"
  720. " REPORTERID, \r\n"
  721. " STARTDATE, \r\n"
  722. " ENDDATE, \r\n"
  723. " TRAFFICGRADE, \r\n"
  724. " TROUBLEGRADE, \r\n"
  725. " INCIDENTTITLE, \r\n"
  726. " INCIDENTINFO, \r\n"
  727. " INCIDENTCODE, \r\n"
  728. " INCIDENTSUBCODE, \r\n"
  729. " LOCATION, \r\n"
  730. " DATARESTYPE, \r\n"
  731. " COORDX, \r\n"
  732. " COORDY ) \r\n"
  733. " VALUES (:p01, \r\n"
  734. " TO_DATE(:p02, 'YYYYMMDDHH24MISS'), \r\n"
  735. " TO_DATE(:p03, 'YYYYMMDDHH24MISS'), \r\n"
  736. " :p04, \r\n"
  737. " :p05, \r\n"
  738. " :p06, \r\n"
  739. " TO_DATE(:p07, 'YYYYMMDDHH24MISS'), \r\n"
  740. " TO_DATE(:p08, 'YYYYMMDDHH24MISS'), \r\n"
  741. " :p09, \r\n"
  742. " :p10, \r\n"
  743. " :p11, \r\n"
  744. " :p12, \r\n"
  745. " :p13, \r\n"
  746. " :p14, \r\n"
  747. " :p15, \r\n"
  748. " :p16, \r\n"
  749. " :p17, \r\n"
  750. " :p18) \r\n";
  751. try
  752. {
  753. try
  754. {
  755. pADO = new TADOQuery(NULL);
  756. pADO->Close();
  757. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  758. pADO->SQL->Clear();
  759. pADO->SQL->Text = sQry;
  760. //2. 공단으로 정보를 연계하는 경우에만 정보를 입력하도록 한다.
  761. if (AObj->UTIS_CNCT_YN != "Y") return true;
  762. pADO->Parameters->ParamByName("p01")->Value = AObj->INCD_OCRR_ID;
  763. pADO->Parameters->ParamByName("p02")->Value = AObj->RGST_DT;
  764. pADO->Parameters->ParamByName("p03")->Value = AObj->INCD_CNFM_DT;
  765. pADO->Parameters->ParamByName("p04")->Value = AObj->LINK_ID;
  766. pADO->Parameters->ParamByName("p05")->Value = AObj->INCD_OCRR_ID.SubString(1, 3);
  767. pADO->Parameters->ParamByName("p06")->Value = AObj->INCD_OCRR_ID.SubString(1, 3);
  768. pADO->Parameters->ParamByName("p07")->Value = AObj->INCD_STRT_DT;
  769. pADO->Parameters->ParamByName("p08")->Value = AObj->INCD_END_PRAR_DT;
  770. pADO->Parameters->ParamByName("p09")->Value = AObj->CMTR_GRAD_CD.SubString(1, 2);
  771. pADO->Parameters->ParamByName("p10")->Value = AObj->INCD_SERN_CD;
  772. pADO->Parameters->ParamByName("p11")->Value = AObj->INCD_TITL.Trim();
  773. pADO->Parameters->ParamByName("p12")->Value = AObj->INCD_EXPL.Trim().SubString(1, 250);
  774. pADO->Parameters->ParamByName("p13")->Value = AObj->INCD_TYPE_CLSF_CD;
  775. pADO->Parameters->ParamByName("p14")->Value = AObj->INCD_TYPE_CD;
  776. pADO->Parameters->ParamByName("p15")->Value = AObj->OCRR_LCTN_NM.Trim();
  777. pADO->Parameters->ParamByName("p16")->Value = "";
  778. pADO->Parameters->ParamByName("p17")->Value = AObj->X_CRDN;
  779. pADO->Parameters->ParamByName("p18")->Value = AObj->Y_CRDN;
  780. pADO->ExecSQL();
  781. return true;
  782. }
  783. catch(EDatabaseError &E)
  784. {
  785. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  786. DBERRORMSG("TItsIncidentManager::UpdateIncidentLoc", String(E.ClassName()), E.Message, sQry);
  787. throw Exception(String(E.ClassName()) + E.Message);
  788. }
  789. catch(Exception &exception)
  790. {
  791. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  792. DBERRORMSG("TItsIncidentManager::UpdateIncidentLoc", String(exception.ClassName()), exception.Message, sQry);
  793. throw Exception(String(exception.ClassName()) + exception.Message);
  794. }
  795. }
  796. __finally
  797. {
  798. if (pADO)
  799. {
  800. pADO->Close();
  801. delete pADO;
  802. }
  803. }
  804. return false;
  805. }
  806. //---------------------------------------------------------------------------
  807. bool TItsIncidentManager::MergeVmsIncidentInfo(String AINCD_OCRR_ID, // '돌발상황 발생 ID
  808. String ASTRT_LCTN_NM, // '시작 위치 명
  809. String AEND_LCTN_NM, // '종료 위치 명
  810. String AOCRR_LCTN_NM, // '발생 위치 명
  811. String ACMTR_GRAD_CD, // '소통 등급 코드
  812. String AINCD_CLSR_LANE, // '돌발상황 차단 차로
  813. String AVMS_DSPL_YN, // 'VMS 표출 여부
  814. String AINCD_PRGR_STEP_CD, // '돌발상황 진행 단계 코드
  815. String AINCD_STRT_DT, // '돌발상황 시작 일시
  816. String AINCD_END_PRAR_DT, // '돌발상황 종료 예정 일시
  817. String ALINK_ID, // '링크ID
  818. String AVMS_INCD_TYPE_CD, // 'VMS 돌발유형코드
  819. String AVMS_INCD_DETL_TYPE_CD, // 'VMS 돌발세부유형코드
  820. String AVMS_INCD_RSTR_TYPE_CD, // 'VMS 돌발통제코드
  821. TADOConnection *ADbConn/*=NULL*/)
  822. {
  823. String sQry;
  824. TADOQuery *pADO = NULL;
  825. sQry = "MERGE INTO TB_INCD_OCRR_VMS L \r\n"
  826. " USING (SELECT :p01 INCD_OCRR_ID, \r\n"
  827. " :p02 STRT_LCTN_NM, \r\n"
  828. " :p03 END_LCTN_NM, \r\n"
  829. " :p04 OCRR_LCTN_NM, \r\n"
  830. " :p05 CMTR_GRAD_CD, \r\n"
  831. " :p06 INCD_CLSR_LANE, \r\n"
  832. " :p07 VMS_DSPL_YN, \r\n"
  833. " :p08 INCD_PRGR_STEP_CD, \r\n"
  834. " :p09 INCD_STRT_DT, \r\n"
  835. " :p10 INCD_END_PRAR_DT, \r\n"
  836. " :p11 LINK_ID, \r\n"
  837. " :p12 VMS_INCD_TYPE_CD, \r\n"
  838. " :p13 VMS_INCD_DETL_TYPE_CD, \r\n"
  839. " :p14 VMS_INCD_RSTR_TYPE_CD \r\n"
  840. " FROM DUAL ) M \r\n"
  841. "ON (L.INCD_OCRR_ID = M.INCD_OCRR_ID) \r\n"
  842. "WHEN MATCHED THEN \r\n"
  843. " UPDATE SET L.STRT_LCTN_NM = M.STRT_LCTN_NM, \r\n"
  844. " L.END_LCTN_NM = M.END_LCTN_NM, \r\n"
  845. " L.OCRR_LCTN_NM = M.OCRR_LCTN_NM, \r\n"
  846. " L.CMTR_GRAD_CD = M.CMTR_GRAD_CD, \r\n"
  847. " L.INCD_CLSR_LANE = M.INCD_CLSR_LANE, \r\n"
  848. " L.VMS_DSPL_YN = M.VMS_DSPL_YN, \r\n"
  849. " L.INCD_PRGR_STEP_CD = M.INCD_PRGR_STEP_CD, \r\n"
  850. " L.INCD_STRT_DT = M.INCD_STRT_DT, \r\n"
  851. " L.INCD_END_PRAR_DT = M.INCD_END_PRAR_DT, \r\n"
  852. " L.LINK_ID = M.LINK_ID, \r\n"
  853. " L.VMS_INCD_TYPE_CD = M.VMS_INCD_TYPE_CD, \r\n"
  854. " L.VMS_INCD_DETL_TYPE_CD = M.VMS_INCD_DETL_TYPE_CD, \r\n"
  855. " L.VMS_INCD_RSTR_TYPE_CD = M.VMS_INCD_RSTR_TYPE_CD \r\n"
  856. "WHEN NOT MATCHED THEN \r\n"
  857. " INSERT (L.INCD_OCRR_ID, L.STRT_LCTN_NM, L.END_LCTN_NM, \r\n"
  858. " L.OCRR_LCTN_NM, L.CMTR_GRAD_CD, L.INCD_CLSR_LANE, \r\n"
  859. " L.VMS_DSPL_YN, L.INCD_PRGR_STEP_CD, L.INCD_STRT_DT, \r\n"
  860. " L.INCD_END_PRAR_DT, L.LINK_ID, L.VMS_INCD_TYPE_CD, \r\n"
  861. " L.VMS_INCD_DETL_TYPE_CD, L.VMS_INCD_RSTR_TYPE_CD) \r\n"
  862. " VALUES (M.INCD_OCRR_ID, M.STRT_LCTN_NM, M.END_LCTN_NM, \r\n"
  863. " M.OCRR_LCTN_NM, M.CMTR_GRAD_CD, M.INCD_CLSR_LANE, \r\n"
  864. " M.VMS_DSPL_YN, M.INCD_PRGR_STEP_CD, M.INCD_STRT_DT, \r\n"
  865. " M.INCD_END_PRAR_DT, M.LINK_ID, M.VMS_INCD_TYPE_CD, \r\n"
  866. " M.VMS_INCD_DETL_TYPE_CD, M.VMS_INCD_RSTR_TYPE_CD) \r\n";
  867. try
  868. {
  869. try
  870. {
  871. pADO = new TADOQuery(NULL);
  872. pADO->Close();
  873. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  874. pADO->SQL->Clear();
  875. pADO->SQL->Text = sQry;
  876. pADO->Parameters->ParamByName("p01")->Value = AINCD_OCRR_ID;
  877. pADO->Parameters->ParamByName("p02")->Value = ASTRT_LCTN_NM;
  878. pADO->Parameters->ParamByName("p03")->Value = AEND_LCTN_NM;
  879. pADO->Parameters->ParamByName("p04")->Value = AOCRR_LCTN_NM;
  880. pADO->Parameters->ParamByName("p05")->Value = ACMTR_GRAD_CD;
  881. pADO->Parameters->ParamByName("p06")->Value = AINCD_CLSR_LANE;
  882. pADO->Parameters->ParamByName("p07")->Value = AVMS_DSPL_YN;
  883. pADO->Parameters->ParamByName("p08")->Value = AINCD_PRGR_STEP_CD;
  884. pADO->Parameters->ParamByName("p09")->Value = AINCD_STRT_DT;
  885. pADO->Parameters->ParamByName("p10")->Value = AINCD_END_PRAR_DT;
  886. pADO->Parameters->ParamByName("p11")->Value = ALINK_ID;
  887. pADO->Parameters->ParamByName("p12")->Value = AVMS_INCD_TYPE_CD;
  888. pADO->Parameters->ParamByName("p13")->Value = AVMS_INCD_DETL_TYPE_CD;
  889. pADO->Parameters->ParamByName("p14")->Value = AVMS_INCD_RSTR_TYPE_CD;
  890. pADO->ExecSQL();
  891. return true;
  892. }
  893. catch(EDatabaseError &E)
  894. {
  895. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  896. DBERRORMSG("TItsIncidentManager::MergeVmsIncidentInfo", String(E.ClassName()), E.Message, sQry);
  897. throw Exception(String(E.ClassName()) + E.Message);
  898. }
  899. catch(Exception &exception)
  900. {
  901. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  902. DBERRORMSG("TItsIncidentManager::MergeVmsIncidentInfo", String(exception.ClassName()), exception.Message, sQry);
  903. throw Exception(String(exception.ClassName()) + exception.Message);
  904. }
  905. }
  906. __finally
  907. {
  908. if (pADO)
  909. {
  910. pADO->Close();
  911. delete pADO;
  912. }
  913. }
  914. return false;
  915. }
  916. //---------------------------------------------------------------------------
  917. bool TItsIncidentManager::UpdateVmsIncidentInfo(String AINCD_OCRR_ID, String AINCD_PRGR_STEP_CD, TADOConnection *ADbConn/*=NULL*/)
  918. {
  919. String sQry;
  920. TADOQuery *pADO = NULL;
  921. sQry = "UPDATE TB_INCD_OCRR_VMS \r\n"
  922. " SET INCD_PRGR_STEP_CD = :p02 \r\n"
  923. " WHERE INCD_OCRR_ID = :p01 \r\n";
  924. try
  925. {
  926. try
  927. {
  928. pADO = new TADOQuery(NULL);
  929. pADO->Close();
  930. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  931. pADO->SQL->Clear();
  932. pADO->SQL->Text = sQry;
  933. pADO->Parameters->ParamByName("p01")->Value = AINCD_OCRR_ID;
  934. pADO->Parameters->ParamByName("p02")->Value = AINCD_PRGR_STEP_CD;
  935. pADO->ExecSQL();
  936. return true;
  937. }
  938. catch(EDatabaseError &E)
  939. {
  940. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  941. DBERRORMSG("TItsIncidentManager::UpdateVmsIncidentInfo", String(E.ClassName()), E.Message, sQry);
  942. throw Exception(String(E.ClassName()) + E.Message);
  943. }
  944. catch(Exception &exception)
  945. {
  946. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  947. DBERRORMSG("TItsIncidentManager::UpdateVmsIncidentInfo", String(exception.ClassName()), exception.Message, sQry);
  948. throw Exception(String(exception.ClassName()) + exception.Message);
  949. }
  950. }
  951. __finally
  952. {
  953. if (pADO)
  954. {
  955. pADO->Close();
  956. delete pADO;
  957. }
  958. }
  959. return false;
  960. }
  961. //---------------------------------------------------------------------------
  962. bool TItsIncidentManager::GetNextIncidentId(String ACenterId, String &AIncidentId, TADOConnection *ADbConn/*=NULL*/)
  963. {
  964. String sQry;
  965. TADOQuery *pADO = NULL;
  966. #if 0
  967. sQry = "SELECT SQ_INCD_ID.NEXTVAL AS NEWID FROM DUAL \r\n";
  968. #else
  969. sQry = "SELECT LPAD(NVL(MAX(SUBSTR(INCD_OCRR_ID, -9)), '000000000') + 1, 9, '0') AS NEWID \r\n"
  970. " FROM TB_INCD_OCRR \r\n"
  971. " WHERE SUBSTR(INCD_OCRR_ID, 1, 3) = :p01 \r\n";
  972. #endif
  973. AIncidentId = "";
  974. try
  975. {
  976. try
  977. {
  978. pADO = new TADOQuery(NULL);
  979. pADO->Close();
  980. pADO->Connection = (NULL != ADbConn) ? ADbConn : ITSDb_GetConnection();
  981. pADO->SQL->Clear();
  982. pADO->SQL->Text = sQry;
  983. #if 0
  984. pADO->Open();
  985. AIncidentId = pADO->FieldByName("NEWID")->AsString;
  986. #else
  987. pADO->Parameters->ParamByName("p01")->Value = ACenterId;
  988. pADO->Open();
  989. AIncidentId = ACenterId + pADO->FieldByName("NEWID")->AsString;
  990. #endif
  991. return true;
  992. }
  993. catch(EDatabaseError &E)
  994. {
  995. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  996. DBERRORMSG("TItsIncidentManager::GetNextIncidentId", String(E.ClassName()), E.Message, sQry);
  997. throw Exception(String(E.ClassName()) + E.Message);
  998. }
  999. catch(Exception &exception)
  1000. {
  1001. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  1002. DBERRORMSG("TItsIncidentManager::GetNextIncidentId", String(exception.ClassName()), exception.Message, sQry);
  1003. throw Exception(String(exception.ClassName()) + exception.Message);
  1004. }
  1005. }
  1006. __finally
  1007. {
  1008. if (pADO)
  1009. {
  1010. pADO->Close();
  1011. delete pADO;
  1012. }
  1013. }
  1014. return false;
  1015. }
  1016. //---------------------------------------------------------------------------