using Gs.Toolbox; using Gs.Toolbox.ApiCore.Abstract.Mvc; using Gs.Toolbox.ApiCore.Common.Mvc; using Gs.Toolbox.ApiCore.Group; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.Data; using System.Data.SqlClient; using System.Dynamic; using System.Text; using static Gs.Toolbox.UtilityHelper; namespace Gs.Wom.Service; [ApiGroup(ApiGroupNames.QC)] public class MesQcExceptionalManager : IRomteService { private readonly IHttpContextAccessor _http; private readonly string _userCode, _userGuid, _orgFids; public MesQcExceptionalManager(IHttpContextAccessor httpContextAccessor) { _http = httpContextAccessor; (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http); } /// /// 读取列表,支持分页 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto> GetListPage([FromBody] dynamic model) { int currentPage = model.currentPage; int everyPageSize = model.everyPageSize; string sortName = model.sortName; string keyWhere = model.keyWhere; SqlParameter[] parameters = { new("@inCurrentPage", currentPage), new("@inEveryPageSize", everyPageSize), new("@inSortName", sortName), new("@inSortOrder", ""), new("@inQueryWhere", keyWhere), new("@inFid", ""), new("@inP1", ""), new("@inP2", ""), new("@inP3", ""), new("@inP4", "") }; var dset = new DataSet(); var _pglist = new PageList { total = 0, everyPageSize = 0, pages = 0, list = new List() }; try { dset = DbHelperSQL.RunProcedure("iqc_ycd_lst", parameters, "0"); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) //有数据 { var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString()); var pages = intTotal % everyPageSize != 0 ? intTotal / everyPageSize + 1 : intTotal / everyPageSize; _pglist.total = intTotal; _pglist.everyPageSize = everyPageSize; _pglist.pages = pages; var _dy = dset.Tables[0].TableToDynamicList(); _pglist.list = _dy; } } catch (Exception ex) { LogHelper.Debug(ToString(), ex.Message); } return ReturnDto>.QuickReturn(_pglist, ReturnCode.Success, "读取成功"); } /// /// 读取 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto GetModel([FromBody] dynamic model) { string guid = model.guid.ToString(); dynamic m = new ExpandoObject(); m.list = new List(); m.list2 = new List(); SqlParameter[] parameters = { new("@inMainGuid", guid), new("@inP1", ""), new("@inP2", ""), new("@inP3", ""), new("@inP4", "") }; var dset = new DataSet(); try { dset = DbHelperSQL.RunProcedure("[iqc_ycd_mx]", parameters, "0"); if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0) { var dr = dset.Tables[0].Rows[0]; m = dr.RowToDynamic(); var _tb = dset.Tables[1].TableToDynamicList(); m.list = _tb; } } catch (Exception ex) { LogHelper.Debug(ToString(), ex.Message); } if (m != null) return ReturnDto.QuickReturn(m, ReturnCode.Success, "读取成功!"); return ReturnDto.QuickReturn(m, ReturnCode.Default, "读取失败!"); } /// /// 审核 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto EditModelSubmit([FromBody] dynamic mode) { string _guid = mode.guid; string _inFieldValue = mode.inFieldValue; string _proName = "iqc_ycd_submit"; dynamic m = new ExpandoObject(); m.outSum = -1; m.outMsg = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand(_proName, conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 300), new("@outSum", SqlDbType.Int), new("@inEdtUserGuid", _userGuid), new("@inOrderGuid", _guid), new("@inFieldValue", _inFieldValue), new("@in1", ""), new("@in2", "") }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); cmd.ExecuteNonQuery(); m.outMsg = parameters[0].Value.ToString(); m.outSum = int.Parse(parameters[1].Value.ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "iqc_ycd_submit error:" + ex.Message); m.outMsg = ex.Message; return ReturnDto.QuickReturn(m, ReturnCode.Default, ex.Message); } finally { conn.Close(); } } } return ReturnDto.QuickReturn(m, ReturnCode.Success, "操作成功!"); } /// /// 增加或编辑实体-仅处理明细数据的编辑操作 /// /// 包含明细列表的模型 /// 处理结果 [RequestMethod(RequestMethods.POST)] public ReturnDto EditModel([FromBody] dynamic model) { // 初始化字符串构建器处理明细数据 Guid? guid = model.guid; //主键 var _sb = new StringBuilder(); var _split = "|"; // 字段分隔符 var _lineSeparator = "~"; // 行分隔符 // 处理明细列表,转换为存储过程所需格式 foreach (var m in model.list) { // 获取明细项主键(可为空,新增时为空) string _guid = m.Guid?.ToString() ?? Guid.Empty.ToString(); // 拼接单行明细数据:|申请数量|备注|明细GUID var _line = m.BatchQty + _split + m.GfRkqty + _split + m.LfRkqtyz + _split + m.HandResult + _split + m.ChooseType + _split + m.Process + _split + (UtilityHelper.CheckGuid(_guid) ? _guid : Guid.Empty.ToString()); // 多条明细间添加分隔符 if (_sb.Length > 0) _sb.Append(_lineSeparator); _sb.Append(_line); } // 准备返回结果对象 dynamic mObj = new ExpandoObject(); mObj.outMsg = ""; // 操作消息 mObj.outSum = -1; // 操作结果状态(-1表示失败) mObj.outGuid = ""; // 可保留用于返回明细相关的GUID mObj.outNo = ""; // 可保留用于返回明细相关的编号 // 调用存储过程处理明细数据 using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand("[prc_Qcyc_edt]", conn)) // 建议修改存储过程名为明细专用 { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; // 定义存储过程参数(仅保留与明细相关的参数) SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 300), // 输出:操作消息 new("@outSum", SqlDbType.Int), // 输出:结果状态(>0表示成功) new("@outGuid", SqlDbType.UniqueIdentifier),// 输出:可返回处理后的明细关联ID new("@outNo", SqlDbType.NVarChar, 300), // 输出:可返回明细相关编号 new("@inOrderGuid",UtilityHelper.CheckGuid(guid)? guid : DBNull.Value),//主表GUID new("@inEdtUserGuid", _userGuid), // 输入:操作用户GUID new("@inLineList", _sb.ToString()) // 输入:处理后的明细字符串 }; // 设置输出参数方向 parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; parameters[2].Direction = ParameterDirection.Output; parameters[3].Direction = ParameterDirection.Output; // 添加参数到命令对象 foreach (var parameter in parameters) cmd.Parameters.Add(parameter); // 执行存储过程 cmd.ExecuteNonQuery(); // 从输出参数获取结果 mObj.outMsg = parameters[0].Value?.ToString() ?? "处理成功"; mObj.outSum = int.TryParse(parameters[1].Value?.ToString(), out int sum) ? sum : -1; mObj.outGuid = parameters[2].Value?.ToString() ?? ""; mObj.outNo = parameters[3].Value?.ToString() ?? ""; } catch (Exception ex) { // 记录异常日志 LogHelper.Debug(ToString(), $"处理明细时出错:{ex.Message}"); mObj.outMsg = ex.Message; mObj.outSum = -1; } finally { conn.Close(); } } } // 根据处理结果返回对应状态 if (mObj.outSum <= 0) return ReturnDto.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg); return ReturnDto.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg); } /// /// 异常单OAtoMes /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto YcdOaToMes([FromBody] dynamic mode) { string _guid = mode.guid; string _inFieldValue = mode.inFieldValue; string freceQty = mode.gs001; //判定结果 string inFngHandle = mode.gs002; //处理方式 string inFmrmode = mode.gs003; //退料方式 string _proName = "iqc_ycd_oa_mes"; dynamic m = new ExpandoObject(); m.outSum = -1; m.outMsg = ""; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { using (var cmd = new SqlCommand(_proName, conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new("@outMsg", SqlDbType.NVarChar, 2500), new("@outSum", SqlDbType.Int), new("@inEdtUserGuid", _userGuid), new("@inOrderGuid", _guid), new("@inFieldValue", _inFieldValue), new("@in1", ""), new("@in2", ""), new("@freceQty", freceQty), new("@inFngHandle", inFngHandle), new("@inFmrmode", inFmrmode), }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; foreach (var parameter in parameters) cmd.Parameters.Add(parameter); cmd.ExecuteNonQuery(); m.outMsg = parameters[0].Value.ToString(); m.outSum = int.Parse(parameters[1].Value.ToString()); } catch (Exception ex) { LogHelper.Debug(ToString(), "iqc_ycd_submit error:" + ex.Message); m.outMsg = ex.Message; return ReturnDto.QuickReturn(m, ReturnCode.Default, ex.Message); } finally { conn.Close(); } } } return ReturnDto.QuickReturn(m, ReturnCode.Success, "操作成功!"); } }