Browse Source

解决订单快照数据丢失的问题

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@10088 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
wangmh 8 years ago
parent
commit
6980187a20

+ 40 - 29
src/main/java/com/uas/platform/b2b/controller/SnapshotController.java

@@ -9,6 +9,8 @@ import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * 平台消息、任务快照
  * 
@@ -712,35 +714,44 @@ public class SnapshotController {
 	public ModelMap getOrderUnreadCount() {
 		final ModelMap modelMap = new ModelMap();
 		final User user = SystemSession.getUser();
-		//并行处理
-		ThreadUtils.task(new Runnable() {
-
-			@Override
-			public void run() {
-				//客户采购订单(全部)
-				SystemSession.setUser(user);
-				modelMap.put("order", purchaseOrderService.getOrderAllUnreadCount());
-				SystemSession.clear();
-			}
-		}).task(new Runnable() {
-
-			@Override
-			public void run() {
-				//客户采购订单(未回复)
-				SystemSession.setUser(user);
-				modelMap.put("orderNotReply", purchaseOrderService.getOrderNotReplyUnreadCount());
-				SystemSession.clear();
-			}
-		}).task(new Runnable() {
-
-			@Override
-			public void run() {
-				//客户采购订单(已回复)
-				SystemSession.setUser(user);
-				modelMap.put("orderReplied", purchaseOrderService.getOrderRepliedUnreadCount());
-				SystemSession.clear();
-			}
-		}).run();
+//		//并行处理
+//		ThreadUtils.task(new Runnable() {
+//
+//			@Override
+//			public void run() {
+//				//客户采购订单(全部)
+//				SystemSession.setUser(user);
+//				Integer count = purchaseOrderService.getOrderAllUnreadCount();
+//				modelMap.put("order", count);
+//				SystemSession.clear();
+//			}
+//		}).task(new Runnable() {
+//
+//			@Override
+//			public void run() {
+//				//客户采购订单(未回复)
+//				SystemSession.setUser(user);
+//				Integer count = purchaseOrderService.getOrderNotReplyUnreadCount();
+//				modelMap.put("orderNotReply", count);
+//				SystemSession.clear();
+//			}
+//		}).task(new Runnable() {
+//
+//			@Override
+//			public void run() {
+//				//客户采购订单(已回复)
+//				SystemSession.setUser(user);
+//				Integer count = purchaseOrderService.getOrderRepliedUnreadCount();
+//				modelMap.put("orderReplied", count);
+//				SystemSession.clear();
+//			}
+//		}).run();
+		List<Object[]> list = purchaseOrderService.getOrderAllUnreadCount2();
+		for(Object[] objects : list){
+			SystemSession.setUser(user);
+			modelMap.put(objects[1].toString(), Integer.valueOf(objects[0].toString()));
+			SystemSession.clear();
+		}
 		return modelMap;
 	}
 

+ 5 - 0
src/main/java/com/uas/platform/b2b/dao/PagingReleaseCountDao.java

@@ -7,6 +7,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 
+import java.util.List;
+
 /**
  * Created by wangmh on 2017/7/10.
  */
@@ -24,6 +26,9 @@ public interface PagingReleaseCountDao extends JpaSpecificationExecutor<PagingRe
     @Query("select o.count from PagingReleaseCount o where o.enUU = :enUU and o.userUU = :userUU and o.category = :category and o.table = :table and o.orderStatus = -1")
     public Integer getUnreadCount(@Param("enUU") long enUU, @Param("userUU") long userUU, @Param("category") String category, @Param("table") String table);
 
+    @Query(value = "select v.PRC_COUNT, v.PRC_ORDERSTATUS from V$PURC$PAGINGRELEASECOUNT v where v.PRC_ENUU = :enUU and v.PRC_USERUU = :userUU and v.PRC_CATEGORY = :category and v.PRC_TABLE = :table", nativeQuery = true)
+    public List<Object[]> getUnreadCount2(@Param("enUU") long enUU, @Param("userUU") long userUU, @Param("category") String category, @Param("table") String table);
+
     /**
      * 根据单据状态获得消息数量
      *

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

@@ -307,11 +307,15 @@ public interface PurchaseOrderService {
 	 */
 	Integer getOrderAllUnreadCount();
 
+	List<Object[]> getOrderAllUnreadCount2();
+
 	Integer getOrderNotReplyUnreadCount();
 
 	Integer getOrderRepliedUnreadCount();
 
-	Integer getPurchaseOrderUnreadCount();
+//	Integer getPurchaseOrderUnreadCount();
+
+	List<Object[]> getPurchaseOrderUnreadCount();
 
 	void setReadByOrder(Long[] sourceId);
 

+ 14 - 2
src/main/java/com/uas/platform/b2b/service/impl/PurchaseOrderServiceImpl.java

@@ -1008,6 +1008,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 				SystemSession.getUser().getUserUU(), "sale", "purc$orders");
 	}
 
+	@Override
+	public List<Object[]> getOrderAllUnreadCount2() {
+		return pagingReleaseCountDao.getUnreadCount2(SystemSession.getUser().getEnterprise().getUu(),
+				SystemSession.getUser().getUserUU(), "sale", "purc$orders");
+	}
+
 	@Override
 	public Integer getOrderNotReplyUnreadCount() {
 		return pagingReleaseCountDao.getUnreadCountByStatus(SystemSession.getUser().getEnterprise().getUu(),
@@ -1020,9 +1026,15 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 				SystemSession.getUser().getUserUU(), "sale", "purc$orders", Status.REPLIED.value());
 	}
 
+//	@Override
+//	public Integer getPurchaseOrderUnreadCount() {
+//		return pagingReleaseCountDao.getUnreadCount(SystemSession.getUser().getEnterprise().getUu(),
+//				SystemSession.getUser().getUserUU(), "purc", "purc$orders");
+//	}
+
 	@Override
-	public Integer getPurchaseOrderUnreadCount() {
-		return pagingReleaseCountDao.getUnreadCount(SystemSession.getUser().getEnterprise().getUu(),
+	public List<Object[]> getPurchaseOrderUnreadCount() {
+		return pagingReleaseCountDao.getUnreadCount2(SystemSession.getUser().getEnterprise().getUu(),
 				SystemSession.getUser().getUserUU(), "purc", "purc$orders");
 	}
 

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

@@ -163,15 +163,15 @@
 				<div class="btn-group btn-group-sm btn-group-justified">
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部<b class="new-dot" ng-if="unread.order > 0">{{unread.order>99?'99+':unread.order}}</b></button>
+							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部<b class="new-dot" ng-if="unread.all > 0">{{unread.all>99?'99+':unread.all}}</b></button>
 					</div>
 					<div class="btn-group btn-group-sm">
 						<button type="button" class="btn btn-default btn-line"
-							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已回复<b class="new-dot" ng-if="unread.orderReplied > 0">{{unread.orderReplied>99?'99+':unread.orderReplied}}</b></button>
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已回复<b class="new-dot" ng-if="unread.replied > 0">{{unread.replied>99?'99+':unread.replied}}</b></button>
 					</div>
 					<div class="btn-group btn-group-sm">
 						<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.orderNotReply > 0">{{unread.orderNotReply>99?'99+':unread.orderNotReply}}</b></button>
+							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"-->