using Gs.Toolbox; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Data; using System.Data.SqlClient; namespace Gs.OpenApi.Services { [ApiGroup(ApiGroupNames.ErpMes)] public class ErpMesController : IRomteService { /// /// 向Mes推数据 /// /// /// [RequestMethod(RequestMethods.POST)] public ReturnDto PushByCategory([FromBody] dynamic model) { string category = model.category; JArray jArray = model.list; string tmpGuid = Guid.NewGuid().ToString(); int it1 = 0, it2 = 0; //建立table System.Data.DataTable dt = new DataTable(); dt.Columns.Add("tmpGuid", Type.GetType("System.Guid")); dt.Columns.Add("category", Type.GetType("System.String")); for (int r = 0; r < 20; r++) { dt.Columns.Add("t" + r.ToString(), Type.GetType("System.String")); } //解析json try { foreach (var jsonitem in jArray) { JObject _job = (JObject)jsonitem; string _t1 = _job["t1"].ToString(); string _t2 = _job["t2"].ToString(); DataRow _row = dt.NewRow(); _row["tmpGuid"] = tmpGuid; _row["category"] = category; _row["t1"] = _t1; _row["t2"] = _t2; dt.Rows.Add(_row); } } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "PushMesByCategory error:" + ex.Message); return ReturnDto.QuickReturn(tmpGuid.ToString(), ReturnCode.Default, "操作失败,请检查json格式:" + ex.Message); } //加入临时表 try { using (SqlConnection destinationConnection = new SqlConnection(DbHelperSQL.strConn)) { destinationConnection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(destinationConnection)) { bulkCopy.DestinationTableName = "tmp_Import"; bulkCopy.BatchSize = dt.Rows.Count; bulkCopy.ColumnMappings.Add("tmpGuid", "tmpGuid"); bulkCopy.ColumnMappings.Add("category", "category"); bulkCopy.ColumnMappings.Add("t1", "t1"); bulkCopy.ColumnMappings.Add("t2", "t2"); bulkCopy.WriteToServer(dt); } } } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "PushMesByCategory error:" + ex.Message); return ReturnDto.QuickReturn(tmpGuid.ToString(), ReturnCode.Default, "操作失败,插入临时表时错误:" + ex.Message); } //执行数据转移 try { using (SqlConnection conn = new SqlConnection(DbHelperSQL.strConn)) { using (SqlCommand cmd = new SqlCommand("[prc_push_mes]", conn)) { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@outMsg",SqlDbType.NVarChar,300), new SqlParameter("@outInt1",SqlDbType.Int), new SqlParameter("@outInt2",SqlDbType.Int), new SqlParameter("@tmpGuid",tmpGuid), new SqlParameter("@category",category), }; parameters[0].Direction = ParameterDirection.Output; parameters[1].Direction = ParameterDirection.Output; parameters[2].Direction = ParameterDirection.Output; foreach (SqlParameter parameter in parameters) { cmd.Parameters.Add(parameter); } cmd.ExecuteNonQuery(); it1 = int.Parse(parameters[1].Value.ToString()); it2 = int.Parse(parameters[2].Value.ToString()); } } } catch (Exception ex) { Gs.Toolbox.LogHelper.Debug(this.ToString(), "PushMesByCategory error:" + ex.Message); return ReturnDto.QuickReturn(tmpGuid.ToString(), ReturnCode.Default, "操作失败,转移数据时错误:" + ex.Message); } return ReturnDto.QuickReturn(tmpGuid.ToString(), ReturnCode.Success, "操作成功,本次共增加" + it1.ToString() + "条数据,更新" + it2 + "条数据!"); } } }