Newer
Older
EMS_REFACTOR / PatrolLog.cs
nn-203 on 26 Jul 2017 9 KB first commit
using System;
using System.IO;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using DevComponents.DotNetBar;

namespace Cyberpipe
{
    public partial class PatrolLog : Form
    {
        string patrolerid;
        private int pagesize = 16;
        private int currentpage = 1;
        private int lastpage = 1;

        public PatrolLog()
        {
            InitializeComponent();
        }

        public PatrolLog(string patrolerid)
        {
            this.patrolerid = patrolerid;
            InitializeComponent();
        }

        private void reloadDataGrid(int pageIndex)
        {
            if (dateTimePicker_start.Value.CompareTo(dateTimePicker_end.Value) > 0)
            {
                MessageBox.Show("开始日期不能大于结束日期!");
                return;
            }
            string sqlrows = "select * from (select rownum as rowno,dbid,equipment,operate,operate_time,username from loginfo where patroler_id=" + patrolerid + " ";
            string sqlcount = "select count(*) from loginfo where patroler_id=" + patrolerid + " ";
            if (null!=dateTimePicker_start.Value)
            {
                sqlrows += "and operate_time>=to_date('" + dateTimePicker_start.Value.ToShortDateString() + "','yyyy-MM-dd') ";
                sqlcount += "and operate_time>=to_date('" + dateTimePicker_start.Value.ToShortDateString() + "','yyyy-MM-dd') ";
            }
            if (null != dateTimePicker_end.Value)
            {
                DateTime time = dateTimePicker_end.Value;
                sqlrows += "and operate_time<=to_date('" + time.AddDays(1).ToShortDateString() + "','yyyy-MM-dd') ";
                sqlcount += "and operate_time<=to_date('" + time.AddDays(1).ToShortDateString() + "','yyyy-MM-dd') ";
            }
            sqlrows += "and rownum<=" + (pagesize * pageIndex) + ") table_alias where table_alias.rowno>=" + ((pageIndex - 1) * pagesize + 1);
            sqlrows += " order by operate_time desc";

            int rows = int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sqlcount).ToString());
            int pages = 0;
            if (rows % pagesize == 0)
            {
                pages = rows / pagesize;
            }
            else
            {
                pages = rows / pagesize + 1;
            }

            lastpage = pages;

            lab_page_msg.Text = "共" + rows + "条记录,每页" + pagesize + "条,第" + pageIndex + "页,共" + pages + "页";
            combo_page_num.Items.Clear();
            for (int i = 1; i <= pages; i++)
            {
                combo_page_num.Items.Add(new ComboBoxItem(i.ToString(), i.ToString()));
            }

            if (lastpage == 1)
            {
                btn_page_first.Enabled = false;
                btn_page_pre.Enabled = false;
                btn_page_last.Enabled = false;
                btn_page_next.Enabled = false;
            }
            else if (currentpage == 1)
            {
                btn_page_first.Enabled = false;
                btn_page_pre.Enabled = false;
                btn_page_last.Enabled = true;
                btn_page_next.Enabled = true;
            }
            else if (currentpage == lastpage)
            {
                btn_page_first.Enabled = true;
                btn_page_pre.Enabled = true;
                btn_page_last.Enabled = false;
                btn_page_next.Enabled = false;
            }
            else
            {
                btn_page_first.Enabled = true;
                btn_page_pre.Enabled = true;
                btn_page_last.Enabled = true;
                btn_page_next.Enabled = true;
            }

            DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sqlrows).Tables[0];
            dataGridViewX1.DataSource = table;

        }


        private void PatrolLog_Load(object sender, EventArgs e)
        {
            try
            {
                dateTimePicker_end.Value = DateTime.Now;
                dateTimePicker_start.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) ;
                reloadDataGrid(currentpage);
            }
            catch (Exception ex)
            {
                MessageBox.Show("日志显示失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        #region
        public static void PublishError(Exception e)
        {
            if (e.Data.Count > 0)
            {
                e.Data.Add("Kind", "ErrorLog");
            }
            PublishTxt("ErrorLog", e);
            PublishErrorToDataBase(e);
        }

        private static void PublishErrorToDataBase(Exception e)
        {
            string stackTrace = e.StackTrace.Replace("\r\n", "||");
            string message = e.Message.Replace("'", "\"");
            string source = e.Source.Replace(" ", "-");
            string sql = " insert into 日志管理 values('" + DateTime.Now.ToString() + "','" +
                message + "','" + source + "','" + stackTrace + "','" + e.TargetSite + "')";
            try
            {
                int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sql).ToString());
            }
            catch (Exception ex)
            {
                PublishTxt("ErrorLog", ex);
            }
        }
        private static void PublishTxt(string LogName, Exception e)
        {
            string m_LogName = Application.StartupPath + "/log.txt";

            StringBuilder sb = new StringBuilder();
            sb.Append("\r\n exception begin -----------------" + DateTime.Now + "---------------------\r\n\r\n\r\n");
            sb.Append("\r\n e.Message:" + e.Message + "\r\n");
            sb.Append("\r\n e.Source:" + e.Source + "\r\n");
            sb.Append("\r\n e.TargetSite:" + e.TargetSite.ToString() + "\r\n");
            sb.Append("\r\n e.StackTrace:" + e.StackTrace + "\r\n");
            sb.Append("\r\n\r\n\r\n exception over ------------------------------------------------------------\r\n");
            if (e.Data.Count > 0)
            {
                foreach (DictionaryEntry de in e.Data)
                {
                    sb.Append("\r\n" + de.Key.ToString() + de.Value.ToString() + "\r\n");
                }
            }
            PublishStream(m_LogName, sb);

        }
        public static void PublishAlarmMessage(string sensorType, string eqtId, string alarmValue, string collectTime)
        {
            string m_LogName = Application.StartupPath + "/alarmlog.txt";

            //m_LogName = m_LogName.Split('.')[0] + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
            //    + DateTime.Now.Day.ToString() +"."+ m_LogName.Split('.')[1];

            StringBuilder sb = new StringBuilder();
            sb.Append("\r\n alarm begin -----------------" + DateTime.Now + "---------------------\r\n\r\n\r\n");
            sb.Append("\r\n 传感器类型:" + sensorType + "\r\n");
            sb.Append("\r\n 设备id:" + eqtId + "\r\n");
            sb.Append("\r\n 传感器测量值:" + alarmValue + "\r\n");
            sb.Append("\r\n 测量值采集时间:" + collectTime + "\r\n");
            sb.Append("\r\n\r\n\r\n alarm over ------------------------------------------------------------\r\n");

            PublishStream(m_LogName, sb);

        }
        private static void PublishStream(string LogName, StringBuilder sb)
        {

            using (StreamWriter sw = new StreamWriter(LogName, true))
            {
                sw.Write(sb);
            }

            using (StreamReader sr = new StreamReader(LogName))
            {
                string strLog = sr.ReadToEnd();
                if (strLog.Length > 1024 * 1024)
                {
                    strLog = strLog.Substring(1024 * 512);
                }
            }
        }
        #endregion

        private void btn_page_first_Click(object sender, EventArgs e)
        {
            currentpage = 1;
            reloadDataGrid(currentpage);
        }

        private void btn_page_pre_Click(object sender, EventArgs e)
        {
            currentpage--;
            if (currentpage <= 0)
            {
                currentpage = 1;
            }
            reloadDataGrid(currentpage);
        }

        private void btn_page_next_Click(object sender, EventArgs e)
        {
            currentpage++;
            if (currentpage > lastpage)
            {
                currentpage = lastpage;
            }
            reloadDataGrid(currentpage);
        }

        private void btn_page_last_Click(object sender, EventArgs e)
        {
            currentpage = lastpage;
            reloadDataGrid(currentpage);
        }

        private void combo_page_num_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(combo_page_num.Text.Trim())) return;
            currentpage = int.Parse(combo_page_num.Text.Trim());
            reloadDataGrid(currentpage);
        }

        private void btn_query_Click(object sender, EventArgs e)
        {
            currentpage = 1;
            reloadDataGrid(currentpage);
        }

    }
}