/// <summary> /// 审批不同意 /// </summary> /// <param name="taskRecordId"></param> /// <param name="opinion"></param> public int disagree(int taskRecordId, string opinion) { // 新增approve record记录 var approveRecord = new ApproveRecord { ApproverId = user.UserId, CreateTime = DateTime.Now, DocId = taskRecordId, Opinion = opinion, Result = "审批拒绝", Type = 2 }; Db.Insertable(approveRecord).ExecuteReturnIdentity(); // 修改task record状态 var taskRecord = SimpleDb.GetSingle(u => u.Id == taskRecordId); taskRecord.Status = 2; SimpleDb.Update(taskRecord); // todo 发送相关消息 return(taskRecord.Id); }
/// <summary> /// 结束任务 /// </summary> /// <param name="taskId"></param> /// <param name="approverId"></param> public void endTask(int taskId, int approverId) { // 新增任务记录: 结束任务 任务状态: 待审批 var taskRecord = new TaskRecord { Status = 0, CreateTime = DateTime.Now, Desc = "任务完成", SubmitterId = user.UserId, SubmitterName = user.UserName, TaskId = taskId }; var taskRecordId = Db.Insertable(taskRecord).ExecuteReturnIdentity(); // 新增任务审批人列表 var approverList = new List <ApproveApprover>(); var submitter = new ApproveApprover { DocId = taskRecordId, ApproverId = user.UserId, Type = 1, Level = 0 }; approverList.Add(submitter); var superiorUserId = getTaskSuperior(taskId, user); // 获取上级任务负责人 var approver = new ApproveApprover { DocId = taskRecordId, ApproverId = superiorUserId, Type = 1, Level = 1 }; approverList.Add(approver); Db.Insertable(approverList).ExecuteReturnIdentity(); // 新增任务审批记录 var record = new ApproveRecord { DocId = taskRecordId, ApproverId = user.UserId, Type = 1, Opinion = "", Result = "已提交" }; Db.Insertable(record).ExecuteReturnIdentity(); }
/// <summary> /// 任务完成情况提交 /// </summary> /// <param name="record"></param> /// <returns></returns> public TaskRecord addOrUpdateTaskRecord(TaskRecord record) { record.SubmitterId = user.UserId; record.SubmitterName = user.UserName; record.CreateTime = DateTime.Now; Db.Ado.BeginTran(); // 更新task的进度 var task = Db.Queryable <Task>().Where(u => u.Id == record.TaskId).Single(); if (task.Progress + record.Percent > 100) { throw new Exception($"该任务已经完成{task.Progress}%,无法提交占比{record.Percent}%的完成情况!"); } task.Progress += record.Percent; Db.Updateable(task).ExecuteCommand(); var returnReocrd = Db.Saveable(record).ExecuteReturnEntity(); // 新增任务审批记录 var approverList = new List <ApproveApprover>(); var submitter = new ApproveApprover { DocId = returnReocrd.Id, ApproverId = user.UserId, Type = 2, Level = 0 }; approverList.Add(submitter); try { var superiorUserId = getTaskSuperior(record.TaskId, user); var approver = new ApproveApprover { DocId = returnReocrd.Id, ApproverId = superiorUserId, Type = 2, Level = 1 }; approverList.Add(approver); Db.Insertable(approverList).ExecuteReturnIdentity(); // 新增任务审批记录 var approveRecord = new ApproveRecord { DocId = returnReocrd.Id, ApproverId = user.UserId, Type = 2, Opinion = "", Result = "已提交" }; Db.Insertable(approveRecord).ExecuteReturnIdentity(); Db.Ado.CommitTran(); } catch (Exception ex) { Db.Ado.RollbackTran(); task.Progress -= record.Percent; Db.Updateable(task).ExecuteCommand(); throw new Exception(ex.Message); } return(returnReocrd); }
/// <summary> /// 审批一条记录 /// </summary> /// <param name="recordId"></param> /// <param name="isPass"></param> /// <param name="userId"></param> /// <param name="reason"></param> /// <param name="callBackFun"></param> /// <param name="messageReceiver"></param> /// <param name="objectId"></param> public void ApproveRecord(int recordId, int isPass, int userId, string reason, Action <int, bool, string> callBackFun, out int[] messageReceiver, out int objectId) { messageReceiver = new int[] { }; var record = _dataAccess.Get <ApproveRecord>(recordId); record.IsCheck = 1; record.IsPass = isPass; record.Reason = reason; record.UserId = userId; record.ApproveTime = DateTime.Now; _dataAccess.UpdateEntity(record); objectId = record.ObjectId; if (record.IsPass == 0) { callBackFun(record.ObjectId, false, reason); } else { var steps = GetApproveStepList(record.WayId); if (steps.Last().StepId == record.CurrentStepId) { callBackFun(record.ObjectId, true, reason); } else { var step = steps.First(p => p.OrderNum == record.CurrentStepOrderNum + 1); var newRecord = new ApproveRecord { IsCheck = 0, IsPass = 0, Reason = "", UserId = 0, CurrentStepId = step.StepId, CurrentStepOrderNum = record.CurrentStepOrderNum + 1, WayType = record.WayType, ObjectId = record.ObjectId, ObjectDeptId = record.ObjectDeptId, WayId = record.WayId, ApproveTime = DateTime.Now, ObjectUserId = record.ObjectUserId }; _dataAccess.AddEntity(newRecord); messageReceiver = GetMessageReceiver(step.ApproverType, step.ApproverId, record.ObjectUserId); } } }
/// <summary> /// 开始审批 /// </summary> /// <param name="objectId"></param> /// <param name="wayType"> /// 0:培训 /// 1:晋升学习 /// </param> /// <param name="objectDeptId"></param> /// <param name="objectUserId"></param> /// <param name="messageReceiver"></param> /// <returns></returns> public ApproveRecord BeginApproveRecord(int objectId, int wayType, int objectDeptId, int objectUserId, out int[] messageReceiver) { var record = new ApproveRecord { IsCheck = 0, IsPass = 0, Reason = "", UserId = 0, CurrentStepId = 0, CurrentStepOrderNum = 0, WayType = wayType, ObjectId = objectId, ObjectDeptId = objectDeptId, ApproveTime = DateTime.Now, ObjectUserId = objectUserId }; List <ApproveStep> steps; List <ApproveDept> depts; bool canUpdate; var approveWayType = 0; if (wayType == 1) { approveWayType = 1; } record.WayId = GetApproveWay(objectDeptId, approveWayType, out steps, out depts, out canUpdate).WayId; if (record.WayId != 0) { record.CurrentStepId = steps[0].StepId; record.CurrentStepOrderNum = steps[0].OrderNum; } _dataAccess.AddEntity(record); if (steps.Count > 0) { messageReceiver = GetMessageReceiver(steps[0].ApproverType, steps[0].ApproverId, objectUserId); } else { messageReceiver = new int[0]; } return(record); }
public bool ApprovTimeSheet(int idTimeSheet, ApproveRecord record) { throw new NotImplementedException(); }