From bd5c3cb9161c8365b319705f55157b1a444dfb2c Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周日, 18 5月 2025 10:07:27 +0800
Subject: [PATCH] 增加方法
---
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