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.

128 lines
4.8 KiB

2 years ago
2 years ago
2 years ago
2 years ago
  1. using Microsoft.Extensions.Configuration.UserSecrets;
  2. using NPOI.SS.Formula.Functions;
  3. using Shentun.Utilities;
  4. using Shentun.WebPeis.Models;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Volo.Abp.Domain.Entities;
  11. using Volo.Abp;
  12. using Volo.Abp.Domain.Repositories;
  13. using NPOI.POIFS.FileSystem;
  14. using Volo.Abp.Domain.Services;
  15. namespace Shentun.WebPeis.AppointScheduleTemplates
  16. {
  17. public class AppointScheduleTemplateManager : DomainService
  18. {
  19. private readonly IRepository<AppointScheduleTemplate> _appointScheduleTemplateRepository;
  20. public AppointScheduleTemplateManager(
  21. IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository
  22. )
  23. {
  24. _appointScheduleTemplateRepository = appointScheduleTemplateRepository;
  25. }
  26. /// <summary>
  27. /// 创建
  28. /// </summary>
  29. /// <param name="entity"></param>
  30. /// <returns></returns>
  31. public async Task<AppointScheduleTemplate> CreateAsync(
  32. AppointScheduleTemplate entity
  33. )
  34. {
  35. DataHelper.CheckEntityIsNull(entity);
  36. var isWeekId = await _appointScheduleTemplateRepository.FirstOrDefaultAsync(f => f.MedicalCenterId == entity.MedicalCenterId
  37. && f.WeekId == entity.WeekId && f.MedicalCenterId == entity.MedicalCenterId);
  38. if (isWeekId != null)
  39. throw new UserFriendlyException($"WeekId数据已存在,不能重复");
  40. return new AppointScheduleTemplate
  41. {
  42. AppointScheduleTemplateId = entity.AppointScheduleTemplateId,
  43. DisplayOrder = entity.DisplayOrder,
  44. MedicalCenterId = entity.MedicalCenterId,
  45. IsWork = entity.IsWork,
  46. SingleNumberLimit = entity.SingleNumberLimit,
  47. WeekId = entity.WeekId
  48. };
  49. }
  50. /// <summary>
  51. /// 更新
  52. /// </summary>
  53. /// <param name="sourceEntity"></param>
  54. /// <param name="targetEntity"></param>
  55. /// <returns></returns>
  56. public async Task UpdateAsync(
  57. AppointScheduleTemplate sourceEntity,
  58. AppointScheduleTemplate targetEntity
  59. )
  60. {
  61. DataHelper.CheckEntityIsNull(sourceEntity);
  62. DataHelper.CheckEntityIsNull(targetEntity);
  63. var isWeekId = await _appointScheduleTemplateRepository.FirstOrDefaultAsync(f => f.MedicalCenterId == sourceEntity.MedicalCenterId
  64. && f.WeekId == sourceEntity.WeekId
  65. && f.AppointScheduleTemplateId != targetEntity.AppointScheduleTemplateId);
  66. if (isWeekId != null)
  67. throw new UserFriendlyException($"WeekId数据已存在,不能重复");
  68. targetEntity.AppointScheduleTemplateId = sourceEntity.AppointScheduleTemplateId;
  69. targetEntity.DisplayOrder = sourceEntity.DisplayOrder;
  70. targetEntity.MedicalCenterId = sourceEntity.MedicalCenterId;
  71. targetEntity.IsWork = sourceEntity.IsWork;
  72. targetEntity.SingleNumberLimit = sourceEntity.SingleNumberLimit;
  73. targetEntity.WeekId = sourceEntity.WeekId;
  74. }
  75. /// <summary>
  76. /// 删除
  77. /// </summary>
  78. /// <param name="id"></param>
  79. /// <returns></returns>
  80. /// <exception cref="UserFriendlyException"></exception>
  81. public async Task CheckAndDeleteAsync(Guid appointScheduleTemplateId)
  82. {
  83. await _appointScheduleTemplateRepository.DeleteAsync(d => d.AppointScheduleTemplateId == appointScheduleTemplateId);
  84. }
  85. /// <summary>
  86. /// 修改排序 置顶,置底
  87. /// </summary>
  88. /// <param name="id">需要修改的ID</param>
  89. /// <param name="SortType">修改方式:1 置顶 2 置底</param>
  90. /// <returns></returns>
  91. public async Task UpdateManySortAsync(Guid appointScheduleTemplateId, int SortType)
  92. {
  93. var entity = await _appointScheduleTemplateRepository.GetAsync(f => f.AppointScheduleTemplateId == appointScheduleTemplateId);
  94. await EntityHelper.UpdateSortTopOrBottomAsync(_appointScheduleTemplateRepository, entity, SortType);
  95. }
  96. /// <summary>
  97. /// 修改排序 拖拽
  98. /// </summary>
  99. /// <typeparam name="TEntity"></typeparam>
  100. /// <param name="repository"></param>
  101. /// <param name="input"></param>
  102. /// <returns></returns>
  103. public async Task UpdateSortManyAsync(UpdateSortManyDto input)
  104. {
  105. var entitylist = await _appointScheduleTemplateRepository.GetListAsync(o => input.ItemList.Select(s => s.Id).Contains(o.AppointScheduleTemplateId));
  106. await EntityHelper.UpdateSortDragAsync(_appointScheduleTemplateRepository, entitylist, input);
  107. }
  108. }
  109. }