using PadApplication.DB;
|
using PadApplication.Entites.DbModels;
|
using PadApplication.Entites.Dto;
|
using System.Net.Http;
|
using System.Text;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
using System.Data;
|
using System.Dynamic;
|
using SystemDataDbType = System.Data.DbType;
|
|
namespace PadApplication.Services;
|
|
/// <summary>
|
/// 工单状态管理类,负责工单状态相关的数据操作
|
/// 继承自Repository<MesCutterLedger>基类,包含基础的CRUD操作
|
/// </summary>
|
public class MesCutterLedgerManager : Repository<MesCutterLedger>
|
{
|
//private readonly MesQaItemsDetect02Manager
|
//mesQaItemsDetect02Manager = new();
|
|
/// <summary>
|
/// 刀具查询(支持编号或名称模糊查询)
|
/// </summary>
|
/// <param name="searchKey">查询关键字</param>
|
/// <param name="pageIndex">页码</param>
|
/// <param name="pageSize">每页大小</param>
|
/// <returns>刀具查询结果</returns>
|
public MesCutterLedger QueryTools(string searchKey, int pageIndex, int pageSize)
|
{
|
var query = Db.Queryable<MesCutterLedger>()
|
.WhereIF(!string.IsNullOrEmpty(searchKey),
|
t => t.CutterId.Contains(searchKey) || t.CutterName.Contains(searchKey));
|
|
var total = query.Count();
|
var tbBillList = query
|
.OrderBy(t => t.CutterId)
|
.ToPageList(pageIndex, pageSize, ref total); // 使用ToPageList分页
|
|
return new MesCutterLedger
|
{
|
tbBillList = tbBillList,
|
total = total
|
};
|
}
|
|
/// <summary>
|
/// 上下刀操作(上刀type=0,下刀type=1)
|
/// 仅负责参数转发,所有数据写入由存储过程完成。
|
/// </summary>
|
/// <param name="machineNo">机台编号</param>
|
/// <param name="toolNo">刀具编号</param>
|
/// <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)
|
{
|
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 }
|
};
|
try
|
{
|
Db.Ado.UseStoredProcedure().SqlQuery<object>(
|
"PROC_TOOL_ACTION", parameters);
|
var outMsg = parameters[7].Value?.ToString();
|
var outSum = parameters[8].Value;
|
// 这里 outMsg 已经包含了存储过程每步DML的详细错误信息
|
return new { outMsg, outSum };
|
}
|
catch (Exception ex)
|
{
|
// 只有存储过程本身执行异常才会进入这里
|
throw new Exception($"{ex.Message}");
|
}
|
}
|
|
/// <summary>
|
/// 获取工单表单数据(通过工单编号和机台编号查询)。
|
/// 仅负责参数转发,所有数据读取由存储过程完成。
|
/// </summary>
|
/// <param name="workOrderNo">工单编号</param>
|
/// <param name="machineNo">机台编号</param>
|
/// <returns>表单数据的动态列表</returns>
|
public List<dynamic> GetFormData(string workOrderNo, string machineNo)
|
{
|
var parameters = new[]
|
{
|
new SugarParameter("V_WORK_ORDER_NO", workOrderNo),
|
new SugarParameter("V_MACHINE_NO", machineNo),
|
new SugarParameter("PO_CURSOR", null) { Direction = ParameterDirection.Output, DbType = SystemDataDbType.Object }
|
};
|
// 假设存储过程名为 PROC_GET_FORM_DATA,返回游标
|
var result = Db.Ado.UseStoredProcedure().GetDataTable("PROC_GET_FORM_DATA", parameters);
|
// DataTable 转 List<dynamic>
|
var list = new List<dynamic>();
|
foreach (DataRow row in result.Rows)
|
{
|
IDictionary<string, object> expando = new ExpandoObject();
|
foreach (DataColumn col in result.Columns)
|
{
|
expando[col.ColumnName] = row[col];
|
}
|
list.Add(expando);
|
}
|
return list;
|
}
|
}
|