222 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Collections.Generic;
 | |
| using System;
 | |
| using System.Drawing;
 | |
| using System.Diagnostics;
 | |
| using System.Data;
 | |
| using System.Collections;
 | |
| using System.Windows.Forms;
 | |
| using AR;
 | |
| using vmsnet;
 | |
| using System.Linq;
 | |
| using System.Threading.Tasks;
 | |
| using System.Threading;
 | |
| 
 | |
| namespace vmsnet
 | |
| {
 | |
|     public partial class Frm_Alamlist
 | |
|     {
 | |
|         public Frm_Alamlist()
 | |
|         {
 | |
|             InitializeComponent();
 | |
| 
 | |
|             ////DB초기화작업
 | |
|             PUB.INIT(out List<string> errorMessageList);
 | |
|             if (errorMessageList.Any())
 | |
|                 foreach (var err in errorMessageList)
 | |
|                     UTIL.MsgE(err);
 | |
| 
 | |
|             this.cmb_gubun.Items.Clear();
 | |
|             this.cmb_gubun.Items.AddRange(new string[] { "ALL", "HIGH", "LOW", "A1", "A2" });
 | |
|             //PUB.Alarm.Message += (s1, e1) => PUB.log.AddI(e1.Message);
 | |
|             this.label2.Click += (s1,e1)=> {
 | |
|                 var f = new fLog();
 | |
|                 f.Show();
 | |
|             };
 | |
|         }
 | |
| 
 | |
|         public void Frm_Alam_Load(object sender, System.EventArgs e)
 | |
|         {
 | |
|             ////알람데이터년도를 변경
 | |
|             this.tb_stime.Text = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 00:00:00");
 | |
|             this.tb_etime.Text = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd 23:59:59");
 | |
| 
 | |
|             if (cmb_gubun.Items.Count > 0)
 | |
|                 this.cmb_gubun.SelectedIndex = 0;
 | |
| 
 | |
|             toolStripLabel1.Text = PUB.CONFIG.GetDatabasePath();
 | |
|         }
 | |
| 
 | |
|         public void ToolStripTextBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
 | |
|         {
 | |
|             if (e.KeyCode == Keys.Enter)
 | |
|             {
 | |
|                 string str = this.tb_search.Text.Trim().Replace("'", "").ToUpper();
 | |
|                 if (string.IsNullOrEmpty(str))
 | |
|                 {
 | |
|                     DisplayData(Dt.Item2.AsEnumerable());
 | |
|                 }
 | |
|                 try
 | |
|                 {
 | |
|                     if (Dt.Item2 != null)
 | |
|                     {
 | |
|                         var dt = Dt.Item2.Where(t => t.TIME.Contains(str) || t.CHNAME.Contains(str) || t.RTYPESTR.Contains(str) || t.ATYPESTR.Contains(str));
 | |
|                         DisplayData(dt);
 | |
|                     }
 | |
|                     else UTIL.MsgE("먼저 자료를 조회하세요");
 | |
|                     
 | |
|                     this.tb_search.SelectAll();
 | |
|                 }
 | |
|                 catch (Exception)
 | |
|                 {
 | |
|                     this.tb_search.Text = "";
 | |
|                     this.bs.Filter = "";
 | |
| 
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         (TimeSpan, DocumentElement.ALARMDataTable) Dt;
 | |
|         private void button1_Click(object sender, EventArgs e)
 | |
|         { // 조회
 | |
|             if (DateTime.TryParse(this.tb_stime.Text, out DateTime sdate) == false)
 | |
|             {
 | |
|                 UTIL.MsgE("시작일시가 잘못 입력되었습니다\r\n확인하세요");
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             if (DateTime.TryParse(this.tb_etime.Text, out DateTime edate) == false)
 | |
|             {
 | |
|                 UTIL.MsgE("종료일시가 잘못 입력되었습니다\r\n확인하세요");
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             
 | |
|             Dt.Item1 = new TimeSpan(0);
 | |
|             Dt.Item2 = null;
 | |
| 
 | |
|             var gubunstr = cmb_gubun.Text.Trim().ToUpper();
 | |
|             this.button1.Enabled = false;
 | |
| 
 | |
|             switch (gubunstr)
 | |
|             {
 | |
|                 case "HIGH": ////h
 | |
|                     Dt = PUB.Alarm.GetAlarmData(sdate, edate, 0, 1);
 | |
|                     break;
 | |
|                 case "LOW": ////l;
 | |
|                     Dt = PUB.Alarm.GetAlarmData(sdate, edate, 2, 3);
 | |
|                     break;
 | |
|                 case "A1": ////nullb alam1
 | |
|                     Dt = PUB.Alarm.GetAlarmData(sdate, edate, 4, 5);
 | |
|                     break;
 | |
|                 case "A2": ////nullb alam2
 | |
|                     Dt = PUB.Alarm.GetAlarmData(sdate, edate, 6, 7);
 | |
|                     break;
 | |
|                 case "OVER": ////o
 | |
|                     Dt = PUB.Alarm.GetAlarmData(sdate, edate, 8, 9);
 | |
|                     break;
 | |
|                 default:    //ALL
 | |
|                     Dt = PUB.Alarm.GetAlarmData(sdate, edate);
 | |
|                     break;
 | |
|             }
 | |
| 
 | |
|             PUB.log.AddI($"read time : {Dt.Item1.TotalSeconds} sec");
 | |
|             Application.DoEvents();
 | |
| 
 | |
| 
 | |
|             this.prb1.Value = 0;
 | |
|             this.prb1.Maximum = Dt.Item2.Rows.Count;
 | |
| 
 | |
| 
 | |
|             var dtEdit = DateTime.Now;
 | |
|             foreach (var Dr in Dt.Item2)
 | |
|             {
 | |
| 
 | |
|                 this.prb1.Value += 1;
 | |
|                 if (Dr.RTYPE == 4 || Dr.RTYPE == 5 || Dr.RTYPE == 6 || Dr.RTYPE == 7)
 | |
|                 {
 | |
|                     Dr.CHNAME = PUB.GetGrpName(Dr.CH);
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     /* 작성자: 김치균, 작성일: 2024-10-16, 작성내용: Dr.CH + 1 -> Dr.CH 변경 */
 | |
|                     Dr.CHNAME = PUB.GetChannelName(Dr.CH);
 | |
|                 }
 | |
| 
 | |
|                 var rtype = (COMM.EALAMRAISETYPE)Dr.RTYPE;
 | |
|                 Dr.RTYPESTR = rtype.ToString();
 | |
|                 switch (rtype)
 | |
|                 {
 | |
|                     case COMM.EALAMRAISETYPE.A1_ON:
 | |
|                         Dr.RTYPESTR = "NB_ALARM1-ON";
 | |
|                         break;
 | |
|                     case COMM.EALAMRAISETYPE.A1_OFF:
 | |
|                         Dr.RTYPESTR = "NB_ALARM1-OFF";
 | |
|                         break;
 | |
|                     case COMM.EALAMRAISETYPE.A2_ON:
 | |
|                         Dr.RTYPESTR = "NB_ALARM2-ON";
 | |
|                         break;
 | |
|                     case COMM.EALAMRAISETYPE.A2_OFF:
 | |
|                         Dr.RTYPESTR = "NB_ALARM2-OFF";
 | |
|                         break;
 | |
|                 }
 | |
| 
 | |
|                 var atype = (COMM.EALAMTYPE)Dr.ATYPE;
 | |
|                 Dr.ATYPESTR = atype.ToString();
 | |
|             }
 | |
|             Dt.Item2.AcceptChanges();
 | |
|             var tsEdit = DateTime.Now - dtEdit;
 | |
|             PUB.log.AddI($"edit time : {tsEdit.TotalSeconds} sec");
 | |
|             Application.DoEvents();
 | |
| 
 | |
| 
 | |
|             dtEdit = DateTime.Now;
 | |
|             DisplayData(Dt.Item2.AsEnumerable());
 | |
|             tsEdit = DateTime.Now - dtEdit;
 | |
|             PUB.log.AddI($"DisplayData time : {tsEdit.TotalSeconds} sec");
 | |
|             button1.Enabled = true;
 | |
|         }
 | |
| 
 | |
|         void DisplayData(EnumerableRowCollection<vmsnet.DocumentElement.ALARMRow> search)
 | |
|         {
 | |
|             this.listView1.Items.Clear();
 | |
|        
 | |
|      
 | |
|             this.listView1.SuspendLayout();
 | |
|             foreach (var item in search)
 | |
|             {
 | |
|                 var lv = this.listView1.Items.Add(item.TIME);
 | |
|                 lv.SubItems.Add(item.CHNAME);
 | |
|                 lv.SubItems.Add(item.RTYPESTR);
 | |
|                 lv.SubItems.Add(item.VOLT.ToString());
 | |
|                 lv.SubItems.Add(item.MAXVOLT.ToString());
 | |
|                 lv.SubItems.Add(item.MINVOLT.ToString());
 | |
|                 lv.SubItems.Add(item.ATYPESTR);
 | |
|                 lv.SubItems.Add(item.REMARK);
 | |
| 
 | |
|                 switch (item.RTYPESTR.ToUpper())
 | |
|                 {
 | |
|                     case "NB_ALARM1_ON":
 | |
|                         lv.BackColor = Color.HotPink;
 | |
|                         break;
 | |
|                     case "NB_ALARM2_ON":
 | |
|                         lv.BackColor = Color.OrangeRed;  //Color.Red;
 | |
|                         break;
 | |
|                     case "HIGH_ON":
 | |
|                         lv.BackColor = Color.Orange;
 | |
|                         break;
 | |
|                     case "LOW_ON":
 | |
|                         lv.BackColor = Color.LightSkyBlue;  //Color.Blue;
 | |
|                         break;
 | |
|                     case "OVER_ON":
 | |
|                         lv.BackColor = Color.Violet;  //Color.Magenta;
 | |
|                         break;
 | |
|                     default:
 | |
|                         lv.BackColor = Color.Empty;
 | |
|                         break;
 | |
|                 }
 | |
|             }
 | |
|             this.listView1.ResumeLayout();
 | |
|         }
 | |
|     }
 | |
| }
 | 
