private ISearchResponse <es_t_bp_item> GetGridResult(TotalStatisSearchModel model)
        {
            int pos         = model.posStart.HasValue ? model.posStart.Value : 0;
            int count       = model.count.HasValue ? model.count.Value : 30;
            var filterQuery = GetFilterQuery(model);

            return(tbpitemESRep.Search(s => s.Query(filterQuery).Size(count).From(pos)));
        }
        public ISearchResponse <es_t_bp_item> GetResult(TotalStatisSearchModel model)
        {
            var filterQuery = GetFilterQuery(model);

            return(tbpitemESRep.Search(s => s.Size(0).Query(filterQuery).Aggregations(af => af.Terms("CUSTOMID", item => item.Field(iif => iif.CUSTOMID)
                                                                                                     .Aggregations(aaf => aaf.Terms(UnQualiKey, adn => adn.Field(aaa => aaa.CONCLUSIONCODE))
                                                                                                                   .Terms(ModifyKey, adm => adm.Field(aadm => aadm.HAVELOG))
                                                                                                                   .Terms(AcsKey, afnm => afnm.Field(aaaa => aaaa.HAVEACS))).Size(1000)))));
        }
        public ActionResult GridSearch(TotalStatisSearchModel model)
        {
            int        pos      = model.posStart.HasValue ? model.posStart.Value : 0;
            var        response = GetGridResult(model);
            DhtmlxGrid grid     = new DhtmlxGrid();

            if (response.IsValid)
            {
                int totalCount = (int)response.Total;
                grid.AddPaging(totalCount, pos);
                int index    = pos;
                var allInst  = checkUnitService.GetAllCheckUnit();
                var allItems = itemNameService.GetAllItemName();
                foreach (var item in response.Documents)
                {
                    DhtmlxGridRow row = new DhtmlxGridRow(item.SYSPRIMARYKEY);
                    row.AddCell(index + 1);
                    row.AddCell(checkUnitService.GetCheckUnitByIdFromAll(allInst, item.CUSTOMID));
                    row.AddCell(item.PROJECTNAME);

                    if (itemNameService.IsCReport(item.REPORTJXLB, item.ITEMNAME))
                    {
                        row.AddCell(item.ITEMCHNAME.IsNullOrEmpty() ?itemNameService.GetItemCNNameFromAll(allItems, item.REPORTJXLB, item.ITEMNAME) : item.ITEMCHNAME);
                    }
                    else
                    {
                        row.AddCell(item.ITEMCHNAME.IsNullOrEmpty() ?itemNameService.GetItemCNNameFromAll(allItems, item.REPORTJXLB, item.ITEMNAME) : item.ITEMCHNAME);
                    }
                    row.AddCell(GetUIDtString(item.PRINTDATE));

                    row.AddCell(item.REPORTNUM);
                    row.AddCell(new DhtmlxGridCell("查看", false).AddCellAttribute("title", "查看"));
                    index++;
                    grid.AddGridRow(row);
                }
            }
            string str = grid.BuildRowXml().ToString(System.Xml.Linq.SaveOptions.DisableFormatting);

            return(Content(str, "text/xml"));
        }
        public Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> GetFilterQuery(TotalStatisSearchModel model)
        {
            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> filterQuery = q =>
            {
                string         dtFormatStr = "yyyy-MM-dd'T'HH:mm:ss";
                string         startDtStr  = model.StartDt.HasValue ? model.StartDt.Value.ToString(dtFormatStr) : string.Empty;
                string         endDtStr    = model.EndDt.HasValue ? model.EndDt.Value.AddDays(1).ToString(dtFormatStr) : string.Empty;
                QueryContainer initQuery   = q.Exists(qe => qe.Field(qef => qef.SYSPRIMARYKEY));
                if (model.DtType == "ENTRUSTDATE")
                {
                    if (!startDtStr.IsNullOrEmpty())
                    {
                        initQuery = initQuery && +q.DateRange(d => d.Field(f => f.ENTRUSTDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr)));
                    }
                    if (!endDtStr.IsNullOrEmpty())
                    {
                        initQuery = initQuery && +q.DateRange(d => d.Field(f => f.ENTRUSTDATE).LessThan(DateMath.FromString(endDtStr)));
                    }
                }
                else if (model.DtType == "CHECKDATE")
                {
                    if (!startDtStr.IsNullOrEmpty())
                    {
                        initQuery = initQuery && +q.DateRange(d => d.Field(f => f.CHECKDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr)));
                    }
                    if (!endDtStr.IsNullOrEmpty())
                    {
                        initQuery = initQuery && +q.DateRange(d => d.Field(f => f.CHECKDATE).LessThan(DateMath.FromString(endDtStr)));
                    }
                }
                else if (model.DtType == "APPROVEDATE")
                {
                    if (!startDtStr.IsNullOrEmpty())
                    {
                        initQuery = initQuery && +q.DateRange(d => d.Field(f => f.APPROVEDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr)));
                    }
                    if (!endDtStr.IsNullOrEmpty())
                    {
                        initQuery = initQuery && +q.DateRange(d => d.Field(f => f.APPROVEDATE).LessThan(DateMath.FromString(endDtStr)));
                    }
                }
                if (!model.CheckInstID.IsNullOrEmpty())
                {
                    initQuery = initQuery && +q.Term(s => s.Field(ss => ss.CUSTOMID).Value(model.CheckInstID));
                }
                if (!model.SearchType.IsNullOrEmpty())
                {
                    if (model.SearchType == "modify")
                    {
                        //HAVELOG == 1;
                        initQuery = initQuery && +q.Term(s => s.Field(ss => ss.HAVELOG).Value("1"));
                    }
                    if (model.SearchType == "unquali")
                    {
                        initQuery = initQuery && +q.Term(s => s.Field(ss => ss.CONCLUSIONCODE).Value("N"));
                    }
                    if (model.SearchType == "acs")
                    {
                        initQuery = initQuery && +q.Term(s => s.Field(ss => ss.HAVEACS).Value("1"));
                    }
                }
                return(initQuery);
            };

            return(filterQuery);
        }
        public ActionResult Search(TotalStatisSearchModel model)
        {
            var        response = GetResult(model);
            DhtmlxGrid grid     = new DhtmlxGrid();

            if (response.IsValid)
            {
                var buckets  = response.Aggs.Terms("CUSTOMID").Buckets;
                var allInsts = checkUnitService.GetAllCheckUnit();
                int i        = 1;
                foreach (var bucket in buckets)
                {
                    DhtmlxGridRow row           = new DhtmlxGridRow(bucket.Key);
                    string        unqualiCount  = string.Empty;
                    string        modifyCount   = string.Empty;
                    string        AcsCount      = string.Empty;
                    var           unqualiBucket = bucket.Terms(UnQualiKey);
                    var           modifyBucket  = bucket.Terms <int>(ModifyKey);
                    var           AcsBucket     = bucket.Terms <int>(AcsKey);
                    var           customId      = bucket.Key;
                    var           totalCount    = bucket.DocCount;

                    foreach (var item in unqualiBucket.Buckets)
                    {
                        if (item.Key.ToString() == "N")
                        {
                            unqualiCount = item.DocCount.ToString();
                        }
                    }
                    foreach (var item in modifyBucket.Buckets)
                    {
                        if (item.Key.ToString() == "1")
                        {
                            modifyCount = item.DocCount.ToString();
                        }
                    }
                    foreach (var item in AcsBucket.Buckets)
                    {
                        if (item.Key.ToString() == "1")
                        {
                            AcsCount = item.DocCount.ToString();
                        }
                    }

                    row.AddCell(i.ToString());
                    var customName = checkUnitService.GetCheckUnitByIdFromAll(allInsts, customId);
                    row.AddCell(customName);
                    row.AddCell(totalCount.ToString());
                    if (unqualiCount.IsNullOrEmpty())
                    {
                        row.AddCell("0");
                    }
                    else
                    {
                        row.AddLinkJsCell(unqualiCount, "unqualiKeyGrid(\"{0}\",\"{1}\")".Fmt(customId, customName));
                    }
                    if (modifyCount.IsNullOrEmpty())
                    {
                        row.AddCell("0");
                    }
                    else
                    {
                        row.AddLinkJsCell(modifyCount, "modifyKeyGrid(\"{0}\",\"{1}\")".Fmt(customId, customName));
                    }
                    if (AcsCount.IsNullOrEmpty())
                    {
                        row.AddCell("0");
                    }
                    else
                    {
                        row.AddLinkJsCell(AcsCount, "AcsKeyGrid(\"{0}\",\"{1}\")".Fmt(customId, customName));
                    }
                    grid.AddGridRow(row);
                    i++;
                }
            }
            string str = grid.BuildRowXml().ToString(System.Xml.Linq.SaveOptions.DisableFormatting);

            return(Content(str, "text/xml"));
        }