StatisticsController.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. using Microsoft.AspNetCore.Mvc;
  2. using OASystem.API.OAMethodLib;
  3. using OASystem.Domain.Dtos.Groups;
  4. using OASystem.Domain.Dtos.Statistics;
  5. using OASystem.Domain.ViewModels.Groups;
  6. using OASystem.Domain.ViewModels.Statistics;
  7. using OASystem.Infrastructure.Repositories.Groups;
  8. namespace OASystem.API.Controllers
  9. {
  10. /// <summary>
  11. /// 统计模块
  12. /// </summary>
  13. [Route("api/[controller]")]
  14. //[ApiController]
  15. public class StatisticsController : ControllerBase
  16. {
  17. private readonly IMapper _mapper;
  18. private readonly SqlSugarClient _sqlSugar;
  19. private readonly DelegationInfoRepository _groupRep;
  20. private readonly SetDataRepository _setDataRep;
  21. /// <summary>
  22. /// Init
  23. /// </summary>
  24. /// <param name="mapper"></param>
  25. /// <param name="sqlSugar"></param>
  26. /// <param name="groupRep"></param>
  27. /// <param name="setDataRep"></param>
  28. public StatisticsController(IMapper mapper, SqlSugarClient sqlSugar, DelegationInfoRepository groupRep, SetDataRepository setDataRep)
  29. {
  30. _mapper = mapper;
  31. _groupRep = groupRep;
  32. _setDataRep = setDataRep;
  33. _sqlSugar = sqlSugar;
  34. }
  35. /// <summary>
  36. /// 团组报表
  37. /// Items
  38. /// </summary>
  39. /// <param name="_dto">团组列表请求dto</param>
  40. /// <returns></returns>
  41. [HttpPost]
  42. [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
  43. public async Task<IActionResult> PostGroupStatementItems(GroupStatementItemsDto _dto)
  44. {
  45. #region 参数验证
  46. if (_dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
  47. if (_dto.PageId < 1) return Ok(JsonView(false, "页面Id为空"));
  48. PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
  49. #region 页面操作权限验证
  50. pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
  51. if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, "您没有查看权限"));
  52. #endregion
  53. #endregion
  54. if (_dto.PortType == 1 || _dto.PortType == 2 || _dto.PortType == 2) // web/Android/IOS
  55. {
  56. string sqlWhere = string.Empty;
  57. if (_dto.IsSure == 0) //未完成
  58. {
  59. sqlWhere += string.Format(@" And IsSure = 0");
  60. }
  61. else if (_dto.IsSure == 1) //已完成
  62. {
  63. sqlWhere += string.Format(@" And IsSure = 1");
  64. }
  65. if (!string.IsNullOrEmpty(_dto.SearchCriteria))
  66. {
  67. string tj = _dto.SearchCriteria;
  68. sqlWhere += string.Format(@"And (ssd.Name Like '%{0}%' Or TeamName Like '%{1}%' Or ClientName Like '%{2}%' Or ClientName Like '%{3}%' Or su.CnName Like '%{4}%')",
  69. tj, tj, tj, tj, tj);
  70. }
  71. string sql = string.Format(@"Select row_number() over(order by gdi.VisitDate Desc) as Row_Number,
  72. gdi.Id,TourCode,ssd1.Id TeamLevId,ssd1.Name TeamLev,TeamName,
  73. ClientName,ClientUnit,VisitDate,ssd.Id TeamTypeId, ssd.Name TeamType,
  74. VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure,gdi.CreateTime,
  75. pr.LastCollectionTime
  76. From Grp_DelegationInfo gdi
  77. Left Join Sys_SetData ssd On gdi.TeamDid = ssd.Id
  78. Left Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
  79. Left Join Sys_Users su On gdi.JietuanOperator = su.Id
  80. Left Join (
  81. SELECT Diid, MAX(CreateTime) LastCollectionTime
  82. FROM Fin_ProceedsReceived
  83. Where IsDel = 0
  84. GROUP BY Diid
  85. ) pr On gdi.Id = pr.Diid
  86. Where gdi.IsDel = 0 {0} ", sqlWhere);
  87. RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
  88. var _DelegationList = await _sqlSugar.SqlQueryable<GroupStatementItemView>(sql).ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);//ToPageAsync
  89. var _view = new
  90. {
  91. PageFuncAuth = pageFunAuthView,
  92. Data = _DelegationList
  93. };
  94. return Ok(JsonView(true, "查询成功!", _view, total));
  95. }
  96. else
  97. {
  98. return Ok(JsonView(false, "查询失败"));
  99. }
  100. }
  101. }
  102. }