From 6e986db93308ea11620c0603cd5958255f5e1b61 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周日, 11 5月 2025 10:16:00 +0800
Subject: [PATCH] 再优化一版

---
 PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs |  193 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 177 insertions(+), 16 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..8d564bd4 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
@@ -1,13 +1,23 @@
+using Ao.Lang;
+using AutoMapper.Internal.Mappers;
 using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
 using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
+using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
+using CMS.Plugin.PipeLineLems.Application.Implements;
+using CMS.Plugin.PipeLineLems.Domain.WorkPlan;
+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))]
@@ -16,29 +26,180 @@
     [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")]
     public class WorkPlanController : ControllerBase
     {
+        private readonly IWorkPlanAppService _workPlanAppService;
 
-
-        /// <summary>
-        /// Initializes a new instance of the <see cref="TestEntityNameController"/> class.
-        /// </summary>
-        /// <param name="testentitynameAppService">The testentityname application service.</param>
-        public WorkPlanController()
-        {
-
-        }
 
         /// <summary>
         /// 鑾峰彇鐢熶骇璁″垝.
         /// </summary>
         /// <param name="input">鏍囪瘑绗�.</param>
         /// <returns></returns>
-        [HttpGet]
-        public virtual Task GetWorkPlanAsync([FromQuery] List<WorkPlanInput> input)
+        [HttpPost]
+        [Route("GetWorkPlanByAps")]
+        public virtual async Task<MesOrderResponse> CreateWorkPlanByApsAsync([FromBody] List<WorkPlanInput> input)
         {
-            // 鍐呴儴涓氬姟閫昏緫鏆傛椂涓虹┖
-            return null;
+            return await _workPlanAppService.CreatebyApsAsync(input);
         }
 
+        /// <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