Просмотр исходного кода

把获取单据的搜索条件作封装

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@1384 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
suntg 10 лет назад
Родитель
Сommit
e10a4e5e95

+ 25 - 16
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -24,6 +24,7 @@ import com.uas.platform.b2b.model.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderTodo;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.support.JxlsExcelView;
 import com.uas.platform.b2b.support.SystemSession;
@@ -100,12 +101,13 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items", method = RequestMethod.GET)
 	@ResponseBody
-	public Page<PurchaseOrderAll> getReceivedPurchaseOrderItems(PageParams params, String keyword, Long fromDate, Long endDate) {
+	public Page<PurchaseOrderAll> getReceivedPurchaseOrderItems(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(全部)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
-		return purchaseOrderService.findAllDetailByPageInfo(info, keyword, fromDate, endDate);
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findAllDetailByPageInfo(info, filter);
 	}
 
 	/**
@@ -116,12 +118,13 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items", params = RequestState.TODO, method = RequestMethod.GET)
 	@ResponseBody
-	public Page<PurchaseOrderTodo> getTodoPurchaseOrderItems(PageParams params, String keyword, Long fromDate, Long endDate) {
+	public Page<PurchaseOrderTodo> getTodoPurchaseOrderItems(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待回复)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
-		return purchaseOrderService.findTodoByPageInfo(info, keyword, fromDate, endDate);
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findTodoByPageInfo(info, filter);
 	}
 
 	/**
@@ -132,12 +135,13 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items", params = RequestState.DONE, method = RequestMethod.GET)
 	@ResponseBody
-	public Page<PurchaseOrderDone> getDonePurchaseOrderItems(PageParams params, String keyword, Long fromDate, Long endDate) {
+	public Page<PurchaseOrderDone> getDonePurchaseOrderItems(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(已回复)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
-		return purchaseOrderService.findDoneByPageInfo(info, keyword, fromDate, endDate);
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findDoneByPageInfo(info, filter);
 	}
 
 	/**
@@ -148,12 +152,13 @@ public class SaleOrderController {
 	 */
 	@RequestMapping(value = "/items", params = RequestState.END, method = RequestMethod.GET)
 	@ResponseBody
-	public Page<PurchaseOrderEnd> getEndPurchaseOrderItems(PageParams params, String keyword, Long fromDate, Long endDate) {
+	public Page<PurchaseOrderEnd> getEndPurchaseOrderItems(PageParams params, String searchFilter) {
 		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(已结案)");
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
-		return purchaseOrderService.findEndByPageInfo(info, keyword, fromDate, endDate);
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
+		return purchaseOrderService.findEndByPageInfo(info, filter);
 	}
 
 	/**
@@ -255,7 +260,8 @@ public class SaleOrderController {
 	 * @return
 	 */
 	@RequestMapping(value = "/xls", method = RequestMethod.GET)
-	public ModelAndView exportOrders(String keyword, Long fromDate, Long endDate) {
+	public ModelAndView exportOrders(String searchFilter) {
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
 		pageInfo.sorting("date", Direction.DESC);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -263,7 +269,7 @@ public class SaleOrderController {
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.addObject("dateFormat", dateFormat);
 		modelAndView.addObject("state", "全部");
-		modelAndView.addObject("data", purchaseOrderService.findAllDetailByPageInfo(pageInfo, keyword, fromDate, endDate).getContent());
+		modelAndView.addObject("data", purchaseOrderService.findAllDetailByPageInfo(pageInfo, filter).getContent());
 		modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/sale/saleOrder", "客户采购单列表_全部"));
 		logger.log("客户采购单", "导出Excel列表", "导出全部Excel列表");
 		return modelAndView;
@@ -276,7 +282,8 @@ public class SaleOrderController {
 	 * @return
 	 */
 	@RequestMapping(value = "/xls", params = RequestState.TODO, method = RequestMethod.GET)
-	public ModelAndView exportTodoOrders(String keyword, Long fromDate, Long endDate) {
+	public ModelAndView exportTodoOrders(String searchFilter) {
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
 		pageInfo.sorting("date", Direction.DESC);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -284,7 +291,7 @@ public class SaleOrderController {
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.addObject("dateFormat", dateFormat);
 		modelAndView.addObject("state", "待回复");
-		modelAndView.addObject("data", purchaseOrderService.findTodoByPageInfo(pageInfo, keyword, fromDate, endDate).getContent());
+		modelAndView.addObject("data", purchaseOrderService.findTodoByPageInfo(pageInfo, filter).getContent());
 		modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/sale/saleOrder", "客户采购单列表 _待回复"));
 		logger.log("客户采购单", "导出Excel列表", "导出待回复Excel列表");
 		return modelAndView;
@@ -297,7 +304,8 @@ public class SaleOrderController {
 	 * @return
 	 */
 	@RequestMapping(value = "/xls", params = RequestState.DONE, method = RequestMethod.GET)
-	public ModelAndView exportDoneOrders(String keyword, Long fromDate, Long endDate) {
+	public ModelAndView exportDoneOrders(String searchFilter) {
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
 		pageInfo.sorting("date", Direction.DESC);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -305,7 +313,7 @@ public class SaleOrderController {
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.addObject("dateFormat", dateFormat);
 		modelAndView.addObject("state", "已回复");
-		modelAndView.addObject("data", purchaseOrderService.findDoneByPageInfo(pageInfo, keyword, fromDate, endDate).getContent());
+		modelAndView.addObject("data", purchaseOrderService.findDoneByPageInfo(pageInfo, filter).getContent());
 		modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/sale/saleOrder", "客户采购单列表_已回复"));
 		logger.log("客户采购单", "导出Excel列表", "导出已回复Excel列表");
 		return modelAndView;
@@ -318,7 +326,8 @@ public class SaleOrderController {
 	 * @return
 	 */
 	@RequestMapping(value = "/xls", params = RequestState.END, method = RequestMethod.GET)
-	public ModelAndView exportEndOrders(String keyword, Long fromDate, Long endDate) {
+	public ModelAndView exportEndOrders(String searchFilter) {
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
 		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
 		pageInfo.sorting("date", Direction.DESC);
 		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
@@ -326,7 +335,7 @@ public class SaleOrderController {
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.addObject("dateFormat", dateFormat);
 		modelAndView.addObject("state", "已结案");
-		modelAndView.addObject("data", purchaseOrderService.findEndByPageInfo(pageInfo, keyword, fromDate, endDate).getContent());
+		modelAndView.addObject("data", purchaseOrderService.findEndByPageInfo(pageInfo, filter).getContent());
 		modelAndView.setView(new JxlsExcelView("classpath:jxls-tpl/sale/saleOrder", "客户采购单列表_已结案"));
 		logger.log("客户采购单", "导出Excel列表", "导出已结案Excel列表");
 		return modelAndView;

+ 5 - 2
src/main/java/com/uas/platform/b2b/mobile/controller/SaleController.java

@@ -10,11 +10,13 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import com.uas.platform.b2b.mobile.model.Purchase;
 import com.uas.platform.b2b.mobile.service.PurchaseService;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
 
 /**
  * 对移动端的数据接口<br>
@@ -41,11 +43,12 @@ public class SaleController {
 	 */
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
-	public Page<Purchase> getReceivedPurchaseOrders(PageParams params, String keyword, Long fromDate, Long endDate) {
+	public Page<Purchase> getReceivedPurchaseOrders(PageParams params, String searchFilter) {
 		PageInfo info = new PageInfo(params);
 		// 我作为卖家,把我的企业ID作为供应商ID传入
 		info.expression(PredicateUtils.in("vendUU", SystemSession.getUser().getEnUUs(), false));
-		return purchaseService.convertPurchaseOrder(purchaseOrderService.findAllDetailByPageInfo(info, keyword, fromDate, endDate));
+		SearchFilter filter = FlexJsonUtils.fromJson(searchFilter, SearchFilter.class);
+		return purchaseService.convertPurchaseOrder(purchaseOrderService.findAllDetailByPageInfo(info, filter));
 	}
 
 	/**

+ 5 - 4
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -12,6 +12,7 @@ import com.uas.platform.b2b.model.PurchaseOrderEnd;
 import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderTodo;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.core.model.PageInfo;
 
 public interface PurchaseOrderService {
@@ -47,7 +48,7 @@ public interface PurchaseOrderService {
 	 * @param keyword
 	 * @return
 	 */
-	public Page<PurchaseOrderAll> findAllDetailByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate);
+	public Page<PurchaseOrderAll> findAllDetailByPageInfo(PageInfo pageInfo, SearchFilter filter);
 
 	/**
 	 * 分页查找待回复订单,包括明细
@@ -55,7 +56,7 @@ public interface PurchaseOrderService {
 	 * @param pageInfo
 	 * @return
 	 */
-	public Page<PurchaseOrderTodo> findTodoByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate);
+	public Page<PurchaseOrderTodo> findTodoByPageInfo(PageInfo pageInfo, SearchFilter filter);
 
 	/**
 	 * 分页查找已回复订单,包括明细
@@ -63,7 +64,7 @@ public interface PurchaseOrderService {
 	 * @param pageInfo
 	 * @return
 	 */
-	public Page<PurchaseOrderDone> findDoneByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate);
+	public Page<PurchaseOrderDone> findDoneByPageInfo(PageInfo pageInfo, SearchFilter filter);
 
 	/**
 	 * 分页查找已结案订单明细
@@ -71,7 +72,7 @@ public interface PurchaseOrderService {
 	 * @param pageInfo
 	 * @return
 	 */
-	public Page<PurchaseOrderEnd> findEndByPageInfo(PageInfo pageInfo, String keyword, Long fromDate, Long endDate);
+	public Page<PurchaseOrderEnd> findEndByPageInfo(PageInfo pageInfo, SearchFilter filter);
 
 	/**
 	 * 用订单号查找订单

+ 49 - 48
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -40,6 +40,7 @@ import com.uas.platform.b2b.model.PurchaseOrderItem;
 import com.uas.platform.b2b.model.PurchaseOrderReply;
 import com.uas.platform.b2b.model.PurchaseOrderTodo;
 import com.uas.platform.b2b.model.PurchaseOrderTodoItem;
+import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.b2b.support.XingePusher;
@@ -99,29 +100,29 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public Page<PurchaseOrderAll> findAllDetailByPageInfo(final PageInfo pageInfo, final String keyword, final Long fromDate, final Long endDate) {
-		if (StringUtils.hasText(keyword))
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
-					.getUser().getEnterprise().getUu(), keyword), false));
-		if (fromDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByFromDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-		if(endDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByEndDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+	public Page<PurchaseOrderAll> findAllDetailByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
+		if(filter != null) {
+			if(StringUtils.hasText(filter.getKeyword()))
+				pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
+						.getUser().getEnterprise().getUu(), filter.getKeyword()), false));
+			if(filter.getFromDate() != null)
+				pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
+			if(filter.getEndDate() != null)
+				pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+		}
 		Page<PurchaseOrderAll> pageOrders = purchaseOrderAllDao.findAll(new Specification<PurchaseOrderAll>() {
 			public Predicate toPredicate(Root<PurchaseOrderAll> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
 		// 明细包含关键词
-		if(StringUtils.hasText(keyword)) {
+		if(filter != null && StringUtils.hasText(filter.getKeyword())) {
 			List<PurchaseOrderAll> orders = pageOrders.getContent();
 			if( ! CollectionUtils.isEmpty(orders)) {
 				for(PurchaseOrderAll order : orders) {
 					if( ! CollectionUtils.isEmpty(order.getOrderItems())) {
 						for(PurchaseOrderAllItem orderItem : order.getOrderItems()) {
-							if(FlexJsonUtils.toJson(orderItem).contains(keyword)) {
+							if(FlexJsonUtils.toJson(orderItem).contains(filter.getKeyword())) {
 								orderItem.setKey(true);
 							}
 						}
@@ -326,29 +327,29 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public Page<PurchaseOrderTodo> findTodoByPageInfo(final PageInfo pageInfo, final String keyword, final Long fromDate, final Long endDate) {
-		if (StringUtils.hasText(keyword))
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
-					.getUser().getEnterprise().getUu(), keyword), false));
-		if (fromDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByFromDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-		if(endDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByEndDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+	public Page<PurchaseOrderTodo> findTodoByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
+		if(filter != null) {
+			if(StringUtils.hasText(filter.getKeyword()))
+				pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
+						.getUser().getEnterprise().getUu(), filter.getKeyword()), false));
+			if(filter.getFromDate() != null)
+				pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
+			if(filter.getEndDate() != null)
+				pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+		}
 		Page<PurchaseOrderTodo> pageOrders = purchaseOrderTodoDao.findAll(new Specification<PurchaseOrderTodo>() {
 			public Predicate toPredicate(Root<PurchaseOrderTodo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
 		// 明细包含关键词
-		if(StringUtils.hasText(keyword)) {
+		if(filter != null && StringUtils.hasText(filter.getKeyword())) {
 			List<PurchaseOrderTodo> orders = pageOrders.getContent();
 			if( ! CollectionUtils.isEmpty(orders)) {
 				for(PurchaseOrderTodo order : orders) {
 					if( ! CollectionUtils.isEmpty(order.getOrderItems())) {
 						for(PurchaseOrderTodoItem orderItem : order.getOrderItems()) {
-							if(FlexJsonUtils.toJson(orderItem).contains(keyword)) {
+							if(FlexJsonUtils.toJson(orderItem).contains(filter.getKeyword())) {
 								orderItem.setKey(true);
 							}
 						}
@@ -360,29 +361,29 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public Page<PurchaseOrderDone> findDoneByPageInfo(final PageInfo pageInfo, final String keyword, final Long fromDate, final Long endDate) {
-		if (StringUtils.hasText(keyword))
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
-					.getUser().getEnterprise().getUu(), keyword), false));
-		if (fromDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByFromDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-		if(endDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByEndDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+	public Page<PurchaseOrderDone> findDoneByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
+		if(filter != null) {
+			if(StringUtils.hasText(filter.getKeyword()))
+				pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
+						.getUser().getEnterprise().getUu(), filter.getKeyword()), false));
+			if(filter.getFromDate() != null)
+				pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
+			if(filter.getEndDate() != null)
+				pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+		}
 		Page<PurchaseOrderDone> pageOrders = purchaseOrderDoneDao.findAll(new Specification<PurchaseOrderDone>() {
 			public Predicate toPredicate(Root<PurchaseOrderDone> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
 		// 明细包含关键词
-		if(StringUtils.hasText(keyword)) {
+		if(filter != null && StringUtils.hasText(filter.getKeyword())) {
 			List<PurchaseOrderDone> orders = pageOrders.getContent();
 			if( ! CollectionUtils.isEmpty(orders)) {
 				for(PurchaseOrderDone order : orders) {
 					if( ! CollectionUtils.isEmpty(order.getOrderItems())) {
 						for(PurchaseOrderDoneItem orderItem : order.getOrderItems()) {
-							if(FlexJsonUtils.toJson(orderItem).contains(keyword)) {
+							if(FlexJsonUtils.toJson(orderItem).contains(filter.getKeyword())) {
 								orderItem.setKey(true);
 							}
 						}
@@ -394,29 +395,29 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	}
 
 	@Override
-	public Page<PurchaseOrderEnd> findEndByPageInfo(final PageInfo pageInfo, final String keyword, final Long fromDate, final Long endDate) {
-		if (StringUtils.hasText(keyword))
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
-					.getUser().getEnterprise().getUu(), keyword), false));
-		if (fromDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByFromDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(fromDate)), false));
-		if(endDate != null)
-			pageInfo.expression(PredicateUtils.in("id", purchaseOrderAllDao.findByEndDate(SystemSession
-					.getUser().getEnterprise().getUu(), new Date(endDate)), false));
+	public Page<PurchaseOrderEnd> findEndByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
+		if(filter != null) {
+			if(StringUtils.hasText(filter.getKeyword()))
+				pageInfo.expression(PredicateUtils.in("id", purchaseOrderIndexDao.findByKeyword(SystemSession
+						.getUser().getEnterprise().getUu(), filter.getKeyword()), false));
+			if(filter.getFromDate() != null)
+				pageInfo.expression(PredicateUtils.gte("date", new Date(filter.getFromDate()), false));
+			if(filter.getEndDate() != null)
+				pageInfo.expression(PredicateUtils.lte("date", new Date(filter.getEndDate()), false));
+		}
 		Page<PurchaseOrderEnd> pageOrders = purchaseOrderEndDao.findAll(new Specification<PurchaseOrderEnd>() {
 			public Predicate toPredicate(Root<PurchaseOrderEnd> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 				return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
 			}
 		}, pageInfo);
 		// 明细包含关键词
-		if(StringUtils.hasText(keyword)) {
+		if(filter != null && StringUtils.hasText(filter.getKeyword())) {
 			List<PurchaseOrderEnd> orders = pageOrders.getContent();
 			if( ! CollectionUtils.isEmpty(orders)) {
 				for(PurchaseOrderEnd order : orders) {
 					if( ! CollectionUtils.isEmpty(order.getOrderItems())) {
 						for(PurchaseOrderEndItem orderItem : order.getOrderItems()) {
-							if(FlexJsonUtils.toJson(orderItem).contains(keyword)) {
+							if(FlexJsonUtils.toJson(orderItem).contains(filter.getKeyword())) {
 								orderItem.setKey(true);
 							}
 						}