From cace264ad9d86a7831099810b079da1141957add Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 07 5月 2025 11:52:44 +0800 Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs | 232 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 188 insertions(+), 44 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..e792517 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs @@ -1,44 +1,188 @@ -using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; -using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan; -using CMS.Plugin.PipeLineLems.Application.Contracts.Services; -using Microsoft.AspNetCore.Mvc; -using System.Reflection; - -namespace CMS.Plugin.PipeLineLems.Controller -{ - /// <summary> - /// 浣滀笟璁″垝鏈嶅姟 - /// </summary> - [ApiController] - [TypeFilter(typeof(CMSLanguageFilter))] - [TypeFilter(typeof(CMSUowActionFilter))] - [TypeFilter(typeof(CMSAuditActionFilter))] - [TypeFilter(typeof(CMSExceptionFilter))] - [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")] - public class WorkPlanController : ControllerBase - { - - 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) - { - _mesAppService = mesAppService; - } - - /// <summary> - /// 鑾峰彇鐢熶骇璁″垝. - /// </summary> - /// <param name="input">鏍囪瘑绗�.</param> - /// <returns></returns> - [HttpPost] - public virtual async Task<MesOrderResponse> GetWorkPlanAsync([FromBody] List<WorkPlanInput> input) - { - return await _mesAppService.CreateAsync(input); - } - - - } -} +using Ao.Lang; +using CMS.Extensions.Abp.AspNetCore.Mvc.Filters; +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> + [ApiController] + [TypeFilter(typeof(CMSLanguageFilter))] + [TypeFilter(typeof(CMSUowActionFilter))] + [TypeFilter(typeof(CMSAuditActionFilter))] + [TypeFilter(typeof(CMSExceptionFilter))] + [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")] + public class WorkPlanController : ControllerBase + { + private readonly IWorkPlanAppService _workPlanAppService; + + /// <summary> + /// Initializes a new instance of the <see cref="WorkPlanController"/> class. + /// </summary> + /// <param name="workPlanAppService">The workPlan application service.</param> + public WorkPlanController(IWorkPlanAppService workPlanAppService) + { + _workPlanAppService = workPlanAppService; + } + + /// <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 Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto 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 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, + }); + + 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