出库信息导出
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user