예제 #1
0
        public CustomerOrderViewModel GetSingleOrder(int OrderID)
        {
            string Query = @"select * from [dbo].[Order] where id = @orderid";
            var    param = new { orderid = OrderID };
            var    Data  = _Order.Get <Order>(Query, param).FirstOrDefault();
            CustomerOrderViewModel Model = new CustomerOrderViewModel();

            Model.ShipmentMethod  = Data.ShippingMethod;
            Model.ShipmentStatus  = Enum.GetName(typeof(ShipmentStatusEnum), Data.ShippingStatusId);
            Model.OrderPrice      = (double)Data.OrderTotal;
            Model.OrderID         = OrderID;
            Model.OrderStatus     = Enum.GetName(typeof(OrderStatusEnum), Data.OrderStatusId);
            Model.OrderDate       = Data.CreatedOnUtc;
            Model.OrderPrice      = (double)Data.OrderTotal;
            Model.BillingAddress  = AddressMapping.ModelToViewModel(_addressService.GetAddressById(Data.BillingAddressId).Result);
            Model.ShippingAddress = AddressMapping.ModelToViewModel(_addressService.GetAddressById(Data.ShippingAddressId).Result);
            Model.PaymentStatus   = Enum.GetName(typeof(PaymentStatusEnum), Data.PaymentStatusId);
            Model.PaymentMethod   = Data.PaymentMethodSystemName;
            Model.ShipmentMethod  = Data.ShippingMethod;
            Model.ShipmentStatus  = Enum.GetName(typeof(ShipmentStatusEnum), Data.ShippingStatusId);

            string Query1 = @"select p.Name as ProductName,pic.PictureBinary,oi.UnitPriceInclTax as Price,oi.Quantity from [dbo].[Order] as o join
                           OrderItem as oi on o.Id = oi.OrderId join Product as p on oi.ProductId = p.Id join Product_Picture_Mapping as pm on p.Id = pm.ProductId
                           join Picture as pic on pic.Id = pm.PictureId where o.Id = @orderid";

            Model.ProductsList = _Order.Get <CustomerShoppingCartViewModel>(Query1, param).ToList();
            return(Model);
        }
예제 #2
0
        public async Task <User> GetUserInformationAsync(Guid userId)
        {
            if (userId == Guid.Empty)
            {
                throw new ArgumentNullException(nameof(userId));
            }

            IEnumerable <Models.Repository.Card> dtoCards;
            IEnumerable <Card> cards;
            IEnumerable <Models.Repository.Address> dtoAddresses;
            var dtoUser = await userRepository.GetAsync(userId);

            var user    = UserMapping.ConvertDtoUser(dtoUser);
            var cardIds = await userCardRepository.ListIdsAsync(dtoUser.UserId);

            var addressIds = await userAddressesRepository.ListIdsAsync(dtoUser.UserId);

            if (cardIds != null)
            {
                dtoCards = await cardRepository.ListAsync(cardIds);

                cards = await MapAddressesToCardsAsync(dtoCards);

                user.CreditCards = cards;
            }
            if (addressIds != null)
            {
                dtoAddresses = await addressRepository.ListAsync(addressIds);

                user.Address = AddressMapping.ConvertDtoAddressToAddress(dtoAddresses.FirstOrDefault());
            }

            return(user);
        }
예제 #3
0
 static MongoDataContext()
 {
     ProductMapping.Register();
     MachineMapping.Register();
     ProjectMapping.Register();
     AddressMapping.Register();
 }
