コード例 #1
0
        public SummaryDataResponse GetSummary(SummaryDataRequest request)
        {
            var data = Helpers.LoadData(request.FileName);
            SummaryDataResponse response = new SummaryDataResponse()
            {
                FileName   = data.TableName,
                ColumnName = request.ColumnName,
                Operation  = request.Operation,
            };

            if (request.ColumnName != "*" && request.GroupColumnName == "*")
            {
                response.Value = Helpers.ReturnResultStatsColumn(request.ColumnName, request.Operation, data);
            }
            else if (request.ColumnName == "*" && request.GroupColumnName == "*")
            {
                response.ListValue = new List <GroupByList>();
                foreach (DataColumn item in data.Columns)
                {
                    GroupByList groupByList = new GroupByList();
                    groupByList.Name   = item.ColumnName;
                    groupByList.Result = Helpers.ReturnResultStatsColumn(item.ColumnName, request.Operation, data);
                    response.ListValue.Add(groupByList);
                }
            }
            else
            {
                response.ListValue = Helpers.ReturnResultStatsList(request, data);
            }

            return(response);
        }
コード例 #2
0
        public static List <GroupByList> ReturnResultStatsList(SummaryDataRequest request, DataTable data)
        {
            List <GroupByList> result = new List <GroupByList>();

            switch (request.Operation)
            {
            case OperationOnTable.SUM:
                if (request.ColumnName != "*")
                {
                    List <GroupByList> lists = CreateListCompute(data, request.ColumnName, request.GroupColumnName);
                    result = lists.GroupBy(t => t.Name).Select(g => new GroupByList
                    {
                        Result = g.Sum(p => p.Result),
                        Name   = g.Key
                    }).ToList();
                }
                ;
                break;

            case OperationOnTable.AVG:
                if (request.ColumnName != "*")
                {
                    List <GroupByList> lists = CreateListCompute(data, request.ColumnName, request.GroupColumnName);
                    result = lists.GroupBy(t => t.Name).Select(g => new GroupByList
                    {
                        Result = g.Average(p => p.Result),
                        Name   = g.Key
                    }).ToList();
                }
                else
                {
                };
                break;

            case OperationOnTable.COUNT:
                var list = CreateListCount(data, request.GroupColumnName);
                result = (from res in list
                          group res by res into resGroup
                          select new GroupByList
                {
                    Name = resGroup.Key,
                    Result = resGroup.Count(),
                }).ToList();
                break;

            default:
                break;
            }
            return(result);
        }
コード例 #3
0
        public Tuple <double?, List <GroupByList> > GetStats(string filename, string columname, string groupname, OperationOnTable operation)
        {
            ErroMessage = string.Empty;
            SummaryDataRequest request = new SummaryDataRequest()
            {
                FileName        = filename,
                ColumnName      = columname,
                GroupColumnName = groupname,
                Operation       = operation
            };

            try
            {
                var result = proxy.GetSummary(request);
                return(new Tuple <double?, List <GroupByList> >(result.Value, result.ListValue.ToList()));
            }
            catch (Exception e)
            {
                ErroMessage = e.Message;
                return(null);
            }
        }
コード例 #4
0
        public ResponseResult ReportSend(string userKeyId, [FromBody] SummaryDataRequest request)
        {
            LogHelper.Error(string.Format("调用报告发送API,userKeyId:{0},request:{1}", userKeyId, request.ToJson()), null);
            var responseResult = new ResponseResult();

            try
            {
                var user    = UserService.GetUserByKeyId(userKeyId);
                var project = ProjectService.GetByProjectNo(request.ProjectNo, user.Id);
                //正式报告
                byte[] resourceData;
                if (string.IsNullOrEmpty(request.ResourceUrl))
                {
                    throw new ServiceException("正式报告文件不能为空");
                }
                else
                {
                    resourceData = (new WebClient()).DownloadData(request.ResourceUrl);
                    if (resourceData.Length == 0)
                    {
                        throw new ServiceException("无法获取正式报告文件");
                    }
                    else
                    {
                        string fileName = System.IO.Path.GetFileName(request.ResourceUrl);
                        string result   = ProjectService.UploadProjectResource(project.Id, fileName, resourceData, user.Id, ResourcesEnum.正式报告);
                        if (result != "上传成功!")
                        {
                            throw new ServiceException(result);
                        }
                    }
                }
                //保存
                var sourceType      = request.GetType();                                          //源对象
                var sourcePropertys = sourceType.GetProperties();
                var data            = new SummaryDataModel();                                     //赋值对象
                var targetType      = data.GetType();
                var exceptPropertys = new string[] { "EstimateUnitPrice", "EstimateTotalPrice" }; //剔除预估信息
                foreach (var property in targetType.GetProperties())
                {
                    if (!sourcePropertys.Select(x => x.Name).Contains(property.Name) || exceptPropertys.Contains(property.Name))
                    {
                        continue;
                    }
                    var value = sourceType.GetProperty(property.Name).GetValue(request, null);
                    property.SetValue(data, value, null);
                }
                ProjectService.OperateReportSend(project.Id, data, user.Id, request.Note);
                responseResult.Code    = 0;
                responseResult.Message = "success";
            }
            catch (ServiceException ex)
            {
                responseResult.Code    = 1;
                responseResult.Message = ex.Message;
            }
            catch (Exception ex)
            {
                responseResult.Code    = 1;
                responseResult.Message = "error";
                LogHelper.Error("调用报告发送API错误日志:", ex);
            }
            return(responseResult);
        }