出库信息导出

This commit is contained in:
18942506660
2024-04-23 11:15:42 +08:00
parent 7f110d3dfd
commit 1cfe4e0c93
11 changed files with 303 additions and 10 deletions

View File

@@ -22,6 +22,7 @@ using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Services.Public;
using WMS.Web.Domain.Values;
using WMS.Web.Domain.Values.Single;
using Microsoft.Extensions.DependencyInjection;
namespace WMS.Web.Domain.Services
{
@@ -31,22 +32,24 @@ namespace WMS.Web.Domain.Services
public class OutStockTaskService : IOutStockTaskService
{
private readonly IMapper _mapper;
private readonly IErpService _erpService;
private IErpService _erpService;
private readonly ILoginService _loginService;
private readonly IBasicsRepositories _transactionRepositories;
private readonly IOutStockRepositories _outStockRepositories;
private readonly IOutStockTaskRepositories _outStockTaskRepositories;
private IOutStockRepositories _outStockRepositories;
private IOutStockTaskRepositories _outStockTaskRepositories;
private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories;
private readonly RedisClientService _redisClientService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
private readonly ISingleDataService _singleDataService;
private readonly IBoxRepositories _boxRepositories;
private readonly IExportExcelService _exportExcelService;
private readonly IServiceScopeFactory _serviceScopeFactory;
public OutStockTaskService(IMapper mapper, IErpService erpService, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories,
RedisClientService redisClientService, IErpBasicDataExtendService erpBasicDataExtendService,
ISingleDataService singleDataService, IBoxRepositories boxRepositories)
ISingleDataService singleDataService, IBoxRepositories boxRepositories, IExportExcelService exportExcelService, IServiceScopeFactory serviceScopeFactory)
{
_mapper = mapper;
_erpService = erpService;
@@ -59,6 +62,8 @@ namespace WMS.Web.Domain.Services
_erpBasicDataExtendService = erpBasicDataExtendService;
_singleDataService = singleDataService;
_boxRepositories = boxRepositories;
_exportExcelService = exportExcelService;
_serviceScopeFactory = serviceScopeFactory;
}
/// <summary>
@@ -454,8 +459,15 @@ namespace WMS.Web.Domain.Services
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<Result<OutStockTaskInfoResponse>> GetInfo(int id, LoginInDto loginInfo)
public async Task<Result<OutStockTaskInfoResponse>> GetInfo(int id, LoginInDto loginInfo, IServiceScope scope = null)
{
if (scope == null)
{
_outStockTaskRepositories = scope.ServiceProvider.GetRequiredService<IOutStockTaskRepositories>();
_outStockRepositories = scope.ServiceProvider.GetRequiredService<IOutStockRepositories>();
_erpService = scope.ServiceProvider.GetRequiredService<IErpService>();
}
var entity = await _outStockTaskRepositories.Get(id);
if (entity == null)
return Result<OutStockTaskInfoResponse>.ReFailure(ResultCodes.OutStockTaskNoData);
@@ -483,7 +495,8 @@ namespace WMS.Web.Domain.Services
{
Id = entity.Id,
BillNo = entity.BillNo,
SourceBillNo = string.Join(",", entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo)),
SourceBillNo = string.Join(",", entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo).Distinct()),
SaleBillNo = string.Join(",", entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SaleBillNo).Distinct()),
CreateTime = entity.CreateTime.DateToStringSeconds(),
Status = entity.Status.GetRemark(),
Type = entity.Type.GetRemark(),
@@ -499,16 +512,20 @@ namespace WMS.Web.Domain.Services
{
var detail = details.FirstOrDefault(f => f.Id == b.DetailId);
var outStock = outStockList.FirstOrDefault(f => f.Id == detail.Fid);
var m = materials.FirstOrDefault(f => f.MaterialNumber.Equals(detail.MaterialNumber));
OutStockTaskInfoDetailsResponse infoDetail = new OutStockTaskInfoDetailsResponse()
{
BoxBillNo = boxList.FirstOrDefault(f => f.Id == b.BoxId)?.BoxBillNo ?? "",
Qty = b.Qty,
SerialNumbers = string.Join(",", b.SerialNumbers),
SerialNumberList = b.SerialNumbers,
Method = outStock.Method.GetRemark(),
Creator = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, outStock.CreatorId),
CreateTime = outStock.CreateTime.DateToStringSeconds(),
MaterialNumber = detail.MaterialNumber,
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialNumber),
Specifications = m?.Specifications ?? "",
BarCode = m?.BarCode ?? "",
MaterialName = m?.MaterialName ?? "",
AccruedQty = entity.Details.FirstOrDefault(f => f.MaterialNumber == detail.MaterialNumber)?.AccruedQty ?? 0
};
response.Details.Add(infoDetail);
@@ -516,5 +533,65 @@ namespace WMS.Web.Domain.Services
return Result<OutStockTaskInfoResponse>.ReSuccess(response);
}
/// <summary>
/// 导出详情
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public async Task ExportInfo(OperateRequest dto, string fileName, LoginInDto loginInfo)
{
var ids = dto.Ids.Distinct().ToList();
using (var scope = _serviceScopeFactory.CreateScope())
{
List<ExportInfoResponse> list = new List<ExportInfoResponse>();
foreach (var id in ids)
{
var info = await this.GetInfo(id, loginInfo, scope);
if (!info.IsSuccess) continue;
var response = info.Data;
foreach (var d in response.Details)
{
if (d.SerialNumberList == null || d.SerialNumberList.Count() <= 0)
{
list.Add(new ExportInfoResponse()
{
SourceBillNo = response.SourceBillNo,
SaleBillNo = response.SaleBillNo,
ReceiptCustomer = response.ReceiptCustomer,
CreateTime = d.CreateTime,
BoxBillNo = d.BoxBillNo,
Specifications = d.Specifications,
MaterialName = d.MaterialName,
MaterialNumber = d.MaterialNumber,
BarCode = d.BarCode,
SerialNumbers = ""
});
}
else
{
foreach (var s in d.SerialNumberList)
{
list.Add(new ExportInfoResponse()
{
SourceBillNo = response.SourceBillNo,
SaleBillNo = response.SaleBillNo,
ReceiptCustomer = response.ReceiptCustomer,
CreateTime = d.CreateTime,
BoxBillNo = d.BoxBillNo,
Specifications = d.Specifications,
MaterialName = d.MaterialName,
MaterialNumber = d.MaterialNumber,
BarCode = d.BarCode,
SerialNumbers = s
});
}
}
}
}
var _exportExcelService = scope.ServiceProvider.GetRequiredService<IExportExcelService>();
await _exportExcelService.Export(list, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTaskInfo);
}
}
}
}