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