using System; using System.Collections.Generic; using System.Threading.Tasks; using Yitter.IdGenerator; using Znyc.Admin.Commons.Const; using Znyc.Admin.Commons.Entitys; using Znyc.Admin.Commons.Enums; using Znyc.Admin.Commons.Extensions; using Znyc.Admin.Commons.Mapping; using Znyc.Admin.Commons.Pages; using Znyc.Admin.Commons.Services; using Znyc.Admin.MongoDb.Core.Collection; using Znyc.Admin.MongoDb.Core.IRepositorys; using Znyc.Admin.Security.Dtos; using Znyc.Admin.Security.Entitys; using Znyc.Admin.Security.IRepositories; using Znyc.Admin.Security.IServices; namespace Znyc.Admin.Security.Services { /// /// /// public class VehicleChangeService : BaseService, IVehicleChangeService { private readonly IVehicleChangeRepository _vehicleChangeRepository; private readonly IVehicleRepository _vehicleRepository; private readonly IGpsRealTimeRepository _gpsRealTimeRepository; private readonly ICompanyRepository _companyRepository; private readonly IVehicleGroupRepository _vehicleGroupRepository; private readonly IDictionaryService _dcDictionaryService; public VehicleChangeService(IVehicleChangeRepository vehicleChangeRepository, IVehicleRepository vehicleRepository, IGpsRealTimeRepository gpsRealTimeRepository, ICompanyRepository companyRepository, IVehicleGroupRepository vehicleGroupRepository, IDictionaryService dcDictionaryService ) : base(vehicleChangeRepository) { _vehicleChangeRepository = vehicleChangeRepository; _vehicleRepository = vehicleRepository; _gpsRealTimeRepository = gpsRealTimeRepository; _companyRepository = companyRepository; _vehicleGroupRepository = vehicleGroupRepository; _dcDictionaryService = dcDictionaryService; } /// /// 分页查询换装记录 /// /// /// public async Task> FindWithPagerSearchAsync(SearchVehicleChangeModel search) { bool order = search.Order == "asc" ? false : true; string where = GetDataPrivilege(false); @where += string.Format(@" and VehicleId = {0}", search.VehicleId); if (!string.IsNullOrEmpty(search.Keywords)) { @where += string.Format(" and (ImeiNo like '%{0}%' or SimNo like '%{0}%' or TerminalNo like '{0}')", search.Keywords); } if (!string.IsNullOrEmpty(search.StartTime)) { @where += " and CreatedTime >='" + search.StartTime + " 00:00:00'"; } if (!string.IsNullOrEmpty(search.EndTime)) { @where += " and CreatedTime <='" + search.EndTime + " 23:59:59'"; } PagerInfo pagerInfo = new PagerInfo { CurrenetPageIndex = search.CurrenetPageIndex, PageSize = search.PageSize }; List list = await _vehicleChangeRepository.FindWithPagerAsync(where, pagerInfo, search.Sort, order); List outputDtos = list.MapTo(); foreach (var item in outputDtos) { item.TerminalTypeName = EnumExtensions.GetDescription(typeof(TerminalTypeEnum), (int)TerminalTypeEnum.BSJKGM_08) ?? CommonConst.Unknown_TerminalType; item.CardTypeName = EnumExtensions.GetDescription(typeof(CardTypeEnum), (int)CardTypeEnum.Beijing_Mobile) ?? CommonConst.Unknown_CardType; } PageResult pageResult = new PageResult { CurrentPage = pagerInfo.CurrenetPageIndex, Items = outputDtos, ItemsPerPage = pagerInfo.PageSize, TotalItems = pagerInfo.RecordCount }; return pageResult; } /// /// 新增车辆换装记录 /// /// /// public async Task InsertAsync(VehicleChange entity) { CommonResult result = new CommonResult(); Vehicle info = await _vehicleRepository.GetAsync(entity.VehicleId); if (!(info?.Id > 0)) { result.Success = false; result.ErrMsg = ReturnConst.Vehicle_Not_Exist; return result; } string where = string.Format(@" (SimNo='{0}' or ImeiNo='{1}') AND Status=1 AND Id!={2}", entity.SimNo, entity.ImeiNo,entity.VehicleId); Vehicle repeatVehicle = await _vehicleRepository.GetWhereAsync(where); if (repeatVehicle != null) { result.Success = false; result.ErrMsg = string.Format(ReturnConst.Vehicle_Equipment_Repeat, repeatVehicle.VehiclePlate); return result; } VehicleChange vehicleChange = new VehicleChange() { Id = YitIdHelper.NextId(), CompanyId = info.CompanyId, VehicleId = info.Id, CardType = info.CardType, TerminalType = info.TerminalType, SimNo = info.SimNo, ImeiNo = info.ImeiNo, AgreementNo=info.AgreementNo, TerminalNo = info.TerminalNo, ChangeTime = entity.ChangeTime, UpdateTime = entity.UpdateTime, Note = entity.Note, CreatedTime = DateTime.Now, CreatedUserId = entity.CreatedUserId }; await _vehicleChangeRepository.InsertAsync(vehicleChange); info.CardType = entity.CardType; info.TerminalType = entity.TerminalType; info.SimNo = entity.SimNo; info.ImeiNo = entity.ImeiNo; info.TerminalNo = entity.ImeiNo; info.AgreementNo = entity.AgreementNo ?? ""; info.ModifiedUserId = entity.ModifiedUserId; info.ModifiedTime = entity.ModifiedTime; await _vehicleRepository.UpdateAsync(info, info.Id).ConfigureAwait(false); GpsRealTime gpsRealTime = await _gpsRealTimeRepository.GetGpsRealTime(info.Id); gpsRealTime.SimNo = entity.SimNo; gpsRealTime.TerminalNo = info.TerminalNo; gpsRealTime.Status = info.Status; result.Success = await _gpsRealTimeRepository.UpdateGpsRealTime(gpsRealTime); return result; } } }