DlgSystemLog.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379
  1. // AnalogDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "IDE.h"
  5. #include "DlgSystemLog.h"
  6. #include "Syslib.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CDlgSystemLog dialog
  14. CDlgSystemLog::CDlgSystemLog(CWnd* pParent /*=NULL*/)
  15. : CDialog(CDlgSystemLog::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(CDlgSystemLog)
  18. // NOTE: the ClassWizard will add member initialization here
  19. //}}AFX_DATA_INIT
  20. m_ctrlGridRec.RegisterWindowClass(g_hLangDLL);
  21. }
  22. void CDlgSystemLog::DoDataExchange(CDataExchange* pDX)
  23. {
  24. CDialog::DoDataExchange(pDX);
  25. //{{AFX_DATA_MAP(CDlgSystemLog)
  26. DDX_Control(pDX, IDC_GRID_REC, m_ctrlGridRec);
  27. //}}AFX_DATA_MAP
  28. DDX_Control(pDX, IDC_DT_START_DATE, m_ctrlStartDate);
  29. DDX_Control(pDX, IDC_DT_END_DATE, m_ctrlEndDate);
  30. DDX_Control(pDX, IDC_COMBO_DEV, m_ctrlDevName);
  31. DDX_Control(pDX, IDC_EDT_VAR_DESC, m_ctrlVarDesc);
  32. }
  33. BEGIN_MESSAGE_MAP(CDlgSystemLog, CDialog)
  34. //{{AFX_MSG_MAP(CDlgSystemLog)
  35. //}}AFX_MSG_MAP
  36. ON_BN_CLICKED(IDC_BTN_CLOSE, OnBnClickedBtnClose)
  37. ON_BN_CLICKED(IDC_BTN_QUERY, OnBnClickedBtnQuery)
  38. ON_BN_CLICKED(IDC_BTN_DEL, OnBnClickedBtnDel)
  39. ON_BN_CLICKED(IDC_BTN_EXPORT, OnBnClickedBtnExport)
  40. ON_BN_CLICKED(IDC_BTN_CLOSE2, OnBnClickedBtnClose2)
  41. ON_BN_CLICKED(IDC_BTN_CLOSE3, OnBnClickedBtnClose3)
  42. END_MESSAGE_MAP()
  43. /////////////////////////////////////////////////////////////////////////////
  44. // CDlgSystemLog message handlers
  45. void CDlgSystemLog::OnOK()
  46. {
  47. // TODO: Add extra validation here
  48. CDialog::OnOK();
  49. }
  50. void CDlgSystemLog::OnCancel()
  51. {
  52. // TODO: Add extra cleanup here
  53. CDialog::OnCancel();
  54. }
  55. BOOL CDlgSystemLog::OnInitDialog()
  56. {
  57. CDialog::OnInitDialog();
  58. m_btnQuery.SubclassDlgItem(IDC_BTN_QUERY, this);
  59. m_btnQuery.SetBitmaps(IDB_FRESH, RGB(255, 0, 255));
  60. m_btnQuery.SetFlat(FALSE);
  61. m_btnQuery.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  62. m_btnExit.SubclassDlgItem(IDC_BTN_CLOSE, this);
  63. m_btnExit.SetBitmaps(IDB_EXIT , RGB(192, 192, 192));
  64. m_btnExit.SetFlat(FALSE);
  65. m_btnExit.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  66. m_btnDel.SubclassDlgItem(IDC_BTN_DEL, this);
  67. m_btnDel.SetBitmaps(IDB_DEL , RGB(255,0 , 255));
  68. m_btnDel.SetFlat(FALSE);
  69. m_btnDel.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  70. m_btnExport.SubclassDlgItem(IDC_BTN_EXPORT, this);
  71. m_btnExport.SetBitmaps(IDB_INTO, RGB(255, 0, 255));
  72. m_btnExport.SetFlat(FALSE);
  73. m_btnExport.SetAlign(CButtonST::ST_ALIGN_HORIZ);
  74. CTime tmToday; //今天的日期
  75. CTime tmPreTwoDay; //前两天的日期
  76. CTimeSpan tmspanTwoDay(1,0,0,0); //两天的时间距离
  77. tmToday=CTime::GetCurrentTime();//获得当前日期
  78. tmPreTwoDay=tmToday-tmspanTwoDay;
  79. UpdateData(TRUE);//时间更新为当前时间
  80. m_ctrlStartDate.SetFormat("yyyy-M-d HH:mm:ss");
  81. m_ctrlStartDate.SetTime( &tmPreTwoDay );
  82. m_ctrlEndDate.SetFormat("yyyy-M-d HH:mm:ss");
  83. m_ctrlEndDate.SetTime( &tmToday );
  84. m_ctrlDevName.ResetContent();
  85. m_ctrlDevName.AddString(g_strAll);
  86. //int nChannelSize = pDevicesManager->m_channels.GetSize();
  87. //for( int i = 0; i < nChannelSize; i++ )
  88. //{
  89. // int nDeviceSize = pDevicesManager->m_channels[i]->m_Devices.GetSize();
  90. // for( int j = 0; j < nDeviceSize; j++ )
  91. // {
  92. // m_ctrlDevName.AddString(pDevicesManager->m_channels[i]->m_Devices[j]->m_strName);
  93. // }
  94. //}
  95. m_ctrlDevName.SetCurSel(0);
  96. SetFields();
  97. return TRUE; // return TRUE unless you set the focus to a control
  98. // EXCEPTION: OCX Property Pages should return FALSE
  99. }
  100. void CDlgSystemLog::SetFields()
  101. {
  102. int i;
  103. m_ctrlGridRec.m_field.SetSize(5);
  104. i=0;
  105. m_ctrlGridRec.m_field[i].Field=_T("id");
  106. m_ctrlGridRec.m_field[i].Caption=_T("ID");
  107. m_ctrlGridRec.m_field[i].With = 50;
  108. m_ctrlGridRec.m_field[i].Find=true;
  109. i=1;
  110. m_ctrlGridRec.m_field[i].Field=_T("logtype");
  111. m_ctrlGridRec.m_field[i].Caption=g_strLogType;
  112. m_ctrlGridRec.m_field[i].With=120;
  113. m_ctrlGridRec.m_field[i].Find=true;
  114. i=2;
  115. m_ctrlGridRec.m_field[i].Field=_T("moduletype");
  116. m_ctrlGridRec.m_field[i].Caption=g_strModbusType;
  117. m_ctrlGridRec.m_field[i].With=120;
  118. m_ctrlGridRec.m_field[i].Find=true;
  119. i=3;
  120. m_ctrlGridRec.m_field[i].Field=_T("contents");
  121. m_ctrlGridRec.m_field[i].Caption=g_strLogContent;
  122. m_ctrlGridRec.m_field[i].With=265;
  123. m_ctrlGridRec.m_field[i].Find=true;
  124. i=4;
  125. m_ctrlGridRec.m_field[i].Field=_T("happentime");
  126. m_ctrlGridRec.m_field[i].Caption=g_strLogHappenTime;
  127. m_ctrlGridRec.m_field[i].With=220;
  128. //m_ctrlGridRec.m_field[i].Type=FIELD_FLOAT;
  129. //m_ctrlGridRec.m_field[i].nPrecision = 1;
  130. m_ctrlGridRec.m_field[i].Find=true;
  131. //i=5;
  132. //m_ctrlGridRec.m_field[i].Field=_T("alarmdesc");
  133. //m_ctrlGridRec.m_field[i].Caption=g_strAlarmStatusDesc;
  134. //m_ctrlGridRec.m_field[i].With=200;
  135. //m_ctrlGridRec.m_field[i].nPrecision = 1;
  136. //m_ctrlGridRec.m_field[i].Find=true;
  137. Requery();
  138. // m_ctrlAnalogGrid.Execute(m_pConnection,"ProductId"/*Primary key field */
  139. // ,"*"//fields in SELECT statment
  140. // ,"Products" //from
  141. // ,"" // where
  142. // ,0); // order by N of the Grid column
  143. }
  144. void CDlgSystemLog::Requery()
  145. {
  146. CString strWhere;
  147. //strWhere.Format(" uid <> \'%s\'", "admin");
  148. CString strStartTime, strEndTime, strStartDate, strEndDate;
  149. CString strTelNum, strContent;
  150. CTime tmToday;
  151. CTime tmPreTwoDay;
  152. m_ctrlStartDate.GetTime( tmPreTwoDay );
  153. m_ctrlEndDate.GetTime( tmToday );
  154. strStartDate.Format( "%d-%d-%d %d:%d:%d", tmPreTwoDay.GetYear(), tmPreTwoDay.GetMonth(), tmPreTwoDay.GetDay(),
  155. tmPreTwoDay.GetHour(), tmPreTwoDay.GetMinute(), tmPreTwoDay.GetSecond() );
  156. strEndDate.Format( "%d-%d-%d %d:%d:%d", tmToday.GetYear(), tmToday.GetMonth(), tmToday.GetDay(),
  157. tmToday.GetHour(), tmToday.GetMinute(), tmToday.GetSecond() );
  158. strWhere = "happentime >= '" + strStartDate + "' and happentime <= '" + strEndDate + "'";
  159. int nIndex = -1;
  160. nIndex = m_ctrlDevName.GetCurSel();
  161. CString strDevName, strVarDesc, strDevWhere, strVarWhere;
  162. m_ctrlDevName.GetLBText(nIndex, strDevName);
  163. if( nIndex!=0 )//if( strDevName.Compare(g_strAll) != 0 )
  164. {
  165. strDevWhere.Format(" and logtype = \'%d\'", nIndex);
  166. strWhere += strDevWhere;
  167. }
  168. //m_ctrlVarDesc.GetWindowText( strVarDesc );
  169. //if( strVarDesc.Compare("") != 0 )
  170. //{
  171. // strVarWhere.Format(" and a.type_desc like \'%s%s%s\'", "%", strVarDesc, "%");
  172. // strWhere += strVarDesc;
  173. //}
  174. m_ctrlGridRec.Execute(_T("id")/*Primary key field */
  175. ,_T("*")//fields in SELECT statment
  176. ,_T("t_sys_log") //from
  177. ,strWhere // where
  178. ,0,0); // order by N of the Grid column
  179. //
  180. #if 0
  181. CString strWhere;
  182. //strWhere.Format(" uid <> \'%s\'", "admin");
  183. CString strStartTime, strEndTime, strStartDate, strEndDate;
  184. CString strTelNum, strContent;
  185. CTime tmToday;
  186. CTime tmPreTwoDay;
  187. m_ctrlStartDate.GetTime( tmPreTwoDay );
  188. m_ctrlEndDate.GetTime( tmToday );
  189. strStartDate.Format( "%d-%d-%d %d:%d:%d", tmPreTwoDay.GetYear(), tmPreTwoDay.GetMonth(), tmPreTwoDay.GetDay(),
  190. tmPreTwoDay.GetHour(), tmPreTwoDay.GetMinute(), tmPreTwoDay.GetSecond() );
  191. strEndDate.Format( "%d-%d-%d %d:%d:%d", tmToday.GetYear(), tmToday.GetMonth(), tmToday.GetDay(),
  192. tmToday.GetHour(), tmToday.GetMinute(), tmToday.GetSecond() );
  193. strWhere = "a.happentime >= '" + strStartDate + "' and a.happentime <= '" + strEndDate + "'";
  194. int nIndex = -1;
  195. nIndex = m_ctrlDevName.GetCurSel();
  196. CString strDevName, strVarDesc, strDevWhere, strVarWhere;
  197. m_ctrlDevName.GetLBText(nIndex, strDevName);
  198. if( strDevName.Compare(g_strAll) != 0 )
  199. {
  200. strDevWhere.Format(" and devname = \'%s\'", strDevName);
  201. strWhere += strDevWhere;
  202. }
  203. m_ctrlVarDesc.GetWindowText( strVarDesc );
  204. if( strVarDesc.Compare("") != 0 )
  205. {
  206. strVarWhere.Format(" and a.type_desc like \'%s%s%s\'", "%", strVarDesc, "%");
  207. strWhere += strVarDesc;
  208. }
  209. //select a.devname, a.happentime, a.type_desc, a.varuid, a.varname,
  210. //case cast(boolreserved1 as integer)
  211. // when 1 then cast(curr_value as text)
  212. // when null then
  213. // case cast(curr_value as integer) when normalstate then '正常'
  214. // else '异常报警'
  215. // end
  216. //else
  217. //case cast(curr_value as integer) when normalstate then '正常'
  218. //else '异常报警'
  219. //end
  220. //end as alarmdesc
  221. //from t_summary_log a, t_dev_variant b where a.type_desc = b.description
  222. #if 1
  223. CString strSQLText;
  224. strSQLText.Format("a.id, a.logtype, a.moduletype, a.contents, a.happentime, \
  225. case cast(boolreserved1 as integer) when 1 then cast(curr_value as text) when null then \
  226. case cast(curr_value as integer) when normalstate then \'%s\' else \
  227. (select statusdesc from t_var_status where devuid = b.uid and varid = b.id and cast(statusid as integer) = cast(a.curr_value as integer) limit 1) end \
  228. else case cast(curr_value as integer) when normalstate then '%s' else \
  229. (select statusdesc from t_var_status where devuid = b.uid and varid = b.id and cast(statusid as integer) = cast(a.curr_value as integer) limit 1) end \
  230. end as curr_value", g_strNormal, g_strNormal);
  231. m_ctrlGridRec.Execute(_T("a.id")/*Primary key field */
  232. ,strSQLText//fields in SELECT statment
  233. ,_T("t_sys_log a, t_dev_variant b") //from
  234. ,_T(" a.type_desc = b.description") // where
  235. ,_T("a.id"),0); // order by N of the Grid column
  236. #else
  237. CString strSQLText;
  238. strSQLText.Format("a.id, a.devname, a.happentime, a.type_desc, a.varuid, a.varname, \
  239. case cast(boolreserved1 as integer) when 1 then cast(curr_value as text) when null then \
  240. case cast(curr_value as integer) when normalstate then \'%s\' else \
  241. (select statusdesc from t_var_status where devuid = b.uid and varid = b.id and cast(statusid as integer) = cast(a.curr_value as integer) limit 1) end \
  242. else case cast(curr_value as integer) when normalstate then '%s' else \
  243. (select statusdesc from t_var_status where devuid = b.uid and varid = b.id and cast(statusid as integer) = cast(a.curr_value as integer) limit 1) end \
  244. end as curr_value", g_strNormal, g_strNormal);
  245. m_ctrlGridRec.Execute(_T("a.id")/*Primary key field */
  246. ,strSQLText//fields in SELECT statment
  247. ,_T("t_summary_log a, t_dev_variant b") //from
  248. ,_T(" a.type_desc = b.description") // where
  249. ,_T("a.id"),0); // order by N of the Grid column
  250. #endif
  251. #endif
  252. }
  253. BOOL CDlgSystemLog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
  254. {
  255. LPNMHDR pNmhdr = (LPNMHDR)lParam;
  256. // TODO: 在此添加专用代码和/或调用基类
  257. if (wParam == (WPARAM)m_ctrlGridRec.GetDlgCtrlID())
  258. {
  259. *pResult = 1;
  260. GV_DISPINFO *pDispInfo = (GV_DISPINFO*)lParam;
  261. m_ctrlGridRec.SetValue(pDispInfo);
  262. }
  263. return CDialog::OnNotify(wParam, lParam, pResult);
  264. }
  265. BEGIN_EVENTSINK_MAP(CDlgSystemLog, CDialog)
  266. //{{AFX_EVENTSINK_MAP(CDlgSystemLog)
  267. //}}AFX_EVENTSINK_MAP
  268. END_EVENTSINK_MAP()
  269. void CDlgSystemLog::OnBnClickedBtnClose()
  270. {
  271. // TODO: 在此添加控件通知处理程序代码
  272. OnCancel();
  273. }
  274. void CDlgSystemLog::OnBnClickedBtnQuery()
  275. {
  276. // TODO: 在此添加控件通知处理程序代码
  277. Requery();
  278. }
  279. void CDlgSystemLog::OnBnClickedBtnDel()
  280. {
  281. int nCount = m_ctrlGridRec.GetRowCount();
  282. CString sID;
  283. if( nCount>0 )
  284. if (MessageBox (g_strMsgConfirmDelRecord, g_strMsgPrompt, MB_YESNO|MB_DEFBUTTON2 | MB_ICONQUESTION) != IDYES)
  285. return;
  286. for( int nRow=0;nRow<nCount;nRow++ )
  287. {
  288. sID = m_ctrlGridRec.GetCell( nRow, 0 )->GetText();
  289. CDBInterface::GetInstancePtr()->DelTableData( "t_sys_log","id",(char *)(LPCTSTR)sID,2 );
  290. }
  291. m_ctrlGridRec.DeleteAllItems();
  292. Requery();
  293. }
  294. void CDlgSystemLog::OnBnClickedBtnExport()
  295. {
  296. // TODO: 在此添加控件通知处理程序代码
  297. ExportListToExcel( (CDataGrid*)&m_ctrlGridRec, "系统日志" );
  298. //CString strFileName;
  299. //strFileName.Format("%s\\%s", g_strDirectory, "data.csv");
  300. //m_ctrlGridRec.Save(strFileName);
  301. }
  302. void CDlgSystemLog::OnBnClickedBtnClose2()
  303. {
  304. // TODO: 在此添加控件通知处理程序代码
  305. //if( !pDevicesManager->Connection(g_strServerIP, g_strServerPort) )
  306. //{
  307. // pDevicesManager->SetSocketStatus(FALSE);
  308. //}
  309. //else
  310. //{
  311. // pDevicesManager->SetSocketStatus(TRUE);
  312. //}
  313. }
  314. void CDlgSystemLog::OnBnClickedBtnClose3()
  315. {
  316. // TODO: 在此添加控件通知处理程序代码
  317. //pDevicesManager->DisConnection();
  318. }