public static ExpenseAuditHistoryModel ToModelWithExpenseMainInfo(this ExpenseAuditHistory entity) { var model = new ExpenseAuditHistoryModel() { Id = entity.Id, CurrentAudit = entity.CurrentAudit, NextAudit = entity.NextAudit, ExpenseId = entity.ExpenseId, Status = (OrderStatus)entity.Status, AuditMessage = entity.AuditMessage, ExpenseMain = entity.ExpenseMain.ToModel(), CreatedTime = entity.CreatedTime, }; using (var dbContext = new MissionskyOAEntities()) { //Get english name var userEntity = dbContext.Users.FirstOrDefault(it => it.Id == entity.CurrentAudit); if (userEntity != null) { model.CurrentAuditName = userEntity.EnglishName; } userEntity = dbContext.Users.FirstOrDefault(it => it.Id == entity.NextAudit); if (userEntity != null) { model.NextAuditName = userEntity.EnglishName; } } return(model); }
/// <summary> /// 修改报销单信息(目前只可修改报销理由) /// </summary> /// <returns>报销单信息</returns> public bool UpdateExpenseOrder(int expenseId, UpdateExpenseModel model, UserModel user) { using (var dbContext = new MissionskyOAEntities()) { //查询申请信息是否存在 var expenseMain = dbContext.ExpenseMains.FirstOrDefault(it => it.Id == expenseId); if (expenseMain == null) { throw new Exception("报销单不存在"); } if (!user.Email.EqualsIgnoreCase(Global.FinancialEmail)) { ExpenseAuditHistoryModel expenseCurrentStaus = GetExpenseCurrentStatus(expenseMain.Id, expenseMain.AuditId); if (expenseMain.AuditId != (int)ExpenseAuditStep.DepartmentAudit || expenseCurrentStaus.Status != OrderStatus.Apply) { Log.Error("已经处于审批流程,不可修改"); throw new InvalidOperationException("已经处于审批流程,不可修改"); } } expenseMain.Reason = model.Reason; dbContext.SaveChanges(); return(true); } }
public static ExpenseAuditHistory ToEntity(this ExpenseAuditHistoryModel model) { var entity = new ExpenseAuditHistory() { CurrentAudit = model.CurrentAudit, NextAudit = model.NextAudit, ExpenseId = model.ExpenseId, Status = (int)model.Status, AuditMessage = model.AuditMessage, CreatedTime = model.CreatedTime, }; return(entity); }
/// <summary> /// 取消报销单 /// </summary> /// <returns>取消</returns> public bool CancelExpense(int expenseId, UserModel user) { using (var dbContext = new MissionskyOAEntities()) { //查询申请信息是否存在 var orders = dbContext.ExpenseMains.FirstOrDefault(it => it.Id == expenseId); var auditMessageType = (int)AuditMessageType.Apply_Expense_Cancel_Application_Message; if (orders == null) { throw new Exception("报销单不存在"); } if (orders.AuditId == (int)ExpenseAuditStep.DepartmentAudit) { ExpenseAuditHistoryModel expenseCurrentStaus = GetExpenseCurrentStatus(orders.Id, orders.AuditId); if (expenseCurrentStaus != null && expenseCurrentStaus.Status == OrderStatus.Apply) { var auditHistory = dbContext.ExpenseAuditHistories.FirstOrDefault(it => it.Id == expenseCurrentStaus.Id); auditHistory.NextAudit = null; auditHistory.CurrentAudit = 0; auditHistory.Status = (int)OrderStatus.Canceled; var auditMessageEntitry = new AuditMessage() { Type = auditMessageType, UserId = user.Id, Status = (int)AuditMessageStatus.Unread, Message = auditMessageType.ToString(), CreatedTime = DateTime.Now }; dbContext.AuditMessages.Add(auditMessageEntitry); //更新数据库 dbContext.SaveChanges(); return(true); } else { throw new InvalidOperationException("已经在审批中,不能直接取消"); } } else { throw new InvalidOperationException("已经在审批中,不能直接取消"); } } }
/// <summary> /// 初始化审批状态 /// </summary> public ExpenseMainModel InitExpenseAudit(ExpenseMainModel model) { //2.1 构造审批历史 model.ExpenseAuditHistories = new List <ExpenseAuditHistoryModel>(); ExpenseAuditHistoryModel auditHistoryModel = new ExpenseAuditHistoryModel(); using (var dbContext = new MissionskyOAEntities()) { var financialUserEntity = dbContext.Users.FirstOrDefault(it => it.Email != null && it.Email.ToLower().Contains(Global.FinancialEmail)); //国内 if (model.DeptNo == 1) { var inlandHeaderUserEntity = dbContext.Users.FirstOrDefault(it => it.Email != null && it.Email.ToLower().Contains(Global.InlandHeaderEmail)); if (inlandHeaderUserEntity != null) { auditHistoryModel.CurrentAudit = inlandHeaderUserEntity.Id; auditHistoryModel.NextAudit = financialUserEntity.Id; auditHistoryModel.Status = OrderStatus.Apply; auditHistoryModel.CreatedTime = DateTime.Now; } } else { var overseaHeaderUserEntity = dbContext.Users.FirstOrDefault(it => it.Email != null && it.Email.ToLower().Contains(Global.OverseaHeaderEmail)); if (overseaHeaderUserEntity != null) { auditHistoryModel.CurrentAudit = overseaHeaderUserEntity.Id; auditHistoryModel.NextAudit = financialUserEntity.Id; auditHistoryModel.Status = OrderStatus.Apply; auditHistoryModel.CreatedTime = DateTime.Now; } } model.AuditId = (int)ExpenseAuditStep.DepartmentAudit; model.ExpenseAuditHistories.Add(auditHistoryModel); return(model); } }
/// <summary> /// 修改报销详细信息 /// </summary> /// <returns>报销详细信息</returns> public bool UpdateExpenseDetailsOrder(int id, ApplyExpenseDetailModel model, UserModel user) { using (var dbContext = new MissionskyOAEntities()) { //查询申请详细信息是否存在 var expenseDetail = dbContext.ExpenseDetails.FirstOrDefault(it => it.Id == id); if (expenseDetail == null) { throw new Exception("报销详细单id不存在"); } if (!user.Email.EqualsIgnoreCase(Global.FinancialEmail)) { //报销单 var expenseMainEntity = dbContext.ExpenseMains.FirstOrDefault(it => it.Id == expenseDetail.MId); ExpenseAuditHistoryModel expenseCurrentStaus = GetExpenseCurrentStatus(expenseMainEntity.Id, expenseMainEntity.AuditId); if (expenseMainEntity.AuditId != (int)ExpenseAuditStep.DepartmentAudit || expenseCurrentStaus.Status != OrderStatus.Apply) { Log.Error("已经处于审批流程,不可修改"); throw new InvalidOperationException("已经处于审批流程,不可修改"); } } if (model.Amount > 0 && model.Amount != expenseDetail.Amount) { CalculateExpenseSum(expenseDetail.MId, model.Amount - expenseDetail.Amount); } expenseDetail.ODate = model.ODate; expenseDetail.Remark = model.Remark; expenseDetail.Amount = model.Amount; if (model.EType != 0) { expenseDetail.EType = (int)model.EType; } #region 更新成员 if (model.participants != null && model.participants.Count() > 0) { var expenseMems = dbContext.ExpenseMembers.Where(it => it.DId == expenseDetail.Id); //原来存在的 var maxDetId = dbContext.ExpenseMembers.Max(it => it.Id); //求最大Detail Id //移除现在不存在的 expenseMems.ToList().ForEach(it => { if (!model.participants.Contains(it.MemberId)) { dbContext.ExpenseMembers.Remove(it); } }); //添加新增的 model.participants.ToList().ForEach(it => { if (expenseMems.Any(m => m.MemberId == it) == false) { dbContext.ExpenseMembers.Add(new ExpenseMember() { MemberId = it, DId = expenseDetail.Id, Id = ++maxDetId }); } }); } #endregion dbContext.SaveChanges(); return(true); } }