using System;
using bizFacade;

//using SystemFramework;
using MesServerWork;

namespace MesServerFunctions
{
    partial class Functions_BASE_WebSubmit
    {
        ///第一步，判断条码类型，根据条码类型，执行对应的存储过程
        ///第二步，条码类型(将扫描的条码保存到对应的表中)
        ///第三步，扫描完成之后给出允许工作信号
        /// 处理页面扫描条码
        /// </summary>
        /// <param name="OpName"></param>
        /// <param name="barcode"></param>
        public static void Barcode(object e)
        {
            try
            {
                DoWhatPlc.CustomeEvetnArgs msgEvent = (DoWhatPlc.CustomeEvetnArgs)e;
                string OpName = Convert.ToString(msgEvent.OpName);
                string barcode = Convert.ToString(msgEvent.TagValue);

                int EngineTypeID;//机型代码
                string EngineType;//机型
                string EngineID;//工件编号

                int IsRepeatedNumber = 2;
                //1:获得申请上线信息后，扫描条码才处理业务
                bool ispartload;
                MIS_BASE.Read_PartLoad(OpName, out ispartload);
                if(!ispartload) 
                {
                    AsyncSendMessage_Notice(OpName, "设备请发出申请上线信号（DBX500.3=1）");
                    return;
                }
                //2: 判断是否重号，  从数据库获得机型、机型代码等信息
                string partSn = barcode;
                Db.GetEngineType( partSn, out EngineTypeID, out EngineType, out EngineID, out IsRepeatedNumber);
                //IsRepeatedNumber 0 不重号；1 重号；2：失败

                switch (IsRepeatedNumber)
                {
                    case 0:

                        ////将产品信息写入PLC
                        MIS_BASE.Write_EngineTypeID_MES(OpName, EngineTypeID);
                        MIS_BASE.Write_EngineType_MES(OpName, EngineType);
                        MIS_BASE.Write_EngineID_MES(OpName, EngineID);

                        // 工位号],[订单号],[产品型号代码],[变速器序列号],[发动机型号],[机型基本代码],[变速器总成号] ,[托盘号]
                        // [产品型号代码_MES],[变速器序列号_MES],[发动机型号_MES]
                        // [机床上电],[循环开始],[机床故障],[上料无件],[下料堵塞],[工件到位]
                        // [传递机型],[申请上件],[允许保存],[保存完成],[合格标志],[前序合格]
                        // [工号],[班次],[是否返修件],[合格放行],[不合格放行],[扫描条码]

                        BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, "产品型号代码_MES", EngineTypeID.ToString());
                        BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, "发动机型号_MES", EngineType);
                        BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, "变速器序列号_MES", EngineID);



                        MIS_BASE.Write_EngineTypeGetOver_MES(OpName, true);

                        //等待PLC将数据写入RFID；写入PLC的DB块，通知MES验证RFID机型数据是否正确传递

                        break;
                    case 1:
                        AsyncSendMessage_Notice(OpName, "变速器序列号 重号,请确认！");
                        break;
                    case 2:
                        AsyncSendMessage_Notice(OpName, "变速器序列号获取机型代码失败 ,请确认！");
                        break;
                }
            }
            catch (Exception err)
            {
                ////ApplicationLog.WriteLog(err, "Function08:Barcode");
            }
        }


    }
}
