diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 663fedcc..208c24cc 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs index 5e7c1284..f522e1c8 100644 --- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs @@ -88,6 +88,29 @@ namespace WMS.Web.Api.Controllers return Task.FromResult(Result.ReSuccess(res)); } + /// + /// 导出详情 + /// + /// + /// + [HttpPost] + [Route("ExportInfo")] + public Task> ExportInfo(OperateRequest dto) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null) + return Task.FromResult(Result.ReFailure(ResultCodes.Token_Invalid_Error)); + string fileName = FileDownLoadOrderType.OutStockTaskInfo.GetRemark() + loginInfo.UserInfo.CompanyId + DateTime.Now.DateToStringSeconds() + ".xlsx"; + string res = _option.Url + fileName; + + Task.Run(async () => + { + //await _exportExcelService.ExportList(dto, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTask); + await _outStockTaskService.ExportInfo(dto, fileName, loginInfo); + }); + + return Task.FromResult(Result.ReSuccess(res)); + } /// /// 作废 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index e483d604..56d984d6 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -471,6 +471,13 @@ + + + 导出详情 + + + + 作废 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 3e653133..aa105570 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -4744,6 +4744,61 @@ 序列号集 + + + 出库单导出详情 + + + + + 来源单号 + + + + + 销售订单号 + + + + + 出库时间 + + + + + 客户 + + + + + 箱号 + + + + + 物料规格型号 + + + + + 物料名称 + + + + + 物料编码 + + + + + 物料69条码 + + + + + 序列号 + + 根据单号搜索出库单任务信息 @@ -4824,6 +4879,21 @@ 出库任务单对应出库明细 + + + 物料名称 + + + + + 物料69条码 + + + + + 序列号(数组) + + 物料编码 @@ -4889,6 +4959,11 @@ 来源单号 + + + 销售订单号 + + 发货组织 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 511d4777..54a490d3 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -4192,13 +4192,20 @@ - + 查询出库任务单详情 + + + 导出详情 + + + + 单点数据返回服务接口 @@ -5441,13 +5448,20 @@ - + 获取出库任务单详情 + + + 导出详情 + + + + 同步erp基础数据 @@ -6596,6 +6610,11 @@ 出入库回退上下架 + + + 出库信息 + + 入库状态 diff --git a/src/WMS.Web.Core/Dto/OutStockTask/ExportInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/ExportInfoResponse.cs new file mode 100644 index 00000000..76817fb7 --- /dev/null +++ b/src/WMS.Web.Core/Dto/OutStockTask/ExportInfoResponse.cs @@ -0,0 +1,64 @@ +using Npoi.Mapper.Attributes; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.OutStockTask +{ + /// + /// 出库单导出详情 + /// + public class ExportInfoResponse + { + /// + /// 来源单号 + /// + [Column("来源单号")] + public string SourceBillNo { get; set; } + /// + /// 销售订单号 + /// + [Column("销售订单号")] + public string SaleBillNo { get; set; } + /// + /// 出库时间 + /// + [Column("销售出库时间")] + public string CreateTime { get; set; } + /// + /// 客户 + /// + [Column("客户")] + public string ReceiptCustomer { get; set; } + /// + /// 箱号 + /// + [Column("箱号")] + public string BoxBillNo { get; set; } + /// + /// 物料规格型号 + /// + [Column("规格型号")] + public string Specifications { get; set; } + /// + /// 物料名称 + /// + [Column("物料名称")] + public string MaterialName { get; set; } + /// + /// 物料编码 + /// + [Column("物料编码")] + public string MaterialNumber { get; set; } + /// + /// 物料69条码 + /// + [Column("EAN 69码")] + public string BarCode { get; set; } + /// + /// 序列号 + /// + [Column("序列号")] + public string SerialNumbers { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs index 2b498e7f..14477997 100644 --- a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs +++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs @@ -9,6 +9,18 @@ namespace WMS.Web.Core.Dto.OutStockTask /// public class OutStockTaskInfoDetailsResponse { + /// + /// 物料名称 + /// + public string MaterialName { get; set; } + /// + /// 物料69条码 + /// + public string BarCode { get; set; } + /// + /// 序列号(数组) + /// + public List SerialNumberList { get; set; } = new List(); /// /// 物料编码 /// diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs index ad0e17f6..802febd3 100644 --- a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs +++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs @@ -22,6 +22,10 @@ namespace WMS.Web.Core.Dto.OutStockTask /// public string SourceBillNo { get; set; } /// + /// 销售订单号 + /// + public string SaleBillNo { get; set; } + /// /// 发货组织 /// public string DeliveryOrg { get; set; } diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs index fd1c1314..8880ecc9 100644 --- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs +++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs @@ -7,6 +7,7 @@ using WMS.Web.Core.Dto.Erp.OutStock; using WMS.Web.Core.Dto.Login; using WMS.Web.Core.Dto.OutStockTask; using WMS.Web.Core.Internal.Results; +using Microsoft.Extensions.DependencyInjection; namespace WMS.Web.Domain.IService.Public { @@ -62,6 +63,12 @@ namespace WMS.Web.Domain.IService.Public /// /// /// - Task> GetInfo(int id, LoginInDto loginInfo); + Task> GetInfo(int id, LoginInDto loginInfo, IServiceScope scope = null); + /// + /// 导出详情 + /// + /// + /// + Task ExportInfo(OperateRequest dto,string fileName, LoginInDto loginInfo); } } diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index e754b195..8686cfc4 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -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; } /// @@ -454,8 +459,15 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task> GetInfo(int id, LoginInDto loginInfo) + public async Task> GetInfo(int id, LoginInDto loginInfo, IServiceScope scope = null) { + if (scope == null) + { + _outStockTaskRepositories = scope.ServiceProvider.GetRequiredService(); + _outStockRepositories = scope.ServiceProvider.GetRequiredService(); + _erpService = scope.ServiceProvider.GetRequiredService(); + } + var entity = await _outStockTaskRepositories.Get(id); if (entity == null) return Result.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.ReSuccess(response); } + /// + /// 导出详情 + /// + /// + /// + public async Task ExportInfo(OperateRequest dto, string fileName, LoginInDto loginInfo) + { + var ids = dto.Ids.Distinct().ToList(); + using (var scope = _serviceScopeFactory.CreateScope()) + { + List list = new List(); + 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(); + await _exportExcelService.Export(list, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTaskInfo); + } + } } } diff --git a/src/WMS.Web.Domain/Values/FileDownLoadOrderType.cs b/src/WMS.Web.Domain/Values/FileDownLoadOrderType.cs index c947b840..33b56314 100644 --- a/src/WMS.Web.Domain/Values/FileDownLoadOrderType.cs +++ b/src/WMS.Web.Domain/Values/FileDownLoadOrderType.cs @@ -65,5 +65,10 @@ namespace WMS.Web.Domain.Values /// [EnumRemark("出入库回退上下架")] BackRecord = 11, + /// + /// 出库信息 + /// + [EnumRemark("出库信息")] + OutStockTaskInfo = 12, } }