using MES.Service.DB; using MES.Service.Dto.service; using MES.Service.util; using SqlSugar; using System.Data; namespace MES.Service.service.QC; public class GDBLQRService { /// /// 获取工单头信息和备料明细列表(双游标) /// public (dynamic Header, List Details, string Msg) GetMoFullInfo(string moNo) { var db = SqlSugarHelper.GetInstance(); var parameters = new List { new("pi_mo_no", moNo), new("po_header", null) { Direction = ParameterDirection.Output }, new("po_details", null) { Direction = ParameterDirection.Output }, new("po_msg", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.String, Size = 200 } }; DataSet resultSets = db.Ado.UseStoredProcedure().GetDataSetAll("PRC_PREPARE_GET_MO_FULL_INFO", parameters); var msg = parameters.First(p => p.ParameterName == "po_msg").Value?.ToString() ?? "OK"; if (msg != "OK") return (null, null, msg); // ❌ 状态异常,不返回任何数据 var header = resultSets.Tables[0].ToDynamic().FirstOrDefault(); var details = resultSets.Tables[1].ToDynamic(); return (header, details, msg); } /// /// 扫码更新物料扫描数量 /// public string ScanBarcode(string moNo, string barcode) { var db = SqlSugarHelper.GetInstance(); var parameters = new List { new("pi_mo_no", moNo), new("pi_barcode", barcode), new("po_msg", null) { Direction = ParameterDirection.Output, DbType = System.Data.DbType.String, // ✅ 显式指定 System.Data.DbType 避免歧义 Size = 200 } }; db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PREPARE_SCAN_BARCODE", parameters); return parameters.First(p => p.ParameterName == "po_msg").Value?.ToString() ?? ""; } /// /// 工单生产确认(打标确认人和时间) /// public void ConfirmPrepare(string moNo, string user) { var db = SqlSugarHelper.GetInstance(); var parameters = new List { new("pi_mo_no", moNo), new("pi_user", user) }; db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PREPARE_PRODUCTION_CONFIRM", parameters); } /// /// 工单品质复核确认(打标确认人和时间) /// public void ReviewPrepare(string moNo, string user) { var db = SqlSugarHelper.GetInstance(); var parameters = new List { new("pi_mo_no", moNo), new("pi_user", user) }; db.Ado.UseStoredProcedure().ExecuteCommand("PRC_PREPARE_QUALITY_REVIEW", parameters); } }