Pārlūkot izejas kodu

流程管理导出

libin 3 dienas atpakaļ
vecāks
revīzija
a51f652cac

+ 58 - 20
src/Hotline.Api/Controllers/SysController.cs

@@ -36,6 +36,7 @@ using XF.Domain.Cache;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
 using XF.Utility.EnumExtensions;
+using Hotline.Tools;
 
 namespace Hotline.Api.Controllers
 {
@@ -310,8 +311,8 @@ namespace Hotline.Api.Controllers
         /// <param name="dto"></param>
         /// <returns></returns>
         [HttpPost("dictdata-type/export")]
-		[LogFilterAlpha("导出日志")]
-		public async Task<FileStreamResult> GetSysDicDataExport([FromBody]ExportExcelDto<GetSysDicDataDto> dto)
+        [LogFilterAlpha("导出日志")]
+        public async Task<FileStreamResult> GetSysDicDataExport([FromBody] ExportExcelDto<GetSysDicDataDto> dto)
         {
             var items = await _sysDicDataRepository.Queryable().Where(x => x.DicTypeId == dto.QueryDto.typeid).OrderBy(x => x.Sort).ToTreeAsync(x => x.Children, x => x.ParentId, "");
             return _exportApplication.GetExcelFile(dto, items, "字典列表");
@@ -394,7 +395,7 @@ namespace Hotline.Api.Controllers
             if (dicData is null)
                 throw UserFriendlyException.SameMessage("无效字典数据");
             var chail = await _sysDicDataRepository.AnyAsync(p => p.ParentId == id, HttpContext.RequestAborted);
-            if(chail==true)
+            if (chail == true)
                 throw UserFriendlyException.SameMessage("存在下级数据,请先删除下级数据!");
 
             var dicType = await _sysDicTypeRepository.GetAsync(dicData.DicTypeId, HttpContext.RequestAborted);
@@ -417,23 +418,23 @@ namespace Hotline.Api.Controllers
             return await _systemAreaDomainService.GetAreaTree(_appOptions.Value.IsZiGong ? 6 : 0);
         }
 
-		/// <summary>
-		/// 获取省市区树形 来电弹单界面获取
-		/// </summary>
-		/// <returns></returns>
-		[HttpGet("area/tree_accepted")]
-		public async Task<List<SystemArea>> GetAreaTree_Accepted()
-		{
-			return await _systemAreaDomainService.GetAreaTree(_appOptions.Value.IsZiGong ? 6 : 0, _appOptions.Value.IsLuZhou ? "510500" : "510000");
-		}
-
-		/// <summary>
-		/// 获取省市区树形
-		/// </summary>
-		/// <returns></returns>
-		[HttpPost("area/tree/export")]
-		[LogFilterAlpha("导出日志")]
-		public async Task<FileStreamResult> GetAreaTreeExport([FromBody]ExportExcelDto<string> dto)
+        /// <summary>
+        /// 获取省市区树形 来电弹单界面获取
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("area/tree_accepted")]
+        public async Task<List<SystemArea>> GetAreaTree_Accepted()
+        {
+            return await _systemAreaDomainService.GetAreaTree(_appOptions.Value.IsZiGong ? 6 : 0, _appOptions.Value.IsLuZhou ? "510500" : "510000");
+        }
+
+        /// <summary>
+        /// 获取省市区树形
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost("area/tree/export")]
+        [LogFilterAlpha("导出日志")]
+        public async Task<FileStreamResult> GetAreaTreeExport([FromBody] ExportExcelDto<string> dto)
         {
             var items = await _systemAreaDomainService.GetAreaTree(_appOptions.Value.IsZiGong ? 6 : 0);
             return _exportApplication.GetExcelFile(dto, items, "行政区域");
@@ -537,6 +538,7 @@ namespace Hotline.Api.Controllers
         #endregion
 
         #region 常用意见
+
         #region 个人
         /// <summary>
         /// 获取常用意见
@@ -591,6 +593,7 @@ namespace Hotline.Api.Controllers
         #endregion
 
         #region 公开
+
         /// <summary>
         /// 查询公开常用意见
         /// </summary>
@@ -606,6 +609,41 @@ namespace Hotline.Api.Controllers
             return new PagedDto<SystemCommonOpinion>(total, items);
         }
 
