Переглянути джерело

客户采购订单增加已收货一列

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@10597 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
wangmh 8 роки тому
батько
коміт
521aea44d4

+ 30 - 1
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -329,7 +329,7 @@ public class SaleOrderController {
 		sortList.add(new Sort("pu_id", false, Type.LONG, new Long(1)));
 		pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
 		pageParams.getFilters().put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
-		pageParams.getFilters().put("pu_end", Constant.YES);
+		pageParams.getFilters().put("pu_end", Constant.NO);
 		return searchService.searchPurchaseReceivedOrderIds(keyword, pageParams);
 	}
 
@@ -489,6 +489,35 @@ public class SaleOrderController {
 		return purchaseOrderService.findEndOrders(pageInfo, filter);
 	}
 
+	/**
+	 * @param params
+	 * @param searchFilter
+	 * @author wangmh 获取已发货的订单
+	 */
+	@RequestMapping(value = "/items/info", params = RequestState.RECEIVED, method = RequestMethod.GET)
+	@ResponseBody
+	public SPage<PurchaseOrderReceived> getReceivedOrders(PageParams params, String searchFilter) {
+		logger.log("客户采购单", "查看收到的客户采购订单列表(包括采购明细)(待交货)");
+		purchaseOrderAllDao.setDisplayStatus(SystemSession.getUser().getUserUU(),
+				SystemSession.getUser().getEnterprise().getUu(), SALEKIND);
+		purchaseOrderWaitingDao.updateStatusForSale(SystemSession.getUser().getEnterprise().getUu());
+		PageInfo pageInfo = new PageInfo(params);
+		pageInfo.filter("vendUU", SystemSession.getUser().getEnterprise().getUu());
+		SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+		SearchFilter filters = userService.distribute();
+		if (filters != null && filters.getDistribute() == null) {
+			return null;
+		}
+		if (filters != null && !CollectionUtils.isEmpty(filters.getDistribute())) {
+			List<Object> list = new ArrayList<>();
+			for (Object object : filters.getDistribute()) {
+				list.add(object);
+			}
+			filter.setDistribute(list);
+		}
+		return purchaseOrderService.findReceivedOrders(pageInfo, filter);
+	}
+
 	/**
 	 * @param params
 	 * @param searchFilter

+ 2 - 2
src/main/java/com/uas/platform/b2b/model/PurchaseOrderReceived.java

@@ -14,7 +14,7 @@ import java.util.Set;
 
 @Table(name = "purc$orders", indexes = { @Index(name = "purc$orders_date", columnList = "pu_date") })
 @Entity
-@Where(clause = "pu_end=1")
+@Where(clause = "(pu_end is null or pu_end = 0) and pu_id in (select i.pd_puid from purc$orderitems i where nvl(i.pd_acceptqty,0)>=nvl(i.pd_qty,0)+nvl(i.pd_returnqty,0))")
 public class PurchaseOrderReceived {
 	
 	@Id
@@ -142,7 +142,7 @@ public class PurchaseOrderReceived {
 	 */
 	@OneToMany(mappedBy = "order", cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE }, fetch = FetchType.EAGER)
 	@OrderBy("number")
-//	@Where(clause = "nvl(pd_acceptqty,0)<nvl(pd_qty,0)+nvl(pd_returnqty,0)")
+	@Where(clause = "nvl(pd_acceptqty,0)>=nvl(pd_qty,0)+nvl(pd_returnqty,0) and (pd_end = 0 or pd_end is null)")
 	private Set<PurchaseOrderReceivedItem> orderItems;
 	
 	/**

+ 1 - 1
src/main/java/com/uas/platform/b2b/model/PurchaseOrderWaiting.java

@@ -26,7 +26,7 @@ import org.hibernate.annotations.Where;
 
 @Table(name = "purc$orders", indexes = { @Index(name = "purc$orders_date", columnList = "pu_date") })
 @Entity
-@Where(clause = "pu_end=0 or pu_end is null")
+@Where(clause = "(pu_end=0 or pu_end is null) and pu_id in (select i.pd_puid from purc$orderitems i where nvl(i.pd_acceptqty,0)<nvl(i.pd_qty,0)+nvl(i.pd_returnqty,0))")
 public class PurchaseOrderWaiting {
 	
 	@Id

+ 20 - 13
src/main/java/com/uas/platform/b2b/service/PurchaseOrderService.java

@@ -2,19 +2,9 @@ package com.uas.platform.b2b.service;
 
 import java.util.List;
 
+import com.uas.platform.b2b.model.*;
 import org.springframework.data.domain.Page;
 
-import com.uas.platform.b2b.model.PrintLog;
-import com.uas.platform.b2b.model.PurcOrderInfoItem;
-import com.uas.platform.b2b.model.PurchaseOrder;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderDone;
-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.PurchaseOrderWaiting;
-import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
 
@@ -78,11 +68,19 @@ public interface PurchaseOrderService {
 	public Page<PurchaseOrderEnd> findEndByPageInfo(PageInfo pageInfo, SearchFilter filter);
 
 	/**
-	 * 分页查找已结案订单明细
+	 * 分页查找已收货订单明细
 	 * 
 	 * @param pageInfo
 	 * @return
 	 */
