Files
Yi.Admin/Yi.Framework.Net6/Yi.Framework.Service/ERP/PurchaseService.cs

62 lines
2.6 KiB
C#
Raw Normal View History

2023-01-04 18:16:56 +08:00
using AutoMapper;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
2023-01-05 19:21:48 +08:00
using Yi.Framework.Common.Attribute;
2023-01-04 18:16:56 +08:00
using Yi.Framework.Common.Models;
using Yi.Framework.DtoModel.ERP.Purchase;
2023-01-06 18:39:54 +08:00
using Yi.Framework.DtoModel.ERP.PurchaseDetails;
2023-01-04 18:16:56 +08:00
using Yi.Framework.Interface.ERP;
2023-01-05 19:21:48 +08:00
using Yi.Framework.Model.Base;
2023-01-04 18:16:56 +08:00
using Yi.Framework.Model.ERP.Entitys;
using Yi.Framework.Repository;
using Yi.Framework.Service.Base.Crud;
namespace Yi.Framework.Service.ERP
{
2023-01-04 20:50:10 +08:00
public class PurchaseService : CrudAppService<PurchaseEntity, PurchaseGetListOutput, long, PurchaseCreateInput, PurchaseUpdateInput>, IPurchaseService
2023-01-04 18:16:56 +08:00
{
2023-01-05 19:21:48 +08:00
private ISugarUnitOfWork<UnitOfWork> _unitOfWork;
2023-01-04 20:50:10 +08:00
private readonly IPurchaseDetailsService _purchaseDetailsService;
2023-01-05 19:21:48 +08:00
public PurchaseService(ISugarUnitOfWork<UnitOfWork> unitOfWork,
IPurchaseDetailsService purchaseDetailsService)
2023-01-04 18:16:56 +08:00
{
2023-01-04 20:50:10 +08:00
_unitOfWork = unitOfWork;
_purchaseDetailsService = purchaseDetailsService;
2023-01-04 18:16:56 +08:00
}
2023-01-04 20:50:10 +08:00
public async Task<PageModel<List<PurchaseGetListOutput>>> PageListAsync(PurchaseGetListInput input, PageParModel page)
2023-01-04 18:16:56 +08:00
{
RefAsync<int> totalNumber = 0;
var data = await Repository._DbQueryable
.LeftJoin<SupplierEntity>((p, s) => p.SupplierId == s.Id)
.WhereIF(input.Code is not null, u => u.Code.Contains(input.Code))
.Select((p, s) => new PurchaseGetListOutput { SupplierName = s.Name },true)
2023-01-04 18:16:56 +08:00
.ToPageListAsync(page.PageNum, page.PageSize, totalNumber);
return new PageModel<List<PurchaseGetListOutput>> { Total = totalNumber.Value, Data = data };
2023-01-04 18:16:56 +08:00
}
2023-01-04 20:50:10 +08:00
public override async Task<PurchaseGetListOutput> CreateAsync(PurchaseCreateInput input)
{
2023-01-05 19:21:48 +08:00
PurchaseEntity entity = null;
2023-01-04 20:50:10 +08:00
using (var uow = _unitOfWork.CreateContext())
{
2023-01-05 19:21:48 +08:00
entity = await MapToEntityAsync(input);
2023-01-04 20:50:10 +08:00
entity.PaidMoney = 0;
entity.TotalMoney = input.PurchaseDetails.Sum(u => u.UnitPrice * u.TotalNumber);
entity.PurchaseState = PurchaseStateEnum.Build;
TryToSetTenantId(entity);
var purchaseId = await Repository.InsertReturnSnowflakeIdAsync(entity);
2023-01-05 19:21:48 +08:00
entity.Id = purchaseId;
2023-01-06 18:39:54 +08:00
await _purchaseDetailsService.CreateAsync(input.PurchaseDetails.SetPurchaseId(purchaseId));
2023-01-05 19:21:48 +08:00
uow.Commit();
2023-01-04 20:50:10 +08:00
}
2023-01-05 19:21:48 +08:00
return await MapToGetListOutputDtoAsync(entity); ;
2023-01-04 20:50:10 +08:00
}
2023-01-04 18:16:56 +08:00
}
}