예제 #4
0
        public Medicine findMedicineByName(string name)
        {
            Medicine  medicine = null;
            DataTable table    = SqlHelper.ExecuteDataTable("select * from medicine where name=@name",
                                                            new MySqlParameter[] {
                new MySqlParameter("@name", name)
            });

            if (table.Rows.Count > 0)
            {
                DataRow row = table.Rows[0];
                medicine      = new Medicine();
                medicine.Id   = (int)row[0];
                medicine.Name = (string)row[1];
                AddressMapping mapping = mappingDAL.findMappingByGuid((int)row[2]);
                if (mapping == null)
                {
                    mapping      = new AddressMapping();
                    mapping.Guid = (int)row[2];
                    mapping.Addr = "";
                }
                medicine.Address          = mapping;
                medicine.MaximumQuantity  = (int)row[3];
                medicine.ResidualQuantity = (int)row[4];
                medicine.Description      = (string)row[5];
            }
            return(medicine);
        }
예제 #5
0
        public List <Medicine> list()
        {
            List <Medicine> medicineList = new List <Medicine>();
            DataTable       table        = SqlHelper.ExecuteDataTable("select * from medicine");

            foreach (DataRow row in table.Rows)
            {
                Medicine medicine = new Medicine();
                medicine.Id   = (int)row[0];
                medicine.Name = (string)row[1];
                AddressMapping mapping = mappingDAL.findMappingByGuid((int)row[2]);
                if (mapping == null)
                {
                    mapping      = new AddressMapping();
                    mapping.Guid = (int)row[2];
                    mapping.Addr = "";
                }
                medicine.Address          = mapping;
                medicine.MaximumQuantity  = (int)row[3];
                medicine.ResidualQuantity = (int)row[4];
                medicine.Description      = (string)row[5];
                medicineList.Add(medicine);
            }
            return(medicineList);
        }
예제 #6
0
        public void CreatePage(int quadKey)
        {
            //不重复生成
            rwl.EnterReadLock();
            try
            {
                if (AddressMapping.ContainsKey(quadKey) && AddressMapping[quadKey].tileStatus == TileStatus.Loading)
                {
                    return;
                }
            }
            finally
            {
                rwl.ExitReadLock();
            }


            PhysicalTileInfo info = new PhysicalTileInfo();

            info.tileStatus = TileStatus.Loading;
            rwl.EnterWriteLock();
            try
            {
                info.QuadKey            = quadKey;
                AddressMapping[quadKey] = info;
                tileGenerator.GeneratePageTask(quadKey);
            }
            finally
            {
                rwl.ExitWriteLock();
            }
        }
예제 #7
0
 public bool create(AddressMapping addrmapping)
 {
     return(SqlHelper.ExecuteNonQuery("insert into addressmapping(Address,Guid) values(@addr,@guid)",
                                      new MySqlParameter[] {
         new MySqlParameter("@addr", addrmapping.Addr),
         new MySqlParameter("@guid", addrmapping.Guid)
     }) > 0);
 }
예제 #8
0
        public void DeleteAddressMapping(AddressMapping addressMapping)
        {
            if (addressMapping == null)
            {
                throw new ArgumentNullException("addressMapping");
            }

            _addressMappingRepository.Delete(addressMapping); //AddressMapping GetAddressMappingbId(int Id)
        }
예제 #9
0
        public void CreateCardAddressDTO()
        {
            var cardAddress = AddressMapping.CreateCardAddressDTO(card.CardId, dtoAddress.AddressId);

            Assert.IsType <CardAddress>(cardAddress);
            Assert.NotNull(cardAddress);
            Assert.Equal(dtoAddress.AddressId, cardAddress.AddressId);
            Assert.Equal(card.CardId, cardAddress.CardId);
        }
예제 #10
0
 public bool update(AddressMapping addrmapping)
 {
     return(SqlHelper.ExecuteNonQuery("update addressmapping set Address=@addr,Guid=@guid where Id=@id",
                                      new MySqlParameter[] {
         new MySqlParameter("@addr", addrmapping.Addr),
         new MySqlParameter("@guid", addrmapping.Guid),
         new MySqlParameter("@id", addrmapping.Id)
     }) > 0);
 }
예제 #11
0
        public void AddAddressMapping(AddressMapping addressMapping)
        {
            if (addressMapping == null)
            {
                throw new ArgumentNullException("addressMapping");
            }

            _addressMappingRepository.Insert(addressMapping);
        }
