LinkagePlanService.cs 6.5 KB

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