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