From 9796651f30deb9eee38c9d846255b293fbba15eb Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周五, 16 5月 2025 09:26:55 +0800 Subject: [PATCH] 333 --- PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs | 206 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 188 insertions(+), 18 deletions(-) diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs index f329482..7e797c8 100644 --- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs +++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs @@ -1,13 +1,22 @@ +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; +using CmsQueryExtensions.Entitys; namespace CMS.Plugin.PipeLineLems.Controller { - /// <summary> - /// 浣滀笟璁″垝鏈嶅姟 - /// </summary> + /// <summary> + /// 浣滀笟璁″垝琛ㄦ湇鍔� + /// </summary> [ApiController] [TypeFilter(typeof(CMSLanguageFilter))] [TypeFilter(typeof(CMSUowActionFilter))] @@ -16,29 +25,190 @@ [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")] public class WorkPlanController : ControllerBase { + private readonly IWorkPlanAppService _workPlanAppService; + private readonly ICurrentUser _currentUser; - - /// <summary> - /// Initializes a new instance of the <see cref="TestEntityNameController"/> class. - /// </summary> - /// <param name="testentitynameAppService">The testentityname application service.</param> - public WorkPlanController() + /// <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) { - + _workPlanAppService = workPlanAppService; + _currentUser = currentUser; } - /// <summary> - /// 鑾峰彇鐢熶骇璁″垝. - /// </summary> - /// <param name="input">鏍囪瘑绗�.</param> - /// <returns></returns> + /// <summary> + /// 鑾峰彇浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">涓婚敭ID</param> + /// <returns></returns> [HttpGet] - public virtual Task GetWorkPlanAsync([FromQuery] List<WorkPlanInput> input) + [Route("{id}")] + public virtual Task<WorkPlanDto> GetAsync(Guid id) { - // 鍐呴儴涓氬姟閫昏緫鏆傛椂涓虹┖ - return null; + 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) + { + input.CreatorName = _currentUser.UserAccount;//鍒涘缓浜� + return _workPlanAppService.CreateAsync(input); + } + + /// <summary> + /// 鏇存柊浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">涓婚敭ID</param> + /// <param name="input">鏇存柊鍙傛暟</param> + /// <returns></returns> + [Authorize] + [HttpPut] + [Route("{id}")] + public virtual Task<WorkPlanDto> UpdateAsync(Guid id, WorkPlanUpdateDto input) + { + input.LastModifierName = _currentUser.UserAccount;//淇敼浜� + 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) + { + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = _currentUser.UserAccount, + UserId = _currentUser.UserId + }; + return _workPlanAppService.CloneAsync(ids); + } + + /// <summary> + /// 鍒犻櫎浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">涓婚敭ID</param> + /// <returns></returns> + [Authorize] + [HttpDelete] + [Route("{id}")] + public virtual Task DeleteAsync(Guid id) + { + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = _currentUser.UserAccount, + UserId = _currentUser.UserId + }; + return _workPlanAppService.DeleteAsync(id);//閫昏緫鍒犻櫎 + } + + /// <summary> + /// 鎵归噺鍒犻櫎浣滀笟璁″垝琛� + /// </summary> + /// <param name="ids">涓婚敭ID闆嗗悎</param> + /// <returns></returns> + [Authorize] + [HttpDelete] + public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) + { + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = _currentUser.UserAccount, + UserId = _currentUser.UserId + }; + return _workPlanAppService.DeleteManyAsync(ids);//閫昏緫鍒犻櫎 + } + + /// <summary> + /// 璋冩暣鎺掑簭浣滀笟璁″垝琛� + /// </summary> + /// <param name="id">涓婚敭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("璇锋鏌ュ鍏ョ殑琛ㄦ牸"); + } + + MyCurrentUser myCurrentUser = new MyCurrentUser() + { + UserAccount = _currentUser.UserAccount, + UserId = _currentUser.UserId + }; + await _workPlanAppService.ImportAsync(new WorkPlansImportModel + { + WorkPlans = workPlanRows, + }, myCurrentUser); + + 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