using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Canteen.Entities; using Dlhis.Entity.Canteen.Enums; using Dlhis.External.EMealVoucher.Request; using Kurisu.AspNetCore.DataAccess.SqlSugar.Services; using Kurisu.AspNetCore.Utils.Extensions; namespace Dlhis.External.EMealVoucher.Services.Implements; public class EMealVoucherService : IEMealVoucherService { private readonly IDbContext _dbContext; public EMealVoucherService(IDbContext dbContext) { _dbContext = dbContext; } public async Task ReceiveAsync(EMealVoucherReceiveRequest request) { (await _dbContext.Queryable().Where(x => x.No == request.No).AnyAsync()).ThrowIfTrue($"{request.No}已存在"); var gainfo = await _dbContext.Queryable().Where(x => x.Code == request.Code).SingleAsync(); gainfo.ThrowIfNull("申请人不存在"); var voucher = new EMealVoucherEntity { No = request.No, Title = request.Title, Code = request.Code, CostId = request.CostId, Source = request.Source, Phone = request.Phone, Number = request.Number, Reason = request.Reason, Shifts = request.Shifts.Select(x => (ShiftEnumType)x).ToList(), Date = request.Date, Factories = request.Factories, Factory = gainfo.Factory }; var details = request.Details.Select(x => new EMealVoucherDetailEntity { No = request.No, UserType = x.UserType, IdNo = x.IdNo, Name = x.Name, Phone = x.Phone, Start = x.Start, End = x.End, Balance = x.Amount, OriginBalance = x.Amount }).ToList(); var id = await _dbContext.InsertReturnIdentityAsync(voucher); details.ForEach(x => x.VoucherId = id); await _dbContext.InsertAsync(details); } }