/// <summary> /// 退回任务 /// </summary> public bool BackTask(string backWorkTaskId, OperationUser currentUser, string applyContent) { //找到定义的流程 WorkTask currenTask = DefinitionWorkFlow.WorkTasks.Find(u => u.WorkTaskId == this.WorkTaskId); foreach (var record in WorkFlowRecords) { if (string.Equals(record.ApplyUserNo, currentUser.UserNo, StringComparison.CurrentCultureIgnoreCase)) { record.ActivityStateId = ActivityState.SendBacked; record.EndTime = DateTime.Now; record.ApplyContent = applyContent ?? "不同意"; } else { if (currenTask.OperationTypeId == OperationType.All || currenTask.OperationTypeId == OperationType.ChocieOne) { record.ActivityStateId = ActivityState.End; record.EndTime = DateTime.Now; record.ApplyContent = "流程已结束"; } } } List <WorkFlowRecord> wrs = WorkFlowRecords.Where(u => u.WorkTaskIns.WorkTaskId == backWorkTaskId).ToList(); foreach (var record in wrs) { WorkFlowRecord r = record; r.ActivityStateId = ActivityState.Running; r.CreateTime = DateTime.Now; r.EndTime = null; r.ApplyContent = ""; WorkFlowRecords.Add(r); } return(false); }
public WorkFlowInstance NextTask(OperationUser currentUser, string applyContent, string nextWorkTaskId, List <OperationUser> operationUsers) { List <WorkFlowRecord> workFlowRecords = WorkFlowRecords.Where(u => u.WorkTaskIns.WorkTaskId == WorkTaskId).ToList(); WorkTask currenTask = DefinitionWorkFlow.WorkTasks.Find(u => u.WorkTaskId == WorkTaskId); foreach (var record in workFlowRecords) { if (string.Equals(record.ApplyUserNo, currentUser.UserNo, StringComparison.CurrentCultureIgnoreCase)) { record.ActivityStateId = ActivityState.Completed; record.EndTime = DateTime.Now; record.ApplyContent = applyContent ?? "同意"; } else { if (currenTask.OperationTypeId == OperationType.ChocieOne) { record.ActivityStateId = ActivityState.End; record.EndTime = DateTime.Now; record.ApplyContent = "流程已结束"; } } } if (currenTask.OperationTypeId == OperationType.All && workFlowRecords.Count != workFlowRecords.Count(u => u.ActivityStateId == ActivityState.Completed)) { return(this); } string nextTaskid = string.IsNullOrEmpty(nextWorkTaskId) ? currenTask.NextWorkTaskId : nextWorkTaskId; WorkTaskId = nextTaskid; WorkTask nextworkTask = DefinitionWorkFlow.WorkTasks.Find(u => u.WorkTaskId == nextTaskid); if (operationUsers != null && operationUsers.Count > 0) { foreach (var user in operationUsers) { WorkFlowRecord nxetRecord = new WorkFlowRecord() { WorkTaskIns = nextworkTask, ActivityName = nextworkTask.Name, ActivityStateId = ActivityState.Running, ApplyUserName = user.UserName, ApplyUserNo = user.UserName, CreateTime = DateTime.Now, }; WorkFlowRecords.Add(nxetRecord); } } else { foreach (var user in nextworkTask.OperationUsers ?? new List <OperationUser>()) { WorkFlowRecord nxetRecord = new WorkFlowRecord() { WorkTaskIns = nextworkTask, ActivityName = nextworkTask.Name, ActivityStateId = ActivityState.Running, ApplyUserName = user.UserName, ApplyUserNo = user.UserName, CreateTime = DateTime.Now, }; WorkFlowRecords.Add(nxetRecord); } if (nextworkTask.TaskTypeId == TaskType.End) { WorkFlowRecord nxetRecord = new WorkFlowRecord() { WorkTaskIns = nextworkTask, ActivityName = nextworkTask.Name, ActivityStateId = ActivityState.End, ApplyContent = "流程结束", CreateTime = DateTime.Now, EndTime = DateTime.Now }; WorkFlowRecords.Add(nxetRecord); WorkFlowStateId = WorkFlowState.Completed; } } return(this); }
/// <summary> /// /// </summary> /// <param name="workFlow"></param> /// <param name="operationUsers"></param> /// <returns></returns> public WorkFlowInstance StartTask(WorkFlow workFlow, List <OperationUser> operationUsers) { CreateTime = DateTime.Now; WorkFlowStateId = WorkFlowState.Running; WorkFlowRecords = new List <WorkFlowRecord>(); //找到定义的流程 DefinitionWorkFlow = workFlow; //处理当前任务 WorkTask currentTask = workFlow.WorkTasks.FirstOrDefault(u => u.WorkTaskId == WorkTaskId); WorkFlowRecord currentRecord = new WorkFlowRecord() { WorkTaskIns = currentTask, ActivityName = currentTask.Name, ActivityStateId = ActivityState.Completed, ApplyContent = "编辑", ApplyUserName = CreateUserName, ApplyUserNo = CreateUserNo, CreateTime = DateTime.Now, EndTime = DateTime.Now }; WorkFlowRecords.Add(currentRecord); //处理下一步任务 WorkTask nxetTask = workFlow.WorkTasks.FirstOrDefault(u => u.WorkTaskId == currentTask.NextWorkTaskId); if (operationUsers != null && operationUsers.Count > 0) { foreach (var user in operationUsers) { WorkFlowRecord nxetRecord = new WorkFlowRecord() { WorkTaskIns = nxetTask, ActivityName = nxetTask.Name, ActivityStateId = ActivityState.Running, ApplyUserName = user.UserName, ApplyUserNo = user.UserName, CreateTime = DateTime.Now, }; WorkFlowRecords.Add(nxetRecord); } } else { foreach (var user in nxetTask.OperationUsers ?? new List <OperationUser>()) { WorkFlowRecord nxetRecord = new WorkFlowRecord() { WorkTaskIns = nxetTask, ActivityName = nxetTask.Name, ActivityStateId = ActivityState.Running, ApplyUserName = user.UserName, ApplyUserNo = user.UserName, CreateTime = DateTime.Now, }; WorkFlowRecords.Add(nxetRecord); } } //当前未处理的任务 WorkTaskId = nxetTask.WorkTaskId; return(this); }