// AnalogDlg.cpp : implementation file // #include "stdafx.h" #include "IDE.h" #include "DlgSystemLog.h" #include "Syslib.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgSystemLog dialog CDlgSystemLog::CDlgSystemLog(CWnd* pParent /*=NULL*/) : CDialog(CDlgSystemLog::IDD, pParent) { //{{AFX_DATA_INIT(CDlgSystemLog) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_ctrlGridRec.RegisterWindowClass(g_hLangDLL); } void CDlgSystemLog::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgSystemLog) DDX_Control(pDX, IDC_GRID_REC, m_ctrlGridRec); //}}AFX_DATA_MAP DDX_Control(pDX, IDC_DT_START_DATE, m_ctrlStartDate); DDX_Control(pDX, IDC_DT_END_DATE, m_ctrlEndDate); DDX_Control(pDX, IDC_COMBO_DEV, m_ctrlDevName); DDX_Control(pDX, IDC_EDT_VAR_DESC, m_ctrlVarDesc); } BEGIN_MESSAGE_MAP(CDlgSystemLog, CDialog) //{{AFX_MSG_MAP(CDlgSystemLog) //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BTN_CLOSE, OnBnClickedBtnClose) ON_BN_CLICKED(IDC_BTN_QUERY, OnBnClickedBtnQuery) ON_BN_CLICKED(IDC_BTN_DEL, OnBnClickedBtnDel) ON_BN_CLICKED(IDC_BTN_EXPORT, OnBnClickedBtnExport) ON_BN_CLICKED(IDC_BTN_CLOSE2, OnBnClickedBtnClose2) ON_BN_CLICKED(IDC_BTN_CLOSE3, OnBnClickedBtnClose3) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgSystemLog message handlers void CDlgSystemLog::OnOK() { // TODO: Add extra validation here CDialog::OnOK(); } void CDlgSystemLog::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } BOOL CDlgSystemLog::OnInitDialog() { CDialog::OnInitDialog(); m_btnQuery.SubclassDlgItem(IDC_BTN_QUERY, this); m_btnQuery.SetBitmaps(IDB_FRESH, RGB(255, 0, 255)); m_btnQuery.SetFlat(FALSE); m_btnQuery.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnExit.SubclassDlgItem(IDC_BTN_CLOSE, this); m_btnExit.SetBitmaps(IDB_EXIT , RGB(192, 192, 192)); m_btnExit.SetFlat(FALSE); m_btnExit.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnDel.SubclassDlgItem(IDC_BTN_DEL, this); m_btnDel.SetBitmaps(IDB_DEL , RGB(255,0 , 255)); m_btnDel.SetFlat(FALSE); m_btnDel.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnExport.SubclassDlgItem(IDC_BTN_EXPORT, this); m_btnExport.SetBitmaps(IDB_INTO, RGB(255, 0, 255)); m_btnExport.SetFlat(FALSE); m_btnExport.SetAlign(CButtonST::ST_ALIGN_HORIZ); CTime tmToday; //今天的日期 CTime tmPreTwoDay; //前两天的日期 CTimeSpan tmspanTwoDay(1,0,0,0); //两天的时间距离 tmToday=CTime::GetCurrentTime();//获得当前日期 tmPreTwoDay=tmToday-tmspanTwoDay; UpdateData(TRUE);//时间更新为当前时间 m_ctrlStartDate.SetFormat("yyyy-M-d HH:mm:ss"); m_ctrlStartDate.SetTime( &tmPreTwoDay ); m_ctrlEndDate.SetFormat("yyyy-M-d HH:mm:ss"); m_ctrlEndDate.SetTime( &tmToday ); m_ctrlDevName.ResetContent(); m_ctrlDevName.AddString(g_strAll); //int nChannelSize = pDevicesManager->m_channels.GetSize(); //for( int i = 0; i < nChannelSize; i++ ) //{ // int nDeviceSize = pDevicesManager->m_channels[i]->m_Devices.GetSize(); // for( int j = 0; j < nDeviceSize; j++ ) // { // m_ctrlDevName.AddString(pDevicesManager->m_channels[i]->m_Devices[j]->m_strName); // } //} m_ctrlDevName.SetCurSel(0); SetFields(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDlgSystemLog::SetFields() { int i; m_ctrlGridRec.m_field.SetSize(5); i=0; m_ctrlGridRec.m_field[i].Field=_T("id"); m_ctrlGridRec.m_field[i].Caption=_T("ID"); m_ctrlGridRec.m_field[i].With = 50; m_ctrlGridRec.m_field[i].Find=true; i=1; m_ctrlGridRec.m_field[i].Field=_T("logtype"); m_ctrlGridRec.m_field[i].Caption=g_strLogType; m_ctrlGridRec.m_field[i].With=120; m_ctrlGridRec.m_field[i].Find=true; i=2; m_ctrlGridRec.m_field[i].Field=_T("moduletype"); m_ctrlGridRec.m_field[i].Caption=g_strModbusType; m_ctrlGridRec.m_field[i].With=120; m_ctrlGridRec.m_field[i].Find=true; i=3; m_ctrlGridRec.m_field[i].Field=_T("contents"); m_ctrlGridRec.m_field[i].Caption=g_strLogContent; m_ctrlGridRec.m_field[i].With=265; m_ctrlGridRec.m_field[i].Find=true; i=4; m_ctrlGridRec.m_field[i].Field=_T("happentime"); m_ctrlGridRec.m_field[i].Caption=g_strLogHappenTime; m_ctrlGridRec.m_field[i].With=220; //m_ctrlGridRec.m_field[i].Type=FIELD_FLOAT; //m_ctrlGridRec.m_field[i].nPrecision = 1; m_ctrlGridRec.m_field[i].Find=true; //i=5; //m_ctrlGridRec.m_field[i].Field=_T("alarmdesc"); //m_ctrlGridRec.m_field[i].Caption=g_strAlarmStatusDesc; //m_ctrlGridRec.m_field[i].With=200; //m_ctrlGridRec.m_field[i].nPrecision = 1; //m_ctrlGridRec.m_field[i].Find=true; Requery(); // m_ctrlAnalogGrid.Execute(m_pConnection,"ProductId"/*Primary key field */ // ,"*"//fields in SELECT statment // ,"Products" //from // ,"" // where // ,0); // order by N of the Grid column } void CDlgSystemLog::Requery() { CString strWhere; //strWhere.Format(" uid <> \'%s\'", "admin"); CString strStartTime, strEndTime, strStartDate, strEndDate; CString strTelNum, strContent; CTime tmToday; CTime tmPreTwoDay; m_ctrlStartDate.GetTime( tmPreTwoDay ); m_ctrlEndDate.GetTime( tmToday ); strStartDate.Format( "%d-%d-%d %d:%d:%d", tmPreTwoDay.GetYear(), tmPreTwoDay.GetMonth(), tmPreTwoDay.GetDay(), tmPreTwoDay.GetHour(), tmPreTwoDay.GetMinute(), tmPreTwoDay.GetSecond() ); strEndDate.Format( "%d-%d-%d %d:%d:%d", tmToday.GetYear(), tmToday.GetMonth(), tmToday.GetDay(), tmToday.GetHour(), tmToday.GetMinute(), tmToday.GetSecond() ); strWhere = "happentime >= '" + strStartDate + "' and happentime <= '" + strEndDate + "'"; int nIndex = -1; nIndex = m_ctrlDevName.GetCurSel(); CString strDevName, strVarDesc, strDevWhere, strVarWhere; m_ctrlDevName.GetLBText(nIndex, strDevName); if( nIndex!=0 )//if( strDevName.Compare(g_strAll) != 0 ) { strDevWhere.Format(" and logtype = \'%d\'", nIndex); strWhere += strDevWhere; } //m_ctrlVarDesc.GetWindowText( strVarDesc ); //if( strVarDesc.Compare("") != 0 ) //{ // strVarWhere.Format(" and a.type_desc like \'%s%s%s\'", "%", strVarDesc, "%"); // strWhere += strVarDesc; //} m_ctrlGridRec.Execute(_T("id")/*Primary key field */ ,_T("*")//fields in SELECT statment ,_T("t_sys_log") //from ,strWhere // where ,0,0); // order by N of the Grid column // #if 0 CString strWhere; //strWhere.Format(" uid <> \'%s\'", "admin"); CString strStartTime, strEndTime, strStartDate, strEndDate; CString strTelNum, strContent; CTime tmToday; CTime tmPreTwoDay; m_ctrlStartDate.GetTime( tmPreTwoDay ); m_ctrlEndDate.GetTime( tmToday ); strStartDate.Format( "%d-%d-%d %d:%d:%d", tmPreTwoDay.GetYear(), tmPreTwoDay.GetMonth(), tmPreTwoDay.GetDay(), tmPreTwoDay.GetHour(), tmPreTwoDay.GetMinute(), tmPreTwoDay.GetSecond() ); strEndDate.Format( "%d-%d-%d %d:%d:%d", tmToday.GetYear(), tmToday.GetMonth(), tmToday.GetDay(), tmToday.GetHour(), tmToday.GetMinute(), tmToday.GetSecond() ); strWhere = "a.happentime >= '" + strStartDate + "' and a.happentime <= '" + strEndDate + "'"; int nIndex = -1; nIndex = m_ctrlDevName.GetCurSel(); CString strDevName, strVarDesc, strDevWhere, strVarWhere; m_ctrlDevName.GetLBText(nIndex, strDevName); if( strDevName.Compare(g_strAll) != 0 ) { strDevWhere.Format(" and devname = \'%s\'", strDevName); strWhere += strDevWhere; } m_ctrlVarDesc.GetWindowText( strVarDesc ); if( strVarDesc.Compare("") != 0 ) { strVarWhere.Format(" and a.type_desc like \'%s%s%s\'", "%", strVarDesc, "%"); strWhere += strVarDesc; } //select a.devname, a.happentime, a.type_desc, a.varuid, a.varname, //case cast(boolreserved1 as integer) // when 1 then cast(curr_value as text) // when null then // case cast(curr_value as integer) when normalstate then '正常' // else '异常报警' // end //else //case cast(curr_value as integer) when normalstate then '正常' //else '异常报警' //end //end as alarmdesc //from t_summary_log a, t_dev_variant b where a.type_desc = b.description #if 1 CString strSQLText; strSQLText.Format("a.id, a.logtype, a.moduletype, a.contents, a.happentime, \ case cast(boolreserved1 as integer) when 1 then cast(curr_value as text) when null then \ case cast(curr_value as integer) when normalstate then \'%s\' else \ (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 \ else case cast(curr_value as integer) when normalstate then '%s' else \ (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 \ end as curr_value", g_strNormal, g_strNormal); m_ctrlGridRec.Execute(_T("a.id")/*Primary key field */ ,strSQLText//fields in SELECT statment ,_T("t_sys_log a, t_dev_variant b") //from ,_T(" a.type_desc = b.description") // where ,_T("a.id"),0); // order by N of the Grid column #else CString strSQLText; strSQLText.Format("a.id, a.devname, a.happentime, a.type_desc, a.varuid, a.varname, \ case cast(boolreserved1 as integer) when 1 then cast(curr_value as text) when null then \ case cast(curr_value as integer) when normalstate then \'%s\' else \ (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 \ else case cast(curr_value as integer) when normalstate then '%s' else \ (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 \ end as curr_value", g_strNormal, g_strNormal); m_ctrlGridRec.Execute(_T("a.id")/*Primary key field */ ,strSQLText//fields in SELECT statment ,_T("t_summary_log a, t_dev_variant b") //from ,_T(" a.type_desc = b.description") // where ,_T("a.id"),0); // order by N of the Grid column #endif #endif } BOOL CDlgSystemLog::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { LPNMHDR pNmhdr = (LPNMHDR)lParam; // TODO: 在此添加专用代码和/或调用基类 if (wParam == (WPARAM)m_ctrlGridRec.GetDlgCtrlID()) { *pResult = 1; GV_DISPINFO *pDispInfo = (GV_DISPINFO*)lParam; m_ctrlGridRec.SetValue(pDispInfo); } return CDialog::OnNotify(wParam, lParam, pResult); } BEGIN_EVENTSINK_MAP(CDlgSystemLog, CDialog) //{{AFX_EVENTSINK_MAP(CDlgSystemLog) //}}AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CDlgSystemLog::OnBnClickedBtnClose() { // TODO: 在此添加控件通知处理程序代码 OnCancel(); } void CDlgSystemLog::OnBnClickedBtnQuery() { // TODO: 在此添加控件通知处理程序代码 Requery(); } void CDlgSystemLog::OnBnClickedBtnDel() { int nCount = m_ctrlGridRec.GetRowCount(); CString sID; if( nCount>0 ) if (MessageBox (g_strMsgConfirmDelRecord, g_strMsgPrompt, MB_YESNO|MB_DEFBUTTON2 | MB_ICONQUESTION) != IDYES) return; for( int nRow=0;nRowGetText(); CDBInterface::GetInstancePtr()->DelTableData( "t_sys_log","id",(char *)(LPCTSTR)sID,2 ); } m_ctrlGridRec.DeleteAllItems(); Requery(); } void CDlgSystemLog::OnBnClickedBtnExport() { // TODO: 在此添加控件通知处理程序代码 ExportListToExcel( (CDataGrid*)&m_ctrlGridRec, "系统日志" ); //CString strFileName; //strFileName.Format("%s\\%s", g_strDirectory, "data.csv"); //m_ctrlGridRec.Save(strFileName); } void CDlgSystemLog::OnBnClickedBtnClose2() { // TODO: 在此添加控件通知处理程序代码 //if( !pDevicesManager->Connection(g_strServerIP, g_strServerPort) ) //{ // pDevicesManager->SetSocketStatus(FALSE); //} //else //{ // pDevicesManager->SetSocketStatus(TRUE); //} } void CDlgSystemLog::OnBnClickedBtnClose3() { // TODO: 在此添加控件通知处理程序代码 //pDevicesManager->DisConnection(); }