Browse Source

点击单据设置已读
标出未读单据
设置已读自动刷新统计数据

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@10024 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

wangmh 8 years ago
parent
commit
e966c9a7d3

+ 22 - 0
src/main/java/com/uas/platform/b2b/controller/SaleOrderController.java

@@ -842,4 +842,26 @@ public class SaleOrderController {
 //		logger.log("采购单", "导出Excel列表", "导出待交货Excel列表");
 //		return modelAndView;
 //	}
+
+
+	/**
+	 * 设置消息已读
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/setRead", method = RequestMethod.POST)
+	@ResponseBody
+	public void setReadByOrder(@RequestBody Long... sourceId) {
+        purchaseOrderService.setReadByOrder(sourceId);
+	}
+
+	/**
+	 * 获得未阅读消息对应的单据id
+	 * @author wangmh
+	 */
+	@RequestMapping(value = "/getUnreadIds", method = RequestMethod.POST)
+	@ResponseBody
+	public ModelMap getUnreadIds() {
+		List<Long> list = purchaseOrderService.getUnreadIds();
+		return new ModelMap("content", list);
+	}
 }

+ 28 - 0
src/main/java/com/uas/platform/b2b/dao/PagingReleaseDetailDao.java

@@ -1,14 +1,21 @@
 package com.uas.platform.b2b.dao;
 
 import com.uas.platform.b2b.model.PagingReleaseDetail;
+import org.hibernate.annotations.SQLUpdate;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.query.Procedure;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
 
+import javax.persistence.PreUpdate;
 import java.util.List;
 
