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.BasicInfo;
namespace Mesnac.Action.Feeding
{
#region 生产计划通用功能封装
#region 生产计划业务封装类
///
/// 生产计划通用内容类
///
public class PlanCommon
{
#region 字段与属性
///
/// 生产计划日志文件路径
///
//public static readonly string PlanLogFile = Path.Combine(Application.StartupPath, "Log", "PlanLog.data");
private static bool _isInit = false;
private static PlanLog _planLog = null;
private static bool _isShift = false;
private static string _execShift;
///
/// 执行班次
///
public static string ExecShift
{
get { return PlanCommon._execShift; }
set { PlanCommon._execShift = value; }
}
private static string _execDate;
///
/// 执行日期
///
public static string ExecDate
{
get { return PlanCommon._execDate; }
set { PlanCommon._execDate = value; }
}
private static string _execClass;
///
/// 执行班次
///
public static string ExecClass
{
get { return _execClass; }
set { _execClass = value; }
}
///
/// 是否初始化
///
public static bool IsInit
{
get { return PlanCommon._isInit; }
set { PlanCommon._isInit = value; }
}
///
/// 是否交接班标记
///
public static bool IsShift
{
get { return PlanCommon._isShift; }
set { PlanCommon._isShift = value; }
}
///
/// 计划日志对象
///
public static PlanLog PlanLog
{
get
{
if (PlanCommon._planLog == null)
{
//if (File.Exists(PlanCommon.PlanLogFile))
//{
// PlanCommon._planLog = Global.Deserialize(PlanCommon.PlanLogFile);
//}
try
{
PlanLog _planLog = new PlanLog();
FeedingAction action = new FeedingAction();
string currentPlanDate = action.GetSysValue("CurrentPlanDate"); //获取当前计划日期
string currentPlanId = action.GetSysValue("CurrentPlanID"); //获取当前计划号
string currentShiftID = action.GetSysValue("CurrentShiftID"); //获取当前班次
string currentClassID = action.GetSysValue("CurrentClassID"); //获取当前班组
if (!String.IsNullOrEmpty(currentPlanDate))
{
_planLog.LastSelectDate = Convert.ToDateTime(currentPlanDate);
}
if (!String.IsNullOrEmpty(currentShiftID))
{
_planLog.LastSelectShiftID = Convert.ToInt32(currentShiftID);
}
if (!String.IsNullOrEmpty(currentClassID))
{
_planLog.LastClassID = Convert.ToInt32(currentClassID);
}
if (!String.IsNullOrEmpty(currentPlanId))
{
_planLog.LastPlanID = currentPlanId.Trim();
}
PlanCommon._planLog = _planLog;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("从SysKeyValue中获取计划日志失败:" + ex.Message, ex);
}
}
return PlanCommon._planLog;
}
set
{
PlanCommon._planLog = value;
try
{
FeedingAction action = new FeedingAction();
if (PlanCommon._planLog != null)
{
action.UpdateSysValue("CurrentPlanDate", String.Format("{0:yyyy-MM-dd}", PlanCommon._planLog.LastSelectDate));
action.UpdateSysValue("CurrentPlanID", PlanCommon._planLog.LastPlanID);
action.UpdateSysValue("CurrentShiftID", PlanCommon._planLog.LastSelectShiftID.ToString());
action.UpdateSysValue("CurrentClassID", PlanCommon._planLog.LastClassID.ToString());
}
else
{
action.UpdateSysValue("CurrentPlanDate", String.Format("{0:yyyy-MM-dd}", DateTime.Now));
action.UpdateSysValue("CurrentPlanID", String.Empty);
action.UpdateSysValue("CurrentShiftID", String.Empty);
action.UpdateSysValue("CurrentClassID", String.Empty);
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("保存计划日志到SysKeyValue表中失败:" + ex.Message, ex);
}
//if (PlanCommon._planLog == null)
//{
// if (File.Exists(PlanCommon.PlanLogFile))
// {
// File.Delete(PlanCommon.PlanLogFile);
// }
//}
//else
//{
// Global.Serialize(PlanCommon._planLog, PlanCommon.PlanLogFile); //序列化至文件
//}
}
}
#endregion
#region "按字符串位数补0"
///
/// 按字符串位数补0
///
/// 字符串
/// 字符长度
///
public static string FillZero(string CharTxt, int CharLen)
{
if (CharTxt.Length < CharLen)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < CharLen - CharTxt.Length; i++)
{
sb.Append("0");
}
sb.Append(CharTxt);
return sb.ToString();
}
else
{
return CharTxt;
}
}
#endregion
#region 检测是否能够连接网络数据库
///
/// 检测是否能够连接网络数据库
///
/// 能连接返回true,否则返回false
public static bool IsCanConnectServer()
{
bool isConnect = true;
try
{
lock (String.Empty)
{
FeedingAction action = new FeedingAction();
DbHelper serverHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (serverHelper == null)
{
isConnect = false;
}
else
{
string strSql = "select getDate()";
serverHelper.DbSession.Command.CommandTimeout = 1; //设置命令超时为2秒
serverHelper.CommandType = System.Data.CommandType.Text;
serverHelper.ClearParameter();
serverHelper.CommandText = strSql;
object result = serverHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
isConnect = true;
}
else
{
isConnect = false;
}
serverHelper.CloseConnection();
}
}
}
catch (Exception)
{
//ICSharpCode.Core.LoggingService.Error("连接网络数据库连接失败...");
isConnect = false;
}
return isConnect;
}
#endregion
#region 检测某个IP或域名是否可以Ping通
///
/// 检测某个IP或域名是否可以Ping通
///
/// IP或域名
/// 真为通,假为不同
public static bool PingIpOrDomainName(string strIpOrDName)
{
try
{
Ping objPingSender = new Ping();
PingOptions objPinOptions = new PingOptions();
objPinOptions.DontFragment = true;
string data = "";
byte[] buffer = Encoding.UTF8.GetBytes(data);
int intTimeout = 120;
PingReply objPinReply = objPingSender.Send(strIpOrDName, intTimeout, buffer, objPinOptions);
string strInfo = objPinReply.Status.ToString();
if (strInfo == "Success")
{
return true;
}
else
{
return false;
}
}
catch (Exception)
{
return false;
}
}
#endregion
#region 显示错误列表
///
/// 显示错误列表
///
///
public static void ShowErrorList(List errorList)
{
//显示错误提示
if (errorList != null && errorList.Count > 0)
{
DatabaseAction action = new DatabaseAction();
StringBuilder sb = new StringBuilder();
foreach (string msg in errorList)
{
sb.AppendLine(msg);
}
action.ShowMsg(sb.ToString(), LanguageService.Instance.Read(1), MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#region 合并消息列表
///
/// 合并消息列表
///
/// 要合并的消息列表
/// 返回合并的消息字符串
public static string CombineMsgList(List msgList)
{
if (msgList != null && msgList.Count > 0)
{
StringBuilder sb = new StringBuilder();
foreach (string msg in msgList)
{
sb.AppendLine(msg);
}
return sb.ToString();
}
return String.Empty;
}
#endregion
#region GenerateNextPlanID 通过网络数据库计划表PptPlan获取下一个可用的计划号 (6位日期、2位机台、1位班次、1位网络/本机、2位流水)
///
/// 通过网络数据库计划表PptPlan获取下一个可用的计划号 (6位日期、2位机台、1位班次、1位网络/本机、2位流水)
///
/// 生成计划号的数据库,网络、本地
/// 机台号
/// 计划生产日期
/// 班次
/// 返回生成的12位计划号
public static string GenerateNextPlanID(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
//if (!action.DbHelpers.TryGetValue(action.GetDataSourceName(Mesnac.Action.Base.DatabaseAction.DbType.Server), out dbHelper))
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return String.Empty;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select Max(PlanID) from PptPlan where RecipeEquipCode=@RecipeEquipCode and CONVERT(varchar,PlanDate,112)=@PlanDate and ShiftID=@ShiftID and substring(Plan_ID,10,1)='L'";
strSql = "select Max(Plan_ID) from Ppt_Plan where Equip_code=@RecipeEquipCode and left(Plan_ID,6)=right(@PlanDate,6) and Shift_ID=@ShiftID and substring(Plan_ID,10,1)='L'";
}
else
{
//strSql = "select Max(plan_id) from ppt_plan where equip_code=@RecipeEquipCode and CONVERT(varchar,down_date,112)=@PlanDate and shift=@ShiftID";
strSql = "select Max(plan_id) from ppt_plan where equip_code=@RecipeEquipCode and left(plan_id,6)=right(@PlanDate,6) and shift=@ShiftID";
}
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.CommandText = strSql;
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
string code = equipCode.Substring(3, 2); //获取机台后2位
return String.Format("{0:yyMMdd}{1}{2}L01", planDate, code, shiftID);
}
string lastTwo = result.ToString().Substring(10, 2); //截取最后2位
int newValue = Convert.ToInt32(lastTwo) + 1;
string nextPlanID = result.ToString().Substring(0, 10) + FillZero(newValue.ToString(), 2);
return nextPlanID;
}
#endregion
#region GetNewActionOrder 通过本地数据库计划表PptPlan的ActionOrder字段获取下一个可用的ActionOrder值
///
/// 通过本地数据库计划表PptPlan的ActionOrder字段获取下一个可用的ActionOrder值
///
/// 返回生成的ActionOrder值
public static int GetNewActionOrder(string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return 0;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//string strSql = "select MAX(ActionOrder) from PptPlan where RecipeEquipCode=@RecipeEquipCode and CONVERT(varchar,PlanDate,112)=@PlanDate and ShiftID=@ShiftID";
//string strSql = "select MAX(ActionOrder) from ppt_plan where equip_code=@RecipeEquipCode and CONVERT(varchar,down_date,112)=@PlanDate and shift=@ShiftID";
string strSql = "select MAX(ActionOrder) from ppt_plan where equip_code=@RecipeEquipCode and left(plan_id,6)=right(@PlanDate,6) and shift=@ShiftID";
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.CommandText = strSql;
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return 1;
}
else
{
return Convert.ToInt32(result) + 1;
}
}
#endregion
#region GetNextPlanID 获取当前计划的下一个计划号,用于计划排序
///
/// 获取当前计划的下一个计划号,用于计划排序
///
/// 当前计划号
/// 机台号
/// 计划生产日期
/// 班次
///
public static string GetNextPlanID(string currPlanID, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return String.Empty;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//string sqlStr = "select top 1 plan_id from ppt_plan where ActionOrder > (select ActionOrder from ppt_plan where plan_id = @PlanID) and CONVERT(varchar,down_date,112) = @PlanDate and equip_code = @RecipeEquipCode and shift = @ShiftID order by ActionOrder asc";
string sqlStr = "select top 1 plan_id from ppt_plan where ActionOrder > (select ActionOrder from ppt_plan where plan_id = @PlanID) and left(plan_id,6) = right(@PlanDate,6) and equip_code = @RecipeEquipCode and shift = @ShiftID order by ActionOrder asc";
dbHelper.AddParameter("@PlanID", currPlanID);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.CommandText = sqlStr;
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return String.Empty;
}
else
{
return result as string;
}
}
#endregion
#region GetPrevPlanID 获取当前计划的前一个计划号,用户计划排序
///
/// 获取当前计划的前一个计划号,用户计划排序
///
/// 当前计划号
/// 机台号
/// 计划生产日期
/// 班次
///
public static string GetPrevPlanID(string currPlanID, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return String.Empty;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//string strSql = "select top 1 plan_id from ppt_plan where ActionOrder < (select ActionOrder from ppt_plan where plan_id = @PlanID) and CONVERT(varchar,down_date,112) = @PlanDate and equip_code= @RecipeEquipCode and shift = @ShiftID order by ActionOrder desc";
string strSql = "select top 1 plan_id from ppt_plan where ActionOrder < (select ActionOrder from ppt_plan where plan_id = @PlanID) and left(plan_id,6) = right(@PlanDate,6) and equip_code= @RecipeEquipCode and shift = @ShiftID order by ActionOrder desc";
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.AddParameter("@PlanID", currPlanID);
dbHelper.CommandText = strSql;
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return String.Empty;
}
else
{
return result as string;
}
}
#endregion
#region SwapActionOrder 更新2个计划的ActionOrder值,使2个计划的ActionOrder值进行对调
///
/// 更新2个计划的ActionOrder值,使2个计划的ActionOrder值进行对调
///
/// 对应第一个计划的计划号
/// 对应第二个计划的计划号
public static void SwapActionOrder(string planID1, string planID2)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql1 = "select ActionOrder from ppt_plan where plan_id = @PlanID";
dbHelper.CommandText = strSql1;
dbHelper.AddParameter("@PlanID", planID1);
object result1 = dbHelper.ToScalar();
dbHelper.ClearParameter();
dbHelper.CommandText = strSql1;
dbHelper.AddParameter("@PlanID", planID2);
object result2 = dbHelper.ToScalar();
dbHelper.ClearParameter();
string strSql2 = "Update ppt_plan set ActionOrder = @ActionOrder where plan_id = @PlanID";
dbHelper.CommandText = strSql2;
dbHelper.AddParameter("@ActionOrder", result2);
dbHelper.AddParameter("@PlanID", planID1);
dbHelper.ExecuteNonQuery();
dbHelper.ClearParameter();
dbHelper.CommandText = strSql2;
dbHelper.AddParameter("@ActionOrder", result1);
dbHelper.AddParameter("@PlanID", planID2);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 获取计划状态
///
/// 获取计划状态
///
/// 计划号
/// 返回计划状态
public static PlanStates GetPlanState(string planID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return PlanStates.UnKnow;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "select plan_id as PlanID,plan_state as PlanState,plan_num as PlanNum,real_num as RealNum from ppt_plan where plan_id = @PlanID";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanID", planID);
DataTable table = dbHelper.ToDataTable();
if (table.Rows.Count == 1)
{
int planState = Convert.ToInt32(table.Rows[0]["PlanState"]); //获取计划状态
int planNum = Convert.ToInt32(table.Rows[0]["PlanNum"]); //获取计划数
int realNum = Convert.ToInt32(table.Rows[0]["RealNum"]); //获取完成数
if (realNum >= planNum)
{
return PlanStates.Completed;
}
return (PlanStates)planState;
}
else
{
return PlanStates.UnKnow;
}
}
#endregion
#region 获取某条生产计划GetPlanData
///
/// 获取某条生产计划
///
/// 计划号
/// 返回对应计划的DataRow
public static DataRow GetPlanData(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planID)
{
FeedingAction action = new FeedingAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return null;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select * from Ppt_Plan where Plan_ID = @PlanID";
strSql = "select Plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,Shift_id as ShiftID,Plan_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,Real_Endtime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,Serial_num as ActionOrder from ppt_plan where Plan_id = @PlanID";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = "select plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,shift as ShiftID,down_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,real_datetime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,ActionOrder from ppt_plan where plan_id = @PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanID", planID);
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count == 1)
{
return table.Rows[0];
}
return null;
}
#endregion
#region 获取计划数
///
/// 获取计划数
///
/// 数据访问对象
/// 计划号
/// 成功返回计划数,失败返回-1
public static int GetPlanNum(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planID)
{
FeedingAction action = new FeedingAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return -1;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select PlanNum from PptPlan where PlanID = @PlanID";
strSql = "select Plan_num as PlanNum from Ppt_Plan where Plan_id = @PlanID";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = "select plan_num as PlanNum from ppt_plan where plan_id = @PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanID", planID);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int IntResult = 0;
int.TryParse(result.ToString(), out IntResult);
return IntResult;
}
return -1;
}
#endregion
#region 判断某个计划是否存在
///
/// 判断某个计划是否存在
///
/// 网络库、本地库
/// 计划号
/// 存在返回true,否则返回false
public static bool PlanExists(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, string planID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return false;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = string.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
strSql = "select count(plan_ID) from Ppt_Plan where Equip_code = @EquipCode and Plan_ID = @PlanID";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = "select count(plan_id) from ppt_plan where equip_code = @EquipCode and plan_id = @PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@EquipCode", equipCode);
dbHelper.AddParameter("@PlanID", planID);
object result = dbHelper.ToScalar();
if (result != null && result != DBNull.Value && Convert.ToInt32(result) > 0)
{
return true;
}
else
{
return false;
}
}
///
/// 判断某个计划是否存在
///
/// 网络库、本地库
/// 机台号
/// 计划日期
/// 班次
/// 计划号
/// 存在返回true,不存在返回false
public static bool PlanExists(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID, string planID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return false;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = string.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
strSql = "select count(plan_ID) from Ppt_Plan where Equip_code = @RecipeEquipCode and Convert(varchar,Plan_Date,112) = @PlanDate and Shift_ID = @ShiftID and Plan_ID = @PlanID";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = "select count(plan_id) from ppt_plan where equip_code = @RecipeEquipCode and Convert(varchar,down_date,112) = @PlanDate and shift = @ShiftID and plan_id = @PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.AddParameter("@PlanID", planID);
object result = dbHelper.ToScalar();
if (result != null && result != DBNull.Value && Convert.ToInt32(result) > 0)
{
return true;
}
else
{
return false;
}
}
#endregion
#region 获取本机台、日期、班次的计划数据
///
/// 获取本机台、日期、班次的计划数据
///
/// 数据类型、网络、本地
/// 机台号
/// 计划生产日期
/// 班次
/// 返回符合条件的计划数据
public static DataTable GetPlanData(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return null;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select * from PptPlan where RecipeEquipCode = @RecipeEquipCode and Convert(varchar,PlanDate,112) = @PlanDate and ShiftID = @ShiftID order by ActionOrder";
strSql = "select plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,Shift_id as ShiftID,Plan_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,Real_Endtime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,Serial_num as ActionOrder from ppt_plan where Equip_code = @RecipeEquipCode and left(Plan_id,6) = right(@PlanDate,6) and Shift_id = @ShiftID order by Serial_num";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
//strSql = "select plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,shift as ShiftID,down_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,real_datetime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,ActionOrder from ppt_plan where equip_code = @RecipeEquipCode and Convert(varchar,down_date,112) = @PlanDate and shift = @ShiftID order by ActionOrder";
strSql = "select plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,shift as ShiftID,down_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,real_datetime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,ActionOrder from ppt_plan where equip_code = @RecipeEquipCode and left(plan_id,6) = right(@PlanDate,6) and shift = @ShiftID order by ActionOrder";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
DataTable table = dbHelper.ToDataTable();
return table;
}
#endregion
#region 获取对应计划日期,班次,班次的第一条未生产的计划
///
/// 获取本机台、日期、班次的第一条未生产的计划ID
///
/// 数据类型、网络、本地
/// 机台号
/// 计划生产日期
/// 班次
/// 返回符合条件的计划ID,失败返回null或String.Empty
public static string GetFirstPlanID(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return null;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select top 1 * from PptPlan where RecipeEquipCode = @RecipeEquipCode and Convert(varchar,PlanDate,112) = @PlanDate and ShiftID = @ShiftID and PlanState = 3 and RealNum = 0 order by ActionOrder";
strSql = "select top 1 plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,Shift_id as ShiftID,Plan_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,Real_Endtime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,Serial_num as ActionOrder from ppt_plan where equip_code = @RecipeEquipCode and left(plan_id,6) = right(@PlanDate,6) and Shift_id = @ShiftID and plan_state =3 and real_num = 0 order by Serial_num";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
//strSql = "select top 1 plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,shift as ShiftID,down_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,real_datetime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,ActionOrder from ppt_plan where equip_code = @RecipeEquipCode and Convert(varchar,down_date,112) = @PlanDate and shift = @ShiftID and plan_state =3 and real_num = 0 order by ActionOrder";
strSql = "select top 1 plan_id as PlanID,pri_level as PriLevel,mater_code as RecipeMaterialCode,shift_class as ClassID,equip_code as RecipeEquipCode,edt_code as RecipeVersionID,plan_num as PlanNum,real_num as RealNum,plan_state as PlanState,revise_sgn as ReviseSgn,shift as ShiftID,down_date as PlanDate,recipe_code as RecipeMaterialName,plan_weight as PlanWeight,total_weight as TotalWeight,real_weight as RealWeight,real_datetime as RealEndtime,oper_code as OperCode,oper_datetime as OperDatetime,ActionOrder from ppt_plan where equip_code = @RecipeEquipCode and left(plan_id,6) = right(@PlanDate,6) and shift = @ShiftID and plan_state =3 and real_num = 0 order by ActionOrder";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
DataTable table = dbHelper.ToDataTable();
if (table != null && table.Rows.Count > 0)
{
return table.Rows[0]["PlanID"] as string;
}
else
{
return String.Empty;
}
}
#endregion
#region 获取本机台、日期、班次的计划数量
///
/// 获取本机台、日期、班次的计划数量
///
/// 数据类型、网络、本地
/// 机台号
/// 计划生产日期
/// 班次
/// 返回符合条件的计划数据
public static int GetPlanCount(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return -1;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select count(PlanID) from PptPlan where RecipeEquipCode = @RecipeEquipCode and Convert(varchar,PlanDate,112) = @PlanDate and ShiftID = @ShiftID";
strSql = "select count(plan_id) from ppt_plan where equip_code = @RecipeEquipCode and left(plan_id,6) = right(@PlanDate,6) and Shift_id = @ShiftID";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
//strSql = "select count(plan_id) from ppt_plan where equip_code = @RecipeEquipCode and Convert(varchar,down_date,112) = @PlanDate and shift = @ShiftID";
strSql = "select count(plan_id) from ppt_plan where equip_code = @RecipeEquipCode and left(plan_id,6) = right(@PlanDate,6) and shift = @ShiftID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
return Convert.ToInt32(result);
}
else
{
return 0;
}
}
#endregion
#region 获取本机台、日期、班次的当前计划索引。从1开始
///
/// 获取当前计划索引。从1开始
///
/// 数据类型、网络、本地
/// 计划号
/// 返回符合条件的计划数据
public static int GetCurrentPlanIndex(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planId)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return -1;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select ActionOrder from PptPlan where PlanID = @PlanID order by ActionOrder";
strSql = "select Serial_num as ActionOrder from Ppt_Plan where Plan_id = @PlanID order by Serial_num";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = "select ActionOrder from ppt_plan where plan_id = @PlanID order by ActionOrder";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanID", planId);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
return Convert.ToInt32(result);
}
else
{
return 0;
}
}
#endregion
#region 根据计划号删除本地库的生产计划
///
/// 根据计划号删除本地库的生产计划
///
/// 要删除的计划号
public static void DeleteByPlanID(string planId)
{
FeedingAction action = new FeedingAction();
DbHelper localHelper;
localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
action.LogError("获取数据连接失败...");
}
localHelper.ClearParameter();
localHelper.CommandType = CommandType.Text;
string strSql = "delete from ppt_plan where plan_id = @PlanID";
localHelper.CommandText = strSql;
localHelper.AddParameter("@PlanID", planId);
localHelper.ExecuteNonQuery();
}
#endregion
#region 更新计划排序ActionOrder
///
/// 更新本地计划排序ActionOrder
///
/// 要更新的计划号
/// 排序值
public static void UpdateActionOrder(string planId, int actionOrder)
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
ICSharpCode.Core.LoggingService.Error("更新本机计划排序错误:获取本地数据连接失败!");
return;
}
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = "update ppt_plan set ActionOrder = @ActionOrder where plan_id = @PlanID";
localHelper.CommandText = strSql;
localHelper.AddParameter("@ActionOrder", actionOrder);
localHelper.AddParameter("@PlanID", planId);
localHelper.ExecuteNonQuery();
}
#endregion
#region 向网络发送接收计划的数据
///
/// 向网络发送接收计划的数据
///
/// 机台号
/// 计划生产日期
/// 班次
public static void SendNetPlanMsg(string equipCode, DateTime planDate, int shiftID, int classID, string currentUser)
{
DataTable table = PlanCommon.GetPlanData(Mesnac.Basic.DataSourceFactory.MCDbType.Local, equipCode, planDate, shiftID);
StringBuilder sbNetMsg = new StringBuilder(); //保存要发送的网络消息
sbNetMsg.Append(Global.ProtocalHeader.ReceivePlanIpNumber);
sbNetMsg.Append(":");
sbNetMsg.Append(String.Format("{0:yyyy-MM-dd}", planDate));
sbNetMsg.Append("|");
sbNetMsg.Append(shiftID);
sbNetMsg.Append("|");
sbNetMsg.Append(classID);
sbNetMsg.Append("|");
sbNetMsg.Append(currentUser);
sbNetMsg.Append("|");
if (table != null && table.Rows.Count > 0)
{
foreach (DataRow row in table.Rows)
{
//sbNetMsg.Append(row["RecipeMaterialName"]);
//sbNetMsg.Append("+");
sbNetMsg.Append(row["RecipeMaterialCode"]);
sbNetMsg.Append("+");
sbNetMsg.Append(row["PlanNum"]);
sbNetMsg.Append("+");
sbNetMsg.Append(row["RealNum"]);
if (Mesnac.Basic.DataProcessor.RowValue(row, "PlanState", String.Empty) == "5")
{
sbNetMsg.Append("[终止]");
}
sbNetMsg.Append("+");
sbNetMsg.Append(row["PlanID"]);
sbNetMsg.Append("~");
}
}
sbNetMsg.Append("/");
Mesnac.Communication.TcpService.Instance.NetSendMsg(sbNetMsg.ToString()); //发送网络消息
}
///
/// socket通信
///
///
///
///
///
///
public static void SendInit(string equipCode, DateTime planDate, int shiftID, int classID, string currentUser)
{
DataTable table = PlanCommon.GetPlanData(Mesnac.Basic.DataSourceFactory.MCDbType.Local, equipCode, planDate, shiftID);
//获取当前计划
DataRow dr = table.Select(string.Format("PlanID='{0}'", PlanCommon.PlanLog.LastPlanID)).FirstOrDefault();
StringBuilder sbNetMsg = new StringBuilder();
if (dr != null)
{
sbNetMsg.AppendFormat("{0}:{1}|{2}|{3}|{4}|{5:yyyy-MM-dd}|{6}|{7}/", Global.ProtocalHeader.ReceiveBaseStatu, Convert.ToInt32(dr["ActionOrder"]) - 1, dr["PlanNum"], dr["RealNum"], PlanCommon.PlanLog.LastSelectShiftID, PlanCommon.PlanLog.LastSelectDate, dr["RecipeMaterialCode"], currentUser);
}
sbNetMsg.AppendFormat("{0}:{1}", Global.ProtocalHeader.ReceivePlanIdIpNumber, PlanCommon.PlanLog.LastPlanID);
sbNetMsg.Append("/");
sbNetMsg.Append(Global.ProtocalHeader.ReceivePlanIpNumber);
sbNetMsg.Append(":");
sbNetMsg.Append(String.Format("{0:yyyy-MM-dd}", planDate));
sbNetMsg.Append("|");
sbNetMsg.Append(shiftID);
sbNetMsg.Append("|");
sbNetMsg.Append(classID);
sbNetMsg.Append("|");
sbNetMsg.Append(currentUser);
sbNetMsg.Append("|");
foreach (DataRow row in table.Rows)
{
sbNetMsg.Append(row["RecipeMaterialCode"]);
sbNetMsg.Append("+");
sbNetMsg.Append(row["PlanNum"]);
sbNetMsg.Append("+");
sbNetMsg.Append(row["RealNum"]);
if (Mesnac.Basic.DataProcessor.RowValue(row, "PlanState", String.Empty) == "5")
{
sbNetMsg.Append("[终止]");
}
sbNetMsg.Append("+");
sbNetMsg.Append(row["PlanID"]);
sbNetMsg.Append("~");
}
sbNetMsg.Append("/");
//称量参数
sbNetMsg.Append(RecipeWeighInfo());
Mesnac.Communication.TcpService.Instance.NetSendMsg(sbNetMsg.ToString());
}
///
/// 获取配方胶料称量信息
///
///
public static string RecipeWeighInfo()
{
if (RecipeWeighCache.Instance.CacheFlag)//下一个计划的称量配方已经下传
{
return RecipeWeighCache.Instance.RecipeWeighResolve();
}
else
{
return RecipeCache.Instance.RecipeWeighResolve();
}
}
#endregion
#region 获取配方物料列表
///
/// 获取网络版配方物料数据
///
/// 机台号
/// 配方状态
/// 返回符合条件的配方列表
public static List GetNetRecipeMaterialList(string recipeEquipCode, int recipeState)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return new List();
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = @"SELECT '0' AS Mater_Code,' ---请选择---' AS ShowName,'0' as Edt_Code UNION ALL SELECT a.Mater_Code,rtrim(b.Mater_name)+'('+substring(rtrim(isnull(a.Recipe_Code,'')),7,2)+')'+'['+rtrim(a.Mater_Code)+']' AS ShowName,a.Edt_Code FROM Pmt_Recipe a
left join (select mater_code,mater_name from Pmt_material) b
on a.Mater_Code=b.Mater_code WHERE Recipe_State = @RecipeState and Equip_Code = @RecipeEquipCode and Audit_Flag= @AuditFlag order by Mater_Code";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeState", recipeState); //配方状态
dbHelper.AddParameter("@RecipeEquipCode", recipeEquipCode); //机台号
dbHelper.AddParameter("@AuditFlag", 1); //审批标志
DataTable table = dbHelper.ToDataTable();
List lst = new List();
SimplePmtRecipe recipe = null;
foreach (DataRow row in table.Rows)
{
recipe = new SimplePmtRecipe();
recipe.ObjID = row["Mater_Code"].ToString();
recipe.Content = row["ShowName"] as string;
recipe.RecipeVersionID = Convert.ToInt32(row["Edt_Code"]);
lst.Add(recipe);
}
return lst;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取网络版配方物料数据失败:" + ex.Message);
return null;
}
}
///
/// 获取本机版配方物料数据
///
/// 机台号
/// 配方状态
/// 返回符合条件的配方列表
public static List GetLocalRecipeMaterialList(string recipeEquipCode, int recipeState)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return new List();
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "SELECT '0' AS ObjID,'---请选择---' AS ShowName UNION ALL SELECT CONVERT(VARCHAR(100),ObjID) AS ObjID,rtrim(mater_name)+'('+substring(rtrim(isnull(recipe_code,'')),7,2)+')'+'['+rtrim(mater_code)+']' AS ShowName FROM pmt_recipe WHERE recipe_State=@RecipeState AND equip_code=@RecipeEquipCode order by ObjID";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeState", recipeState); //配方状态
dbHelper.AddParameter("@RecipeEquipCode", recipeEquipCode.Substring(3, 2)); //机台号
DataTable table = dbHelper.ToDataTable();
List lst = new List();
SimplePmtRecipe recipe = null;
foreach (DataRow row in table.Rows)
{
recipe = new SimplePmtRecipe();
recipe.ObjID = row["ObjID"].ToString();
recipe.Content = row["ShowName"] as string;
lst.Add(recipe);
}
return lst;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取本机版配方物料数据失败:" + ex.Message);
return null;
}
}
///
/// 定位一个配方的物料
///
/// 机台号
/// 物料代码
/// 版本号
/// 返回配方物料
public static SimplePmtRecipe GetLocalRecipeMaterial(string recipeEquipCode, string mater_code, string edt_code)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return new SimplePmtRecipe();
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "SELECT CONVERT(VARCHAR(100),ObjID) AS ObjID,rtrim(mater_name)+'('+substring(rtrim(isnull(recipe_code,'')),7,2)+')'+'['+rtrim(mater_code)+']' AS ShowName FROM pmt_recipe WHERE equip_code=@RecipeEquipCode AND mater_code=@mater_code AND edt_code=@edt_code";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeEquipCode", recipeEquipCode.Substring(3, 2)); //机台号
dbHelper.AddParameter("@mater_code", mater_code); //物料编码
dbHelper.AddParameter("@edt_code", edt_code); //物料版本号
DataTable table = dbHelper.ToDataTable();
SimplePmtRecipe recipe = new SimplePmtRecipe();
foreach (DataRow row in table.Rows)
{
recipe.ObjID = row["ObjID"].ToString();
recipe.Content = row["ShowName"] as string;
break;
}
return recipe;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("定位一个配方的物料失败:" + ex.Message);
return null;
}
}
#endregion
#region 拼音检索配方物料列表
///
/// 拼音检索,获取网络版配方物料数据
///
/// 机台号
/// 配方状态
/// 拼音检索的物料名称
/// 返回符合条件的配方列表
public static List GetNetRecipeMaterialListPY(string recipeEquipCode, int recipeState, string materNamePY)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return new List();
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = @"SELECT Mater_Code,rtrim(Mater_name)+'('+substring(rtrim(isnull(Recipe_Code,'')),7,2)+')'+'['+rtrim(Mater_Code)+']' AS ShowName,Edt_Code FROM Pmt_Recipe
WHERE Recipe_State = @RecipeState and Equip_Code = @RecipeEquipCode and Audit_Flag= @AuditFlag and dbo.fun_getPY(Mater_name) like @MaterName order by Mater_Code";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeState", recipeState); //配方状态
dbHelper.AddParameter("@RecipeEquipCode", recipeEquipCode); //机台号
dbHelper.AddParameter("@AuditFlag", 1); //审批标志
dbHelper.AddParameter("@MaterName", "%" + materNamePY + "%");
DataTable table = dbHelper.ToDataTable();
List lst = new List();
SimplePmtRecipe recipe = null;
foreach (DataRow row in table.Rows)
{
recipe = new SimplePmtRecipe();
recipe.ObjID = row["Mater_Code"].ToString();
recipe.Content = row["ShowName"] as string;
recipe.RecipeVersionID = Convert.ToInt32(row["Edt_Code"]);
lst.Add(recipe);
}
return lst;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("拼音检索,获取网络版配方物料数据失败:" + ex.Message);
return null;
}
}
///
/// 获取本机版配方物料数据
///
/// 机台号
/// 配方状态
/// 拼音检索的配方物料名称
/// 返回符合条件的配方列表
public static List GetLocalRecipeMaterialListPY(string recipeEquipCode, int recipeState, string materNamePY)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return new List();
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "SELECT CONVERT(VARCHAR(100),ObjID) AS ObjID,rtrim(mater_code) as Mater_Code,rtrim(mater_name)+'('+substring(rtrim(isnull(recipe_code,'')),7,2)+')'+'['+rtrim(mater_code)+']' AS ShowName,Edt_Code FROM pmt_recipe WHERE recipe_State=@RecipeState AND equip_code=@RecipeEquipCode and dbo.fun_getPY(mater_name) like @MaterName order by ObjID";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeState", recipeState); //配方状态
dbHelper.AddParameter("@RecipeEquipCode", recipeEquipCode.Substring(3, 2)); //机台号
dbHelper.AddParameter("@MaterName", "%" + materNamePY + "%");
DataTable table = dbHelper.ToDataTable();
List lst = new List();
SimplePmtRecipe recipe = null;
foreach (DataRow row in table.Rows)
{
recipe = new SimplePmtRecipe();
recipe.ObjID = row["ObjID"].ToString();
recipe.Content = row["ShowName"] as string;
lst.Add(recipe);
}
return lst;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("拼音检索,获取本机版配方物料数据失败:" + ex.Message);
return null;
}
}
#endregion
#region 获取SysCode表中的项名称
///
/// 获取SysCode表中的项名称
///
/// 数据类型,网络数据、本地数据
/// 类型ID
/// 项序号
/// 返回项名称
public static string GetSysCodeItemName(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string typeID, int itemCode)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return String.Empty;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "select ItemName from SysCode where TypeID = @TypeID and ItemCode = @ItemCode";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@TypeID", typeID);
dbHelper.AddParameter("@ItemCode", itemCode);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
return result as string;
}
return String.Empty;
}
#endregion
#region 获取网络库中胶料称锁定状态
///
/// 获取网络库中胶料称锁定状态
///
/// 机台号
/// 返回胶料称锁定状态实体
public static RubWeightSetting GetRubWeightSetting(string equipCode)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return new RubWeightSetting();
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//string strSql = "SELECT [ObjID],[EquipCode],[State],[EquipElectricCurrent],[WeightSettingCtrl],[DeleteFlag],[Remark] FROM [PmtRubWeightSetting] where [EquipCode] = @EquipCode";
string strSql = "SELECT 0 as [ObjID],Equip_Code as [EquipCode],[State],DianLiu as [EquipElectricCurrent],BarCtl as [WeightSettingCtrl],0 as [DeleteFlag],'' as [Remark] FROM ppt_EquipState where Equip_Code = @EquipCode";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@EquipCode", equipCode);
RubWeightSetting rws = null;
using (DbDataReader reader = dbHelper.ToDbDataReader())
{
if (reader.Read())
{
rws = new RubWeightSetting();
rws.ObjID = Convert.ToInt32(reader["ObjID"]);
rws.EquipCode = equipCode;
rws.State = reader["State"] as string;
rws.EquipElectricCurrent = Convert.ToInt32(reader["EquipElectricCurrent"]);
rws.WeightSettingCtrl = reader["WeightSettingCtrl"] as string; //大于等于1参与锁秤控制
rws.DeleteFlag = reader["DeleteFlag"] as string;
rws.Remark = reader["Remark"] as string;
reader.Close();
reader.Dispose();
}
}
return rws;
}
#endregion
#region 获取班组
///
/// 获取班组ID
///
/// 数据库类型,网络数据库、本地数据库
/// 工序,密炼上辅机工序为1
/// 计划生产日期
/// 班次
/// 返回对应的班组ID
public static int GetClassID(Mesnac.Basic.DataSourceFactory.MCDbType dbType, int procedureID, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
action.LogError("本地库不支持此方法:PlanCommon.GetClassID!");
return -1;
}
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return -1;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "select Shift_Class from Ppt_Shiftime where Dept_Code = @ProcedureID and Convert(varchar,Shift_DT,112) = @PlanDate and Shift_ID = @ShiftID";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@ProcedureID", procedureID);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return 0;
}
else
{
return Convert.ToInt32(result);
}
}
///
/// 获取班组名称
///
/// 数据库类型,网络数据库、本地数据库
/// 工序,密炼上辅机工序为1
/// 计划生产日期
/// 班次
/// 返回对应的班组名称
public static string GetClassName(Mesnac.Basic.DataSourceFactory.MCDbType dbType, int procedureID, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
action.LogError("不支持此方法!");
return String.Empty;
}
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return String.Empty;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "select ClassName from PptClass where ObjID=(select ShiftClassID from PptShiftTime where ProcedureID = @ProcedureID and Convert(varchar,ShiftDT,112) = @PlanDate and ShiftID = @ShiftID)";
if(dbType==Mesnac.Basic.DataSourceFactory.MCDbType.Server)//如果为网络库,则换清泉数据库
strSql = @"select shift_ClassName as ClassName from Ppt_ShiftClass
where shift_ClassId=(select shift_Class from Ppt_ShifTime where Dept_code = @ProcedureID
and Convert(varchar,cast(Shift_DT as datetime),112) = @PlanDate and Shift_ID = @ShiftID)";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@ProcedureID", procedureID);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return String.Empty;
}
else
{
return result.ToString().Trim();
}
}
#endregion
#region 获取下一个可用的序号SerialNum 规则:同机台、同日期、同班次 计划号最后2位的最大值加1
///
/// 获取下一个可用的序号
///
/// 数据库类型,网络数据库、本地数据库
/// 5位机台号
/// 计划生产日期
/// 班次
/// 返回可用的序号
public static int GetNextSerialNum(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return -1;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "select max(right(PlanID,2)) from PptPlan where RecipeEquipCode = @RecipeEquipCode and Convert(varchar,PlanDate,112) = @PlanDate and ShiftID = @ShiftID";
strSql = "select max(right(Plan_ID,2)) from Ppt_Plan where Equip_code = @RecipeEquipCode and left(Plan_ID,6) = right(@PlanDate,6) and Shift_ID = @ShiftID";
}
else
{
//strSql = "select max(right(plan_id,2)) from ppt_plan where equip_code = @RecipeEquipCode and Convert(varchar,down_date,112) = @PlanDate and shift = @ShiftID";
strSql = "select max(right(plan_id,2)) from ppt_plan where equip_code = @RecipeEquipCode and left(plan_id,6) = right(@PlanDate,6) and shift = @ShiftID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelper.AddParameter("@ShiftID", shiftID);
object result = dbHelper.ToScalar();
if (result == null || result == System.DBNull.Value)
{
return 1;
}
else
{
return Convert.ToInt32(result) + 1;
}
}
#endregion
#region 添加生产计划
///
/// 加生产计划
///
/// 数据库类型,网络数据库、本地数据库
/// 5位机台号
/// 计划生产日期
/// 班次
/// 班组
/// 配方ID
/// 计划数
/// 输出错误列表
/// 返回新加计划的计划号
public static string AddPlan(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string equipCode, DateTime planDate, int shiftID, int classID, string recipeObjID,int edtCode, int planNum, out List errorList)
{
errorList = new List();
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return String.Empty;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//查询配方数据的SQL语句
string strSql1 = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
strSql1 = "select Mater_code as RecipeMaterialCode,mater_name as RecipeMaterialName,edt_code as RecipeVersionID,Edt_code as RecipeUserVersion,recipe_code as RecipeName,1 as RecipeType,total_weight as LotTotalWeight from Pmt_Recipe where Equip_code = @Equipcode and Mater_code=@Matercode and Edt_code=@Edtcode";
dbHelper.CommandText = strSql1;
dbHelper.AddParameter("@Equipcode", equipCode);
dbHelper.AddParameter("@Matercode", recipeObjID);
dbHelper.AddParameter("@Edtcode", edtCode);
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql1 = "select ObjID,mater_code as RecipeMaterialCode,mater_name as RecipeMaterialName,edt_code as RecipeVersionID,'' as RecipeUserVersion,recipe_code as RecipeName,1 as RecipeType,total_weight as LotTotalWeight from pmt_recipe where ObjID = @ObjID";
dbHelper.CommandText = strSql1;
dbHelper.AddParameter("@ObjID", recipeObjID);
}
DataTable recipeTable = dbHelper.ToDataTable();
if (recipeTable != null && recipeTable.Rows.Count == 1)
{
DataRow row = recipeTable.Rows[0];
object recipeMaterialCode = row["RecipeMaterialCode"]; //物料代码
object recipeMaterialName = row["RecipeMaterialName"]; //配方名称
object recipeVersionID = row["RecipeVersionID"]; //配方版本号
object recipeUserVersion = row["RecipeUserVersion"];
object recipeName = row["RecipeName"]; //配方名称
object recipeType = row["RecipeType"]; //配方类型
object totalWeight = row["LotTotalWeight"]; //每车重量
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
if (classID < 1)
{
classID = GetClassID(dbType, 1, planDate, shiftID); //班组
}
}
int localSerialNum = 0;
string localPlanID = String.Empty;
int serialNum = GetNextSerialNum(dbType, equipCode, planDate, shiftID); //序号
string planID = GenerateNextPlanID(dbType, equipCode, planDate, shiftID); //计划号
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//如果是网络版则获取本地计划号和序号,用于跟网络版进行大小对比,防止,由单机切换网络版本时添加重复计划
localSerialNum = GetNextSerialNum(Basic.DataSourceFactory.MCDbType.Local, equipCode, planDate, shiftID); //通过本地库生成序号
localPlanID = GenerateNextPlanID(Basic.DataSourceFactory.MCDbType.Local, equipCode, planDate, shiftID); //通过本地库生成
//如果网络获取的计划号小于通过本地获取的计划号,则用本地获取的计划号
if (planID.Contains("L") && planID.CompareTo(localPlanID) < 0)
{
planID = localPlanID;
serialNum = localSerialNum;
}
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
//添加计划的SQL语句
string strSql3 = String.Empty;
if (dbType == Mesnac.Basic.DataSourceFactory.MCDbType.Server)
{
strSql3 = "insert into Ppt_Plan(Plan_ID,Plan_Date,Equip_code,Mater_code,Mater_Name,Edt_code,User_Edtcode,Shift_id,Shift_class,";
strSql3 += "Serial_num,Pri_level,recipe_code,Recipe_Type,Run_Type,Print_Type,Plan_Source,Total_weight,Plan_num,Plan_weight,Real_num,Real_weight,";
strSql3 += "Urgency_state,Plan_state,Oper_datetime,Plan_EndTime,Real_StartTime,Real_Endtime,Oper_code,revise_sgn,XLcreate,Memo";
strSql3 += ")";
strSql3 += " values(@PlanID,@PlanDate,@RecipeEquipCode,@RecipeMaterialCode,@RecipeMaterialName,@RecipeVersionID,@RecipeUserVersion,@ShiftID,@ClassID,";
strSql3 += "@SerialNum,@PriLevel,@RecipeName,@RecipeType,@RunType,@PrintType,@PlanSource,@TotalWeight,@PlanNum,@PlanWeight,@RealNum,@RealWeight,";
strSql3 += "@UrgencyState,@PlanState,@OperDatetime,@PlanEndTime,@RealStartTime,@RealEndtime,@OperCode,@ReviseSgn,@SmallCreate,@Remark";
strSql3 += ")";
dbHelper.CommandText = strSql3;
dbHelper.AddParameter("@PlanID", planID);
dbHelper.AddParameter("@PlanDate", Convert.ToDateTime(planDate.ToShortDateString()).ToString("yyyy-MM-dd"));
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@RecipeMaterialCode", recipeMaterialCode);
dbHelper.AddParameter("@RecipeMaterialName", recipeMaterialName);
dbHelper.AddParameter("@RecipeVersionID", recipeVersionID);
dbHelper.AddParameter("@RecipeUserVersion", recipeUserVersion);
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.AddParameter("@ClassID", classID);
dbHelper.AddParameter("@SerialNum", serialNum);
dbHelper.AddParameter("@PriLevel", serialNum);
dbHelper.AddParameter("@RecipeName", recipeName);
dbHelper.AddParameter("@RecipeType", recipeType);
dbHelper.AddParameter("@RunType", null);
dbHelper.AddParameter("@PrintType", null);
dbHelper.AddParameter("@PlanSource", "L");
dbHelper.AddParameter("@TotalWeight", totalWeight);
dbHelper.AddParameter("@PlanNum", planNum);
dbHelper.AddParameter("@PlanWeight", Convert.ToDecimal(totalWeight) * planNum);
dbHelper.AddParameter("@RealNum", 0);
dbHelper.AddParameter("@RealWeight", 0);
dbHelper.AddParameter("@UrgencyState", 2); //计划紧急状态
dbHelper.AddParameter("@PlanState", 2); //计划状态,初始为2-已下达
dbHelper.AddParameter("@OperDatetime", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
dbHelper.AddParameter("@PlanEndTime", null);
dbHelper.AddParameter("@RealStartTime", null);
dbHelper.AddParameter("@RealEndtime", null);
dbHelper.AddParameter("@OperCode", "JiTai");
dbHelper.AddParameter("@ReviseSgn", 1);
dbHelper.AddParameter("@SmallCreate", 0);
//dbHelper.AddParameter("@AvgTime", null);
dbHelper.AddParameter("@Remark", null);
}
else if (dbType == Mesnac.Basic.DataSourceFactory.MCDbType.Local)
{
strSql3 = "insert into ppt_plan([plan_id],[pri_level],[mater_code],[shift_class],[equip_code],[edt_code],[modi_code],[plan_num],[real_num],[plan_state],[revise_sgn],[revise_date],[shift],[down_date],[recipe_code],[plan_weight],[total_weight],[real_weight],[plan_datetime],[real_datetime],[oper_code],[oper_datetime],[ActionOrder])";
strSql3 += " values(@PlanID,@PriLevel,@RecipeMaterialCode,@ClassID,@RecipeEquipCode,@RecipeVersionID,@ModiCode,@PlanNum,@RealNum,@PlanState,@ReviseSgn,@revise_date,@ShiftID,@PlanDate,@RecipeMaterialName,@PlanWeight,@TotalWeight,@RealWeight,@plan_datetime,@RealEndtime,@OperCode,@OperDatetime,@ActionOrder)";
dbHelper.CommandText = strSql3;
dbHelper.AddParameter("@PlanID", planID);
dbHelper.AddParameter("@PriLevel", serialNum);
dbHelper.AddParameter("@RecipeMaterialCode", recipeMaterialCode);
dbHelper.AddParameter("@ClassID", classID);
dbHelper.AddParameter("@RecipeEquipCode", equipCode);
dbHelper.AddParameter("@RecipeVersionID", recipeVersionID);
dbHelper.AddParameter("@ModiCode", 0); //计划上传标志,0-未上传,1-已上传
dbHelper.AddParameter("@PlanNum", planNum);
dbHelper.AddParameter("@RealNum", 0);
dbHelper.AddParameter("@PlanState", 3); //接收网络计划时把PlanState设置为3-已接收,同时把网络计划的PlanState设置为3
dbHelper.AddParameter("@ReviseSgn", 1); //接收网络计划时把ReviseSgn设置为0,同时把网络计划的ReviseSgn设置为0
dbHelper.AddParameter("@revise_date", null); //接收网络计划的时间
dbHelper.AddParameter("@ShiftID", shiftID);
dbHelper.AddParameter("@PlanDate", Convert.ToDateTime(planDate.ToShortDateString()));
dbHelper.AddParameter("@RecipeMaterialName", recipeMaterialName);
dbHelper.AddParameter("@PlanWeight", Convert.ToDecimal(totalWeight) * planNum);
dbHelper.AddParameter("@TotalWeight", totalWeight);
dbHelper.AddParameter("@RealWeight", 0);
dbHelper.AddParameter("@plan_datetime", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now)); //计划制定时间
dbHelper.AddParameter("@RealEndtime", null);
dbHelper.AddParameter("@OperCode", "JiTai");
dbHelper.AddParameter("@OperDatetime", String.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
dbHelper.AddParameter("@ActionOrder", serialNum);
}
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("添加计划失败:" + ex.Message);
return String.Empty;
}
return planID;
}
return String.Empty;
}
#endregion
#region 按计划号删除计划
///
/// 按计划号删除计划
///
/// 数据库类型:网络库、本地库
/// 要删除计划对应的计划号
/// 成功返回true,失败返回false
public static bool DeletePlan(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planId)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper dbHelper = action.NewDbHelper(dbType);
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
strSql = "delete from Ppt_Plan where plan_id=@PlanID";
}
else if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = "delete from Ppt_Plan where plan_id=@PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanID", planId);
dbHelper.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("删除计划失败:" + ex.Message);
return false;
}
}
#endregion
#region 接收计划核心业务
///
/// 接收计划核心业务
///
/// 计划号
/// 机台号
/// 计划日期
/// 班次
/// 如果有接到数据返回true,否则返回false
public static bool RecivePlan(string planID, string equipCode, DateTime planDate, int shiftID)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper1, dbHelper2;
dbHelper1 = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (dbHelper1 == null)
{
action.LogError("获取网络数据连接失败...");
return false;
}
dbHelper2 = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper2 == null)
{
action.LogError("获取本地数据连接失败...");
return false;
}
string strSql1 = @"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 = @PlanID";
dbHelper1.CommandText = strSql1;
dbHelper1.AddParameter("@PlanID", planID);
DataTable fromTable = dbHelper1.ToDataTable();
bool flag = false;
if (fromTable != null && fromTable.Rows.Count == 1)
{
DataRow row = fromTable.Rows[0];
bool result = RecivePlan(dbHelper1, dbHelper2, row, equipCode, planDate, shiftID);
if (result == true)
{
flag = true;
}
}
return flag;
}
///
/// 删除本地库计划
///
///
///
///
///
///
public static bool DelCurrentPlan(string equipCode, DateTime planDate, int shiftID)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelperLocal;
dbHelperLocal = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelperLocal == null)
{
action.LogError("获取本地数据连接失败...");
return false;
}
string sqlStr3 = "delete from ppt_plan where convert(varchar,down_date,112)=@PlanDate and shift=@ShiftID and equip_code=@RecipeEquipCode";
dbHelperLocal.AddParameter("@PlanDate", String.Format("{0:yyyyMMdd}", planDate));
dbHelperLocal.AddParameter("@ShiftID", shiftID);
dbHelperLocal.AddParameter("@RecipeEquipCode", equipCode);
dbHelperLocal.CommandText = sqlStr3;
dbHelperLocal.ExecuteNonQuery();
return true;
}
catch (Exception)
{
return false;
}
}
///
/// 接收计划
///
/// 服务器数据辅助对象
/// 本地数据辅助对象
/// 计划数据行
/// 机台号
/// 计划生产日期
/// 班次
/// 如果有接到数据返回true,否则返回false
public static bool RecivePlan(DbHelper dbHelperServer, DbHelper dbHelperLocal, DataRow planRow, string equipCode, DateTime planDate, int shiftID)
{
DataRow row = planRow;
dbHelperLocal.ClearParameter();
dbHelperLocal.CommandType = CommandType.Text;
//检测本地库中是否存在对应的计划
string sqlStr2 = "select count(plan_id) from ppt_plan where plan_id=@PlanID";
dbHelperLocal.AddParameter("@PlanID", row["PlanID"]);
dbHelperLocal.CommandText = sqlStr2;
object result = dbHelperLocal.ToScalar();
if (Convert.ToInt32(result) == 0)
{
//获取ActionOrder值
int nextActionOrder = PlanCommon.GetNewActionOrder(equipCode, planDate, shiftID);
dbHelperLocal.ClearParameter();
dbHelperLocal.CommandType = CommandType.Text;
//本地追加计划
//string sqlStr3 = "insert into PptPlan(PlanID,PlanDate,RecipeEquipCode,RecipeMaterialCode,RecipeMaterialName,RecipeVersionID,RecipeUserVersion,ShiftID,ClassID,SerialNum,PriLevel,RecipeName,RecipeType,RunType,PrintType,PlanSource,TotalWeight,PlanNum,PlanWeight,RealNum,RealWeight,UrgencyState,PlanState,OperDatetime,PlanEndTime,RealStartTime,RealEndtime,OperCode,ReviseSgn,SmallCreate,AvgTime,Remark,DeleteFlag,CreatePlanFlag,ActionOrder)";
//sqlStr3 += " values(@PlanID,@PlanDate,@RecipeEquipCode,@RecipeMaterialCode,@RecipeMaterialName,@RecipeVersionID,@RecipeUserVersion,@ShiftID,@ClassID,@SerialNum,@PriLevel,@RecipeName,@RecipeType,@RunType,@PrintType,@PlanSource,@TotalWeight,@PlanNum,@PlanWeight,@RealNum,@RealWeight,@UrgencyState,@PlanState,@OperDatetime,@PlanEndTime,@RealStartTime,@RealEndtime,@OperCode,@ReviseSgn,@SmallCreate,@AvgTime,@Remark,@DeleteFlag,@CreatePlanFlag,@ActionOrder)";
string sqlStr3 = "insert into ppt_plan([plan_id],[pri_level],[mater_code],[shift_class],[equip_code],[edt_code],[modi_code],[plan_num],[real_num],[plan_state],[revise_sgn],[revise_date],[shift],[down_date],[recipe_code],[plan_weight],[total_weight],[real_weight],[plan_datetime],[real_datetime],[oper_code],[oper_datetime],[ActionOrder])";
sqlStr3 += " values(@PlanID,@PriLevel,@RecipeMaterialCode,@ClassID,@RecipeEquipCode,@RecipeVersionID,@ModiCode,@PlanNum,@RealNum,@PlanState,@ReviseSgn,@revise_date,@ShiftID,@PlanDate,@RecipeMaterialName,@PlanWeight,@TotalWeight,@RealWeight,@plan_datetime,@RealEndtime,@OperCode,@OperDatetime,@ActionOrder)";
dbHelperLocal.AddParameter("@PlanID", row["PlanID"]);
dbHelperLocal.AddParameter("@PriLevel", row["PriLevel"]);
dbHelperLocal.AddParameter("@RecipeMaterialCode", row["RecipeMaterialCode"]);
dbHelperLocal.AddParameter("@ClassID", row["ClassID"]);
dbHelperLocal.AddParameter("@RecipeEquipCode", row["RecipeEquipCode"]);
dbHelperLocal.AddParameter("@RecipeVersionID", row["RecipeVersionID"]);
dbHelperLocal.AddParameter("@ModiCode", 1); //计划上传标志,0-未上传,1-已上传
dbHelperLocal.AddParameter("@PlanNum", row["PlanNum"]);
dbHelperLocal.AddParameter("@RealNum", row["RealNum"]);
dbHelperLocal.AddParameter("@PlanState", 3); //接收网络计划时把PlanState设置为3-已接收,同时把网络计划的PlanState设置为3
dbHelperLocal.AddParameter("@ReviseSgn", 0); //接收网络计划时把ReviseSgn设置为0,同时把网络计划的ReviseSgn设置为0
dbHelperLocal.AddParameter("@revise_date", String.Format("{0:yyyy-MM-dd}",DateTime.Now)); //接收网络计划的时间
dbHelperLocal.AddParameter("@ShiftID", row["ShiftID"]);
dbHelperLocal.AddParameter("@PlanDate", row["PlanDate"]);
dbHelperLocal.AddParameter("@RecipeMaterialName", row["RecipeMaterialName"]);
dbHelperLocal.AddParameter("@PlanWeight", row["PlanWeight"]);
dbHelperLocal.AddParameter("@TotalWeight", row["TotalWeight"]);
dbHelperLocal.AddParameter("@RealWeight", row["RealWeight"]);
dbHelperLocal.AddParameter("@plan_datetime", String.Format("{0:yyyy-MM-dd HH:mm:ss}",DateTime.Now)); //计划制定时间
//row["RealEndtime"]
dbHelperLocal.AddParameter("@RealEndtime", Mesnac.Basic.DataProcessor.RowValue(row, "RealEndtime", null));
dbHelperLocal.AddParameter("@OperCode", row["OperCode"]);
dbHelperLocal.AddParameter("@OperDatetime", row["OperDatetime"]);
dbHelperLocal.AddParameter("@ActionOrder", nextActionOrder);
//dbHelperLocal.AddParameter("@RecipeUserVersion", row["RecipeUserVersion"]);
//dbHelperLocal.AddParameter("@SerialNum", row["SerialNum"]);
//dbHelperLocal.AddParameter("@RecipeName", row["RecipeName"]);
//dbHelperLocal.AddParameter("@RecipeType", row["RecipeType"]);
//dbHelperLocal.AddParameter("@RunType", row["RunType"]);
//dbHelperLocal.AddParameter("@PrintType", row["PrintType"]);
//dbHelperLocal.AddParameter("@PlanSource", row["PlanSource"]);
//dbHelperLocal.AddParameter("@UrgencyState", row["UrgencyState"]);
//dbHelperLocal.AddParameter("@PlanEndTime", row["PlanEndTime"]);
//dbHelperLocal.AddParameter("@RealStartTime", row["RealStartTime"]);
//dbHelperLocal.AddParameter("@SmallCreate", row["SmallCreate"]);
//dbHelperLocal.AddParameter("@AvgTime", row["AvgTime"]);
//dbHelperLocal.AddParameter("@Remark", row["Remark"]);
//dbHelperLocal.AddParameter("@DeleteFlag", row["DeleteFlag"]);
//dbHelperLocal.AddParameter("@CreatePlanFlag", row["CreatePlanFlag"]);
dbHelperLocal.CommandText = sqlStr3;
dbHelperLocal.ExecuteNonQuery();
//把网络计划的PlanState设置为3-已接收,把网络计划的ReviseSgn设置为0
dbHelperServer.ClearParameter();
dbHelperServer.CommandType = CommandType.Text;
string strSql4 = "Update Ppt_Plan set Plan_State = 3, Revise_Sgn = 0 where Plan_ID = @PlanID";
dbHelperServer.AddParameter("@PlanID", row["PlanID"]);
dbHelperServer.CommandText = strSql4;
dbHelperServer.ExecuteNonQuery();
return true;
}
return false;
}
#endregion
#region 更新计划设定数UpdatePlanNum
///
/// 更新计划设定数
///
/// 计划号
/// 设定数
public static void UpdatePlanNum(string planID, int planNum)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取本地数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "update ppt_plan set plan_num = @PlanNum where plan_id = @PlanID";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanNum", planNum);
dbHelper.AddParameter("@PlanID", planID);
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("更新本地计划数失败:" + ex.Message);
}
}
///
/// 更新计划设定数
///
/// 数据类型,本地、网络
/// 计划号
/// 设定数
public static void UpdatePlanNum(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planID, int planNum)
{
try
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
//strSql = "update PptPlan set PlanNum = @PlanNum where PlanID = @PlanID";
strSql = "update Ppt_Plan set Plan_num = @PlanNum where Plan_id = @PlanID";
}
else
{
strSql = "update ppt_plan set plan_num = @PlanNum where plan_id = @PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanNum", planNum);
dbHelper.AddParameter("@PlanID", planID);
dbHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("更新计划数失败:" + ex.Message);
}
}
#endregion
#region 更新计划状态和计划执行时间
///
/// 更新计划状态和计划执行时间
///
/// 数据库类型,网络库、本地库
/// 计划号
/// 计划状态
/// 实际计划开始时间
public static void UpdatedPlanStateAndRealStartTime(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planID, int planState, DateTime realStartTime)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
strSql = "update Ppt_Plan set Plan_State = @PlanState, Real_StartTime = @RealStartTime where Plan_ID = @PlanID";
}
else
{
strSql = "update ppt_plan set plan_state = @PlanState where plan_id = @PlanID";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanState", planState);
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
dbHelper.AddParameter("@RealStartTime", String.Format("{0:yyyy-MM-dd HH:mm:ss}", realStartTime));
}
dbHelper.AddParameter("@PlanID", planID);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 更新计划状态和计划终止时间
///
/// 更新计划状态和计划执行时间
///
/// 数据库类型,网络库、本地库
/// 计划号
/// 计划状态
/// 实际计划开始时间
public static void UpdatedPlanStateAndRealEndTime(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string planID, int planState, DateTime realEndTime)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
strSql = "update Ppt_Plan set Plan_State = @PlanState, Real_Endtime = @RealEndTime where Plan_ID = @PlanID";
}
else
{
if (action.NetType == BaseAction.NetTypes.Net)
{
strSql = "update ppt_plan set plan_state = @PlanState where plan_id = @PlanID";
}
else
{
//如果单机运行,则把计划上传标志modi_code设置为0
strSql = "update ppt_plan set plan_state = @PlanState,modi_code=0 where plan_id = @PlanID";
}
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanState", planState);
if (dbType == Basic.DataSourceFactory.MCDbType.Server)
{
dbHelper.AddParameter("@RealEndTime", String.Format("{0:yyyy-MM-dd HH:mm:ss}", realEndTime));
}
dbHelper.AddParameter("@PlanID", planID);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 获取本地所有班次信息
///
/// 获取本地所有班次信息
///
///
public static DataTable GetAllLocalShiftData()
{
FeedingAction action = new FeedingAction();
DbHelper localHelper;
localHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
action.LogError("获取本地数据连接失败...");
return null;
}
try
{
localHelper.ClearParameter();
localHelper.CommandType = CommandType.Text;
string strSql = "select * from PptShift where UseFlag = 1 order by ObjID";
localHelper.CommandText = strSql;
DataTable shiftTable = localHelper.ToDataTable();
return shiftTable;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取本地班次数据失败:" + ex.Message, ex);
return null;
}
}
#endregion
#region 日期班次验证
///
/// 日期班次验证
///
/// 验证后输出的正确日期
/// 验证后输出的正确班次
/// 要验证的日期值
/// 要验证的班次值
/// 消息提示
/// 验证通过返回true,否则返回false
public static bool PlanDateVerify(out DateTime plandate, out int shiftitem, string pickervalue, int comshiftitem, out string Msg)
{
#region 老版本验证,中策验证规则,早8:00换班
//string hhmm = DateTime.Now.ToString("HHmm");
//plandate = DateTime.Now;
//shiftitem = comshiftitem;
//Msg = string.Empty;
//if (((hhmm.CompareTo("0758") > 0) && (hhmm.CompareTo("1540") < 0)) || ((hhmm.CompareTo("1558") > 0) && (hhmm.CompareTo("2340") < 0)) || ((hhmm.CompareTo("2358") > 0) || (hhmm.CompareTo("0740") < 0)))
//{
// string dt2 = Convert.ToDateTime(pickervalue).ToString("yyyy-MM-dd");
// if ((hhmm.CompareTo("1558") == 1) && (hhmm.CompareTo("2340") == -1))
// {
// shiftitem = 2;
// }
// else if (hhmm.CompareTo("0740") == -1 || hhmm.CompareTo("0740") == 0)
// {
// plandate = DateTime.Now.Date.AddDays(-1);
// shiftitem = 3;
// }
// else if (hhmm.CompareTo("2358") == 1)
// {
// plandate = DateTime.Now;
// shiftitem = 2;
// }
// else if ((hhmm.CompareTo("1540") == -1) && (hhmm.CompareTo("0758") == 1)) { shiftitem = 1; }
// string dt1 = plandate.ToString("yyyy-MM-dd");
// if ((dt1 != dt2) || (comshiftitem != shiftitem))
// {
// comshiftitem = shiftitem - 1;
// Msg = "请将日期 班次调整正确:" + "\r\n"
// + "当前生产日期:" + plandate.ToString("yyyy-MM-dd") + "\r\n"
// + "当前生产班次:" + shiftitem.ToString();
// return false;
// }
// return true;
//}
//return true;
#endregion
#region 老版本验证,建德验证规则,早7:30换班
string firstBegin = "0758";
string firstEnd = "1540";
string secondBegin = "1558";
string secondEnd = "2340";
string thirdBegin = "2358";
string thirdEnd = "0740";
DateTime dt = DateTime.Now;
object shiftT = null;
#region 从数据库获取值
DataTable shiftTable = PlanCommon.GetAllLocalShiftData();
if (shiftTable != null && shiftTable.Rows.Count >= 3)
{
shiftT = shiftTable.Rows[0]["ShiftST"];
if (shiftT != null && shiftT != System.DBNull.Value)
{
if (DateTime.TryParse(shiftT.ToString(), out dt))
{
firstBegin = String.Format("{0:HHmm}", dt.AddMinutes(-2));
}
}
shiftT = shiftTable.Rows[0]["ShiftET"];
if (shiftT != null && shiftT != System.DBNull.Value)
{
if (DateTime.TryParse(shiftT.ToString(), out dt))
{
firstEnd = String.Format("{0:HHmm}", dt.AddMinutes(-19));
}
}
shiftT = shiftTable.Rows[1]["ShiftST"];
if (shiftT != null && shiftT != System.DBNull.Value)
{
if (DateTime.TryParse(shiftT.ToString(), out dt))
{
secondBegin = String.Format("{0:HHmm}", dt.AddMinutes(-2));
}
}
shiftT = shiftTable.Rows[1]["ShiftET"];
if (shiftT != null && shiftT != System.DBNull.Value)
{
if (DateTime.TryParse(shiftT.ToString(), out dt))
{
secondEnd = String.Format("{0:HHmm}", dt.AddMinutes(-19));
}
}
shiftT = shiftTable.Rows[2]["ShiftST"];
if (shiftT != null && shiftT != System.DBNull.Value)
{
if (DateTime.TryParse(shiftT.ToString(), out dt))
{
thirdBegin = String.Format("{0:HHmm}", dt.AddMinutes(-2));
}
}
shiftT = shiftTable.Rows[2]["ShiftET"];
if (shiftT != null && shiftT != System.DBNull.Value)
{
if (DateTime.TryParse(shiftT.ToString(), out dt))
{
thirdEnd = String.Format("{0:HHmm}", dt.AddMinutes(-19));
}
}
}
#endregion
string hhmm = DateTime.Now.ToString("HHmm");
plandate = DateTime.Now;
shiftitem = comshiftitem;
Msg = string.Empty;
if (((hhmm.CompareTo(firstBegin) > 0) && (hhmm.CompareTo(firstEnd) < 0)) || ((hhmm.CompareTo(secondBegin) > 0) && (hhmm.CompareTo(secondEnd) < 0)) || ((hhmm.CompareTo(thirdBegin) > 0) || (hhmm.CompareTo(thirdEnd) < 0)))
{
string dt2 = Convert.ToDateTime(pickervalue).ToString("yyyy-MM-dd");
if ((hhmm.CompareTo(secondBegin) == 1) && (hhmm.CompareTo(secondEnd) == -1))
{
shiftitem = 2;
}
else if (hhmm.CompareTo(thirdEnd) == -1 || hhmm.CompareTo(thirdEnd) == 0)
{
plandate = DateTime.Now.Date.AddDays(-1);
shiftitem = 3;
}
else if (hhmm.CompareTo(thirdBegin) == 1)
{
//plandate = DateTime.Now;
//shiftitem = 2;
plandate = DateTime.Now;
if (thirdBegin.CompareTo(thirdEnd) == -1)
{
plandate = DateTime.Now.Date.AddDays(-1);
}
shiftitem = 3;
}
else if ((hhmm.CompareTo(firstEnd) == -1) && (hhmm.CompareTo(firstBegin) == 1)) { shiftitem = 1; }
string dt1 = plandate.ToString("yyyy-MM-dd");
if ((dt1 != dt2) || (comshiftitem != shiftitem))
{
comshiftitem = shiftitem - 1;
Msg = "请将日期 班次调整正确:" + "\r\n"
+ "当前生产日期:" + plandate.ToString("yyyy-MM-dd") + "\r\n"
+ "当前生产班次:" + shiftitem.ToString();
return false;
}
return true;
}
return true;
#endregion
#region 玲珑验证规则
//string hhmm = DateTime.Now.ToString("HHmm");
//plandate = DateTime.Now;
//shiftitem = comshiftitem;
//Msg = string.Empty;
//if (((hhmm.CompareTo("0758") > 0) && (hhmm.CompareTo("1540") < 0)) || ((hhmm.CompareTo("1558") > 0) && (hhmm.CompareTo("2340") < 0)) || ((hhmm.CompareTo("2358") > 0) || (hhmm.CompareTo("0740") < 0)))
//{
// string dt2 = Convert.ToDateTime(pickervalue).ToString("yyyy-MM-dd");
// if ((hhmm.CompareTo("1558") == 1) && (hhmm.CompareTo("2340") == -1))
// {
// shiftitem = 1;
// plandate = DateTime.Now.Date.AddDays(1);
// }
// else if (hhmm.CompareTo("0740") == -1 || hhmm.CompareTo("0740") == 0)
// {
// shiftitem = 2;
// }
// else if (hhmm.CompareTo("2358") == 1)
// {
// plandate = DateTime.Now.Date.AddDays(1);
// shiftitem = 2;
// }
// else if ((hhmm.CompareTo("1540") == -1) && (hhmm.CompareTo("0758") == 1)) { shiftitem = 3; }
// string dt1 = plandate.ToString("yyyy-MM-dd");
// if ((dt1 != dt2) || (comshiftitem != shiftitem))
// {
// comshiftitem = shiftitem - 1;
// Msg = "请将日期 班次调整正确:" + "\r\n"
// + "当前生产日期:" + plandate.ToString("yyyy-MM-dd") + "\r\n"
// + "当前生产班次:" + shiftitem.ToString();
// return false;
// }
// return true;
//}
//return true;
#endregion
}
#endregion
#region 清除扫描条码数据
///
/// 清除扫描条码数据,如果为网络版,则把网络库中对应本机台的条码数据删除,清空本地条码表(PptShelfBar)数据
///
/// 系统类型,单机、网络
/// 机台号
public static void TruncatePptShelfBar(Mesnac.Action.Base.BaseAction.NetTypes netType, string equipCode)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
if (netType == BaseAction.NetTypes.Net)
{
//清除网络库中对应此机台的条码数据
dbHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Server);
if (dbHelper == null)
{
action.LogError("获取网络数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "delete from ppt_ShelfBar where Equip_Code = @EquipCode";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@EquipCode", equipCode);
dbHelper.ExecuteNonQuery();
}
dbHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取本地数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql1 = "if exists(select * from sysobjects where xtype='U' and name='pmt_shelfbar') truncate table pmt_shelfbar";
dbHelper.CommandText = strSql1;
dbHelper.ExecuteNonQuery();
}
#endregion
#region 为掺用配方增加下传计划标志
///
/// 为掺用配方增加下传计划标志
///
/// 配方物料编码
public static void SetExePlan(string recipeMaterialCode)
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
if (dbHelper == null)
{
action.LogError("获取本地数据连接失败...");
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "truncate table pmt_ExecPlan;truncate table pmt_ChanYong;";
strSql += "insert into pmt_ExecPlan(Mater_code, Plan_Flag) values(@MaterCode,@PlanFlag)";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@MaterCode", recipeMaterialCode);
dbHelper.AddParameter("@PlanFlag", "1");
dbHelper.ExecuteNonQuery();
}
#endregion
#region 发送计划号
///
/// 发送计划号
///
/// 系统类型,网络、单机
/// 计划号
public static void SendPlanId(Mesnac.Action.Base.BaseAction.NetTypes netType, string planID)
{
//更新计划状态4-->5
if (PlanCommon.GetPlanState(planID) == PlanStates.Producting)
{
if (netType == BaseAction.NetTypes.Net)
{
PlanCommon.UpdatedPlanStateAndRealEndTime(Basic.DataSourceFactory.MCDbType.Server, planID, (int)PlanStates.Completed, DateTime.Now);
}
PlanCommon.UpdatedPlanStateAndRealEndTime(Basic.DataSourceFactory.MCDbType.Local, planID, (int)PlanStates.Completed, DateTime.Now);
//#region 更新日志
//PlanLog planLog =
//planLog.LastSelectDate = selectedDate;
//planLog.LastSelectShiftID = shiftID;
//planLog.LastPlanID = planID;
//base.LogDebug("序列化文件:" + PlanCommon.PlanLogFile);
//base.Serialize(planLog, PlanCommon.PlanLogFile); //序列化至文件
//if (File.Exists(PlanCommon.PlanLogFile))
//{
// File.Delete(PlanCommon.PlanLogFile);
//}
//#endregion
}
string netMsg = "{0}:{1}:0:0:0:0/";
netMsg = String.Format(netMsg, Global.ProtocalHeader.ReceivePlanIdIpNumber, planID);
Mesnac.Communication.TcpService.Instance.NetSendMsg(netMsg);
}
#endregion
#region 刷新网络库架子信息
///
/// 刷新网络库架子信息
///
/// 数据库类型,网络、本地
/// 架子号
/// 开始车号
/// 结束车号
public static void FlushShiftConfig(Basic.DataSourceFactory.MCDbType dbType, string firstLotBarCode, int firstLotSerialId, int lastLotNum)
{
if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
ICSharpCode.Core.LoggingService.Error("本地库不支持刷新架子信息!");
return;
}
StringBuilder memnote = new StringBuilder();
for (int i = firstLotSerialId; i <= lastLotNum; i++)
{
if (String.IsNullOrEmpty(memnote.ToString()))
{
memnote.Append(i);
}
else
{
memnote.Append(",");
memnote.Append(i);
}
}
FeedingAction action = new FeedingAction();
//action.DBLog("基本操作", "修改架子数", "条码" + firstLotBarCode);//记录日期LogData('基本操作','修改架子数','条码'+FirstLotBarCode);
DbHelper dbHelper;
dbHelper = action.NewDbHelper(dbType);
if (dbHelper == null)
{
action.LogError("获取数据连接失败...");
return;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "Update Ppt_ShiftConfig set Barcode_End = @BarcodeEnd, Shelf_Num = @ShelfNum - Barcode_Start + 1, Mem_Note = @MemNote";
strSql += " where Barcode = @Barcode and Barcode_Start < @BarcodeStart";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@BarcodeEnd", lastLotNum);
dbHelper.AddParameter("@ShelfNum", lastLotNum);
dbHelper.AddParameter("@MemNote", memnote.ToString());
dbHelper.AddParameter("@Barcode", firstLotBarCode);
dbHelper.AddParameter("@BarcodeStart", lastLotNum);
dbHelper.ExecuteNonQuery();
}
#endregion
#region 停止掺用计划
///
/// 停止掺用计划
///
public static void StopChanYongPlan()
{
DatabaseAction action = new DatabaseAction();
DbHelper dbHelper;
dbHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
bool result = PlanCommon.StopChanYongPlan(dbHelper);
}
///
/// 停止掺用计划
///
/// 数据访问对象
///
public static bool StopChanYongPlan(DbHelper dbHelper)
{
try
{
if (dbHelper == null)
{
ICSharpCode.Core.LoggingService.Warn("停止掺用失败:获取数据连接失败...");
return false;
}
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
string strSql = "update Pmt_ExecPlan set Plan_Flag = '2'";
dbHelper.CommandText = strSql;
dbHelper.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("停止掺用失败:" + ex.Message);
return false;
}
}
#endregion
#region 在本地库中添加批报表数据
///
/// 在本地库中添加批报表数据
///
/// 对应的计划编号
/// 成功返回true,失败返回false
public static bool AddPptGroupLot(string planId)
{
try
{
string strSql = String.Empty;
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
if (localHelper == null)
{
ICSharpCode.Core.LoggingService.Debug("添加批报表失败:获取本地数据连接失败!");
return false;
}
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
strSql = "Update PptGroupLot set FinishTag = 1 where FinishTag = 0";
localHelper.CommandText = strSql;
localHelper.ExecuteNonQuery();
DataRow planRow = PlanCommon.GetPlanData(Basic.DataSourceFactory.MCDbType.Local, planId);
if (planRow != null)
{
localHelper.ClearParameter();
strSql = "insert into PptGroupLot(ShiftID,ShiftClass,RecipeCode,RecipeName,SetNumber,StartDatetime,FinishTag,FinishNum)";
strSql += " values(@ShiftID,@ShiftClass,@RecipeCode,@RecipeName,@SetNumber,@StartDatetime,@FinishTag,@FinishNum)";
localHelper.CommandText = strSql;
localHelper.AddParameter("@ShiftID", planRow["ShiftID"]);
localHelper.AddParameter("@ShiftClass", planRow["ClassID"]);
localHelper.AddParameter("@RecipeCode", planRow["RecipeMaterialCode"]);
localHelper.AddParameter("@RecipeName", planRow["RecipeMaterialName"]);
localHelper.AddParameter("@SetNumber", planRow["PlanNum"]);
localHelper.AddParameter("@StartDatetime", DateTime.Now);
localHelper.AddParameter("@FinishTag", 0);
localHelper.AddParameter("@FinishNum", 0);
localHelper.ExecuteNonQuery();
}
ICSharpCode.Core.LoggingService.Debug("添加批报表成功!");
return true;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("添加批报表失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 在本地数据库,根据计划号获取对应的Recipe_Code
///
/// 在本地数据库,根据计划号获取对应的Recipe_Code
///
/// 计划号
/// 获取成功返回对应的值,失败返回String.Empty
public static string GetRecipeCodeByPlanID(string planID)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
// string strSql = @"select a.recipe_code from pmt_recipe as a
// inner join ppt_plan as b
// on a.equip_code = substring(b.equip_code,4,2) and a.mater_code = b.mater_code and a.edt_code = b.edt_code
// where b.plan_id = @PlanID";
string strSql = @"SELECT top 1 rtrim(a.mater_name)+'('+substring(rtrim(isnull(a.recipe_code,'')),7,2)+')'+'['+rtrim(A.mater_code)+']' AS ShowName
FROM pmt_recipe as a
inner join ppt_plan as b
on a.equip_code = substring(b.equip_code,4,2) and a.mater_code = b.mater_code and a.edt_code = b.edt_code
where b.plan_id = @PlanID";
localHelper.CommandText = strSql;
localHelper.AddParameter("@PlanID", planID);
object result = localHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
return result.ToString();
}
else
{
return String.Empty;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取Recipe_Code失败:" + ex.Message, ex);
return String.Empty;
}
}
#endregion
#region 根据物料编码获取物料名称
///
/// 根据物料编码获取物料名称
///
/// 数据连接类型,本地,网络
/// 物料编码
/// 返回对应的物料名称
public static string GetMaterName(Mesnac.Basic.DataSourceFactory.MCDbType dbType, string materCode)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper dbHelper = action.NewDbHelper(dbType);
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
string strSql = String.Empty;
if (dbType == Basic.DataSourceFactory.MCDbType.Local)
{
strSql = @"select top 1 mater_name from pmt_material where mater_code = @mater_code";
}
else
{
strSql = @"select top 1 Mater_name from Pmt_material where Mater_code = @mater_code";
}
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@mater_code", materCode.Trim());
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
return result.ToString();
}
else
{
return String.Empty;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取Recipe_Code失败:" + ex.Message, ex);
return String.Empty;
}
}
#endregion
#region 在本地数据库,判断某个物料编码是否存在
///
/// 在本地数据库,判断某个物料编码是否存在
///
/// 要判断的物料编码
/// 物料编码存在返回true,否则返回false
public static bool IsExistsMaterCode(string materCode)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = @"select COUNT(*) from pmt_material where mater_code=@materCode";
localHelper.CommandText = strSql;
localHelper.AddParameter("@materCode", materCode.Trim());
object result = localHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取mater_code失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 在本地数据库,判断某个物料名称是否存在
///
/// 在本地数据库,判断某个物料名称是否存在
///
/// 要判断的物料名称
/// 物料名称存在返回true,否则返回false
public static bool IsExistsMaterName(string materName)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = @"select COUNT(*) from pmt_material where mater_name=@materName";
localHelper.CommandText = strSql;
localHelper.AddParameter("@materName", materName.Trim());
object result = localHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取Recipe_Name失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 在本地数据库,判断某个配方编码是否存在
///
/// 在本地数据库,判断某个配方编码是否存在
///
/// 要判断的配方编码
/// 如果存在返回true,不存在返回false
public static bool IsExistsRecipeMaterCode(string materCode)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = @"select COUNT(*) from pmt_recipe where mater_code=@materCode and equip_code=@equipCode";
localHelper.CommandText = strSql;
localHelper.AddParameter("@materCode", materCode);
localHelper.AddParameter("@equipCode", action.CurrEquipCode.Substring(3, 2));
object result = localHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取Recipe_Code失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 在本地数据库,判断某个配方名称是否存在
///
/// 在本地数据库,判断某个配方名称是否存在
///
/// 要判断的配方名称
/// 如果存在返回true,不存在返回false
public static bool IsExistsRecipeMaterName(string materName)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = @"select COUNT(*) from pmt_recipe where mater_name=@materName and equip_code=@equipCode";
localHelper.CommandText = strSql;
localHelper.AddParameter("@materName", materName);
localHelper.AddParameter("@equipCode", action.CurrEquipCode.Substring(3, 2));
object result = localHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = 0;
if (int.TryParse(result.ToString(), out intResult))
{
if (intResult > 0)
{
return true;
}
}
}
return false;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取Recipe_Name失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 在本地数据库,根据计划号获取对应的配方总重TotalWeight
///
/// 在本地数据库,根据计划号获取对应的Recipe_Code
///
/// 计划号
/// 获取成功返回对应的值,失败返回String.Empty
public static double GetTotalWeightByPlanID(string planID)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = @"select a.total_weight from pmt_recipe as a
inner join ppt_plan as b
on a.equip_code = substring(b.equip_code,4,2) and a.mater_code = b.mater_code and a.edt_code = b.edt_code
where b.plan_id = @PlanID";
localHelper.CommandText = strSql;
localHelper.AddParameter("@PlanID", planID);
object result = localHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
return Convert.ToDouble(result.ToString());
}
else
{
return 0;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取Total_Weight失败:" + ex.Message, ex);
return 0;
}
}
#endregion
#region 更新计划表中的单车总重
///
/// 更新计划表中的单车总重
///
/// 计划ID
/// 设定总重
public static void UpdateTotalWeight(string planID, double totalWeight)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.Local);
localHelper.CommandType = CommandType.Text;
localHelper.ClearParameter();
string strSql = @"update ppt_plan set total_weight = @total_weight where plan_id = @PlanID";
localHelper.CommandText = strSql;
localHelper.AddParameter("@total_weight", totalWeight);
localHelper.AddParameter("@PlanID", planID);
localHelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("更新计划表Total_Weight失败:" + ex.Message, ex);
}
}
#endregion
#region 判断本地库当前计划与上一个计划是否生产同一物料
///
/// 判断本地库当前计划与上一个计划是否生产同一物料
///
/// 当前计划号
/// 机台号
/// 计划日期
/// 班次
/// 相同返回true,不同返回false
public static bool IsSameMaterCode(string currPlanID, string equipCode, DateTime planDate, int shiftID)
{
string prePlanID = PlanCommon.GetPrevPlanID(currPlanID, equipCode, planDate, shiftID);
if (String.IsNullOrEmpty(prePlanID))
{
return false;
}
DataRow prevRow = PlanCommon.GetPlanData(Basic.DataSourceFactory.MCDbType.Local, prePlanID);
DataRow currRow = PlanCommon.GetPlanData(Basic.DataSourceFactory.MCDbType.Local, prePlanID);
if (prevRow != null && currRow != null)
{
if (prevRow["RecipeMaterialCode"] != null && prevRow["RecipeMaterialCode"] != System.DBNull.Value && currRow["RecipeMaterialCode"] != null && currRow["RecipeMaterialCode"] != System.DBNull.Value)
{
if (prevRow["RecipeMaterialCode"].ToString() == currRow["RecipeMaterialCode"].ToString())
{
return true;
}
}
}
return false;
}
#endregion
#region 刷新胶料称量画面物料列
///
/// 刷新胶料称量画面物料列
///
public static void GetScanBarcode()
{
FeedingAction action = new FeedingAction();
if (action.NetType != Mesnac.Action.Base.BaseAction.NetTypes.Net)
{
return;
}
try
{
if (!PlanCommon.IsCanConnectServer())
{
ICSharpCode.Core.LoggingService.Error("扫描架子条码处理失败:获取网络数据库连接失败!");
return;
}
DbHelper serverHelper = action.NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Server);
if (serverHelper == null)
{
ICSharpCode.Core.LoggingService.Error("扫描架子条码处理失败:获取网络数据库连接失败!");
return;
}
serverHelper.CommandType = CommandType.Text;
serverHelper.ClearParameter();
//MaterCode 条码对应物料 ,MaterCode2 配方中的物料
string strSql = @" SELECT Barcode,mater_Code2,Mater_name FROM Ppt_Shelfbar a
join Pmt_material b on a.mater_Code2=b.Mater_code
where Equip_code= @EquipCode
and Used_Flag<>'1'";
serverHelper.CommandText = strSql;
serverHelper.AddParameter("@EquipCode", action.CurrEquipCode);
DataTable table = serverHelper.ToDataTable();
StringBuilder sb = new StringBuilder();
if (table != null && table.Rows.Count > 0)
{
foreach (DataRow row in table.Rows)
{
if (String.IsNullOrEmpty(sb.ToString()))
{
sb.Append(row["MaterialName"] as string);
sb.Append("|");
sb.Append(row["Barcode"] as string);
}
else
{
sb.Append("|");
sb.Append(row["MaterialName"] as string);
sb.Append("|");
sb.Append(row["Barcode"] as string);
}
}
}
action.UpdateSysValue("JLCLHM_BarcodeMaterialList", sb.ToString()); //更新ssValue
action.RefreshCustomEquip(); //更新设备变量
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("扫描架子条码处理失败:" + ex.Message, ex);
}
}
#endregion
#region 向一次法本地库追加一次法计划
///
/// 向一次法本地库追加一次法计划
///
/// 要追加的计划号
/// 成功返回true,失败返回false
public static bool AddPlanOne(string planId)
{
try
{
DataRow planRowData = PlanCommon.GetPlanData(Basic.DataSourceFactory.MCDbType.Local, planId);
if (planRowData != null)
{
DateTime planDate = Mesnac.Basic.DataProcessor.RowValue(planRowData, "PlanDate", DateTime.Now);
int shiftId = Mesnac.Basic.DataProcessor.RowValue(planRowData, "ShiftID", 0);
string recipeCode = Mesnac.Basic.DataProcessor.RowValue(planRowData, "RecipeMaterialCode", String.Empty);
string recipeName = PlanCommon.GetMaterName(Basic.DataSourceFactory.MCDbType.Local, recipeCode);
int setNum = Mesnac.Basic.DataProcessor.RowValue(planRowData, "PlanNum", 0);
int realNum = Mesnac.Basic.DataProcessor.RowValue(planRowData, "RealNum", 0);
FeedingAction action = new FeedingAction();
DbHelper localOneHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.LocalOne);
if (localOneHelper == null)
{
ICSharpCode.Core.LoggingService.Warn("向一次法本地库追加一次法计划失败:获取一次法本地库数据连接失败...");
return false;
}
localOneHelper.CommandType = CommandType.Text;
localOneHelper.ClearParameter();
string strSql = "INSERT INTO Pmt_Plan_One(Plan_time, Plan_Shift, Recipe_code, Recipe_name, Set_num, Real_num, Plan_ID, [Status]) VALUES(@Plan_time,@Plan_Shift,@Recipe_code,@Recipe_name,@Set_num,@Real_num,@Plan_ID,@Status)";
localOneHelper.CommandText = strSql;
localOneHelper.AddParameter("@Plan_time", planDate);
localOneHelper.AddParameter("@Plan_Shift", shiftId);
localOneHelper.AddParameter("@Recipe_code", recipeCode);
localOneHelper.AddParameter("@Recipe_name", recipeName);
localOneHelper.AddParameter("@Set_num", setNum);
localOneHelper.AddParameter("@Real_num", realNum);
localOneHelper.AddParameter("@Plan_ID", planId);
localOneHelper.AddParameter("@Status", 0);
localOneHelper.ExecuteNonQuery();
return true;
}
else
{
ICSharpCode.Core.LoggingService.Warn("向一次法本地库追加一次法计划失败:没有获取到计划数据,PlanID = " + planId);
return false;
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("向一次法本地库追加一次法计划失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 修改一次法本地库计划表的设定数和状态
///
/// 修改一次法本地库计划表的设定数和状态
///
/// 要修改一次法计划的计划号
/// 新设定数
/// 新的状态:添加:0,修改数量:2,重传配方:3,终止为4
/// 是否更新设定数
/// 成功返回true,失败返回false
public static bool UpdatePlanOne(string planId, int setNum, int status, bool isUpdateSetNum)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper localOneHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.LocalOne);
if (localOneHelper == null)
{
ICSharpCode.Core.LoggingService.Warn("向一次法本地库追加一次法计划失败:获取一次法本地库数据连接失败...");
return false;
}
localOneHelper.CommandType = CommandType.Text;
localOneHelper.ClearParameter();
string strSql = String.Empty;
if (isUpdateSetNum)
{
strSql = "Update Pmt_Plan_One set Set_num = @Set_num,[Status] = @Status where Plan_ID = @Plan_ID";
localOneHelper.AddParameter("@Set_num", setNum);
}
else
{
strSql = "Update Pmt_Plan_One set [Status] = @Status where Plan_ID = @Plan_ID";
}
localOneHelper.CommandText = strSql;
localOneHelper.AddParameter("@Status", status);
localOneHelper.AddParameter("@Plan_ID", planId);
localOneHelper.ExecuteNonQuery();
return true;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("修改一次法本地库计划表的设定数和状态失败:" + ex.Message, ex);
return false;
}
}
#endregion
#region 获取一次法计划完成标志的值
///
/// 获取一次法计划完成标志的值,完成标志(PlanFinishTag = 2)代表计划完成或终止
///
/// 计划号
/// 返回对应计划的完成标志
public static int GetPlanOneFinishTag(string planId)
{
try
{
FeedingAction action = new FeedingAction();
DbHelper dbHelper = action.NewDbHelper(Basic.DataSourceFactory.MCDbType.LocalOne);
if (dbHelper == null)
{
ICSharpCode.Core.LoggingService.Warn("获取一次发计划完成标志失败:获取一次法数据库连接失败!");
return -1;
}
dbHelper.CommandType = CommandType.Text;
string strSql = "select top 1 PlanFinishTag from pmt_PlanQueue_One where PlanNo = @PlanNo";
dbHelper.CommandText = strSql;
dbHelper.AddParameter("@PlanNo", planId);
object result = dbHelper.ToScalar();
if (result != null && result != System.DBNull.Value)
{
int intResult = -1;
if (int.TryParse(result.ToString(), out intResult))
{
return intResult;
}
}
return -1;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("获取一次法计划完成标志失败:" + ex.Message);
return -2;
}
}
#endregion
#region 设置(网格控件)的表头、字体和行样式
///
/// 设置(网格控件)的表头、字体和行样式
///
///
public static void SetDataGridViewStyle(DataGridView grid)
{
lock (String.Empty)
{
try
{
if (grid == null)
{
ICSharpCode.Core.LoggingService.Warn("设置计划背景色失败:网格控件为null");
return;
}
grid.RowTemplate.Height = 28;
grid.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
grid.ColumnHeadersHeight = 28;
grid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
grid.RowHeadersVisible = false;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("【当班计划】设置(网格控件)的表头、字体和行样式SetDataGridViewStyle失败:" + ex.Message);
}
}
}
///
/// 设置(网格控件)的表头、字体和行样式
///
///
public static void SetDataGridViewStyle48(DataGridView grid)
{
lock (String.Empty)
{
try
{
if (grid == null)
{
ICSharpCode.Core.LoggingService.Warn("设置计划背景色失败:网格控件为null");
return;
}
grid.RowTemplate.Height = 60;
grid.DefaultCellStyle.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
grid.ColumnHeadersHeight = 70;
grid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
grid.RowHeadersVisible = false;
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("【当班计划】设置(网格控件)的表头、字体和行样式SetDataGridViewStyle48失败:" + ex.Message);
}
}
}
#endregion
#region 设置(网格控件)计划状态背景色
///
/// 设置计划状态背景色
///
///
public static void SetBackColor(DataGridView grid)
{
lock (String.Empty)
{
try
{
if (grid == null)
{
ICSharpCode.Core.LoggingService.Warn("设置计划背景色失败:网格控件为null");
return;
}
if (grid.Columns.Contains("PlanNum"))
{
grid.Columns["PlanNum"].Width = 50;
}
if (grid.Columns.Contains("RealNum"))
{
grid.Columns["RealNum"].Width = 50;
}
if (grid.Columns.Contains("PlanID"))
{
grid.Columns["PlanID"].Width = 130;
}
//grid.Refresh();
string lastPlanID = String.Empty;
PlanLog log = PlanCommon.PlanLog;
if (log != null)
{
lastPlanID = log.LastPlanID;
}
grid.ClearSelection(); //清空选中行
grid.ColumnHeadersHeight = 25;
grid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
grid.RowHeadersVisible = false;
grid.RowTemplate.Height = 28;
grid.RowsDefaultCellStyle.Font = new System.Drawing.Font("宋体", 12, System.Drawing.FontStyle.Bold);
foreach (DataGridViewRow row in grid.Rows)
{
switch (Convert.ToInt32(row.Cells["PlanState"].Value))
{
case (int)PlanStates.Producting:
row.DefaultCellStyle.BackColor = System.Drawing.Color.GreenYellow; //绿色
break;
case (int)PlanStates.Completed:
if (Convert.ToInt32(row.Cells["RealNum"].Value) < Convert.ToInt32(row.Cells["PlanNum"].Value))
{
//停止计划
row.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(220, 220, 120); //灰色
}
else
{
//完成计划
row.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(220, 220, 220); //灰色
}
break;
default:
break;
}
//if (row.Cells["PlanId"].Value.ToString().Trim() == lastPlanID)
//{
// row.Selected = true;
//}
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("设置计划背景色失败:" + ex.Message);
}
}
}
///
/// 设置计划状态背景色
///
///
public static void SetBackColor48(DataGridView grid)
{
lock (String.Empty)
{
try
{
if (grid == null)
{
ICSharpCode.Core.LoggingService.Warn("设置计划背景色失败:网格控件为null");
return;
}
if (grid.Columns.Contains("PlanNum"))
{
grid.Columns["PlanNum"].Width = 200;
}
if (grid.Columns.Contains("RealNum"))
{
grid.Columns["RealNum"].Width = 200;
}
//grid.Refresh();
grid.ClearSelection(); //清空选中行
grid.ColumnHeadersHeight = 60;
grid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
grid.RowHeadersVisible = false;
grid.RowTemplate.Height = 70;
grid.RowsDefaultCellStyle.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Bold);
foreach (DataGridViewRow row in grid.Rows)
{
row.Selected = false;
switch (Convert.ToInt32(row.Cells["PlanState"].Value))
{
case (int)PlanStates.Producting:
row.DefaultCellStyle.BackColor = System.Drawing.Color.GreenYellow; //绿色
break;
case (int)PlanStates.Completed:
if (Convert.ToInt32(row.Cells["RealNum"].Value) < Convert.ToInt32(row.Cells["PlanNum"].Value))
{
//停止计划
row.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(220, 220, 120); //灰色
}
else
{
//完成计划
row.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(220, 220, 220); //灰色
}
break;
default:
break;
}
}
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("设置计划背景色失败:" + ex.Message);
}
}
}
#endregion
}
#endregion
#region 计划日志
///
/// 计划日志对象
///
[Serializable]
public class PlanLog
{
private DateTime _lastSelectDate = DateTime.Now;
private int _lastSelectShiftID = 1;
private int _lastClassID = 1;
private string _lastPlanID = String.Empty;
///
/// 最后一次执行计划时选择的日期
///
public DateTime LastSelectDate { get { return this._lastSelectDate; } set { this._lastSelectDate = value; } }
///
/// 最后一次执行计划是选择的班次ID
///
public int LastSelectShiftID { get { return this._lastSelectShiftID; } set { this._lastSelectShiftID = value; } }
///
/// 最后一次执行计划对应的班组
///
public int LastClassID { get { return this._lastClassID; } set { this._lastClassID = value; } }
///
/// 最后一次执行的计划号
///
public string LastPlanID { get { return this._lastPlanID; } set { this._lastPlanID = value; } }
}
#endregion
#region 计划状态
///
/// 计划状态
///
public enum PlanStates
{
///
/// 未知状态
///
UnKnow = -1,
///
/// 初始化
///
Init = 0,
///
/// 新增
///
New = 1,
///
/// 下达
///
Issued = 2,
///
/// 已接收
///
Received = 3,
///
/// 正在生产
///
Producting = 4,
///
/// 已完成
///
Completed = 5
}
#endregion
#region 配方简单实体封装
///
/// 配方简单实体封装
///
[Serializable]
public class SimplePmtRecipe
{
///
/// ID
///
public string ObjID { get; set; }
///
/// 物料名称
///
public string RecipeMaterialName { get; set; }
///
/// 配方类型
///
public string RecipeTypeName { get; set; }
///
/// 版本号
///
public int RecipeVersionID { get; set; }
private string _content = String.Empty;
///
/// 内容
///
public string Content
{
get { return _content; }
set { _content = value; }
}
public override string ToString()
{
if (String.IsNullOrEmpty(this._content))
{
return String.Format("{0}[{1}]{2}", this.RecipeMaterialName, this.RecipeTypeName, this.RecipeVersionID);
}
else
{
return this._content;
}
}
}
#endregion
#region 胶料称锁定设置
///
/// 胶料称锁定设置,对应网络库的PmtRubWeightSetting表
///
[Serializable]
public class RubWeightSetting
{
public int ObjID { get; set; }
///
/// 机台号
///
public string EquipCode { get; set; }
///
/// 状态:0-停机,1-运转,2-空转
///
public string State { get; set; }
///
/// 电流值
///
public int EquipElectricCurrent { get; set; }
///
/// 锁定状态,0-不锁,1-部分锁定,2-全锁定
///
public string WeightSettingCtrl { get; set; }
///
/// 删除标志,0-不删除,1-已删除
///
public string DeleteFlag { get; set; }
///
/// 备注
///
public string Remark { get; set; }
}
#endregion
#region 简单计划实体类封装
///
/// 计划实体类
///
[Serializable]
public class SimplePlan
{
#region 字段定义
private string _planID;
private DateTime _planDate;
private string _recipeEquipCode;
private string _recipeMaterialCode;
private string _recipeMaterialName;
private string _recipeVersionID;
private int _shiftID;
private int _classID;
private int _priLevel;
private string _recipeName;
private decimal _totalWeight;
private int _planNum;
private decimal _planWeight;
private int _realNum;
private decimal _realWeight;
private int _planState;
private string _userID;
#endregion
#region 属性定义
public string PlanID
{
get { return _planID; }
set { _planID = value; }
}
public DateTime PlanDate
{
get { return _planDate; }
set { _planDate = value; }
}
public string RecipeEquipCode
{
get { return _recipeEquipCode; }
set { _recipeEquipCode = value; }
}
public string RecipeMaterialCode
{
get { return _recipeMaterialCode; }
set { _recipeMaterialCode = value; }
}
public string RecipeMaterialName
{
get { return _recipeMaterialName; }
set { _recipeMaterialName = value; }
}
public string RecipeVersionID
{
get { return _recipeVersionID; }
set { _recipeVersionID = value; }
}
public int ShiftID
{
get { return _shiftID; }
set { _shiftID = value; }
}
public int ClassID
{
get { return _classID; }
set { _classID = value; }
}
public int PriLevel
{
get { return _priLevel; }
set { _priLevel = value; }
}
public string RecipeName
{
get { return _recipeName; }
set { _recipeName = value; }
}
public decimal TotalWeight
{
get { return _totalWeight; }
set { _totalWeight = value; }
}
public int PlanNum
{
get { return _planNum; }
set { _planNum = value; }
}
public decimal PlanWeight
{
get { return _planWeight; }
set { _planWeight = value; }
}
public int RealNum
{
get { return _realNum; }
set { _realNum = value; }
}
public decimal RealWeight
{
get { return _realWeight; }
set { _realWeight = value; }
}
public int PlanState
{
get { return _planState; }
set { _planState = value; }
}
public string UserID
{
get { return _userID; }
set { _userID = value; }
}
#endregion
}
#endregion
#endregion
}