public ApiResponse <bool> AddExpenseDetailsOrder(int id, ApplyExpenseDetailModel model) { if (id < 0 || model == null) { throw new ApiBadRequestException("无效的请求"); } ApiResponse <bool> response = new ApiResponse <bool>() { Result = ExpenseService.AddExpenseDetailsOrder(id, model) }; return(response); }
/// <summary> /// 添加报销详细信息 /// </summary> /// <returns>是否成功</returns> public bool AddExpenseDetailsOrder(int id, ApplyExpenseDetailModel model) { using (var dbContext = new MissionskyOAEntities()) { //查询报销信息是否存在 var expenseMain = dbContext.ExpenseMains.FirstOrDefault(it => it.Id == id); if (expenseMain == null) { throw new Exception("报销单id不存在"); } var expenseDetailModel = new ExpenseDetailModel() { ODate = model.ODate, EType = model.EType, Remark = model.Remark, PCount = 1, Amount = model.Amount }; if (model.Amount > 0) { CalculateExpenseSum(expenseMain.Id, model.Amount); } //3.1 构造参与人员 List <ExpenseMemberModel> activyParticipants = new List <ExpenseMemberModel>(); if (model.participants != null && (model.participants.Length > 0)) { foreach (int participantItem in model.participants) { var expenseMemberModel = new ExpenseMemberModel() { MemberId = participantItem }; activyParticipants.Add(expenseMemberModel); } } expenseDetailModel.ExpenseMembers = activyParticipants; expenseMain.ExpenseDetails.Add(expenseDetailModel.ToEntity()); dbContext.SaveChanges(); return(true); } }
/// <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); } }