diff --git a/ds-wms-service/DS.WMS.Core/Code/Dtos/FeeCodeExcelImportReq.cs b/ds-wms-service/DS.WMS.Core/Code/Dtos/FeeCodeExcelImportReq.cs new file mode 100644 index 00000000..f0b56b90 --- /dev/null +++ b/ds-wms-service/DS.WMS.Core/Code/Dtos/FeeCodeExcelImportReq.cs @@ -0,0 +1,37 @@ +using DS.Module.Core; +using FluentValidation; +using SqlSugar; + +namespace DS.WMS.Core.Code.Dtos; + +/// +/// 费用代码导入请求实体 +/// +public class FeeCodeExcelImportReq +{ + + /// + /// 费用代码 录入费用是作为检索 + /// + public string Code { get; set; } + /// + /// 费用名称 + /// + public string Name { get; set; } + + /// + /// 费用英文名称 + /// + public string EnName { get; set; } + + + /// + /// 默认币别 + /// + public string DefaultCurrency { get; set; } + + /// + /// 默认计费标准代码 + /// + public string DefaultUnit { get; set; } +} diff --git a/ds-wms-service/DS.WMS.Core/Code/Entity/CodePort.cs b/ds-wms-service/DS.WMS.Core/Code/Entity/CodePort.cs index 2d7aa250..b07de9cf 100644 --- a/ds-wms-service/DS.WMS.Core/Code/Entity/CodePort.cs +++ b/ds-wms-service/DS.WMS.Core/Code/Entity/CodePort.cs @@ -63,7 +63,7 @@ public class CodePort: BaseModel /// /// EDI代码 /// - [SugarColumn(ColumnDescription = "EDI代码", Length = 5,IsNullable = true)] + [SugarColumn(ColumnDescription = "EDI代码", Length = 10,IsNullable = true)] public string EdiCode { get; set; } /// diff --git a/ds-wms-service/DS.WMS.Core/Code/Method/CodeInfoImportService.cs b/ds-wms-service/DS.WMS.Core/Code/Method/CodeInfoImportService.cs index 0316a5d2..38e73444 100644 --- a/ds-wms-service/DS.WMS.Core/Code/Method/CodeInfoImportService.cs +++ b/ds-wms-service/DS.WMS.Core/Code/Method/CodeInfoImportService.cs @@ -4,6 +4,7 @@ using DS.Module.UserModule; using DS.WMS.Core.Code.Dtos; using DS.WMS.Core.Code.Entity; using DS.WMS.Core.Code.Interface; +using DS.WMS.Core.Fee.Entity; using DS.WMS.Core.Op.Dtos; using DS.WMS.Core.Op.Entity; using Microsoft.AspNetCore.Http; diff --git a/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCode.cs b/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCode.cs index 3e855738..1ddbfbda 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCode.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Entity/FeeCode.cs @@ -23,7 +23,7 @@ public class FeeCode : BaseModel /// /// 费用英文名称 /// - [SugarColumn(ColumnDescription = "费用英文名称", Length = 50)] + [SugarColumn(ColumnDescription = "费用英文名称", Length = 50, IsNullable = true)] public string EnName { get; set; } /// /// 币别Id diff --git a/ds-wms-service/DS.WMS.Core/Fee/Interface/IFeeCodeService.cs b/ds-wms-service/DS.WMS.Core/Fee/Interface/IFeeCodeService.cs index 0dc95a66..053076b0 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Interface/IFeeCodeService.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Interface/IFeeCodeService.cs @@ -1,6 +1,7 @@ using DS.Module.Core; using DS.WMS.Core.Fee.Dtos; using DS.WMS.Core.Sys.Dtos; +using Microsoft.AspNetCore.Http; namespace DS.WMS.Core.Fee.Interface; @@ -27,4 +28,12 @@ public interface IFeeCodeService /// /// DataResult GetFeeCodeInfo(string id); + + + /// + /// 按Excel导入费用信息 + /// + /// + /// + public Task> ImportFeeCodeByExcel(IFormFile file); } \ No newline at end of file diff --git a/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCodeService.cs b/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCodeService.cs index fb135a30..1fa607a2 100644 --- a/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCodeService.cs +++ b/ds-wms-service/DS.WMS.Core/Fee/Method/FeeCodeService.cs @@ -9,6 +9,9 @@ using Microsoft.Extensions.DependencyInjection; using SqlSugar; using Mapster; using DS.Module.Core.Extensions; +using DS.WMS.Core.Code.Dtos; +using Microsoft.AspNetCore.Http; +using MiniExcelLibs; namespace DS.WMS.Core.Fee.Method { @@ -94,5 +97,77 @@ namespace DS.WMS.Core.Fee.Method .First(); return DataResult.Success(data, MultiLanguageConst.DataQuerySuccess); } + + /// + /// 按Excel导入费用信息 + /// + /// + /// + public async Task> ImportFeeCodeByExcel(IFormFile file) + { + //未上传文件 + if (file == null || file.Length == 0) + { + return await Task.FromResult(DataResult.Failed("请上传Excel!")); + } + var formFile = file; + //DataResult api_Result = new Api_Result(); + //获取文件名 + var fileName = formFile.FileName; + // 获取文件后缀 + var fileExtension = Path.GetExtension(fileName); + // 判断后缀是否是xlsx或者xls + if (fileExtension != ".xlsx" && fileExtension != ".xls") + { + return DataResult.Failed("文件格式错误"); + } + var length = formFile.Length; + if (length > 1024 * 1024 * 10) + { + return DataResult.Failed("文件大小不能超过10M"); + } + var tenantDb = saasService.GetBizDbScopeById(user.TenantId); + // MemoryStream 内存流 在内存当中创建一个流(开辟空间) + using (var stream = new MemoryStream()) + { + //将文件写入内存流 + formFile.CopyTo(stream); + //将流的位置归零 + stream.Position = 0; + //将内存流转成List集合 + var list = await stream.QueryAsync(); + var fees = new List(); + foreach (var item in list) + { + var unit = string.Empty; + var unitName = string.Empty; + if (item.DefaultUnit == "TEU") + { + unit = "TEU"; + unitName = "箱型"; + } + else if (item.DefaultUnit == "BILL") + { + unit = "P"; + unitName = "单票"; + } + var fee = new FeeCode() + { + Name = item.Name, + EnName = item.EnName, + Code = item.Code, + DefaultCurrency = item.DefaultCurrency.IsNull() ? "CNY": item.DefaultCurrency, + IsSea = true, + DefaultUnit = unit, + DefaultUnitName = unitName, + }; + fees.Add(fee); + } + await tenantDb.Insertable(fees).ExecuteCommandAsync(); + + return await Task.FromResult(DataResult.Failed("导入成功!", MultiLanguageConst.DataImportSuccess)); + + } + } } } diff --git a/ds-wms-service/DS.WMS.FeeApi/Controllers/FeeCodeController.cs b/ds-wms-service/DS.WMS.FeeApi/Controllers/FeeCodeController.cs index c71900e6..9f18481c 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Controllers/FeeCodeController.cs +++ b/ds-wms-service/DS.WMS.FeeApi/Controllers/FeeCodeController.cs @@ -62,5 +62,18 @@ namespace DS.WMS.FeeApi.Controllers var res = _invokeService.GetFeeCodeInfo(id); return res; } + + /// + /// 按Excel导入费用代码信息 + /// + /// Excel文件 + /// + [HttpPost] + [Route("ImportFeeCodeByExcel")] + public async Task> ImportFeeCodeByExcel(IFormFile file) + { + var res = await _invokeService.ImportFeeCodeByExcel(file); + return res; + } } }