using DataBlockHelper; using DevExpress.XtraExport.Helpers; using DevExpress.XtraRichEdit.Model; using ICSharpCode.Core; using Mesnac.Action.Base; using Mesnac.Action.ChemicalWeighing.InterfaceDocking; using Mesnac.Action.ChemicalWeighing.InterfaceDocking.DockingEntity; using Mesnac.Controls.ChemicalWeighing; using Mesnac.Controls.Default; using Mesnac.Core.Service; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices.ComTypes; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace Mesnac.Action.ChemicalWeighing.Report { public class LjLogReport : ChemicalWeighingAction, IAction { MCButton SelectButton; MCButton WaterSet; MCButton SpiralSet; MCButton ManualControl; MCButton Refresh; MCButton SelectByText; MCButton EliAlarms; MCButton DownloadRequest; //HslSwitch HslSwitch1; //HslSwitch HslSwitch2; //HslSwitch HslSwitch3; //HslSwitch HslSwitch4; //HslSwitch HslSwitch5; //HslSwitch HslSwitch6; //HslSwitch HslSwitch7; //HslSwitch HslSwitch8; MCTextBox SelectText; MCDateTimePicker StartDate; MCDateTimePicker EndDate; DbMCControl LogForm; MCCombobox Line; public void Run(RuntimeParameter runtime) { base.RunIni(runtime); var control = GetAllControls(); SelectButton = control.FirstOrDefault(x => x != null && x.Name == "SelectButton") as MCButton; WaterSet = control.FirstOrDefault(x => x != null && x.Name == "WaterSet") as MCButton; SpiralSet = control.FirstOrDefault(x => x != null && x.Name == "SpiralSet") as MCButton; ManualControl = control.FirstOrDefault(x => x != null && x.Name == "ManualControl") as MCButton; Refresh = control.FirstOrDefault(x => x != null && x.Name == "Refresh") as MCButton; SelectByText = control.FirstOrDefault(x => x != null && x.Name == "SelectByText") as MCButton; EliAlarms = control.FirstOrDefault(x => x != null && x.Name == "EliAlarms") as MCButton; DownloadRequest = control.FirstOrDefault(x => x != null && x.Name == "DownloadRequest") as MCButton; StartDate = control.FirstOrDefault(x => x != null && x.Name == "StartDate") as MCDateTimePicker; EndDate = control.FirstOrDefault(x => x != null && x.Name == "EndDate") as MCDateTimePicker; LogForm = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ManualLogGridView1").FirstOrDefault(); SelectText = control.FirstOrDefault(x => x != null && x.Name == "SelectText") as MCTextBox; Line = control.FirstOrDefault(x => x != null && x.Name == "Line") as MCCombobox; //HslSwitch1 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch1") as HslSwitch; //HslSwitch2 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch2") as HslSwitch; //HslSwitch3 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch3") as HslSwitch; //HslSwitch4 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch4") as HslSwitch; //HslSwitch5 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch5") as HslSwitch; //HslSwitch6 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch6") as HslSwitch; //HslSwitch7 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch7") as HslSwitch; //HslSwitch8 = control.FirstOrDefault(x => x != null && x.Name == "HslSwitch8") as HslSwitch; if (LogForm != null) { LogForm.BaseControl.BindDataSource = null; LogForm.BaseControl.BindDataSource = LjLogControl.ManualLogSelect(""); } DataTable dataTable = new DataTable(); dataTable.Columns.Add("CmbValue", typeof(string)); dataTable.Columns.Add("CmbDisplay", typeof(string)); DataRow dr = dataTable.NewRow(); dr[0] = "0"; dr[1] = "全部机台"; dataTable.Rows.Add(dr); for (int i = 1; i <= 8; i++) { dr = dataTable.NewRow(); dr[0] = i.ToString(); dr[1] = i + "号机台"; dataTable.Rows.Add(dr); } Line.DataSource = dataTable; StartDate.MCValue = DateTime.Now.AddDays(-7); SetForm(""); SelectButton.Click += SelectByTime; WaterSet.Click += WaterSetSelect; SpiralSet.Click += SpiralSetSelect; ManualControl.Click += ManualControlSelect; Refresh.Click += RefreshAction; SelectByText.Click += SelectByTextAction; EliAlarms.Click += EliAlarmsClick; DownloadRequest.Click += RequestDownloadClick; } /// /// 下发送料请求按钮点击 /// /// /// private void RequestDownloadClick(object sender, EventArgs e) { bool mixok1 = PlcConnect.Instance.ReadBool("DB3000.0.0").Content; Time(1, mixok1 ? 1 : 0); bool mixok2 = PlcConnect.Instance.ReadBool("DB3000.0.1").Content; Time(2, mixok2 ? 1 : 0); bool mixok3 = PlcConnect.Instance.ReadBool("DB3000.0.2").Content; Time(3, mixok3 ? 1 : 0); bool mixok4 = PlcConnect.Instance.ReadBool("DB3000.0.3").Content; Time(4, mixok4 ? 1 : 0); bool mixok5 = PlcConnect.Instance.ReadBool("DB3000.0.4").Content; Time(5, mixok5 ? 1 : 0); bool mixok6 = PlcConnect.Instance.ReadBool("DB3000.0.5").Content; Time(6, mixok6 ? 1 : 0); bool mixok7 = PlcConnect.Instance.ReadBool("DB3000.0.6").Content; Trace.WriteLine("7号信号:" + mixok7); Time(7, mixok7 ? 1 : 0); bool mixok8 = PlcConnect.Instance.ReadBool("DB3000.0.7").Content; Trace.WriteLine("8号信号:" + mixok8); Time(8, mixok8 ? 1 : 0); } /// /// 下发接料请求 /// /// /// private void Time(int deviceNo, int statu) { TankIsDischargedSyncEntity tankIsDischargedSyncEntity = new TankIsDischargedSyncEntity() { reqCode = System.Guid.NewGuid().ToString(), reqTime = DateTime.Now, deviceNo = deviceNo.ToString(), state = statu.ToString(), }; //即使网络不同 也不会影响上位机的使用 ThreadPool.QueueUserWorkItem(delegate { HttpResponse httpResponse = new HttpResponse(); string returnTest = httpResponse.PostResponse(tankIsDischargedSyncEntity); MesnacServiceManager.Instance.LoggingService.Info($"湿混机{deviceNo}返回数据" + returnTest); }); } /// /// 消除报警按钮点击 /// /// /// private void EliAlarmsClick(object sender, EventArgs e) { PlcConnect.Instance.Write("DB2107.10.7", true); Thread.Sleep(2000); PlcConnect.Instance.Write("DB2107.10.7", false); } /// /// 按时间查询日志 /// /// /// private void SelectByTime(object sender, EventArgs e) { SetForm(StartDate.Value.Date.ToString("yyyy-MM-dd"), EndDate.Value.Date.ToString("yyyy-MM-dd")); } /// /// 水称日志查询 /// /// /// private void WaterSetSelect(object sender, EventArgs e) { SetForm("水", Convert.ToInt32(Line.MCValue.ToString())); } /// /// 螺旋日志查询 /// /// /// private void SpiralSetSelect(object sender, EventArgs e) { SetForm("螺旋", Convert.ToInt32(Line.MCValue.ToString())); } /// /// 手动操作查询 /// /// /// private void ManualControlSelect(object sender, EventArgs e) { SetForm("手动"); } /// /// 刷新日志按钮 /// /// /// private void RefreshAction(object sender, EventArgs e) { SetForm(""); } /// /// 根据文本模糊查询 /// /// /// private void SelectByTextAction(object sender, EventArgs e) { SetForm(SelectText.MCValue.ToString()); } /// /// 根据文本查询绑定控件2 /// /// 文本 private void SetForm(string key) { if (LogForm != null) { LogForm.BaseControl.BindDataSource = null; LogForm.BaseControl.BindDataSource = LjLogControl.ManualLogSelect(key); } } /// /// 根据文本和设备编号查询绑定控件 /// /// 文本 /// 设备编号 private void SetForm(string key, int deviceNo) { if (LogForm != null) { LogForm.BaseControl.BindDataSource = null; LogForm.BaseControl.BindDataSource = LjLogControl.ManualLogSelect(key, deviceNo); } } /// /// 根据起始时间查询绑定控件 /// /// 开始时间 /// 结束时间 private void SetForm(string startTime, string endTime) { if (LogForm != null) { LogForm.BaseControl.BindDataSource = null; LogForm.BaseControl.BindDataSource = LjLogControl.ManualLogSelect(startTime, endTime); } } } }