+        /// <summary>export
+        /// 查询公开常用意见导出
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("open-common/export")]
+        [LogFilterAlpha("导出日志")]
+        public async Task<FileStreamResult> QueryOpenCommonOpinionExport([FromBody] ExportExcelDto<QueryCommonDto> dto)
+        {
+            var query = _commonOpinionRepository.Queryable()
+                .WhereIF(dto.QueryDto.IsOpen != null, x => x.IsOpen == dto.QueryDto.IsOpen)
+                .WhereIF(!string.IsNullOrEmpty(dto.QueryDto.UserName), x => x.CreatorName.Contains(dto.QueryDto.UserName))
+                .WhereIF(dto.QueryDto.CommonType != null, x => x.CommonType == dto.QueryDto.CommonType);
+
+            var total = 0;
+            var items = new List<SystemCommonOpinion>();
+            if (dto.IsExportAll)
+            {
+                items = await query.ToListAsync(HttpContext.RequestAborted);
+            }
+            else
+            {
+                (total, items) = await query.ToPagedListAsync(dto.QueryDto.PageIndex, dto.QueryDto.PageSize, HttpContext.RequestAborted);
+            }
+
+            dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<SystemCommonOpinion>(dto.ColumnInfos);
+
+            var dtos = _mapper.Map<ICollection<SystemCommonOpinion>>(items)
+                              .Select(stu => _mapper.Map(stu, typeof(SystemCommonOpinion), dynamicClass))
+                              .Cast<object>()
+                              .ToList();
+
+            var stream = ExcelHelper.CreateStream(dtos);
+            return ExcelStreamResult(stream, "常用意见管理");
+        }
 
         /// <summary>
         /// 修改公开常用意见

+ 62 - 2
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -29,6 +29,8 @@ using Hotline.SeedData;
 using Hotline.Tools;
 using Hotline.Share.Enums.Order;
 using Hotline.Api.Filter;
+using Hotline.Settings.CommonOpinions;
+using Hotline.Share.Dtos.Settings;
 
 namespace Hotline.Api.Controllers;
 
@@ -174,6 +176,44 @@ public class WorkflowController : BaseController
         return new PagedDto<DefinitionDto>(total, _mapper.Map<IReadOnlyList<DefinitionDto>>(items));
     }
 
+    /// <summary>
+    /// 分页查询流程模板导出
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("definition/export")]
+    public async Task<FileStreamResult> QueryDefinitionsExport([FromBody] ExportExcelDto<QueryDefinitionDto> dto)
+    {
+        var query = _definitionRepository.Queryable()
+            .WhereIF(dto.QueryDto.Status.HasValue, d => d.Status == dto.QueryDto.Status)
+            .WhereIF(!string.IsNullOrEmpty(dto.QueryDto.Keyword),
+                d => d.Code.Contains(dto.QueryDto.Keyword!) || d.Name.Contains(dto.QueryDto.Keyword!))
+            .OrderBy(d => d.Status)
+            .OrderBy(d => d.Code)
+            .OrderByDescending(d => d.Version);
+
+        var total = 0;
+        var items = new List<WorkflowDefinition>();
+        if (dto.IsExportAll)
+        {
+            items = await query.ToListAsync(HttpContext.RequestAborted);
+        }
+        else
+        {
+            (total, items) = await query.ToPagedListAsync(dto.QueryDto.PageIndex, dto.QueryDto.PageSize, HttpContext.RequestAborted);
+        }
+
+        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<DefinitionDto>(dto.ColumnInfos);
+
+        var dtos = _mapper.Map<ICollection<DefinitionDto>>(items)
+                          .Select(stu => _mapper.Map(stu, typeof(DefinitionDto), dynamicClass))
+                          .Cast<object>()
+                          .ToList();
+
+        var stream = ExcelHelper.CreateStream(dtos);
+        return ExcelStreamResult(stream, "流程模板");
+    }
+
     /// <summary>
     /// 查询流程模板
     /// </summary>
@@ -284,6 +324,26 @@ public class WorkflowController : BaseController
             .ToListAsync();
     }
 
+    /// <summary>
+    /// 查询所有工作流模块导出
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("wfmodules/export")]
+    public async Task<FileStreamResult> QueryWfModulesExport([FromBody] ExportExcelDto<QueryCommonDto> dto)
+    {
+        var items = await _wfModuleRepository.Queryable().Includes(d => d.Definition).ToListAsync(HttpContext.RequestAborted);
+
+        dynamic? dynamicClass = DynamicClassHelper.CreateDynamicClass<WorkflowModule>(dto.ColumnInfos);
+
+        var dtos = _mapper.Map<ICollection<WorkflowModule>>(items)
+                          .Select(stu => _mapper.Map(stu, typeof(WorkflowModule), dynamicClass))
+                          .Cast<object>()
+                          .ToList();
+
+        var stream = ExcelHelper.CreateStream(dtos);
+        return ExcelStreamResult(stream, "流程业务");
+    }
+
     /// <summary>
     /// 为工作流业务匹配或取消流程模板
     /// </summary>
@@ -588,8 +648,8 @@ public class WorkflowController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpPost("order-countersign/_export")]
-	[LogFilterAlpha("导出日志")]
-	public async Task<FileStreamResult> ScreenListExport([FromBody] ExportExcelDto<QueryOrderCountersignDto> dto)
+    [LogFilterAlpha("导出日志")]
+    public async Task<FileStreamResult> ScreenListExport([FromBody] ExportExcelDto<QueryOrderCountersignDto> dto)
     {
         var query = _workflowApplication.QueryOrderCountersigns(dto.QueryDto, _sessionContext)
              .Select((c, w, o) => new WorkflowCountersign()