You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1433 lines
64 KiB
C#

using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Text;
using System.Linq;
using System.Data;
using System.Data.Common;
using System.Threading;
using Mesnac.Action.Base;
using Mesnac.Controls.Base;
using System.Windows.Forms;
using Mesnac.Codd.Session;
using System.IO;
using Mesnac.Action.Feeding.Socket;
using Mesnac.Action.Feeding.FeedingPlc;
using Mesnac.Action.Feeding.Sys;
namespace Mesnac.Action.Feeding.ProducingPlan
{
#region 当班计划——窗体加载,即初始化操作
/// <summary>
/// 当班计划——窗体加载
/// </summary>
public class DutyPlanInit : FeedingAction , IAction
{
public static bool IsFirstRun = true;
private DbMCControl _serverGridControl = null;
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
if (DutyPlanInit.IsFirstRun)
{
//首次执行订阅,刷新插件事件
Mesnac.Gui.Workbench.WorkbenchSingleton.Workbench.AfterRefreshPlugIn += delegate(object sender, System.EventArgs e)
{
SysVersionController.OnVersionChange -= new EventHandler(SysVersionController_OnVersionChange);
DutyPlanInit.IsFirstRun = true;
};
//首次执行,订阅版本切换事件
SysVersionController.OnVersionChange += new EventHandler(SysVersionController_OnVersionChange);
DutyPlanInit.IsFirstRun = false;
}
base.LogDebug("当班计划——窗体加载,即初始化操作");
PlanCommon.IsInit = false;
#region 初始化班次数据
string source = string.Empty;
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl pptClassControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptClass").FirstOrDefault();
DbMCControl serverGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Server, "PptPlan").FirstOrDefault();
DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ppt_plan").FirstOrDefault();
//DbMCControl pptUserIDControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.local, "UserID").FirstOrDefault();
//Control pptUserIDControl = this.GetAllFormControlById("LastUserID").FirstOrDefault();
//Control pptUserNameControl = this.GetAllFormControlById("LastUserName").FirstOrDefault();
this._serverGridControl = serverGridControl;
if (planDateControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少日期选择控件...");
return;
}
if (pptShiftControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少班次组合框控件...");
return;
}
//if (pptUserIDControl == null)
//{
// return;
//}
if (serverGridControl != null)
{
DataGridView serverGrid = (serverGridControl.BaseControl as DataGridView);
if (serverGrid != null)
{
PlanCommon.SetDataGridViewStyle(serverGrid); //设置网格样式
if (base.NetType == NetTypes.Local)
{
if (serverGrid.Parent != null && !(serverGrid.Parent.Parent is Form))
{
serverGrid.Parent.Visible = false;
}
else
{
serverGridControl.BaseControl.MCVisible = false; //单机版隐藏网络计划控件
}
}
//双击时取消选择行(取消高亮显示)
serverGrid.CellDoubleClick += delegate(object sender, DataGridViewCellEventArgs e)
{
if (serverGrid.Rows != null && serverGrid.Rows.Count > 0)
{
foreach (DataGridViewRow row in serverGrid.Rows)
{
row.Selected = false;
}
}
};
serverGrid.VisibleChanged += delegate(object sender, EventArgs e)
{
PlanCommon.SetBackColor(serverGrid);
};
PlanCommon.SetBackColor(serverGrid);
}
}
if (clientGridControl != null)
{
DataGridView clientGrid = (clientGridControl.BaseControl as DataGridView);
if (clientGrid != null)
{
PlanCommon.SetDataGridViewStyle(clientGrid); //设置网格样式
//双击时取消选择行(取消高亮显示)
clientGrid.CellDoubleClick += delegate(object sender, DataGridViewCellEventArgs e)
{
if (clientGrid.Rows != null && clientGrid.Rows.Count > 0)
{
foreach (DataGridViewRow row in clientGrid.Rows)
{
row.Selected = false;
}
}
};
clientGrid.VisibleChanged += delegate(object sender, EventArgs e)
{
PlanCommon.SetBackColor(clientGrid);
};
PlanCommon.SetBackColor(clientGrid);
}
}
//((TextBox)pptUserIDControl).Text = base.GetConfigValue("LastUserID", "0");
//((Label)pptUserNameControl).Text = base.GetConfigValue("LastUserName", "0");
DbHelper dbHelper = NewDbHelper(pptShiftControl.DesignSource);
if (dbHelper==null)
{
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string sqlstr = "SELECT * FROM [PptShift]";
dbHelper.CommandText = sqlstr;
DataTable table = dbHelper.ToDataTable();
pptShiftControl.BaseControl.BindDataSource = table;
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
sqlstr = "SELECT * FROM [PptClass]";
dbHelper.CommandText = sqlstr;
pptClassControl.BaseControl.BindDataSource = dbHelper.ToDataTable();
PlanLog log = PlanCommon.PlanLog;
if (log != null)
{
//如果记录了上次执行计划的时间和班次,则把日期和班次设置为上次的值
planDateControl.BaseControl.MCValue = log.LastSelectDate;
pptShiftControl.BaseControl.MCValue = log.LastSelectShiftID;
}
//DateTime plandate = DateTime.Now;
//int shiftitem = 0;
//string Msg = string.Empty;
//PlanCommon.PlanDateVerify(out plandate, out shiftitem, planDateControl.BaseControl.MCValue.ToString(), Convert.ToInt32(pptShiftControl.BaseControl.MCValue.ToString()), out Msg);
//ShowMsg(Msg, Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
//planDateControl.BaseControl.MCValue = plandate;
//pptShiftControl.BaseControl.MCValue = shiftitem.ToString();
//单机版
//if (base.NetType == NetTypes.Local)
//{
// List<DbMCControl> dbMcControls = base.GetAllDbMCControls();
//}
PlanCommon.IsInit = true;
#endregion
}
protected void SysVersionController_OnVersionChange(object sender, EventArgs e)
{
if (this._serverGridControl != null && this._serverGridControl.BaseControl != null)
{
DataGridView serverGrid = this._serverGridControl.BaseControl as DataGridView;
if (base.NetType == NetTypes.Net)
{
#region 设置网络计划的可见性
if (serverGrid != null)
{
if (serverGrid.Parent != null && serverGrid.Parent is Panel)
{
serverGrid.Parent.Visible = true;
}
}
else
{
this._serverGridControl.BaseControl.MCVisible = true;
}
base.SetNetControlVisible();
#endregion
}
else
{
//如果是单机版,则隐藏网络计划网格控件和“刷新”、“选择接收”、“全部接收”按钮
if (serverGrid != null)
{
if (serverGrid.Parent != null && serverGrid.Parent is Panel)
{
serverGrid.Parent.Visible = false;
}
}
else
{
this._serverGridControl.BaseControl.MCVisible = false;
}
base.SetNetControlVisible();
}
}
}
}
#endregion
#region 当班计划——“刷新”网络计划、本机台计划
/// <summary>
/// 当班计划——刷新网络计划
/// </summary>
public class RefreshServerPlan : FeedingAction, IAction
{
private static bool IsFirstRun = true; //是否首次执行
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
if (IsFirstRun)
{
#region 事件订阅
//首次执行订阅存盘信号完成事件
FinishBatch.SaveFinishBatch.OnFinishBatchSave += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//接收到客户端刷新计划的Socket指令时刷新计划
StartReciveProcess.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//暂停计划时,刷新网络计划
PausePlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//执行计划完毕,刷新网络计划
ExecutePlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//删除计划后,要刷新网络计划
DeletePlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//修改计划后,要刷新网络计划
ModifyPlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//修改次数后,要刷新网络计划
ModifyPlanNum.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
#endregion
IsFirstRun = false;
}
DbMCControl shiftControl = null;
DbMCControl planDateControl = null;
DbMCControl serverGridControl = null;
#region 根据网络库连接状况自动切换版本
//判断是否由于断网导致系统自动切换的单机版
if (base.NetType == BaseAction.NetTypes.Local && base.OriginalNetType == BaseAction.NetTypes.Net)
{
if (PlanCommon.IsCanConnectServer())
{
base.SetGlobalNetType(Mesnac.Action.Base.BaseAction.NetTypes.Net);
ICSharpCode.Core.LoggingService.Warn("网络库连接成功,由临时单机转为网络版运行!");
}
}
else if (base.NetType == BaseAction.NetTypes.Net) //如果是网络版,则判断网络库是否能够连接上,连接不上,自动转为临时单机
{
if (!PlanCommon.IsCanConnectServer())
{
base.SetGlobalNetType(Mesnac.Action.Base.BaseAction.NetTypes.Local);
ICSharpCode.Core.LoggingService.Warn("刷新网络计划失败:连接网络库失败,转为单机版运行!");
}
}
#endregion
shiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
serverGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Server, "PptPlan").FirstOrDefault();
if (base.NetType == NetTypes.Net)
{
base.LogDebug("当班计划——“刷新”网络计划");
if (shiftControl == null)
{
base.LogError("缺少班次控件...班次控件为组合框数据源要绑定PptShift");
return;
}
if (planDateControl == null)
{
base.LogError("缺少日期控件...日期控件为日历数据源要绑定down_date");
return;
}
if (serverGridControl == null)
{
base.LogError("缺少网络计划网格控件...");
return;
}
int shiftID = 0;
int.TryParse(shiftControl.BaseControl.MCValue.ToString(), out shiftID);
string equipCode = base.CurrEquipCode; //当前机台
string selectedDate = String.Format("{0:yyyyMMdd}", Convert.ToDateTime(planDateControl.BaseControl.MCValue)); //日期
try
{
DbHelper dbHelper = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (dbHelper == null)
{
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//查询符合条件的网络计划(查询条件PlanState>=2、指定机台、指定日期、指定班次)
string sqlstr = " select Plan_ID PlanID,Plan_Num PlanNum,CONVERT(VARCHAR(100),Real_Num) AS RealNum,Mater_code RecipeMaterialCode,Mater_Name RecipeMaterialName,Plan_State PlanState,Edt_code RecipeVersionID from [Ppt_Plan] where Plan_State>=2 and Equip_code=@RecipeEquipCode and CONVERT(varchar,cast(Plan_Date as datetime),112)=@PlanDate and Shift_ID=@ShiftID";
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", selectedDate);
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.CommandText = sqlstr;
DataTable table = dbHelper.ToDataTable();
lock (String.Empty)
{
if (serverGridControl != null && serverGridControl.BaseControl != null)
{
serverGridControl.BaseControl.BindDataSource = null;
serverGridControl.BaseControl.BindDataSource = table;
#region 根据计划状态处理背景色
DataGridView serverGrid = serverGridControl.BaseControl as DataGridView;
if (serverGrid != null)
{
if (serverGrid.Parent != null && serverGrid.Parent is Panel)
{
serverGrid.Parent.Visible = true;
}
}
else
{
serverGridControl.BaseControl.MCVisible = true;
}
base.SetNetControlVisible();
PlanCommon.SetBackColor(serverGrid);
#endregion
}
else
{
ICSharpCode.Core.LoggingService.Warn("刷新网络计划失败网络计划控件为Null...");
}
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("刷新网络计划失败:" + ex.Message);
}
}
else
{
//如果是单机版,则隐藏网络计划网格控件和“刷新”、“选择接收”、“全部接收”按钮
if (serverGridControl != null)
{
DataGridView serverGrid = serverGridControl.BaseControl as DataGridView;
if (serverGrid != null)
{
if (serverGrid.Parent != null && serverGrid.Parent is Panel)
{
serverGrid.Parent.Visible = false;
}
}
else
{
serverGridControl.BaseControl.MCVisible = false;
}
base.SetNetControlVisible();
}
}
}
}
/// <summary>
/// 当班计划——刷新本机台计划
/// </summary>
public class RefreshClientPlan : FeedingAction, IAction
{
/// <summary>
/// 刷新计划事件
/// </summary>
public static event EventHandler OnRefreshPlan;
private static bool IsFirstRun = true; //是否首次执行
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
if (IsFirstRun)
{
#region 事件订阅
//首次执行订阅存盘信号完成事件
FinishBatch.SaveFinishBatch.OnFinishBatchSave += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//接收到客户端刷新计划的Socket指令时刷新计划
StartReciveProcess.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//暂停计划时,刷新本地计划
PausePlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//执行计划完毕,刷新本地计划
ExecutePlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//删除计划后,要刷新本地计划
DeletePlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//修改计划后,要刷新本地计划
ModifyPlan.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//修改次数数后,要刷新本地计划
ModifyPlanNum.OnRefreshPlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//移动计划后,要刷新本地计划
MoveUpPlan.OnMovePlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
//接收计划后,要刷新本地计划
ReceiveSelectPlan.OnReceivePlan += delegate(object sender, EventArgs e)
{
this.Run(runtime);
};
#endregion
IsFirstRun = false;
}
#region 业务实现
base.LogDebug("当班计划——“刷新”本机台计划");
DbMCControl shiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ppt_plan").FirstOrDefault();
if (shiftControl == null)
{
base.LogError("缺少班次控件...班次控件为组合框数据源要绑定PptShift");
return;
}
if (planDateControl == null)
{
base.LogError("缺少日期控件...日期控件为日历数据源要绑定down_date");
return;
}
if (clientGridControl == null)
{
base.LogError("缺少本机台计划网格控件...");
return;
}
int shiftID = 0;
int.TryParse(shiftControl.BaseControl.MCValue.ToString(), out shiftID);
string equipCode = base.CurrEquipCode; //当前机台
string selectedDate = String.Format("{0:yyyyMMdd}", Convert.ToDateTime(planDateControl.BaseControl.MCValue)); //日期
DbHelper dbHelper = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//查询符合条件的本地计划(查询条件:机台、日期、班次)
//string sqlstr = "select RecipeMaterialName,RecipeMaterialCode,PlanNum,CONVERT(VARCHAR(100),RealNum) AS RealNum,PlanID,PlanState from [PptPlan] where RecipeEquipCode=@RecipeEquipCode and CONVERT(varchar,PlanDate,112)=@PlanDate and ShiftID=@ShiftID order by ActionOrder";
string sqlstr = "select recipe_code as RecipeMaterialName,mater_code as RecipeMaterialCode,plan_num as PlanNum,CONVERT(VARCHAR(100),real_num) AS RealNum,plan_id as PlanID,plan_state as PlanState,edt_code as RecipeVersionID from [ppt_plan] where equip_code=@RecipeEquipCode and CONVERT(varchar,down_date,112)=@PlanDate and shift=@ShiftID order by ActionOrder";
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", selectedDate);
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.CommandText = sqlstr;
DataTable table = dbHelper.ToDataTable();
lock (String.Empty)
{
if (clientGridControl != null && clientGridControl.BaseControl != null)
{
clientGridControl.BaseControl.BindDataSource = null;
clientGridControl.BaseControl.BindDataSource = table;
#region 根据计划状态处理背景色
DataGridView clientGrid = clientGridControl.BaseControl as DataGridView;
PlanCommon.SetBackColor(clientGrid);
#endregion
}
else
{
ICSharpCode.Core.LoggingService.Warn("刷新本地计划失败本地计划控件为Null...");
}
}
#endregion
#region 触发客户端计划刷新事件
if (RefreshClientPlan.OnRefreshPlan != null)
{
RefreshClientPlan.OnRefreshPlan(runtime, System.EventArgs.Empty);
}
#endregion
}
}
/// <summary>
/// 缓存查询条件-计划生产日期、班次
/// </summary>
public class CacheCondition : FeedingAction, IAction
{
public void Run(RuntimeParameter runtime)
{
if (PlanCommon.IsInit == false || PlanCommon.IsShift == true) return; //如果未初始化则中断当前业务
base.RunIni(runtime);
base.LogDebug("缓存查询条件-计划生产日期、班次");
DbMCControl shiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl classControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptClass").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
if (shiftControl == null)
{
base.LogError("缺少班次控件...班次控件为组合框数据源要绑定PptShift");
return;
}
if (planDateControl == null)
{
base.LogError("缺少日期控件...日期控件为日历数据源要绑定down_date");
return;
}
PlanLog planLog = PlanCommon.PlanLog;
if (planLog == null)
{
planLog = new PlanLog();
}
DateTime lastSelectDate = DateTime.Now;
int lastSelectShiftID = 0;
int lastClassID = 0;
DateTime.TryParse(planDateControl.BaseControl.MCValue.ToString(), out lastSelectDate);
planLog.LastSelectDate = lastSelectDate;
int.TryParse(shiftControl.BaseControl.MCValue.ToString(), out lastSelectShiftID);
if (classControl == null)
{
if (base.NetType == NetTypes.Net)
{
lastClassID = PlanCommon.GetClassID(Basic.DataSourceFactory.MCDbType.Server, 1, lastSelectDate, lastSelectShiftID);
}
}
else
{
int.TryParse(classControl.BaseControl.MCValue.ToString(), out lastClassID);
}
planLog.LastSelectShiftID = lastSelectShiftID;
planLog.LastPlanID = planLog.LastPlanID;
planLog.LastClassID = lastClassID;
PlanCommon.PlanLog = planLog;
}
}
#region 执行计划日期校验
public class PlanDateVerify : FeedingAction, IAction
{
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[PptPlan].[PlanDate]").FirstOrDefault();
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
if (planDateControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少日期选择控件...");
return;
}
if (pptShiftControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少班次组合框控件...");
return;
}
DateTime plandate = DateTime.Now;
int shiftitem = 0;
string Msg = string.Empty;
PlanCommon.PlanDateVerify(out plandate, out shiftitem, planDateControl.BaseControl.MCValue.ToString(), Convert.ToInt32(pptShiftControl.BaseControl.MCValue.ToString()), out Msg);
if (Msg != string.Empty)
{
MessageBox.Show(Msg);
planDateControl.BaseControl.MCValue = plandate;
pptShiftControl.BaseControl.MCValue = shiftitem.ToString();
}
}
}
#endregion
#endregion
#region 当班计划——“选择接收” 网络计划
/// <summary>
/// 当班计划——“选择接收”网络计划
/// </summary>
public class ReceiveSelectPlan : FeedingAction, IAction
{
/// <summary>
/// 接受计划事件
/// </summary>
public static event EventHandler OnReceivePlan;
public virtual void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
//单机版,隐藏选择接收按钮
if (runtime.Sender != null && base.NetType == NetTypes.Local)
{
(runtime.Sender as IBaseControl).MCVisible = false;
return;
}
this.ReceivePlan(runtime, false);
}
#region 接收网络计划业务处理
/// <summary>
/// 接收网络计划业务处理
/// </summary>
/// <param name="sender"></param>
/// <param name="design"></param>
/// <param name="runtime"></param>
/// <param name="isAll">是否接收所有网络计划</param>
public void ReceivePlan(RuntimeParameter runtime, bool isAll)
{
List<string> errorList = new List<string>();
base.LogDebug("当班计划——“选择接收”网络计划");
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
DbMCControl serverGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Server, "PptPlan").FirstOrDefault(); //获取网络计划网格控件
DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ppt_plan").FirstOrDefault(); //获取本机台计划网格控件
#region 控件存在验证
if (planDateControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少日期选择控件...");
return;
}
if (pptShiftControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少班次组合框控件...");
return;
}
if (serverGridControl == null)
{
base.LogError("{当班计划——“选择接收”网络计划}缺少网络计划网格控件...");
return;
}
if (clientGridControl == null)
{
base.LogError("{当班计划——“选择接收”网络计划}缺少本机台计划网格控件...");
return;
}
#endregion
#region 获取选中的网络计划ID
string planIds = String.Empty;
DataGridView serverGridView = serverGridControl.BaseControl as DataGridView;
if (serverGridView == null)
{
base.LogError("网络计划网格控件类型错误控件无法转换为DataGridView...");
return;
}
if (isAll)
{
//如果是接收所有计划
foreach (DataGridViewRow row in serverGridView.Rows)
{
string planId = String.Empty;
if (!(row.Cells["PlanID"].Value == null || System.DBNull.Value == row.Cells["PlanID"].Value))
{
planId = row.Cells["PlanID"].Value.ToString();
}
if (!String.IsNullOrEmpty(planId))
{
planIds = String.IsNullOrEmpty(planIds) ? "'" + planId + "'" : planIds + ",'" + planId + "'";
}
}
}
else
{
//如果是接收选中的计划
if (serverGridView.SelectedRows.Count > 0)
{
foreach (DataGridViewRow row in serverGridView.SelectedRows)
{
string planId = String.Empty;
if (!(row.Cells["PlanID"].Value == null || System.DBNull.Value == row.Cells["PlanID"].Value))
{
planId = row.Cells["PlanID"].Value.ToString();
}
if (!String.IsNullOrEmpty(planId))
{
planIds = String.IsNullOrEmpty(planIds) ? "'" + planId + "'" : planIds + ",'" + planId + "'";
}
}
}
}
#endregion
if (!String.IsNullOrEmpty(planIds))
{
bool successFlag = false; //是否有计划成功接收的标志,如果有成功接收的计划则发送网络消息
#region 查询符合条件的网络计划
DbHelper dbHelperServer = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (dbHelperServer == null)
{
return;
}
dbHelperServer.ClearParameter();
dbHelperServer.CommandType = CommandType.Text;
string sqlStr1 = @"select Plan_id PlanID, Plan_date PlanDate, Equip_code RecipeEquipCode, Mater_code RecipeMaterialCode, Mater_Name RecipeMaterialName, Edt_code RecipeVersionID, User_Edtcode RecipeUserVersion
, Shift_id ShiftID, Shift_class ClassID, Serial_num SerialNum, Pri_level PriLevel, recipe_code RecipeName, Recipe_Type RecipeType, Run_Type RunType, Print_Type PrintType
, Plan_Source PlanSource, Total_weight TotalWeight, Plan_num PlanNum, Plan_weight PlanWeight, Real_num RealNum, Real_weight RealWeight, Urgency_state UrgencyState
, Plan_state PlanState, Oper_datetime OperDatetime, Plan_EndTime PlanEndTime, Real_StartTime RealStartTime, Real_Endtime RealEndtime, Oper_code OperCode, revise_sgn ReviseSgn
, XLcreate SmallCreate, MonthSerial AvgTime, Memo Remark
from ppt_plan where Plan_ID in({0})";
sqlStr1 = String.Format(sqlStr1, planIds);
dbHelperServer.CommandText = sqlStr1;
DataTable fromTable = dbHelperServer.ToDataTable();
#endregion
#region 向本地数据库追加选中的网络计划
//追加计划时把本地计划的PlanState
DbHelper dbHelperClient = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelperClient == null)
{
return;
}
foreach (DataRow row in fromTable.Rows)
{
#region 检测网络计划是否允许本地接收
//检测网络计划是否允许本地接收只有PlanState的值为2、3并且RealNum 小于 PlanNum的计划才允许本机接收
//PlanState 4-正在生产 5-已完成 都不允许下载
int planState = row["PlanState"] == null || row["PlanState"] == System.DBNull.Value ? 0 : Convert.ToInt32(row["PlanState"]); //获取计划状态
int planNum = row["PlanNum"] == null || row["PlanNum"] == System.DBNull.Value ? 0 : Convert.ToInt32(row["PlanNum"]); //设定值
int realNum = row["RealNum"] == null || row["RealNum"] == System.DBNull.Value ? 0 : Convert.ToInt32(row["RealNum"]); //完成值
if (realNum >= planNum)
{
errorList.Add(String.Format(Language(101), row["PlanID"]));
continue;
}
if (planState == 4)
{
errorList.Add(String.Format(Language(102), row["PlanID"]));
continue;
}
if (planState == 5)
{
errorList.Add(String.Format(Language(101), row["PlanID"]));
continue;
}
#endregion
#region 接收计划
bool result = PlanCommon.RecivePlan(dbHelperServer, dbHelperClient, row, base.CurrEquipCode, Convert.ToDateTime(row["PlanDate"]), Convert.ToInt32(row["ShiftID"]));
if (result == true)
{
successFlag = true;
}
#endregion
}
if (successFlag)
{
//发送网络消息
PlanCommon.SendNetPlanMsg(base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(pptShiftControl.BaseControl.MCValue), PlanCommon.PlanLog.LastClassID, base.GetConfigValue("LastUserID", "0"));
}
#endregion
#region 在本机台网格控件中显示本机台计划
//new RefreshClientPlan().Run(runtime);
if (ReceiveSelectPlan.OnReceivePlan != null)
{
ReceiveSelectPlan.OnReceivePlan(runtime, System.EventArgs.Empty);
}
#endregion
#region 下载该计划的配方数据
if (base.NetType == NetTypes.Net)
{
string[] planIdArr = planIds.Split(new char[]{','});
foreach(string pid in planIdArr)
{
new BasicInfo.NetRecipe().GetRecipeByPlanID(pid.Replace("'", String.Empty));
}
}
#endregion
}
//显示错误提示
PlanCommon.ShowErrorList(errorList);
}
#endregion
}
#endregion
#region 当班计划——“全部接收”网络计划
/// <summary>
/// 当班计划——“全部接收”网络计划
/// </summary>
public class ReceiveAllPlan : ReceiveSelectPlan
{
public override void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
//单机版,隐藏全部接收按钮
if (runtime.Sender != null && base.NetType == NetTypes.Local)
{
(runtime.Sender as IBaseControl).MCVisible = false;
return;
}
base.ReceivePlan(runtime, true);
}
}
#endregion
#region 当班计划——“修改”本机台计划 只修改份数-计划数
/// <summary>
/// 当班计划——“修改”本机台计划
/// </summary>
public class ModifyPlan : FeedingAction, IAction
{
#region 事件定义
/// <summary>
/// 刷新计划事件
/// </summary>
public static event EventHandler OnRefreshPlan;
#endregion
private DbMCControl _clientGridControl = null;
private RuntimeParameter _runtime;
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
this._runtime = runtime;
DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ppt_plan").FirstOrDefault(); //获取本机台计划网格控件
if (clientGridControl == null)
{
base.LogError("{当班计划——“修改”本机台计划}缺少本机台计划网格控件...");
return;
}
this._clientGridControl = clientGridControl;
this.DoWork();
}
/// <summary>
/// 修改计划
/// </summary>
protected void DoWork()
{
List<string> errorList = null;
this._runtime.BaseControl.MCEnabled = false;
DataGridView clientGridView = this._clientGridControl.BaseControl as DataGridView;
if (clientGridView == null)
{
base.LogError("{当班计划——“修改”本机台计划}网格控件类型错误...");
return;
}
if (clientGridView.SelectedRows.Count == 1)
{
DataGridViewRow row1 = clientGridView.SelectedRows[0];
string planID = row1.Cells["PlanID"].Value as string; //获取要修改的计划号
DataRow row = PlanCommon.GetPlanData(Mesnac.Basic.DataSourceFactory.MCDbType.Local, planID);
PlanStates planState = (PlanStates)Convert.ToInt32(row["PlanState"]);
if (planState == PlanStates.Completed)
{
ShowMsg(String.Format(Language(128), planID), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (planState == PlanStates.Producting)
{
ShowMsg(String.Format(Language(129), planID), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (planState == PlanStates.Received)
{
int planNum = Convert.ToInt32(row["PlanNum"]);
//string recipeTypeName = String.Empty;
//if (base.NetType == NetTypes.Net)
//{
// recipeTypeName = PlanCommon.GetSysCodeItemName(Mesnac.Basic.DataSourceFactory.MCDbType.Server, "PmtType", Convert.ToInt32(row["RecipeType"]));
//}
//else
//{
// recipeTypeName = PlanCommon.GetSysCodeItemName(Mesnac.Basic.DataSourceFactory.MCDbType.local, "PmtType", Convert.ToInt32(row["RecipeType"]));
//}
//string recipeMaterialName = String.Format("{0}[{1}]{2}", row["RecipeMaterialName"], recipeTypeName, row["RecipeVersionID"]);
string recipeVersionID = String.Empty;
recipeVersionID = row["RecipeVersionID"] == null || row["RecipeVersionID"] == System.DBNull.Value ? String.Empty : row["RecipeVersionID"].ToString();
SimplePmtRecipe recipe = PlanCommon.GetLocalRecipeMaterial(base.CurrEquipCode, row["RecipeMaterialCode"] as string, recipeVersionID);
FrmPlan frmPlan = new FrmPlan(1, planNum, recipe);
frmPlan.ShowDialog(this._runtime.BaseControl.MCRoot as Control);
if (frmPlan.DialogResult == DialogResult.OK)
{
planNum = frmPlan.PlanNum;
//更新份数
PlanCommon.UpdatePlanNum(planID, planNum);
if (base.NetType == NetTypes.Net)
{
PlanCommon.UpdatePlanNum(Basic.DataSourceFactory.MCDbType.Server, planID, planNum);
}
clientGridView.ClearSelection(); //清除原有选择项
foreach (DataGridViewRow rowView in clientGridView.Rows)
{
if (planID == rowView.Cells["PlanID"].Value as string)
{
rowView.Selected = true;
break;
}
}
#region 广播当班计划信息
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
PlanCommon.SendNetPlanMsg(base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(pptShiftControl.BaseControl.MCValue), PlanCommon.PlanLog.LastClassID, base.GetConfigValue("LastUserID", "0"));
#endregion
}
frmPlan.Dispose();
//触发刷新计划事件
if (ModifyPlan.OnRefreshPlan != null)
{
ModifyPlan.OnRefreshPlan(null, System.EventArgs.Empty);
}
}
}
else
{
ShowMsg(Language(127), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//显示错误
PlanCommon.ShowErrorList(errorList);
this._runtime.BaseControl.MCEnabled = true;
}
}
#endregion
#region 当班计划——“添加”本机台计划
/// <summary>
/// 当班计划——“添加”本机台计划
/// </summary>
public class AddPlan : FeedingAction, IAction
{
private IBaseControl _sender = null;
private DbMCControl _planDateControl = null; //计划日期
private DbMCControl _pptShiftControl = null; //班次
private DbMCControl _pptClassControl = null; //班组
private DbMCControl _serverGridControl = null; //网络计划控件
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
this._sender = runtime.BaseControl;
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl pptClassControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptClass").FirstOrDefault();
DbMCControl serverGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Server, "PptPlan").FirstOrDefault();
if (planDateControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少日期选择控件...");
return;
}
if (pptShiftControl == null)
{
base.LogError("{当班计划-窗体加载} 缺少班次组合框控件...");
return;
}
if (serverGridControl == null)
{
base.LogError("缺少网络计划网格控件...");
return;
}
this._planDateControl = planDateControl;
this._pptShiftControl = pptShiftControl;
this._pptClassControl = pptClassControl;
this._serverGridControl = serverGridControl;
this.DoNetWork(base.NetType);
}
/// <summary>
/// 网络版添加计划
/// </summary>
protected void DoNetWork(NetTypes netType)
{
List<string> errorList = null;
this._sender.MCEnabled = false;
try
{
if (base.NetType == NetTypes.Net)
{
bool isConnect = PlanCommon.IsCanConnectServer();
if (!isConnect)
{
//网络不通
base.SetGlobalNetType(NetTypes.Local); //设置单机版运行
base.SetNetControlVisible();
//如果是单机版,则隐藏网络计划网格控件和“刷新”、“选择接收”、“全部接收”按钮
if (this._serverGridControl != null)
{
DataGridView serviceGrid = this._serverGridControl.BaseControl as DataGridView;
if (serviceGrid != null)
{
if (serviceGrid.Parent != null && serviceGrid.Parent is Panel)
{
serviceGrid.Parent.Visible = false;
}
}
else
{
this._serverGridControl.BaseControl.MCVisible = false;
}
}
ICSharpCode.Core.LoggingService.Warn("刷新网络计划失败:连接网络库失败,转为单机方式运行...");
Mesnac.Basic.MessageBoxTimeOut.Show("连接网络库失败,转为单机方式运行...网络连通后,请重新关闭软件再打开!", Language(1), 3000);
//ShowMsg(Language(122), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
//判断是单机版还是网络版
if (base.NetType == NetTypes.Net)
{
//网络版
//网络通,现在网络数据库计划表中新增计划,然后下载到本地
FrmPlan frmPlan = new FrmPlan(0);
frmPlan.ShowDialog(this._sender.MCRoot as Control);
if (frmPlan.DialogResult == DialogResult.OK)
{
SimplePmtRecipe recipe = frmPlan.Recipe;
int planNum = frmPlan.PlanNum;
DateTime planDate = DateTime.Now;
DateTime.TryParse(this._planDateControl.BaseControl.MCValue.ToString(), out planDate);
int shiftID = 0;
int.TryParse(this._pptShiftControl.BaseControl.MCValue.ToString(), out shiftID);
int classID = 0;
if (this._pptClassControl != null)
{
int.TryParse(this._pptClassControl.BaseControl.MCValue.ToString(), out classID);
}
//在网络数据库中添加计划
string planID = PlanCommon.AddPlan(Mesnac.Basic.DataSourceFactory.MCDbType.Server, base.CurrEquipCode, planDate, shiftID, classID, recipe.ObjID, recipe.RecipeVersionID, planNum, out errorList);
//接收新添加的计划
PlanCommon.RecivePlan(planID, base.CurrEquipCode, planDate, shiftID);
//下载配方数据
#region 下载该计划的配方数据
new BasicInfo.NetRecipe().GetRecipeByPlanID(planID);
#endregion
#region 广播当班计划信息
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
PlanCommon.SendNetPlanMsg(base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(pptShiftControl.BaseControl.MCValue), PlanCommon.PlanLog.LastClassID, base.GetConfigValue("LastUserID", "0"));
#endregion
}
frmPlan.Dispose();
}
else
{
//单机版
FrmPlan frmPlan = new FrmPlan(0);
frmPlan.ShowDialog(this._sender.MCRoot as Control);
if (frmPlan.DialogResult == DialogResult.OK)
{
SimplePmtRecipe recipe = frmPlan.Recipe;
int planNum = frmPlan.PlanNum;
DateTime planDate = DateTime.Now;
DateTime.TryParse(this._planDateControl.BaseControl.MCValue.ToString(), out planDate);
int shiftID = 0;
int.TryParse(this._pptShiftControl.BaseControl.MCValue.ToString(), out shiftID);
int classID = 0;
if (this._pptClassControl != null)
{
int.TryParse(this._pptClassControl.BaseControl.MCValue.ToString(), out classID);
}
//在本地数据库中添加计划
string planID = PlanCommon.AddPlan(Mesnac.Basic.DataSourceFactory.MCDbType.Local, base.CurrEquipCode, planDate, shiftID, classID, recipe.ObjID, recipe.RecipeVersionID, planNum, out errorList);
}
frmPlan.Dispose();
}
}
catch (Exception ex)
{
base.LogError(ex.Message);
base.LogError(ex.StackTrace);
}
this._sender.MCEnabled = true;
//显示错误
PlanCommon.ShowErrorList(errorList);
}
}
#endregion
#region 当班计划——“删除”本机台计划
/// <summary>
/// 当班计划——“删除”本机台计划
/// </summary>
public class DeletePlan : FeedingAction, IAction
{
#region 事件定义
/// <summary>
/// 刷新计划事件
/// </summary>
public static event EventHandler OnRefreshPlan;
#endregion
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.LogDebug("当班计划——“删除”本机台计划");
DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ppt_plan").FirstOrDefault();
if (clientGridControl == null)
{
base.LogError("缺少本机台计划网格控件...");
return;
}
DataGridView clientGridView = clientGridControl.BaseControl as DataGridView;
if (clientGridView == null)
{
base.LogError("本机台计划网格控件类型错误控件无法转换为DataGridView...");
return;
}
if (clientGridView.SelectedRows.Count == 1)
{
string planID = clientGridView.SelectedRows[0].Cells["PlanID"].Value as string;
DialogResult result = MessageBox.Show(String.Format(Language(112), planID), Language(1), MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
PlanStates planState = PlanCommon.GetPlanState(planID);
if (planState == PlanStates.Completed)
{
ShowMsg(String.Format(Language(113), planID), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (planState == PlanStates.Producting)
{
ShowMsg(String.Format(Language(114), planID), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
//删除本地库计划
PlanCommon.DeletePlan(Basic.DataSourceFactory.MCDbType.Local, planID);
if (base.NetType == NetTypes.Net)
{
if (planID.Trim().Length == 12 && planID.Substring(9, 1) == "L") //如果是本地添加的计划,则把网络库中对应的计划一起删除
{
PlanCommon.DeletePlan(Basic.DataSourceFactory.MCDbType.Server, planID);
}
}
#region 广播当班计划信息
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
PlanCommon.SendNetPlanMsg(base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(pptShiftControl.BaseControl.MCValue), PlanCommon.PlanLog.LastClassID, base.GetConfigValue("LastUserID", "0"));
#endregion
//触发刷新计划事件
if (DeletePlan.OnRefreshPlan != null)
{
DeletePlan.OnRefreshPlan(null, System.EventArgs.Empty);
}
}
}
else
{
ShowMsg(Language(111), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
#endregion
#region 当班计划——“上移”本机台计划
/// <summary>
/// 当班计划——“上移”本机台计划
/// </summary>
public class MoveUpPlan : FeedingAction, IAction
{
/// <summary>
/// 移动计划事件
/// </summary>
public static event EventHandler OnMovePlan;
public virtual void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
MovePlan(runtime, Language(103), "up");
}
public void MovePlan(RuntimeParameter runtime, string msg, string updown)
{
List<string> errorList = new List<string>();
base.LogDebug("当班计划——“选择接收”网络计划");
DbMCControl shiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[ppt_plan].[down_date]").FirstOrDefault();
DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "ppt_plan").FirstOrDefault(); //获取本机台计划网格控件
#region 控件存在验证
if (shiftControl == null)
{
base.LogError("缺少班次控件...班次控件为组合框数据源要绑定PptShift");
return;
}
if (planDateControl == null)
{
base.LogError("缺少日期控件...日期控件为日历数据源要绑定down_date");
return;
}
if (clientGridControl == null)
{
base.LogError("{当班计划——“选择接收”网络计划}缺少本机台计划网格控件...");
return;
}
#endregion
string planIds = String.Empty;
DataGridView clientGridView = clientGridControl.BaseControl as DataGridView;
if (clientGridView == null)
{
base.LogError("本机台计划网格控件类型错误控件无法转换为DataGridView...");
return;
}
if (clientGridView.SelectedRows.Count == 1)
{
string planId = clientGridView.SelectedRows[0].Cells["PlanID"].Value.ToString();
PlanStates planState = PlanCommon.GetPlanState(planId);
//获取当前计划的前一个或后一个计划
string tempPlanId = String.Empty;
if (updown.ToLower() == "up")
{
//上移,判断当前计划状态
if (planState == PlanStates.Completed)
{
ShowMsg(String.Format(Language(105), planId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (planState == PlanStates.Producting)
{
ShowMsg(String.Format(Language(106), planId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
tempPlanId = PlanCommon.GetPrevPlanID(planId, base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(shiftControl.BaseControl.MCValue));
//判断上一计划的状态
PlanStates tempPlanState = PlanCommon.GetPlanState(tempPlanId);
if (tempPlanState == PlanStates.Completed)
{
ShowMsg(String.Format(Language(109), tempPlanId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (tempPlanState == PlanStates.Producting)
{
ShowMsg(String.Format(Language(110), tempPlanId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
else
{
//下移,判断当前计划状态
if (planState == PlanStates.Completed)
{
ShowMsg(String.Format(Language(107), planId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (planState == PlanStates.Producting)
{
ShowMsg(String.Format(Language(108), planId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
tempPlanId = PlanCommon.GetNextPlanID(planId, base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(shiftControl.BaseControl.MCValue));
}
if (String.IsNullOrEmpty(tempPlanId))
{
ShowMsg(String.Format(msg, planId), Language(1), MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
PlanCommon.SwapActionOrder(planId, tempPlanId); //交换2个计划的ActionOrder
#region 在本机台网格控件中显示本机台计划
//new RefreshClientPlan().Run(runtime);
if (MoveUpPlan.OnMovePlan != null)
{
MoveUpPlan.OnMovePlan(runtime, System.EventArgs.Empty);
}
#endregion
clientGridView.ClearSelection(); //清除原有选择项
foreach (DataGridViewRow row in clientGridView.Rows)
{
if (planId == row.Cells["PlanID"].Value as string)
{
row.Selected = true;
break;
}
}
#region 广播当班计划信息
DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "PptShift").FirstOrDefault();
PlanCommon.SendNetPlanMsg(base.CurrEquipCode, Convert.ToDateTime(planDateControl.BaseControl.MCValue), Convert.ToInt32(pptShiftControl.BaseControl.MCValue), PlanCommon.PlanLog.LastClassID, base.GetConfigValue("LastUserID", "0"));
#endregion
}
}
}
#endregion
#region 当班计划——“下移”本机台计划
/// <summary>
/// 当班计划——“下移”本机台计划
/// </summary>
public class MoveDownPlan : MoveUpPlan
{
public override void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.MovePlan(runtime, Language(104), "down");
}
}
#endregion
#region 当班计划——“暂存”本机台计划
/// <summary>
/// 当班计划——“暂存”本机台计划
/// </summary>
public class TempStorePlan : FeedingAction, IAction
{
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
}
}
#endregion
}