FacilityWorkHistoryController.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using System;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using FMSAdmin.Data;
  5. using FMSAdmin.Models;
  6. using FMSAdmin.Entities;
  7. using FMSApp.Services;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.Extensions.Logging;
  10. using Microsoft.AspNetCore.Authorization;
  11. using FMSAdmin.Helpers;
  12. using System.Data;
  13. using System.IO;
  14. using OfficeOpenXml;
  15. namespace FMSApp.Controllers {
  16. [Authorize]
  17. [ApiController]
  18. [ApiVersion("1")]
  19. [Route("api/app/[controller]")]
  20. public class FacilityWorkHistoryController : Controller {
  21. private readonly ILogger<FacilityWorkHistoryController> _logger;
  22. private readonly FMSContext _context;
  23. private readonly WorkOrderService _service;
  24. private readonly StorageHelper _storage;
  25. public FacilityWorkHistoryController(
  26. ILogger<FacilityWorkHistoryController> logger,
  27. FMSContext context,
  28. WorkOrderService service,
  29. StorageHelper storage
  30. ) {
  31. _logger = logger;
  32. _context = context;
  33. _service = service;
  34. _storage = storage;
  35. }
  36. [HttpGet]
  37. public IActionResult List([FromQuery]PagingRequest req, [FromQuery] string siteId, bool businessAuth) {
  38. var query = _FilterAndSort(req);
  39. query = BusinessFieldHelper.Apply<FmsWorkOrderToFacility>(_context, User, businessAuth, query, "FmsWorkOrder.FmsWorkRequest");
  40. query = query.Where(
  41. x => x.SiteId == Util.ToInt(siteId)
  42. && x.FmsWorkOrder.FmsWorkRequest.WorkProgressId == 6
  43. );
  44. var list = query.Select(x => new {
  45. x.SiteId,
  46. x.WorkRequestId,
  47. x.FacilityCode,
  48. x.CmFacility.FirstClassId,
  49. FirstClassName = x.CmFacility.FmsFacilityCodeClass.Name,
  50. x.CmFacility.SecondClassId,
  51. SecondClassName = x.CmFacility.FmsFacilityCodeClass1.Name,
  52. x.CmFacility.ThirdClassId,
  53. ThirdClassName = x.CmFacility.FmsFacilityCodeClass2.Name,
  54. x.CmFacility.Name,
  55. x.CmFacility.BuildingId,
  56. x.CmFacility.FloorId,
  57. FacilityTypeName = x.CmFacility.BemsFacilityType.Name,
  58. x.FmsWorkOrder.FmsWorkRequest.WorkTypeId,
  59. x.FmsWorkOrder.FmsWorkRequest.BusinessFieldId,
  60. x.FmsWorkOrder.Title,
  61. x.FmsWorkOrder.OrderDate,
  62. x.FmsWorkOrder.StartWorkDate,
  63. x.FmsWorkOrder.FmsWorkResult.StartDate,
  64. x.FmsWorkOrder.FmsWorkResult.EndDate,
  65. x.FmsWorkOrder.FmsWorkResult.ConfirmedUserId,
  66. x.FmsWorkOrder.FmsWorkResult.ConfirmedDate,
  67. x.FmsWorkOrder.FmsWorkRequest.WorkProgressId,
  68. RequestStartWorkDate = x.FmsWorkOrder.FmsWorkRequest.StartWorkDate,
  69. BusinessFieldName = x.FmsWorkOrder.FmsWorkRequest.CmBusinessField.Name,
  70. OrderUserName = x.FmsWorkOrder.CmUser.Name,
  71. WorkTypeName = x.FmsWorkOrder.FmsWorkRequest.WorkType.Name,
  72. OrderBusinessFieldName = x.FmsWorkOrder.CmBusinessField.Name,
  73. WorkProgressName = x.FmsWorkOrder.FmsWorkRequest.WorkProgress.Name,
  74. ConfirmedUserName = x.FmsWorkOrder.FmsWorkResult.CmUser.Name,
  75. WorkerUserName = x.FmsWorkOrder.FmsWorkResult.CmUserNavigation.Name,
  76. x.FmsWorkOrder.Content
  77. });
  78. var paging = PagingList.Pagination(list, req.page, req.limit);
  79. return Ok(paging);
  80. }
  81. [HttpGet("[action]")]
  82. public IActionResult Get([FromQuery] string siteId, [FromQuery] string workRequestId, [FromQuery] string facilityCode) {
  83. var query = _context.FmsWorkOrderToFacility as IQueryable<FmsWorkOrderToFacility>;
  84. query = query.Where(
  85. x => x.SiteId == Util.ToInt(siteId)
  86. && x.FacilityCode == Util.ToInt(facilityCode)
  87. && x.WorkRequestId == Util.ToInt(workRequestId)
  88. );
  89. var item = query.Select(x => new {
  90. x.SiteId,
  91. x.WorkRequestId,
  92. x.FacilityCode,
  93. x.CmFacility.FirstClassId,
  94. FirstClassName = x.CmFacility.FmsFacilityCodeClass.Name,
  95. x.CmFacility.SecondClassId,
  96. SecondClassName = x.CmFacility.FmsFacilityCodeClass1.Name,
  97. x.CmFacility.ThirdClassId,
  98. ThirdClassName = x.CmFacility.FmsFacilityCodeClass2.Name,
  99. x.CmFacility.Name,
  100. x.CmFacility.BuildingId,
  101. x.CmFacility.FloorId,
  102. FacilityTypeName = x.CmFacility.BemsFacilityType.Name,
  103. x.FmsWorkOrder.FmsWorkRequest.WorkTypeId,
  104. x.FmsWorkOrder.FmsWorkRequest.BusinessFieldId,
  105. x.FmsWorkOrder.Title,
  106. x.FmsWorkOrder.OrderDate,
  107. x.FmsWorkOrder.StartWorkDate,
  108. x.FmsWorkOrder.FmsWorkResult.StartDate,
  109. x.FmsWorkOrder.FmsWorkResult.EndDate,
  110. x.FmsWorkOrder.FmsWorkResult.ConfirmedUserId,
  111. x.FmsWorkOrder.FmsWorkResult.ConfirmedDate,
  112. x.FmsWorkOrder.FmsWorkRequest.WorkProgressId,
  113. RequestStartWorkDate = x.FmsWorkOrder.FmsWorkRequest.StartWorkDate,
  114. BusinessFieldName = x.FmsWorkOrder.FmsWorkRequest.CmBusinessField.Name,
  115. OrderUserName = x.FmsWorkOrder.CmUser.Name,
  116. WorkTypeName = x.FmsWorkOrder.FmsWorkRequest.WorkType.Name,
  117. OrderBusinessFieldName = x.FmsWorkOrder.CmBusinessField.Name,
  118. WorkProgressName = x.FmsWorkOrder.FmsWorkRequest.WorkProgress.Name,
  119. ConfirmedUserName = x.FmsWorkOrder.FmsWorkResult.CmUser.Name,
  120. WorkerUserName = x.FmsWorkOrder.FmsWorkResult.CmUserNavigation.Name,
  121. x.FmsWorkOrder.Content,
  122. }).FirstOrDefault();
  123. return Ok(item);
  124. }
  125. // 검색 & 정렬 공통
  126. private IQueryable<FmsWorkOrderToFacility> _FilterAndSort(PagingRequest req) {
  127. var query = _context.FmsWorkOrderToFacility as IQueryable<FmsWorkOrderToFacility>;
  128. // 기본 Entity 검색
  129. query = query.Filter(req.conditions);
  130. // 기본 Entity 정렬
  131. query = query.Sort(req.sort);
  132. return query;
  133. }
  134. }
  135. }