| 
					
				 | 
			
			
				@@ -1,6 +1,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-using NPOI.SS.Formula.Functions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using NPOI.POIFS.Crypt.Dsig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using NPOI.SS.Formula.Functions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using OASystem.Domain; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using OASystem.Domain.Dtos.System; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+using OASystem.Domain.ViewModels.QiYeWeChat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Collections.Generic; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 using System.Linq; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -113,25 +115,37 @@ namespace OASystem.Infrastructure.Repositories.System 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var _readableMsgList = await _sqlSugar.SqlQueryable<ReadbleMessageView>(msgSqlWhere).ToListAsync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (_readableMsgList.Count > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    int pageIndex = dto.PageIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    int pageSize = pageIndex + 9; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int pageSize = dto.PageSize; // 每页显示的记录数量 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int currentPage = dto.PageIndex; // 当前页码(从1开始) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //操作通知 OperationNotification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<int> operationTypeList = new List<int>() {1,2,3,4,5 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var operationNotificatioData = _readableMsgList.Where(it => operationTypeList.Contains(it.Type)).OrderBy(it => it.IsRead).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int operationNotificatioDataCount = operationNotificatioData.Count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 计算起始索引和结束索引 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int operationStartIndex = (currentPage - 1) * pageSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int operationEndIndex = Math.Min(operationStartIndex + pageSize, operationNotificatioDataCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var operationNotificatioDataView = new { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Count = operationNotificatioData.Count, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Count = operationNotificatioDataCount, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         UnReadCount = operationNotificatioData.Where(it => it.IsRead == 0).Count(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        OperationNotificatioData = operationNotificatioData.Skip(pageIndex).Take(pageSize).ToList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        OperationNotificatioData = operationNotificatioData.Skip(operationStartIndex).Take(pageSize).ToList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //任务通知 TaskNotification 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     List<int> taskTypeList = new List<int>() { 6 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var taskNotificatioData = _readableMsgList.Where(it => taskTypeList.Contains(it.Type)).OrderBy(it => it.IsRead).ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int taskNotificatioDataCount = taskNotificatioData.Count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 计算起始索引和结束索引 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int taskStartIndex = (currentPage - 1) * pageSize; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    int taskEndIndex = Math.Min(operationStartIndex + pageSize, operationNotificatioDataCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var taskNotificatioDataView = new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Count = taskNotificatioData.Count, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Count = taskNotificatioDataCount, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         UnReadCount = taskNotificatioData.Where(it => it.IsRead == 0).Count(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        TaskNotificatioData = taskNotificatioData.Skip(pageIndex).Take(pageSize).ToList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TaskNotificatioData = taskNotificatioData.Skip(taskStartIndex).Take(pageSize).ToList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var _view = new { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -152,6 +166,36 @@ namespace OASystem.Infrastructure.Repositories.System 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// 获取消息未读消息条数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <param name="uId">可读用户Id</param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <returns></returns> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public async Task<int> GetUnReadCount(int userId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int _unReadCount = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            string msgSqlWhere = string.Format(@"Select sm.Id,sm.Type,sm.Title,sm.Content,sd.DepName issuerDep,su.CnName issuerUser,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                            sm.ReleaseTime,smra.Id AuthId,smra.ReadableUId,smra.IsRead,smra.ReadTime  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     From Sys_Message sm  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     Inner Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     Inner Join Sys_Users su On sm.IssuerId = su.Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     Inner Join Sys_Department sd On su.DepId = sd.Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     Inner Join Sys_Users suAuth On smra.ReadableUId = suAuth.Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     Where sm.IsDel = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     And smra.IsDel = 0  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     And smra.ReadableUId = {0} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                     Order By ReleaseTime Desc ", userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var _readableMsgList = await _sqlSugar.SqlQueryable<ReadbleMessageView>(msgSqlWhere).ToListAsync(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_readableMsgList.Count > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _unReadCount = _readableMsgList.Where(it => it.IsRead == 0).Count(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return _unReadCount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// 获取消息详细 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 |