LinkagePlanService.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. namespace Admin.NET.Plugin.AiDOP.Order;
  2. /// <summary>
  3. /// 计划联动看板服务
  4. /// 路由前缀:/api/Order/linkageplan/...
  5. /// </summary>
  6. [ApiDescriptionSettings(Order = 250, Description = "计划联动看板")]
  7. [Route("api/Order")]
  8. [AllowAnonymous]
  9. [NonUnify]
  10. public class LinkagePlanService : IDynamicApiController, ITransient
  11. {
  12. private readonly ISqlSugarClient _db;
  13. private readonly SqlSugarRepository<LinkagePlan> _linkagePlanRep;
  14. private readonly UserManager _userManager;
  15. public LinkagePlanService(
  16. ISqlSugarClient db,
  17. SqlSugarRepository<LinkagePlan> linkagePlanRep,
  18. UserManager userManager)
  19. {
  20. _db = db;
  21. _linkagePlanRep = linkagePlanRep;
  22. _userManager = userManager;
  23. }
  24. [DisplayName("获取计划联动看板列表")]
  25. [HttpGet("linkageplan/list")]
  26. public async Task<object> GetLinkagePlanList([FromQuery] LinkagePlanListInput input)
  27. {
  28. var tenantId = _userManager.TenantId;
  29. var q = _db.Queryable<LinkagePlan>()
  30. .Where(u => u.TenantId == tenantId)
  31. .WhereIF(!string.IsNullOrWhiteSpace(input.BillNo), u => u.BillNo != null && u.BillNo.Contains(input.BillNo!.Trim()))
  32. .WhereIF(!string.IsNullOrWhiteSpace(input.CustomNo), u => u.CustomNo != null && u.CustomNo.Contains(input.CustomNo!.Trim()))
  33. .WhereIF(!string.IsNullOrWhiteSpace(input.OrderType), u => u.OrderType == input.OrderType!.Trim())
  34. .WhereIF(!string.IsNullOrWhiteSpace(input.ItemNumber), u => u.ItemNumber == input.ItemNumber!.Trim());
  35. var paged = await q.OrderBy(u => u.Id).OrderBy(u => u.LevelNum).ToPagedListAsync(input.Page, input.PageSize);
  36. var list = paged.Items.Select(u => new
  37. {
  38. id = u.Id,
  39. billNo = u.BillNo,
  40. customNo = u.CustomNo,
  41. orderType = u.OrderType,
  42. itemNumber = u.ItemNumber,
  43. descr = u.Descr,
  44. descr1 = u.Descr1,
  45. itemType = u.ItemType,
  46. qty = u.Qty,
  47. updateTime = u.UpdateTime?.ToString("yyyy-MM-dd"),
  48. sysCapacityDate = u.SysCapacityDate?.ToString("yyyy-MM-dd"),
  49. type = u.Type,
  50. bomStart = u.BomStart,
  51. bomEnd = u.BomEnd,
  52. lineStart = u.LineStart,
  53. lineEnd = u.LineEnd,
  54. productStart = u.ProductStart,
  55. productEnd = u.ProductEnd,
  56. needTime = u.NeedTime,
  57. sysMaterialDate = u.SysMaterialDate,
  58. cgNeedTime = u.CgNeedTime,
  59. cgEnd = u.CgEnd,
  60. blStart = u.BlStart,
  61. blEnd = u.BlEnd,
  62. startTime = u.StartTime,
  63. endTime = u.EndTime,
  64. ipqcJyStart = u.IpqcJyStart,
  65. ipqcJyEnd = u.IpqcJyEnd,
  66. fqcJyStart = u.FqcJyStart,
  67. fqcJyEnd = u.FqcJyEnd,
  68. rkStart = u.RkStart,
  69. rkEnd = u.RkEnd,
  70. fyStartTime = u.FyStartTime,
  71. fyEndTime = u.FyEndTime,
  72. levelNum = u.LevelNum,
  73. background = u.Background,
  74. }).ToList();
  75. return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list };
  76. }
  77. [DisplayName("获取计划联动看板详情")]
  78. [HttpGet("linkageplan/{id:long}")]
  79. public async Task<object> GetLinkagePlanDetail(long id)
  80. {
  81. var tenantId = _userManager.TenantId;
  82. var m = await _linkagePlanRep.GetFirstAsync(u => u.Id == id && u.TenantId == tenantId)
  83. ?? throw Oops.Oh("计划联动记录不存在");
  84. return new
  85. {
  86. id = m.Id,
  87. billNo = m.BillNo,
  88. customNo = m.CustomNo,
  89. orderType = m.OrderType,
  90. itemNumber = m.ItemNumber,
  91. descr = m.Descr,
  92. descr1 = m.Descr1,
  93. itemType = m.ItemType,
  94. qty = m.Qty,
  95. updateTime = m.UpdateTime?.ToString("yyyy-MM-dd HH:mm:ss"),
  96. sysCapacityDate = m.SysCapacityDate?.ToString("yyyy-MM-dd HH:mm:ss"),
  97. type = m.Type,
  98. bomStart = m.BomStart,
  99. bomEnd = m.BomEnd,
  100. lineStart = m.LineStart,
  101. lineEnd = m.LineEnd,
  102. productStart = m.ProductStart,
  103. productEnd = m.ProductEnd,
  104. needTime = m.NeedTime,
  105. sysMaterialDate = m.SysMaterialDate,
  106. cgNeedTime = m.CgNeedTime,
  107. cgEnd = m.CgEnd,
  108. blStart = m.BlStart,
  109. blEnd = m.BlEnd,
  110. startTime = m.StartTime,
  111. endTime = m.EndTime,
  112. ipqcJyStart = m.IpqcJyStart,
  113. ipqcJyEnd = m.IpqcJyEnd,
  114. fqcJyStart = m.FqcJyStart,
  115. fqcJyEnd = m.FqcJyEnd,
  116. rkStart = m.RkStart,
  117. rkEnd = m.RkEnd,
  118. fyStartTime = m.FyStartTime,
  119. fyEndTime = m.FyEndTime,
  120. levelNum = m.LevelNum,
  121. background = m.Background,
  122. };
  123. }
  124. [DisplayName("刷新计划联动数据")]
  125. [HttpPost("linkageplan/refresh")]
  126. public async Task<object> RefreshLinkagePlanData()
  127. {
  128. try
  129. {
  130. // 调用存储过程,不传递参数或传递空字符串
  131. await _db.Ado.ExecuteCommandAsync("CALL pr_Mes_LinkagePlan('')");
  132. return new { message = "数据刷新成功" };
  133. }
  134. catch (Exception ex)
  135. {
  136. throw Oops.Oh($"刷新数据失败: {ex.Message}");
  137. }
  138. }
  139. }