public List<ContractDocumentDTO> Search(string keyword) { var documentPathAppService = UniContainer.Resolve<IDocumentPathAppService>(); var queryResults = LuceneSearch.LuceneSearch.PanguQuery(keyword, "3"); if (queryResults == null) return new List<ContractDocumentDTO>(); var multiSearcher = IndexManager.GenerateMultiSearcher("3"); var documents = queryResults.scoreDocs.Select(a => multiSearcher.Doc(a.doc)).Select(result => { var documentId = Guid.Parse(result.Get("ID")); Expression<Func<Order, bool>> orderDocument = p => p.ContractDocGuid == documentId; Expression<Func<RelatedDoc, bool>> relateDocument = p => p.DocumentId == documentId; Expression<Func<MaintainContract, bool>> maintainContractDocument = p => p.DocumentId == documentId; var document = _contractDocumentQuery.GetContractDocuments(orderDocument, relateDocument, maintainContractDocument).FirstOrDefault(); var contractDocument = new ContractDocumentDTO { Id = documentId, DocumentId = documentId, Abstract = ResultHighlighter.HighlightContent(keyword, result.Get("fileContent")), DocumentName = result.Get("fileName"), }; if (document != null) { contractDocument.ContractName = document.ContractName; contractDocument.ContractNumber = document.ContractName; contractDocument.SupplierName = document.SupplierName; contractDocument.SubDocuments = document.SubDocuments; } documentPathAppService.GetDocumentPaths().Where(p => p.DocumentGuid == documentId).ToList() .ForEach(p => contractDocument.DocumentPath += p.Path + "\r\n"); return contractDocument; }).ToList(); return documents; }
private void SetSubContractDocument(ContractDocumentDTO source, ContractDocumentDTO dst) { if (dst.SubDocuments.Count == 0) { dst.SubDocuments = new List<SubContractDocumentDTO> { new SubContractDocumentDTO { Id = Guid.NewGuid(), SupplierName = source.SupplierName, ContractName = source.ContractName, ContractNumber = source.ContractNumber, } }; } else { dst.SubDocuments.Add(new SubContractDocumentDTO { Id = Guid.NewGuid(), SupplierName = source.SupplierName, ContractName = source.ContractName, ContractNumber = source.ContractNumber, }); } }