+import static com.alibaba.druid.stat.TableStat.Mode.Delete;
+
 /**
  * Created by dongbw
  * 17/03/23 9:39.
@@ -27,6 +34,27 @@ public interface PagingReleaseDetailDao extends JpaRepository<PagingReleaseDetai
     @Procedure(procedureName = "PAGINGRELEASE_SAVE")
     void saveDetails(Long prId, Long vendUU, Long userUU, Long orderStatus);
 
+    /**
+     * 将消息设置成已读
+     *
+     * @param vendUseruu
+     * @param venduu
+     * @param sourceId
+     */
+    @Modifying
+    @Query("update PagingReleaseDetail o set o.readStatus = 1 where o.vendUserUU = :vendUseruu and o.vendUU = :venduu and o.pagingRelease in (select p from PagingRelease p where p.sourceId in :sourceId)")
+    void setReadByVendUserUUAndVendUUAndSourceId(@Param("vendUseruu") Long vendUseruu, @Param("venduu") Long venduu, @Param("sourceId") Long[] sourceId);
+
+    /**
+     * 获得未读消息的单据id
+     *
+     * @param vendUseruu
+     * @param venduu
+     * @return
+     */
+    @Query("select p.sourceId from PagingRelease p, PagingReleaseDetail d where p.id = d.pagingRelease.id and d.vendUserUU = :vendUseruu and d.vendUU = :venduu and d.readStatus = 0 and p.table = :table and p.category = :category")
+    List<Long> getUnreadIds(@Param("vendUseruu") Long vendUseruu, @Param("venduu") Long venduu, @Param("table") String table, @Param("category") String category);
+
     /**
      *  修改消息阅读状态时调用,用来更新消息数量统计表(有setReadStatus()时调用)
      * @param vendUU  接收企业uu

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

@@ -312,4 +312,8 @@ public interface PurchaseOrderService {
 	Integer getOrderRepliedUnreadCount();
 
 	Integer getPurchaseOrderUnreadCount();
+
+	void setReadByOrder(Long[] sourceId);
+
+	List<Long> getUnreadIds();
 }

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

@@ -83,6 +83,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 	@Autowired
 	private PagingReleaseCountDao pagingReleaseCountDao;
 
+	@Autowired
+	private PagingReleaseDetailDao pagingReleaseDetailDao;
+
 	@Autowired
 	private PagingReleaseDao pagingReleaseDao;
 
@@ -1015,4 +1018,15 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
 				SystemSession.getUser().getUserUU(), "purc", "purc$orders");
 	}
 
+	@Override
+	@Transactional
+	public void setReadByOrder(Long[] sourceId) {
+		pagingReleaseDetailDao.setReadByVendUserUUAndVendUUAndSourceId(SystemSession.getUser().getUserUU(), SystemSession.getUser().getEnterprise().getUu(),sourceId );
+        pagingReleaseDetailDao.updateReleaseCountBySetReadStatus(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU(), "purc$orders", "sale");
+	}
+
+	@Override
+	public List<Long> getUnreadIds() {
+		return pagingReleaseDetailDao.getUnreadIds(SystemSession.getUser().getUserUU(), SystemSession.getUser().getEnterprise().getUu(), "purc$orders", "sale");
+	}
 }

+ 1 - 1
src/main/webapp/resources/js/common/services.js

@@ -170,7 +170,7 @@ define(['angular', 'toaster', 'big'], function(angular, big) {
                 });
             },
             getUnread: function(type, success) {
-                var request = $http.get(rootPath + '/snapshot/unread/'+(type==null?'all':type), {cache: true});
+                var request = $http.get(rootPath + '/snapshot/unread/'+(type==null?'all':type), {cache: false});
                 request.success(function(data) {
                     success.call(null, data);
                 });

+ 28 - 9
src/main/webapp/resources/js/index/app.js

@@ -2491,9 +2491,13 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     app.controller('SaleOrderCtrl', ['$scope', '$filter', 'PurcOrderItem', 'PurcOrder', 'ngTableParams', 'toaster', 'ReportService', 'BaseService', 'PurcOrderItemHis', 'PagingRelease', 'SnapshotService', function ($scope, $filter, PurcOrderItem, PurcOrder, ngTableParams, toaster, ReportService, BaseService, PurcOrderItemHis, PagingRelease, SnapshotService) {
         BaseService.scrollBackToTop();
 
-        SnapshotService.getUnread('order', function(data){
-            $scope.unread = data;
-        });
+        var getUnreadCount = function () {
+            SnapshotService.getUnread('order', function(data){
+                $scope.unread = data;
+                console.log(data);
+            });
+        };
+        getUnreadCount();
 
 		$scope.active = 'todo';
 		$scope.dateZoneText = '不限';
@@ -2573,13 +2577,28 @@ define([ 'toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 			}
 		});
 
-        $scope.setRead = function (message) {
-            var selectMessage = [];
-            selectMessage.push(message);
-            PagingRelease.setRead({}, selectMessage, function (message) {
-                alert(message);
+        $scope.setRead = function (id) {
+            var sourceId = [];
+            sourceId.push(id);
+            getService().setRead({}, sourceId, function (message) {
+                // $scope.getUnreadIds();
+                getUnreadCount();
             });
-        }
+        };
+
+        $scope.getUnreadIds = function (){
+            getService().getUnreadIds({}, "", function (message) {
+                $scope.unreadCode = message.content;
+            });
+        };
+        $scope.getUnreadIds();
+        $scope.isUnread = function (id){
+            for (var i in $scope.unreadCode) {
+                if (id == $scope.unreadCode[i]) {
+                    return true;
+                }
+            }
+        };
 
 		$scope.getOrderTotal = function(items) {
 			var sum = 0;

+ 16 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -107,6 +107,14 @@ define([ 'ngResource'], function() {
 				params: {
 					orderItemId: 'orderItemId'
 				}
+			},
+			setRead:{
+				url: 'sale/orders/setRead',
+				method: 'POST'
+			},
+			getUnreadIds:{
+				url: 'sale/orders/getUnreadIds',
+				method: 'POST'
 			}
 		});
 	}]).factory('PurcChange', ['$resource', function($resource) {
@@ -790,6 +798,14 @@ define([ 'ngResource'], function() {
             setRead:{
                 url: 'api/paging/setRead',
                 method: 'POST'
+            },
+			getUnreadIds:{
+                url: 'api/paging/getUnreadIds',
+                method: 'POST'
+            },
+			setReadByOrder:{
+				url: 'api/paging/setRead/order',
+				method: 'POST'
             },
             setOneRead:{
                 url: 'api/paging/setOneRead/:id',

+ 1 - 1
src/main/webapp/resources/tpl/index/sale/left.html

@@ -36,7 +36,7 @@
 			<i></i>订单管理
 		</div>
 		<ul class="list-unstyled">
-			<li ui-sref-active="active"><a ui-sref="sale.order">客户采购订单</a></li>
+			<li ui-sref-active="active"><a ui-sref="sale.order"><em class="new-dot" ng-if="unread.order > 0"></em>客户采购订单</a></li>
 			<li ui-sref-active="active"><a ui-sref="sale.change"><em class="new-dot" ng-if="unread.change > 0"></em>客户采购变更单</a></li>
 			<li ui-sref-active="active"><a ui-sref="sale.maketodo.order"><em class="new-dot" ng-if="unread.makeOrder > 0"></em>客户委外单</a></li>
 			<li ui-sref-active="active"><a ui-sref="sale.makechange"><em class="new-dot" ng-if="unread.makeChange > 0"></em>委外变更单</a></li>

+ 7 - 7
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')">全部</button>
+							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>
 					</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')">已回复</button>
+							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>
 					</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')">待回复</button>
+							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>
 					</div>
 					<!--<div class="btn-group btn-group-sm">-->
 						<!--<button type="button" class="btn btn-default btn-line"-->
@@ -390,19 +390,19 @@
 					<span> <input type="checkbox" class="selector"
 						ng-model="order.$selected" ng-click="checkOne(order)">
 					</span>
-					<a href="javascript:void(0)" ng-if="!order.display" title="标记为未查看" ng-click="setDisplay('setUnRead', order.id)">
+					<a href="javascript:void(0)" ng-if="!order.display && !isUnread(order.id)" title="标记为未查看" ng-click="setDisplay('setUnRead', order.id)">
 						<i class="fa fa-circle-thin"></i>
 					</a>
-					<a href="javascript:void(0)" ng-if="order.display==1" title="标记为已查看" ng-click="setDisplay('setRead', order.id)">
+					<a href="javascript:void(0)" ng-if="order.display==1 || isUnread(order.id)" title="标记为已查看" ng-click="setDisplay('setRead', order.id)">
 						<i class="fa fa-circle" style="color: #f40;"></i>
 					</a>
-					<a href="javascript:void(0)" ng-if="order.display>1" title="标记为已查看" ng-click="setDisplay('setRead', order.id)">
+					<a href="javascript:void(0)" ng-if="order.display>1 || isUnread(order.id)" title="标记为已查看" ng-click="setDisplay('setRead', order.id)">
 						<i class="fa fa-tags" style="color: #f40;"></i>
 					</a>
 					&nbsp;&nbsp;<span class="text-num text-bold"
 						ng-bind="::order.date | date:'yyyy-MM-dd'"></span>
 					<span ng-bind="::order.enterprise.enName"></span>
-					<span>订单号:<a class="text-num" ng-bind="::order.code" ui-sref="sale.order_detail({id:order.id})" target="_self"></a></span>
+					<span>订单号:<a class="text-num" ng-bind="::order.code" ui-sref="sale.order_detail({id:order.id})" target="_self"  ng-click="setRead(order.id)"></a></span>
 				</div>
 			</td>
 			<td colspan="1" class="order-sum">{{::order.currency}}: <span