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 |  308 +++++++++++++++++++++++++++-----------------------
 1 files changed, 167 insertions(+), 141 deletions(-)

diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
index e792517..7e797c8 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
@@ -1,188 +1,214 @@
-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 
-{ 
+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> 
-    [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; 
- 
+    [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;
+        private readonly ICurrentUser _currentUser;
+
         /// <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; 
-        } 
- 
+        public WorkPlanController(IWorkPlanAppService workPlanAppService, ICurrentUser currentUser)
+        {
+            _workPlanAppService = workPlanAppService;
+            _currentUser = currentUser;
+        }
+
         /// <summary> 
         /// 鑾峰彇浣滀笟璁″垝琛� 
         /// </summary> 
-        /// <param name="id">鏍囪瘑绗�.</param> 
+        /// <param name="id">涓婚敭ID</param> 
         /// <returns></returns> 
-        [HttpGet] 
-        [Route("{id}")] 
-        public virtual Task<WorkPlanDto> GetAsync(Guid id) 
-        { 
-            return _workPlanAppService.GetAsync(id); 
-        } 
- 
+        [HttpGet]
+        [Route("{id}")]
+        public virtual Task<WorkPlanDto> GetAsync(Guid id)
+        {
+            return _workPlanAppService.GetAsync(id);
+        }
+
         /// <summary> 
         /// 鍒嗛〉鑾峰彇浣滀笟璁″垝琛ㄧ殑鍒楄〃. 
         /// </summary> 
-        /// <param name="input">杈撳叆.</param> 
+        /// <param name="input">鏌ヨ鍙傛暟</param> 
         /// <returns></returns> 
-        [HttpGet] 
-        [Route("Page")] 
-        public virtual Task<PagedResultDto<WorkPlanDto>> GetListAsync([FromQuery] GetWorkPlanInput input) 
-        { 
-            return _workPlanAppService.GetListAsync(input); 
-        } 
- 
+        [HttpGet]
+        [Route("Page")]
+        public virtual Task<PagedResultDto<WorkPlanDto>> GetListAsync([FromQuery] GetWorkPlanInput input)
+        {
+            return _workPlanAppService.GetListAsync(input);
+        }
+
         /// <summary> 
         /// 鍒涘缓浣滀笟璁″垝琛� 
         /// </summary> 
-        /// <param name="input">杈撳叆.</param> 
+        /// <param name="input">鍒涘缓鍙傛暟</param> 
         /// <returns></returns> 
-        //[Authorize] 
-        [HttpPost] 
-        public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input) 
-        { 
-            return _workPlanAppService.CreateAsync(input); 
-        } 
- 
+        [Authorize]
+        [HttpPost]
+        public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
+        {
+            input.CreatorName = _currentUser.UserAccount;//鍒涘缓浜� 
+            return _workPlanAppService.CreateAsync(input);
+        }
+
         /// <summary> 
         /// 鏇存柊浣滀笟璁″垝琛� 
         /// </summary> 
-        /// <param name="id">鏍囪瘑绗�.</param> 
-        /// <param name="input">杈撳叆.</param> 
+        /// <param name="id">涓婚敭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); 
-        } 
- 
+        [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> 
+        /// <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); 
-        } 
- 
+        [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">鏍囪瘑绗�.</param> 
+        /// <param name="id">涓婚敭ID</param> 
         /// <returns></returns> 
-        //[Authorize] 
-        [HttpDelete] 
-        [Route("{id}")] 
-        public virtual Task DeleteAsync(Guid id) 
-        { 
-            return _workPlanAppService.DeleteAsync(id); 
-        } 
- 
+        [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">The ids.</param> 
+        /// <param name="ids">涓婚敭ID闆嗗悎</param> 
         /// <returns></returns> 
-        //[Authorize] 
-        [HttpDelete] 
-        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids) 
-        { 
-            return _workPlanAppService.DeleteManyAsync(ids); 
-        } 
- 
+        [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">鏍囪瘑绗�.</param> 
+        /// <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); 
-        } 
- 
+        [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(); 
-        } 
- 
+        [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" }; 
-        } 
-    } 
-} 
+        [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