コード例 #1
0
        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));
        }
コード例 #2
0
        /// <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));
                    }
                }
            }
        }