/// <summary>
        /// 根据(lot,pn,vc)获取SXJ_R_KITT_PN_T数据
        /// </summary>
        /// <param name="lotNo">lot号</param>
        /// <param name="material">物料号</param>
        /// <param name="VendorCode">供应商号</param>
        /// <returns></returns>
        public SXJ_R_KITT_PN_TEntity Get_SXJ_R_KITT_PN_TEntityByLotAndPNAndVC(string lotNo, string material, string VendorCode)
        {
            SXJ_R_KITT_PN_TEntity entity = new SXJ_R_KITT_PN_TEntity();
            string strSql = string.Format(@"
                SELECT MOGP,
                MATERIAL,
                VENDORCODE,
                QTY,
                ONRACKQTY,
                RACKNO,
                CREATE_TIME,
                LINE_NAME,
                USER,
                DESC1,
                DESC2,
                DESC3 FROM SFISM4.R_KITT_PN_T WHERE  MOGP=:MOGP AND MATERIAL=:MATERIAL AND VENDORCODE=:VENDORCODE ");
            DBParameter oracleParamets = new DBParameter();
            oracleParamets.Clear();
            oracleParamets.Add(":MOGP", OracleDbType.Varchar2, lotNo);
            oracleParamets.Add(":MATERIAL", OracleDbType.Varchar2, material);
            oracleParamets.Add(":VendorCode", OracleDbType.Varchar2, VendorCode);
            try
            {
                entity = dbHander.ExecuteAsObject<SXJ_R_KITT_PN_TEntity>(strSql, CommandType.Text, oracleParamets.GetParameters());
            }
            catch (Exception ex)
            {

                this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Get_SXJ_R_KITT_PN_TEntity Fail: " + ex.Message);
            }
            return entity;
        }
        /// <summary>
        /// 根据储位号,获取储位信息,储位号在SXJ_R_KITT_PN_T表中数据
        /// </summary>
        /// <param name="rackNO"></param>
        /// <returns></returns>
        public SXJ_R_KITT_PN_TEntity Get_SXJ_R_KITT_PN_TEntityByRackNo(string rackNO)
        {
            SXJ_R_KITT_PN_TEntity entity = new SXJ_R_KITT_PN_TEntity();
            string strSql = string.Format(@"
                SELECT MOGP,
                MATERIAL,
                VENDORCODE,
                QTY,
                ONRACKQTY,
                RACKNO,
                CREATE_TIME,
                LINE_NAME,
                USER,
                DESC1,
                DESC2,
                DESC3 FROM SFISM4.R_KITT_PN_T WHERE RACKNO=:RACKNO");
            DBParameter oracleParamets = new DBParameter();
            oracleParamets.Clear();
            oracleParamets.Add(":RACKNO", OracleDbType.Varchar2, rackNO);
            try
            {
                entity = dbHander.ExecuteAsObject<SXJ_R_KITT_PN_TEntity>(strSql, CommandType.Text, oracleParamets.GetParameters());
            }
            catch (Exception ex)
            {

                this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Get_SXJ_R_KITT_PN_TEntity Fail: " + ex.Message);
            }
            return entity;
        }
        /// <summary>
        /// 插入数据到,架位信息表
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnResult Insert_SXJ_R_KITT_PN_T(SXJ_R_KITT_PN_TEntity entity)
        {
            ReturnResult result = new ReturnResult();
            string strInsert = string.Format(@"INSERT INTO  SFISM4.R_KITT_PN_T 
                (MOGP,
                MATERIAL,
                VENDORCODE,
                QTY,
                ONRACKQTY,
                RACKNO,
                CREATE_TIME,
                LINE_NAME,
                CREATE_NAME,
                DESC1,
                DESC2,
                DESC3)
                VALUES
                (:MOGP,
                :MATERIAL,
                :VENDORCODE,
                :QTY,
                :ONRACKQTY,
                :RACKNO,
                SYSDATE,
                :LINE_NAME,
                :CREATE_NAME,
                :DESC1,
                :DESC2,
                :DESC3)");
            DBParameter dbParameter = new DBParameter();
            dbParameter.Clear();
            dbParameter.Add(":MOGP", OracleDbType.Varchar2, entity.MOGP);
            dbParameter.Add(":MATERIAL", OracleDbType.Varchar2, entity.MATERIAL);
            dbParameter.Add(":VENDORCODE", OracleDbType.Varchar2, entity.VENDORCODE);
            dbParameter.Add(":QTY", OracleDbType.Int32, entity.QTY);
            dbParameter.Add(":ONRACKQTY", OracleDbType.Int32, entity.ONRACKQTY);
            dbParameter.Add(":RACKNO", OracleDbType.Varchar2, entity.RACKNO);
            //dbParameter.Add(":CREATE_TIME", OracleType.DateTime, entity.CREATE_TIME);
            dbParameter.Add(":LINE_NAME", OracleDbType.Varchar2, entity.LINE_NAME);
            dbParameter.Add(":CREATE_NAME", OracleDbType.Varchar2, entity.CREATE_NAME);
            dbParameter.Add(":DESC1", OracleDbType.Varchar2, entity.DESC1);
            dbParameter.Add(":DESC2", OracleDbType.Varchar2, entity.DESC2);
            dbParameter.Add(":DESC3", OracleDbType.Varchar2, entity.DESC3);


            try
            {
                result = dbHander.ExecuteNonQuery(strInsert, dbParameter.GetParameters());
                result.Status = true;
            }
            catch (Exception ex)
            {
                result.Status = false;
                result.Message = ex.Message;
                this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Insert_SXJ_R_KITT_PN_T Fail: " + ex.Message);
            }
            return result;
        }
        /// <summary>
        /// 删除R_KITT_PN_T表数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnResult Delete_SXJ_R_KITT_PN_TEntity(SXJ_R_KITT_PN_TEntity entity)
        {
            ReturnResult result = new ReturnResult();
            string updateSql = string.Format(@" DELETE FROM SFISM4.R_KITT_PN_T 
              WHERE MOGP=:MOGP AND MATERIAL=:MATERIAL AND 
              VENDORCODE=:VENDORCODE AND  RACKNO=:RACKNO");
            DBParameter dbParameter = new DBParameter();
            dbParameter.Clear();
            dbParameter.Add(":MOGP", OracleDbType.Varchar2, entity.MOGP);
            dbParameter.Add(":RACKNO", OracleDbType.Varchar2, entity.RACKNO);
            dbParameter.Add(":ONRACKQTY", OracleDbType.Int32, entity.ONRACKQTY);
            dbParameter.Add(":MATERIAL", OracleDbType.Varchar2, entity.MATERIAL);
            dbParameter.Add(":VENDORCODE", OracleDbType.Varchar2, entity.VENDORCODE);
            try
            {
                result = dbHander.ExecuteNonQuery(updateSql, dbParameter.GetParameters());
            }
            catch (Exception ex)
            {

                this.logHandler.Error(MethodBase.GetCurrentMethod().Name, "Call Delete_SXJ_R_KITT_PN_TEntity Fail: " + ex.Message);
            }
            return result;
        }
        private void SXJ_Process_Select(SXJ_WMSEntity item, List <SXJ_CELLNOEntity> cellList)
        {
            ReturnResult          result           = new ReturnResult();
            SXJ_R_KITT_PN_TEntity r_kitt_pn_Entity = new SXJ_R_KITT_PN_TEntity();

            r_kitt_pn_Entity.MOGP        = item.MOGP;
            r_kitt_pn_Entity.MATERIAL    = item.MATERIAL;
            r_kitt_pn_Entity.VENDORCODE  = item.VENDORCODE;
            r_kitt_pn_Entity.QTY         = item.QTY;
            r_kitt_pn_Entity.ONRACKQTY   = item.ONRACKQTY;
            r_kitt_pn_Entity.RACKNO      = item.RACKNO;
            r_kitt_pn_Entity.CREATE_NAME = item.USER;
            r_kitt_pn_Entity.DESC1       = r_kitt_pn_Entity.DESC2 = r_kitt_pn_Entity.DESC3 = string.Empty;

            SXJ_R_KITT_PN_LOG_TEntity r_kitt_pn_log_Entity = new SXJ_R_KITT_PN_LOG_TEntity();

            r_kitt_pn_log_Entity.MOGP        = item.MOGP;
            r_kitt_pn_log_Entity.MATERIAL    = item.MATERIAL;
            r_kitt_pn_log_Entity.VENDORCODE  = item.VENDORCODE;
            r_kitt_pn_log_Entity.QTY         = item.QTY;
            r_kitt_pn_log_Entity.ONRACKQTY   = item.ONRACKQTY;
            r_kitt_pn_log_Entity.RACKNO      = item.RACKNO;
            r_kitt_pn_log_Entity.CREATE_NAME = item.USER;
            r_kitt_pn_log_Entity.DESC1       = r_kitt_pn_log_Entity.DESC2 = r_kitt_pn_log_Entity.DESC3 = string.Empty;

            //判断WMS传过来的储位号,在MES中存在
            if (cellList.Any(x => x.CELL_NO == item.RACKNO))
            {
                string line_Name = cellList.Where(x => x.CELL_NO == item.RACKNO).FirstOrDefault().LINE_NAME;
                SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByWMSEntity(item);
                //判断Lot号、储位号、物料号和供应商编号,在SXJ_R_KITT_PN_T表中是否存在
                if (r_kitt_pn_t_Entity != null)
                {
                    //Lot号、储位号、物料号和供应商编号,在SXJ_R_KITT_PN_T表中存在:更新SXJ_R_KITT_PN_T表数据
                    if (r_kitt_pn_t_Entity.ONRACKQTY + item.ONRACKQTY > 0)                           //储位库存+上下架数>0
                    {
                        result = dataProviderService.Update_SXJ_R_KITT_PN_TEntity(r_kitt_pn_Entity); //更新SXJ_R_KITT_PN_T数据
                        if (result.Status)
                        {
                            r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                            item.STATUS      = r_kitt_pn_log_Entity.STATUS = 2;
                            item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "更新SXJ_R_KITT_PN_T数据";
                            result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                        }
                    }
                    else if (r_kitt_pn_t_Entity.ONRACKQTY + item.ONRACKQTY == 0)                     //储位库存+上下架数=0
                    {
                        result = dataProviderService.Delete_SXJ_R_KITT_PN_TEntity(r_kitt_pn_Entity); //删除SXJ_R_KITT_PN_T数据"
                        if (result.Status)
                        {
                            r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                            item.STATUS      = r_kitt_pn_log_Entity.STATUS = 8;
                            item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "下架数量和库存数相等,删除SXJ_R_KITT_PN_T数据";
                            result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                        }
                    }
                    else //储位库存+上下架数<0,直接告警
                    {
                        r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                        item.STATUS      = r_kitt_pn_log_Entity.STATUS = 7;
                        item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "下架数量:" + Math.Abs(item.ONRACKQTY) + ";大于现有库存:" + r_kitt_pn_t_Entity.ONRACKQTY;
                        result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                    }
                }
                else
                {
                    //RAckNO是否存在
                    SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity_byRackNO = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByRackNo(item.RACKNO);
                    if (r_kitt_pn_t_Entity_byRackNO != null)//rackno 存在
                    {
                        SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity_byPnVcRack = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByPNAndVCAndRack(item.RACKNO, item.MATERIAL, item.VENDORCODE);
                        if (r_kitt_pn_t_Entity_byPnVcRack != null)//pn,vc,rackno存在
                        {
                            r_kitt_pn_Entity.LINE_NAME = line_Name;
                            result = dataProviderService.Insert_SXJ_R_KITT_PN_T(r_kitt_pn_Entity);
                            if (result.Status)
                            {
                                r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                                item.STATUS      = r_kitt_pn_log_Entity.STATUS = 4;
                                item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "pn,vc,rackno相同,lot不同,插入数据到SXJ_R_KITT_PN_T表";
                                result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                            }
                        }
                        else
                        {
                            r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                            item.STATUS      = r_kitt_pn_log_Entity.STATUS = 3;
                            item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "相同的RackNO,不能插入不同的pn和vc";
                            result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                        }
                    }
                    else //rackno 不存在
                    {
                        SXJ_R_KITT_PN_TEntity r_kitt_pn_t_Entity_byLotPnVc = dataProviderService.Get_SXJ_R_KITT_PN_TEntityByLotAndPNAndVC(item.MOGP, item.MATERIAL, item.VENDORCODE);
                        if (r_kitt_pn_t_Entity_byLotPnVc != null)
                        {
                            r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                            item.STATUS      = r_kitt_pn_log_Entity.STATUS = 5;
                            item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "相同的:Lot,pn,vc,不能存在不同的储位";
                            result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                        }
                        else
                        {
                            //线体,物料号、供应商不同时存在不同的货架,插入数据到SXJ_R_KITT_PN_T表中
                            r_kitt_pn_Entity.LINE_NAME = line_Name;
                            result = dataProviderService.Insert_SXJ_R_KITT_PN_T(r_kitt_pn_Entity);
                            if (result.Status)
                            {
                                r_kitt_pn_log_Entity.LINE_NAME = line_Name;
                                item.STATUS      = r_kitt_pn_log_Entity.STATUS = 6;
                                item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "不同的rackno,不同的pn或vc或lot,插入数据到SXJ_R_KITT_PN_T表";
                                result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
                            }
                        }
                    }
                }
            }
            else
            {
                //WMS传过来的储位号,在MES中不存在,写日志
                r_kitt_pn_log_Entity.LINE_NAME = "";
                item.STATUS      = r_kitt_pn_log_Entity.STATUS = 1;
                item.STATUS_INFO = r_kitt_pn_log_Entity.STATUS_INFO = "储位号在MES中不存在";
                result           = dataProviderService.Insert_SXJ_R_KITT_PN_LOG_T(r_kitt_pn_log_Entity);
            }
        }