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);
            }
        }
        /// <summary>
        /// 插入数据到,架位信息存储历史表
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public ReturnResult Insert_SXJ_R_KITT_PN_LOG_T(SXJ_R_KITT_PN_LOG_TEntity entity)
        {
            ReturnResult result = new ReturnResult();
            string strInsert = string.Format(@"INSERT INTO  SFISM4.R_KITT_PN_LOG_T 
                (MOGP,
                MATERIAL,
                VENDORCODE,
                QTY,
                ONRACKQTY,
                RACKNO,
                CREATE_TIME,
                LINE_NAME,
                CREATE_NAME,
                DESC1,
                DESC2,
                DESC3,
                CLOSE_TIME,
                STATUS,
                STATUS_INFO)
                VALUES
                (:MOGP,
                :MATERIAL,
                :VENDORCODE,
                :QTY,
                :ONRACKQTY,
                :RACKNO,
                SYSDATE,
                :LINE_NAME,
                :CREATE_NAME,
                :DESC1,
                :DESC2,
                :DESC3,
                SYSDATE,
                :STATUS,
                :STATUS_INFO)");
            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);
            dbParameter.Add(":STATUS", OracleDbType.Int32, entity.STATUS);
            dbParameter.Add(":STATUS_INFO", OracleDbType.Varchar2, entity.STATUS_INFO);

            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_LOG Fail: " + ex.Message);
            }
            return result;
        }