ToolingLedgerService.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using Admin.NET.Plugin.AiDOP.Manufacturing.Dto;
  2. namespace Admin.NET.Plugin.AiDOP.Manufacturing;
  3. /// <summary>
  4. /// S6 模工具台账管理 只读 list 服务。
  5. ///
  6. /// 数据源:aidopdev.MoldToolList(模工具台账),忠实复刻证据 sql.txt(select * from MoldToolList),
  7. /// 列映射见字段配置图:类型=lx / 名称=MoldName / 供应商名=gysmc / 数量=MoldCount / 功能应用名称=gnyymc /
  8. /// 模具类型编码=MoldTypeCode / 对应产品物料编码=product_material_code / 图纸号=product_drawing_number /
  9. /// 产品名称=product_name / 工序=process。lx 含 模具 / 工装 / 检具(同表同页同源,类型下拉可筛选)。
  10. ///
  11. /// 本服务仅 SELECT:无新增/编辑/删除/写入;所有查询严格按当前登录用户的可信租户过滤。
  12. /// </summary>
  13. [ApiDescriptionSettings(Order = 320, Description = "模工具台账管理")]
  14. [Route("api/S6ToolingLedger")]
  15. [NonUnify]
  16. public class ToolingLedgerService : IDynamicApiController, ITransient
  17. {
  18. private readonly ISqlSugarClient _db;
  19. private readonly UserManager _userManager;
  20. public ToolingLedgerService(ISqlSugarClient db, UserManager userManager)
  21. {
  22. _db = db;
  23. _userManager = userManager;
  24. }
  25. /// <summary>
  26. /// 模工具台账列表(只读分页查询)。
  27. /// </summary>
  28. [DisplayName("模工具台账列表")]
  29. [HttpGet("list")]
  30. public async Task<object> GetList([FromQuery] ToolingLedgerListInput input)
  31. {
  32. var page = input.Page <= 0 ? 1 : input.Page;
  33. var pageSize = input.PageSize <= 0 ? 10 : input.PageSize;
  34. var offset = (page - 1) * pageSize;
  35. var tenantId = Infrastructure.AidopTenantScope.ResolveOrThrow(_userManager);
  36. var where = new List<string> { "m.tenant_id = @TenantId" };
  37. var pars = new List<SugarParameter> { new("@TenantId", tenantId) };
  38. if (!string.IsNullOrWhiteSpace(input.Name))
  39. {
  40. where.Add("m.MoldName LIKE @Name");
  41. pars.Add(new SugarParameter("@Name", $"%{input.Name.Trim()}%"));
  42. }
  43. if (!string.IsNullOrWhiteSpace(input.WorkGroup))
  44. {
  45. where.Add("m.gnyymc LIKE @WorkGroup");
  46. pars.Add(new SugarParameter("@WorkGroup", $"%{input.WorkGroup.Trim()}%"));
  47. }
  48. if (!string.IsNullOrWhiteSpace(input.UsageDept))
  49. {
  50. where.Add("m.MoldUsingDepartment LIKE @UsageDept");
  51. pars.Add(new SugarParameter("@UsageDept", $"%{input.UsageDept.Trim()}%"));
  52. }
  53. if (!string.IsNullOrWhiteSpace(input.Type))
  54. {
  55. where.Add("m.lx = @Type");
  56. pars.Add(new SugarParameter("@Type", input.Type.Trim()));
  57. }
  58. if (!string.IsNullOrWhiteSpace(input.MoldTypeCode))
  59. {
  60. where.Add("m.MoldTypeCode LIKE @MoldTypeCode");
  61. pars.Add(new SugarParameter("@MoldTypeCode", $"%{input.MoldTypeCode.Trim()}%"));
  62. }
  63. var whereSql = string.Join(" AND ", where);
  64. var total = await _db.Ado.GetIntAsync($"SELECT COUNT(1) FROM MoldToolList m WHERE {whereSql}", pars);
  65. var list = await _db.Ado.SqlQueryAsync<ToolingLedgerListRow>(
  66. $"""
  67. SELECT
  68. m.id AS Id,
  69. m.lx AS Type,
  70. m.MoldName AS Name,
  71. m.gysmc AS SupplierName,
  72. m.MoldCount AS Qty,
  73. m.gnyymc AS FunctionAppName,
  74. m.MoldTypeCode AS MoldTypeCode,
  75. m.product_material_code AS ProductMaterialCode,
  76. m.product_drawing_number AS ProductDrawingNo,
  77. m.product_name AS ProductName,
  78. m.process AS Process
  79. FROM MoldToolList m
  80. WHERE {whereSql}
  81. ORDER BY m.id DESC
  82. LIMIT {pageSize} OFFSET {offset}
  83. """,
  84. pars);
  85. return new { total, page, pageSize, list };
  86. }
  87. /// <summary>
  88. /// 类型下拉选项(MoldToolList.lx distinct:模具 / 工装 / 检具,只读)。
  89. /// </summary>
  90. [DisplayName("模工具台账类型选项")]
  91. [HttpGet("type-options")]
  92. public async Task<object> GetTypeOptions()
  93. {
  94. var tenantId = Infrastructure.AidopTenantScope.ResolveOrThrow(_userManager);
  95. var list = await _db.Ado.SqlQueryAsync<ToolingLedgerTypeOption>(
  96. """
  97. SELECT DISTINCT lx AS Val
  98. FROM MoldToolList
  99. WHERE tenant_id = @TenantId
  100. AND IFNULL(lx,'') <> ''
  101. ORDER BY lx
  102. """,
  103. new SugarParameter("@TenantId", tenantId));
  104. return list;
  105. }
  106. }