using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using DataLinkMesWork;

//using SystemFramework;

namespace bizFacade
{
    public partial class BaseDataSystemMES
    {
        ///// <summary>
        ///// MES_计划BOM_发动机号 
        ///// 获得订单号
        ///// </summary>
        ///// <param name="dt"></param>
        //static public void WorkPositionGuidOnLine_OrderForm(out DataTable dt)
        //{
        //    string sql;
        //    sql = "SELECT distinct 订单号  from MES_计划BOM_订单计划下达_执行顺序 ";
        //    DataAccess.ExecuteDataTable_OleDb_Access(sql, out  dt);
        //}
        ///// <summary>
        ///// 物料清单
        ///// 根据ID号获得物料清单
        ///// 一行
        ///// </summary>
        ///// <param name="ID"></param>
        ///// <param name="dt"></param>
        //static public void WorkPositionGuidOnLine_MaterialList(int ID, out DataTable dt)
        //{
        //    string sql;

        //    sql = "SELECT [订单号], [SAP物料号], [发动机型号],  [发动机型号代码], [发动机机型]," +
        //       "[发动机数量], [厂牌编号起始号], [客户名称], [投料日期], [文件编号], [集团名称], [通知号], " +
        //       "[功率], [指南文件编号], [装机状态], [适用状态], [物料描述],[计划下达日期], [计划完工日期],[实际完成日期],[实际结束日期],[操作时间]," +
        //       "[主配厂家],[工位号], [工位名称], [物料号], [零件图号], [零件名称], [零件数量],[是否扫描],扫描方式,[厂家代码], [生产厂家], " +
        //       "[操作指导],[工位基本操作指导],[工位基本指导图片],[日计划产量], [工位操作指导],[工位指导图片],[物料来源代码],[是否禁用代码],[被强制验证物料号],更改代码,更改原因" +
        //       " FROM MES_计划BOM_订单计划下达 " +
        //       " WHERE ID =" + Convert.ToString(ID);

        //    DataAccess.ExecuteDataTable_OleDb_Access(sql, out  dt);
        //}

