59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using Dlhis.Entity.Basic.Entity;
|
|
using Dlhis.Entity.Canteen.Entities.EMealVoucher;
|
|
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<EMealVoucherEntity>().Where(x => x.No == request.No).AnyAsync()).ThrowIfTrue($"{request.No}已存在");
|
|
|
|
var gainfo = await _dbContext.Queryable<GainfoEntity>().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);
|
|
}
|
|
} |