You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

248 lines
10 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Microsoft.EntityFrameworkCore;
  4. using Shentun.Peis.Models;
  5. using Shentun.Peis.PeisReports;
  6. using Shentun.Peis.ReportFormats;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using Volo.Abp.Application.Dtos;
  13. using Volo.Abp.Application.Services;
  14. using Volo.Abp.Domain.Repositories;
  15. using Volo.Abp.Identity;
  16. using Volo.Abp.ObjectMapping;
  17. using static Org.BouncyCastle.Bcpg.Attr.ImageAttrib;
  18. namespace Shentun.Peis.ReportFormatTemplates
  19. {
  20. //[Authorize]
  21. public class ReportFormatTemplateAppService : CrudAppService<
  22. ReportFormatTemplate, //The Book entity
  23. ReportFormatTemplateDto, //Used to show books
  24. string, //Primary key of the book entity
  25. PagedAndSortedResultRequestDto, //Used for paging/sorting
  26. CreateReportFormatTemplateDto,
  27. UpdateReportFormatTemplateDto>
  28. {
  29. private readonly IRepository<IdentityUser, Guid> _userRepository;
  30. private readonly IRepository<Report, string> _reportRepository;
  31. private readonly IRepository<ReportFormat, string> _reportFormatRepository;
  32. private readonly IRepository<ReportFormatTemplate, string> _reportFormatTemplateRepository;
  33. private readonly ReportFormatTemplateManager _manager;
  34. public ReportFormatTemplateAppService(
  35. IRepository<ReportFormatTemplate, string> repository,
  36. IRepository<IdentityUser, Guid> userRepository,
  37. IRepository<Report, string> reportRepository,
  38. IRepository<ReportFormat, string> reportFormatRepository,
  39. ReportFormatTemplateManager manager)
  40. : base(repository)
  41. {
  42. _userRepository = userRepository;
  43. _manager = manager;
  44. _reportFormatTemplateRepository = repository;
  45. _reportFormatRepository = reportFormatRepository;
  46. _reportRepository = reportRepository;
  47. }
  48. public async Task<List<ReportFormatTemplateDto>> GetReportTemplateAsync()
  49. {
  50. var query = from a in await _reportFormatRepository.GetQueryableAsync()
  51. join b in await _reportRepository.GetQueryableAsync() on a.ReportId equals b.Id into bb
  52. from ab in bb.DefaultIfEmpty()
  53. join c in await _reportFormatTemplateRepository.GetQueryableAsync() on a.Id equals c.ReportFormatId into cc
  54. from ac in cc.DefaultIfEmpty()
  55. where (a.IsDefault=='Y' &&ab.IsActive=='Y'&&ac.IsDefault== 'Y')
  56. select new
  57. {
  58. a,
  59. ab,
  60. ac
  61. };
  62. //query = query.Where(p=>p.a.IsDefault.Equals("Y") && p.ab.IsActive.Equals("Y") && p.ac.IsDefault.Equals("Y"));
  63. //var ss = query.ToQueryString();
  64. var entlist = query.Select(s => new ReportFormatTemplateDto
  65. {
  66. Id = s.ab.Id,
  67. ReportFormatId = s.ac.ReportFormatId,
  68. DisplayName = s.ac.DisplayName,
  69. TemplateFileType = s.ac.TemplateFileType,
  70. TemplateFile = s.ac.TemplateFile,
  71. DataSetJson = s.ac.DataSetJson,
  72. IsSystem = s.ac.IsSystem,
  73. IsDefault = s.ac.IsDefault,
  74. LastModificationTime = s.ac.LastModificationTime,
  75. }).ToList();
  76. return entlist;
  77. }
  78. /// <summary>
  79. /// 获取通过主键
  80. /// </summary>
  81. /// <param name="id"></param>
  82. /// <returns></returns>
  83. public override async Task<ReportFormatTemplateDto> GetAsync(string id)
  84. {
  85. var entity= await base.GetAsync(id);
  86. var userList = await _userRepository.GetListAsync();
  87. entity.IsDefaulted = entity.IsDefault.Equals('Y');
  88. entity.IsSystemed = entity.IsSystem.Equals('Y');
  89. entity.CreatorName = EntityHelper.GetUserNameNoSql(userList, entity.CreatorId);
  90. entity.LastModifierName = EntityHelper.GetUserNameNoSql(userList, entity.LastModifierId);
  91. return entity;
  92. }
  93. public async Task<ReportFormatTemplateDto> GetMaxByIdAsync()
  94. {
  95. var ent = (await Repository.GetListAsync()).Max(x => x.Id);
  96. var entdto = new ReportFormatTemplateDto
  97. {
  98. Id = !string.IsNullOrEmpty(ent)?ent:"0001"
  99. };
  100. return entdto;
  101. }
  102. public async Task<ReportFormatTemplateDto> GetDefaultAsync(string formatId)
  103. {
  104. var ent = await _manager.GetDefaultAsync(formatId);
  105. if (ent != null)
  106. {
  107. var userList = await _userRepository.GetListAsync();
  108. var entdto = new ReportFormatTemplateDto
  109. {
  110. CreationTime = ent.CreationTime,
  111. CreatorId = ent.CreatorId,
  112. DisplayName = ent.DisplayName,
  113. Id = ent.Id,
  114. ReportFormatId = ent.ReportFormatId,
  115. LastModificationTime = ent.LastModificationTime,
  116. LastModifierId = ent.LastModifierId,
  117. IsDefault = ent.IsDefault,
  118. IsSystem = ent.IsSystem,
  119. IsDefaulted = ent.IsDefault.Equals('Y'),
  120. IsSystemed = ent.IsSystem.Equals('Y'),
  121. TemplateFile=ent.TemplateFile,
  122. TemplateFileType=ent.TemplateFileType,
  123. DataSetJson = ent.DataSetJson,
  124. CreatorName = EntityHelper.GetUserNameNoSql(userList, ent.CreatorId),
  125. LastModifierName = EntityHelper.GetUserNameNoSql(userList, ent.LastModifierId)
  126. };
  127. return entdto;
  128. }
  129. else
  130. {
  131. return null;
  132. }
  133. }
  134. /// <summary>
  135. /// 获取列表 项目
  136. /// </summary>
  137. /// <param name="input"></param>
  138. /// <returns></returns>
  139. public override async Task<PagedResultDto<ReportFormatTemplateDto>> GetListAsync(PagedAndSortedResultRequestDto input)
  140. {
  141. return await base.GetListAsync(input);
  142. }
  143. /// <summary>
  144. /// 获取列表 项目 可以带格式ID搜索
  145. /// </summary>
  146. /// <param name="reportFormatId"></param>
  147. /// <returns></returns>
  148. public async Task<PagedResultDto<ReportFormatTemplateDto>> GetListInReportFormatAsync(string reportFormatId)
  149. {
  150. int totalCount = 0;
  151. var entlist = (await Repository.GetListAsync()).Where(m => m.ReportFormatId == reportFormatId);
  152. totalCount = entlist.Count();
  153. var userList = await _userRepository.GetListAsync();
  154. var entdto = entlist.Select(s => new ReportFormatTemplateDto
  155. {
  156. CreationTime = s.CreationTime,
  157. CreatorId = s.CreatorId,
  158. DisplayName = s.DisplayName,
  159. Id = s.Id,
  160. ReportFormatId = s.ReportFormatId,
  161. LastModificationTime = s.LastModificationTime,
  162. LastModifierId = s.LastModifierId,
  163. IsDefault = s.IsDefault,
  164. IsSystem=s.IsSystem,
  165. IsDefaulted=s.IsDefault.Equals('Y'),
  166. IsSystemed=s.IsSystem.Equals('Y'),
  167. TemplateFile = s.TemplateFile,
  168. TemplateFileType = s.TemplateFileType,
  169. DataSetJson = s.DataSetJson,
  170. CreatorName = EntityHelper.GetUserNameNoSql(userList, s.CreatorId),
  171. LastModifierName = EntityHelper.GetUserNameNoSql(userList, s.LastModifierId)
  172. }).ToList();
  173. return new PagedResultDto<ReportFormatTemplateDto>(totalCount, entdto);
  174. }
  175. /// <summary>
  176. /// 创建
  177. /// </summary>
  178. /// <param name="input"></param>
  179. /// <returns></returns>
  180. public override async Task<ReportFormatTemplateDto> CreateAsync(CreateReportFormatTemplateDto input)
  181. {
  182. var createEntity = ObjectMapper.Map<CreateReportFormatTemplateDto, ReportFormatTemplate>(input);
  183. var entity = await _manager.CreateAsync(createEntity);
  184. entity = await Repository.InsertAsync(entity);
  185. var dto = ObjectMapper.Map<ReportFormatTemplate, ReportFormatTemplateDto>(entity);
  186. return dto;
  187. }
  188. public async Task<ReportFormatTemplateDto> CopyCreateAsync(string id,string newId)
  189. {
  190. var entity = await _manager.CopyCreateAsync(id,newId);
  191. entity = await Repository.InsertAsync(entity);
  192. var dto = ObjectMapper.Map<ReportFormatTemplate, ReportFormatTemplateDto>(entity);
  193. return dto;
  194. }
  195. /// <summary>
  196. /// 更新
  197. /// </summary>
  198. /// <param name="id"></param>
  199. /// <param name="input"></param>
  200. /// <returns></returns>
  201. public override async Task<ReportFormatTemplateDto> UpdateAsync(string id, UpdateReportFormatTemplateDto input)
  202. {
  203. var entity = await Repository.GetAsync(id);
  204. var userList = await _userRepository.GetListAsync();
  205. var sourceEntity = ObjectMapper.Map<UpdateReportFormatTemplateDto, ReportFormatTemplate>(input);
  206. await _manager.UpdateAsync(sourceEntity, entity);
  207. entity = await Repository.UpdateAsync(entity);
  208. var dto= ObjectMapper.Map<ReportFormatTemplate, ReportFormatTemplateDto>(entity);
  209. dto.IsDefaulted = entity.IsDefault.Equals('Y');
  210. dto.IsSystemed= entity.IsSystem.Equals('Y');
  211. dto.CreatorName = EntityHelper.GetUserNameNoSql(userList, entity.CreatorId);
  212. dto.LastModifierName = EntityHelper.GetUserNameNoSql(userList, entity.LastModifierId);
  213. return dto;
  214. }
  215. /// <summary>
  216. /// 删除
  217. /// </summary>
  218. /// <param name="id"></param>
  219. /// <returns></returns>
  220. public override Task DeleteAsync(string id)
  221. {
  222. return base.DeleteAsync(id);
  223. }
  224. [HttpPut("api/app/reportfomattemplate/updatedefault")]
  225. public async Task UpdateDefaultAsync(string id)
  226. {
  227. await _manager.UpdateDefaultAsync(id);
  228. }
  229. }
  230. }