예제 #12
0
        public void CreateDtoAddress()
        {
            var dtoAddress = AddressMapping.CreateDtoAddress(address);

            Assert.IsType <Address>(dtoAddress);
            Assert.Equal(AddressType.User, dtoAddress.AddressType);
            Assert.NotNull(dtoAddress.AptNumber);
            Assert.NotNull(dtoAddress.City);
            Assert.NotNull(dtoAddress.Country);
            Assert.NotNull(dtoAddress.State);
            Assert.NotNull(dtoAddress.StreetName);
            Assert.NotNull(dtoAddress.StreetName2);
            Assert.NotNull(dtoAddress.ZipCode);
        }
예제 #13
0
        public void ConvertDtoAddressToAddress()
        {
            var address = AddressMapping.ConvertDtoAddressToAddress(dtoAddress);

            Assert.IsType <Models.API.Address>(address);
            Assert.Equal(dtoAddress.AddressId, address.AddressId);
            Assert.Equal(AddressType.User, dtoAddress.AddressType);
            Assert.NotNull(dtoAddress.AptNumber);
            Assert.NotNull(dtoAddress.City);
            Assert.NotNull(dtoAddress.Country);
            Assert.NotNull(dtoAddress.State);
            Assert.NotNull(dtoAddress.StreetName);
            Assert.NotNull(dtoAddress.StreetName2);
            Assert.NotNull(dtoAddress.ZipCode);
        }
예제 #14
0
        public List <AddressMapping> list()
        {
            List <AddressMapping> mappingList = new List <AddressMapping>();
            DataTable             table       = SqlHelper.ExecuteDataTable("select * from addressmapping");

            foreach (DataRow row in table.Rows)
            {
                AddressMapping mapping = new AddressMapping();
                mapping.Id   = (int)row[0];
                mapping.Addr = (string)row[1];
                mapping.Guid = (int)row[2];
                mappingList.Add(mapping);
            }
            return(mappingList);
        }
예제 #15
0
        public async Task AddUserInformationAsync(User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            var userId = await userRepository.AddAsync(UserMapping.CreateDtoUser(user));

            if (user.Address != null)
            {
                var addressId = await addressRepository.AddAsync(AddressMapping.CreateDtoAddress(user.Address));

                await userAddressesRepository.AddAsync(AddressMapping.CreateUserAddressDTO(userId, addressId));
            }
        }
예제 #16
0
        public AddressMapping findMappingByGuid(long medicineId)
        {
            AddressMapping mapping = null;
            DataTable      table   = SqlHelper.ExecuteDataTable("select * from addressmapping where Guid=@guid",
                                                                new MySqlParameter[] {
                new MySqlParameter("@guid", medicineId)
            });

            if (table.Rows.Count > 0)
            {
                DataRow row = table.Rows[0];
                mapping      = new AddressMapping();
                mapping.Id   = (int)row[0];
                mapping.Addr = (string)row[1];
                mapping.Guid = (int)row[2];
            }
            return(mapping);
        }
예제 #17
0
        /// <summary>
        /// 查询确认
        /// </summary>
        /// <param name="guid"></param>
        private void ExecuteQueryAck(int guid)
        {
            //1 获取通信地址
            AddressMapping mapping = addressMappingDAL.findMappingByGuid(guid);

            if (mapping == null)
            {
                return;
            }
            RequestMessage requestMessage = new RequestMessage();

            requestMessage.Length    = 0;
            requestMessage.Guid      = ConvertCom.IntToChar4(guid);
            requestMessage.ShortAddr = ConvertCom.StringToChar4(mapping.Addr);
            // LTME
            requestMessage.Command = ConvertCom.StringToChar4("LTME");
            requestMessage.Length  = requestMessage.setValue(12);

            serialCom.write(requestMessage.getMessageByte(), 0, 14 + requestMessage.Length);
        }
