xwt
2025-11-13 cec90a62de5a66f258a4108f03688acfe93b4a66
StandardInterface/MES.Service/service/QC/RKJService.cs
@@ -875,11 +875,13 @@
    /// <param name="id">检验单ID</param>
    /// <param name="userNo">提交用户</param>
    /// <returns>更新结果</returns>
    public int SubmitInspection(decimal id, string userNo)
    public bool SubmitInspection(decimal id, string userNo)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        try
        {
            // 获取检验单详细信息
            var db = SqlSugarHelper.GetInstance();
            // 先获取检验单详细信息(用于钉钉推送判断)
            var inspectionData = db.Queryable<QsItemOqcReq>()
                .Where(it => it.Id == id)
                .First();
@@ -889,6 +891,40 @@
                throw new Exception("检验单不存在");
            }
            
            // 定义输出参数
            var outputResult = new SugarParameter("PO_RESULT", null,
                System.Data.DbType.Int32, ParameterDirection.Output,
                4000);
            var outputMessage = new SugarParameter("PO_MSG", null,
                System.Data.DbType.String,
                ParameterDirection.Output, 4000);
            // 定义输入参数
            var parameters = new List<SugarParameter>
            {
                new("P_ID", id, System.Data.DbType.Decimal, ParameterDirection.Input),
                new("P_USER", userNo, System.Data.DbType.String, ParameterDirection.Input),
                outputResult,
                outputMessage
            };
            // 使用 SqlSugar 执行存储过程
            db.Ado.ExecuteCommand(
                "BEGIN PRC_RKJ_UPDATE_SH(:P_ID, :P_USER, :PO_RESULT, :PO_MSG); END;",
                parameters.ToArray());
            // 获取输出参数的值
            var resultValue = outputResult.Value?.ToString();
            var messageValue = outputMessage.Value?.ToString();
            // 如果返回结果不为0,表示失败
            if ("1".Equals(resultValue))
            {
                throw new Exception(messageValue ?? "提交失败");
            }
            // 存储过程执行成功后,处理钉钉推送逻辑
            // 检查钉钉推送条件:PSZT为待判,且不良原因、不良描述、所属车间不为空
            bool shouldPushToDingTalk = inspectionData.Pszt == "待判" && 
                                       !string.IsNullOrEmpty(inspectionData.Blyy) && 
@@ -950,14 +986,12 @@
                }
            }
            
            // 更新检验单状态
            return db.Updateable<QsItemOqcReq>()
                .SetColumns(it => it.Fsubmit == 1) // 设置提交状态为1(已提交)
                .SetColumns(it => it.FcheckBy == userNo) // 设置检验人
                .SetColumns(it => it.FcheckDate == DateTime.Now) // 设置检验时间
                .Where(it => it.Id == id)
                .ExecuteCommand();
        });
            return true;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    /// <summary>