        ///// <summary>
        ///// 物料清单
        ///// 根据订单号和工位号
        ///// </summary>
        ///// <param name="orderForm"></param>
        ///// <param name="opName"></param>
        ///// <param name="dt"></param>
        //static public void WorkPositionGuidOnLine_MaterialList(string orderForm, string opName, out DataTable dt)
        //{
        //    string sql;
        //    //sql = "SELECT [ID], [订单号], [SAP物料号], [发动机型号],  [发动机型号代码], [发动机机型]," +
        //    //   "[发动机数量], [厂牌编号起始号], [客户名称], [投料日期], [文件编号], [集团名称], [通知号], " +
        //    //   "[功率], [指南文件编号], [装机状态], [适用状态], [物料描述],[计划下达日期], [计划完工日期],[实际完成日期],[实际结束日期],[操作时间], " +
        //    //   "[主配厂家],[工位号], [工位名称], [物料号], [零件图号], [零件名称], [零件数量],[是否扫描],d.扫描方式代码,d.扫描方式,[厂家代码], [生产厂家], " +
        //    //   "[操作指导],[工位基本操作指导],[工位基本指导图片],[日计划产量], [工位操作指导],[工位指导图片],b.物料来源代码, b.物料来源, a.是否禁用代码, a.是否禁用,被强制验证物料号,更改代码,更改原因 "
        //    //    + " FROM MES_计划BOM_订单计划下达_扫描方式 AS d INNER JOIN (MES_计划BOM_订单计划下达_是否禁用 AS a INNER JOIN (MES_计划BOM_订单计划下达_物料来源 AS b INNER JOIN MES_计划BOM_订单计划下达 AS c ON b.物料来源代码 = c.物料来源代码) ON a.是否禁用代码 = c.是否禁用代码) ON c.扫描方式=d.扫描方式代码 "
        //    //    + " WHERE 订单号 ='" + orderForm + "'"
        //    //    + " AND 工位号 = '" + opName + "' "
        //    //    + " ORDER BY 物料号 ";
        //    sql = " SELECT a.订单号, a.执行顺序,a.SAP物料号,a.发动机型号,a.发动机型号代码,a.发动机机型,"
        //    + "a.发动机数量,a.厂牌编号起始号,a.客户名称,a.投料日期,a.文件编号,a.集团名称,a.通知号,a.功率,"
        //    + "a.指南文件编号,a.装机状态,a.适用状态,a.物料描述,a.计划下达日期,a.计划完工日期,a.实际完成日期,"
        //    + "a.实际结束日期,a.完成情况代码,a.完成数量,a.订单完成日期 ,"
        //    + "b.主配厂家, b.工位号, b.工位名称, b.物料号,b.零件图号,b.零件名称,b.零件数量,"
        //    + "b.是否扫描,b.扫描方式,b.是否主物料,b.厂家代码,b.生产厂家,b.操作指导,b.物料来源代码,"
        //    + "b.是否禁用代码,b.被强制验证物料号,b.更改代码,b.更改原因,"
        //    + "c.工位基本指导图片,d.工位操作指导, d.工位指导图片 "
        //    + " FROM MES_计划BOM_订单计划下达_执行顺序 AS a INNER JOIN "
        //    + "(MES_计划BOM_工位操作指南 AS d INNER JOIN "
        //    + "(MES_计划BOM_发动机装配指南 AS b INNER JOIN MES_计划BOM_工位基本指导 AS c ON b.工位号 = c.工位号)"
        //    + "ON d.工位号 = b.工位号) ON a.订单号 = b.订单号"
        //    + " WHERE a.发动机型号代码=d.发动机型号代码 "
        //    + " AND a.订单号 = '" + orderForm + "' "
        //    + " AND b.工位号 = '" + opName + "' "
        //    + " ORDER BY 物料号 ";
        //    DataAccess.ExecuteDataTable_OleDb_Access(sql, out  dt);
        //}
        ///// <summary>
        ///// 0090 F2 分线缸盖上线工位
        ///// 1、缸盖到位后，显示该工位的操作指南，物料表和物料验证表
        ///// 2、扫描缸盖，验证缸盖物料号
        ///// 3、扫描“物料追踪号”
        ///// 4、保存“物料追踪号”和缸盖号到缸盖需要验证的工位
        ///// </summary>
        ///// <returns></returns>
        //static public void WorkPositionGuidOnLine_MaterialList_F2(out DataTable dt, out string engineID)
        //{
        //    //订单号
        //    string orderForm;
        //    //发动机号
        //    engineID = null;
        //    string sql;
        //    string whereStr = " WHERE c.ID <> 0 ";
        //    string order = " ORDER BY d.是否优先代码 DESC, a.执行顺序, c.发动机号 ";
        //    sql = "SELECT a.订单号, a.执行顺序, a.计划下达日期, a.订单完成日期, b.完成情况代码, b.完成情况, "
        //        + " c.ID, c.发动机号, c.发动机型号代码,c.发动机机型, c.投料日期, c.人员代码, c.班次, "
        //        + " c.是否优先代码, c.是否装配代码, c.装配日期, d.是否优先代码, d.是否优先, e.是否装配代码, e.是否装配"
        //        + " FROM (((MES_计划BOM_订单计划下达_执行顺序 AS a INNER JOIN MES_计划BOM_订单计划下达_完成情况 AS b ON a.完成情况代码 = b.完成情况代码) INNER JOIN MES_计划BOM_发动机号 AS c ON a.订单号 = c.订单号) INNER JOIN MES_计划BOM_发动机号_是否优先 AS d ON c.是否优先代码 = d.是否优先代码) INNER JOIN MES_计划BOM_发动机号_是否装配 AS e ON c.是否装配代码 = e.是否装配代码 ";
        //    whereStr = whereStr + " and e.是否装配代码 = 0";
        //    sql = sql + whereStr + order;
        //    DataAccess.ExecuteDataTable_OleDb_Access(sql, out  dt);
        //    if (dt != null)
        //    {
        //        if (dt.Rows.Count > 0)
        //        {
        //            orderForm = dt.Rows[0]["订单号"].ToString();
        //            engineID = dt.Rows[0]["发动机号"].ToString();
        //            WorkPositionGuidOnLine_MaterialList(orderForm, ApplicationConfig.OpName, out  dt);
        //        }
        //    }
        //}
        ///// <summary>
        ///// 根据追踪代码（挂牌号）获得物料表
        /////六：分线缸盖半自动工位流程：MachineType=“S”，ScannerType = “1”，
        /////OpType=“P2”， OpNameMainLine=“OP0000”（总线缸盖上线工位）
        /////1：PLC向MES发送工件到位，开始扫描信号。WorkStart=1
        /////2：扫描追踪代码（挂牌号）
        /////3：通过OpNameMainLine（总线缸盖上线工位）工位数据表和本工位的装配指南，
        /////获得当前工位的装配指南，订单号、缸盖号、机型、机型标志。
        /////4：显示订单号、缸盖号、机型、机型标志
        /////5：显示装配指南和被验证物料
        /////6：MES向PLC写入发动机号、机型、机型标志、追踪代码
        /////7：MES向PLC写入MES激发变量扫描完成，EngineGetOver=1
        /////8：验证物料。
        /////9：物料验证完成，MES向PLC写入MES激发变量物料验证完毕信号，MaterialVerifyOver=1。
        /////10：PLC向MES发送工件离开信号WorkStart=0，
        /////保存数据发动机号、机型、机型标志、追踪代码到OpNameMainLine（总线缸盖上线工位）工位数据表中，
        /////完成工件当日计数和工作开始时间和结束时间。
        ///// </summary>
        ///// <returns></returns>
        //static public void WorkPositionGuidOnLine_MaterialList_P2(string opName, string orderForm, out DataTable dt)
        //{
        //    ////物料追踪数据库来源
        //    //string OpNameOther=null;
        //    //////物料追踪数据库保存
        //    ////string OpNameMainLine;
        //    ////订单号
        //    //string orderForm=null;
        //    string sql;
        //    //sql = "SELECT * FROM [MES_装配数据_零部件追溯_数据主表] "
        //    //    + " WHERE 追踪代码='" + traceCode+"'";
        //    //DataAccess.ExecuteDataTable_OleDb_Access(sql,ApplicationConfig.OpNameOtherFileName, out  dt);
        //    //if (dt == null) return;
        //    //if (dt.Rows.Count > 0)
        //    //{
        //    //    orderForm = dt.Rows[0]["订单号"].ToString();
        //    //}
        //    ////物料清单

