Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
        }