using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using DataLinkMesWork;
using System.Data.OleDb;
using SystemFramework;
namespace bizFacade
{
public partial class BaseDataSystemMES
{
///
/// 检测表 [MES_装配数据_发动机号_追踪代码] 中的扫描挂牌码[追踪代码]是否存在
/// 不存在 返回 true 否则返回 false
///分线活塞连杆上线工位流程:(活塞连杆OP3800)MachineType=“S”,
///ScannerType = “1”,OpType=“F103”。每个发动机装配六个活塞连杆。
///六个活塞连杆分别放在三个连续的活塞连杆托盘上,每个托盘放两个活塞连杆,
///每个工位完成一个托盘两个活塞连杆的安装。
///三个连续的活塞连杆托盘上的描挂牌码(物料追踪号[追踪代码])相同。
///活塞连杆上托盘:
///1:PLC向MES发送工件到位,开始扫描信号。WorkStart=1
///2:扫描挂牌码(物料追踪号[追踪代码])
///3:检测表 [MES_装配数据_发动机号_追踪代码] 中的扫描挂牌码[追踪代码]是否存在(是否禁用
///3 and追踪代码 = ‘’)。
///3.1:如果不存在或存在并且验证完成(是否禁用=3),
///显示当前生产计划对应的活塞连杆信息(物料表和需要验证的物料表);
///保存[追踪代码]和[追踪标识](追踪标识=HL+时间标签)
///到表[MES_装配数据_发动机号_追踪代码]中。[追踪标识]对应表[MES_装配数据_发动机号_追踪代码]的
///[发动机号]字段。MES向PLC写入发动机号、机型、机型标志、追踪代码;
///MES向PLC写入MES激发变量扫描完成,EngineGetOver=1
///3.2:如果存在并且验证完成(是否禁用3),使用[MES_装配数据_发动机号_追踪代码],
///显示扫描挂牌码对应的活塞连杆信息(物料表和需要验证的物料表)。
///MES向PLC写入发动机号、机型、机型标志、追踪代码;
///MES向PLC写入MES激发变量扫描完成,EngineGetOver=1
///3.3:如果物料验证完成,追踪代码对应的[是否禁用]=3
///(每验证完成一个托盘对应活塞连杆物料增加1)。
///3.4:显示每一个托盘对应的验证物料。
///4物料验证:每验证完成一个托盘对应活塞连杆物料,如果没有全部完成验证,
///MaterialVerifyOver=1,不清空表[MES_装配数据_零部件追溯_临时状态]。
///PLC向MES发送工件离开信号WorkStart=0,保存数据到信息管理系统,
///完成工件当日计数和工作开始时间和结束时间。
///5:如果全部完成验证,MaterialVerifyOver=1,清空表[MES_装配数据_零部件追溯_临时状态]。
///每验证完成一个托盘对应活塞连杆物料,追踪代码对应的[是否禁用]增加1,
///作为活塞连杆分组验证标识。每验证一个物料,保存数据到表[MES_装配数据_零部件追溯_数据主表]
///和[MES_装配数据_零部件追溯],发动机号=追踪标识。PLC向MES发送工件离开信号WorkStart=0,
///保存数据到信息管理系统,完成工件当日计数和工作开始时间和结束时间。
///6:通过OpNameMainLine(总线活塞连杆上线工位)工位数据表和本工位的装配指南,
///获得当前工位的装配指南,订单号、机型、机型标志。
///7:显示活塞连杆订单号、活塞连杆、机型、机型标志
///-1 不合理
///0 没记录
///1 验证完成第一组
///2 验证完成第二组
///3 验证完成第三组
///
public static int TraceTableCheck_F3_New(string opName, string TraceCode)
{
DataTable dt;
int isFalse;
string sql;
//存在,并且没有验证完成条件
sql = "SELECT top 1 是否禁用 FROM [MES_装配数据_发动机号_追踪代码] "
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')"
+" order by 操作时间 desc ";
if (!SQLCommon.SqlServerConnectionStatus)
{
DataAccess.ExecuteDataTable_OleDb_Access(sql, out dt);
}
else
{
DataAccess.ExecuteDataTable(sql, out dt);
}
if (dt == null)
{
//读[MES_装配数据_发动机号_追踪代码]数据失败
isFalse = -1;
}
if (dt.Rows.Count > 0)
{
isFalse = Convert.ToInt32(dt.Rows[0]["是否禁用"]);
}
else
{
isFalse = 0;
}
return isFalse;
}
///
/// 检测表 [MES_装配数据_发动机号_追踪代码] 中的扫描挂牌码[追踪代码]是否存在
/// 不存在 返回 true 否则返回 false
///分线活塞连杆上线工位流程:(活塞连杆OP3800)MachineType=“S”,
///ScannerType = “1”,OpType=“F103”。每个发动机装配六个活塞连杆。
///六个活塞连杆分别放在三个连续的活塞连杆托盘上,每个托盘放两个活塞连杆,
///每个工位完成一个托盘两个活塞连杆的安装。
///三个连续的活塞连杆托盘上的描挂牌码(物料追踪号[追踪代码])相同。
///活塞连杆上托盘:
///1:PLC向MES发送工件到位,开始扫描信号。WorkStart=1
///2:扫描挂牌码(物料追踪号[追踪代码])
///3:检测表 [MES_装配数据_发动机号_追踪代码] 中的扫描挂牌码[追踪代码]是否存在(是否禁用
///3 and追踪代码 = ‘’)。
///3.1:如果不存在或存在并且验证完成(是否禁用=3),
///显示当前生产计划对应的活塞连杆信息(物料表和需要验证的物料表);
///保存[追踪代码]和[追踪标识](追踪标识=HL+时间标签)
///到表[MES_装配数据_发动机号_追踪代码]中。[追踪标识]对应表[MES_装配数据_发动机号_追踪代码]的
///[发动机号]字段。MES向PLC写入发动机号、机型、机型标志、追踪代码;
///MES向PLC写入MES激发变量扫描完成,EngineGetOver=1
///3.2:如果存在并且验证完成(是否禁用3),使用[MES_装配数据_发动机号_追踪代码],
///显示扫描挂牌码对应的活塞连杆信息(物料表和需要验证的物料表)。
///MES向PLC写入发动机号、机型、机型标志、追踪代码;
///MES向PLC写入MES激发变量扫描完成,EngineGetOver=1
///3.3:如果物料验证完成,追踪代码对应的[是否禁用]=3
///(每验证完成一个托盘对应活塞连杆物料增加1)。
///3.4:显示每一个托盘对应的验证物料。
///4物料验证:每验证完成一个托盘对应活塞连杆物料,如果没有全部完成验证,
///MaterialVerifyOver=1,不清空表[MES_装配数据_零部件追溯_临时状态]。
///PLC向MES发送工件离开信号WorkStart=0,保存数据到信息管理系统,
///完成工件当日计数和工作开始时间和结束时间。
///5:如果全部完成验证,MaterialVerifyOver=1,清空表[MES_装配数据_零部件追溯_临时状态]。
///每验证完成一个托盘对应活塞连杆物料,追踪代码对应的[是否禁用]增加1,
///作为活塞连杆分组验证标识。每验证一个物料,保存数据到表[MES_装配数据_零部件追溯_数据主表]
///和[MES_装配数据_零部件追溯],发动机号=追踪标识。PLC向MES发送工件离开信号WorkStart=0,
///保存数据到信息管理系统,完成工件当日计数和工作开始时间和结束时间。
///6:通过OpNameMainLine(总线活塞连杆上线工位)工位数据表和本工位的装配指南,
///获得当前工位的装配指南,订单号、机型、机型标志。
///7:显示活塞连杆订单号、活塞连杆、机型、机型标志
///-1 不合理
///0 没记录
///1 验证完成第一组
///2 验证完成第二组
///3 验证完成第三组
///
public static int TraceTableCheck_F3(string opName, string TraceCode)
{
DataTable dt;
int isFalse;
string sql;
//存在,并且没有验证完成条件
sql = "SELECT top 1 是否禁用 FROM [MES_装配数据_发动机号_追踪代码] "
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')"
+" order by 操作时间 desc ";
if (!SQLCommon.SqlServerConnectionStatus)
{
DataAccess.ExecuteDataTable_OleDb_Access(sql, out dt);
}
else
{
DataAccess.ExecuteDataTable(sql, out dt);
}
if (dt == null)
{
//读[MES_装配数据_发动机号_追踪代码]数据失败
isFalse = -1;
}
if (dt.Rows.Count > 0)
{
isFalse = Convert.ToInt32(dt.Rows[0]["是否禁用"]);
}
else
{
isFalse = 0;
}
return isFalse;
}
///
/// 用于:活塞连杆上线
/// 活塞连杆分三组,验证完成一组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=1;
/// 验证完成二组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=2;
/// 验证完成三组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=3。
/// 当第三组验证完成后,表[MES_计划BOM_发动机号]的字段“是否装配代码”=1,
/// 表示已经完成一个发动机的活塞连杆装配。
///
///
///
///
///
public static int TraceTableCheck(string opName, string TraceCode, string strConnectionstring)
{
DataTable dt;
int isFalse;
string sql;
//存在,并且没有验证完成条件
sql = "SELECT 是否禁用 FROM [MES_装配数据_发动机号_追踪代码] "
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')";
DataAccess.ExecuteDataTable_OleDb_Access(sql, strConnectionstring, out dt);
if (dt == null)
{
isFalse = -1;
}
if (dt.Rows.Count > 0)
{
isFalse = Convert.ToInt32(dt.Rows[0]["是否禁用"]);
}
else
{
isFalse = -1;
}
return isFalse;
}
///
/// 用于:活塞连杆上线
/// 活塞连杆分三组,验证完成一组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=1;
/// 验证完成二组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=2;
/// 验证完成三组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=3。
/// 当第三组验证完成后,表[MES_计划BOM_发动机号]的字段“是否装配代码”=1,
/// 表示已经完成一个发动机的活塞连杆装配。
///
///
///
///
public static int TraceTableCheck(string opName, string TraceCode)
{
DataTable dt;
int isFalse;
string sql;
//存在,并且没有验证完成条件
sql = "SELECT 是否禁用 FROM [MES_装配数据_发动机号_追踪代码] "
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')";
DataAccess.ExecuteDataTable_OleDb_Access(sql, out dt);
if (dt == null)
{
isFalse = -1;
}
if (dt.Rows.Count > 0)
{
isFalse = Convert.ToInt32(dt.Rows[0]["是否禁用"]);
}
else
{
isFalse = -1;
}
return isFalse;
}
///
/// 更新活塞连杆验证状态(是否禁用加"1")
/// 是否禁用 =0 开始验证新的活塞连杆
/// =1第一组验证完成
/// =2第二组验证完成
/// =3第三组验证完成
/// 6.5 活塞连杆分三组,验证完成一组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=1;
/// 验证完成二组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=2;
/// 验证完成三组(包括将验证的物料保存以后),
/// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=3。
/// 当第三组验证完成后,
/// 表[MES_计划BOM_发动机号]的字段“是否装配代码”=1,
/// 表示已经完成一个发动机的活塞连杆装配。
///
///
///
///
///
public static bool TraceTableUpdate_AddOne_F3(string opName, string TraceCode, string EngineID)
{
string sql;
DataTable dt;
int count;
sql = "SELECT top 1 是否禁用 FROM [MES_装配数据_发动机号_追踪代码] "
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')"
+ " order by 操作时间 desc ";
DataAccess.ExecuteDataTable_OleDb_Access(sql, out dt);
if (dt == null) return false;
if (dt.Rows.Count > 0)
{
count = Convert.ToInt32(dt.Rows[0]["是否禁用"]);
}
else
{
count = 0;
}
count = count + 1;
sql = "UPDATE [MES_装配数据_发动机号_追踪代码] "
+ " SET 是否禁用=" + count.ToString()
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')";
//[MES_计划BOM_发动机号]的字段“是否装配代码”=1,
if (count == 3)
{
try
{
BaseDataSystemMES.BaseData_tagTable_EngineID_UpDate(EngineID);
}
catch (Exception err)
{
ApplicationLog.WriteLog(err, "更新活塞连杆验证状态");
}
}
return DataAccess.ExecuteSQL_OleDb_Access(sql);
}
///
/// 更新活塞连杆验证状态
/// 是否禁用 =0 开始验证新的活塞连杆
/// =1第一组验证完成
/// =2第二组验证完成
/// =3第三组验证完成
///
///
///
///
///
public static bool TraceTableUpdate_F3_New(string opName, string TraceCode, int isFalse)
{
string sql;
sql = "UPDATE [MES_装配数据_发动机号_追踪代码] "
+ " SET 是否禁用=" + isFalse.ToString()
+ " where ( 是否禁用<=2 and 追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')";
if (!SQLCommon.SqlServerConnectionStatus)
{
return DataAccess.ExecuteSQL_OleDb_Access(sql);
}
else
{
return DataAccess.ExecuteSQL(sql);
}
}
///
/// 更新活塞连杆验证状态
/// 是否禁用 =0 开始验证新的活塞连杆
/// =1第一组验证完成
/// =2第二组验证完成
/// =3第三组验证完成
///
///
///
///
///
public static bool TraceTableUpdate_F3(string opName, string TraceCode, int isFalse)
{
string sql;
sql = "UPDATE [MES_装配数据_发动机号_追踪代码] "
+ " SET 是否禁用=" + isFalse.ToString()
+ " where (追踪代码='" + TraceCode + "'"
+ " and 工位号='" + opName + "')";
return DataAccess.ExecuteSQL_OleDb_Access(sql);
}
///
/// 线首,用于物料追踪
/// (3.2.2.1)如果表[MES_装配数据_发动机号_追踪代码]中
/// 不存在字段“是否禁用” 小于“3”的记录,
/// 说明活塞连杆工位已经全部验证完成,
/// 开始全新验证流程。同(2)基本流程。
///
///
public static bool TableTraceSelectIsFalse()
{
DataTable dt;
string sql = null;
sql = "SELECT * FROM MES_装配数据_发动机号_追踪代码 WHERE 是否禁用 < 3";
DataAccess.ExecuteDataTable_OleDb_Access(sql, out dt);
if (dt == null)
{
return true;
}
if (dt.Rows.Count == 0)
{
return true;
}
return false;
}
}
}