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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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