        //    sql = "SELECT [ID], [订单号], [SAP物料号], [发动机型号],  [发动机型号代码], [发动机机型]," +
        //       "[发动机数量], [厂牌编号起始号], [客户名称], [投料日期], [文件编号], [集团名称], [通知号], " +
        //       "[功率], [指南文件编号], [装机状态], [适用状态], [物料描述],[计划下达日期], [计划完工日期],[实际完成日期],[实际结束日期],[操作时间], " +
        //       "[主配厂家],[工位号], [工位名称], [物料号], [零件图号], [零件名称], [零件数量],[是否扫描],d.扫描方式代码,d.扫描方式,[厂家代码], [生产厂家], " +
        //       "[操作指导],[工位基本操作指导],[工位基本指导图片],[日计划产量], [工位操作指导],[工位指导图片],b.物料来源代码, b.物料来源, a.是否禁用代码, a.是否禁用,被强制验证物料号,更改代码,更改原因 "
        //        + " FROM MES_计划BOM_订单计划下达_扫描方式 AS d INNER JOIN (MES_计划BOM_订单计划下达_是否禁用 AS a INNER JOIN (MES_计划BOM_订单计划下达_物料来源 AS b INNER JOIN MES_计划BOM_订单计划下达 AS c ON b.物料来源代码 = c.物料来源代码) ON a.是否禁用代码 = c.是否禁用代码) ON c.扫描方式=d.扫描方式代码 "
        //        + " WHERE 订单号 ='" + orderForm + "'"
        //        + " AND 工位号 = '" + opName + "' "
        //        + " ORDER BY 物料号 ";