+	public Page<PurchaseOrderReceived> findReceivedByPageInfo(PageInfo pageInfo, SearchFilter filter);
+
+	/**
+	 * 分页查找待收货订单明细
+	 *
+	 * @param pageInfo
+	 * @return
+	 */
 	public Page<PurchaseOrderWaiting> findWaitingByPageInfo(PageInfo pageInfo, SearchFilter filter);
 
 	/**
@@ -138,12 +136,21 @@ public interface PurchaseOrderService {
 	public SPage<PurchaseOrderEnd> findEndOrders(PageInfo pageInfo, SearchFilter filter);
 
 	/**
-	 * 分页获取发货订单
+	 * 分页获取发货订单
 	 * 
 	 * @param pageInfo
 	 * @param filter
 	 * @return
 	 */
+	public SPage<PurchaseOrderReceived> findReceivedOrders(PageInfo pageInfo, SearchFilter filter);
+
+	/**
+	 * 分页获取待发货订单
+	 *
+	 * @param pageInfo
+	 * @param filter
+	 * @return
+	 */
 	public SPage<PurchaseOrderWaiting> findWaitingOrders(PageInfo pageInfo, SearchFilter filter);
 
 	/**

+ 72 - 44
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -14,6 +14,8 @@ import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import javax.persistence.criteria.SetJoin;
 
+import com.uas.platform.b2b.dao.*;
+import com.uas.platform.b2b.model.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -25,53 +27,9 @@ import org.springframework.util.StringUtils;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
-import com.uas.platform.b2b.dao.DistributeDao;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.PagingReleaseDao;
-import com.uas.platform.b2b.dao.PrintLogDao;
-import com.uas.platform.b2b.dao.PurcOrderInfoItemDao;
-import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
-import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
-import com.uas.platform.b2b.dao.PurchaseOrderDao;
-import com.uas.platform.b2b.dao.PurchaseOrderDoneDao;
-import com.uas.platform.b2b.dao.PurchaseOrderEndDao;
-import com.uas.platform.b2b.dao.PurchaseOrderItemDao;
-import com.uas.platform.b2b.dao.PurchaseOrderReplyDao;
-import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
-import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
-import com.uas.platform.b2b.dao.RoleDao;
-import com.uas.platform.b2b.dao.UserBaseInfoDao;
-import com.uas.platform.b2b.dao.UserDao;
-import com.uas.platform.b2b.dao.UserOrderDao;
-import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.event.PurchaseOrderEndReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderReplyReleaseEvent;
 import com.uas.platform.b2b.event.PurchaseOrderSaveReleaseEvent;
-import com.uas.platform.b2b.model.Distribute;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.PagingRelease;
-import com.uas.platform.b2b.model.PrintLog;
-import com.uas.platform.b2b.model.PurcOrderInfoItem;
-import com.uas.platform.b2b.model.PurchaseOrder;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderAllItem;
-import com.uas.platform.b2b.model.PurchaseOrderDone;
-import com.uas.platform.b2b.model.PurchaseOrderDoneItem;
-import com.uas.platform.b2b.model.PurchaseOrderEnd;
-import com.uas.platform.b2b.model.PurchaseOrderEndItem;
-import com.uas.platform.b2b.model.PurchaseOrderInfo;
-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.PurchaseOrderWaiting;
-import com.uas.platform.b2b.model.PurchaseOrderWaitingItem;
-import com.uas.platform.b2b.model.Role;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.User;
-import com.uas.platform.b2b.model.UserBaseInfo;
-import com.uas.platform.b2b.model.UserOrders;
-import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PurchaseOrderService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -112,6 +70,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Autowired
 	private PurchaseOrderWaitingDao purchaseOrderWaitingDao;
 
+	@Autowired
+	private PurchaseOrderReceivedDao purchaseOrderReceivedDao;
+
 	@Autowired
 	private PurchaseOrderItemDao purchaseOrderItemDao;
 
@@ -708,6 +669,61 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		return pageOrders;
 	}
 
+	@Override
+	public Page<PurchaseOrderReceived> findReceivedByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
+		if (filter != null) {
+			if (StringUtils.hasText(filter.getKeyword())) {
+				List<Object> lists = new ArrayList<>();
+				PageParams pageParams = new PageParams();
+				ModelMap map = new ModelMap();
+				map.put("pu_venduu", SystemSession.getUser().getEnterprise().getUu());
+				pageParams.setFilters(map);
+				for (PurchaseOrderWaiting list : searchService
+						.searchPurchaseWaitingOrderIds(filter.getKeyword(), pageParams).getContent()) {
+					lists.add(list.getId());
+				}
+				pageInfo.expression(PredicateUtils.in("id", lists, 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));
+			if (!CollectionUtils.isEmpty(filter.getDistribute()))
+				pageInfo.expression(PredicateUtils.in("enUU", filter.getDistribute(), false));
+		}
+		Page<PurchaseOrderReceived> pageOrders = purchaseOrderReceivedDao
+				.findAll(new Specification<PurchaseOrderReceived>() {
+					@Override
+					public Predicate toPredicate(Root<PurchaseOrderReceived> root, CriteriaQuery<?> query,
+							CriteriaBuilder builder) {
+						return query.where(pageInfo.getPredicates(root, query, builder)).getRestriction();
+					}
+				}, pageInfo);
+		List<PurchaseOrderReceived> orders = pageOrders.getContent();
+		for (PurchaseOrderReceived order : orders) {
+			Enterprise enter = enterpriseDao.findEnterpriseByUu(order.getVendUU());
+			if (enter != null) {
+				order.setEnName(enter.getEnName());
+			}
+		}
+		// 明细包含关键词
+		if (filter != null && StringUtils.hasText(filter.getKeyword())) {
+			if (!CollectionUtils.isEmpty(orders)) {
+				for (PurchaseOrderReceived order : orders) {
+					if (!CollectionUtils.isEmpty(order.getOrderItems())) {
+						for (PurchaseOrderReceivedItem orderItem : order.getOrderItems()) {
+							if (FlexJsonUtils.toJson(orderItem).contains(filter.getKeyword())) {
+								orderItem.setKey(true);
+							}
+						}
+					}
+				}
+			}
+		}
+		return pageOrders;
+	}
+
+
 	@Override
 	public Page<PurchaseOrderWaiting> findWaitingByPageInfo(final PageInfo pageInfo, SearchFilter filter) {
 		if (filter != null) {
@@ -1173,6 +1189,18 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 		return purcorders;
 	}
 
+	@Override
+	public SPage<PurchaseOrderReceived> findReceivedOrders(PageInfo pageInfo, SearchFilter filter) {
+		SPage<PurchaseOrderReceived> purcorders = new SPage<PurchaseOrderReceived>();
+		Page<PurchaseOrderReceived> orders = findReceivedByPageInfo(pageInfo, filter);
+		purcorders.setContent(orders.getContent());
+		purcorders.setPage(orders.getNumber());
+		purcorders.setSize(orders.getSize());
+		purcorders.setTotalElement(orders.getTotalElements());
+		purcorders.setTotalPage(orders.getTotalPages());
+		return purcorders;
+	}
+
 	@Override
 	public SPage<PurchaseOrderWaiting> findWaitingOrders(PageInfo pageInfo, SearchFilter filter) {
 		SPage<PurchaseOrderWaiting> purcorders = new SPage<PurchaseOrderWaiting>();

+ 4 - 4
src/main/webapp/resources/tpl/index/sale/order.html

@@ -173,10 +173,10 @@
 						<button type="button" class="btn btn-default btn-line"
 							ng-class="{'btn-info':active=='todo'}" ng-click="setActive('todo')">待回复<b class="new-dot" ng-if="unread.notReply > 0">{{unread.notReply>99?'99+':unread.notReply}}</b></button>
 					</div>
-					<!--<div class="btn-group btn-group-sm">-->
-						<!--<button type="button" class="btn btn-default btn-line"-->
-								<!--ng-class="{'btn-info':active=='received'}" ng-click="setActive('received')">已收货</button>-->
-					<!--</div>-->
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+								ng-class="{'btn-info':active=='received'}" ng-click="setActive('received')">已收货</button>
+					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
 							ng-class="{'btn-info':active=='waiting'}" ng-click="setActive('waiting')">待交货</button>