namespace Admin.NET.Plugin.AiDOP.Universal; /// /// 通用工单选择服务 /// [ApiDescriptionSettings(Order = 281, Description = "通用-工单选择")] [Route("api/Universal")] [AllowAnonymous] [NonUnify] public class UniversalWorkOrderService : IDynamicApiController, ITransient { private readonly ISqlSugarClient _db; public UniversalWorkOrderService(ISqlSugarClient db) { _db = db; } [DisplayName("获取工单选择列表")] [HttpGet("work-order/page")] public async Task GetPage([FromQuery] UniversalWorkOrderPageInput input) { var page = input.Page <= 0 ? 1 : input.Page; var pageSize = input.PageSize <= 0 ? 10 : input.PageSize; var offset = (page - 1) * pageSize; var where = new List { "a.Status!='c'", "a.Workord in (select Workord from WorkOrdRouting where ProcessOut=1 and WorkOrd not in (SELECT WorkOrd from PurOrdMaster where Potype='PW' and WorkOrd is not null))" }; var pars = new List(); if (!string.IsNullOrWhiteSpace(input.WorkOrd)) { where.Add("a.WorkOrd LIKE @WorkOrd"); pars.Add(new SugarParameter("@WorkOrd", $"%{input.WorkOrd.Trim()}%")); } var fromSql = $""" FROM WorkOrdMaster a LEFT JOIN ItemMaster b ON a.ItemNum=b.ItemNum WHERE {string.Join(" AND ", where)} """; var total = await _db.Ado.GetIntAsync($"SELECT COUNT(1) {fromSql}", pars); var list = await _db.Ado.SqlQueryAsync( $""" SELECT a.recid AS Id, a.Batch AS Batch, a.Drawing AS Drawing, a.Typed AS Typed, a.WorkOrd AS WorkOrd, a.OrdDate AS OrdDate, a.DueDate AS DueDate, a.ItemNum AS ItemNum, a.Project AS Project, a.QtyOrded AS QtyOrded, a.QtyCompleted AS QtyCompleted, a.Remark AS Remark, LOWER(a.Status) AS Status, a.WoTyped AS WoTyped, b.Descr AS Descr, b.Descr1 AS Descr1, a.lbrvar AS Lbrvar {fromSql} ORDER BY {BuildOrderBy(input.SortField, input.SortOrder)} LIMIT {pageSize} OFFSET {offset} """, pars); return new { total, page, pageSize, list }; } private static string BuildOrderBy(string? sortField, string? sortOrder) { var dir = string.Equals(sortOrder, "asc", StringComparison.OrdinalIgnoreCase) ? "ASC" : "DESC"; return sortField?.ToLowerInvariant() switch { "workord" => $"a.WorkOrd {dir}", "itemnum" => $"a.ItemNum {dir}", "descr" => $"b.Descr {dir}", "orddate" => $"a.OrdDate {dir}", _ => "a.RecID DESC" }; } }