using System; using System.Collections.Generic; using System.Linq; using System.Text; using Mesnac.Action.Base; using Mesnac.Codd.Session; using Mesnac.Basic; using System.Data; using System.Windows.Forms; namespace Mesnac.Action.Feeding.ProducingPlan { public class UserGoShift : DatabaseAction, IAction { #region IAction 成员 public void Run(RuntimeParameter runtime) { DbHelper dbHelper = this.NewDbHelper(DataSourceFactory.MCDbType.Server); if (dbHelper == null) { base.LogError("获取本地数据连接失败..."); return; } string lastUserCode = base.GetConfigValue("LastUserID", "0"); StringBuilder sb = new StringBuilder(); sb.Append("Select DateDiff(Hour,Convert(DateTime,IsNull(FShiftDate,Convert(Varchar(19),GetDate(),120))),GetDate()) HCount "); sb.Append("From Ppt_WorkerShiftRecord Where HrCode = @HrCode And FSIGN = 1 "); dbHelper.CommandType = CommandType.Text; dbHelper.CommandText = sb.ToString(); dbHelper.AddParameter("@HrCode", lastUserCode); DataTable dt = dbHelper.ToDataTable(); if (dt.Rows.Count > 0 && Convert.ToInt32(dt.Rows[0]["HCount"]) < 10) { if (Convert.ToInt32(dt.Rows[0]["HCount"]) < 10) { if (MessageBox.Show("上次上班到本次上班间隔时间不到10小时,确认吗?", Language(1), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; } } if (MessageBox.Show("上班成功后本机台的车次会重新编码,确定吗?", Language(1), MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return; ////确认无误更换用户操作 //SpeedButton1Click(Nil); HrcodeVerify(); if (string.IsNullOrEmpty(base.GetConfigValue("LastUserName", "0"))) { MessageBox.Show("主机手不能为空或者不存在!"); return; } try { lastUserCode = base.GetConfigValue("LastUserID", "0"); //删除本地UserSerialList表中数据 dbHelper = this.NewDbHelper(DataSourceFactory.MCDbType.Local); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; string sqlstr = "Delete From UserSerialList Where HrCode = @HrCode "; dbHelper.CommandText = sqlstr; dbHelper.AddParameter("@HrCode", lastUserCode); dbHelper.ExecuteNonQuery(); //网络表中插入上班记录(首先将上一个班的做下班处理,然后再插入一个上班信息) if (base.NetType == NetTypes.Net) { dbHelper = this.NewDbHelper(DataSourceFactory.MCDbType.Server); dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; StringBuilder serMsg = new StringBuilder(); serMsg.Append("Update Ppt_WorkerShiftRecord Set FSIGN = 2,MemNote = '已下班' Where FSIGN = 1 And HrCode = @HrCode And EquipCode = @EquipCode "); serMsg.Append("Insert Into Ppt_WorkerShiftRecord (HRCode,HrName,ZJSID,EquipCode,FShiftDate,MemNote,FSIGN) Values(@HRCode,@HrName,@HRCode,@EquipCode,Convert(Varchar(19),GetDate(),120),'上班',1) "); dbHelper.CommandText = serMsg.ToString(); dbHelper.AddParameter("@HrCode", lastUserCode); dbHelper.AddParameter("@HrName", base.GetConfigValue("LastUserName", "0")); dbHelper.AddParameter("@EquipCode", base.GetConfigValue("EquipCode", "0")); dbHelper.ExecuteNonQuery(); } //本地上班信息更新 dbHelper = this.NewDbHelper(DataSourceFactory.MCDbType.Local); if (dbHelper == null) { base.LogError("获取本地数据连接失败..."); return; } dbHelper.ClearParameter(); dbHelper.CommandType = CommandType.Text; StringBuilder colMsg = new StringBuilder(); colMsg.Append("Update Ppt_WorkerShiftRecord Set FSIGN = 2,MemNote = '已下班' Where FSIGN = 1 And HrCode = @HrCode And EquipCode = @EquipCode "); colMsg.Append("Insert Into Ppt_WorkerShiftRecord (HRCode,HrName,ZJSID,EquipCode,FShiftDate,MemNote,FSIGN) Values(@HRCode,@HrName,@HRCode,@EquipCode,Convert(Varchar(19),GetDate(),120),'上班',1) "); dbHelper.CommandText = colMsg.ToString(); dbHelper.AddParameter("@HrCode", lastUserCode); dbHelper.AddParameter("@HrName", base.GetConfigValue("LastUserName", "0")); dbHelper.AddParameter("@EquipCode", base.GetConfigValue("EquipCode", "0")); dbHelper.ExecuteNonQuery(); MessageBox.Show("上班成功!"); } catch (Exception) { throw; } } #endregion #region hrcode验证 public void HrcodeVerify() { FeedingAction fa = new FeedingAction(); 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 pptUserIDControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.local, "UserID").FirstOrDefault(); Control pptUserIDControl = this.GetAllFormControlById("LastUserID").FirstOrDefault(); Control pptUserNameControl = this.GetAllFormControlById("LastUserName").FirstOrDefault(); //this.GetAllFormControlById( if (planDateControl == null) { base.LogError("{当班计划-窗体加载} 缺少日期选择控件..."); return; } if (pptShiftControl == null) { base.LogError("{当班计划-窗体加载} 缺少班次组合框控件..."); return; } if (pptUserIDControl == null) { base.LogError("{当班计划-窗体加载} 主机手..."); return; } string LastUserID = ((TextBox)pptUserIDControl).Text; string LastUsername = fa.GetHrName(LastUserID); ((Label)pptUserNameControl).Text = LastUsername; if (string.IsNullOrEmpty(LastUsername)) { MessageBox.Show("该主机手编码不存在!"); ((TextBox)pptUserIDControl).Text = ""; return; } RunSchema.Instance.UpdateNodeValueToRunSchema("LastUserID", LastUserID); RunSchema.Instance.UpdateNodeValueToRunSchema("LastUserName", LastUsername); //执行网络库存储 string equipcode = base.GetConfigValue("EquipCode", "0"); string plandate = planDateControl.BaseControl.MCValue.ToString(); string shiftid = pptShiftControl.BaseControl.MCValue.ToString(); DbHelper dbHelper = this.NewDbHelper(DataSourceFactory.MCDbType.Server); if (dbHelper == null) { base.LogError("获取本地数据连接失败..."); return; } dbHelper.CommandType = CommandType.StoredProcedure; dbHelper.CommandText = "proc_SFJHuanBan"; dbHelper.AddParameter("@plandate", plandate); dbHelper.AddParameter("@equipCode", equipcode); dbHelper.AddParameter("@shiftid", shiftid); dbHelper.AddParameter("@workerbar", LastUserID); dbHelper.ExecuteNonQuery(); Mesnac.Communication.TcpService.Instance.NetSendMsg(Global.ProtocalHeader.SendWorkerBarcode + ":" + LastUserID + "/"); //发送网络消息 } #endregion } }