LinkagePlanService.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. private readonly S1MdpSyncTransformService _s1MdpSyncTransformService;
  16. public LinkagePlanService(
  17. ISqlSugarClient db,
  18. SqlSugarRepository<LinkagePlan> linkagePlanRep,
  19. UserManager userManager,
  20. S1MdpSyncTransformService s1MdpSyncTransformService)
  21. {
  22. _db = db;
  23. _linkagePlanRep = linkagePlanRep;
  24. _userManager = userManager;
  25. _s1MdpSyncTransformService = s1MdpSyncTransformService;
  26. }
  27. [DisplayName("获取计划联动看板列表")]
  28. [HttpGet("linkageplan/list")]
  29. public async Task<object> GetLinkagePlanList([FromQuery] LinkagePlanListInput input)
  30. {
  31. var tenantId = _userManager.TenantId;
  32. var q = _db.Queryable<LinkagePlan>()
  33. .Where(u => u.TenantId == tenantId)
  34. .WhereIF(!string.IsNullOrWhiteSpace(input.BillNo), u => u.BillNo != null && u.BillNo.Contains(input.BillNo!.Trim()))
  35. .WhereIF(!string.IsNullOrWhiteSpace(input.CustomNo), u => u.CustomNo != null && u.CustomNo.Contains(input.CustomNo!.Trim()))
  36. .WhereIF(!string.IsNullOrWhiteSpace(input.OrderType), u => u.OrderType == input.OrderType!.Trim())
  37. .WhereIF(!string.IsNullOrWhiteSpace(input.ItemNumber), u => u.ItemNumber == input.ItemNumber!.Trim());
  38. var paged = await q
  39. .OrderBy(u => u.BillNo)
  40. .OrderBy(u => u.ItemNumber)
  41. .OrderBy(u => u.LevelNum)
  42. .OrderBy("CASE WHEN type='计划' THEN 1 WHEN type='实际' THEN 2 WHEN type='偏差' THEN 3 ELSE 4 END")
  43. .ToPagedListAsync(input.Page, input.PageSize);
  44. var list = paged.Items.Select(u => new
  45. {
  46. id = u.Id,
  47. billNo = u.BillNo,
  48. customNo = u.CustomNo,
  49. orderType = u.OrderType,
  50. itemNumber = u.ItemNumber,
  51. descr = u.Descr,
  52. descr1 = u.Descr1,
  53. itemType = u.ItemType,
  54. qty = u.Qty,
  55. updateTime = u.UpdateTime?.ToString("yyyy-MM-dd"),
  56. sysCapacityDate = u.SysCapacityDate?.ToString("yyyy-MM-dd"),
  57. type = u.Type,
  58. bomStart = u.BomStart,
  59. bomEnd = u.BomEnd,
  60. lineStart = u.LineStart,
  61. lineEnd = u.LineEnd,
  62. productStart = u.ProductStart,
  63. productEnd = u.ProductEnd,
  64. needTime = u.NeedTime,
  65. sysMaterialDate = u.SysMaterialDate,
  66. cgNeedTime = u.CgNeedTime,
  67. cgEnd = u.CgEnd,
  68. blStart = u.BlStart,
  69. blEnd = u.BlEnd,
  70. startTime = u.StartTime,
  71. endTime = u.EndTime,
  72. ipqcJyStart = u.IpqcJyStart,
  73. ipqcJyEnd = u.IpqcJyEnd,
  74. fqcJyStart = u.FqcJyStart,
  75. fqcJyEnd = u.FqcJyEnd,
  76. rkStart = u.RkStart,
  77. rkEnd = u.RkEnd,
  78. fyStartTime = u.FyStartTime,
  79. fyEndTime = u.FyEndTime,
  80. levelNum = u.LevelNum,
  81. background = u.Background,
  82. businessId = u.BusinessId,
  83. }).ToList();
  84. return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list };
  85. }
  86. [DisplayName("获取计划联动看板详情")]
  87. [HttpGet("linkageplan/{id:long}")]
  88. public async Task<object> GetLinkagePlanDetail(long id)
  89. {
  90. var tenantId = _userManager.TenantId;
  91. var m = await _linkagePlanRep.GetFirstAsync(u => u.Id == id && u.TenantId == tenantId)
  92. ?? throw Oops.Oh("计划联动记录不存在");
  93. return new
  94. {
  95. id = m.Id,
  96. billNo = m.BillNo,
  97. customNo = m.CustomNo,
  98. orderType = m.OrderType,
  99. itemNumber = m.ItemNumber,
  100. descr = m.Descr,
  101. descr1 = m.Descr1,
  102. itemType = m.ItemType,
  103. qty = m.Qty,
  104. updateTime = m.UpdateTime?.ToString("yyyy-MM-dd HH:mm:ss"),
  105. sysCapacityDate = m.SysCapacityDate?.ToString("yyyy-MM-dd HH:mm:ss"),
  106. type = m.Type,
  107. bomStart = m.BomStart,
  108. bomEnd = m.BomEnd,
  109. lineStart = m.LineStart,
  110. lineEnd = m.LineEnd,
  111. productStart = m.ProductStart,
  112. productEnd = m.ProductEnd,
  113. needTime = m.NeedTime,
  114. sysMaterialDate = m.SysMaterialDate,
  115. cgNeedTime = m.CgNeedTime,
  116. cgEnd = m.CgEnd,
  117. blStart = m.BlStart,
  118. blEnd = m.BlEnd,
  119. startTime = m.StartTime,
  120. endTime = m.EndTime,
  121. ipqcJyStart = m.IpqcJyStart,
  122. ipqcJyEnd = m.IpqcJyEnd,
  123. fqcJyStart = m.FqcJyStart,
  124. fqcJyEnd = m.FqcJyEnd,
  125. rkStart = m.RkStart,
  126. rkEnd = m.RkEnd,
  127. fyStartTime = m.FyStartTime,
  128. fyEndTime = m.FyEndTime,
  129. levelNum = m.LevelNum,
  130. background = m.Background,
  131. };
  132. }
  133. [DisplayName("刷新计划联动数据")]
  134. [HttpPost("linkageplan/refresh")]
  135. public async Task<object> RefreshLinkagePlanData()
  136. {
  137. try
  138. {
  139. var result = await _s1MdpSyncTransformService.RunFullAsync(triggerType: "MANUAL");
  140. return new
  141. {
  142. message = "数据刷新成功",
  143. batchId = result.BatchId,
  144. result.StageRows,
  145. result.StandardRows,
  146. result.DwdRows
  147. };
  148. }
  149. catch (Exception ex)
  150. {
  151. throw Oops.Oh($"刷新数据失败: {ex.Message}");
  152. }
  153. }
  154. [DisplayName("执行计划联动存储过程")]
  155. [HttpPost("linkageplan/run")]
  156. public async Task<object> RunLinkagePlanProcedure()
  157. {
  158. try
  159. {
  160. await _db.Ado.ExecuteCommandAsync("CALL pr_Mes_LinkagePlan('')");
  161. return new { message = "计划联动刷新成功" };
  162. }
  163. catch (Exception ex)
  164. {
  165. throw Oops.Oh($"执行存储过程失败: {ex.Message}");
  166. }
  167. }
  168. }