예제 #18
0
        private async Task <IEnumerable <Card> > MapAddressesToCardsAsync(IEnumerable <Models.Repository.Card> cards)
        {
            if (cards == null)
            {
                throw new ArgumentNullException(nameof(cards));
            }

            var cardList = new List <Card>();

            foreach (var dtoCard in cards)
            {
                var address = await addressRepository.GetAsync(dtoCard.AddressId);

                var card = CardMapping.ConvertDtoCardToCard(dtoCard);
                card.BillingAddress = AddressMapping.ConvertDtoAddressToAddress(address);
                cardList.Add(card);
            }

            return(cardList);
        }
예제 #19
0
        //找到最深miplevel的可用quadtree page
        private int SearchPage(int x, int y, int targetMip, int quadKey)
        {
            if (!Contains(x, y, quadKey))
            {
                return(-1);
            }

            int currMip = getMip(quadKey);

            if (currMip > targetMip)
            {
                int[] childs = getChilds(quadKey);
                foreach (var child in childs)
                {
                    int page = SearchPage(x, y, targetMip, child);
                    if (page != -1)
                    {
                        return(page);
                    }
                }
            }

            rwl.EnterReadLock();
            try
            {
                if (AddressMapping.ContainsKey(quadKey) && AddressMapping[quadKey].tileStatus == TileStatus.LoadingComplete)
                {
                    return(quadKey);
                }
                else
                {
                    return(-1);
                }
            }
            finally
            {
                rwl.ExitReadLock();
            }

            //找到指定深度
        }
예제 #20
0
        /// <summary>
        /// 补药确认
        /// </summary>
        /// <param name="guid"></param>
        private void ExecuteAddAck(int guid)
        {
            //1 获取通信地址
            AddressMapping mapping = addressMappingDAL.findMappingByGuid(guid);

            if (mapping == null)
            {
                return;
            }
            RequestMessage requestMessage = new RequestMessage();

            requestMessage.Length    = 2;
            requestMessage.Guid      = ConvertCom.IntToChar4(guid);
            requestMessage.ShortAddr = ConvertCom.StringToChar4(mapping.Addr);
            // AKAD
            requestMessage.Command  = ConvertCom.StringToChar4("AKAD");
            requestMessage.Value[0] = 'O';
            requestMessage.Value[1] = 'K';

            serialCom.write(requestMessage.getMessageByte(), 0, 14 + requestMessage.Length);
        }
예제 #21
0
        /// <summary>
        /// 补药
        /// </summary>
        /// <param name="medicine"></param>
        /// <param name="amount"></param>
        /// <returns>
        /// 0 成功
        /// 1 药盒的通信地址不存在
        /// 2
        /// </returns>
        public int addMedicine(Medicine medicine, int amount)
        {
            //1 获取通信地址

            AddressMapping mapping = addressMappingDAL.findMappingByGuid(medicine.Address.Guid);

            if (mapping == null)
            {
                return(1);
            }

            RequestMessage requestMessage = new RequestMessage();

            requestMessage.Length    = 0;
            requestMessage.Guid      = ConvertCom.IntToChar4((int)medicine.Id);
            requestMessage.ShortAddr = ConvertCom.StringToChar4(mapping.Addr);
            // "ADME"
            requestMessage.Command = ConvertCom.StringToChar4("ADME");
            requestMessage.Length  = requestMessage.setValue(amount);

            Cache.Guid  = 0;
            Cache.State = EleTagResponseState.NONE;
            serialCom.write(requestMessage.getMessageByte(), 0, 14 + requestMessage.Length);
            // 等待成消息返回
            // 最长等待时间10s,循环判断时间间隔10ms
            int count = 1000;

            while (count > 0)
            {
                if (Cache.Guid == (int)medicine.Id &&
                    (Cache.State == EleTagResponseState.ADDING ||
                     Cache.State == EleTagResponseState.ADDING_ERROR))
                {
                    count = 0;
                }
                Thread.Sleep(10);
                count--;
            }
            return(0);
        }
