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.

117 lines
5.3 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.Enums;
  5. using Shentun.Peis.Models;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.ComponentModel.DataAnnotations;
  9. using System.Linq;
  10. using System.Threading.Tasks;
  11. using System.Transactions;
  12. using Volo.Abp.Application.Services;
  13. using Volo.Abp.Domain.Repositories;
  14. using Volo.Abp.Identity;
  15. namespace Shentun.Peis.ChargeAsbitems
  16. {
  17. /// <summary>
  18. /// 收费项目
  19. /// </summary>
  20. [ApiExplorerSettings(GroupName = "Work")]
  21. [Authorize]
  22. public class ChargeAsbitemAppService : ApplicationService
  23. {
  24. private readonly IRepository<ChargeAsbitem, Guid> _chargeAsbitemRepository;
  25. private readonly IRepository<IdentityUser, Guid> _userRepository;
  26. private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository;
  27. private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
  28. public ChargeAsbitemAppService(
  29. IRepository<ChargeAsbitem, Guid> chargeAsbitemRepository,
  30. IRepository<IdentityUser, Guid> userRepository,
  31. IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository,
  32. IRepository<RegisterCheck, Guid> registerCheckRepository
  33. )
  34. {
  35. this._chargeAsbitemRepository = chargeAsbitemRepository;
  36. this._userRepository = userRepository;
  37. this._registerAsbitemRepository = registerAsbitemRepository;
  38. this._registerCheckRepository = registerCheckRepository;
  39. }
  40. /// <summary>
  41. /// 获取收费项目 跟据收费主表ID
  42. /// </summary>
  43. /// <param name="ChargeId"></param>
  44. /// <returns></returns>
  45. [HttpGet("api/app/chargeasbitem/getchargeasbiteminchargeid")]
  46. public async Task<List<ChargeAsbitemDto>> GetChargeAsbitemInChargeIdAsync(Guid ChargeId)
  47. {
  48. var chargeAsbitemList = (await _chargeAsbitemRepository.GetDbSetAsync())
  49. .Include(x => x.Asbitem)
  50. .Where(m => m.ChargeId == ChargeId);
  51. var userQueryable = await _userRepository.GetQueryableAsync();
  52. var registerAsbitemQueryable = await _registerAsbitemRepository.GetQueryableAsync();
  53. var registerCheckQueryable = await _registerCheckRepository.GetQueryableAsync();
  54. DateTime? dtnull = null;
  55. char? charnull = null;
  56. var entlist = from a in chargeAsbitemList
  57. join b in userQueryable on a.CreatorId equals b.Id into bb
  58. from ab in bb.DefaultIfEmpty()
  59. join c in userQueryable on a.LastModifierId equals c.Id into cc
  60. from ac in cc.DefaultIfEmpty()
  61. join d in registerAsbitemQueryable on a.RegisterAsbitemId equals d.Id into dd
  62. from ad in dd.DefaultIfEmpty()
  63. join f in userQueryable on ad.CreatorId equals f.Id into ff
  64. from af in ff.DefaultIfEmpty()
  65. join e in registerCheckQueryable on ad.RegisterCheckId equals e.Id into ee
  66. from ae in ee.DefaultIfEmpty()
  67. select new
  68. {
  69. a,
  70. CreatorName = ab.Surname,
  71. LastModifierName = ac.Surname,
  72. AsbitemPrice = ad != null ? ad.StandardPrice : 0,
  73. RegisterAsbitemChargePrice = ad != null ? ad.ChargePrice : 0,
  74. RegisterAsbitemCreationTime = ad != null ? ad.CreationTime : dtnull,
  75. RegisterAsbitemCreatorName = af != null ? af.Surname : "",
  76. RegisterAsbitemPayTypeFlag = ad != null ? ad.PayTypeFlag : PayTypeFlag.PersonPay,
  77. RegisterCheckCompleteFlag = ae != null ? ae.CompleteFlag : charnull,
  78. };
  79. var ss = entlist.ToQueryString();
  80. var entlistdto = entlist.Select(s => new ChargeAsbitemDto
  81. {
  82. Amount = s.a.Amount,
  83. ChargePrice = s.a.ChargePrice,
  84. ChargeId = s.a.ChargeId,
  85. AsbitemId = s.a.AsbitemId,
  86. AsbitemName = s.a.Asbitem.DisplayName,
  87. AsbitemPrice = s.AsbitemPrice,
  88. CreationTime = s.a.CreationTime,
  89. CreatorId = s.a.CreatorId,
  90. CreatorName = s.CreatorName,
  91. Id = s.a.Id,
  92. LastModificationTime = s.a.LastModificationTime,
  93. LastModifierId = s.a.LastModifierId,
  94. LastModifierName = s.LastModifierName,
  95. RegisterAsbitemId = s.a.RegisterAsbitemId,
  96. RegisterAsbitemChargePrice = s.RegisterAsbitemChargePrice,
  97. RegisterAsbitemCreationTime =DataHelper.ConversionDateToString( s.RegisterAsbitemCreationTime),
  98. RegisterAsbitemCreatorName = s.RegisterAsbitemCreatorName,
  99. RegisterAsbitemPayTypeFlag = s.RegisterAsbitemPayTypeFlag,
  100. RegisterCheckCompleteFlag = s.RegisterCheckCompleteFlag != null ? s.RegisterCheckCompleteFlag.Value : null
  101. }).ToList();
  102. return entlistdto;
  103. }
  104. }
  105. }