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);
}
}