public string FinancingRepoApplyGoBack(string userStr, int repoApplyId) { ResultModel result = new ResultModel(); JavaScriptSerializer serializer = new JavaScriptSerializer(); try { UserModel user = serializer.Deserialize<UserModel>(userStr); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { RepoApplyDAL repoApplyDAL = new RepoApplyDAL(); result = repoApplyDAL.Get(user, repoApplyId); if (result.ResultStatus != 0) return result.Message; RepoApply repoApply = result.ReturnValue as RepoApply; result = repoApplyDAL.Goback(user, repoApply); if (result.ResultStatus != 0) return result.Message; //工作流任务关闭 DataSourceDAL sourceDAL = new DataSourceDAL(); result = sourceDAL.SynchronousStatus(user, repoApply); if (result.ResultStatus != 0) return result.Message; if (result.ResultStatus == 0) { scope.Complete(); return "撤返成功"; } else return "撤返失败"; } } catch (Exception e) { this.log.ErrorFormat("FinService出错,出错方法:{0},{1}", "FinancingRepoApplyGoBack", e.Message); return e.Message; } }
public ResultModel Goback(UserModel user, int fundsInvoiceId) { ResultModel result = new ResultModel(); try { FinanceInvoiceDAL fundsInvoiceDAL = new FinanceInvoiceDAL(); InvoiceDAL invoiceDAL = new InvoiceDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //获取财务票 result = fundsInvoiceDAL.Get(user, fundsInvoiceId); if (result.ResultStatus != 0) return result; FinanceInvoice fundsInvoice = result.ReturnValue as FinanceInvoice; if (fundsInvoice == null || fundsInvoice.FinanceInvoiceId <= 0) { result.ResultStatus = -1; result.Message = "财务发票验证失败"; return result; } //获取发票 result = invoiceDAL.Get(user, fundsInvoice.InvoiceId); if (result.ResultStatus != 0) return result; Operate.Model.Invoice invoice = result.ReturnValue as Operate.Model.Invoice; if (invoice == null || invoice.InvoiceId <= 0) { result.ResultStatus = -1; result.Message = "发票获取失败"; return result; } //撤返发票 result = invoiceDAL.Goback(user, invoice); if (result.ResultStatus != 0) return result; //工作流任务关闭 DataSourceDAL sourceDAL = new DataSourceDAL(); result = sourceDAL.SynchronousStatus(user, invoice); if (result.ResultStatus != 0) return result; scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
/// <summary> /// 根据流程模版,创建任务及任务的第一节点,返回任务的id /// </summary> /// <param name="user">当前用户</param> /// <param name="master">流程模版</param> /// <param name="source">数据源</param> /// <param name="task">任务</param> /// <returns></returns> private ResultModel CreateTask(UserModel user, FlowMaster master, DataSource source, Task task) { ResultModel result = new ResultModel(); try { //写入DataSource DataSourceDAL dataSourceDAL = new DataSourceDAL(); result = dataSourceDAL.Insert(user, source); if (result.ResultStatus != 0) return result; int sourceId = Convert.ToInt32(result.ReturnValue); //写入task TaskDAL taskDAL = new TaskDAL(); task.DataSourceId = sourceId; result = taskDAL.Insert(user, task); if (result.ResultStatus != 0) return result; int taskId = Convert.ToInt32(result.ReturnValue); task.TaskId = taskId; //在审核流程中添加提交审核人 NodeDAL nodeDAL = new NodeDAL(); result = nodeDAL.Load<Node>(user, CommandType.Text, string.Format("select * from dbo.Wf_Node where MasterId = {0} and NodeStatus = {1}", master.MasterId, (int)StatusEnum.已生效)); if (result.ResultStatus != 0) return result; List<Node> nodes = result.ReturnValue as List<Node>; if (nodes != null) { Node firstNode = nodes.OrderBy(a => a.NodeLevel).First(); //如果存在NodeLevel为0(提交人) if (firstNode.NodeLevel == 0) { TaskNodeDAL taskNodeDAL = new TaskNodeDAL(); result = taskNodeDAL.Insert(user, new TaskNode() { NodeId = firstNode.NodeId, TaskId = taskId, NodeLevel = firstNode.NodeLevel, NodeStatus = StatusEnum.已生效, EmpId = source.EmpId, AuditTime = DefaultValue.DefaultTime }); int taskNodeId = (int)result.ReturnValue; TaskOperateLogDAL taskOperateLogDAL = new TaskOperateLogDAL(); result = taskOperateLogDAL.Insert(user, new TaskOperateLog() { TaskNodeId = taskNodeId, EmpId = source.EmpId, Memo = "", LogTime = DateTime.Now, LogResult = "" }); } } result = CreateTaskNodes(user, task, 1, source); if (result.ResultStatus != 0) return result; result.ReturnValue = taskId; } catch (Exception ex) { result.Message = ex.Message; result.ResultStatus = -1; } return result; }
public ResultModel Goback(UserModel user, int payApplyId) { ResultModel result = new ResultModel(); try { PayApplyDAL payApplyDAL = new PayApplyDAL(); ApplyDAL applyDAL = new ApplyDAL(); using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //验证付款申请 result = payApplyDAL.Get(user, payApplyId); if (result.ResultStatus != 0) return result; PayApply payApply = result.ReturnValue as PayApply; if (payApply == null || payApply.PayApplyId <= 0) { result.ResultStatus = -1; result.Message = "付款申请不存在"; return result; } //验证主申请 result = applyDAL.Get(user, payApply.ApplyId); if (result.ResultStatus != 0) return result; Apply apply = result.ReturnValue as Apply; if (apply == null || apply.ApplyId <= 0) { result.ResultStatus = -1; result.Message = "主申请不存在"; return result; } //主申请状态修改至已撤返 result = applyDAL.Goback(user, apply); if (result.ResultStatus != 0) return result; //工作流任务关闭 DataSourceDAL sourceDAL = new DataSourceDAL(); result = sourceDAL.SynchronousStatus(user, apply); if (result.ResultStatus != 0) return result; result.Message = "撤返成功"; scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } return result; }
/// <summary> /// 创建任务节点 /// </summary> /// <param name="task">任务</param> /// <param name="nodeLevel">节点级别</param> /// <returns></returns> public ResultModel CreateTaskNodes(UserModel user, Task task, int nodeLevel, DataSource source) { ResultModel result = new ResultModel(); bool IsCreate = false; try { //通过外部请求获取当前审核数据源 result = GetConditionUrl(source); if (result.ResultStatus != 0) return result; Dictionary<string, object> conditionDic = result.ReturnValue as Dictionary<string, object>; NodeDAL nodeDAL = new NodeDAL(); NodeOperateDAL nodeOperateDAL = new NodeOperateDAL(); NodeOperate nodeOperate = null; TaskOperate taskOperate = null; DataTable dt = null; //获取模板中当前层级的所有节点 lock (nodeCollection) { string key = string.Format("{0}{1}", task.MasterId, nodeLevel); if (nodeCollection.ContainsKey(key)) dt = nodeCollection[key]; else { SelectModel nodeSelect = new SelectModel(); nodeSelect.ColumnName = "*"; nodeSelect.OrderStr = "NodeId"; nodeSelect.PageIndex = 1; nodeSelect.PageSize = 500; nodeSelect.TableName = "dbo.Wf_Node"; nodeSelect.WhereStr = string.Format("MasterId={0} and NodeLevel={1} and NodeStatus = {2}", task.MasterId, nodeLevel, (int)StatusEnum.已生效); result = nodeDAL.Load(user, nodeSelect); if (result.ResultStatus != 0) return result; dt = result.ReturnValue as DataTable; nodeCollection.Add(key, dt); } } if (dt != null && dt.Rows.Count > 0) { TaskNodeDAL taskNodeDAL = new TaskNodeDAL(); foreach (DataRow dr in dt.Rows) { //判断是否符合条件 result = JudgeNodeCondition(Convert.ToInt32(dr["NodeId"]), task.TaskId, conditionDic); if (result.ResultStatus != 0) return result; bool judge = false; if (result.ResultStatus == 0 && result.ReturnValue != null) bool.TryParse(result.ReturnValue.ToString(), out judge); if (judge) { int nodeId = Convert.ToInt32(dr["NodeId"]); //获取该节点 result = nodeDAL.Get(user, nodeId); if (result.ResultStatus != 0) return result; Node node = result.ReturnValue as Node; if (node == null) return result; //判断该节点是否需要操作 result = nodeOperateDAL.GetByNodeId(user, node.NodeId); if (result.ResultStatus == 0) nodeOperate = result.ReturnValue as NodeOperate; //获取审核人 AuditEmpDAL auditEmpDAl = new AuditEmpDAL(); result = auditEmpDAl.GetEmpIdsByAuditEmpId(user, node.AuditEmpId, source); if (result.ResultStatus != 0) return result; DataTable dtvalue = result.ReturnValue as DataTable; //如果不存在审核人,则转到下一个节点 if (dtvalue == null || dtvalue.Rows.Count < 1) { //result.ResultStatus = -1; //return result; continue; } //如果存在审核人,则生成相应审核节点 foreach (DataRow drValue in dtvalue.Rows) { if (Convert.ToInt32(drValue["EmpId"]) <= 0) continue; TaskNode taskNode = new TaskNode() { NodeLevel = nodeLevel, NodeStatus = StatusEnum.待审核, TaskId = task.Id, NodeId = nodeId, AuditTime = DefaultValue.DefaultTime, EmpId = Convert.ToInt32(drValue["EmpId"]) }; //如果在一个任务中存在相同的审核人且审核通过,则将新生成的审核人节点状态改为已生效(视为审核通过) result = taskNodeDAL.GetTaskNodeIdBySameAuditEmp(user, task.TaskId, Convert.ToInt32(drValue["EmpId"])); DataTable resultDatatable = result.ReturnValue as DataTable; if (result.ResultStatus == 0 && resultDatatable != null && resultDatatable.Rows.Count > 0 && nodeOperate == null) { taskNode.NodeStatus = StatusEnum.已生效; result = taskNodeDAL.Insert(user, taskNode); if (result.ResultStatus != 0) return result; int taskNodeIdValue = (int)result.ReturnValue; //插入附言 TaskOperateLogDAL taskOperateLogDAL = new TaskOperateLogDAL(); result = taskOperateLogDAL.GetLogByTaskNodeIdAndEmpId(user, Convert.ToInt32(resultDatatable.Rows[0]["TaskNodeId"]), Convert.ToInt32(drValue["EmpId"])); if (result.ResultStatus != 0) return result; TaskOperateLog taskOperateLog = result.ReturnValue as TaskOperateLog; if (taskOperateLog != null) { taskOperateLog.TaskNodeId = taskNodeIdValue; result = taskOperateLogDAL.Insert(user, taskOperateLog); } if (result.ResultStatus != 0) return result; IsCreate = true; } else if (result.ResultStatus == 0)//否则添加消息提醒 { result = taskNodeDAL.Insert(user, taskNode); if (result.ResultStatus != 0) return result; int taskNodeIdValue = (int)result.ReturnValue; if (nodeOperate != null) { taskOperate = new TaskOperate() { TaskNodeId = taskNodeIdValue, OperateUrl = nodeOperate.OperateUrl, OperateStatus = StatusEnum.已生效 }; TaskOperateDAL taskOperateDAL = new TaskOperateDAL(); result = taskOperateDAL.Insert(user, taskOperate); if (result.ResultStatus != 0) return result; } //添加消息提醒 Sms.Model.Sms sms = new Sms.Model.Sms() { SmsTypeId = 1,//to do list SmsHead = task.TaskName, SmsStatus = (int)SmsStatusEnum.待处理消息, SmsBody = task.TaskConnext, SmsRelTime = DateTime.Now, SmsLevel = 1, SourceId = taskNodeIdValue //taskNodeId }; List<SmsDetail> smsDetails = new List<SmsDetail>(); smsDetails.Add(new SmsDetail() { EmpId = Convert.ToInt32(drValue["EmpId"]), ReadTime = DefaultValue.DefaultTime }); SmsDAL smsDAL = new SmsDAL(); result = smsDAL.AddSms(user, sms, smsDetails); if (result.ResultStatus != 0) return result; IsCreate = true; } } } } if (!IsCreate) { result.Message = "当前审核层级无审核人员"; result.ResultStatus = -1; //递归生成下级节点 result = CreateTaskNodes(user, task, ++nodeLevel, source); } else { //如果创建了审核节点,则判断是否所有审核节点都通过了 result = this.JudgeSameLevelSuccessHandle(user, task, nodeLevel, source); } } else { result.Message = "不存在下级节点"; result.ResultStatus = -1; //是否判断在无下级节点后审核流程结束?审核结果为通过? TaskDAL taskDAL = new TaskDAL(); result = taskDAL.Complete(user, task); if (result.ResultStatus != 0) return result; //修改数据源状态(改为已完成) DataSourceDAL dataSourceDAL = new DataSourceDAL(); result = dataSourceDAL.DataSourceComplete(user, source); if (result.ResultStatus != 0) return result; result = this.RequestCallBackUrl(user, source, true); if (result.ResultStatus != 0) return result; } } catch (Exception ex) { result.Message = ex.Message; result.ReturnValue = ex; result.ResultStatus = -1; } return result; }
/// <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; }
/// <summary> /// 判断同级节点是否全部通过,若通过则生成下级节点,若无下级节点则任务审核通过 /// </summary> /// <param name="user"></param> /// <param name="task"></param> /// <param name="nodeLevel"></param> /// <param name="source"></param> /// <returns></returns> private ResultModel JudgeSameLevelSuccessHandle(UserModel user, Task task, int nodeLevel, DataSource source) { ResultModel result = new ResultModel(); TaskDAL taskDAL = new TaskDAL(); DataSourceDAL dataSourceDAL = new DataSourceDAL(); try { //判断同级节点是否全部通过 result = IsSameLevelNodeSuccess(user, task, nodeLevel); if (result.ResultStatus != 0) return result; bool allSuccess = (bool)result.ReturnValue; if (allSuccess) { //判断所在流程模版中是否有下一级节点或是否为最终节点 NodeDAL nodeDAL = new NodeDAL(); result = nodeDAL.Load(user, new SelectModel() { ColumnName = "NodeId", TableName = "Wf_Node", WhereStr = string.Format("MasterId = {0} and NodeLevel = {1} and NodeStatus = {2}", task.MasterId, nodeLevel + 1, (int)StatusEnum.已生效), OrderStr = "NodeId", PageIndex = 1, PageSize = 20 }); if (result.ResultStatus != 0) return result; DataTable dt = result.ReturnValue as DataTable; //如果存在下一级节点,则生成相应的任务节点 if (dt != null && dt.Rows.Count > 0) { result = this.CreateTaskNodes(user, task, nodeLevel + 1, 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 = this.RequestCallBackUrl(user, source, true); if (result.ResultStatus != 0) return result; } } else { result.Message = "同级中存在未审核节点"; result.ReturnValue = false; } } catch (Exception e) { result.ResultStatus = -1; result.Message = e.Message; } return result; }
/// <summary> /// 提交审核并创建任务和提醒消息 /// </summary> /// <param name="user">用户</param> /// <param name="model">提交审核数据实体</param> /// <param name="master">模版</param> /// <param name="source">数据源</param> /// <param name="task">任务</param> /// <returns></returns> public ResultModel AuditAndCreateTask(UserModel user, IModel model, FlowMaster master, DataSource source, Task task) { ResultModel result = new ResultModel(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { DataSourceDAL dataSourceDAL = new DataSourceDAL(); result = dataSourceDAL.CheckHasSource(new DataSource() { TableCode = model.TableName, RowId = model.Id }); if (result.ResultStatus != 0 || result.AffectCount > 0) { result.Message = "不能重复提交审核"; result.ResultStatus = -1; return result; } Common.Operate operate = Common.Operate.CreateOperate(model, true); if (operate == null) { result.Message = "模版不存在"; result.ResultStatus = -1; return result; } result = operate.Get(user, model.Id); if (result.ResultStatus != 0) return result; IModel resultModel = result.ReturnValue as IModel; if (resultModel == null || resultModel.Id <= 0) { result.ResultStatus = -1; result.Message = "数据不存在,不能提交审核"; return result; } //判断是否可以直接审核通过 FlowMasterConfigDAL flowMasterConfigDAL = new FlowMasterConfigDAL(); result = flowMasterConfigDAL.GetByMasterId(user, master.MasterId); if (result.ResultStatus == 0) { FlowMasterConfig flowMasterConfig = result.ReturnValue as FlowMasterConfig; if (flowMasterConfig != null && flowMasterConfig.ConfigId > 0 && flowMasterConfig.CanPassAudit) { result = RequestCallBackUrlForPass(user, source, true); if (result.ResultStatus != 0) return result; if (result.ResultStatus == 0) scope.Complete(); return result; } } result = operate.Submit(user, resultModel); if (result.ResultStatus != 0) return result; result = this.CreateTask(user, master, source, task); if (result.ResultStatus != 0) return result; int taskId = (int)result.ReturnValue; string aids = string.Empty; AttachBLL attachBLL = new AttachBLL(); result = attachBLL.GetAttachIds(user, resultModel); if (result.ResultStatus == 0) { DataTable dt = result.ReturnValue as DataTable; if (dt != null && dt.Rows.Count > 0) { aids = dt.Rows.Cast<DataRow>().Aggregate(aids, (current, dr) => current + (dr["AttachId"].ToString() + ",")); if (!string.IsNullOrEmpty(aids)) aids = aids.Substring(0, aids.Length - 1); } TaskAttachBLL taskAttachBLL = new TaskAttachBLL(); result = taskAttachBLL.InsertAttach(user, taskId, aids); if (result.ResultStatus != 0) return result; } else result.ResultStatus = 0; scope.Complete(); } } catch (Exception ex) { result.Message = ex.Message; result.ResultStatus = -1; } return result; }
public ResultModel ReturnHandle(UserModel user, Model.TaskOperateLog taskOperateLog) { ResultModel result = new ResultModel(); FlowOperate flowOperate = new FlowOperate(); try { using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required)) { //获取任务节点 result = tasknodeDAL.Get(user, taskOperateLog.TaskNodeId); if (result.ResultStatus != 0) return result; Model.TaskNode taskNode = result.ReturnValue as 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; } string cmdText = string.Format("select * from dbo.Wf_TaskNode where TaskId = (select TaskId from dbo.Wf_TaskNode where TaskNodeId = {0}) and NodeStatus <> {1} ", taskOperateLog.TaskNodeId, (int)Common.StatusEnum.已作废); result = tasknodeDAL.Load<Model.TaskNode>(user, CommandType.Text, cmdText); if (result.ResultStatus != 0) return result; List<Model.TaskNode> taskNodes = result.ReturnValue as List<Model.TaskNode>; if (taskNodes == null || !taskNodes.Any()) { result.ResultStatus = -1; result.Message = "获取任务节点失败"; return result; } //如果是第一层节点就直接拒绝 if (taskNodes.Select(a => a.NodeLevel).Where(a => a > 0).Distinct().Count() == 1) { result = flowOperate.AuditTaskNode(user, taskNode, taskOperateLog, null, false); if (result.ResultStatus != 0) return result; } else { //将当前层级上的所有审核人都视为审核拒绝 result = tasknodeDAL.UpdateTaskNodeStatusByLevelId(user, taskNode.TaskId, taskNode.NodeLevel, Common.StatusEnum.审核拒绝); if (result.ResultStatus != 0) return result; //写入审核操作记录 DAL.TaskOperateLogDAL taskOperateLogDAL = new TaskOperateLogDAL(); result = taskOperateLogDAL.Insert(user, taskOperateLog); if (result.ResultStatus != 0) return result; int lastNodeLevel = taskNodes.Where(a => a.NodeLevel < taskNode.NodeLevel).Select(a => a.NodeLevel).Max(); //修改上一层节点的状态 result = tasknodeDAL.UpdateTaskNodeStatusByLevelId(user, taskNode.TaskId, lastNodeLevel, StatusEnum.已作废); if (result.ResultStatus != 0) return result; //获取数据源 DAL.DataSourceDAL dataSourceDAL = new DataSourceDAL(); result = dataSourceDAL.GetDataSourceByTaskNodeId(user, taskNode.TaskNodeId); if (result.ResultStatus != 0) return result; Model.DataSource dataSource = result.ReturnValue as Model.DataSource; //获取任务 DAL.TaskDAL taskDAL = new TaskDAL(); result = taskDAL.Get(user, taskNode.TaskId); if (result.ResultStatus != 0) return result; Model.Task task = result.ReturnValue as Model.Task; result = flowOperate.CreateTaskNodes(user, task, lastNodeLevel, dataSource); if (result.ResultStatus != 0) return result; } scope.Complete(); } } catch (Exception ex) { result.ResultStatus = -1; result.Message = ex.Message; } finally { if (result.ResultStatus != 0) this.Log.ErrorFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); else if (this.Log.IsInfoEnabled) this.Log.InfoFormat("{0} {1},序号:{2}", user.EmpName, result.Message, result.ReturnValue); } return result; }