コード例 #1
0
        private void selectbtn_Click(object sender, EventArgs e)
        {
            DateTime dt      = startdtpicker.Value;
            DateTime Startdt = new DateTime(dt.Year, dt.Month, dt.Day);

            dt = enddtpicker.Value;
            DateTime            Enddt = new DateTime(dt.Year, dt.Month, dt.Day);
            List <AccessRecord> lists = new List <AccessRecord>();
            string strid = "", strname = "", strinname = "", stroutname = "";

            strid = tagtb.Text;
            if (!"".Equals(strid))
            {
                strname = CommonBoxOperation.GetTagName(strid);
                if (null == strname)
                {//说明strid可能是名称
                    Tag tg = CommonBoxOperation.GetTagFromName(strid);
                    if (null != tg)
                    {
                        strid = tg.ID[0].ToString("X2") + tg.ID[1].ToString("X2");
                    }
                }
            }
            TagAccessRecordOperation.tagAccessOper.GetAccessRecord(strid, Startdt, Enddt, ref lists);
            recordlistview.Items.Clear();
            int          index = -1;
            ListViewItem item  = null;

            foreach (AccessRecord record in lists)
            {
                index++;
                if (record.isMark)
                {
                    continue;
                }
                item      = new ListViewItem();
                item.Text = record.TagID[0].ToString("X2") + record.TagID[1].ToString("X2");
                strname   = CommonBoxOperation.GetTagName(item.Text);
                if (null == strname || "".Equals(strname))
                {
                    item.SubItems.Add("****");
                }
                else
                {
                    item.SubItems.Add(strname);
                }
                AccessRecord access = null;
                if (record.rttype == ReferType.Entrance)
                {//说明当前是一个入口参考点,我们接下来需要找出口
                    strinname = CommonBoxOperation.GetRouterName(record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2"));
                    access    = SelectAccessRecord(lists.GetRange(index + 1, lists.Count - index - 1), record.TagID, ReferType.Export);
                    if (null == access)
                    {
                        continue;
                    }
                    access.isMark = true;
                    if (null == strinname || "".Equals(strinname))
                    {
                        item.SubItems.Add(record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2"));
                    }
                    else
                    {
                        item.SubItems.Add(strinname + "(" + record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2") + ")");
                    }
                    stroutname = CommonBoxOperation.GetRouterName(access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2"));

                    if (null == stroutname || "".Equals(stroutname))
                    {
                        item.SubItems.Add(access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2"));
                    }
                    else
                    {
                        item.SubItems.Add(stroutname + "(" + access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2") + ")");
                    }
                    item.SubItems.Add(record.Occtime.ToString());
                    item.SubItems.Add(access.Occtime.ToString());
                    if (DateTime.Compare(record.Occtime, access.Occtime) > 0)
                    {
                        item.SubItems.Add("****");
                    }
                    else
                    {
                        item.SubItems.Add(String.Format("{0:N2} h", (access.Occtime - record.Occtime).TotalHours));
                    }
                }
                else
                {
                    continue;
                }
                recordlistview.Items.Add(item);
            }
            label4.Text = "Current record number: " + recordlistview.Items.Count;
        }
コード例 #2
0
        /// <summary>
        /// Excel导出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void excelbtn_Click(object sender, EventArgs e)
        {
            //开始选择出入讯息
            DateTime dt      = startdtpicker.Value;
            DateTime Startdt = new DateTime(dt.Year, dt.Month, dt.Day);

            dt = enddtpicker.Value;
            DateTime            Enddt = new DateTime(dt.Year, dt.Month, dt.Day);
            List <AccessRecord> lists = new List <AccessRecord>();
            string strid = "", strname = "", strinname = "", stroutname = "";

            strid = tagtb.Text;
            if (!"".Equals(strid))
            {
                strname = CommonBoxOperation.GetTagName(strid);
                if (null == strname)
                {//说明strid可能是名称
                    Tag tg = CommonBoxOperation.GetTagFromName(strid);
                    if (null != tg)
                    {
                        strid = tg.ID[0].ToString("X2") + tg.ID[1].ToString("X2");
                    }
                }
            }
            TagAccessRecordOperation.tagAccessOper.GetAccessRecord(strid, Startdt, Enddt, ref lists);
            if (lists.Count <= 0)
            {
                MessageBox.Show("對不起,記錄不存在!");
                return;
            }

            SaveFileDialog MyDialog = new SaveFileDialog();

            MyDialog.Title  = "選擇出入統計文件保存位置";
            MyDialog.Filter = "所有文本文件|*.xls";
            if (MyDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            string  StrFilePath = MyDialog.FileName;
            NpoiLib MyNpoiLib   = new NpoiLib("Access statistics");

            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 0, "Tag ID");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 0, 6000);
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 1, "卡片名稱");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 1, 6000);
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 2, "入口基站");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 2, 6000);
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 3, "出口基站");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 3, 6000);

            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 4, "進入時間");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 4, 8000);
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 5, "外出時間");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 5, 8000);
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 6, "間隔時間");
            MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 6, 2000);

            int index = -1, row = 0;

            foreach (AccessRecord record in lists)
            {
                index++;
                if (record.isMark)
                {
                    continue;
                }
                strid   = record.TagID[0].ToString("X2") + record.TagID[1].ToString("X2");
                strname = CommonBoxOperation.GetTagName(strid);
                AccessRecord access = null;
                if (record.rttype == ReferType.Entrance)
                {//说明当前是一个入口参考点,我们接下来需要找出口
                    strinname = CommonBoxOperation.GetRouterName(record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2"));
                    access    = SelectAccessRecord(lists.GetRange(index + 1, lists.Count - index - 1), record.TagID, ReferType.Export);
                    if (null == access)
                    {
                        continue;
                    }
                    stroutname    = CommonBoxOperation.GetRouterName(access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2"));
                    access.isMark = true;
                }
                else
                {
                    continue;
                }
                MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 0, strid);
                if (null == strname || "".Equals(strname))
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 1, "****");
                }
                else
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 1, strname);
                }
                if (null == strinname || "".Equals(strinname))
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 2, record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2"));
                }
                else
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 2, strinname + "(" + record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2") + ")");
                }
                if (null == stroutname || "".Equals(stroutname))
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 3, access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2"));
                }
                else
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 3, stroutname + "(" + access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2") + ")");
                }
                MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 4, record.Occtime.ToString());
                MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 5, access.Occtime.ToString());
                if (DateTime.Compare(record.Occtime, access.Occtime) > 0)
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 6, "****");
                }
                else
                {
                    MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 6, String.Format("{0:N2} h", (access.Occtime - record.Occtime).TotalHours));
                }
                row++;
            }
            if (row <= 0)
            {
                MessageBox.Show("對不起,當前沒有記錄!");
                return;
            }
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 0, "###當前記錄總數為:");
            MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 1, row.ToString() + "     條");
            MyNpoiLib.WriteToFile(StrFilePath);
            MessageBox.Show("導出文件成功!");
        }
