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.

170 lines
8.3 KiB
C#

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
}
}