diff --git a/Myshipping.Application/Entity/BookingPrintTemplate.cs b/Myshipping.Application/Entity/BookingPrintTemplate.cs index 96c0aab1..22e23755 100644 --- a/Myshipping.Application/Entity/BookingPrintTemplate.cs +++ b/Myshipping.Application/Entity/BookingPrintTemplate.cs @@ -39,5 +39,9 @@ namespace Myshipping.Application.Entity /// 分单 /// public bool IsSub { get; set; } + /// + /// 显示名称 + /// + public string DisplayName { get; set; } } } \ No newline at end of file diff --git a/Myshipping.Application/Myshipping.Application.xml b/Myshipping.Application/Myshipping.Application.xml index 8a4e7f28..39404dd6 100644 --- a/Myshipping.Application/Myshipping.Application.xml +++ b/Myshipping.Application/Myshipping.Application.xml @@ -3446,6 +3446,11 @@ 分单 + + + 显示名称 + + 订舱打印模板权限表 @@ -9250,18 +9255,26 @@ - 增加订舱打印模板 + 增加订舱打印模板(准备作废) - 更新订舱打印模板 + 更新订舱打印模板(准备作废) + + + 保存订舱打印模板(新增或修改) + + + + + 删除订舱打印模板 @@ -9296,6 +9309,13 @@ + + + 删除打印模板权限 + + + + 订舱打印模板输入参数 @@ -9303,12 +9323,12 @@ - 模板类型 + 模板类型(准备作废) - 类型名称 + 类型名称(准备作废) @@ -9323,12 +9343,27 @@ - 主单 + 主单(准备作废) - 分单 + 分单(准备作废) + + + + + 显示名称 + + + + + 分类代码 + + + + + 分类名称 @@ -9346,6 +9381,11 @@ 主键Id + + + 主键Id + + 订舱打印模板获取(删除)输入参数 @@ -9474,6 +9514,26 @@ + + + 获取excel模板 + + 模板名称 + + + + + 获取excel模板详情 + + 模板名称 + + + + + 导出excel + + + 订舱模板输入参数 diff --git a/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs b/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs index 8086c8d1..38709039 100644 --- a/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs +++ b/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs @@ -80,7 +80,7 @@ namespace Myshipping.Application /// - /// 增加订舱打印模板 + /// 增加订舱打印模板(准备作废) /// /// /// @@ -148,7 +148,7 @@ namespace Myshipping.Application /// - /// 更新订舱打印模板 + /// 更新订舱打印模板(准备作废) /// /// /// @@ -209,6 +209,81 @@ namespace Myshipping.Application await _rep.UpdateAsync(entity); } + /// + /// 保存订舱打印模板(新增或修改) + /// + /// + /// + /// + [HttpPost("/BookingPrintTemplate/save")] + public async Task Save(IFormFile file, [FromForm] SaveBookingPrintTemplateInput input) + { + var opt = App.GetOptions(); + if (file != null && file.Length > 0) + { + var fileSuffix = Path.GetExtension(file.FileName).ToLower(); // 文件后缀 + if (!opt.fileType.Contains(fileSuffix)) + { + throw Oops.Bah(BookingErrorCode.BOOK114); + } + } + + BookingPrintTemplate entity = null; + if (input.Id > 0) + { + entity = _rep.AsQueryable().Filter(null, true).First(x => x.Id == input.Id); + input.Adapt(entity); + await _rep.UpdateAsync(entity); + } + else + { + //新增时必须上传文件 + if (file == null || file.Length == 0) + { + throw Oops.Bah(BookingErrorCode.BOOK113); + } + + entity = input.Adapt(); + await _rep.InsertAsync(entity); + } + + if (file != null && file.Length > 0) + { + var originalFilename = file.FileName; // 文件原始名称 + + var dirAbs = string.Empty; + if (string.IsNullOrEmpty(opt.basePath)) + { + dirAbs = Path.Combine(App.WebHostEnvironment.WebRootPath, opt.relativePath); + } + else + { + dirAbs = Path.Combine(opt.basePath, opt.relativePath); + } + + if (!Directory.Exists(dirAbs)) + Directory.CreateDirectory(dirAbs); + + + // 先存库获取Id + var id = YitIdHelper.NextId(); + var fileSuffix = Path.GetExtension(file.FileName).ToLower(); + var fileSaveName = $"{id}{fileSuffix}".ToLower(); + var fileRelaPath = Path.Combine(opt.relativePath, fileSaveName).ToLower(); + var fileAbsPath = Path.Combine(dirAbs, fileSaveName).ToLower(); + using (var stream = File.Create(fileAbsPath)) + { + await file.CopyToAsync(stream); + } + + entity.FileName = originalFilename; + entity.FilePath = fileRelaPath; + await _rep.UpdateAsync(entity); + } + + return entity.Id; + } + /// /// 删除订舱打印模板 /// @@ -290,13 +365,17 @@ namespace Myshipping.Application throw Oops.Bah("未上传正确数据"); } - await _repRight.DeleteAsync(x => x.SysUserId == input.SysUserId); + // await _repRight.DeleteAsync(x => x.SysUserId == input.SysUserId); foreach (var item in input.PrintTemplateId) { - BookingPrinttemplateRight right = new BookingPrinttemplateRight(); - right.SysUserId = input.SysUserId; - right.PrintTemplateId = item; - await _repRight.InsertAsync(right); + var ent = _repRight.FirstOrDefault(x => x.SysUserId == input.SysUserId && x.PrintTemplateId == item); + if (ent==null) { + BookingPrinttemplateRight right = new BookingPrinttemplateRight(); + right.SysUserId = input.SysUserId; + right.PrintTemplateId = item; + await _repRight.InsertAsync(right); + } + } } /// @@ -311,6 +390,7 @@ namespace Myshipping.Application WhereIF(userId != 0, d => d.SysUserId == userId). Select((d, t) => new BookingPrinttemplateDto { + Id=d.Id, PrintTemplateId=t.Id, SysUserId=d.SysUserId, TypeCode = t.TypeCode, @@ -327,5 +407,19 @@ namespace Myshipping.Application } return list; } + + /// + /// 删除打印模板权限 + /// + /// + /// + [HttpGet("/BookingPrintTemplate/DeletePrinttemplateRight")] + public async Task DeletePrinttemplateRight([FromQuery] List Ids) { + + await _repRight.DeleteAsync(x => Ids.Contains(x.Id)); + } + + + } } diff --git a/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrintTemplateInput.cs b/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrintTemplateInput.cs index af8b669b..671d326d 100644 --- a/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrintTemplateInput.cs +++ b/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrintTemplateInput.cs @@ -10,12 +10,12 @@ namespace Myshipping.Application public class BookingPrintTemplateInput { /// - /// 模板类型 + /// 模板类型(准备作废) /// public string TypeCode { get; set; } /// - /// 类型名称 + /// 类型名称(准备作废) /// public virtual string TypeName { get; set; } @@ -30,14 +30,29 @@ namespace Myshipping.Application public string TenantName { get; set; } /// - /// 主单 + /// 主单(准备作废) /// public bool IsMain { get; set; } /// - /// 分单 + /// 分单(准备作废) /// public bool IsSub { get; set; } + /// + /// 显示名称 + /// + public string DisplayName { get; set; } + + /// + /// 分类代码 + /// + public string CateCode { get; set; } + + /// + /// 分类名称 + /// + public virtual string CateName { get; set; } + } /// @@ -60,6 +75,15 @@ namespace Myshipping.Application } + public class SaveBookingPrintTemplateInput : BookingPrintTemplateInput + { + /// + /// 主键Id + /// + public long Id { get; set; } + + } + /// /// 订舱打印模板获取(删除)输入参数 /// diff --git a/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrinttemplateRightDto.cs b/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrinttemplateRightDto.cs index 91c38b09..b99a54c2 100644 --- a/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrinttemplateRightDto.cs +++ b/Myshipping.Application/Service/BookingPrintTemplate/Dto/BookingPrinttemplateRightDto.cs @@ -21,7 +21,7 @@ namespace Myshipping.Application.Service.BookingPrintTemplate.Dto public class BookingPrinttemplateDto { - + public long Id { get; set; } public long PrintTemplateId { get; set; } public long SysUserId { get; set; } public string TypeCode { get; set; } diff --git a/Myshipping.Application/Service/BookingTemplate/BookingTemplateService.cs b/Myshipping.Application/Service/BookingTemplate/BookingTemplateService.cs index f912791a..dbf04010 100644 --- a/Myshipping.Application/Service/BookingTemplate/BookingTemplateService.cs +++ b/Myshipping.Application/Service/BookingTemplate/BookingTemplateService.cs @@ -13,6 +13,8 @@ using Myshipping.Application.Enum; using System.ComponentModel; using System.Collections.Generic; using Myshipping.Application.Service.BookingTemplate.Dto; +using System.IO; +using MiniExcelLibs; namespace Myshipping.Application { @@ -135,12 +137,13 @@ namespace Myshipping.Application } return dic; } + /// /// 新增编辑excel模板 /// /// /// - [HttpGet("/BookingTemplate/AddOrUpdateExcelTemplate")] + [HttpPost("/BookingTemplate/AddOrUpdateExcelTemplate")] public async Task AddOrUpdateExcelTemplate(BookingExcelTemplateDto dto) { if (dto.Id == 0) @@ -149,23 +152,69 @@ namespace Myshipping.Application bookingExcel.Name = dto.Name; bookingExcel.Type = dto.Type; await _excelrep.InsertAsync(bookingExcel); - - - - + foreach (var item in dto.children) + { + var entity = item.Adapt(); + entity.Pid = bookingExcel.Id; + await _excelsubrep.InsertAsync(entity); + } } - else { - - - - - - + else { + var entity = dto.Adapt(); + await _excelrep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + await _excelsubrep.DeleteAsync(x => x.Pid == dto.Id); + foreach (var item in dto.children) + { + var ent = item.Adapt(); + ent.Pid = dto.Id; + await _excelsubrep.InsertAsync(ent); + } } return null; } + /// + /// 获取excel模板 + /// + /// 模板名称 + /// + [HttpGet("/BookingTemplate/BookingExcelTemplateList")] + public async Task BookingExcelTemplateList(string Name) { + return await _excelrep.AsQueryable().WhereIF(!string.IsNullOrWhiteSpace(Name), x => x.Name.Contains(Name)).ToListAsync(); + } + /// + /// 获取excel模板详情 + /// + /// 模板名称 + /// + [HttpGet("/BookingTemplate/BookingExcelTemplateDetailList")] + public async Task BookingExcelTemplateDetailList(long Id) + { + return await _excelsubrep.AsQueryable().Where( x => x.Pid==Id).ToListAsync(); + } + + ///// + ///// 导出excel + ///// + ///// + //[HttpGet("/BookingTemplate/ExportExcel")] + //public async Task ExportExcel() { + // var order = await _repOrder.ToListAsync(); + + // using (MemoryStream ms = new MemoryStream()) + // { + // ms.SaveAs(order); + // ms.Seek(0, SeekOrigin.Begin); + // return await Task.FromResult(new FileStreamResult(ms, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") + // { + // FileDownloadName = "order.xlsx" + // }); + // } + //} + + + diff --git a/Myshipping.Core/Service/DjyVesselInfo/DjyVesselInfoService.cs b/Myshipping.Core/Service/DjyVesselInfo/DjyVesselInfoService.cs index 8b389070..bfcbd3d7 100644 --- a/Myshipping.Core/Service/DjyVesselInfo/DjyVesselInfoService.cs +++ b/Myshipping.Core/Service/DjyVesselInfo/DjyVesselInfoService.cs @@ -34,6 +34,7 @@ namespace Myshipping.Core.Service /// /// /// + [HttpPost("/DjyVesselInfoService/AddOrUpdate")] public async Task AddOrUpdate(DjyVesselInfo dto) { if (dto == null) @@ -56,7 +57,8 @@ namespace Myshipping.Core.Service /// 下拉列表 /// /// - public async Task GetList(string KeyWord, string CarrierID) + [HttpGet("/DjyVesselInfoService/GetList")] + public async Task GetList([FromQuery] string KeyWord, string CarrierID) { //获取船名 List list = await _sysCacheService.GetAllCodeVessel();