IST00601F.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #include "WindowMsgF.h"
  8. #include "ITSLangTransF.h"
  9. #pragma hdrstop
  10. #include "IST00601F.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "FRAME_ChartF"
  14. #pragma link "cxButtons"
  15. #pragma link "cxCalc"
  16. #pragma link "cxCheckBox"
  17. #pragma link "cxClasses"
  18. #pragma link "cxContainer"
  19. #pragma link "cxControls"
  20. #pragma link "cxCustomData"
  21. #pragma link "cxData"
  22. #pragma link "cxDataStorage"
  23. #pragma link "cxEdit"
  24. #pragma link "cxFilter"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGrid"
  27. #pragma link "cxGridCustomTableView"
  28. #pragma link "cxGridCustomView"
  29. #pragma link "cxGridLevel"
  30. #pragma link "cxGridTableView"
  31. #pragma link "cxLookAndFeelPainters"
  32. #pragma link "cxLookAndFeels"
  33. #pragma link "cxProgressBar"
  34. #pragma link "cxSplitter"
  35. #pragma link "cxStyles"
  36. #pragma link "cxTextEdit"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinsCore"
  40. #pragma link "dxSkinscxPCPainter"
  41. #pragma link "cxLabel"
  42. #pragma resource "*.dfm"
  43. TIST00601 *IST00601 = NULL;
  44. //---------------------------------------------------------------------------
  45. __fastcall TIST00601::TIST00601(TComponent* Owner, HWND hHandle, String sFrom, String sTo, String sIdList)
  46. : TForm(Owner)
  47. {
  48. LangTrans->Translate(this, ITSDb_GetConnection());
  49. ITSSkin_Load(this);
  50. CMM_LoadForm(g_sFormsDir, this);
  51. FParent = hHandle;
  52. FStDateTime = sFrom;
  53. FEdDateTime = sTo;
  54. FIdList = sIdList;
  55. }
  56. //---------------------------------------------------------------------------
  57. __fastcall TIST00601::~TIST00601(void)
  58. {
  59. }
  60. //--------------------------------------------------------------------------
  61. /*
  62. * form 초기화
  63. *
  64. * arguments
  65. *
  66. * return
  67. * void
  68. */
  69. void __fastcall TIST00601::FormInit()
  70. {
  71. ADOQry->Connection = ITSDb_GetConnection();
  72. m_pGDC = TvList->DataController;
  73. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<프로세스 상태통계 정보>";
  74. FRAMEChart1->FTitle = Caption;//"프로세스 상태통계";
  75. FRAMEChart1->SetChartLegend(lblText1->Caption, FrmLang->lblCnt->Caption);//"프로세스", "개수");
  76. FRAMEChart1->ChartValueDisplay(FRAMEChart1->ChkDisplayVal->Checked);
  77. FRAMEChart1->TvChart->ToolBox->CustomizeButton = true;
  78. FRAMEChart1->TvChart->Legend->Position = cppDefault;
  79. FRAMEChart1->TvChart->DiagramStackedBar->Enabled = true;
  80. FRAMEChart1->TvChart->DiagramStackedColumn->Enabled = true;
  81. //FRAMEChart1->TvChart->DiagramStackedColumn->Active = true;
  82. FRAMEChart1->TvChart->DiagramColumn->Active = true;
  83. LblSearch->Caption = FrmLang->lblQryCond->Caption + FStDateTime.SubString(1, 12) + " ~ " + FEdDateTime.SubString(1, 12);
  84. }
  85. //---------------------------------------------------------------------------
  86. /*
  87. * form을 보여줄때 호출되는 event 메서드이다.
  88. * arguments
  89. * Sender : event handler 객체
  90. * return
  91. * void
  92. */
  93. void __fastcall TIST00601::FormShow(TObject *Sender)
  94. {
  95. FormInit();
  96. Refresh();
  97. TmrShow->Enabled = true;
  98. }
  99. //---------------------------------------------------------------------------
  100. /*
  101. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  102. * Form과 DataModule class를 delete시킨다.
  103. * arguments
  104. *
  105. * return
  106. * void
  107. */
  108. void __fastcall TIST00601::CommClose()
  109. {
  110. CMM_SaveForm(g_sFormsDir, this);
  111. //IST00601 = NULL;
  112. }
  113. //---------------------------------------------------------------------------
  114. /*
  115. * 최초 1회 수행되는 타이머 이벤트
  116. * arguments
  117. * Sender : event handler 객체
  118. * return
  119. * void
  120. */
  121. void __fastcall TIST00601::TmrShowTimer(TObject *Sender)
  122. {
  123. TmrShow->Enabled = false;
  124. Application->ProcessMessages();
  125. SelHistory();
  126. }
  127. //---------------------------------------------------------------------------
  128. void __fastcall TIST00601::ChkExpandClick(TObject *Sender)
  129. {
  130. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  131. }
  132. //---------------------------------------------------------------------------
  133. /*
  134. * Refresh Data Event Function
  135. * arguments
  136. *
  137. * return
  138. * void
  139. */
  140. void __fastcall TIST00601::SelHistory()
  141. {
  142. TSqlCursor sqlCrs;
  143. String sQry;
  144. TADOQuery *pADO = ADOQry;
  145. sQry = "SELECT A.SYST_ID FCLT_ID, A.SYST_NM FCLT_NM, \r\n"
  146. " NVL(B.CNT, 0) CNT_SPS0, NVL(C.CNT, 0) CNT_SPS1, NVL(D.CNT, 0) CNT_SPS2, NVL(E.CNT, 0) CNT_SPS3, NVL(F.CNT, 0) CNT_SPS4 \r\n"
  147. " FROM TB_UNIT_SYST A, \r\n"
  148. " (SELECT SYST_ID, COUNT(SYST_ID) CNT FROM TB_UNIT_SYST_STTS_HS WHERE SYST_STTS_CD = 'SPS0' AND CRTN_DT BETWEEN :p01 AND :p02 GROUP BY SYST_ID \r\n"
  149. " ) B, \r\n"
  150. " (SELECT SYST_ID, COUNT(SYST_ID) CNT FROM TB_UNIT_SYST_STTS_HS WHERE SYST_STTS_CD = 'SPS1' AND CRTN_DT BETWEEN :p03 AND :p04 GROUP BY SYST_ID \r\n"
  151. " ) C, \r\n"
  152. " (SELECT SYST_ID, COUNT(SYST_ID) CNT FROM TB_UNIT_SYST_STTS_HS WHERE SYST_STTS_CD = 'SPS2' AND CRTN_DT BETWEEN :p05 AND :p06 GROUP BY SYST_ID \r\n"
  153. " ) D, \r\n"
  154. " (SELECT SYST_ID, COUNT(SYST_ID) CNT FROM TB_UNIT_SYST_STTS_HS WHERE SYST_STTS_CD = 'SPS3' AND CRTN_DT BETWEEN :p07 AND :p08 GROUP BY SYST_ID \r\n"
  155. " ) E, \r\n"
  156. " (SELECT SYST_ID, COUNT(SYST_ID) CNT FROM TB_UNIT_SYST_STTS_HS WHERE SYST_STTS_CD = 'SPS4' AND CRTN_DT BETWEEN :p09 AND :p10 GROUP BY SYST_ID \r\n"
  157. " ) F \r\n"
  158. " WHERE A.SYST_ID = B.SYST_ID(+) \r\n"
  159. " AND A.SYST_ID = C.SYST_ID(+) \r\n"
  160. " AND A.SYST_ID = D.SYST_ID(+) \r\n"
  161. " AND A.SYST_ID = E.SYST_ID(+) \r\n"
  162. " AND A.SYST_ID = F.SYST_ID(+) \r\n"
  163. " AND A.STTS_DSPL_YN = 'Y' \r\n"
  164. // " AND A.SYST_ID IN ('CTV01', 'DSRC01', 'EXT03', 'UOT01', 'UTP01', 'VMS01', 'WALL01', 'WEB01', 'WEB02') \r\n"
  165. " ORDER BY A.SYST_ID \r\n";
  166. try
  167. {
  168. ITSDb_SQLText(pADO, sQry);
  169. ITSDb_SQLBind(pADO, "p01", FStDateTime);
  170. ITSDb_SQLBind(pADO, "p02", FEdDateTime);
  171. ITSDb_SQLBind(pADO, "p03", FStDateTime);
  172. ITSDb_SQLBind(pADO, "p04", FEdDateTime);
  173. ITSDb_SQLBind(pADO, "p05", FStDateTime);
  174. ITSDb_SQLBind(pADO, "p06", FEdDateTime);
  175. ITSDb_SQLBind(pADO, "p07", FStDateTime);
  176. ITSDb_SQLBind(pADO, "p08", FEdDateTime);
  177. ITSDb_SQLBind(pADO, "p09", FStDateTime);
  178. ITSDb_SQLBind(pADO, "p10", FEdDateTime);
  179. ITSDb_SQLOpen(pADO);
  180. DspHistory();
  181. }
  182. catch(EDatabaseError &E)
  183. {
  184. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  185. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  186. throw Exception(String(E.ClassName()) + E.Message);
  187. }
  188. catch(Exception &exception)
  189. {
  190. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  191. DBERRORMSG(Caption, String(exception.ClassName()), exception.Message, sQry);
  192. throw Exception(String(exception.ClassName()) + exception.Message);
  193. }
  194. }
  195. //---------------------------------------------------------------------------
  196. void __fastcall TIST00601::DspHistory()
  197. {
  198. TADOQuery *pADO = ADOQry;
  199. TcxGridChartView *TvChart = FRAMEChart1->TvChart;
  200. try
  201. {
  202. TcxGridChartSeries *pChart1 = NULL;
  203. TcxGridChartSeries *pChart2 = NULL;
  204. TvChart->ClearSeries();
  205. FRAMEChart1->ChartValueDisplay(FRAMEChart1->ChkDisplayVal->Checked);
  206. CMM_ClearGridTableView(TvList);
  207. int nRow = 0;
  208. int nDataCnt = 0;
  209. try {
  210. TvList->BeginUpdate();
  211. TvChart->BeginUpdate();
  212. nDataCnt = pADO->RecordCount;
  213. TvChart->DataController->RecordCount = nDataCnt;
  214. m_pGDC->RecordCount = nDataCnt;
  215. pChart1 = TvChart->CreateSeries();
  216. pChart1->DataBinding->ValueType = "Integer";
  217. pChart1->DisplayText = FrmLang->lblChartTotal->Caption;//"전체";
  218. pChart2 = TvChart->CreateSeries();
  219. pChart2->DataBinding->ValueType = "Integer";
  220. pChart2->DisplayText = lblText2->Caption;//"실행중";
  221. int nSPS0;
  222. int nSPS1;
  223. int nSPS2;
  224. int nSPS3;
  225. int nSPS4;
  226. //int nSPS_Total = nSPS0 + nSPS1 + nSPS2 + nSPS3 + nSPS4;
  227. int nSPS_Total = 288;
  228. for( ; !pADO->Eof; pADO->Next(), nRow++)
  229. {
  230. m_pGDC->Values[nRow][Column01->Index] = pADO->FieldByName("FCLT_ID")->AsString;
  231. m_pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("FCLT_NM")->AsString;
  232. nSPS0 = pADO->FieldByName("CNT_SPS0")->AsInteger;
  233. nSPS1 = pADO->FieldByName("CNT_SPS1")->AsInteger;
  234. nSPS2 = pADO->FieldByName("CNT_SPS2")->AsInteger;
  235. nSPS3 = pADO->FieldByName("CNT_SPS3")->AsInteger;
  236. nSPS4 = pADO->FieldByName("CNT_SPS4")->AsInteger;
  237. m_pGDC->Values[nRow][Column03->Index] = nSPS_Total;
  238. m_pGDC->Values[nRow][Column04->Index] = nSPS1;
  239. m_pGDC->Values[nRow][Column05->Index] = nSPS_Total ? (double)nSPS1 / (double)nSPS_Total * (double)100 : 0;
  240. pChart1->Values[nRow] = nSPS_Total;
  241. pChart2->Values[nRow] = nSPS1;
  242. TvChart->Categories->Values[nRow] = m_pGDC->Values[nRow][Column02->Index];
  243. }
  244. }
  245. __finally
  246. {
  247. if (pADO)
  248. {
  249. pADO->Close();
  250. }
  251. TvChart->EndUpdate();
  252. TvList->EndUpdate();
  253. //CxList->SetFocus();
  254. LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + FrmLang->lblEA->Caption;//" 건";
  255. String sEnd = FrmLang->lblQrySel->Caption + " [" + LblRecords->Caption + "]";//"데이터 " + LblRecords->Caption + " 이 조회 되었습니다.";
  256. Application->MessageBox(sEnd.c_str(),
  257. FrmLang->lblQryEnd->Caption.c_str(),//L"데이터 조회 완료",
  258. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  259. }
  260. }
  261. catch(EDatabaseError &E)
  262. {
  263. throw Exception(String(E.ClassName()) + E.Message);
  264. }
  265. catch(...)
  266. {
  267. throw Exception(FrmLang->lblDbErr->Caption);//"알수없는 오류가 발생하였습니다.");
  268. }
  269. }
  270. //---------------------------------------------------------------------------
  271. void __fastcall TIST00601::OnMessage(TMessage &Msg)
  272. {
  273. switch (Msg.Msg)
  274. {
  275. case WM_PARAM_DATABASE:
  276. if (WP_DB_SELECT_OK == Msg.WParam)
  277. {
  278. //ShowMessage("Select Ok");
  279. }
  280. break;
  281. }
  282. }
  283. //---------------------------------------------------------------------------
  284. void __fastcall TIST00601::BtnExlSaveClick(TObject *Sender)
  285. {
  286. TcxGrid *pGrid = CxList;
  287. TcxGridTableView *pView = TvList;
  288. String sTitle= Caption;//"프로세스상태통계";
  289. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  290. }
  291. //---------------------------------------------------------------------------
  292. void __fastcall TIST00601::FormClose(TObject *Sender, TCloseAction &Action)
  293. {
  294. POST_MSG(FParent, WM_SUBFORM_CLOSE, 0, 0);
  295. CommClose();
  296. //IST00601 = NULL;
  297. }
  298. //---------------------------------------------------------------------------
  299. void __fastcall TIST00601::FormDestroy(TObject *Sender)
  300. {
  301. CommClose();
  302. }
  303. //---------------------------------------------------------------------------