|
|
@@ -103,11 +103,11 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
|
|
|
sPage.setPage(page);
|
|
|
} else {
|
|
|
sPage.setPage(PAGE_INDEX);
|
|
|
+ sPage.setFirst(true);
|
|
|
}
|
|
|
int size = params.getSize();
|
|
|
if (size > 0) {
|
|
|
sPage.setSize(size);
|
|
|
- sPage.setFirst(true);
|
|
|
} else {
|
|
|
sPage.setSize(PAGE_SIZE);
|
|
|
}
|
|
|
@@ -136,7 +136,7 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
calendar.set(2016, 0, 1);
|
|
|
// 最大日期初始化为现在
|
|
|
- long minTime = calendar.getTime().getTime();
|
|
|
+ long minTime = calendar.getTimeInMillis();
|
|
|
long maxTime = new Date().getTime();
|
|
|
if (!StringUtils.isEmpty(filters.get("or_mintime"))) {
|
|
|
minTime = Long.parseLong(filters.get("or_mintime").toString());
|
|
|
@@ -146,6 +146,10 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
|
|
|
}
|
|
|
booleanQuery.add(NumericRangeQuery.newLongRange(SearchConstants.ORDER_CREATETIME_FIELD, minTime,
|
|
|
maxTime, true, true), BooleanClause.Occur.MUST);
|
|
|
+ logger.info(minTime);
|
|
|
+ logger.info(maxTime);
|
|
|
+ logger.info(new Date(minTime));
|
|
|
+ logger.info(new Date(maxTime));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -156,31 +160,42 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
|
|
|
// 如果页码不为1
|
|
|
if (sPage.getPage() > 1) {
|
|
|
TopDocs previousTopDocs = indexSearcher.search(booleanQuery, (sPage.getPage() - 1) * sPage.getSize());
|
|
|
+ int totalHits = previousTopDocs.totalHits;
|
|
|
ScoreDoc[] previousScoreDocs = previousTopDocs.scoreDocs;
|
|
|
- if (previousScoreDocs == null || previousScoreDocs.length == 0) {
|
|
|
+ logger.info(previousScoreDocs == null || previousScoreDocs.length == 0);
|
|
|
+ if (totalHits == 0) {
|
|
|
return searchOrderDetailIds(keyword, params);
|
|
|
} else {
|
|
|
+ if ((sPage.getPage() - 1) * sPage.getSize() > totalHits) {
|
|
|
+ throw new SearchException("页码过大");
|
|
|
+ }
|
|
|
topDocs = indexSearcher.searchAfter(previousScoreDocs[previousScoreDocs.length - 1], booleanQuery,
|
|
|
- sPage.getPage());
|
|
|
+ sPage.getSize());
|
|
|
}
|
|
|
} else {
|
|
|
sPage.setFirst(true);
|
|
|
topDocs = indexSearcher.search(booleanQuery, sPage.getSize());
|
|
|
}
|
|
|
// 如果主表中未匹配到结果,再搜索其明细表
|
|
|
- if (topDocs.totalHits < 1) {
|
|
|
+ int totalHits = topDocs.totalHits;
|
|
|
+ if (totalHits < 1) {
|
|
|
return searchOrderDetailIds(keyword, params);
|
|
|
}
|
|
|
|
|
|
- sPage.setTotalElement(topDocs.totalHits);
|
|
|
- logger.info(sPage);
|
|
|
- logger.info(topDocs.totalHits);
|
|
|
+ sPage.setTotalElement(totalHits);
|
|
|
+ int totalPage = (int) Math.ceil(totalHits / (1.0 * sPage.getSize()));
|
|
|
+ sPage.setTotalPage(totalPage);
|
|
|
+ if (totalPage == sPage.getPage()) {
|
|
|
+ sPage.setLast(true);
|
|
|
+ }
|
|
|
+
|
|
|
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
|
|
|
List<BaseOrder> baseOrders = new ArrayList<>();
|
|
|
for (ScoreDoc scoreDoc : scoreDocs) {
|
|
|
Document document = indexSearcher.doc(scoreDoc.doc);
|
|
|
Long id = Long.valueOf(document.get(SearchConstants.ORDER_ID_FIELD));
|
|
|
String code = document.get(SearchConstants.ORDER_CODE_FIELD);
|
|
|
+ logger.info(id + " " + document.get(SearchConstants.ORDER_CREATETIME_FIELD) + " " + new Date(Long.parseLong(document.get(SearchConstants.ORDER_CREATETIME_FIELD))));
|
|
|
BaseOrder baseOrder = new BaseOrder(id, code);
|
|
|
baseOrder.setDetails(getOrderDetails(id));
|
|
|
baseOrders.add(baseOrder);
|
|
|
@@ -205,13 +220,14 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
|
|
|
if (orderid == null) {
|
|
|
return null;
|
|
|
}
|
|
|
- List<Document> documents = getDocuments(SearchConstants.ORDER_DETAIL_DETNO_FIELD, orderid.toString());
|
|
|
+ List<Document> documents = getDocuments(SearchConstants.ORDER_DETAIL_ORDERID_FIELD, orderid.toString());
|
|
|
List<BaseOrderDetail> baseOrderDetails = new ArrayList<>();
|
|
|
for (Document document : documents) {
|
|
|
Long id = Long.valueOf(document.get(SearchConstants.ORDER_DETAIL_ID_FIELD));
|
|
|
String code = document.get(SearchConstants.ORDER_DETAIL_CODE_FIELD);
|
|
|
- Short detno = Short.valueOf(document.get(SearchConstants.ORDER_DETAIL_DETNO_FIELD));
|
|
|
- baseOrderDetails.add(new BaseOrderDetail(id, detno, code));
|
|
|
+ // Short detno =
|
|
|
+ // Short.valueOf(document.get(SearchConstants.ORDER_DETAIL_DETNO_FIELD));
|
|
|
+ baseOrderDetails.add(new BaseOrderDetail(id, null, code));
|
|
|
}
|
|
|
return baseOrderDetails;
|
|
|
}
|
|
|
@@ -272,7 +288,6 @@ public class OrderSearchServiceImpl implements OrderSearchService, InnerOrderSea
|
|
|
try {
|
|
|
TopDocs topDocs = indexSearcher.search(termQuery, TOP_NUM);
|
|
|
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
|
|
|
- logger.info(termQuery + " " + topDocs.totalHits);
|
|
|
for (ScoreDoc scoreDoc : scoreDocs) {
|
|
|
documents.add(indexSearcher.doc(scoreDoc.doc));
|
|
|
}
|