public async Task <PagedResultDto <BatchCarListDto> > GetPaged(GetBatchCarsInput input) { var query = _batchCarRepository.GetAll(); var count = await query.CountAsync(); var entityList = query.OrderBy(input.Sorting).PageBy(input).ToList(); var entityListDtos = entityList.MapTo <List <BatchCarListDto> >(); return(new PagedResultDto <BatchCarListDto>(count, entityListDtos)); }
/// <summary> /// 处理返回报价信息,写分成 /// </summary> /// <param name="carNumber"></param> /// <param name="batchId"></param> /// <param name="rate"></param> /// <param name="rateType"></param> /// <param name="listPriceModel"></param> /// <returns></returns> private async Task UpdateAskPriceViolationInfo(string carNumber, string batchId, decimal rate, int rateType, List <PriceResultOutput> listPriceModel) { if (!listPriceModel.IsNullOrEmpty()) { //获取全部违章Code var uniqueCodes = listPriceModel.Select(x => x.UniqueCode).ToList(); if (!uniqueCodes.IsNullOrEmpty()) { var carIds = await _batchCarRepository.GetAll() .Where(i => i.CarNumber == carNumber && i.BatchId == batchId).Select(i => i.Id) .ToDynamicListAsync <string>(); Expression <Func <BatchAskPriceViolationAgent, bool> > violationWhere = i => i.PriceFrom == 0 && uniqueCodes.Contains(i.Uniquecode); if (!carIds.IsNullOrEmpty()) { violationWhere = violationWhere.And(i => carIds.Contains(i.CarId)); } //获取全部违章 var violations = await _violationAgentRepository.GetAllListAsync(violationWhere); var violationIds = violations.Select(i => i.Id).ToList(); if (!violations.IsNullOrEmpty()) { //插入的新分成 var newViolationDivisions = new List <CarViolationDivision>(); //获取已存在的分成 var oldViolationDivisions = await _carViolationDivisionRepository.GetAllListAsync(i => violationIds.Contains(i.ViolationId)); //处理数据 foreach (var item in violations) { if (item == null) { continue; } decimal vat = 0M; decimal price = 0M; var priceModel = listPriceModel.FirstOrDefault(x => x.UniqueCode == item.Uniquecode); if (priceModel == null) { continue; } if (priceModel.CanProcess == 1) { #region 分成 //获取接口的分成保存到分成表中 if (!priceModel.fcQuery.IsNullOrEmpty()) { newViolationDivisions = priceModel.fcQuery.Select(fcEntity => new CarViolationDivision { CalculationExpression = "", Fc = fcEntity.FC, Id = Guid.NewGuid().ToString(), Fctype = fcEntity.FCTYPE, Fcuserid = fcEntity.FCUSERID, Gdlr = 0, ProfitType = fcEntity.ProfitType, WebSiteId = fcEntity.WebSiteId, ViolationId = item.Id }).ToList(); } #endregion #region 计算最终价格 //违章报价 =(成本)+手价+加价 decimal violationPrice = priceModel.Poundage + priceModel.PlusPrice + priceModel.ParentPlusPrice; if (rateType == 0) { vat = Math.Round(violationPrice * rate / 100); } else if (rateType == 1) { vat = Math.Round((item.Count + item.Latefine) * rate / 100); } else if (rateType == 2) { vat = Math.Round((item.Count + item.Latefine + violationPrice) * rate / 100); } ; price = Math.Round(violationPrice); item.IsAskPrice = false; item.Status = priceModel.Status.ToInt(); item.Poundage = price; item.CanProcess = priceModel.CanProcess; item.Vat = vat; item.Ddbjid = priceModel.PriceId; item.AgentUserId = priceModel.UserId; item.AgentUserName = priceModel.ShortName; item.AgentPrice = priceModel.Poundage; item.ViolationType = priceModel.ViolationType; #endregion } else { //如果已经在办理的违章 更新状态为在办理中 或者办理完毕 if (!string.IsNullOrEmpty(priceModel.Status)) { //更新违章 item.IsAskPrice = false; item.Status = priceModel.Status.ToInt(); item.Ddbjid = priceModel.PriceId; item.CanprocessMsg = priceModel.CanprocessMsg; } } } if (!oldViolationDivisions.IsNullOrEmpty()) { await _carViolationDivisionRepository.BulkDeleteAsync(oldViolationDivisions); } await( _carViolationDivisionRepository.BulkInsertAsync(newViolationDivisions), _violationAgentRepository.BulkUpdateAsync(violations)); } } } }