From 91030ca8300557a1e03e17fb34167c16577aad45 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周一, 12 5月 2025 11:46:16 +0800 Subject: [PATCH] 优化代码 --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs | 184 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 167 insertions(+), 17 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs index efd9c7f..22406bb 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs @@ -1,14 +1,21 @@ +using Ao.Lang; using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +using CMS.Framework.AspNetCore.Users; using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; using CMS.Plugin.PipeLineLems.Application.Contracts.Services; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using MiniExcelLibs; using System.Reflection; +using Volo.Abp; +using Volo.Abp.Application.Dtos; namespace CMS.Plugin.PipeLineLems.Controller { - /// <summary> - /// 浣滀笟璁″垝鏈嶅姟 - /// </summary> + /// <summary> + /// 浣滀笟璁″垝琛ㄦ湇鍔� + /// </summary> [ApiController] [TypeFilter(typeof(CMSLanguageFilter))] [TypeFilter(typeof(CMSUowActionFilter))] @@ -17,28 +24,171 @@ [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")] public class WorkPlanController : ControllerBase { + private readonly IWorkPlanAppService _workPlanAppService; + private readonly ICurrentUser _currentUser; - private readonly IMesAppService _mesAppService; - /// <summary> - /// Initializes a new instance of the <see cref="TestEntityNameController"/> class. - /// </summary> - /// <param name="testentitynameAppService">The testentityname application service.</param> - public WorkPlanController(IMesAppService mesAppService) + /// <summary> + /// Initializes a new instance of the <see cref="WorkPlanController"/> class. + /// </summary> + /// <param name="workPlanAppService">The workPlan application service.</param> + public WorkPlanController(IWorkPlanAppService workPlanAppService, ICurrentUser currentUser) { - _mesAppService = mesAppService; + _workPlanAppService = workPlanAppService; + _currentUser = currentUser; } - /// <summary> - /// 鑾峰彇鐢熶骇璁″垝. - /// </summary> - /// <param name="input">鏍囪瘑绗�.</param> - /// <returns></returns> + /// <summary> + /// 鑾峰彇浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpGet] + [Route("{id}")] + public virtual Task<WorkPlanDto> GetAsync(Guid id) + { + return _workPlanAppService.GetAsync(id); + } + + /// <summary> + /// 鍒嗛〉鑾峰彇浣滀笟璁″垝琛ㄧ殑鍒楄〃. + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + [HttpGet] + [Route("Page")] + public virtual Task<PagedResultDto<WorkPlanDto>> GetListAsync([FromQuery] GetWorkPlanInput input) + { + return _workPlanAppService.GetListAsync(input); + } + + /// <summary> + /// 鍒涘缓浣滀笟璁″垝琛� + /// </summary> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] [HttpPost] - public virtual async Task<MesOrderResponse> GetWorkPlanAsync([FromBody] List<WorkPlanInput> input) + public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input) { - return await _mesAppService.CreateAsync(input); + return _workPlanAppService.CreateAsync(input); } + /// <summary> + /// 鏇存柊浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <param name="input">杈撳叆.</param> + /// <returns></returns> + //[Authorize] + [HttpPut] + [Route("{id}")] + public virtual Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input) + { + return _workPlanAppService.UpdateAsync(id, input); + } + /// <summary> + /// 鍏嬮殕浣滀笟璁″垝琛� + /// </summary> + /// <param name="ids">Id闆嗗悎.</param> + /// <returns></returns> + //[Authorize] + [HttpPost] + [Route("Clone")] + public virtual Task<List<WorkPlanDto>> CloneAsync([FromBody] IEnumerable<Guid> ids) + { + return _workPlanAppService.CloneAsync(ids); + } + + /// <summary> + /// 鍒犻櫎浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + return _workPlanAppService.DeleteAsync(id); + } + + /// <summary> + /// 鎵归噺鍒犻櫎浣滀笟璁″垝琛� + /// </summary> + /// <param name="ids">The ids.</param> + /// <returns></returns> + //[Authorize] + [HttpDelete] + public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) + { + return _workPlanAppService.DeleteManyAsync(ids); + } + + /// <summary> + /// 璋冩暣鎺掑簭浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">鏍囪瘑绗�.</param> + /// <returns></returns> + [HttpPut] + [Route("{id}/AdjustSort/{sort}")] + public virtual Task AdjustSortAsync(Guid id, int sort) + { + return _workPlanAppService.AdjustSortAsync(id, sort); + } + + /// <summary> + /// 瀵煎叆浣滀笟璁″垝琛� + /// </summary> + /// <returns></returns> + [Authorize] + [HttpPost] + [Route("Import")] + public virtual async Task<IActionResult> ImportAsync(IFormFile file) + { + using var stream = new MemoryStream(); + await file.CopyToAsync(stream); + stream.Seek(0L, SeekOrigin.Begin); + + var userAccount = _currentUser.UserAccount; + var userId = _currentUser.UserId; + + var sheetNames = stream.GetSheetNames(); + var workPlanRows = sheetNames.Contains("閰嶇疆") ? MiniExcel.Query<WorkPlansImportModel.WorkPlanImportModel>(stream, sheetName: "閰嶇疆").ToList() : new(); + + if (!workPlanRows.Any()) + { + throw new UserFriendlyException("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); + } + + await _workPlanAppService.ImportAsync(new WorkPlansImportModel + { + WorkPlans = workPlanRows, + }, userId, userAccount); + + return Ok(); + } + + /// <summary> + /// 瀵煎嚭浣滀笟璁″垝琛� + /// </summary> + /// <returns></returns> + [HttpGet] + [Route("Export")] + public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWorkPlanInput input) + { + input.MaxResultCount = int.MaxValue; + var exportData = await _workPlanAppService.ExportAsync(input); + var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WorkPlan瀵煎嚭妯℃澘.xlsx"); + if (!System.IO.File.Exists(templatePath)) + { + templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WorkPlan瀵煎嚭妯℃澘.xlsx"); + } + + var memoryStream = new MemoryStream(); + await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets); + memoryStream.Seek(0L, SeekOrigin.Begin); + return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" }; + } } } -- Gitblit v1.9.3