コード例 #3
0
        /// <summary>
        /// 开始按钮,从原始资料中取出时间段的数据包数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void StartBtn_Click(object sender, EventArgs e)
        {
            if (StrStart.Equals(StartBtn.Text))
            {
                //获取设置的年月日,并判断其是否符合条件
                int syear, smonth, sday, eyear, emonth, eday, shour, sminute, ehour, eminute;
                //tag的ID或名称
                string strtaginfor = TrackTagText.Text.ToUpper().Trim();
                if ("".Equals(strtaginfor))
                {
                    MessageBox.Show("軌跡分析的Tag信息不能為空!");
                    return;
                }
                Tag tag_name = CommonBoxOperation.GetTagFromName(strtaginfor);
                if (null != tag_name)
                {
                    strtaginfor = tag_name.ID[0].ToString("X2") + tag_name.ID[1].ToString("X2");
                }

                DateTime StartDT, EndDT;
                StartDT = StartDTPicker.Value;
                EndDT   = EndDTPicker.Value;
                syear   = StartDT.Year;
                smonth  = StartDT.Month;
                sday    = StartDT.Day;
                eyear   = EndDT.Year;
                emonth  = EndDT.Month;
                eday    = EndDT.Day;
                try
                {
                    shour   = Convert.ToInt32(sHourCb.Text);
                    sminute = Convert.ToInt32(sMinitueCb.Text);
                    ehour   = Convert.ToInt32(eHourCB.Text);
                    eminute = Convert.ToInt32(eMinitueCB.Text);
                }
                catch (Exception)
                {
                    MessageBox.Show("對不起,設置的開始時間或結束時間有誤!");
                    return;
                }
                //获取开始时间和结束时间
                StartDT = new DateTime(syear, smonth, sday, shour, sminute, 0);
                EndDT   = new DateTime(eyear, emonth, eday, ehour, eminute, 59);
                //小于零t1早于t2
                if (DateTime.Compare(StartDT, EndDT) > 0)
                {
                    MessageBox.Show("結束日期時間應該在開始日期時間之後!");
                    return;
                }
                //取出原始记录信息
                string strrecorddir = Environment.CurrentDirectory + @"\Record";
                if (!Directory.Exists(strrecorddir))
                {
                    MessageBox.Show("對不起,沒有任何記錄!");
                    return;
                }
                string[] StrDirs = FileOperation.GetAllDirName(strrecorddir);
                if (null == StrDirs || StrDirs.Length <= 0)
                {
                    MessageBox.Show("對不起,沒有任何記錄!");
                    return;
                }
                if (null != DrawIMG.Frm && DrawIMG.Frm.MyUdpClient != null)
                {
                    MessageBox.Show("對不起,查詢歷史軌跡時需要關閉網絡連接!");
                    return;
                }
                string   strdirname = "", strcuryear = "", strcurmonth = "", strcurday = "", strcurhour = "";
                int      index = -1, curyear = -1, curmonth = -1, curday = -1, curhour = -1;
                DateTime curdt;
                PickerTagsList.Clear();
                //判断年月日是否符合条件
                foreach (string dir in StrDirs)
                {
                    index       = dir.LastIndexOf("\\");
                    strdirname  = dir.Substring(index + 1, 8);
                    strcuryear  = strdirname.Substring(0, 4);
                    strcurmonth = strdirname.Substring(4, 2);
                    strcurday   = strdirname.Substring(6, 2);
                    try
                    {
                        curyear  = Convert.ToInt32(strcuryear);
                        curmonth = Convert.ToInt32(strcurmonth);
                        curday   = Convert.ToInt32(strcurday);
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                    //文件创建的时间
                    curdt = new DateTime(curyear, curmonth, curday);
                    DateTime startdt = new DateTime(StartDT.Year, StartDT.Month, StartDT.Day);
                    DateTime enddt   = new DateTime(EndDT.Year, EndDT.Month, EndDT.Day);
                    //判断文件创建时间是否在指定的范围内
                    if (DateTime.Compare(curdt, startdt) < 0 || DateTime.Compare(curdt, enddt) > 0)
                    {
                        continue;
                    }
                    //获取到当前时间的小时部分
                    try
                    {
                        string[] StrFiles = Directory.GetFiles(dir);
                        foreach (string str in StrFiles)
                        {
                            strcurhour = str.Substring(str.LastIndexOf("\\") + 1, 2);
                            try
                            {
                                curhour = Convert.ToInt32(strcurhour);
                            }
                            catch (Exception)
                            {
                                continue;
                            }
                            //此时判断小时是否满足要求
                            curdt   = new DateTime(curdt.Year, curdt.Month, curdt.Day, curhour, 0, 0);
                            startdt = new DateTime(startdt.Year, startdt.Month, startdt.Day, shour, 0, 0);
                            enddt   = new DateTime(enddt.Year, enddt.Month, enddt.Day, ehour, 0, 0);
                            if (DateTime.Compare(curdt, startdt) < 0 || DateTime.Compare(curdt, enddt) > 0)
                            {
                                continue;
                            }
                            //记录年月日时都满足要求
                            startdt = new DateTime(startdt.Year, startdt.Month, startdt.Day, startdt.Hour, sminute, 0);
                            enddt   = new DateTime(enddt.Year, enddt.Month, enddt.Day, enddt.Hour, eminute, 0);
                            RecordOperation.GetRecord(startdt, enddt, strtaginfor, str, ref PickerTagsList);
                        }
                    }
                    catch (System.IO.IOException)
                    {
                        MessageBox.Show("對不起,文件流已经被占用。請先關閉連接監控...");
                    }
                    catch (Exception ex)
                    {
                        FileOperation.WriteLog("获取原始记录时出现异常,异常异常原因:" + ex.ToString());
                    }
                }
                List <TagPack> deletagpacks = new List <TagPack>();
                TagPack        temptpk      = null;
                //清除掉两个序列号相同的Tag数据包
                for (int i = 0; i < PickerTagsList.Count; i++)
                {
                    if (i + 1 < PickerTagsList.Count)
                    {
                        if (PickerTagsList[i].index == PickerTagsList[i + 1].index)
                        {
                            if (PickerTagsList[i].SigStren < PickerTagsList[i + 1].SigStren)
                            {//交换位置
                                temptpk               = CommonBoxOperation.CloneTagPack(PickerTagsList[i]);
                                PickerTagsList[i]     = PickerTagsList[i + 1];
                                PickerTagsList[i + 1] = temptpk;
                            }
                            deletagpacks.Add(PickerTagsList[i]);
                        }
                    }
                }
                foreach (TagPack deletp in deletagpacks)
                {
                    PickerTagsList.Remove(deletp);
                }
                //此时所有符合添加的数据包都添加到PickerTags集合中处了
                TrackListBX.Items.Clear();
                foreach (TagPack tpk in PickerTagsList)
                {
                    TrackListBX.Items.Add(
                        tpk.ReportTime + " TagID:" +
                        tpk.TD[0].ToString("X2") + tpk.TD[1].ToString("X2") + " RouterID:" +
                        tpk.RD_New[0].ToString("X2") + tpk.RD_New[1].ToString("X2") +
                        " 是否警報:" + (tpk.isAlarm == 0x04 ? "yes" : "no") + " 信號強度:" + tpk.SigStren.ToString() +
                        " 電量:" + tpk.Bat.ToString() + " 休眠時間:" + (tpk.Sleep / 10).ToString() + " 未移動時間:" + tpk.ResTime.ToString() +
                        " 序列號:" + tpk.index.ToString());
                }
                recordnumlabel.Text = "總記錄數為:" + PickerTagsList.Count;
                if (PickerTagsList.Count <= 0)
                {
                    MessageBox.Show("該Tag的原始資料不存在!");
                    return;
                }
                //图形模式画图地图
                StartDTe = new DateTime(StartDT.Year, StartDT.Month, StartDT.Day, StartDT.Hour, StartDT.Minute, StartDT.Second);
                EndDTe   = new DateTime(EndDT.Year, EndDT.Month, EndDT.Day, EndDT.Hour, EndDT.Minute, EndDT.Second);
                Start();
            }
            else
            {
                Stop();
                recordnumlabel.Text = "總記錄數為:0";
                return;
            }
        }