LinkagePlanService.cs 6.1 KB

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