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); }
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); }
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); } }
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); }