using System.Data; using System.Data.SqlClient; using Masuit.Tools; using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.entity.Base; using SqlSugar; namespace NewPdaSqlServer.service.Warehouse; public class MesOaToMesManager : Repository { public string ApproveIqcEx(OaToMesQuery query) { var _strMsg = ""; var _intSum = 0; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { // 参数校验增强 if (query.iqcExNo.IsNullOrEmpty()) throw new Exception("异常单号不允许为空"); if (query.dataJson == null || !query.dataJson.Any()) throw new Exception("检验数据不能为空"); using (var cmd = new SqlCommand("[iqc_ycd_oa_mes]", conn)) { try { conn.Open(); //// 校验MES检验单 //var checkSql = @"SELECT B.releaseNo AS jydNo // FROM Mes_QC_Exceptional_Detail B // LEFT JOIN Mes_QC_Exceptional A ON A.guid = B.pGuid // WHERE A.fBillNo = @iqcExNo"; //using (var checkCmd = new SqlCommand(checkSql, conn)) //{ // checkCmd.Parameters.AddWithValue("@iqcExNo", query.iqcExNo); // var dbJydList = new List(); // using (var reader = checkCmd.ExecuteReader()) // { // while (reader.Read()) // { // dbJydList.Add(reader["jydNo"].ToString()); // } // } // // 验证数据一致性 // var inputJydList = query.dataJson.Select(d => d.jyd).ToList(); // var diff = inputJydList.Except(dbJydList).Union(dbJydList.Except(inputJydList)); // if (diff.Any()) // { // throw new Exception($"传入异常处置单对应的检验单号与MES不匹配,差异单号:{string.Join(",", diff)}"); // } //} // 循环处理每条数据 foreach (var item in query.dataJson) { cmd.Parameters.Clear(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new SqlParameter("@outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output }, new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, new SqlParameter("@ycdNo", query.iqcExNo), new SqlParameter("@jydNo", item.jyd), new SqlParameter("@xblb", item.xblb), new SqlParameter("@clyj", item.clyj), new SqlParameter("@jssl", item.jssl), new SqlParameter("@inFieldValue", 1) }; cmd.Parameters.AddRange(parameters); cmd.ExecuteNonQuery(); _intSum += (int)parameters[1].Value; if ((int)parameters[1].Value <= 0) { throw new Exception(parameters[0].Value.ToString()); } } string rtnMsg = $"{query.iqcExNo}审批推送MES成功!"; return rtnMsg; } catch (Exception ex) { // 增强异常日志 _strMsg = $"异常处置失败:{ex.Message}"; throw new Exception(_strMsg); } finally { conn.Close(); } } } } public string RetrunIqcEx(OaToMesRQuery query) { var _strMsg = ""; var _intSum = 0; using (var conn = new SqlConnection(DbHelperSQL.strConn)) { // 参数校验增强 if (query.iqcExNo.IsNullOrEmpty()) throw new Exception("异常单号不允许为空"); using (var cmd = new SqlCommand("[iqc_ycd_oa_mes]", conn)) { try { conn.Open(); int inFieldValue = 0; cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new SqlParameter("@outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output }, new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output }, new SqlParameter("@ycdNo", query.iqcExNo), new SqlParameter("@jydNo", DBNull.Value), new SqlParameter("@xblb", DBNull.Value), new SqlParameter("@clyj", DBNull.Value), new SqlParameter("@jssl", DBNull.Value), new SqlParameter("@inFieldValue", inFieldValue) }; cmd.Parameters.AddRange(parameters); cmd.ExecuteNonQuery(); _intSum = (int)parameters[1].Value; if (_intSum <= 0) { throw new Exception(parameters[0].Value.ToString()); } return $"{query.iqcExNo}退回操作成功!影响记录数:{_intSum}"; } catch (Exception ex) { _strMsg = $"异常单退回失败:{ex.Message}"; throw new Exception(_strMsg); } finally { conn.Close(); } } } } }