예제 #22
0
        public async Task <Tenant> GetTenantAsync(Guid tenantId, CancellationToken cancellationToken = default)
        {
            NullCheckHelpers.EnsureArgumentIsNotNullOrEmpty(tenantId);

            var dtoTenant = await tenantRepository.GetAsync(tenantId, cancellationToken);

            var dtoAddress = await addressRepository.GetAsync(dtoTenant.AddressId, cancellationToken);

            if (dtoAddress == null)
            {
                throw new SqlEntityNullReferenceException(nameof(dtoAddress), dtoAddress.AddressId.ToString());
            }

            if (dtoTenant == null)
            {
                throw new SqlEntityNullReferenceException(nameof(dtoAddress), dtoTenant.TenantId.ToString());
            }

            var tenant = TenantMapping.ConvertDtoTenantToTenant(dtoTenant);

            tenant.Address = AddressMapping.ConvertDtoAddressToAddress(dtoAddress);

            return(tenant);
        }
예제 #23
0
        /// <summary>
        /// Import doctors from XLSX file
        /// </summary>
        /// <param name="stream">Stream</param>
        /// <param name="userId"></param>
        /// <param name="iRow"></param>
        public virtual void ImportDoctorsFromXlsx(Stream stream, string userId, int iRow)
        {
            //property array
            var properties = new[]
            {
                new PropertyByName <Doctor>("FirstName"),
                new PropertyByName <Doctor>("LastName"),
                new PropertyByName <Doctor>("Email"),
                new PropertyByName <Doctor>("PhoneNumber"),

                new PropertyByName <Doctor>("Gender"),
                new PropertyByName <Doctor>("Speciality"),
                new PropertyByName <Doctor>("ShortProfile"),
                new PropertyByName <Doctor>("RegistrationNumber"),
                new PropertyByName <Doctor>("DateOfBirth"),
                new PropertyByName <Doctor>("Address1"),
                new PropertyByName <Doctor>("Address2"),
                new PropertyByName <Doctor>("Hospital"),
                new PropertyByName <Doctor>("Pincode"),
                new PropertyByName <Doctor>("City"),
                new PropertyByName <Doctor>("State"),
                new PropertyByName <Doctor>("Country"),
                new PropertyByName <Doctor>("FaxNumber"),
                new PropertyByName <Doctor>("Website"),
                new PropertyByName <Doctor>("ConsultationFee"),
                new PropertyByName <Doctor>("IsAvailability")
            };

            var manager = new PropertyManager <Doctor>(properties);

            //var tt = manager.GetProperty("FaxNumber").StringValue.Trim();
            //var tt1 = manager.GetProperty("Hospital").StringValue.Trim();
            //var tt2 = manager.GetProperty("PhoneNumber").StringValue.Trim();
            //var tt3 = manager.GetProperty("Website").StringValue.Trim();

            using (var xlPackage = new ExcelPackage(stream))
            {
                // get the first worksheet in the workbook
                var worksheet = xlPackage.Workbook.Worksheets.FirstOrDefault();
                if (worksheet == null)
                {
                    throw new DptsException("No worksheet found");
                }

                if (userId != null && iRow > 0)
                {
                    var allColumnsAreEmpty = manager.GetProperties
                                             .Select(property => worksheet.Cells[iRow, property.PropertyOrderPosition])
                                             .All(cell => cell == null || cell.Value == null || String.IsNullOrEmpty(cell.Value.ToString()));

                    if (allColumnsAreEmpty)
                    {
                        throw new DptsException("column are empty");
                    }

                    manager.ReadFromXlsx(worksheet, iRow);
                    string  sds   = manager.GetProperty("IsAvailability").StringValue;
                    string  dsdsd = manager.GetProperty("ConsultationFee").StringValue;
                    bool    rre   = bool.Parse(manager.GetProperty("IsAvailability").StringValue);
                    decimal ds    = decimal.Parse(manager.GetProperty("ConsultationFee").StringValue);

                    #region DoctorInfo
                    var doctor = new Doctor
                    {
                        DoctorId     = userId,
                        Gender       = manager.GetProperty("Gender").StringValue,
                        ShortProfile = manager.GetProperty("ShortProfile").StringValue,
                        // Language = manager.GetProperty("Qualifications").StringValue,
                        RegistrationNumber = manager.GetProperty("RegistrationNumber").StringValue,
                        DateOfBirth        = manager.GetProperty("DateOfBirth").StringValue,
                        IsAvailability     = bool.Parse(manager.GetProperty("IsAvailability").StringValue),
                        ConsultationFee    = decimal.Parse(manager.GetProperty("ConsultationFee").StringValue)
                    };
                    _doctorService.AddDoctor(doctor);
                    #endregion

                    #region Specialities
                    if (!string.IsNullOrWhiteSpace(manager.GetProperty("Speciality").StringValue) &&
                        !string.IsNullOrWhiteSpace(doctor.DoctorId))
                    {
                        var specilities = manager.GetProperty("Speciality").StringValue.Trim();
                        foreach (var item in specilities.Split(',').ToList())
                        {
                            var spec = _specialityService.GetAllSpeciality(false).Where(s => s.Title.Contains(item)).FirstOrDefault();
                            if (spec != null)
                            {
                                var sp = new SpecialityMapping
                                {
                                    Speciality_Id = spec.Id,
                                    Doctor_Id     = doctor.DoctorId,
                                    DateCreated   = DateTime.UtcNow,
                                    DateUpdated   = DateTime.UtcNow
                                };
                                if (!_specialityService.IsDoctorSpecialityExists(sp))
                                {
                                    _specialityService.AddSpecialityByDoctor(sp);
                                }
                            }
                        }

                        //foreach (var specilityMap in specilities.Split(',').ToList().Select(item => new SpecialityMapping
                        //{
                        //    Speciality_Id =
                        //    Doctor_Id = doctor.DoctorId,
                        //    DateCreated = DateTime.UtcNow,
                        //    DateUpdated = DateTime.UtcNow
                        //}).Where(specilityMap => !_specialityService.IsDoctorSpecialityExists(specilityMap)))
                        //{
                        //    _specialityService.AddSpecialityByDoctor(specilityMap);
                        //}
                    }
                    #endregion

                    #region Address
                    if (!string.IsNullOrWhiteSpace(doctor.DoctorId) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("Pincode").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("Address1").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("City").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("State").StringValue) &&
                        !string.IsNullOrWhiteSpace(manager.GetProperty("Country").StringValue))
                    {
                        int    countryId = 0;
                        int    stateId   = 0;
                        string rr1       = manager.GetProperty("Country").StringValue.Trim();
                        string rr2       = manager.GetProperty("Address1").StringValue.Trim();
                        string rr3       = manager.GetProperty("City").StringValue.Trim();
                        var    country   = _countryService.GetAllCountries().Where(c => c.Name.Contains(manager.GetProperty("Country").StringValue.Trim())).FirstOrDefault();
                        countryId = (country == null) ? 0 : country.Id;
                        string rr = manager.GetProperty("State").StringValue.Trim();

                        var states = _stateProvinceService.GetAllStateProvince().Where(c => c.Name.Contains(rr)).FirstOrDefault();
                        stateId = (states == null) ? 0 : states.Id;

                        var address = new Address
                        {
                            StateProvinceId = stateId,
                            //_,
                            CountryId     = countryId,
                            Address1      = manager.GetProperty("Address1").StringValue.Trim(),
                            Address2      = manager.GetProperty("Address2").StringValue.Trim(),
                            Hospital      = manager.GetProperty("Hospital").StringValue.Trim(),
                            FaxNumber     = manager.GetProperty("FaxNumber").StringValue.Trim(),
                            PhoneNumber   = manager.GetProperty("PhoneNumber").StringValue.Trim(),
                            Website       = manager.GetProperty("Website").StringValue.Trim(),
                            ZipPostalCode = manager.GetProperty("Pincode").StringValue.Trim(),
                            City          = manager.GetProperty("City").StringValue.Trim()
                        };

                        string docAddress    = address.Address1 + ", " + address.City + ", " + states.Name + ", " + address.ZipPostalCode;
                        var    geoCoodrinate = GetGeoCoordinate(docAddress);
                        if (geoCoodrinate.Count == 2)
                        {
                            address.Latitude  = geoCoodrinate[Constants.Lat];
                            address.Longitude = geoCoodrinate[Constants.Lng];
                        }
                        else
                        {
                            var geoCoodrinates = GetGeoCoordinate(address.ZipPostalCode);
                            if (geoCoodrinates.Count == 2)
                            {
                                address.Latitude  = geoCoodrinates[Constants.Lat];
                                address.Longitude = geoCoodrinates[Constants.Lng];
                            }
                        }
                        _addressService.AddAddress(address);
                        if (doctor != null)
                        {
                            var addrMap = new AddressMapping
                            {
                                AddressId = address.Id,
                                UserId    = doctor.DoctorId
                            };
                            _addressService.AddAddressMapping(addrMap);
                        }
                    }
                    #endregion
                }
            }
        }
