|
|
@@ -0,0 +1,113 @@
|
|
|
+using Admin.NET.Plugin.AiDOP.Manufacturing.Dto;
|
|
|
+
|
|
|
+namespace Admin.NET.Plugin.AiDOP.Manufacturing;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// 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 但不据其过滤(透传参数)。
|
|
|
+/// </summary>
|
|
|
+[ApiDescriptionSettings(Order = 320, Description = "模工具台账管理")]
|
|
|
+[Route("api/S6ToolingLedger")]
|
|
|
+[AllowAnonymous]
|
|
|
+[NonUnify]
|
|
|
+public class ToolingLedgerService : IDynamicApiController, ITransient
|
|
|
+{
|
|
|
+ private readonly ISqlSugarClient _db;
|
|
|
+
|
|
|
+ public ToolingLedgerService(ISqlSugarClient db)
|
|
|
+ {
|
|
|
+ _db = db;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 模工具台账列表(只读分页查询)。
|
|
|
+ /// </summary>
|
|
|
+ [DisplayName("模工具台账列表")]
|
|
|
+ [HttpGet("list")]
|
|
|
+ public async Task<object> 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<string> { "1=1" };
|
|
|
+ var pars = new List<SugarParameter>();
|
|
|
+
|
|
|
+ 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<ToolingLedgerListRow>(
|
|
|
+ $"""
|
|
|
+ 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 };
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 类型下拉选项(MoldToolList.lx distinct:模具 / 工装 / 检具,只读)。
|
|
|
+ /// </summary>
|
|
|
+ [DisplayName("模工具台账类型选项")]
|
|
|
+ [HttpGet("type-options")]
|
|
|
+ public async Task<object> GetTypeOptions()
|
|
|
+ {
|
|
|
+ var list = await _db.Ado.SqlQueryAsync<ToolingLedgerTypeOption>(
|
|
|
+ """
|
|
|
+ SELECT DISTINCT lx AS Val
|
|
|
+ FROM MoldToolList
|
|
|
+ WHERE IFNULL(lx,'') <> ''
|
|
|
+ ORDER BY lx
|
|
|
+ """);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+}
|