using Admin.NET.Plugin.AiDOP.Manufacturing.Dto; namespace Admin.NET.Plugin.AiDOP.Manufacturing; /// /// S6 模工具台账管理 只读 list 服务。 /// /// 数据源:aidopdev.MoldToolList(模工具台账),忠实复刻证据 sql.txt(select * from MoldToolList), /// 列映射见字段配置图:类型=lx / 名称=MoldName / 供应商名=gysmc / 数量=MoldCount / 功能应用名称=gnyymc / /// 模具类型编码=MoldTypeCode / 对应产品物料编码=product_material_code / 图纸号=product_drawing_number / /// 产品名称=product_name / 工序=process。lx 含 模具 / 工装 / 检具(同表同页同源,类型下拉可筛选)。 /// sql.txt 无 WHERE,本服务不按 tenant_id/Domain 过滤(与旧系统全表查询一致)。排序 id DESC。 /// /// 本服务仅 SELECT:无新增/编辑/删除/写入;MoldToolList 有 tenant_id 但不据其过滤(透传参数)。 /// [ApiDescriptionSettings(Order = 320, Description = "模工具台账管理")] [Route("api/S6ToolingLedger")] [AllowAnonymous] [NonUnify] public class ToolingLedgerService : IDynamicApiController, ITransient { private readonly ISqlSugarClient _db; public ToolingLedgerService(ISqlSugarClient db) { _db = db; } /// /// 模工具台账列表(只读分页查询)。 /// [DisplayName("模工具台账列表")] [HttpGet("list")] public async Task GetList([FromQuery] ToolingLedgerListInput 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 { "1=1" }; var pars = new List(); if (!string.IsNullOrWhiteSpace(input.Name)) { where.Add("m.MoldName LIKE @Name"); pars.Add(new SugarParameter("@Name", $"%{input.Name.Trim()}%")); } if (!string.IsNullOrWhiteSpace(input.WorkGroup)) { where.Add("m.gnyymc LIKE @WorkGroup"); pars.Add(new SugarParameter("@WorkGroup", $"%{input.WorkGroup.Trim()}%")); } if (!string.IsNullOrWhiteSpace(input.UsageDept)) { where.Add("m.MoldUsingDepartment LIKE @UsageDept"); pars.Add(new SugarParameter("@UsageDept", $"%{input.UsageDept.Trim()}%")); } if (!string.IsNullOrWhiteSpace(input.Type)) { where.Add("m.lx = @Type"); pars.Add(new SugarParameter("@Type", input.Type.Trim())); } if (!string.IsNullOrWhiteSpace(input.MoldTypeCode)) { where.Add("m.MoldTypeCode LIKE @MoldTypeCode"); pars.Add(new SugarParameter("@MoldTypeCode", $"%{input.MoldTypeCode.Trim()}%")); } var whereSql = string.Join(" AND ", where); var total = await _db.Ado.GetIntAsync($"SELECT COUNT(1) FROM MoldToolList m WHERE {whereSql}", pars); var list = await _db.Ado.SqlQueryAsync( $""" SELECT m.id AS Id, m.lx AS Type, m.MoldName AS Name, m.gysmc AS SupplierName, m.MoldCount AS Qty, m.gnyymc AS FunctionAppName, m.MoldTypeCode AS MoldTypeCode, m.product_material_code AS ProductMaterialCode, m.product_drawing_number AS ProductDrawingNo, m.product_name AS ProductName, m.process AS Process FROM MoldToolList m WHERE {whereSql} ORDER BY m.id DESC LIMIT {pageSize} OFFSET {offset} """, pars); return new { total, page, pageSize, list }; } /// /// 类型下拉选项(MoldToolList.lx distinct:模具 / 工装 / 检具,只读)。 /// [DisplayName("模工具台账类型选项")] [HttpGet("type-options")] public async Task GetTypeOptions() { var list = await _db.Ado.SqlQueryAsync( """ SELECT DISTINCT lx AS Val FROM MoldToolList WHERE IFNULL(lx,'') <> '' ORDER BY lx """); return list; } }