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