diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/AutoControl.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/AutoControl.cs index c3f4c48..2ddf778 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/AutoControl.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/AutoControl.cs @@ -48,6 +48,7 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl } + //按钮事件 private void BottomSelect(RuntimeParameter runtime) { diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/DeviceMaterrialService.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/DeviceMaterrialService.cs index 6069505..dd372c4 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/DeviceMaterrialService.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/DeviceMaterrialService.cs @@ -6,7 +6,7 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB { public class DeviceMaterrialService { - + public static void Save(List materrials) { @@ -15,7 +15,7 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB FreeSqlUnit.Instance.Delete() .Where(x => x.Type == deviceMaterrial.Type && x.DeviceId == deviceMaterrial.DeviceId) .ExecuteDeleted(); - + foreach (var materrial in materrials) { materrial.Code = StockMaterrialDbHelp.GetCodeById(materrial.MaterrialId); @@ -35,7 +35,7 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB private static void ComboboxDBHelper() { - + } } diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/StockMaterrialDBHelp.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/StockMaterrialDBHelp.cs index 42fd3a9..83f7a87 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/StockMaterrialDBHelp.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/AutoControl/DB/StockMaterrialDBHelp.cs @@ -45,7 +45,7 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB dataTable.Rows.Add(dr); return dataTable; } - + /// /// 获取糊化机物料 /// @@ -53,7 +53,7 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB public static DataTable GetSiloMaterrial() { var list1 = GetStockMaterrial(1); - list1 = list1.Where(x => x.CmbValue == 5 || x.CmbValue == 6 ).ToList(); + list1 = list1.Where(x => x.CmbValue == 5 || x.CmbValue == 6).ToList(); var dt = GetMcBox(); foreach (var entity in list1) { @@ -94,17 +94,17 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB return id; } - - - - + + + + private static List GetStockMaterrial(int mtypId) { string sql = "select Id, Code, StockName, MTypeId, MTypeName, MId, MName, Remark from lj_stock_material"; var dataTable = DBHelp.GetTable(sql); List ls = new List(); - + foreach (DataRow o in dataTable.Rows) { int tableMTypeId = Convert.ToInt32(o["MTypeId"]); @@ -122,6 +122,6 @@ namespace Mesnac.Action.ChemicalWeighing.AutoControl.DB } return ls; } - + } } \ No newline at end of file diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/LjReport/WetTimeCounting.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/LjReport/WetTimeCounting.cs new file mode 100644 index 0000000..4bdcbf3 --- /dev/null +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/LjReport/WetTimeCounting.cs @@ -0,0 +1,229 @@ +using Mesnac.Action.Base; +using Mesnac.Action.ChemicalWeighing.FreeDb; +using Mesnac.Action.ChemicalWeighing.MainDetailControl.Entity; +using Mesnac.Action.ChemicalWeighing.ManualControl; +using Mesnac.Controls.Default; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Mesnac.Action.ChemicalWeighing.LjReport +{ + public class WetTimeCounting : ChemicalWeighingAction, IAction + { + //BtnOk MCDateTimePicker1 MCDataGridView1 + private RuntimeParameter _runtime; + MCButton btnOk; + MCButton selectButton; + MCButton WhiteWork; + MCButton NightWork; + + MCDateTimePicker mCDateTimePicker; + MCDateTimePicker startDate; + MCDateTimePicker startTime; + MCDateTimePicker endDate; + MCDateTimePicker endTime; + + MCDataGridView dataGridView; + MCDataGridView moreData; + + DataTable dt; + DataTable MoreDataTable; + + List list; + + List listMore; + + List listSet; + public void Run(RuntimeParameter runtime) + { + base.RunIni(runtime); //必须调用 + this._runtime = runtime; + var control = GetAllControls(); + + mCDateTimePicker = control.FirstOrDefault(x => x.Name == "MCDateTimePicker1") as MCDateTimePicker; + btnOk = control.FirstOrDefault(x => x.Name == "MCButton1") as MCButton; + dataGridView = control.FirstOrDefault(x => x.Name == "MCDataGridView1") as MCDataGridView; + selectButton = control.FirstOrDefault(x => x.Name == "SelectButton") as MCButton; + WhiteWork = control.FirstOrDefault(x => x.Name == "WhiteWork") as MCButton; + NightWork = control.FirstOrDefault(x => x.Name == "NightWork") as MCButton; + moreData = control.FirstOrDefault(x => x.Name == "MoreData") as MCDataGridView; + startDate = control.FirstOrDefault(x => x.Name == "startDate") as MCDateTimePicker; + startTime = control.FirstOrDefault(x => x.Name == "startTime") as MCDateTimePicker; + endDate = control.FirstOrDefault(x => x.Name == "endDate") as MCDateTimePicker; + endTime = control.FirstOrDefault(x => x.Name == "endTime") as MCDateTimePicker; + dataGridView.AutoGenerateColumns = true; + mCDateTimePicker.Value = DateTime.Now.AddDays(0); + startDate.Value = DateTime.Now.AddDays(-1); + + //startTime.Value = Convert.ToDateTime(DateTime.Now.ToString("08:00:00")); + + //endTime.Value = Convert.ToDateTime(DateTime.Now.ToString("20:00:00")); + + dt = new DataTable(); + dt.Columns.Add("机台", typeof(string)); + dt.Columns.Add("湿混等待时间", typeof(string)); + dt.Columns.Add("RGV等待时间", typeof(string)); + dt.Columns.Add("总等待时间", typeof(string)); + + MoreDataTable = new DataTable(); + MoreDataTable.Columns.Add("湿混等待时间", typeof(string)); + MoreDataTable.Columns.Add("RGV等待时间", typeof(string)); + MoreDataTable.Columns.Add("总等待时间", typeof(string)); + MoreDataTable.Columns.Add("起始时间", typeof(string)); + MoreDataTable.Columns.Add("结束时间", typeof(string)); + + btnOk.Click += BtnOk_Click; + selectButton.Click += SelectButton_Click; + dataGridView.CellClick += MoreData_Click; + dataGridView.CellValueChanged += MoreData_Click; + WhiteWork.Click += WhiteWork_Click; + NightWork.Click += NightWork_Click; + } + + private void BtnOk_Click(object sender, EventArgs e) + { + dt.Rows.Clear(); + DateTime time = mCDateTimePicker.Value; + DateTime start = time.AddHours(0); + DateTime end = time.AddHours(24); + list = FreeSqlUnit.Instance.Select().Where(x => x.MixReadyStartTime >= start && x.RGVLeaveTime <= end).ToList(); + + DataTableSum(); + } + + private void SelectButton_Click(object sender, EventArgs e) + { + dt.Rows.Clear(); + DateTime starttime = startDate.Value.Date.AddHours(startTime.Value.Hour).AddMinutes(startTime.Value.Minute).AddSeconds(startTime.Value.Second); + DateTime endtime = endDate.Value.Date.AddHours(endTime.Value.Hour).AddMinutes(endTime.Value.Minute).AddSeconds(endTime.Value.Second); + + list = FreeSqlUnit.Instance.Select().Where(x => x.MixReadyStartTime >= starttime && x.RGVLeaveTime <= endtime).ToList(); + + DataTableSum(); + } + + /// + /// 检索详细数据 + /// + /// + /// + private void MoreData_Click(object sender, EventArgs e) + { + MoreDataTable.Rows.Clear(); + + string dID = dataGridView.SelectedRows[0].Cells["机台"].Value as string; + + char[] a = dID.ToCharArray(); + int le = a.Length - 1; + char chr = a[le]; + if (chr == '和') + { + return; + } + int num = int.Parse(chr.ToString()); + listMore = list.Where(x => x.DeviceNo == num).ToList(); + for (int i = 0; i < listMore.Count; i++) + { + var dr = MoreDataTable.NewRow(); + dr[0] = listMore[i].MixWaitTime; + dr[1] = listMore[i].RgvWaitTime; + dr[2] = listMore[i].MixWaitTime + listMore[i].RgvWaitTime; + dr[3] = listMore[i].MixReadyStartTime; + dr[4] = listMore[i].RGVLeaveTime; + MoreDataTable.Rows.Add(dr); + } + + moreData.DataSource = null; + moreData.DataSource = MoreDataTable; + + } + + private void WhiteWork_Click(object sender, EventArgs e) + { + dt.Rows.Clear(); + + DateTime nowTime = DateTime.Now; + + DateTime starttime; + DateTime endtime; + + //如果大于当天8点 就展示当天的白班 否则展示上一个白班 + if (nowTime >= DateTime.Now.Date.AddHours(8)) + { + starttime = DateTime.Now.Date.AddHours(7).AddMinutes(30); + endtime = DateTime.Now.Date.AddHours(19).AddMinutes(30); + } + else + { + starttime = DateTime.Now.Date.AddHours(-17).AddMinutes(30); + endtime = DateTime.Now.Date.AddHours(-5).AddMinutes(30); + } + + list = FreeSqlUnit.Instance.Select().Where(x => x.MixReadyStartTime >= starttime && x.RGVLeaveTime <= endtime).ToList(); + + DataTableSum(); + } + + private void NightWork_Click(Object sender, EventArgs e) + { + dt.Rows.Clear(); + + DateTime nowTime = DateTime.Now; + + DateTime starttime; + DateTime endtime; + + //如果小于当天20点 就展示当天的前一个晚班 + if (nowTime <= DateTime.Now.Date.AddHours(20)) + { + starttime = DateTime.Now.Date.AddHours(-5).AddMinutes(30); + endtime = DateTime.Now.Date.AddHours(7).AddMinutes(30); + } + else + { + starttime = DateTime.Now.Date.AddHours(19).AddMinutes(30); + endtime = DateTime.Now.Date.AddHours(31).AddMinutes(30); + } + + list = FreeSqlUnit.Instance.Select().Where(x => x.MixReadyStartTime >= starttime && x.RGVLeaveTime <= endtime).ToList(); + + DataTableSum(); + } + + private void DataTableSum() + { + for (int i = 1; i <= 8; i++) + { + var dr = dt.NewRow(); + dr[0] = "湿混机" + i; + var MixWaitTime = list.Where(x => x.DeviceNo == i).Sum(x => x.MixWaitTime); + dr[1] = MixWaitTime.ToString(); + var RGVWaitTime = list.Where(x => x.DeviceNo == i).Sum(x => x.RgvWaitTime); + dr[2] = RGVWaitTime.ToString(); + var totalTime = MixWaitTime + RGVWaitTime; + dr[3] = totalTime.ToString(); + + dt.Rows.Add(dr); + } + var edr = dt.NewRow(); + edr[0] = "湿混等待时间总和"; + edr[1] = list.Sum(x => x.MixWaitTime).ToString(); + dt.Rows.Add(edr); + var edr1 = dt.NewRow(); + edr1[0] = "RGV等待时间总和"; + edr1[1] = list.Sum(x => x.RgvWaitTime).ToString(); + dt.Rows.Add(edr1); + var edr2 = dt.NewRow(); + edr2[0] = "总等待时间总和"; + edr2[1] = list.Sum(x => x.MixWaitTime + x.RgvWaitTime).ToString(); + dt.Rows.Add(edr2); + + dataGridView.DataSource = null; + dataGridView.DataSource = dt; + } + } +} diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DBEntity.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DBEntity.cs new file mode 100644 index 0000000..a328723 --- /dev/null +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DBEntity.cs @@ -0,0 +1,47 @@ +using FreeSql.DataAnnotations; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Mesnac.Action.ChemicalWeighing.MainDetailControl.Entity +{ + public partial class Lj_RGVTimeRecord + { + + [Column(IsPrimary = true, IsIdentity = true)] + public int Id { get; set; } + + + public int DeviceNo { get; set; } + + + public bool Done { get; set; } + + + public bool MixIsReady { get; set; } + + + public DateTime MixReadyEndTime { get; set; } + + + public DateTime MixReadyStartTime { get; set; } + + + public int MixWaitTime { get; set; } + + + public bool RGVIsReach { get; set; } + + + public DateTime RGVLeaveTime { get; set; } + + + public DateTime RGVReachTime { get; set; } + + + public int RgvWaitTime { get; set; } + + } +} diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DeviceDetailEntity.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DeviceDetailEntity.cs index 0affc5e..d0a9b9a 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DeviceDetailEntity.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/Entity/DeviceDetailEntity.cs @@ -62,6 +62,24 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl.Entity public MCLabel ValueWeight2 { get; set; } public MCLabel ValueWeight3 { get; set; } public MCLabel ValueWeight4 { get; set; } + + public MCLabel WetWait1 { get; set; } + public MCLabel WetWait2 { get; set; } + public MCLabel WetWait3 { get; set; } + public MCLabel WetWait4 { get; set; } + public MCLabel WetWait5 { get; set; } + public MCLabel WetWait6 { get; set; } + public MCLabel WetWait7 { get; set; } + public MCLabel WetWait8 { get; set; } + public MCLabel RGVWait1 { get; set; } + public MCLabel RGVWait2 { get; set; } + public MCLabel RGVWait3 { get; set; } + public MCLabel RGVWait4 { get; set; } + public MCLabel RGVWait5 { get; set; } + public MCLabel RGVWait6 { get; set; } + public MCLabel RGVWait7 { get; set; } + public MCLabel RGVWait8 { get; set; } + } public class SwitchLightEntity diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/MainDetailControlAction.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/MainDetailControlAction.cs index 9a93c01..273b943 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/MainDetailControlAction.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/MainDetailControl/MainDetailControlAction.cs @@ -25,13 +25,15 @@ using DataBlockHelper; using System.Drawing; using Mesnac.Action.ChemicalWeighing.MinAn; using HslCommunication.Core; +using Mesnac.Action.ChemicalWeighing.FreeDb; +using Mesnac.Action.ChemicalWeighing.ManualControl; namespace Mesnac.Action.ChemicalWeighing.MainDetailControl { public class MainDetailControlAction : ChemicalWeighingAction, IAction { - #region plc读取类 Timer 线程字典 DataTable + #region 属性 private DB2102Helper DB2102 = new DB2102Helper(); private DB2103Helper DB2103 = new DB2103Helper(); @@ -41,26 +43,41 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl private Timer timer; - DataTable ParametersWithPCTable = new DataTable(); + //DataTable ParametersWithPCTable = new DataTable(); + + //所有Alarm点位 DataTable AllAlarmTable = new DataTable(); //DataTable LogAlarmTable = new DataTable(); //DataTable NowAlarmTable = new DataTable(); + + //报警展示的dt DataTable TempTable = new DataTable(); byte[] b2; - byte[] b3; + byte[] b3; //2102 2103 2107的byte数组 byte[] b7; + byte[] reachState; + byte[] mixState; + + + #endregion #region 控件变量 + //前端控件导入 private List Controls; private List McControllist; + + //临时数据存放 private PlcReadTempEntity PlcReadTemp = new PlcReadTempEntity(); - private DbMCControl AlarmForm = null; //物料列表控件 + + //报警列表控件 + private DbMCControl AlarmForm = null; private MCLabel MCWatchDog; + //控件实体类 HslLanternAlarmEntity HslAlarmE = new HslLanternAlarmEntity(); HslLanternSimpleEntity HslLanternSimpleE = new HslLanternSimpleEntity(); MCLabelEntity LabelE = new MCLabelEntity(); @@ -98,17 +115,17 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl SetAllControls(); - ParametersWithPCTable.Columns.Add("id", typeof(string)); - ParametersWithPCTable.Columns.Add("mode", typeof(bool)); - ParametersWithPCTable.Columns.Add("status", typeof(bool)); - ParametersWithPCTable.Columns.Add("batch", typeof(int)); - ParametersWithPCTable.Columns.Add("step", typeof(int)); - ParametersWithPCTable.Columns.Add("stepName", typeof(int)); - ParametersWithPCTable.Columns.Add("totalTime", typeof(int)); - ParametersWithPCTable.Columns.Add("stepTime", typeof(int)); - ParametersWithPCTable.Columns.Add("speed", typeof(float)); - ParametersWithPCTable.Columns.Add("currnet", typeof(float)); - ParametersWithPCTable.Columns.Add("pressure", typeof(float)); + //ParametersWithPCTable.Columns.Add("id", typeof(string)); + //ParametersWithPCTable.Columns.Add("mode", typeof(bool)); + //ParametersWithPCTable.Columns.Add("status", typeof(bool)); + //ParametersWithPCTable.Columns.Add("batch", typeof(int)); + //ParametersWithPCTable.Columns.Add("step", typeof(int)); + //ParametersWithPCTable.Columns.Add("stepName", typeof(int)); + //ParametersWithPCTable.Columns.Add("totalTime", typeof(int)); + //ParametersWithPCTable.Columns.Add("stepTime", typeof(int)); + //ParametersWithPCTable.Columns.Add("speed", typeof(float)); + //ParametersWithPCTable.Columns.Add("currnet", typeof(float)); + //ParametersWithPCTable.Columns.Add("pressure", typeof(float)); //LogAlarmTable.Columns.Add("Equip_Name", typeof(string)); //LogAlarmTable.Columns.Add("Alarm_ID", typeof(int)); @@ -128,7 +145,7 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl TempTable.Columns.Add("报警时间", typeof(string)); AllAlarmTable = DBHelp.GetTable(@"SELECT Alarm_ID, Alarm_Block, Alarm_Word, Alarm_Bit, Alarm_Cn_Info, Alarm_Other_Info FROM Pmt_Alarm"); - + timer = new Timer(); timer.Interval = 1000; timer.Enabled = true; @@ -168,10 +185,9 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl { try { - if (conCurrentCache.Count == 0) { - + Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); @@ -181,37 +197,30 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl DB2103 = new DB2103Helper(); DB2107 = new DB2107Helper(); DB2119 = new DB2119Helper(); - + NewThreadDb2102(); NewThreadDb2103(); NewThreadDb2107(); - + RGVRecordShow(); + //SetHslLanternAlarm(hslAlarmEntity.HslLanternAlarm3, list[2].Error); //SetHslLanternAlarm(hslAlarmEntity.HslLanternAlarm4, list[3].Error); //SetHslLanternAlarm(hslAlarmEntity.HslLanternAlarm5, list[4].Error); //SetHslLanternAlarm(hslAlarmEntity.HslLanternAlarm6, list[5].Error); //SetHslLanternAlarm(hslAlarmEntity.HslLanternAlarm7, list[6].Error); //SetHslLanternAlarm(hslAlarmEntity.HslLanternAlarm8, list[7].Error); - conCurrentCache.Clear(); stopwatch.Stop(); var send = stopwatch.ElapsedMilliseconds; - - } - else - { - MesnacServiceManager.Instance.LoggingService.Info("设备细节画面读数线程被过滤"); + } } catch (Exception ex) { conCurrentCache.Clear(); } - - - } /// @@ -225,26 +234,29 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl timer.Dispose(); } + var reachSingle = RgvPlcUtil.GetRGVAllError(); + var mixSingle = Db3000Helper.ReadDb(); + + RGVRecord(reachSingle, mixSingle); + //目前只有主线程可以 - var list = RgvPlcUtil.GetRGVAllError(); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm1, list[0]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm2, list[1]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm3, list[2]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm4, list[3]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm5, list[4]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm6, list[5]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm7, list[6]); - SetHslLanternAlarm(HslAlarmE.HslLanternAlarm8, list[7]); - - var sim = Db3000Helper.ReadDb(); - - - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple1, sim[0]); - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple2, sim[1]); - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple3, sim[2]); - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple4, sim[3]); - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple5, sim[4]); - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple6, sim[5]); + //小车到位信号 + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm1, reachSingle[0]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm2, reachSingle[1]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm3, reachSingle[2]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm4, reachSingle[3]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm5, reachSingle[4]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm6, reachSingle[5]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm7, reachSingle[6]); + SetHslLanternAlarm(HslAlarmE.HslLanternAlarm8, reachSingle[7]); + + //搅拌准备好信号 + SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple1, mixSingle[0]); + SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple2, mixSingle[1]); + SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple3, mixSingle[2]); + SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple4, mixSingle[3]); + SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple5, mixSingle[4]); + SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple6, mixSingle[5]); SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple7, false); SetHslLanternSimple(HslLanternSimpleE.HslLanternSimple8, false); @@ -252,7 +264,6 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl SetHslLanternSimple(HslLanternSimpleE.HslLanternSimpleM1, MinAnPlc.ReqD1); SetHslLanternSimple(HslLanternSimpleE.HslLanternSimpleM2, MinAnPlc.ReqD2); - SetHslLanternSimple(HslLanternSimpleE.HslLanternSimpleM3, MinAnPlc.ReqD3); SetHslLanternSimple(HslLanternSimpleE.HslLanternSimpleM4, MinAnPlc.ReqD4); @@ -261,9 +272,6 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl SetHslLanternSimpleRequest(HslLanternSimpleE.HslLanternSimpleReq3, MinAnPlc.Heir3); SetHslLanternSimpleRequest(HslLanternSimpleE.HslLanternSimpleReq4, MinAnPlc.Heir4); - - - ThreadPool.QueueUserWorkItem(new WaitCallback(NewThread)); AlarmControl(); @@ -271,6 +279,156 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl } + #endregion + + #region 对接RGV计时记录 + + private void RGVRecord(List RGVEs, List Mixes) + { + if(RGVEs.Count == 0 || Mixes.Count == 0) + { + return; + } + for (int i = 0; i < 6; i++) + { + int deviceNo = i + 1; + //判断有没有done = false的设备记录,如果为空就新建一条记录 + var record = FreeSqlUnit.Instance.Select().Where(x => x.DeviceNo == deviceNo && !x.Done).ToList().FirstOrDefault(); + if (record == null) + { + var entity = new Lj_RGVTimeRecord() + { + DeviceNo = deviceNo, + MixIsReady = false, + RGVIsReach = false, + Done = false + }; + record = entity; + FreeSqlUnit.Instance.Insert(entity).ExecuteAffrows(); + } + + //逻辑判断插入数据库 + if (Mixes[i] && !record.MixIsReady) + { + FreeSqlUnit.Instance.Update() + .Set(x => x.MixIsReady, true) + .Set(x => x.MixReadyStartTime, DateTime.Now) + .Where(x => x.DeviceNo == deviceNo && !x.Done).ExecuteAffrows(); + } + if (RGVEs[i].RequestFeed && !record.RGVIsReach) + { + TimeSpan temp = DateTime.Now - record.MixReadyStartTime; + FreeSqlUnit.Instance.Update() + .Set(x => x.RGVIsReach, true) + .Set(x => x.RGVReachTime, DateTime.Now) + .Set(x => x.MixWaitTime, (int)temp.TotalSeconds) + .Where(x => x.DeviceNo == deviceNo && !x.Done).ExecuteAffrows(); + } + if (!Mixes[i] && record.MixIsReady) + { + FreeSqlUnit.Instance.Update() + .Set(x => x.MixReadyEndTime, DateTime.Now) + .Where(x => x.DeviceNo == deviceNo && !x.Done).ExecuteAffrows(); + } + if (!RGVEs[i].RequestFeed && record.RGVIsReach) + { + TimeSpan temp = DateTime.Now - record.RGVReachTime; + FreeSqlUnit.Instance.Update() + .Set(x => x.RGVLeaveTime, DateTime.Now) + .Set(x => x.RgvWaitTime, (int)temp.TotalSeconds) + .Set(x => x.Done, true) + .Where(x => x.DeviceNo == deviceNo && !x.Done).ExecuteAffrows(); + } + } + } + + private void RGVRecordShow() + { + for (int i = 0; i < 6; i++) + { + int deviceNo = i + 1; + //判断有没有done = false的设备记录,如果为空就新建一条记录 + var record = FreeSqlUnit.Instance.Select().Where(x => x.DeviceNo == deviceNo && !x.Done).ToList().FirstOrDefault(); + if (record != null) + { + if (record.MixIsReady && !record.RGVIsReach) + { + switch (deviceNo) + { + case 1: + LabelE.WetWait1.Text = MixWaitTime(record); + break; + case 2: + LabelE.WetWait2.Text = MixWaitTime(record); + break; + case 3: + LabelE.WetWait3.Text = MixWaitTime(record); + break; + case 4: + LabelE.WetWait4.Text = MixWaitTime(record); + break; + case 5: + LabelE.WetWait5.Text = MixWaitTime(record); + break; + case 6: + LabelE.WetWait6.Text = MixWaitTime(record); + break; + default: + break; + } + } + else if (record.MixIsReady && record.RGVIsReach) + { + switch (deviceNo) + { + case 1: + LabelE.RGVWait1.Text = RGVWaitTime(record); + break; + case 2: + LabelE.RGVWait2.Text = RGVWaitTime(record); + break; + case 3: + LabelE.RGVWait3.Text = RGVWaitTime(record); + break; + case 4: + LabelE.RGVWait4.Text = RGVWaitTime(record); + break; + case 5: + LabelE.RGVWait5.Text = RGVWaitTime(record); + break; + case 6: + LabelE.RGVWait6.Text = RGVWaitTime(record); + break; + default: + break; + } + } + } + } + } + + private string RGVWaitTime(Lj_RGVTimeRecord record) + { + int t = Convert.ToInt32((DateTime.Now - record.RGVReachTime).TotalSeconds); + return SecondToMinute(t); + } + + private string MixWaitTime(Lj_RGVTimeRecord record) + { + int t = Convert.ToInt32((DateTime.Now - record.MixReadyStartTime).TotalSeconds); + return SecondToMinute(t); + } + + private string SecondToMinute(int t) + { + int m = t / 60; + int s = t % 60; + if (m == 0) + { + return s + "秒"; + } + return m + " 分 " + s + " 秒 "; + } #endregion @@ -708,7 +866,7 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl /// private void NewThreadDb2103() { - + PlcReadTemp.DM1DRY1_ACT_Speed_Set = DB2103.DM1DRY1.ACT_Speed; PlcReadTemp.DM1DRY2_ACT_Speed_Set = DB2103.DM1DRY2.ACT_Speed; PlcReadTemp.DM1DRY3_ACT_Speed_Set = DB2103.DM1DRY3.ACT_Speed; @@ -1330,7 +1488,7 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl { obj.Status = SwitchLight.Statuses.ylMove; } - else if(alarm == true) + else if (alarm == true) { obj.Status = SwitchLight.Statuses.ylAlarm; } @@ -1353,7 +1511,7 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl obj.Set = true; obj.Alarm = false; } - else if(alarm == true) + else if (alarm == true) { obj.Set = false; obj.Alarm = true; @@ -1498,7 +1656,7 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl public void SetHslLanternSimple(HslLanternSimple lanternSimple, bool su) { - + if (su == true) { lanternSimple.LanternBackground = Color.LimeGreen; @@ -1520,7 +1678,7 @@ namespace Mesnac.Action.ChemicalWeighing.MainDetailControl { lanternSimple.LanternBackground = Color.Transparent; } - } + } #endregion diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Mesnac.Action.ChemicalWeighing.csproj b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Mesnac.Action.ChemicalWeighing.csproj index 1d8febf..328ef3f 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Mesnac.Action.ChemicalWeighing.csproj +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Mesnac.Action.ChemicalWeighing.csproj @@ -484,6 +484,7 @@ + Form @@ -529,6 +530,7 @@ + diff --git a/Main/MCEdit/Data/EventConfig/小料称量/榄菊报表.xml b/Main/MCEdit/Data/EventConfig/小料称量/榄菊报表.xml index af7c2a4..b75285a 100644 --- a/Main/MCEdit/Data/EventConfig/小料称量/榄菊报表.xml +++ b/Main/MCEdit/Data/EventConfig/小料称量/榄菊报表.xml @@ -6,13 +6,15 @@ 糊化机日投报表 糊化机日投报表 - - 糊化机黑粉统计 - 糊化机黑粉统计 - - - - + + 糊化机黑粉统计 + 糊化机黑粉统计 + + + 湿混机时间统计 + 湿混机时间统计 + + @@ -20,17 +22,19 @@ - - - - + + + + + + - - - - + + + + \ No newline at end of file diff --git a/Main/MCEdit/Data/MCProject/SCWSProject2.mprj b/Main/MCEdit/Data/MCProject/SCWSProject2.mprj index 92bd2f6..406f9c5 100644 --- a/Main/MCEdit/Data/MCProject/SCWSProject2.mprj +++ b/Main/MCEdit/Data/MCProject/SCWSProject2.mprj @@ -31,6 +31,7 @@ + diff --git a/Main/MCEdit/Data/MCProject/nodeForm/MainDetail.xml b/Main/MCEdit/Data/MCProject/nodeForm/MainDetail.xml index b90ccb7..5cd2774 100644 --- a/Main/MCEdit/Data/MCProject/nodeForm/MainDetail.xml +++ b/Main/MCEdit/Data/MCProject/nodeForm/MainDetail.xml @@ -1,6 +1,502 @@ + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1778, 599 + RGVWait8 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1778, 563 + WetWait8 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1698, 599 + RGVWait7 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1698, 563 + WetWait7 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1466, 600 + RGVWait6 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1466, 564 + WetWait6 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1386, 600 + RGVWait5 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1386, 564 + WetWait5 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1226, 598 + RGVWait4 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1226, 562 + WetWait4 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1146, 598 + RGVWait3 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 1146, 562 + WetWait3 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 914, 599 + RGVWait2 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 914, 563 + WetWait2 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 834, 599 + RGVWait1 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + 0 + 宋体, 10pt + White + 834, 563 + WetWait1 + 14, 14 + + + + + Red + DarkGray + + + False + + + + None + True + True + RGV/t + White + 777, 601 + MCLabel133 + 35, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + 混炼完/t + White + 777, 565 + MCLabel132 + 53, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + 正在下料 + White + 1024, 424 + MCLabel135 + 53, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + 黑粉罐紫灯: + White + 1024, 409 + MCLabel134 + 77, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + 下料请求 + White + 1024, 374 + MCLabel136 + 53, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + 黑粉罐绿灯: + White + 1024, 359 + MCLabel137 + 77, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + ←RGV是否到达→ + White + 1015, 517 + MCLabel140 + 95, 12 + + + + + Red + DarkGray + + + False + + + + None + True + True + ←是否搅拌完成→ + White + 1011, 472 + MCLabel141 + 101, 12 + 1739, 366 HslLanternSimpleReq4 diff --git a/Main/MCEdit/Data/MCProject/nodeForm/WeterTimeCount.xml b/Main/MCEdit/Data/MCProject/nodeForm/WeterTimeCount.xml new file mode 100644 index 0000000..c6f8433 --- /dev/null +++ b/Main/MCEdit/Data/MCProject/nodeForm/WeterTimeCount.xml @@ -0,0 +1,346 @@ + + + + False + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJoBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EYXRhR3JpZFZpZXdDb2x1bW5zLCBNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBAAAKk1lc25hYy5Db250cm9scy5CYXNlLkRhdGFHcmlkVmlld0NvbHVtbnNbXQIAAAAICAkDAAAAAAAAAAAAAAAHAwAAAAABAAAAAAAAAAQoTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGF0YUdyaWRWaWV3Q29sdW1ucwIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAABVTeXN0ZW0uRGF0YS5EYXRhVGFibGUDAAAAGURhdGFUYWJsZS5SZW1vdGluZ1ZlcnNpb24JWG1sU2NoZW1hC1htbERpZmZHcmFtAwEBDlN5c3RlbS5WZXJzaW9uAgAAAAkDAAAABgQAAACFBDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/Pg0KPHhzOnNjaGVtYSB4bWxucz0iIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOm1zZGF0YT0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp4bWwtbXNkYXRhIj4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTUNEYXRhR3JpZFZpZXciPg0KICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8L3hzOmVsZW1lbnQ+DQogIDx4czplbGVtZW50IG5hbWU9InRtcERhdGFTZXQiIG1zZGF0YTpJc0RhdGFTZXQ9InRydWUiIG1zZGF0YTpNYWluRGF0YVRhYmxlPSJNQ0RhdGFHcmlkVmlldyIgbXNkYXRhOlVzZUN1cnJlbnRMb2NhbGU9InRydWUiPg0KICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8L3hzOmVsZW1lbnQ+DQo8L3hzOnNjaGVtYT4GBQAAAIABPGRpZmZncjpkaWZmZ3JhbSB4bWxuczptc2RhdGE9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206eG1sLW1zZGF0YSIgeG1sbnM6ZGlmZmdyPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnhtbC1kaWZmZ3JhbS12MSIgLz4EAwAAAA5TeXN0ZW0uVmVyc2lvbgQAAAAGX01ham9yBl9NaW5vcgZfQnVpbGQJX1JldmlzaW9uAAAAAAgICAgCAAAAAAAAAP//////////Cw== + + None + True + True + False + 348, 12 + MoreData + 530, 623 + 7 + + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + False + + + Red + DarkGray + 夜班统计 + 188, 171 + NightWork + 120, 31 + 12 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + False + + + Red + DarkGray + 白班统计 + 22, 171 + WhiteWork + 120, 31 + 11 + + + + + Red + DarkGray + + + False + + + + None + True + True + 当前或最近一次班次统计 + 22, 146 + MCLabel1 + 137, 12 + + + + + + + False + + + + None + True + True + MiddleCenter + 224, 224, 224 + 22, 139 + SpecialLabelBlue2 + 287, 1 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + Time + True + 110, 104 + endTime + 77, 21 + 7 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + Time + True + 110, 77 + startTime + 77, 21 + 6 + + + + + + + False + + + + None + True + True + MiddleCenter + 224, 224, 224 + 21, 61 + SpecialLabelBlue1 + 287, 1 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + Short + 21, 104 + endDate + 84, 21 + 4 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + Short + 21, 77 + startDate + 84, 21 + 3 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + False + + + Red + DarkGray + 范围查询 + 206, 77 + SelectButton + 103, 48 + 2 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + False + + + Red + DarkGray + 统计单日 + 206, 26 + MCButton1 + 103, 21 + 1 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + None + True + True + 21, 26 + MCDateTimePicker1 + 166, 21 + 0 + + False + 统计查询 + 12, 12 + GroupBox1 + 330, 221 + 6 + + + False + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJoBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EYXRhR3JpZFZpZXdDb2x1bW5zLCBNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGxdXQMAAAAGX2l0ZW1zBV9zaXplCF92ZXJzaW9uBAAAKk1lc25hYy5Db250cm9scy5CYXNlLkRhdGFHcmlkVmlld0NvbHVtbnNbXQIAAAAICAkDAAAAAAAAAAAAAAAHAwAAAAABAAAAAAAAAAQoTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGF0YUdyaWRWaWV3Q29sdW1ucwIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + + False + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAABVTeXN0ZW0uRGF0YS5EYXRhVGFibGUDAAAAGURhdGFUYWJsZS5SZW1vdGluZ1ZlcnNpb24JWG1sU2NoZW1hC1htbERpZmZHcmFtAwEBDlN5c3RlbS5WZXJzaW9uAgAAAAkDAAAABgQAAACFBDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/Pg0KPHhzOnNjaGVtYSB4bWxucz0iIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOm1zZGF0YT0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp4bWwtbXNkYXRhIj4NCiAgPHhzOmVsZW1lbnQgbmFtZT0iTUNEYXRhR3JpZFZpZXciPg0KICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8L3hzOmVsZW1lbnQ+DQogIDx4czplbGVtZW50IG5hbWU9InRtcERhdGFTZXQiIG1zZGF0YTpJc0RhdGFTZXQ9InRydWUiIG1zZGF0YTpNYWluRGF0YVRhYmxlPSJNQ0RhdGFHcmlkVmlldyIgbXNkYXRhOlVzZUN1cnJlbnRMb2NhbGU9InRydWUiPg0KICAgIDx4czpjb21wbGV4VHlwZT4NCiAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgLz4NCiAgICA8L3hzOmNvbXBsZXhUeXBlPg0KICA8L3hzOmVsZW1lbnQ+DQo8L3hzOnNjaGVtYT4GBQAAAIABPGRpZmZncjpkaWZmZ3JhbSB4bWxuczptc2RhdGE9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206eG1sLW1zZGF0YSIgeG1sbnM6ZGlmZmdyPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOnhtbC1kaWZmZ3JhbS12MSIgLz4EAwAAAA5TeXN0ZW0uVmVyc2lvbgQAAAAGX01ham9yBl9NaW5vcgZfQnVpbGQJX1JldmlzaW9uAAAAAAgICAgCAAAAAAAAAP//////////Cw== + + None + True + True + False + False + 12, 239 + MCDataGridView1 + 330, 395 + 5 + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAEAAAACAAAABwMAAAAAAQAAAAQAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAJBAAAAA0DBQQAAAAhTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uAwAAABU8R1VJRD5rX19CYWNraW5nRmllbGQVPE5hbWU+a19fQmFja2luZ0ZpZWxkFzxSZW1hcms+a19fQmFja2luZ0ZpZWxkAQEBAgAAAAYFAAAAIDk1OEVCNDdBNURCMjQ3NDA5MDRGMkQxRkI5NUY5RkU3BgYAAAAV5rm/5re35py65pe26Ze057uf6K6hBgcAAAAV5rm/5re35py65pe26Ze057uf6K6hCw== + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + + AAEAAAD/////AQAAAAAAAAAMAgAAAEtNZXNuYWMuQ29udHJvbHMuQmFzZSwgVmVyc2lvbj0xLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwEAQAAAJMBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuTGlzdGAxW1tNZXNuYWMuQ29udHJvbHMuQmFzZS5EZXNpZ25BY3Rpb24sIE1lc25hYy5Db250cm9scy5CYXNlLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbF1dAwAAAAZfaXRlbXMFX3NpemUIX3ZlcnNpb24EAAAjTWVzbmFjLkNvbnRyb2xzLkJhc2UuRGVzaWduQWN0aW9uW10CAAAACAgJAwAAAAAAAAAAAAAABwMAAAAAAQAAAAAAAAAEIU1lc25hYy5Db250cm9scy5CYXNlLkRlc2lnbkFjdGlvbgIAAAAL + + False + False + False + Control + 906, 686 + WindowsDefaultLocation + 湿混机等待时间统计 + Normal + + Tile + 宋体, 9pt + ControlText + WeterTimeCount +