From 413f167eacffa8958341bcdcf7bc97d547664868 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 13 5月 2025 06:13:02 +0800
Subject: [PATCH] 高级查询初步
---
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs | 190 +++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 173 insertions(+), 17 deletions(-)
diff --git a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
index efd9c7f..bc77738 100644
--- a/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
+++ b/PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
@@ -1,14 +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 CmsQueryExtensions.Entitys;
+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))]
@@ -17,28 +25,176 @@
[Route("api/v{version:apiVersion}/PipeLineLems/[controller]")]
public class WorkPlanController : ControllerBase
{
+ private readonly IWorkPlanAppService _workPlanAppService;
+ private readonly ICurrentUser _currentUser;
- private readonly IMesAppService _mesAppService;
- /// <summary>
- /// Initializes a new instance of the <see cref="TestEntityNameController"/> class.
- /// </summary>
- /// <param name="testentitynameAppService">The testentityname application service.</param>
- public WorkPlanController(IMesAppService mesAppService)
+ /// <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)
{
- _mesAppService = mesAppService;
+ _workPlanAppService = workPlanAppService;
+ _currentUser = currentUser;
}
- /// <summary>
- /// 鑾峰彇鐢熶骇璁″垝.
- /// </summary>
- /// <param name="input">鏍囪瘑绗�.</param>
- /// <returns></returns>
+ /// <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 async Task<MesOrderResponse> GetWorkPlanAsync([FromBody] List<WorkPlanInput> input)
+ public virtual Task<WorkPlanDto> CreateAsync(WorkPlanCreateDto input)
{
- return await _mesAppService.CreateAsync(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 userAccount = _currentUser.UserAccount;
+ var userId = _currentUser.UserId;
+ MyCurrentUser myCurrentUser = new MyCurrentUser()
+ {
+ UserAccount = _currentUser.UserAccount,
+ UserId = _currentUser.UserId
+ };
+
+ 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,
+ }, userId, userAccount);
+
+ 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