From ec2e2bbb821195725a40fb0fc1b063fe0953931a Mon Sep 17 00:00:00 2001 From: "liulb@mesnac.com" Date: Fri, 10 Nov 2023 08:53:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BinManage/BinHelper.cs | 16 ++-- .../Product/XlPlan/InitFormAction.cs | 96 ++++--------------- .../Product/XlPlan/ManualRefreshAction.cs | 11 ++- .../Product/XlPlan/PlanHelper.cs | 67 +++++++++++++ .../Product/XlPlan/RefreshAction.cs | 4 +- .../Report/XlDbHelper.cs | 11 ++- .../XlPlcHelper/PlcPlanHelper.cs | 17 ++-- 7 files changed, 124 insertions(+), 98 deletions(-) diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/BinManage/BinHelper.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/BinManage/BinHelper.cs index 8a7a52d..2719d1e 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/BinManage/BinHelper.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/BinManage/BinHelper.cs @@ -276,7 +276,7 @@ namespace Mesnac.Action.ChemicalWeighing.BinManage { fsql.Transaction(() => { - var affrows = fsql.Insert(lrPlan).ExecuteAffrows(); + var affrows =Convert.ToInt32(fsql.Insert(lrPlan).ExecuteIdentity()); if (affrows < 1) { throw new Exception("存盘计划详细数据失败!");//抛出异常,回滚事务,事务退出 @@ -307,13 +307,14 @@ namespace Mesnac.Action.ChemicalWeighing.BinManage { fsql.Transaction(() => { - var affrows = fsql.Insert(lrWeigh).ExecuteAffrows(); + var affrows = Convert.ToInt32(fsql.Insert(lrPlan).ExecuteIdentity()); + if (affrows < 1) + throw new Exception("存盘计划详细数据失败!");//抛出异常,回滚事务,事务退出 + affrows = fsql.Insert(lrWeigh).ExecuteAffrows(); //判断是否插入成功 if (affrows < 1) throw new Exception("存盘物料详细数据失败!"); //抛出异常,回滚事务,事务退出 - affrows = fsql.Insert(lrPlan).ExecuteAffrows(); - if (affrows < 1) - throw new Exception("存盘计划详细数据失败!");//抛出异常,回滚事务,事务退出 + }); } else @@ -325,7 +326,10 @@ namespace Mesnac.Action.ChemicalWeighing.BinManage if (affrows < 1) throw new Exception("存盘物料详细数据失败!"); //抛出异常,回滚事务,事务退出 affrows = fsql.Update(bin.Bin_Serial).Set(a => a.BinWeight, bin.BinWeight).ExecuteAffrows(); - + //判断是否插入成功 + if (affrows < 1) + throw new Exception("存盘物料详细数据失败!"); //抛出异常,回滚事务,事务退出 + }); } } diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/InitFormAction.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/InitFormAction.cs index d68e54f..498b745 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/InitFormAction.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/InitFormAction.cs @@ -9,6 +9,7 @@ using Mesnac.Action.Base; using Mesnac.Codd.Session; using System.Reflection; using Mesnac.Controls.Base; +using System.Timers; namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan { @@ -17,6 +18,11 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan /// public class InitFormAction : ChemicalWeighingAction,IAction { + /// + /// 刷新 + /// + public static event EventHandler OnRefreshPlan; + #region 字段定义 public static bool IsFirstRun = true; //是否首次运行 @@ -52,24 +58,12 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan //DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Pmt_Shiftime").FirstOrDefault(); DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "xl_plan").FirstOrDefault(); //获取本机台计划网格控件 - //if (planDateControl == null) - //{ - // ICSharpCode.Core.LoggingService.Error("{当班计划-窗体加载} 缺少日期选择控件..."); - // return; - //} - //if (pptShiftControl == null) - //{ - // ICSharpCode.Core.LoggingService.Error("{当班计划-窗体加载} 缺少班次组合框控件..."); - // return; - //} if (clientGridControl == null) { ICSharpCode.Core.LoggingService.Error("{当班计划-窗体加载} 缺少计划列表网格控件..."); return; } this._runtime = runtime; - //this._planDateControl = planDateControl; - //this._pptShiftControl = pptShiftControl; this._clientGridControl = clientGridControl; #endregion @@ -102,26 +96,6 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan if (dgv != null) { PlanHelper.SetDataGridViewStyle(dgv); //设置网格样式 - //双击时取消选择行(取消高亮显示) - //dgv.CellDoubleClick += delegate(object sender, DataGridViewCellEventArgs e) - //{ - // if (dgv.Rows != null && dgv.Rows.Count > 0) - // { - // foreach (DataGridViewRow row in dgv.Rows) - // { - // row.Selected = false; - // } - // } - //}; - //dgv.VisibleChanged += delegate(object sender, EventArgs e) - //{ - // PlanHelper.SetBackColor(dgv); - //}; - ////PlanHelper.SetBackColor(dgv); - //ContextMenuStrip cms = new ContextMenuStrip(); - //cms.Items.Add("称量明细"); - //dgv.ContextMenuStrip = cms; - //cms.Click += Cms_Click; } } @@ -140,54 +114,24 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan /// private void InitData() { - #region 取消事件绑定 - - //List valueChangedList = null; - //List cacheValueChangedList = new List(); - //PropertyInfo pi1 = this._planDateControl.BaseControl.GetType().GetProperty("ValueChangedList"); - //if (pi1 != null) - //{ - // valueChangedList = pi1.GetValue(this._planDateControl.BaseControl) as List; - // cacheValueChangedList.AddRange(valueChangedList); - // valueChangedList.Clear(); - //} - //List selectedChanged = null; - //List cacheSelectedChanged = new List(); - //PropertyInfo pi2 = this._pptShiftControl.BaseControl.GetType().GetProperty("SelectedChanged"); - //if (pi2 != null) - //{ - // selectedChanged = pi2.GetValue(this._pptShiftControl.BaseControl) as List; - // cacheSelectedChanged.AddRange(selectedChanged); - // selectedChanged.Clear(); - //} + System.Timers.Timer timer = new System.Timers.Timer(10000); + timer.Elapsed += new ElapsedEventHandler(StartServer1); + timer.AutoReset = true; + timer.Enabled = true; + timer.Start(); - #endregion - - //DataTable shiftTable = ProductHelper.GetShiftData(); - //this._pptShiftControl.BaseControl.BindDataSource = shiftTable; + + } - if (PlanHelper.PlanLog != null) + private void StartServer1(object sender, ElapsedEventArgs e) + { + #region 业务实现 + if (OnRefreshPlan != null) { - - //如果记录了上次执行计划的时间和班次,则把日期和班次设置为上次的值 - //this._planDateControl.BaseControl.MCValue = PlanHelper.PlanLog.LastDate; - //this._pptShiftControl.BaseControl.MCValue = PlanHelper.PlanLog.LastShiftID; - //this._planDateControl.BaseControl.MCValue = DateTime.Now.Date; - //this._pptShiftControl.BaseControl.MCValue = PlanHelper.PlanLog.LastShiftID; - - #region 重新绑定事件 - - //if (pi1 != null && valueChangedList != null) - //{ - // valueChangedList.AddRange(cacheValueChangedList); - //} - //if (pi2 != null && selectedChanged != null) - //{ - // selectedChanged.AddRange(cacheSelectedChanged); - //} - - #endregion + OnRefreshPlan(this._runtime.BaseControl.MCRoot, System.EventArgs.Empty); } + + #endregion } #endregion diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/ManualRefreshAction.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/ManualRefreshAction.cs index 63e9a74..6621175 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/ManualRefreshAction.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/ManualRefreshAction.cs @@ -114,11 +114,18 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan ICSharpCode.Core.LoggingService.Debug(String.Format("未查询到数据", selectedPlanId)); return; } + if (isPrenatalTest == 1) + { + BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_plc_Spare7, new object[] { 1 });//产前检查表标识 + } + else + { + BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_plc_Spare7, new object[] { 0 }); + } //下传计划给PLC bool IsSucess = PlcPlanHelper.ManualXlPlanToPlc(materialList); if (IsSucess) { - //回写计划任务状态 3:任务执行中 Xl_DowLoadPlan plan = materialList.FirstOrDefault(); if (isPrenatalTest == 1) @@ -164,7 +171,7 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan { #region 业务实现 - DataTable table = PlanHelper.GetPlanData(); + DataTable table = PlanHelper.GetPlanData2(isPrenatalTest); lock (String.Empty) { //本地计划 diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/PlanHelper.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/PlanHelper.cs index 96545d5..f5f3974 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/PlanHelper.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/PlanHelper.cs @@ -2790,6 +2790,29 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan } #endregion + #region 获取本机台全部的计划数据 + /// + /// 获取本机台全部的计划数据 + /// + /// 返回符合条件的计划数据表 + public static DataTable GetPlanData2(int check) + { + DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); + if (dbHelper == null) + { + throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError); + } + dbHelper.ClearParameter(); + dbHelper.CommandType = CommandType.Text; + string strSql = "SELECT Plan_Serial,Recipe_ID,Recipe_Name,Equip_Code,Version,Plan_Id,Plan_Num,Real_Num,Plan_State,Plan_StateText,Start_Date,End_Date,Plan_Date FROM xl_plan where IsPrenatalTest=@IsPrenatalTest ORDER BY Plan_State,left(Plan_Id,8),Plan_Serial"; + dbHelper.CommandText = strSql; + dbHelper.ClearParameter(); + dbHelper.AddParameter("@IsPrenatalTest", check); + DataTable table = dbHelper.ToDataTable(); + return table; + } + #endregion + #region 根据计划号获取当前计划 /// /// 根据计划号获取当前计划 @@ -3442,8 +3465,52 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan return false; } } + public static bool UpdateCheckLrPlanCompletedQuantity(Xl_DowLoadPlan dp, int tcheckBatch, int state, DateTime endTime, double totalWeight,int flagNum) + { + try + { + DbHelper dbHelper = Mesnac.Basic.DataSourceFactory.Instance.GetDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local); + if (dbHelper == null) + { + throw new Exception(Mesnac.Basic.LanguageHelper.DataBaseConnectError); + } + dbHelper.ClearParameter(); + dbHelper.CommandType = CommandType.Text; + string strSql = "update lr_plan set Real_Num = @Real_Num,Plan_State=@PlanState,Total_Weight=@Total_Weight,End_Date=@End_Date where Plan_Id = @Plan_Id and FlagNum=@FlagNum"; + dbHelper.CommandText = strSql; + dbHelper.AddParameter("@Real_Num", tcheckBatch); + dbHelper.AddParameter("@Plan_Id", dp.Plan_Id); + dbHelper.AddParameter("@Total_Weight", totalWeight); + dbHelper.AddParameter("@PlanState", state); + //dbHelper.AddParameter("@Plan_StateText", StateToShow(state)); + dbHelper.AddParameter("@FlagNum", flagNum); + dbHelper.AddParameter("@End_Date", endTime.ToString("yyyy-MM-dd HH:mm:ss")); + dbHelper.ExecuteNonQuery(); + return true; + } + catch (Exception) + { + return false; + } + } #endregion + + //public bool UpdateCheckLrPlan(xl_plan plan, LR_plan) + //{ + // IFreeSql fsql = FreeHelper.Instance; + + // fsql.Transaction(() => + // { + // var affrows = fsql.Update(lrWeigh).ExecuteAffrows(); + // if (affrows < 1) + // throw new Exception("存盘详细数据失败!");//抛出异常,回滚事务,事务退出 + // affrows = fsql.Update(bin).ExecuteAffrows(); + // if (affrows < 1) + // throw new Exception("保存库存实时数据失败!");//抛出异常,回滚事务,事务退出 + + // }); + //} #endregion diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/RefreshAction.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/RefreshAction.cs index 94993ff..186e343 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/RefreshAction.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Product/XlPlan/RefreshAction.cs @@ -97,7 +97,9 @@ namespace Mesnac.Action.ChemicalWeighing.Product.XlPlan //ChemicalWeighingPlc.PlcPlanHelper.sender = runtime; //XlPlcHelper.OnChangePlan -= Process_Event; //XlPlcHelper.OnChangePlan += Process_Event; - + //定时刷新 + InitFormAction.OnRefreshPlan -= Process_Event; + InitFormAction.OnRefreshPlan += Process_Event; IsFirstRun = false; } diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Report/XlDbHelper.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Report/XlDbHelper.cs index a629c74..d4feccd 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Report/XlDbHelper.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/Report/XlDbHelper.cs @@ -505,6 +505,7 @@ namespace Mesnac.Action.ChemicalWeighing.Report //判断是否插入成功 if (affrows < 1) throw new Exception("存盘计划详细数据失败!"); //抛出异常,回滚事务,事务退出 + affrows = fsql.Insert(lrWeigh).ExecuteAffrows(); if (affrows < 1) throw new Exception("存盘详细数据失败!");//抛出异常,回滚事务,事务退出 @@ -518,6 +519,7 @@ namespace Mesnac.Action.ChemicalWeighing.Report //判断是否插入成功 if (affrows < 1) throw new Exception("存盘计划详细数据失败!"); //抛出异常,回滚事务,事务退出 + lrWeigh.MainId = affrows; affrows = fsql.Insert(lrWeigh).ExecuteAffrows(); if (affrows < 1) throw new Exception("存盘详细数据失败!");//抛出异常,回滚事务,事务退出 @@ -531,14 +533,16 @@ namespace Mesnac.Action.ChemicalWeighing.Report { fsql.Transaction(() => { - var affrows = fsql.Insert(lrPlan).ExecuteAffrows(); + var affrows =Convert.ToInt32(fsql.Insert(lrPlan).ExecuteIdentity()); //判断是否插入成功 if (affrows < 1) throw new Exception("存盘计划详细数据失败!"); //抛出异常,回滚事务,事务退出 + + lrWeigh.MainId = affrows; affrows = fsql.Insert(lrWeigh).ExecuteAffrows(); if (affrows < 1) throw new Exception("存盘详细数据失败!");//抛出异常,回滚事务,事务退出 - affrows = fsql.Insert(bin).ExecuteAffrows(); + affrows = fsql.Update(bin.Bin_Serial).Set(a => a.BinWeight, bin.BinWeight).ExecuteAffrows(); if (affrows < 1) throw new Exception("保存库存实时数据失败!");//抛出异常,回滚事务,事务退出 affrows = fsql.Insert(alarm).ExecuteAffrows(); @@ -553,7 +557,8 @@ namespace Mesnac.Action.ChemicalWeighing.Report var affrows = fsql.Insert(lrWeigh).ExecuteAffrows(); if (affrows < 1) throw new Exception("存盘详细数据失败!");//抛出异常,回滚事务,事务退出 - affrows = fsql.Insert(bin).ExecuteAffrows(); + bin.Equip_Code = "00"; + affrows = fsql.Update(bin.Bin_Serial).Set(a => a.BinWeight, bin.BinWeight).ExecuteAffrows(); if (affrows < 1) throw new Exception("保存库存实时数据失败!");//抛出异常,回滚事务,事务退出 affrows = fsql.Insert(alarm).ExecuteAffrows(); diff --git a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/XlPlcHelper/PlcPlanHelper.cs b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/XlPlcHelper/PlcPlanHelper.cs index 995bcfa..a71f1c7 100644 --- a/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/XlPlcHelper/PlcPlanHelper.cs +++ b/Actions/ChemicalWeighing/Mesnac.Action.ChemicalWeighing/XlPlcHelper/PlcPlanHelper.cs @@ -337,14 +337,7 @@ namespace Mesnac.Action.ChemicalWeighing.XlPlcHelper //BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_Set_RecipeName, new object[] { item.Recipe_Name }); //配方名称 BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_Set_Batch, new object[] { item.Plan_Num });//设定执行数量 BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_Set_Plan_Serial, new object[] { item.Plan_Serial }); //计划号 - if (item.IsPrenatalTest == 1) - { - BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_plc_Spare7, new object[] { 2 });//产前检查表标识 - } - else - { - BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_plc_Spare7, new object[] { 0 }); - } + } switch (item.Station) @@ -1055,11 +1048,12 @@ namespace Mesnac.Action.ChemicalWeighing.XlPlcHelper { if (BasePlcHelper.Instance.plt_Read1Jc.NowValue.ToInt() == 1) { - double tcheckWeight = BasePlcHelper.Instance.plt_TCheck_Weight.NowValue.ToInt();//检量秤重量 + double tcheckWeight = BasePlcHelper.Instance.plt_TCheck_Weight.NowValue.ToInt()/100;//检量秤重量 int tcheckBatch = BasePlcHelper.Instance.plt_Batch.NowValue.ToInt();//当前执行的批次 if (tcheckBatch == down.Plan_Num) { PlanHelper.UpdateCheckPlanCompletedQuantity(down, tcheckBatch, 8, DateTime.Now, tcheckWeight); + PlanHelper.UpdateCheckLrPlanCompletedQuantity(down, tcheckBatch, 8, DateTime.Now, tcheckWeight, down.FlagNum); BasePlcHelper.Instance.PlcWriteByDataKey(BasePlcHelper.Instance.plt_Read1Jc, new object[] { 2 }); } } @@ -2654,7 +2648,8 @@ namespace Mesnac.Action.ChemicalWeighing.XlPlcHelper weigh.Real_Weight = real_Weight; weigh.Real_Error = error; weigh.MainId = lrPlan.ID; - + weigh.EndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + lrPlan.Plan_Id = item.Plan_Id; lrPlan.Real_Num = batch; lrPlan.Total_Weight = totalWeight; @@ -2703,8 +2698,10 @@ namespace Mesnac.Action.ChemicalWeighing.XlPlcHelper weigh.Set_Error = item.Set_Error; weigh.Real_Weight = real_Weight; weigh.Real_Error = error; + weigh.EndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var binInfo = BinHelper.GetFristBinInfo(item.Station); + binInfo.Equip_Code = "00"; binInfo.BinWeight = binInfo.BinWeight - real_Weight; Hw_BinAlarm alarm = new Hw_BinAlarm();