/// <summary> /// 区域农药库存统计 /// </summary> /// <param name="httpContext"></param> /// <param name="request"></param> /// <returns></returns> public async Task <ResponseBase> ProcessAction(HttpContext httpContext, GetStatisticsStockRequest request) { _appTicket = AppTicket.GetAppTicket(httpContext); if (request.AreaId == 0 || _appTicket.DataLimitType == (int)DataLimitTypeEnum.Shop) { return(await GetStatisticsStockDefault(request)); } return(await GetStatisticsStockLevel(request)); }
public async Task <ResponseBase> GetStatisticsStock([FromBody] GetStatisticsStockRequest request) { try { var action = new GetStatisticsStockAction(_areaBll, _reportBll); return(await action.ProcessAction(this.HttpContext, request)); } catch (Exception ex) { Log.Error(request, ex, this.GetType()); return(new ResponsePagingBase().GetResponseCodeError()); } }
/// <summary> /// 通过区域级别获取库存信息 /// </summary> /// <param name="request"></param> /// <returns></returns> private async Task <ResponseBase> GetStatisticsStockLevel(GetStatisticsStockRequest request) { if (_appTicket.DataLimitType == (int)DataLimitTypeEnum.Area && _appTicket.DataLimitArea.IndexOf(request.AreaId.ToString()) < 0) { return(new ResponseBase().GetResponseError(StatusCode.DataForbidden, "数据无权访问")); } var newLevel = string.Empty; List <Area> areas = null; switch (request.Level) { case AreaLevelEnum.Province: //获取市 newLevel = AreaLevelEnum.City; areas = await _areaBll.GetCity(request.AreaId); break; case AreaLevelEnum.City: //获取县、区 newLevel = AreaLevelEnum.District; areas = await _areaBll.GetDistrict(request.AreaId); break; case AreaLevelEnum.District: //获取乡镇 newLevel = AreaLevelEnum.Street; areas = await _areaBll.GetStreet(request.AreaId); break; } if (areas == null || !areas.Any()) { return(ResponseBase.Success(GetEmptyData())); } var statisticsRetail = await _reportBll.GetStatisticsStock(string.Join(',', areas.Select(p => p.AreaId)), newLevel); var result = await GetStatisticsStockView(statisticsRetail, request.Type, string.Empty, newLevel); return(ResponseBase.Success(result)); }
/// <summary> /// 获取默认显示的库存信息 /// </summary> /// <param name="request"></param> /// <returns></returns> private async Task <ResponseBase> GetStatisticsStockDefault(GetStatisticsStockRequest request) { List <DbStatisticsStockView> statisticsStockView = null; var limitShops = string.Empty; var arealevel = string.Empty; switch (_appTicket.DataLimitType) { case (int)DataLimitTypeEnum.All: var province = await _areaBll.GetProvince(); statisticsStockView = await _reportBll.GetStatisticsStock(string.Join(',', province.Select(p => p.AreaId)), AreaLevelEnum.Province); arealevel = AreaLevelEnum.Province; break; case (int)DataLimitTypeEnum.Area: if (!string.IsNullOrEmpty(_appTicket.DataLimitArea)) { var areaInfo = await ComLib.GetGetAreaStatisticsAreaId(_areaBll, _appTicket.DataLimitArea); statisticsStockView = await _reportBll.GetStatisticsStock(areaInfo.Item1, areaInfo.Item2); arealevel = areaInfo.Item2; } break; case (int)DataLimitTypeEnum.Shop: limitShops = _appTicket.DataLimitShop; if (!string.IsNullOrEmpty(_appTicket.DataLimitShop)) { statisticsStockView = await _reportBll.GetStatisticsStockByShop(_appTicket.DataLimitShop); arealevel = AreaLevelEnum.Street; } break; } var result = await GetStatisticsStockView(statisticsStockView, request.Type, limitShops, arealevel); return(ResponseBase.Success(result)); }