FrmLinkInfoF.cpp 36 KB

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