        //    DataAccess.ExecuteDataTable_OleDb_Access(sql, out dt);
        //}
        /// <summary>
        /// 根据订单号和工位获得装配指南信息
        /// [MES_计划BOM_订单计划下达]
        /// </summary>
        /// <param name="orderForm">订单号</param>
        /// <param name="OpName">工位号</param>
        /// <param name="isVerify">是验证物料还是全部物料</param>
        /// <returns></returns>
        //public static DataTable GetMaterialListBak(string orderForm, string OpName, bool isVerify)
        //{
        //    string errorMessage;
        //    DataTable dt;
        //    string sql;
        //    if (isVerify)
        //    {
        //        sql = "SELECT [ID], [订单号], [SAP物料号], [发动机型号],  [发动机型号代码], [发动机机型]," +
        //       "[发动机数量], [厂牌编号起始号], [客户名称], [投料日期], [文件编号], [集团名称], [通知号], " +
        //       "[功率], [指南文件编号], [装机状态], [适用状态], [物料描述],[计划下达日期], [计划完工日期]," +
        //       "[主配厂家],[工位号], [工位名称], [物料号], [零件图号], [零件名称], [零件数量],[是否扫描],d.扫描方式代码,d.扫描方式,[厂家代码], [生产厂家], " +
        //       "[操作指导],'' as 发动机号,'' as 追踪代码,0 as 物料号表索引号,0 as 零件数量验证,"
        //    + "'' as 物料条码,'' as 物料条码物料号,'' as 物料条码批次,0 as 验证结果,"
        //    + "'' as 操作者工号,'' as 操作者姓名,'' as 班次代码,"
        //    + "b.物料来源代码, b.物料来源, a.是否禁用代码, a.是否禁用,被强制验证物料号,更改代码,更改原因 "
        //        + " FROM MES_计划BOM_订单计划下达_扫描方式 AS d INNER JOIN (MES_计划BOM_订单计划下达_是否禁用 AS a INNER JOIN (MES_计划BOM_订单计划下达_物料来源 AS b INNER JOIN MES_计划BOM_订单计划下达 AS c ON b.物料来源代码 = c.物料来源代码) ON a.是否禁用代码 = c.是否禁用代码) ON c.扫描方式=d.扫描方式代码 "
        //        + "where 订单号='" + orderForm + "'"
        //        + "and 工位号='" + OpName + "' and a.是否禁用代码 = 0 and 是否扫描 <> 0 "
        //        + " ORDER BY 物料号 ";
        //    }
        //    else
        //    {
        //        sql = "SELECT [ID],[订单号], [SAP物料号], [发动机型号],  [发动机型号代码], [发动机机型]," +
        //           "[发动机数量], [厂牌编号起始号], [客户名称], [投料日期], [文件编号], [集团名称], [通知号], " +
        //           "[功率], [指南文件编号], [装机状态], [适用状态], [物料描述],[计划下达日期], [计划完工日期]," +
        //           "[主配厂家],[工位号], [工位名称], [物料号], [零件图号], [零件名称], [零件数量],[是否扫描],d.扫描方式代码,d.扫描方式,[厂家代码], [生产厂家], " +
        //           "[操作指导],'' as 发动机号,0 as 物料号表索引号,0 as 零件数量验证,"
        //        + "'' as 物料条码,'' as 物料条码物料号,'' as 物料条码批次,0 as 验证结果,"
        //        + "'' as 操作者工号,'' as 操作者姓名,'' as 班次代码,"
        //        + "b.物料来源代码, b.物料来源, a.是否禁用代码, a.是否禁用,被强制验证物料号,更改代码,更改原因 "
        //            + " FROM MES_计划BOM_订单计划下达_扫描方式 AS d INNER JOIN (MES_计划BOM_订单计划下达_是否禁用 AS a INNER JOIN (MES_计划BOM_订单计划下达_物料来源 AS b INNER JOIN MES_计划BOM_订单计划下达 AS c ON b.物料来源代码 = c.物料来源代码) ON a.是否禁用代码 = c.是否禁用代码) ON c.扫描方式=d.扫描方式代码 "
        //            + "where 订单号='" + orderForm + "'"
        //            + "and 工位号='" + OpName + "' and a.是否禁用代码 = 0 "
        //            + " ORDER BY 物料号 ";
        //    }
        //    SQLCommon.ExecuteDataTable_OleDb(sql, ApplicationConfig.ConnectionString_Access, out dt, out errorMessage);
        //    return dt;
        //}
    }
}
