public ReportViewModel GetByReportNumAndCustomId(string reportNum, string customId)
        {
            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> numQuery = qz =>
            {
                var initquery = qz.Term(qr => qr.Field(qrf => qrf.REPORTNUM).Value(reportNum));

                if (!customId.IsNullOrEmpty())
                {
                    initquery = initquery && qz.Term(tt => tt.Field(ttt => ttt.CUSTOMID).Value(customId));
                }

                return(initquery);
            };

            ISearchResponse <es_t_bp_item> response = m_repReport.Search(s => s.From(0).Size(2).Query(numQuery).Sort(cs => cs.Descending(csd => csd.UPDATETIME)));

            if (response.Documents.Count == 0)
            {
                return(null);
            }

            ReportViewModel rvm = ReportViewModel.BuildReportVieModelFromES(response.Documents.First());

            FillInCheckItem(rvm);
            return(rvm);
        }
        public List <ReportViewModel> GetUnqualifiedReports(int userId, string stationName = "", string projectName = "", string checkItemCode = "", int days = 1, int pageIndex = 0, int pageSize = 10)
        {
            string dtFormatStr = "yyyy-MM-dd'T'HH:mm:ss";
            string startDtStr  = DateTime.Today.AddDays(-days).ToString(dtFormatStr);
            string endDtStr    = DateTime.Today.AddDays(1).ToString(dtFormatStr);

            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> qcd = q =>
            {
                var qc = q.Term(t => t.Field(f => f.CONCLUSIONCODE).Value("N")) &&
                         q.DateRange(qdr => qdr.Field(qdrf => qdrf.PRINTDATE).GreaterThanOrEquals(DateMath.FromString(startDtStr))) &&
                         q.DateRange(qddr => qddr.Field(qddrf => qddrf.PRINTDATE).LessThanOrEquals(DateMath.FromString(endDtStr))) &&
                         q.Match(t => t.Field(f => f.SAMPLEDISPOSEPHASE).Query(PkpmConfigService.PrintedSamplePhrase));

                var instFilter = m_svcUser.GetFilterInsts(userId, "");
                if (instFilter.NeedFilter && instFilter.FilterInstIds.Count() > 0)
                {
                    qc = qc && +q.Terms(qtm => qtm.Field(qtmf => qtmf.CUSTOMID).Terms(instFilter.FilterInstIds));
                }

                if (!string.IsNullOrEmpty(checkItemCode))
                {
                    qc = qc && +q.Term(qt => qt.Field(qtf => qtf.ITEMNAME).Value(checkItemCode));
                }

                if (!string.IsNullOrEmpty(stationName))
                {
                    qc = qc && q.Match(t => t.Field(f => f.SUPERUNIT).Query(stationName));
                }

                if (!string.IsNullOrEmpty(projectName))
                {
                    // && + 只过滤,不分词
                    qc = qc && +q.Term(qt => qt.Field(qtf => qtf.PROJECTNAME[0].Suffix("PROJECTNAMERAW")).Value(projectName));
                }

                return(qc);
            };
            ISearchResponse <es_t_bp_item> response = m_repReport.Search(s => s.Sort(cs => cs.Descending(sd => sd.PRINTDATE)).From(pageIndex * pageSize).Size(pageSize).Query(qcd));

            List <ReportViewModel> result = new List <ReportViewModel>();

            foreach (var d in response.Documents)
            {
                var r = ReportViewModel.BuildReportVieModelFromES(d);
                FillInCheckItem(r);
                result.Add(r);
            }
            return(result);
        }
        public ReportViewModel GetByReportNum(string reportNum)
        {
            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> numQuery = qz =>
            {
                var initquery = qz.Term(qr => qr.Field(qrf => qrf.REPORTNUM).Value(reportNum));
                return(initquery);
            };

            ISearchResponse <es_t_bp_item> response = m_repReport.Search(s => s.From(0).Size(10).Query(numQuery).Sort(cs => cs.Descending(csd => csd.UPLOADTIME)));

            if (response.Documents.Count == 0)
            {
                return(null);
            }

            ReportViewModel rvm = ReportViewModel.BuildReportVieModelFromES(response.Documents.First());

            FillInCheckItem(rvm);
            return(rvm);
        }
        public ReportViewModel GetByReportNumAndDate(string reportNum, DateTime PrintDate)
        {
            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> numQuery = qz =>
            {
                string dtFormatStr = "yyyy-MM-dd'T'HH:mm:ss";

                var initquery = qz.Term(qr => qr.Field(qrf => qrf.REPORTNUM).Value(reportNum));
                initquery = initquery && qz.DateRange(d => d.Field(f => f.PRINTDATE).GreaterThanOrEquals(DateMath.FromString(PrintDate.ToString(dtFormatStr))));

                return(initquery);
            };

            ISearchResponse <es_t_bp_item> response = m_repReport.Search(s => s.From(0).Size(10).Query(numQuery).Sort(cs => cs.Descending(csd => csd.UPDATETIME)));

            if (response.Documents.Count == 0)
            {
                return(null);
            }

            ReportViewModel rvm = ReportViewModel.BuildReportVieModelFromES(response.Documents.First());

            FillInCheckItem(rvm);
            return(rvm);
        }
        public ReportViewModel GetByReportNum(ReportCheck reportCheck)
        {
            Func <QueryContainerDescriptor <es_t_bp_item>, QueryContainer> numQuery = qz =>
            {
                var initquery = qz.Term(qr => qr.Field(qrf => qrf.REPORTNUM).Value(reportCheck.reportnum));
                if (!reportCheck.customid.IsNullOrEmpty())
                {
                    initquery = initquery && qz.Term(tt => tt.Field(ttt => ttt.CUSTOMID).Value(reportCheck.customid));
                }
                return(initquery);
            };

            ISearchResponse <es_t_bp_item> response = m_repReport.Search(s => s.From(0).Size(10).Query(numQuery).Sort(cs => cs.Descending(csd => csd.UPLOADTIME)));

            if (!response.IsValid || response.Documents == null || response.Documents.Count == 0)
            {
                return(null);
            }

            es_t_bp_item chooseTBpItem = new es_t_bp_item();

            if (response.Documents.Count == 1)
            {
                chooseTBpItem = response.Documents.First();
            }
            else
            {
                bool hasFound  = false;
                var  existDocs = response.Documents.ToList();

                //查 工程名称
                if (!reportCheck.projectname.IsNullOrEmpty())
                {
                    existDocs = existDocs.Where(e => e.PROJECTNAME.Contains(reportCheck.projectname.Trim())).ToList();

                    if (existDocs.IsNullOrEmpty())
                    {
                        hasFound      = true;
                        chooseTBpItem = response.Documents.First();
                    }
                    else if (existDocs.Count() == 1)
                    {
                        hasFound      = true;
                        chooseTBpItem = existDocs.First();
                    }
                }

                //查 结构部位
                if (!hasFound && !reportCheck.structpart.IsNullOrEmpty())
                {
                    existDocs = existDocs.Where(e => e.STRUCTPART.Contains(reportCheck.structpart.Trim())).ToList();

                    if (existDocs.IsNullOrEmpty())
                    {
                        hasFound      = true;
                        chooseTBpItem = response.Documents.First();
                    }
                    else if (existDocs.Count() == 1)
                    {
                        hasFound      = true;
                        chooseTBpItem = existDocs.First();
                    }
                }

                if (!hasFound)
                {
                    chooseTBpItem = response.Documents.First();
                }
            }

            ReportViewModel rvm = ReportViewModel.BuildReportVieModelFromES(chooseTBpItem);

            FillInCheckItem(rvm);
            return(rvm);
        }