private ISearchResponse <es_t_bp_item> GetTotalSearchResponse(CheckStatisDataSearchModel model) { ISearchResponse <es_t_bp_item> response; if (model.Type == "0") { response = tbpItemESRep.Search(t => t.Size(0) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID).Size(1000)))); } else if (model.Type == "1") { response = tbpItemESRep.Search(t => t.Size(0) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID).Size(1000)))); } else if (model.Type == "2") { response = tbpItemESRep.Search(t => t.Size(0) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID).Size(1000)))); } else if (model.Type == "3") { response = tbpItemESRep.Search(t => t.Size(0) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID).Size(1000)))); } else { response = null; } return(response); }
private ISearchResponse <es_t_bp_item> GetYearSearchResponse(CheckStatisDataSearchModel model) { var filterQuery = GetFilterQuery(model); ISearchResponse <es_t_bp_item> response; if (model.Type == "0") { response = tbpItemESRep.Search(t => t.Size(0).Query(filterQuery) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID) .Aggregations(tt => tt.DateHistogram("year", tst => tst.Field(tss => tss.PRINTDATE).Interval(DateInterval.Year).MinimumDocumentCount(1) .Aggregations(tsst => tsst.DateHistogram("qua", ttt => ttt.Field(tstt => tstt.PRINTDATE).Interval(DateInterval.Quarter).MinimumDocumentCount(0) .Aggregations(ty => ty.DateHistogram("month", tty => tty.Field(ttyy => ttyy.PRINTDATE).Interval(DateInterval.Month).MinimumDocumentCount(0)))))))))); } else if (model.Type == "1") { response = tbpItemESRep.Search(t => t.Size(0).Query(filterQuery) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID) .Aggregations(tt => tt.DateHistogram("year", tst => tst.Field(tss => tss.APPROVEDATE).Interval(DateInterval.Year).MinimumDocumentCount(1) .Aggregations(tsst => tsst.DateHistogram("qua", ttt => ttt.Field(tstt => tstt.APPROVEDATE).Interval(DateInterval.Quarter).MinimumDocumentCount(0) .Aggregations(ty => ty.DateHistogram("month", tty => tty.Field(ttyy => ttyy.APPROVEDATE).Interval(DateInterval.Month).MinimumDocumentCount(0)))))))))); } else if (model.Type == "2") { response = tbpItemESRep.Search(t => t.Size(0).Query(filterQuery) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID) .Aggregations(tt => tt.DateHistogram("year", tst => tst.Field(tss => tss.CHECKDATE).Interval(DateInterval.Year).MinimumDocumentCount(1) .Aggregations(tsst => tsst.DateHistogram("qua", ttt => ttt.Field(tstt => tstt.CHECKDATE).Interval(DateInterval.Quarter).MinimumDocumentCount(0) .Aggregations(ty => ty.DateHistogram("month", tty => tty.Field(ttyy => ttyy.CHECKDATE).Interval(DateInterval.Month).MinimumDocumentCount(0)))))))))); } else if (model.Type == "3") { response = tbpItemESRep.Search(t => t.Size(0).Query(filterQuery) .Aggregations(ttty => ttty.Terms("CustomID", tttty => tttty.Field(tgh => tgh.CUSTOMID) .Aggregations(tt => tt.DateHistogram("year", tst => tst.Field(tss => tss.UPLOADTIME).Interval(DateInterval.Year).MinimumDocumentCount(1) .Aggregations(tsst => tsst.DateHistogram("qua", ttt => ttt.Field(tstt => tstt.UPLOADTIME).Interval(DateInterval.Quarter).MinimumDocumentCount(0) .Aggregations(ty => ty.DateHistogram("month", tty => tty.Field(ttyy => ttyy.UPLOADTIME).Interval(DateInterval.Month).MinimumDocumentCount(0)))))))))); } else { response = null; } return(response); }
public ActionResult Search(CheckStatisDataSearchModel model) { List <CheckStatisDataSearchResultModel> resultmodel = GetSearchData(model); DhtmlxGrid grid = new DhtmlxGrid(); var allInsts = checkUnitService.GetAllCheckUnit(); int index = 1; string customName = string.Empty; foreach (var item in resultmodel) { if (item.CustomId.IsNullOrEmpty()) { continue; } DhtmlxGridRow row = new DhtmlxGridRow(item.CustomId); row.AddCell(index++); row.AddCell(checkUnitService.GetCheckUnitByIdFromAll(allInsts, item.CustomId)); if (item.DayCount > 0) { row.AddLinkJsCell(item.DayCount, "Details(\"{0}\",\"{1}\")".Fmt(item.CustomId, 0)); } else { row.AddCell(item.DayCount); } if (item.WeekCount > 0) { row.AddLinkJsCell(item.WeekCount, "Details(\"{0}\",\"{1}\")".Fmt(item.CustomId, 1)); } else { row.AddCell(item.WeekCount); } if (item.MonthCount > 0) { row.AddLinkJsCell(item.MonthCount, "Details(\"{0}\",\"{1}\")".Fmt(item.CustomId, 2)); } else { row.AddCell(item.MonthCount); } if (item.QuarterCount > 0) { row.AddLinkJsCell(item.QuarterCount, "Details(\"{0}\",\"{1}\")".Fmt(item.CustomId, 3)); } else { row.AddCell(item.QuarterCount); } if (item.YearCount > 0) { row.AddLinkJsCell(item.YearCount, "Details(\"{0}\",\"{1}\")".Fmt(item.CustomId, 4)); } else { row.AddCell(item.YearCount); } if (item.TotalCount > 0) { row.AddLinkJsCell(item.TotalCount, "Details(\"{0}\",\"{1}\")".Fmt(item.CustomId, 5)); } else { row.AddCell(item.TotalCount); } //row.AddCell(item.YearCount); //row.AddCell(item.TotalCount); grid.AddGridRow(row); } string str = grid.BuildRowXml().ToString(System.Xml.Linq.SaveOptions.DisableFormatting); return(Content(str, "text/xml")); }
private List <CheckStatisDataSearchResultModel> GetSearchData(CheckStatisDataSearchModel model) { var date = DateTime.Now; DateTime startYear = new DateTime(date.Year, 1, 1); //本年年初 DateTime endYear = new DateTime(date.Year, 12, 31).AddDays(1); //本年年末 DateTime startWeek = date.AddDays(1 - Convert.ToInt32(date.DayOfWeek.ToString("d"))); //本周周一 DateTime endWeek = startWeek.AddDays(7); string dtFormatStr = "yyyy-MM-dd'T'HH:mm:ss"; model.StartTime = startYear; model.EndTime = endYear; //获取当前年份,季度,月数据信息 ISearchResponse <es_t_bp_item> yearResponse = GetYearSearchResponse(model); model.StartTime = startWeek; model.EndTime = endWeek; //获取当前周信息 ISearchResponse <es_t_bp_item> weekResponse = GetWeekSearchResponse(model); //获取所有机构上传报告总数 ISearchResponse <es_t_bp_item> totalResponse = GetTotalSearchResponse(model); DateTime startQuarter = date.AddMonths(0 - (date.Month - 1) % 3).AddDays(1 - date.Day); //本季度初 var startQuaStr = startQuarter.ToString("yyyy-MM-dd"); var startMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 01); var startMonthStr = startMonth.ToString("yyyy-MM-dd"); var toDayStr = DateTime.Today.ToString("yyyy-MM-dd"); List <CheckStatisDataSearchResultModel> resultmodel = new List <CheckStatisDataSearchResultModel>(); if (yearResponse.IsValid) { var buckets = yearResponse.Aggs.Terms("CustomID").Buckets; foreach (var bucket in buckets) { var customId = bucket.Key; int yearCount = 0; int qualCount = 0; int monthCount = 0; var yearBuckets = bucket.DateHistogram("year").Buckets; foreach (var yearBucket in yearBuckets) { yearCount = (int)yearBucket.DocCount; var quaBuckets = yearBucket.DateHistogram("qua").Buckets; foreach (var quaBucket in quaBuckets) { var quaKeyAsStrings = quaBucket.KeyAsString.Split('T'); if (startQuaStr == quaKeyAsStrings[0])//只需要本季度数据,同时在本季度存在数据的情况下才获取本月数据 { qualCount = (int)quaBucket.DocCount; var monthBuckets = quaBucket.DateHistogram("month").Buckets; foreach (var monthBucket in monthBuckets) { var monthKeyAsStrings = monthBucket.KeyAsString.Split('T'); if (startMonthStr == monthKeyAsStrings[0])//获取本月数据 { monthCount = (int)monthBucket.DocCount; } } } } } resultmodel.Add(new CheckStatisDataSearchResultModel() { CustomId = customId, YearCount = yearCount, QuarterCount = qualCount, MonthCount = monthCount }); } } if (weekResponse.IsValid) { var buckets = weekResponse.Aggs.Terms("CustomID").Buckets; foreach (var bucket in buckets) { var customId = bucket.Key; var weekBuckets = bucket.DateHistogram("week").Buckets; foreach (var weekBucket in weekBuckets) { var weekCount = weekBucket.DocCount; var dayBuckets = weekBucket.DateHistogram("day").Buckets; foreach (var dayBucket in dayBuckets) { var dayKeys = dayBucket.KeyAsString.Split('T'); if (toDayStr == dayKeys[0])//只需要当天数据 { var dayCount = dayBucket.DocCount; var oneResultModels = resultmodel.Where(t => t.CustomId == customId); if (oneResultModels != null) { if (oneResultModels.Count() > 0) //和上面的不等于null判断一起判断结果数组中是不是存在本机构,如果存在,直接修改相应值,不存在则新增 { var oneResultModel = oneResultModels.First(); oneResultModel.DayCount = (int)dayCount; oneResultModel.WeekCount = (int)weekCount; } else { resultmodel.Add(new CheckStatisDataSearchResultModel() { DayCount = (int)dayCount, WeekCount = (int)weekCount }); } } else { resultmodel.Add(new CheckStatisDataSearchResultModel() { DayCount = (int)dayCount, WeekCount = (int)weekCount }); } } } } } } if (totalResponse.IsValid) { var buckets = totalResponse.Aggs.Terms("CustomID").Buckets; foreach (var bucket in buckets) { var customId = bucket.Key; var totalCount = bucket.DocCount; var oneResultModels = resultmodel.Where(t => t.CustomId == customId); if (oneResultModels != null) { if (oneResultModels.Count() > 0)//和上面的不等于null判断一起判断结果数组中是不是存在本机构,如果存在,直接修改相应值,不存在则新增 { var oneResultModel = oneResultModels.First(); oneResultModel.TotalCount = (int)totalCount; } else { resultmodel.Add(new CheckStatisDataSearchResultModel() { CustomId = customId, TotalCount = (int)totalCount }); } } else { resultmodel.Add(new CheckStatisDataSearchResultModel() { CustomId = customId, TotalCount = (int)totalCount }); } } } return(resultmodel); }
protected Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> GetFilterQuery(CheckStatisDataSearchModel model) { Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> filterQuery = q => { string dtFormatStr = "yyyy-MM-dd'T'HH:mm:ss"; var startDtStr = model.StartTime.HasValue ? model.StartTime.Value.ToString(dtFormatStr) : string.Empty; var endDtStr = model.EndTime.HasValue ? model.EndTime.Value.ToString(dtFormatStr) : string.Empty; QueryContainer initQuery = q.Exists(qe => qe.Field(qef => qef.SYSPRIMARYKEY)); if (model.Type == "0") { if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.PRINTDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr))); } if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.PRINTDATE).LessThanOrEquals(DateMath.FromString(endDtStr))); } } else if (model.Type == "1") { if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.APPROVEDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr))); } if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.APPROVEDATE).LessThanOrEquals(DateMath.FromString(endDtStr))); } } else if (model.Type == "2") { if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.CHECKDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr))); } if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.CHECKDATE).LessThanOrEquals(DateMath.FromString(endDtStr))); } } else if (model.Type == "3") { if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.UPLOADTIME).GreaterThanOrEquals(DateMath.FromString(startDtStr))); } if (!startDtStr.IsNullOrEmpty()) { initQuery = initQuery && +q.DateRange(d => d.Field(f => f.UPLOADTIME).LessThanOrEquals(DateMath.FromString(endDtStr))); } } return(initQuery); }; return(filterQuery); }