/// <summary> /// 审核工作流任务 /// </summary> /// <param name="user">当前审核人</param> /// <param name="taskNode">任务节点</param> /// <param name="log">任务操作记录</param> /// <param name="isPass">true表示通过,false表示不通过</param> /// <returns></returns> public ResultModel AuditTaskNode(UserModel user, TaskNode taskNode, TaskOperateLog log, List<TaskAttachOperateLog> taskAttachOperateLogs, bool isPass) { ResultModel result = new ResultModel(); try { //插入附言 TaskOperateLogDAL taskOperateLogDAL = new TaskOperateLogDAL(); result = taskOperateLogDAL.Insert(user, log); if (result.ResultStatus != 0) return result; int logId = (int)result.ReturnValue; //任务附件操作记录表 if (taskAttachOperateLogs != null && taskAttachOperateLogs.Any()) { TaskAttachOperateLogDAL taskAttachOperateLogDAL = new TaskAttachOperateLogDAL(); foreach (TaskAttachOperateLog TaskAttachOperateLog in taskAttachOperateLogs) { TaskAttachOperateLog.LogId = logId; result = taskAttachOperateLogDAL.Insert(user, TaskAttachOperateLog); if (result.ResultStatus != 0) return result; } } //修改taskNode状态 TaskNodeDAL taskNodeDAL = new TaskNodeDAL(); result = taskNodeDAL.Audit(user, taskNode, isPass); if (result.ResultStatus != 0) return result; //获取任务节点对应的任务 TaskDAL taskDAL = new TaskDAL(); result = taskDAL.Get(user, taskNode.TaskId); if (result.ResultStatus != 0) return result; Task task = result.ReturnValue as Task; //获取task对应的datasource DataSourceDAL dataSourceDAL = new DataSourceDAL(); result = dataSourceDAL.Get(user, task.DataSourceId); if (result.ResultStatus != 0) return result; DataSource source = result.ReturnValue as DataSource; if (isPass) { //获取流程模版配置 FlowMasterConfigDAL flowMasterConfigDAL = new FlowMasterConfigDAL(); result = flowMasterConfigDAL.GetByMasterId(user, task.MasterId); if (result.ResultStatus == 0) { FlowMasterConfig flowMasterConfig = result.ReturnValue as FlowMasterConfig; //如果同级节点只需一人审核通过就行,则将其他审核人作废 if (!flowMasterConfig.IsSeries) { result = taskNodeDAL.UpdateTaskNodeStatusByLevelIdExceptSelf(user, taskNode, StatusEnum.已作废); //if (result.ResultStatus != 0) // return result; } } result = this.JudgeSameLevelSuccessHandle(user, task, taskNode.NodeLevel, source); if (result.ResultStatus != 0) return result; } else { //修改任务状态(改为已生效,该任务视为结束),并审核拒绝回调 result = taskDAL.Complete(user, task); if (result.ResultStatus != 0) return result; ////修改数据源状态(改为已完成) //result = dataSourceDAL.DataSourceComplete(user, source); //if (result.ResultStatus != 0) // return result; result = dataSourceDAL.Audit(user, source, false); if (result.ResultStatus != 0) return result; result = RequestCallBackUrl(user, source, false); if (result.ResultStatus != 0) return result; //获取或新增消息类型 SmsTypeDAL smsTypeDAL = new SmsTypeDAL(); result = smsTypeDAL.InsertOrGet(user, task.MasterId); if (result.ResultStatus != 0) return result; int smsTypeId = (int)result.ReturnValue; //找到该任务的发起人,给他发消息提醒 Sms.Model.Sms sms = new Sms.Model.Sms() { SmsTypeId = smsTypeId, SmsHead = string.Format("{0}已被退回", task.TaskName), SmsStatus = (int)SmsStatusEnum.待处理消息, SmsBody = task.TaskConnext, SmsRelTime = DateTime.Now, SmsLevel = 1, SourceId = source.RowId }; List<SmsDetail> smsDetails = new List<SmsDetail> { new SmsDetail() { EmpId = source.EmpId, //任务的发起人 ReadTime = DefaultValue.DefaultTime } }; SmsDAL smsDAL = new SmsDAL(); result = smsDAL.AddSms(user, sms, smsDetails); if (result.ResultStatus != 0) return result; } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; result.ReturnValue = ex; } return result; }
public override IModel CreateModel(SqlDataReader dr) { TaskOperateLog taskoperatelog = new TaskOperateLog(); int indexLogId = dr.GetOrdinal("LogId"); taskoperatelog.LogId = Convert.ToInt32(dr[indexLogId]); int indexTaskNodeId = dr.GetOrdinal("TaskNodeId"); taskoperatelog.TaskNodeId = Convert.ToInt32(dr[indexTaskNodeId]); int indexEmpId = dr.GetOrdinal("EmpId"); taskoperatelog.EmpId = Convert.ToInt32(dr[indexEmpId]); int indexMemo = dr.GetOrdinal("Memo"); if (dr["Memo"] != DBNull.Value) { taskoperatelog.Memo = Convert.ToString(dr[indexMemo]); } int indexLogTime = dr.GetOrdinal("LogTime"); if (dr["LogTime"] != DBNull.Value) { taskoperatelog.LogTime = Convert.ToDateTime(dr[indexLogTime]); } int indexLogResult = dr.GetOrdinal("LogResult"); if (dr["LogResult"] != DBNull.Value) { taskoperatelog.LogResult = Convert.ToString(dr[indexLogResult]); } return taskoperatelog; }
public ResultModel AuditTaskNode(UserModel user, int taskNodeId, bool isPass, string memo, string logResult, string aids) { ResultModel result = new ResultModel(); using (System.Transactions.TransactionScope scope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required)) { NFMT.WorkFlow.DAL.TaskNodeDAL taskNodeDAL = new NFMT.WorkFlow.DAL.TaskNodeDAL(); result = taskNodeDAL.Get(user, taskNodeId); if (result.ResultStatus != 0) return result; NFMT.WorkFlow.Model.TaskNode taskNode = result.ReturnValue as NFMT.WorkFlow.Model.TaskNode; if (taskNode == null || taskNode.TaskNodeId <= 0) { result.ResultStatus = -1; result.Message = "任务节点不存在"; return result; } if (taskNode.NodeStatus != StatusEnum.待审核) { result.ResultStatus = -1; result.Message = "该节点已审核"; return result; } NFMT.WorkFlow.Model.TaskOperateLog taskOperateLog = new NFMT.WorkFlow.Model.TaskOperateLog() { TaskNodeId = taskNode.TaskNodeId, EmpId = user.EmpId, Memo = memo, LogTime = DateTime.Now, LogResult = logResult }; List<NFMT.WorkFlow.Model.TaskAttachOperateLog> taskAttachOperateLogs = new List<TaskAttachOperateLog>(); if (!string.IsNullOrEmpty(aids)) { foreach (string s in aids.Split(',')) { taskAttachOperateLogs.Add(new TaskAttachOperateLog() { AttachId = Convert.ToInt32(s) }); } } FlowOperate flowOperate = new FlowOperate(); result = flowOperate.AuditTaskNode(user, taskNode, taskOperateLog, taskAttachOperateLogs, isPass); if (result.ResultStatus != 0) return result; scope.Complete(); } return result; }