Beispiel #1
0
 /// <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));
 }
Beispiel #2
0
 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());
     }
 }
Beispiel #3
0
        /// <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));
        }
Beispiel #4
0
        /// <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));
        }