快乐的昕的电脑
2025-11-18 45a69e109d3ed2f3ba6d03f722021d019cb8792a
Services/MesCutterLedgerManager.cs
@@ -23,6 +23,7 @@
    /// <summary>
    /// 刀具查询(支持编号或名称模糊查询)
    /// 上机、报废、维修出库不查询
    /// </summary>
    /// <param name="searchKey">查询关键字</param>
    /// <param name="pageIndex">页码</param>
@@ -30,7 +31,9 @@
    /// <returns>刀具查询结果</returns>
    public MesCutterLedger QueryTools(string searchKey, int pageIndex, int pageSize)
    {
        var excludeTypes = new[] { "上机", "报废", "维修出库" };
        var query = Db.Queryable<MesCutterLedger>()
            .Where(t => !excludeTypes.Contains(t.CutterType))
            .WhereIF(!string.IsNullOrEmpty(searchKey),
                t => t.CutterId.Contains(searchKey) || t.CutterName.Contains(searchKey));
@@ -55,24 +58,32 @@
    /// <param name="type">操作类型(上刀、下刀)</param>
    /// <param name="useLimit">使用上限</param>
    /// <returns>存储过程执行结果</returns>
    public object SubmitToolAction(string workOrderNo, string machineNo, string toolNo, string type, int? useLimit, decimal? sdjs = null, decimal? xdjs = null)
    public object SubmitToolAction(
        string workOrderNo,
        string machineNo,
        string toolNo,
        string type,
        int? useLimit,
        decimal? sdjs = null,
        decimal? xdjs = null,
        decimal? modlLifeWorning = null) // 新增:寿命比预警值(0~1的小数)
    {
        var parameters = new[]
        {
            new SugarParameter("V_WORK_ORDER_NO", workOrderNo),
            new SugarParameter("V_MACHINE_NO", machineNo),
            new SugarParameter("V_TOOL_NO", toolNo),
            new SugarParameter("V_TYPE", type),
            new SugarParameter("V_USE_LIMIT", useLimit ?? (object)DBNull.Value),
            new SugarParameter("V_SDJS", sdjs ?? (object)DBNull.Value),
            new SugarParameter("V_XDJS", xdjs ?? (object)DBNull.Value),
            new SugarParameter("PO_OUTMSG", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.String, Size = 200 },
            new SugarParameter("PO_OUTSUM", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.Int32 }
        };
        new SugarParameter("V_WORK_ORDER_NO", workOrderNo),
        new SugarParameter("V_MACHINE_NO", machineNo),
        new SugarParameter("V_TOOL_NO", toolNo),
        new SugarParameter("V_TYPE", type),
        new SugarParameter("V_USE_LIMIT", useLimit ?? (object)DBNull.Value),
        new SugarParameter("V_SDJS", sdjs ?? (object)DBNull.Value),
        new SugarParameter("V_XDJS", xdjs ?? (object)DBNull.Value),
        new SugarParameter("PO_OUTMSG", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.String, Size = 200 },
        new SugarParameter("PO_OUTSUM", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.Int32 },
        new SugarParameter("V_MODL_LIFE_WORNING", modlLifeWorning ?? (object)DBNull.Value) // 新增
    };
        try
        {
            Db.Ado.UseStoredProcedure().SqlQuery<object>(
                "PROC_TOOL_ACTION", parameters);
            Db.Ado.UseStoredProcedure().SqlQuery<object>("PROC_TOOL_ACTION", parameters);
            var outMsg = parameters[7].Value?.ToString();
            var outSum = parameters[8].Value;
            // 这里 outMsg 已经包含了存储过程每步DML的详细错误信息