LinkagePlanService.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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. }).ToList();
  78. return new { total = paged.Total, page = input.Page, pageSize = input.PageSize, list };
  79. }
  80. [DisplayName("获取计划联动看板详情")]
  81. [HttpGet("linkageplan/{id:long}")]
  82. public async Task<object> GetLinkagePlanDetail(long id)
  83. {
  84. var tenantId = _userManager.TenantId;
  85. var m = await _linkagePlanRep.GetFirstAsync(u => u.Id == id && u.TenantId == tenantId)
  86. ?? throw Oops.Oh("计划联动记录不存在");
  87. return new
  88. {
  89. id = m.Id,
  90. billNo = m.BillNo,
  91. customNo = m.CustomNo,
  92. orderType = m.OrderType,
  93. itemNumber = m.ItemNumber,
  94. descr = m.Descr,
  95. descr1 = m.Descr1,
  96. itemType = m.ItemType,
  97. qty = m.Qty,
  98. updateTime = m.UpdateTime?.ToString("yyyy-MM-dd HH:mm:ss"),
  99. sysCapacityDate = m.SysCapacityDate?.ToString("yyyy-MM-dd HH:mm:ss"),
  100. type = m.Type,
  101. bomStart = m.BomStart,
  102. bomEnd = m.BomEnd,
  103. lineStart = m.LineStart,
  104. lineEnd = m.LineEnd,
  105. productStart = m.ProductStart,
  106. productEnd = m.ProductEnd,
  107. needTime = m.NeedTime,
  108. sysMaterialDate = m.SysMaterialDate,
  109. cgNeedTime = m.CgNeedTime,
  110. cgEnd = m.CgEnd,
  111. blStart = m.BlStart,
  112. blEnd = m.BlEnd,
  113. startTime = m.StartTime,
  114. endTime = m.EndTime,
  115. ipqcJyStart = m.IpqcJyStart,
  116. ipqcJyEnd = m.IpqcJyEnd,
  117. fqcJyStart = m.FqcJyStart,
  118. fqcJyEnd = m.FqcJyEnd,
  119. rkStart = m.RkStart,
  120. rkEnd = m.RkEnd,
  121. fyStartTime = m.FyStartTime,
  122. fyEndTime = m.FyEndTime,
  123. levelNum = m.LevelNum,
  124. background = m.Background,
  125. };
  126. }
  127. [DisplayName("刷新计划联动数据")]
  128. [HttpPost("linkageplan/refresh")]
  129. public async Task<object> RefreshLinkagePlanData()
  130. {
  131. try
  132. {
  133. var result = await _s1MdpSyncTransformService.RunFullAsync(triggerType: "MANUAL");
  134. return new
  135. {
  136. message = "数据刷新成功",
  137. batchId = result.BatchId,
  138. result.StageRows,
  139. result.StandardRows,
  140. result.DwdRows
  141. };
  142. }
  143. catch (Exception ex)
  144. {
  145. throw Oops.Oh($"刷新数据失败: {ex.Message}");
  146. }
  147. }
  148. }