diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml index 76b70ba5..d8e11c85 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml @@ -215,7 +215,7 @@ - + 分页查 @@ -227,14 +227,14 @@ - + - + diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/PurchaseController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/PurchaseController.cs index e710568e..5118f9f2 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/PurchaseController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ERP/PurchaseController.cs @@ -22,7 +22,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers.ERP /// /// [HttpGet] - public async Task PageList([FromQuery] PurchaseCreateUpdateInput input, [FromQuery] PageParModel page) + public async Task PageList([FromQuery] PurchaseGetListInput input, [FromQuery] PageParModel page) { var result = await _purchaseService.PageListAsync(input, page); return Result.Success().SetData(result); @@ -46,7 +46,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers.ERP /// /// [HttpPost] - public async Task Create(PurchaseCreateUpdateInput input) + public async Task Create(PurchaseCreateInput input) { var result = await _purchaseService.CreateAsync(input); return Result.Success().SetData(result); @@ -60,7 +60,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers.ERP /// [HttpPut] [Route("{id}")] - public async Task Update(long id, PurchaseCreateUpdateInput input) + public async Task Update(long id, PurchaseUpdateInput input) { var result = await _purchaseService.UpdateAsync(id, input); return Result.Success().SetData(result); diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/MapperConfig/PurchaseProfile.cs b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/MapperConfig/PurchaseProfile.cs index 220daa82..a7a21a12 100644 --- a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/MapperConfig/PurchaseProfile.cs +++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/MapperConfig/PurchaseProfile.cs @@ -12,7 +12,7 @@ namespace Yi.Framework.DtoModel.ERP.Purchase.MapperConfig { public SuppliERProfile() { - CreateMap(); + CreateMap(); CreateMap(); } diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/Yi.Framework.DTOModel.csproj b/Yi.Framework.Net6/Yi.Framework.DTOModel/Yi.Framework.DTOModel.csproj index d5610d9a..5f0148bf 100644 --- a/Yi.Framework.Net6/Yi.Framework.DTOModel/Yi.Framework.DTOModel.csproj +++ b/Yi.Framework.Net6/Yi.Framework.DTOModel/Yi.Framework.DTOModel.csproj @@ -2,6 +2,7 @@ net6.0 + enable diff --git a/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseCreateInput.cs b/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseCreateInput.cs new file mode 100644 index 00000000..8317359a --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseCreateInput.cs @@ -0,0 +1,21 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.DtoModel.ERP.PurchaseDetails; +using Yi.Framework.Model.Base; +using Yi.Framework.Model.ERP.Entitys; + +namespace Yi.Framework.DtoModel.ERP.Purchase +{ + public class PurchaseCreateInput + { + public string Code { get; set; } = string.Empty; + public DateTime? NeedTime { get; set; } + public string Buyer { get; set; } = string.Empty; + + public List? PurchaseDetails { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseGetListInput.cs b/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseGetListInput.cs new file mode 100644 index 00000000..f67afb2e --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseGetListInput.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Model.Base; +using Yi.Framework.Model.ERP.Entitys; + +namespace Yi.Framework.DtoModel.ERP.Purchase +{ + public class PurchaseGetListInput + { + public string? Code { get; set; } + public DateTime? NeedTime { get; set; } + public string? Buyer { get; set; } + public PurchaseStateEnum? PurchaseState { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/PurchaseCreateUpdateInput.cs b/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseUpdateInput.cs similarity index 89% rename from Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/PurchaseCreateUpdateInput.cs rename to Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseUpdateInput.cs index c7370660..691d2b73 100644 --- a/Yi.Framework.Net6/Yi.Framework.DTOModel/ERP/Purchase/PurchaseCreateUpdateInput.cs +++ b/Yi.Framework.Net6/Yi.Framework.DtoModel/ERP/Purchase/PurchaseUpdateInput.cs @@ -9,7 +9,7 @@ using Yi.Framework.Model.ERP.Entitys; namespace Yi.Framework.DtoModel.ERP.Purchase { - public class PurchaseCreateUpdateInput : EntityDto + public class PurchaseUpdateInput : EntityDto { public string Code { get; set; } public DateTime NeedTime { get; set; } diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/Base/Crud/ICreateAppService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/Base/Crud/ICreateAppService.cs index 26671aee..88f10f0a 100644 --- a/Yi.Framework.Net6/Yi.Framework.Interface/Base/Crud/ICreateAppService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Interface/Base/Crud/ICreateAppService.cs @@ -17,5 +17,7 @@ namespace Yi.Framework.Interface.Base.Crud , in TCreateInputDto> : IApplicationService { Task CreateAsync(TCreateInputDto dto); + + Task CreateAsync(IEnumerable dtos); } } diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IPurchaseService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IPurchaseService.cs index 94630608..008898d6 100644 --- a/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IPurchaseService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Interface/ERP/IPurchaseService.cs @@ -9,8 +9,8 @@ using Yi.Framework.Interface.Base.Crud; namespace Yi.Framework.Interface.ERP { - public interface IPurchaseService : ICrudAppService + public interface IPurchaseService : ICrudAppService { - Task>> PageListAsync(PurchaseCreateUpdateInput input, PageParModel page); + Task>> PageListAsync(PurchaseGetListInput input, PageParModel page); } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseEntity.cs index b511c5a9..b5759df2 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ERP/Entitys/PurchaseEntity.cs @@ -45,12 +45,12 @@ namespace Yi.Framework.Model.ERP.Entitys /// /// 总共金额 /// - public long TotalMoney { get; set; } + public float TotalMoney { get; set; } /// /// 已支付金额 /// - public long PaidMoney { get; set; } + public float PaidMoney { get; set; } /// /// 采购状态 diff --git a/Yi.Framework.Net6/Yi.Framework.Service/Base/Crud/AbstractKeyCrudAppService.cs b/Yi.Framework.Net6/Yi.Framework.Service/Base/Crud/AbstractKeyCrudAppService.cs index f31d825e..61c376a4 100644 --- a/Yi.Framework.Net6/Yi.Framework.Service/Base/Crud/AbstractKeyCrudAppService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Service/Base/Crud/AbstractKeyCrudAppService.cs @@ -75,6 +75,18 @@ namespace Yi.Framework.Service.Base.Crud return entitydto; } + + public async virtual Task CreateAsync(IEnumerable dtos) + { + + var entity = await MapToEntitysAsync(dtos); + + TryToSetTenantId(entity); + + //这边需要进行判断,实体是什么guid还是雪花id + await Repository.InsertReturnSnowflakeIdAsync(entity); + } + /// /// 删除 /// @@ -126,6 +138,19 @@ namespace Yi.Framework.Service.Base.Crud MapToEntity(updateInput, entity); return Task.CompletedTask; } + + /// + /// 将 批量更新输入dto转化为实体的异步 + /// + /// + /// + protected virtual async Task> MapToEntitysAsync(IEnumerable updateInput) + { + List entitys = MapToEntitys(updateInput); + + return await Task.FromResult(entitys); + } + /// /// 将 更新输入dto转化为实体的同步方法 /// @@ -136,6 +161,17 @@ namespace Yi.Framework.Service.Base.Crud ObjectMapper.Map(updateInput, entity); } + /// + /// 将 批量更新输入dto转化为实体的同步方法 + /// + /// + /// + protected virtual List MapToEntitys(IEnumerable updateInput) + { + return ObjectMapper.Map>(updateInput); + } + + /// /// 创建dto 给 实体的转换的异步方法 /// @@ -203,6 +239,16 @@ namespace Yi.Framework.Service.Base.Crud //} } + protected virtual void TryToSetTenantId(IEnumerable entitys) + { + foreach (var entity in entitys) + { + TryToSetTenantId(entity); + } + + } + + /// /// 判断租户id的属性是否为空 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ERP/PurchaseService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ERP/PurchaseService.cs index 22640c6b..d976746a 100644 --- a/Yi.Framework.Net6/Yi.Framework.Service/ERP/PurchaseService.cs +++ b/Yi.Framework.Net6/Yi.Framework.Service/ERP/PurchaseService.cs @@ -14,12 +14,17 @@ using Yi.Framework.Service.Base.Crud; namespace Yi.Framework.Service.ERP { - public class PurchaseService : CrudAppService, IPurchaseService + public class PurchaseService : CrudAppService, IPurchaseService { - public PurchaseService(IRepository repository, IMapper mapper) : base(repository, mapper) + private readonly ISugarUnitOfWork _unitOfWork; + private readonly IPurchaseDetailsService _purchaseDetailsService; + public PurchaseService(IRepository repository, IMapper mapper, ISugarUnitOfWork unitOfWork, + IPurchaseDetailsService purchaseDetailsService) : base(repository, mapper) { + _unitOfWork = unitOfWork; + _purchaseDetailsService = purchaseDetailsService; } - public async Task>> PageListAsync(PurchaseCreateUpdateInput input, PageParModel page) + public async Task>> PageListAsync(PurchaseGetListInput input, PageParModel page) { RefAsync totalNumber = 0; var data = await Repository._DbQueryable @@ -28,5 +33,23 @@ namespace Yi.Framework.Service.ERP .ToPageListAsync(page.PageNum, page.PageSize, totalNumber); return new PageModel> { Total = totalNumber.Value, Data = await MapToGetListOutputDtosAsync(data) }; } + + public override async Task CreateAsync(PurchaseCreateInput input) + { + + using (var uow = _unitOfWork.CreateContext()) + { + var entity = await MapToEntityAsync(input); + 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); + + await _purchaseDetailsService.CreateAsync(input.PurchaseDetails); + } + + return null; + } } } diff --git a/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue b/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue index af45af98..3d9564f8 100644 --- a/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue +++ b/Yi.Vue3.x.RuoYi/src/views/ERP/supplier/index.vue @@ -314,12 +314,6 @@ /** 表单重置 */ function reset() { - form.value = { - id: undefined, - title: undefined, - isDeleted: false, - remark: undefined, - }; proxy.resetForm("dataRef"); } /** 搜索按钮操作 */