FrmLinkInfoF.cpp 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #include "ITSLangTransF.h"
  8. #include "ITS_OPLibF.h"
  9. #pragma hdrstop
  10. #include "WindowMsgF.h"
  11. #include "FrmLinkInfoF.h"
  12. #include "FrmLinkGradeSetF.h"
  13. #include "CDSNodeF.h"
  14. #include "CDSLinkF.h"
  15. #include "CDSIfscF.h"
  16. #include "CDSRoadF.h"
  17. #include "CDSTrafficGradeF.h"
  18. //---------------------------------------------------------------------------
  19. #pragma package(smart_init)
  20. #pragma link "cxButtons"
  21. #pragma link "cxClasses"
  22. #pragma link "cxContainer"
  23. #pragma link "cxControls"
  24. #pragma link "cxCustomData"
  25. #pragma link "cxData"
  26. #pragma link "cxDataStorage"
  27. #pragma link "cxEdit"
  28. #pragma link "cxFilter"
  29. #pragma link "cxGraphics"
  30. #pragma link "cxGrid"
  31. #pragma link "cxGridCustomTableView"
  32. #pragma link "cxGridCustomView"
  33. #pragma link "cxGridLevel"
  34. #pragma link "cxGridTableView"
  35. #pragma link "cxGroupBox"
  36. #pragma link "cxLabel"
  37. #pragma link "cxLookAndFeelPainters"
  38. #pragma link "cxLookAndFeels"
  39. #pragma link "cxStyles"
  40. #pragma link "cxTextEdit"
  41. #pragma link "dxSkinBlack"
  42. #pragma link "dxSkinBlue"
  43. #pragma link "dxSkinsCore"
  44. #pragma link "dxSkinscxPCPainter"
  45. #pragma link "dxSkinMcSkin"
  46. #pragma resource "*.dfm"
  47. TFrmLinkInfo *FrmLinkInfo = NULL;
  48. //---------------------------------------------------------------------------
  49. __fastcall TFrmLinkInfo::TFrmLinkInfo(TComponent* Owner)
  50. : TForm(Owner)
  51. {
  52. LangTrans->Translate(this, ITSDb_GetConnection());
  53. Width = 474;
  54. Height= 525;
  55. int nHeight = Height;
  56. int nWidth = Width;
  57. ITSSkin_Load(this);
  58. CMM_LoadForm(g_sFormsDir, this);
  59. Height = nHeight;
  60. Width = nWidth;
  61. // Caption = " 구간 상세정보";
  62. m_sLinkId = "";
  63. m_nLinkLevel = 0;
  64. FCodeRDR = ItsCodeManager->FLists.Find("RDR"); // 도로등급
  65. }
  66. //---------------------------------------------------------------------------
  67. void __fastcall TFrmLinkInfo::FormClose(TObject *Sender, TCloseAction &Action)
  68. {
  69. try
  70. {
  71. CMM_SaveForm(g_sFormsDir, this);
  72. }
  73. catch(...)
  74. {
  75. }
  76. Action = caFree;
  77. FrmLinkInfo = NULL;
  78. }
  79. //---------------------------------------------------------------------------
  80. void __fastcall TFrmLinkInfo::RefreshLinkInfo()
  81. {
  82. ShowLinkInfo(m_sLinkId, m_nLinkLevel);
  83. }
  84. //---------------------------------------------------------------------------
  85. void __fastcall TFrmLinkInfo::ShowLinkInfo(String sLinkId, int nLinkLevel)
  86. {
  87. m_sLinkId = sLinkId;
  88. m_nLinkLevel = nLinkLevel;
  89. EdId->Text = sLinkId;
  90. EdLevel->Text = String(m_nLinkLevel);
  91. EdLength->Text = FormatFloat("##,##0", 0);
  92. EdStId->Text = "";
  93. EdEdId->Text = "";
  94. EdStName->Text = FrmLang->lblNoName->Caption;//"명칭없음";
  95. EdEdName->Text = FrmLang->lblNoName->Caption;//"명칭없음";
  96. EdRoadName->Text = "";
  97. EdRoadRank->Text = "";
  98. EdSvcDt->Text = "";
  99. EdPrcnSorc->Text = "";
  100. EdAdjsSorc->Text = "";
  101. PnlGrade->Caption = FrmLang->lblNull->Caption;//"정보없음";
  102. PnlGrade->Color = clGray;
  103. EdRoadRank->Visible = false;
  104. Column04->Visible = false;
  105. Column05->Visible = false;
  106. Column06->Visible = false;
  107. Column07->Visible = false;
  108. Column08->Visible = false;
  109. Column10->Visible = false;
  110. Column11->Visible = false;
  111. cxGridColumn3->Visible = false;
  112. cxGridColumn4->Visible = false;
  113. cxGridColumn5->Visible = false;
  114. cxGridColumn7->Visible = false;
  115. switch(m_nLinkLevel)
  116. {
  117. case 1: //레벨1 링크(표준링크)
  118. {
  119. TItsNode *pNode;
  120. TItsLink *pLink;
  121. pLink = ItsLinkManager->FLists.Find(m_sLinkId);
  122. if (!pLink) return;
  123. EdStId->Text = pLink->F_NODE_ID;
  124. EdEdId->Text = pLink->T_NODE_ID;
  125. EdLength->Text = FormatFloat("##,##0", StrToFloat(pLink->LINK_LENG));
  126. pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID);
  127. if (pNode) EdStName->Text = pNode->NODE_NAME.Trim();
  128. pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID);
  129. if (pNode) EdEdName->Text = pNode->NODE_NAME.Trim();
  130. EdRoadName->Text = pLink->ROAD_NAME;
  131. String sRDR = "[" + pLink->ROAD_RANK + "] ";
  132. if (FCodeRDR)
  133. {
  134. TItsSubCode *pSubCode = FCodeRDR->FSubLists.Find(pLink->ROAD_RANK);
  135. if (pSubCode) sRDR = sRDR + pSubCode->CMMN_CD_KOR_NM;
  136. }
  137. EdRoadRank->Text = sRDR;
  138. //TItsTrafficLink *pTraf = ItsTrafficLinkManager->FList.Find(m_sLinkId);
  139. //if (pTraf)
  140. //{
  141. //}
  142. EdRoadRank->Visible = true;
  143. Column04->Visible = true;
  144. Column05->Visible = true;
  145. Column06->Visible = true;
  146. Column07->Visible = true;
  147. Column08->Visible = true;
  148. Column10->Visible = true;
  149. Column11->Visible = true;
  150. cxGridColumn3->Visible = true;
  151. cxGridColumn4->Visible = true;
  152. cxGridColumn5->Visible = true;
  153. cxGridColumn7->Visible = true;
  154. SelTrafficLink(m_sLinkId);
  155. }
  156. break;
  157. case 2: //레벨2 링크(서비스링크)
  158. {
  159. TItsNode *pNode;
  160. TItsIfsc *pLink;
  161. pLink = ItsIfscManager->FLists.Find(m_sLinkId);
  162. if (!pLink) return;
  163. EdStId->Text = pLink->F_NODE_ID;
  164. EdEdId->Text = pLink->T_NODE_ID;
  165. EdLength->Text = FormatFloat("##,##0", StrToFloat(pLink->SECT_LNGT));
  166. pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID);
  167. if (pNode) EdStName->Text = pNode->NODE_NAME.Trim();
  168. pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID);
  169. if (pNode) EdEdName->Text = pNode->NODE_NAME.Trim();
  170. EdRoadName->Text = pLink->IFSC_NM;
  171. //TItsTrafficServiceLink *pTraf = ItsTrafficServiceLinkManager->FList.Find(m_sLinkId);
  172. //if (pTraf)
  173. //{
  174. //}
  175. SelTrafficServiceLink(m_sLinkId);
  176. }
  177. break;
  178. case 3: //도로
  179. {
  180. TItsNode *pNode;
  181. TItsRoad *pRoad;
  182. pRoad = ItsRoadManager->FLists.Find(m_sLinkId);
  183. if (!pRoad) return;
  184. EdStId->Text = pRoad->F_NODE_ID;
  185. EdEdId->Text = pRoad->T_NODE_ID;
  186. EdLength->Text = FormatFloat("##,##0", StrToFloat(pRoad->SECT_LNGT));
  187. pNode = ItsNodeManager->FLists.Find(pRoad->F_NODE_ID);
  188. if (pNode) EdStName->Text = pNode->NODE_NAME.Trim();
  189. pNode = ItsNodeManager->FLists.Find(pRoad->T_NODE_ID);
  190. if (pNode) EdEdName->Text = pNode->NODE_NAME.Trim();
  191. EdRoadName->Text = pRoad->ROAD_NM;
  192. //TItsTrafficRoad *pTraf = ItsTrafficRoadManager->FList.Find(m_sLinkId);
  193. //if (pTraf)
  194. //{
  195. //}
  196. SelTrafficRoad(m_sLinkId);
  197. }
  198. break;
  199. }
  200. PnlSystime->Caption = Now().FormatString(STR_DATETIME);
  201. }
  202. //---------------------------------------------------------------------------
  203. void __fastcall TFrmLinkInfo::SelTrafficLink(String ALinkId)
  204. {
  205. String sQry;
  206. TADOQuery *pADO = NULL;
  207. CMM_ClearGridTableView(TvList);
  208. try
  209. {
  210. TvList1->BeginUpdate();
  211. TvList->BeginUpdate();
  212. TcxDataController *pGDC1 = TvList1->DataController;
  213. TcxDataController *pGDC = TvList->DataController;
  214. pADO = new TADOQuery(NULL);
  215. pADO->Close();
  216. pADO->Connection = ITSDb_GetConnection();
  217. // 현재소통정보
  218. try
  219. {
  220. #if 1
  221. sQry = "SELECT TO_DATE( PRCN_DT, 'YYYYMMDDHH24MISS' ) PRCN_DT2, PRCN_DT, CMTR_GRAD_CD, \r\n"
  222. " DATA_NUM, \r\n"
  223. " SPED, TRVL_HH, MISS_YN, PRCN_SPED, SMTH_SPED, ADJS_SPED, PTRN_SPED, \r\n"
  224. " DECODE(C.CMMN_CD, NULL, A.CMTR_GRAD_CD, C.CMMN_CD_KOR_NM) AS GRADE_NM, \r\n"
  225. " DECODE(B.CMMN_CD, NULL, A.PRCN_SORC, B.CMMN_CD_KOR_NM) AS PRCN_SORC_NM, \r\n"
  226. " DECODE(D.CMMN_CD, NULL, A.ADJS_SORC, D.CMMN_CD_KOR_NM) AS ADJS_SORC_NM \r\n"
  227. " FROM TB_LINK_TRAF A, \r\n"
  228. " (SELECT * FROM TB_CMMN_CD \r\n"
  229. " WHERE CMMN_CLSF_CD = 'CST' OR CMMN_CLSF_CD = 'MCS' \r\n"
  230. " ) B, \r\n"
  231. " (SELECT * FROM TB_CMMN_CD \r\n"
  232. " WHERE CMMN_CLSF_CD = 'CST' OR CMMN_CLSF_CD = 'MCS' \r\n"
  233. " ) D, \r\n"
  234. " (SELECT * FROM TB_CMMN_CD \r\n"
  235. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  236. " ) C \r\n"
  237. " WHERE LINK_ID = :p01 \r\n"
  238. " AND PRCN_DT > TO_CHAR( SYSDATE - 10 / 1440, 'YYYYMMDDHH24MISS' ) \r\n"
  239. " AND A.PRCN_SORC = B.CMMN_CD(+) \r\n"
  240. " AND A.ADJS_SORC = D.CMMN_CD(+) \r\n"
  241. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n";
  242. #else
  243. sQry = "SELECT TO_DATE( PRCN_DT, 'YYYYMMDDHH24MISS' ) PRCN_DT, CMTR_GRAD_CD, \r\n"
  244. " SPED, PTRN_SPED, TRVL_HH, \r\n"
  245. " C.CMMN_CD_KOR_NM GRADE_NM, B.CMMN_CD_KOR_NM AS PRCN_SORC, \r\n"
  246. " DECODE(B.CMMN_CD, NULL, A.PRCN_SORC, B.CMMN_CD_KOR_NM) AS PRCN_SORC_NM \r\n"
  247. " FROM TB_LINK_TRAF A, \r\n"
  248. " (SELECT * FROM TB_CMMN_CD \r\n"
  249. " WHERE CMMN_CLSF_CD = 'CST' OR CMMN_CLSF_CD = 'MCS' \r\n"
  250. " ) B, \r\n"
  251. " (SELECT * FROM TB_CMMN_CD \r\n"
  252. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  253. " ) C \r\n"
  254. " WHERE LINK_ID = :p01 \r\n"
  255. " AND PRCN_DT > TO_CHAR( SYSDATE - 10 / 1440, 'YYYYMMDDHH24MISS' ) \r\n"
  256. " AND A.PRCN_SORC = B.CMMN_CD(+) \r\n"
  257. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n";
  258. #endif
  259. ITSDb_SQLText(pADO, sQry);
  260. ITSDb_SQLBind(pADO, "p01", ALinkId);
  261. ITSDb_SQLOpen(pADO);
  262. if (!pADO->Eof)
  263. {
  264. String sDbDate = pADO->FieldByName("PRCN_DT")->AsString;
  265. EdSvcDt->Text = APP_FormatStr(sDbDate, STR_DATETIME);
  266. EdPrcnSorc->Text = pADO->FieldByName("PRCN_SORC_NM")->AsString;
  267. EdAdjsSorc->Text = pADO->FieldByName("ADJS_SORC_NM")->AsString;
  268. pGDC1->Values[0][cxGridColumn1->Index] = pADO->FieldByName("TRVL_HH")->AsString;
  269. pGDC1->Values[0][cxGridColumn2->Index] = pADO->FieldByName("SPED")->AsString;
  270. pGDC1->Values[0][cxGridColumn3->Index] = pADO->FieldByName("PRCN_SPED")->AsString;
  271. pGDC1->Values[0][cxGridColumn4->Index] = pADO->FieldByName("SMTH_SPED")->AsString;
  272. pGDC1->Values[0][cxGridColumn5->Index] = pADO->FieldByName("ADJS_SPED")->AsString;
  273. pGDC1->Values[0][cxGridColumn6->Index] = pADO->FieldByName("PTRN_SPED")->AsString;
  274. pGDC1->Values[0][cxGridColumn7->Index] = pADO->FieldByName("MISS_YN")->AsString;
  275. pGDC1->Values[0][cxGridColumn8->Index] = pADO->FieldByName("DATA_NUM")->AsString;
  276. PnlGrade->Caption = pADO->FieldByName("GRADE_NM")->AsString;
  277. String sGrade = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  278. if (sGrade == "LTC0")
  279. {
  280. PnlGrade->Color = clGray;
  281. }
  282. else if (sGrade == "LTC1")
  283. {
  284. PnlGrade->Color = clLime;
  285. }
  286. else if (sGrade == "LTC2")
  287. {
  288. PnlGrade->Color = clYellow;
  289. }
  290. else if (sGrade == "LTC3")
  291. {
  292. PnlGrade->Color = clRed;
  293. }
  294. }
  295. }
  296. catch(EDatabaseError &E)
  297. {
  298. throw Exception(String(E.ClassName()) + E.Message);
  299. }
  300. catch(Exception &exception)
  301. {
  302. throw Exception(String(exception.ClassName()) + exception.Message);
  303. }
  304. catch(...)
  305. {
  306. throw Exception(FrmLang->lblDbErr->Caption);//"[링크정보조회] 알수없는 DB 오류가 발생하였습니다.");
  307. }
  308. try
  309. {
  310. #if 1
  311. sQry = "SELECT PRCN_DT2, PRCN_DT, CMTR_GRAD_CD, \r\n"
  312. " SPED, TRVL_HH, MISS_YN, PRCN_SPED, SMTH_SPED, ADJS_SPED, PTRN_SPED, DATA_NUM, \r\n"
  313. " DECODE(C.CMMN_CD, NULL, A.CMTR_GRAD_CD, C.CMMN_CD_KOR_NM) AS GRADE_NM, \r\n"
  314. " DECODE(B.CMMN_CD, NULL, A.PRCN_SORC, B.CMMN_CD_KOR_NM) AS PRCN_SORC_NM, \r\n"
  315. " DECODE(D.CMMN_CD, NULL, A.ADJS_SORC, D.CMMN_CD_KOR_NM) AS ADJS_SORC_NM, RANK \r\n"
  316. " FROM (SELECT RANK() OVER( PARTITION BY LINK_ID ORDER BY LINK_ID, PRCN_DT DESC ) RANK, \r\n"
  317. " TO_DATE(PRCN_DT, 'YYYYMMDDHH24MISS') AS PRCN_DT2, PRCN_DT, \r\n"
  318. " SUBSTR(CMTR_GRAD_CD, 4, 1) AS GRADE, \r\n"
  319. " MISS_YN, PRCN_SORC, ADJS_SORC, SPED, TRVL_HH, CMTR_GRAD_CD, \r\n"
  320. " PRCN_SPED, SMTH_SPED, ADJS_SPED, PTRN_SPED, DATA_NUM \r\n"
  321. " FROM TB_LINK_TRAF_HS \r\n"
  322. " WHERE LINK_ID = :p01 \r\n"
  323. " AND PRCN_DT > TO_CHAR(SYSDATE - 1 / 24, 'YYYYMMDDHH24MISS') \r\n"
  324. " ) A, \r\n"
  325. " (SELECT * FROM TB_CMMN_CD WHERE CMMN_CLSF_CD = 'CST' OR CMMN_CLSF_CD = 'MCS' \r\n"
  326. " ) B, \r\n"
  327. " (SELECT * FROM TB_CMMN_CD WHERE CMMN_CLSF_CD = 'CST' OR CMMN_CLSF_CD = 'MCS' \r\n"
  328. " ) D, \r\n"
  329. " (SELECT * FROM TB_CMMN_CD WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  330. " ) C \r\n"
  331. " WHERE RANK <= 12 \r\n"
  332. " AND A.PRCN_SORC = B.CMMN_CD(+) \r\n"
  333. " AND A.ADJS_SORC = D.CMMN_CD(+) \r\n"
  334. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n"
  335. " ORDER BY RANK \r\n";
  336. #else
  337. sQry = "SELECT RANK, PRCN_DT, C.CMMN_CD_KOR_NM GRADE, MISS_YN, B.CMMN_CD_KOR_NM PRCN_SORC, SPED, \r\n"
  338. " TRVL_HH, PRCN_SPED, SMTH_SPED, ADJS_SPED, PTRN_SPED, \r\n"
  339. " DECODE(B.CMMN_CD, NULL, A.PRCN_SORC, B.CMMN_CD_KOR_NM) AS PRCN_SORC_NM \r\n"
  340. " FROM (SELECT RANK() OVER( PARTITION BY LINK_ID ORDER BY LINK_ID, PRCN_DT DESC ) RANK, \r\n"
  341. " TO_DATE( PRCN_DT, 'YYYYMMDDHH24MISS' ) PRCN_DT, \r\n"
  342. " SUBSTR(CMTR_GRAD_CD, 4, 1) GRADE, \r\n"
  343. " MISS_YN, PRCN_SORC, SPED, TRVL_HH, CMTR_GRAD_CD, \r\n"
  344. " PRCN_SPED, SMTH_SPED, ADJS_SPED, PTRN_SPED \r\n"
  345. " FROM TB_LINK_TRAF_HS \r\n"
  346. " WHERE LINK_ID = :p01 \r\n"
  347. " AND PRCN_DT > TO_CHAR(SYSDATE - 1 / 24, 'YYYYMMDDHH24MISS' ) \r\n"
  348. " ) A, \r\n"
  349. " (SELECT * FROM TB_CMMN_CD \r\n"
  350. " WHERE CMMN_CLSF_CD = 'CST' \r\n"
  351. " OR CMMN_CLSF_CD = 'MCS' \r\n"
  352. " ) B, \r\n"
  353. " (SELECT * FROM TB_CMMN_CD \r\n"
  354. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  355. " ) C \r\n"
  356. " WHERE RANK <= 12 \r\n"
  357. " AND A.PRCN_SORC = B.CMMN_CD(+) \r\n"
  358. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n"
  359. " ORDER BY RANK \r\n";
  360. #endif
  361. ITSDb_SQLText(pADO, sQry);
  362. ITSDb_SQLBind(pADO, "p01", ALinkId);
  363. ITSDb_SQLOpen(pADO);
  364. int nRank;
  365. int nRow;
  366. for( ; !pADO->Eof; pADO->Next())
  367. {
  368. nRank = pADO->FieldByName("RANK")->AsInteger; // 이력순석
  369. //if (nRank == 1) continue;
  370. nRow = pGDC->AppendRecord();
  371. String sDbDate = pADO->FieldByName("PRCN_DT")->AsString;
  372. pGDC->Values[nRow][Column01->Index] = APP_FormatStr(sDbDate, STR_DATETIME);
  373. pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("TRVL_HH")->AsString;
  374. pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("SPED")->AsString;
  375. pGDC->Values[nRow][Column04->Index] = pADO->FieldByName("PRCN_SPED")->AsString;
  376. pGDC->Values[nRow][Column05->Index] = pADO->FieldByName("SMTH_SPED")->AsString;
  377. pGDC->Values[nRow][Column06->Index] = pADO->FieldByName("ADJS_SPED")->AsString;
  378. pGDC->Values[nRow][Column07->Index] = pADO->FieldByName("PTRN_SPED")->AsString;
  379. pGDC->Values[nRow][Column08->Index] = pADO->FieldByName("MISS_YN")->AsString;
  380. pGDC->Values[nRow][Column09->Index] = pADO->FieldByName("DATA_NUM")->AsString;
  381. pGDC->Values[nRow][Column10->Index] = pADO->FieldByName("PRCN_SORC_NM")->AsString;
  382. pGDC->Values[nRow][Column11->Index] = pADO->FieldByName("ADJS_SORC_NM")->AsString;
  383. pGDC->Values[nRow][Column12->Index] = pADO->FieldByName("GRADE_NM")->AsString;
  384. }
  385. }
  386. catch(EDatabaseError &E)
  387. {
  388. throw Exception(String(E.ClassName()) + E.Message);
  389. }
  390. catch(Exception &exception)
  391. {
  392. throw Exception(String(exception.ClassName()) + exception.Message);
  393. }
  394. catch(...)
  395. {
  396. throw Exception(FrmLang->lblDbErr->Caption);//"[구간 상세정보] 알수없는 DB 오류가 발생하였습니다.");
  397. }
  398. }
  399. __finally
  400. {
  401. if (pADO)
  402. {
  403. pADO->Close();
  404. delete pADO;
  405. }
  406. TvList1->EndUpdate();
  407. TvList->EndUpdate();
  408. }
  409. }
  410. //---------------------------------------------------------------------------
  411. void __fastcall TFrmLinkInfo::SelTrafficServiceLink(String ALinkId)
  412. {
  413. String sQry;
  414. TADOQuery *pADO = NULL;
  415. CMM_ClearGridTableView(TvList);
  416. try
  417. {
  418. TvList1->BeginUpdate();
  419. TvList->BeginUpdate();
  420. TcxDataController *pGDC1 = TvList1->DataController;
  421. TcxDataController *pGDC = TvList->DataController;
  422. pADO = new TADOQuery(NULL);
  423. pADO->Close();
  424. pADO->Connection = ITSDb_GetConnection();
  425. // 현재소통정보
  426. try
  427. {
  428. sQry = "SELECT TO_DATE(PRCN_DT, 'YYYYMMDDHH24MISS') PRCN_DT2, PRCN_DT, CMTR_GRAD_CD, SPED, \r\n"
  429. " C.CMMN_CD_KOR_NM GRADE, PTRN_SPED, TRVL_HH, DATA_NUM \r\n"
  430. " FROM TB_IFSC_TRAF A, \r\n"
  431. " (SELECT * FROM TB_CMMN_CD \r\n"
  432. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  433. " ) C \r\n"
  434. " WHERE IFSC_ID = :p01 \r\n"
  435. " AND PRCN_DT > TO_CHAR(SYSDATE - 10 / 1440, 'YYYYMMDDHH24MISS') \r\n"
  436. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n";
  437. ITSDb_SQLText(pADO, sQry);
  438. ITSDb_SQLBind(pADO, "p01", ALinkId);
  439. ITSDb_SQLOpen(pADO);
  440. if (!pADO->Eof)
  441. {
  442. String sDbDate = pADO->FieldByName("PRCN_DT")->AsString;
  443. EdSvcDt->Text = APP_FormatStr(sDbDate, STR_DATETIME);
  444. pGDC1->Values[0][cxGridColumn1->Index] = pADO->FieldByName("TRVL_HH")->AsString;
  445. pGDC1->Values[0][cxGridColumn2->Index] = pADO->FieldByName("SPED")->AsString;
  446. pGDC1->Values[0][cxGridColumn3->Index] = "-";
  447. pGDC1->Values[0][cxGridColumn4->Index] = "-";
  448. pGDC1->Values[0][cxGridColumn5->Index] = "-";
  449. pGDC1->Values[0][cxGridColumn6->Index] = pADO->FieldByName("PTRN_SPED")->AsString;
  450. pGDC1->Values[0][cxGridColumn7->Index] = "-";
  451. pGDC1->Values[0][cxGridColumn8->Index] = pADO->FieldByName("DATA_NUM")->AsString;
  452. PnlGrade->Caption = pADO->FieldByName("GRADE")->AsString;
  453. String sGrade = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  454. if (sGrade == "LTC0")
  455. {
  456. PnlGrade->Color = clGray;
  457. }
  458. else if (sGrade == "LTC1")
  459. {
  460. PnlGrade->Color = clLime;
  461. }
  462. else if (sGrade == "LTC2")
  463. {
  464. PnlGrade->Color = clYellow;
  465. }
  466. else if (sGrade == "LTC3")
  467. {
  468. PnlGrade->Color = clRed;
  469. }
  470. }
  471. }
  472. catch(EDatabaseError &E)
  473. {
  474. throw Exception(String(E.ClassName()) + E.Message);
  475. }
  476. catch(Exception &exception)
  477. {
  478. throw Exception(String(exception.ClassName()) + exception.Message);
  479. }
  480. catch(...)
  481. {
  482. throw Exception(FrmLang->lblDbErr->Caption);//"[구간 상세정보] 알수없는 DB 오류가 발생하였습니다.");
  483. }
  484. try
  485. {
  486. sQry = "SELECT RANK, PRCN_DT2, PRCN_DT, C.CMMN_CD_KOR_NM GRADE_NM, SPED, TRVL_HH, PTRN_SPED, DATA_NUM \r\n"
  487. " FROM (SELECT RANK() OVER( PARTITION BY IFSC_ID ORDER BY IFSC_ID, PRCN_DT DESC ) RANK, \r\n"
  488. " TO_DATE( PRCN_DT, 'YYYYMMDDHH24MISS' ) PRCN_DT2, PRCN_DT, \r\n"
  489. " SUBSTR( CMTR_GRAD_CD, 4, 1 ) GRADE, \r\n"
  490. " SPED, TRVL_HH, CMTR_GRAD_CD, PTRN_SPED, DATA_NUM \r\n"
  491. " FROM TB_IFSC_TRAF_HS \r\n"
  492. " WHERE IFSC_ID = :p01 \r\n"
  493. " AND PRCN_DT > TO_CHAR(SYSDATE - 1 / 24, 'YYYYMMDDHH24MISS') \r\n"
  494. " ) A, \r\n"
  495. " (SELECT * FROM TB_CMMN_CD \r\n"
  496. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  497. " ) C \r\n"
  498. " WHERE RANK <= 12 \r\n"
  499. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n"
  500. " ORDER BY RANK \r\n";
  501. ITSDb_SQLText(pADO, sQry);
  502. ITSDb_SQLBind(pADO, "p01", ALinkId);
  503. ITSDb_SQLOpen(pADO);
  504. int nRank;
  505. int nRow;
  506. for( ; !pADO->Eof; pADO->Next())
  507. {
  508. nRank = pADO->FieldByName("RANK")->AsInteger; // 이력순석
  509. //if (nRank == 1) continue;
  510. nRow = pGDC->AppendRecord();
  511. String sDbDate = pADO->FieldByName("PRCN_DT")->AsString;
  512. pGDC->Values[nRow][Column01->Index] = APP_FormatStr(sDbDate, STR_DATETIME);
  513. pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("TRVL_HH")->AsString;
  514. pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("SPED")->AsString;
  515. pGDC->Values[nRow][Column04->Index] = "-";
  516. pGDC->Values[nRow][Column05->Index] = "-";
  517. pGDC->Values[nRow][Column06->Index] = "-";
  518. pGDC->Values[nRow][Column07->Index] = "-";
  519. pGDC->Values[nRow][Column08->Index] = "-";
  520. pGDC->Values[nRow][Column09->Index] = pADO->FieldByName("DATA_NUM")->AsString;
  521. pGDC->Values[nRow][Column10->Index] = "-";
  522. pGDC->Values[nRow][Column11->Index] = "-";
  523. pGDC->Values[nRow][Column12->Index] = pADO->FieldByName("GRADE_NM")->AsString;
  524. }
  525. }
  526. catch(EDatabaseError &E)
  527. {
  528. throw Exception(String(E.ClassName()) + E.Message);
  529. }
  530. catch(Exception &exception)
  531. {
  532. throw Exception(String(exception.ClassName()) + exception.Message);
  533. }
  534. catch(...)
  535. {
  536. throw Exception(FrmLang->lblDbErr->Caption);//"[구간 상세정보] 알수없는 DB 오류가 발생하였습니다.");
  537. }
  538. }
  539. __finally
  540. {
  541. if (pADO)
  542. {
  543. pADO->Close();
  544. delete pADO;
  545. }
  546. TvList->EndUpdate();
  547. TvList1->EndUpdate();
  548. }
  549. }
  550. //---------------------------------------------------------------------------
  551. void __fastcall TFrmLinkInfo::SelTrafficRoad(String ALinkId)
  552. {
  553. String sQry;
  554. TADOQuery *pADO = NULL;
  555. CMM_ClearGridTableView(TvList);
  556. try
  557. {
  558. TvList1->BeginUpdate();
  559. TvList->BeginUpdate();
  560. TcxDataController *pGDC1 = TvList1->DataController;
  561. TcxDataController *pGDC = TvList->DataController;
  562. pADO = new TADOQuery(NULL);
  563. pADO->Close();
  564. pADO->Connection = ITSDb_GetConnection();
  565. // 현재소통정보
  566. try
  567. {
  568. sQry = "SELECT TO_DATE( PRCN_DT, 'YYYYMMDDHH24MISS' ) PRCN_DT2, PRCN_DT, CMTR_GRAD_CD, SPED, \r\n"
  569. " C.CMMN_CD_KOR_NM GRADE, PTRN_SPED, TRVL_HH, DATA_NUM \r\n"
  570. " FROM TB_ROAD_TRAF A, \r\n"
  571. " (SELECT * FROM TB_CMMN_CD \r\n"
  572. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  573. " ) C \r\n"
  574. " WHERE ROAD_ID = :p01 \r\n"
  575. " AND PRCN_DT > TO_CHAR(SYSDATE - 10 / 1440, 'YYYYMMDDHH24MISS') \r\n"
  576. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n";
  577. ITSDb_SQLText(pADO, sQry);
  578. ITSDb_SQLBind(pADO, "p01", ALinkId);
  579. ITSDb_SQLOpen(pADO);
  580. if (!pADO->Eof)
  581. {
  582. String sDbDate = pADO->FieldByName("PRCN_DT")->AsString;
  583. EdSvcDt->Text = APP_FormatStr(sDbDate, STR_DATETIME);
  584. pGDC1->Values[0][cxGridColumn1->Index] = pADO->FieldByName("TRVL_HH")->AsString;
  585. pGDC1->Values[0][cxGridColumn2->Index] = pADO->FieldByName("SPED")->AsString;
  586. pGDC1->Values[0][cxGridColumn3->Index] = "-";
  587. pGDC1->Values[0][cxGridColumn4->Index] = "-";
  588. pGDC1->Values[0][cxGridColumn5->Index] = "-";
  589. pGDC1->Values[0][cxGridColumn6->Index] = pADO->FieldByName("PTRN_SPED")->AsString;
  590. pGDC1->Values[0][cxGridColumn7->Index] = "-";
  591. pGDC1->Values[0][cxGridColumn8->Index] = pADO->FieldByName("DATA_NUM")->AsString;
  592. PnlGrade->Caption = pADO->FieldByName("GRADE")->AsString;
  593. String sGrade = pADO->FieldByName("CMTR_GRAD_CD")->AsString;
  594. if (sGrade == "LTC0")
  595. {
  596. PnlGrade->Color = clGray;
  597. }
  598. else if (sGrade == "LTC1")
  599. {
  600. PnlGrade->Color = clLime;
  601. }
  602. else if (sGrade == "LTC2")
  603. {
  604. PnlGrade->Color = clYellow;
  605. }
  606. else if (sGrade == "LTC3")
  607. {
  608. PnlGrade->Color = clRed;
  609. }
  610. }
  611. }
  612. catch(EDatabaseError &E)
  613. {
  614. throw Exception(String(E.ClassName()) + E.Message);
  615. }
  616. catch(Exception &exception)
  617. {
  618. throw Exception(String(exception.ClassName()) + exception.Message);
  619. }
  620. catch(...)
  621. {
  622. throw Exception(FrmLang->lblDbErr->Caption);//"[도로정보조회] 알수없는 DB 오류가 발생하였습니다.");
  623. }
  624. try
  625. {
  626. sQry = "SELECT RANK, PRCN_DT2, PRCN_DT, C.CMMN_CD_KOR_NM GRADE_NM, SPED, TRVL_HH, PTRN_SPED, DATA_NUM \r\n"
  627. " FROM (SELECT RANK() OVER( PARTITION BY ROAD_ID ORDER BY ROAD_ID, PRCN_DT DESC ) RANK, \r\n"
  628. " TO_DATE( PRCN_DT, 'YYYYMMDDHH24MISS' ) PRCN_DT2, PRCN_DT, \r\n"
  629. " SUBSTR( CMTR_GRAD_CD, 4, 1 ) GRADE, \r\n"
  630. " SPED, TRVL_HH, CMTR_GRAD_CD, PTRN_SPED, DATA_NUM \r\n"
  631. " FROM TB_ROAD_TRAF_HS \r\n"
  632. " WHERE ROAD_ID = :p01 \r\n"
  633. " AND PRCN_DT > TO_CHAR( SYSDATE - 1 / 24, 'YYYYMMDDHH24MISS' ) \r\n"
  634. " ) A, \r\n"
  635. " (SELECT * FROM TB_CMMN_CD \r\n"
  636. " WHERE CMMN_CLSF_CD = 'LTC' \r\n"
  637. " ) C \r\n"
  638. " WHERE RANK <= 12 \r\n"
  639. " AND A.CMTR_GRAD_CD = C.CMMN_CD(+) \r\n"
  640. " ORDER BY RANK \r\n";
  641. ITSDb_SQLText(pADO, sQry);
  642. ITSDb_SQLBind(pADO, "p01", ALinkId);
  643. ITSDb_SQLOpen(pADO);
  644. int nRank;
  645. int nRow;
  646. for( ; !pADO->Eof; pADO->Next())
  647. {
  648. nRank = pADO->FieldByName("RANK")->AsInteger; // 이력순석
  649. //if (nRank == 1) continue;
  650. nRow = pGDC->AppendRecord();
  651. String sDbDate = pADO->FieldByName("PRCN_DT")->AsString;
  652. pGDC->Values[nRow][Column01->Index] = APP_FormatStr(sDbDate, STR_DATETIME);
  653. pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("TRVL_HH")->AsString;
  654. pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("SPED")->AsString;
  655. pGDC->Values[nRow][Column04->Index] = "-";
  656. pGDC->Values[nRow][Column05->Index] = "-";
  657. pGDC->Values[nRow][Column06->Index] = "-";
  658. pGDC->Values[nRow][Column07->Index] = "-";
  659. pGDC->Values[nRow][Column08->Index] = "-";
  660. pGDC->Values[nRow][Column09->Index] = pADO->FieldByName("DATA_NUM")->AsString;
  661. pGDC->Values[nRow][Column10->Index] = "-";
  662. pGDC->Values[nRow][Column11->Index] = "-";
  663. pGDC->Values[nRow][Column12->Index] = pADO->FieldByName("GRADE_NM")->AsString;
  664. }
  665. }
  666. catch(EDatabaseError &E)
  667. {
  668. throw Exception(String(E.ClassName()) + E.Message);
  669. }
  670. catch(Exception &exception)
  671. {
  672. throw Exception(String(exception.ClassName()) + exception.Message);
  673. }
  674. catch(...)
  675. {
  676. throw Exception(FrmLang->lblDbErr->Caption);//"[구간 상세정보] 알수없는 DB 오류가 발생하였습니다.");
  677. }
  678. }
  679. __finally
  680. {
  681. if (pADO)
  682. {
  683. pADO->Close();
  684. delete pADO;
  685. }
  686. TvList->EndUpdate();
  687. TvList1->EndUpdate();
  688. }
  689. }
  690. //---------------------------------------------------------------------------
  691. void __fastcall TFrmLinkInfo::BtnEditGradeClick(TObject *Sender)
  692. {
  693. if (!FrmLinkGradeSet)
  694. {
  695. FrmLinkGradeSet = new TFrmLinkGradeSet(this);
  696. }
  697. if (FrmLinkGradeSet)
  698. {
  699. FrmLinkGradeSet->SetInfo(m_sLinkId, m_nLinkLevel);
  700. FrmLinkGradeSet->ShowModal();
  701. FrmLinkGradeSet = NULL;
  702. }
  703. }
  704. //---------------------------------------------------------------------------