예제 #24
0
        /// <summary>
        /// 电子标签返回消息处理
        /// </summary>
        private void ExecuteResponseMsg()
        {
            //SetRtbRxConsole(responseMsg.getMessageByte);
            int    id      = ConvertCom.Char4ToInt(responseMsg.Guid);
            string command = new string(responseMsg.Command);

            // 1层数据流
            if (command == "PING")
            {
                //在界面上显示心跳
                string _shortAddr = new string(responseMsg.Value, 0, 4);
                //rftaglist[id - Offset - 1].heartBeat(8);
                //SetRtbStatusConsole("" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 网络地址[" + _shortAddr + "]\n");
                //SessionArray[id].ShortAddr = _shortAddr;
                //rftaglist[id - Offset - 1].SetLabelTagID(_shortAddr);

                /*
                 * 1 从数据库中获取guid的mapping信息。
                 * 2 信息存在,判断address是否一致,不一致则更新。
                 * 3 信息不存在,创建一个新的mapping,并保存在数据库。
                 */
                ResponseHandler(id, EleTagResponseState.ADDRESS, _shortAddr);

                AddressMapping mapping = addressMappingDAL.findMappingByGuid(id);
                if (mapping == null)
                {
                    AddressMapping newMapping = new AddressMapping()
                    {
                        Guid = id, Addr = _shortAddr
                    };
                    addressMappingDAL.create(newMapping);
                }
                else
                {
                    if (mapping.Addr != _shortAddr)
                    {
                        mapping.Addr = _shortAddr;
                        addressMappingDAL.update(mapping);
                    }
                }
            }
            // 2层数据流
            else if (command == "TKME")
            {
                string respResult = new string(responseMsg.Value, 0, responseMsg.Length);
                if (respResult == "OK")
                {
                    //rftaglist[id - Offset - 1].darkenLED(2);
                    //rftaglist[id - Offset - 1].lightLED(1);
                    //SetRtbStatusConsole("" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 取药命令[成功]\n");
                    ResponseHandler(id, EleTagResponseState.TAKING, "");
                    Cache.Guid  = id;
                    Cache.State = EleTagResponseState.TAKING;
                }
                else
                {
                    //rftaglist[id - Offset - 1].darkenLED(1);
                    //rftaglist[id - Offset - 1].darkenLED(2);
                    //string alertValue = "" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 补药命令[错误:" + respResult + "]\n";
                    //SetRtbStatusConsole(alertValue);
                    //MessageBox.Show(alertValue);
                    ResponseHandler(id, EleTagResponseState.TAKING_ERROR, respResult);
                    Cache.Guid  = id;
                    Cache.State = EleTagResponseState.TAKING_ERROR;
                }
            }
            // 2层数据流
            else if (command == "ADME")
            {
                string respResult = new string(responseMsg.Value, 0, responseMsg.Length);
                if (respResult == "OK")
                {
                    //rftaglist[id - Offset - 1].darkenLED(1);
                    //rftaglist[id - Offset - 1].lightLED(2);
                    //SetRtbStatusConsole("" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 补药命令[成功]\n");
                    ResponseHandler(id, EleTagResponseState.ADDING, "");
                    Cache.Guid  = id;
                    Cache.State = EleTagResponseState.ADDING;
                }
                else
                {
                    //rftaglist[id - Offset - 1].darkenLED(1);
                    //rftaglist[id - Offset - 1].darkenLED(2);
                    //string alertValue = "" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 补药命令[错误:" + respResult + "]\n";
                    //SetRtbStatusConsole(alertValue);
                    //MessageBox.Show(alertValue);
                    ResponseHandler(id, EleTagResponseState.ADDING_ERROR, respResult);
                    Cache.Guid  = id;
                    Cache.State = EleTagResponseState.ADDING_ERROR;
                }
            }
            // 3层数据流
            else if (command == "AKTK")
            {
                //1 判断是否为Push Button首次确认
                if (responseMsg.Length == 0)
                {
                    ResponseHandler(id, EleTagResponseState.TAKE_QUERY, "");
                    ExecuteTakeAck(id);
                }
                // 2
                else
                {
                    string respResult = new string(responseMsg.Value, 0, responseMsg.Length);
                    if (respResult == "OK")
                    {
                        //rftaglist[id - Offset - 1].darkenLED(1);
                        //SetRtbStatusConsole("" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 取药确认[成功]\n");
                        ResponseHandler(id, EleTagResponseState.TAKED, "");
                    }
                    else
                    {
                        //rftaglist[id - Offset - 1].darkenLED(1);
                        //string alertValue = "" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 取药确认[错误:" + respResult + "]\n";
                        //SetRtbStatusConsole(alertValue);
                        //MessageBox.Show(alertValue);
                        ResponseHandler(id, EleTagResponseState.TAKED_ERROR, respResult);
                    }
                }
            }
            // 3层数据流
            else if (command == "AKAD")
            {
                //1 判断是否为Push Button首次确认
                if (responseMsg.Length == 0)
                {
                    ResponseHandler(id, EleTagResponseState.ADD_QUERY, "");
                    ExecuteAddAck(id);
                }
                // 2
                else
                {
                    string respResult = new string(responseMsg.Value, 0, responseMsg.Length);
                    if (respResult == "OK")
                    {
                        //rftaglist[id - Offset - 1].darkenLED(2);
                        //SetRtbStatusConsole("" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 补药确认[成功]\n");
                        ResponseHandler(id, EleTagResponseState.ADDED, "");
                    }
                    else
                    {
                        //rftaglist[id - Offset - 1].darkenLED(2);
                        //string alertValue = "" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 补药确认[错误:" + respResult + "]\n";
                        //SetRtbStatusConsole(alertValue);
                        //MessageBox.Show(alertValue);
                        ResponseHandler(id, EleTagResponseState.ADDED_ERROR, respResult);
                    }
                }
            }
            // 3层数据流
            else if (command == "LTME")
            {
                //1 判断是否为Push Button首次确认
                if (responseMsg.Length == 0)
                {
                    ResponseHandler(id, EleTagResponseState.NONE, "");
                    ExecuteQueryAck(id);
                }
                // 2
                else
                {
                    string respResult = new string(responseMsg.Value, 0, responseMsg.Length);
                    if (respResult == "OK")
                    {
                        //SetRtbStatusConsole("" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 查询确认[成功]\n");
                    }
                    else
                    {
                        //string alertValue = "" + GenericUtil.Generic_ConvertToGuid(id) + " ----> 查询确认[错误:" + respResult + "]\n";
                        //SetRtbStatusConsole(alertValue);
                        //MessageBox.Show(alertValue);
                    }
                }
            }
        }