public ActionResult GridSearch(CheckStatisDataGridSearchModel model)
        {
            var        response = GetGridSerarchResponse(model);
            DhtmlxGrid grid     = new DhtmlxGrid();

            var allInsts = checkUnitService.GetAllCheckUnit();
            var allItems = itemNameService.GetAllItemName();
            var pos      = model.posStart.HasValue ? model.posStart.Value : 0;
            int index    = pos + 1;


            if (response.IsValid)
            {
                var totalCount = (int)response.Total;
                grid.AddPaging(totalCount, pos);
                foreach (var item in response.Documents)
                {
                    DhtmlxGridRow row = new DhtmlxGridRow(item.SYSPRIMARYKEY);
                    row.AddCell(index++);
                    row.AddCell(checkUnitService.GetCheckUnitByIdFromAll(allInsts, item.CUSTOMID));
                    row.AddCell(item.PROJECTNAME);
                    row.AddCell(itemNameService.GetItemCNNameFromAll(allItems, item.REPORTJXLB, item.ITEMNAME));
                    row.AddCell(GetUIDtString(item.CHECKDATE));
                    row.AddCell(GetUIDtString(item.PRINTDATE));
                    row.AddLinkJsCell(item.REPORTNUM, "getPKRReport(\"{0}\")".Fmt(item.REPORTNUM));
                    row.AddCell(new DhtmlxGridCell("查看", false).AddCellAttribute("title", "查看"));

                    grid.AddGridRow(row);
                }
            }

            string str = grid.BuildRowXml().ToString(System.Xml.Linq.SaveOptions.DisableFormatting);

            return(Content(str, "text /xml"));
        }
        private ISearchResponse <es_t_bp_item> GetGridSerarchResponse(CheckStatisDataGridSearchModel model)
        {
            var filterQuery = GetGridSearchFilterQuery(model);

            int pos   = model.posStart.HasValue ? model.posStart.Value : 0;
            int count = model.count.HasValue ? model.count.Value : 30;

            return(tbpItemESRep.Search(t => t.Query(filterQuery).From(pos).Size(count)
                                       .Source(tt => tt.Includes(ttt => ttt.Fields(tst => tst.CUSTOMID,
                                                                                   tst => tst.SYSPRIMARYKEY,
                                                                                   tst => tst.REPORTNUM,
                                                                                   tst => tst.ITEMNAME,
                                                                                   tst => tst.PRINTDATE,
                                                                                   tst => tst.CHECKDATE,
                                                                                   tst => tst.PROJECTNAME)))));
        }
        protected Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> GetGridSearchFilterQuery(CheckStatisDataGridSearchModel model)
        {
            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> filterQuery = q =>
            {
                string   dtFormatStr = "yyyy-MM-dd'T'HH:mm:ss";
                DateTime?StartTime   = new DateTime();
                DateTime?EndTime     = new DateTime();
                DateTime date        = DateTime.Now;
                if (model.SearchType == "0")
                {
                    StartTime = DateTime.Today;
                    EndTime   = DateTime.Today.AddDays(1);
                }
                else if (model.SearchType == "1")
                {
                    StartTime = date.AddDays(1 - Convert.ToInt32(date.DayOfWeek.ToString("d"))); //本周周一
                    EndTime   = StartTime.Value.AddDays(7);
                }
                else if (model.SearchType == "2")
                {
                    StartTime = date.AddDays(1 - date.Day);   //本月月初
                    EndTime   = StartTime.Value.AddMonths(1); //本月月末
                }
                else if (model.SearchType == "3")
                {
                    StartTime = date.AddMonths(0 - (date.Month - 1) % 3).AddDays(1 - date.Day);  //本季度初
                    EndTime   = StartTime.Value.AddMonths(3);
                }
                else if (model.SearchType == "4")
                {
                    StartTime = new DateTime(date.Year, 1, 1);              //本年年初
                    EndTime   = new DateTime(date.Year, 12, 31).AddDays(1); //本年年末
                }
                else if (model.SearchType == "5")
                {
                    StartTime = new DateTime(2000, 1, 1);
                    EndTime   = new DateTime(2099, 1, 1);
                }


                var startDtStr = StartTime.HasValue ? StartTime.Value.ToString(dtFormatStr) : string.Empty;
                var endDtStr   = EndTime.HasValue ? 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)));
                    }
                }

                if (!model.CustomId.IsNullOrEmpty())
                {
                    initQuery = initQuery && q.Term(tt => tt.Field(ttt => ttt.CUSTOMID).Value(model.CustomId));
                }

                return(initQuery);
            };

            return(filterQuery);
        }