ApprovalFlowService.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using Admin.NET.Core.Service;
  2. using Admin.NET.Plugin.Flow.Const;
  3. using Admin.NET.Plugin.Flow.Entity;
  4. using Microsoft.AspNetCore.Http;
  5. namespace Admin.NET.Plugin.Flow;
  6. /// <summary>
  7. /// 审批流服务
  8. /// </summary>
  9. [ApiDescriptionSettings(FlowConst.GroupName, Order = 100)]
  10. public class ApprovalFlowService : IDynamicApiController, ITransient
  11. {
  12. private readonly SqlSugarRepository<ApprovalFlow> _rep;
  13. public ApprovalFlowService(SqlSugarRepository<ApprovalFlow> rep)
  14. {
  15. _rep = rep;
  16. }
  17. /// <summary>
  18. /// 分页查询审批流
  19. /// </summary>
  20. /// <param name="input"></param>
  21. /// <returns></returns>
  22. [HttpPost]
  23. [ApiDescriptionSettings(Name = "Page")]
  24. public async Task<SqlSugarPagedList<ApprovalFlowOutput>> Page(ApprovalFlowInput input)
  25. {
  26. var query = _rep.AsQueryable()
  27. .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
  28. u.Code.Contains(input.SearchKey.Trim())
  29. || u.Name.Contains(input.SearchKey.Trim())
  30. || u.Remark.Contains(input.SearchKey.Trim())
  31. )
  32. .WhereIF(!string.IsNullOrWhiteSpace(input.Code), u => u.Code.Contains(input.Code.Trim()))
  33. .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim()))
  34. .WhereIF(!string.IsNullOrWhiteSpace(input.Remark), u => u.Remark.Contains(input.Remark.Trim()))
  35. .Select<ApprovalFlowOutput>();
  36. return await query.ToPagedListAsync(input.Page, input.PageSize);
  37. }
  38. /// <summary>
  39. /// 增加审批流
  40. /// </summary>
  41. /// <param name="input"></param>
  42. /// <returns></returns>
  43. [HttpPost]
  44. [ApiDescriptionSettings(Name = "Add")]
  45. public async Task<long> Add(AddApprovalFlowInput input)
  46. {
  47. var entity = input.Adapt<ApprovalFlow>();
  48. if (input.Code == null)
  49. {
  50. entity.Code = await LastCode("");
  51. }
  52. await _rep.InsertAsync(entity);
  53. return entity.Id;
  54. }
  55. /// <summary>
  56. /// 删除审批流
  57. /// </summary>
  58. /// <param name="input"></param>
  59. /// <returns></returns>
  60. [HttpPost]
  61. [ApiDescriptionSettings(Name = "Delete")]
  62. public async Task Delete(DeleteApprovalFlowInput input)
  63. {
  64. var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
  65. await _rep.FakeDeleteAsync(entity); //假删除
  66. //await _rep.DeleteAsync(entity); //真删除
  67. }
  68. /// <summary>
  69. /// 更新审批流
  70. /// </summary>
  71. /// <param name="input"></param>
  72. /// <returns></returns>
  73. [HttpPost]
  74. [ApiDescriptionSettings(Name = "Update")]
  75. public async Task Update(UpdateApprovalFlowInput input)
  76. {
  77. var entity = input.Adapt<ApprovalFlow>();
  78. await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
  79. }
  80. /// <summary>
  81. /// 获取审批流
  82. /// </summary>
  83. /// <param name="input"></param>
  84. /// <returns></returns>
  85. [HttpGet]
  86. [ApiDescriptionSettings(Name = "Detail")]
  87. public async Task<ApprovalFlow> Detail([FromQuery] QueryByIdApprovalFlowInput input)
  88. {
  89. return await _rep.GetFirstAsync(u => u.Id == input.Id);
  90. }
  91. /// <summary>
  92. /// 通过 code 获取审批流信息
  93. /// </summary>
  94. /// <param name="code"></param>
  95. /// <returns></returns>
  96. [HttpGet]
  97. [ApiDescriptionSettings(Name = "Info")]
  98. public async Task<ApprovalFlow> Info([FromQuery] string code)
  99. {
  100. return await _rep.GetFirstAsync(u => u.Code == code);
  101. }
  102. /// <summary>
  103. /// 获取审批流列表
  104. /// </summary>
  105. /// <param name="input"></param>
  106. /// <returns></returns>
  107. [HttpGet]
  108. [ApiDescriptionSettings(Name = "List")]
  109. public async Task<List<ApprovalFlowOutput>> List([FromQuery] ApprovalFlowInput input)
  110. {
  111. return await _rep.AsQueryable().Select<ApprovalFlowOutput>().ToListAsync();
  112. }
  113. /// <summary>
  114. /// 获取今天创建的最大编号
  115. /// </summary>
  116. /// <param name="prefix"></param>
  117. /// <returns></returns>
  118. private async Task<string> LastCode(string prefix)
  119. {
  120. var today = DateTime.Now.Date;
  121. var count = await _rep.AsQueryable().Where(u => u.CreateTime >= today).CountAsync();
  122. return prefix + DateTime.Now.ToString("yyMMdd") + string.Format("{0:d2}", count + 1);
  123. }
  124. }