/// <summary>
        /// 记录当前发送待办相关流程信息
        /// </summary>
        /// <param name="notificationID"></param>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static InvalidAssignessUrlCollection PreInvalidAssignessUrls(string notificationID, DataTable dt)
        {
            Dictionary <string, InvalidAssigneeUrl> dic = new Dictionary <string, InvalidAssigneeUrl>();

            foreach (DataRow dr in dt.Rows)
            {
                string key = string.Format("{0}@{1}@{2}", notificationID, dr["ACTIVITY_ID"].ToString(), dr["PROCESS_ID"].ToString());
                if (dic.ContainsKey(key) == false)
                {
                    InvalidAssigneeUrl item = new InvalidAssigneeUrl();
                    item.NotificationID = notificationID;
                    item.ActivityID     = dr["ACTIVITY_ID"].ToString();
                    item.ProcessID      = dr["PROCESS_ID"].ToString();
                    item.ProcessName    = dr["PROCESS_NAME"].ToString();
                    item.Url            = dr["URL"].ToString();
                    item.ActivityKey    = dr["ACTIVITY_DESC_KEY"].ToString();

                    dic.Add(key, item);
                }
                else if (string.IsNullOrEmpty(dic[key].Url) == true && string.IsNullOrEmpty(dr["URL"].ToString()) == false)
                {
                    dic[key].Url = dr["URL"].ToString();
                }
            }

            InvalidAssignessUrlCollection invalidAssignessUrls = new InvalidAssignessUrlCollection();

            foreach (InvalidAssigneeUrl item in dic.Values)
            {
                invalidAssignessUrls.Add(item);
            }

            return(invalidAssignessUrls);
        }
		public void BulkAdd(InvalidAssignessUrlCollection data)
		{
			ORMappingItemCollection mappings = ORMapping.GetMappingInfo<InvalidAssigneeUrl>();

			StringBuilder sqlStrB = new StringBuilder();

			foreach (InvalidAssigneeUrl item in data)
			{
				if (sqlStrB.Length > 0)
					sqlStrB.Append(TSqlBuilder.Instance.DBStatementSeperator);

				sqlStrB.Append(ORMapping.GetInsertSql(item, mappings, TSqlBuilder.Instance));
			}

			DbHelper.RunSqlWithTransaction(sqlStrB.ToString(), this.GetConnectionName());
		}
Beispiel #3
0
        //(1):先拿到所有的管理员;
        //(2): 拼一个 userTask 对象,只是收件人为空。
        //(3): 遍历所有的管员,clone 第一个userTask对象,并将添加到 UserTaskCollection 对象里
        //(4): UserTaskAdapter.Instance.SendUserTasks 发送数据
        public void Run()
        {
            try
            {
                DataTable dt = DbHelper.RunSqlReturnDS(InvalidAssigneesNotificationHelper.GetInvalidAssigneesNotificationsSQL).Tables[0];

                if (dt.Rows.Count > 0)
                {
                    IEnumerable <IUser> allUsers = InvalidAssigneesNotificationHelper.GetAllUsers();

                    InvalidAssigneesNotification currentIANotification = new InvalidAssigneesNotification()
                    {
                        NotificationID = UuidHelper.NewUuidString(), CreateTime = DateTime.Now
                    };

                    InvalidAssignessUrlCollection ivalidAssignessUrls = InvalidAssigneesNotificationHelper.PreInvalidAssignessUrls(currentIANotification.NotificationID, dt);

                    //todo: 一百以内并数字
                    if (ivalidAssignessUrls.Count < SendInvalidNotificationSettingsSection.GetConfig().MaxSendCount)
                    {
                        currentIANotification.Description = string.Format("待处理流程人员异常 {0}条", ivalidAssignessUrls.Count);
                    }
                    else
                    {
                        currentIANotification.Description = string.Format("待处理流程人员异常 {0}条以上", SendInvalidNotificationSettingsSection.GetConfig().MaxSendCount);
                    }

                    UserTask userTaskItem = InvalidAssigneesNotificationHelper.BuildUserTask(currentIANotification.Description);

                    using (TransactionScope ts = TransactionScopeFactory.Create())
                    {
                        InvalidAssigneesNotificationHelper.SendUserTask(allUsers, userTaskItem, currentIANotification.NotificationID);

                        InvalidAssigneesNotificationAdapter.Instance.AddData(currentIANotification);

                        InvalidAssigneesUrlAdapter.Instance.BulkAdd(ivalidAssignessUrls);

                        ts.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                this.Params.Log.Write(string.Format("处理人员不存流程:{0}; {1}", DateTime.Now.ToString(), ex.ToString()));
            }
        }
Beispiel #4
0
        public void BulkAdd(InvalidAssignessUrlCollection data)
        {
            ORMappingItemCollection mappings = ORMapping.GetMappingInfo <InvalidAssigneeUrl>();

            StringBuilder sqlStrB = new StringBuilder();

            foreach (InvalidAssigneeUrl item in data)
            {
                if (sqlStrB.Length > 0)
                {
                    sqlStrB.Append(TSqlBuilder.Instance.DBStatementSeperator);
                }

                sqlStrB.Append(ORMapping.GetInsertSql(item, mappings, TSqlBuilder.Instance));
            }

            DbHelper.RunSqlWithTransaction(sqlStrB.ToString(), this.GetConnectionName());
        }
		/// <summary>
		/// 记录当前发送待办相关流程信息
		/// </summary>
		/// <param name="notificationID"></param>
		/// <param name="dt"></param>
		/// <returns></returns>
		public static InvalidAssignessUrlCollection PreInvalidAssignessUrls(string notificationID, DataTable dt)
		{
			Dictionary<string, InvalidAssigneeUrl> dic = new Dictionary<string, InvalidAssigneeUrl>();

			foreach (DataRow dr in dt.Rows)
			{
				string key = string.Format("{0}@{1}@{2}", notificationID, dr["ACTIVITY_ID"].ToString(), dr["PROCESS_ID"].ToString());
				if (dic.ContainsKey(key) == false)
				{
					InvalidAssigneeUrl item = new InvalidAssigneeUrl();
					item.NotificationID = notificationID;
					item.ActivityID = dr["ACTIVITY_ID"].ToString();
					item.ProcessID = dr["PROCESS_ID"].ToString();
					item.ProcessName = dr["PROCESS_NAME"].ToString();
					item.Url = dr["URL"].ToString();
					item.ActivityKey = dr["ACTIVITY_DESC_KEY"].ToString();

					dic.Add(key, item);
				}
				else if (string.IsNullOrEmpty(dic[key].Url) == true && string.IsNullOrEmpty(dr["URL"].ToString()) == false)
					dic[key].Url = dr["URL"].ToString();
			}

			InvalidAssignessUrlCollection invalidAssignessUrls = new InvalidAssignessUrlCollection();

			foreach (InvalidAssigneeUrl item in dic.Values)
			{
				invalidAssignessUrls.Add(item);
			}

			return invalidAssignessUrls;
		}