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
    {
        /// <summary>
        /// 检测表 [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 验证完成第三组
        /// </summary>
        //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;

        //}
        ///// <summary>
        ///// 检测表 [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 验证完成第三组
        ///// </summary>
        //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;

        //}
        ///// <summary>
        ///// 用于：活塞连杆上线
        ///// 活塞连杆分三组，验证完成一组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=1；
        ///// 验证完成二组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=2；
        ///// 验证完成三组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=3。
        ///// 当第三组验证完成后，表[MES_计划BOM_发动机号]的字段“是否装配代码”=1，
        ///// 表示已经完成一个发动机的活塞连杆装配。
        ///// </summary>
        ///// <param name="opName"></param>
        ///// <param name="TraceCode"></param>
        ///// <param name="strConnectionstring"></param>
        ///// <returns></returns>
        //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;

        //}
        ///// <summary>
        ///// 用于：活塞连杆上线
        ///// 活塞连杆分三组，验证完成一组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=1；
        ///// 验证完成二组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=2；
        ///// 验证完成三组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=3。
        ///// 当第三组验证完成后，表[MES_计划BOM_发动机号]的字段“是否装配代码”=1，
        ///// 表示已经完成一个发动机的活塞连杆装配。
        ///// </summary>
        ///// <param name="opName"></param>
        ///// <param name="TraceCode"></param>
        ///// <returns></returns>
        //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;

        //}
        ///// <summary>
        ///// 更新活塞连杆验证状态(是否禁用加"1")
        ///// 是否禁用 =0 开始验证新的活塞连杆
        ///// =1第一组验证完成
        ///// =2第二组验证完成
        ///// =3第三组验证完成
        ///// 6.5 活塞连杆分三组，验证完成一组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=1；
        ///// 验证完成二组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=2；
        ///// 验证完成三组（包括将验证的物料保存以后），
        ///// [MES_装配数据_发动机号_追踪代码] 表中的字段“是否禁用”=3。
        ///// 当第三组验证完成后，
        ///// 表[MES_计划BOM_发动机号]的字段“是否装配代码”=1，
        ///// 表示已经完成一个发动机的活塞连杆装配。
        ///// </summary>
        ///// <param name="opName"></param>
        ///// <param name="TraceCode"></param>
        ///// <param name="EngineID"></param>
        ///// <returns></returns>
        //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);
        //}       
        ///// <summary>
        ///// 更新活塞连杆验证状态
        ///// 是否禁用 =0 开始验证新的活塞连杆
        ///// =1第一组验证完成
        ///// =2第二组验证完成
        ///// =3第三组验证完成
        ///// </summary>
        ///// <param name="opName"></param>
        ///// <param name="TraceCode"></param>
        ///// <param name="isFalse"></param>
        ///// <returns></returns>
        //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);

        //    }
        //}
        ///// <summary>
        ///// 更新活塞连杆验证状态
        ///// 是否禁用 =0 开始验证新的活塞连杆
        ///// =1第一组验证完成
        ///// =2第二组验证完成
        ///// =3第三组验证完成
        ///// </summary>
        ///// <param name="opName"></param>
        ///// <param name="TraceCode"></param>
        ///// <param name="isFalse"></param>
        ///// <returns></returns>
        //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);
        //}
        ///// <summary>
        ///// 线首，用于物料追踪
        ///// （3.2.2.1）如果表[MES_装配数据_发动机号_追踪代码]中
        ///// 不存在字段“是否禁用” 小于“3”的记录，
        ///// 说明活塞连杆工位已经全部验证完成，
        ///// 开始全新验证流程。同（2）基本流程。
        ///// </summary>
        ///// <returns></returns>
        //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;
        //}
    }
}
