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.

258 lines
9.9 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
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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using AutoMapper.Internal.Mappers;
  2. using Microsoft.AspNetCore.Mvc;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using Volo.Abp.Application.Services;
  9. using Volo.Abp.Domain.Repositories;
  10. using Volo.Abp.Identity;
  11. using Volo.Abp;
  12. using Shentun.Peis.Models;
  13. using Microsoft.AspNetCore.Authorization;
  14. using NPOI.SS.UserModel;
  15. using System.Reflection;
  16. using NUglify.JavaScript.Syntax;
  17. using System.Collections;
  18. using System.Linq.Dynamic.Core;
  19. using SqlSugar;
  20. using Volo.Abp.Application.Dtos;
  21. using Volo.Abp.Users;
  22. using Volo.Abp.ObjectMapping;
  23. using Microsoft.Extensions.Configuration;
  24. using System.IO;
  25. using Shentun.Peis.HelperDto;
  26. namespace Shentun.Peis.ColumnReferences
  27. {
  28. /// <summary>
  29. /// 字段对照主表
  30. /// </summary>
  31. [ApiExplorerSettings(GroupName = "Work")]
  32. [Authorize]
  33. public class ColumnReferenceAppService : ApplicationService
  34. {
  35. private readonly IRepository<ColumnReference, Guid> _repository;
  36. private readonly ColumnReferenceManager _manager;
  37. private readonly CacheService _cacheService;
  38. private readonly IRepository<IdentityUser, Guid> _userRepository;
  39. public ColumnReferenceAppService(
  40. IRepository<ColumnReference, Guid> repository,
  41. ColumnReferenceManager manager,
  42. CacheService cacheService,
  43. IRepository<IdentityUser, Guid> userRepository
  44. )
  45. {
  46. _repository = repository;
  47. _manager = manager;
  48. _cacheService = cacheService;
  49. _userRepository = userRepository;
  50. }
  51. /// <summary>
  52. /// 根据ID查实体内容
  53. /// </summary>
  54. /// <param name="id"></param>
  55. /// <returns></returns>
  56. [HttpPost("api/app/ColumnReference/Get")]
  57. public async Task<ColumnReferenceDto> GetAsync(Guid id)
  58. {
  59. var entity = await _repository.GetAsync(id);
  60. var entityDto = ObjectMapper.Map<ColumnReference, ColumnReferenceDto>(entity);
  61. entityDto.CreatorName = _cacheService.GetUserNameAsync(entityDto.CreatorId).Result;
  62. entityDto.LastModifierName = _cacheService.GetUserNameAsync(entityDto.LastModifierId).Result;
  63. return entityDto;
  64. }
  65. /// <summary>
  66. /// 查询列表
  67. /// </summary>
  68. /// <returns></returns>
  69. [HttpPost("api/app/ColumnReference/GetList")]
  70. public async Task<List<ColumnReferenceDto>> GetListAsync()
  71. {
  72. var userQueryable = await _userRepository.GetQueryableAsync();
  73. var entlist = (from a in await _repository.GetQueryableAsync()
  74. join b in userQueryable on a.CreatorId equals b.Id into bb
  75. from ab in bb.DefaultIfEmpty()
  76. join c in userQueryable on a.LastModifierId equals c.Id into cc
  77. from ac in cc.DefaultIfEmpty()
  78. select new
  79. {
  80. a,
  81. CreatorName = ab != null ? ab.UserName : "",
  82. LastModifierName = ac != null ? ac.UserName : ""
  83. })
  84. .Select(s => new ColumnReferenceDto
  85. {
  86. CreationTime = s.a.CreationTime,
  87. CreatorId = s.a.CreatorId,
  88. LastModifierId = s.a.LastModifierId,
  89. Id = s.a.Id,
  90. DisplayOrder = s.a.DisplayOrder,
  91. DisplayName = s.a.DisplayName,
  92. ParmValue = s.a.ParmValue,
  93. LastModificationTime = s.a.LastModificationTime,
  94. CreatorName = s.CreatorName,
  95. LastModifierName = s.LastModifierName
  96. }).OrderBy(o => o.DisplayOrder).ToList();
  97. return entlist;
  98. }
  99. /// <summary>
  100. /// 创建
  101. /// </summary>
  102. /// <param name="input"></param>
  103. /// <returns></returns>
  104. [HttpPost("api/app/ColumnReference/Create")]
  105. public async Task<ColumnReferenceDto> CreateAsync(CreateColumnReferenceDto input)
  106. {
  107. var createEntity = ObjectMapper.Map<CreateColumnReferenceDto, ColumnReference>(input);
  108. var entity = await _manager.CreateAsync(createEntity);
  109. entity = await _repository.InsertAsync(entity);
  110. var dto = ObjectMapper.Map<ColumnReference, ColumnReferenceDto>(entity);
  111. return dto;
  112. }
  113. /// <summary>
  114. /// 修改
  115. /// </summary>
  116. /// <param name="input"></param>
  117. /// <returns></returns>
  118. [HttpPost("api/app/ColumnReference/Update")]
  119. public async Task<ColumnReferenceDto> UpdateAsync(UpdateColumnReferenceDto input)
  120. {
  121. var entity = await _repository.GetAsync(input.Id);
  122. var sourceEntity = ObjectMapper.Map<UpdateColumnReferenceDto, ColumnReference>(input);
  123. await _manager.UpdateAsync(sourceEntity, entity);
  124. entity = await _repository.UpdateAsync(entity);
  125. return ObjectMapper.Map<ColumnReference, ColumnReferenceDto>(entity);
  126. }
  127. /// <summary>
  128. /// 删除
  129. /// </summary>
  130. /// <param name="id"></param>
  131. /// <returns></returns>
  132. [HttpPost("api/app/ColumnReference/Delete")]
  133. public async Task DeleteAsync(Guid id)
  134. {
  135. var entity = await _repository.GetAsync(id);
  136. await _manager.CheckAndDeleteAsync(entity);
  137. }
  138. /// <summary>
  139. /// 修改排序 置顶,置底
  140. /// </summary>
  141. /// <param name="id">需要修改的ID</param>
  142. /// <param name="SortType">修改方式:1 置顶 2 置底</param>
  143. /// <returns></returns>
  144. [HttpPut("api/app/ColumnReference/UpdateManySort")]
  145. public async Task UpdateManySortAsync(Guid id, int SortType)
  146. {
  147. await _manager.UpdateManySortAsync(id, SortType);
  148. }
  149. /// <summary>
  150. /// 修改排序 拖拽
  151. /// </summary>
  152. /// <param name="input"></param>
  153. /// <returns></returns>
  154. [HttpPut("api/app/ColumnReference/UpdateSortMany")]
  155. public async Task UpdateSortManyAsync(UpdateSortManyDto input)
  156. {
  157. await _manager.UpdateSortManyAsync(input);
  158. }
  159. //public async Task<List<string>> GetColumns(ColumnReferenceIdInputDto input)
  160. //{
  161. // var entity = await _repository.GetAsync(input.Id);
  162. // var parmValue = entity.ParmValue;
  163. // var configurationBuilder = new ConfigurationBuilder()
  164. // .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  165. // var config = configurationBuilder.Build();
  166. // var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value;
  167. // var className = config.GetSection("Interface").GetSection("ClassName").Value;
  168. // object objectValue = Invoke(assemblyName, className, "GetColumns");
  169. // List<string> list = new List<string>();
  170. // if (objectValue is IEnumerable enumerableObject)
  171. // {
  172. // list = enumerableObject.Cast<string>().ToList();
  173. // }
  174. // return list;
  175. //}
  176. //public async Task<string> GetFilterColumnName(ColumnReferenceIdInputDto input)
  177. //{
  178. // return null;
  179. //}
  180. //public async Task<List<string>> GetInterfaceColumns(ColumnReferenceIdInputDto input)
  181. //{
  182. // var entity = await _repository.GetAsync(input.Id);
  183. // var parmValue = entity.ParmValue;
  184. // var configurationBuilder = new ConfigurationBuilder()
  185. // .AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
  186. // var config = configurationBuilder.Build();
  187. // var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value;
  188. // var className = config.GetSection("Interface").GetSection("ClassName").Value;
  189. // object objectValue = Invoke(assemblyName, className, "GetInterfaceColumns");
  190. // List<string> list = new List<string>();
  191. // if (objectValue is IEnumerable enumerableObject)
  192. // {
  193. // list = enumerableObject.Cast<string>().ToList();
  194. // }
  195. // return list;
  196. //}
  197. //public async Task<List<ColumnReferenceCodeValue>> GetCodeValues(ColumnReferenceIdInputDto input)
  198. //{
  199. // return null;
  200. //}
  201. //public async Task<List<ColumnReferenceFilterCodeValue>> GetFilterCodeValues(ColumnReferenceIdInputDto input)
  202. //{
  203. // return null;
  204. //}
  205. //public async Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValues(ColumnReferenceIdInputDto input)
  206. //{
  207. // return null;
  208. //}
  209. //public async Task<List<ColumnReferenceCodeValue>> GetColumnReferenceInterfaceCodeValues(ColumnReferenceIdInputDto input)
  210. //{
  211. // return null;
  212. //}
  213. //public async Task CreateColumnReferenceValue(CreateColumnReferenceValue input)
  214. //{
  215. //}
  216. //private object Invoke(string assemblyName, string className, string methodName, object[] args = null)
  217. //{
  218. // Assembly assembly = Assembly.Load(assemblyName);
  219. // Type type = assembly.GetType(className);
  220. // // 创建类的实例
  221. // object instance = Activator.CreateInstance(type);
  222. // // 获取方法信息
  223. // MethodInfo method = type.GetMethod(methodName);
  224. // // 调用方法,如果方法需要参数,可以传入对应的参数数组,例如: new object[] { arg1, arg2 }
  225. // object returnValue = method.Invoke(instance, args);
  226. // return returnValue;
  227. //}
  228. }
  229. }