diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs
new file mode 100644
index 000000000..0df247f7f
--- /dev/null
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp;
+using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Domain.Entities.Auditing;
+using Volo.Abp.ObjectMapping;
+using Win_in.Sfs.Basedata.Application.Contracts;
+using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Wms.Pda.Models;
+using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
+
+namespace Win_in.Sfs.Wms.Pda.Controllers.Stores;
+
+[ApiController]
+[Route($"{PdaHostConst.ROOT_ROUTE}store/purchase-return-request")]
+public class PurchaseReturnRequestController : AbpController
+{
+ private readonly IPurchaseReturnRequestAppService _purchaseReturnRequestAppService;
+ private readonly ITransactionTypeAppService _transactionTypeAppService;
+ public PurchaseReturnRequestController(IPurchaseReturnRequestAppService purchaseReturnRequestAppService,
+ ITransactionTypeAppService transactionTypeAppService
+ )
+ {
+ _purchaseReturnRequestAppService = purchaseReturnRequestAppService;
+ _transactionTypeAppService = transactionTypeAppService;
+ }
+
+ ///
+ /// 创建退货申请
+ ///
+ [HttpPost("create-many")]
+ public virtual async Task CreateManyAsync(List input)
+ {
+ List entitys = new List();
+ var groups = input.GroupBy(r => r.AsnNumber).ToList();
+ foreach (var group in groups)
+ {
+ var list = group.ToList();
+ var entity = ObjectMapper.Map(list[0]);
+ await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
+ entity.Details = new List();
+ foreach (var item in list)
+ {
+ var detail = ObjectMapper.Map(list[0]);
+ entity.Details.Add(detail);
+ }
+ entitys.Add(entity);
+ }
+ await _purchaseReturnRequestAppService.CreateManyAsync(entitys).ConfigureAwait(false); ;
+ }
+
+ ///
+ /// 赋值Request业务属性
+ ///
+ ///
+ ///
+ private async Task SetRequestAutoPropertiesAsync(PurchaseReturnRequestEditInput entity)
+ {
+ var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.PurchaseReturn, EnumTransSubType.None).ConfigureAwait(false);
+
+ Check.NotNull(tranType, "事务类型", "事务类型不存在");
+
+ entity.AutoCompleteJob = tranType.AutoCompleteJob;
+ entity.AutoSubmit = tranType.AutoSubmitRequest;
+ entity.AutoAgree = tranType.AutoAgreeRequest;
+ entity.AutoHandle = tranType.AutoHandleRequest;
+ entity.DirectCreateNote = tranType.DirectCreateNote;
+ }
+}
diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/PdaHostAutoMapperProfile.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/PdaHostAutoMapperProfile.cs
index bb3482baa..862e848b7 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/PdaHostAutoMapperProfile.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/PdaHostAutoMapperProfile.cs
@@ -2,6 +2,7 @@ using AutoMapper;
using Volo.Abp.AutoMapper;
using Win_in.Sfs.Wms.Pda.Controllers.Jobs;
using Win_in.Sfs.Wms.Store.Application.Contracts;
+using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Pda;
@@ -19,6 +20,15 @@ public class PdaHostAutoMapperProfile : Profile
.Ignore(x => x.TimeWindow)
.Ignore(x => x.SupplierName)
;
+ CreateMap()
+ .Ignore(x => x.ReturnType)
+ .Ignore(x => x.ReturnTime)
+ .Ignore(x => x.ActiveDate)
+ .Ignore(x => x.Details)
+ .Ignore(x => x.TenantId)
+ .Ignore(x => x.Remark)
+ .Ignore(x => x.ExtraProperties);
+ CreateMap();
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/IPurchaseReturnRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/IPurchaseReturnRequestAppService.cs
index 9fea10b59..76ad6e798 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/IPurchaseReturnRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/IPurchaseReturnRequestAppService.cs
@@ -1,3 +1,5 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
using Win_in.Sfs.Shared.Application.Contracts;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@@ -7,5 +9,5 @@ public interface IPurchaseReturnRequestAppService
, ISfsCheckStatusAppService
{
-
+ Task> CreateManyAsync(List inputs);
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/Inputs/PurchaseReturnRequestPdaInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/Inputs/PurchaseReturnRequestPdaInput.cs
new file mode 100644
index 000000000..b00091f9b
--- /dev/null
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/PurchaseReturnRequests/Inputs/PurchaseReturnRequestPdaInput.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using DocumentFormat.OpenXml.Wordprocessing;
+using Win_in.Sfs.Shared.Domain;
+using Win_in.Sfs.Shared.Domain.Shared;
+
+namespace Win_in.Sfs.Wms.Store.Application.Contracts;
+public class PurchaseReturnRequestPdaInput : SfsStoreDetailWithLotPackingQtyLocationStatusInputBase, IHasPoLine
+{
+ ///
+ /// 收货单号
+ ///
+ [Display(Name = "收货单号")]
+ public string RpNumber { get; set; }
+
+ ///
+ /// 发货单号
+ ///
+ [Display(Name = "发货单号")]
+ public string AsnNumber { get; set; }
+
+ ///
+ /// 订单号
+ ///
+ [Display(Name = "订单号")]
+ public string PoNumber { get; set; }
+
+ ///
+ /// 供应商代码
+ ///
+ [Display(Name = "供应商代码")]
+ public string SupplierCode { get; set; }
+
+ ///
+ /// 退货类型
+ ///
+ [Display(Name = "退货类型")]
+ public EnumPurchaseReturnType ReturnType { get; set; } = EnumPurchaseReturnType.AfterPuton;
+
+ ///
+ /// 订单行
+ ///
+ [Display(Name = "订单行")]
+ public string PoLine { get; set; }
+
+ ///
+ /// 供应商包装
+ ///
+ [Display(Name = "供应商包装")]
+ public decimal SupplierPackQty { get; set; }
+
+}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
index 4632ad53d..4b033f9bc 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
@@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Domain.Entities;
+using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Label.Domain;
@@ -77,6 +78,24 @@ public class PurchaseReturnRequestAppService :
return dto;
}
+ ///
+ /// 【创建】采购退货申请(批量)
+ ///
+ ///
+ ///
+ [HttpPost("create-many")]
+ public async Task> CreateManyAsync(List inputs)
+ {
+ var entitys = ObjectMapper.Map< List, List< PurchaseReturnRequest> >(inputs);
+
+ await _purchaseReturnRequestManager.CreateManyAsync(entitys).ConfigureAwait(false);
+
+ var dto = ObjectMapper.Map< List, List< PurchaseReturnRequestDTO> >(entitys);
+ return dto;
+ }
+
+
+
[HttpPost("check-status")]
public virtual async Task CheckStatusAsync(string number)
{
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAutoMapperProfile.cs
index 52ac6afb3..75841ab08 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAutoMapperProfile.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAutoMapperProfile.cs
@@ -20,7 +20,7 @@ public partial class StoreApplicationAutoMapperProfile : Profile
.Ignore(x => x.TenantId)
.Ignore(x => x.Number)
.Ignore(x => x.Id);
-
+ CreateMap();
CreateMap()
.Ignore(x => x.ReturnType)
.Ignore(x => x.ReturnTime)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReturnRequests/PurchaseReturnRequestManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReturnRequests/PurchaseReturnRequestManager.cs
index 1ae7436ae..6db0da0ca 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReturnRequests/PurchaseReturnRequestManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/PurchaseReturnRequests/PurchaseReturnRequestManager.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
+using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Domain;
@@ -15,7 +16,25 @@ public class PurchaseReturnRequestManager : SfsStoreRequestManagerBase> CreateManyAsync(List entities)
+ {
+ var results = new List();
+ foreach (var entity in entities)
+ {
+ entity.SetIdAndNumberWithDetails(GuidGenerator, await GenerateNumberAsync(typeof(PurchaseReturnRequest).Name, entity.ActiveDate).ConfigureAwait(false));
+ PurchaseReturnRequest result;
+ if (entity.AutoSubmit)
+ {
+ result = await SubmitAsync(entity).ConfigureAwait(false);
+ }
+ else
+ {
+ result = await Repository.InsertAsync(entity).ConfigureAwait(false);
+ }
+ results.Add(result);
+ }
+ return entities;
+ }
///
/// 执行导入
///