From ae6bbf378b56b3a583527c546f8050b9813c1d1b Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期四, 13 三月 2025 14:38:54 +0800
Subject: [PATCH] 1.生产入库数据源优化

---
 service/Wom/WomdaaManager.cs     |   68 +++--
 entity/ItemDetailModel.cs        |    4 
 util/DbHelperSQL.cs              |  688 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 Dto/service/ProductionPickDto.cs |    7 
 4 files changed, 739 insertions(+), 28 deletions(-)

diff --git a/Dto/service/ProductionPickDto.cs b/Dto/service/ProductionPickDto.cs
index ccc8072..14390dc 100644
--- a/Dto/service/ProductionPickDto.cs
+++ b/Dto/service/ProductionPickDto.cs
@@ -1,4 +1,5 @@
-锘縰sing NewPdaSqlServer.entity;
+锘縰sing MES.Service.Modes;
+using NewPdaSqlServer.entity;
 
 namespace NewPdaSqlServer.Dto.service;
 
@@ -19,6 +20,10 @@
     //杩斿洖鍙傛暟绫诲瀷 -1锛氬け璐� 1锛氭垚鍔� 
     public string? result { get; set; }
 
+    public List<ItemDetailModel>? items { get; set; }
+
+    public List<ItemDetailModel>? Ysitems { get; set; }
+
     public List<Womdab>? totals { get; set; }
     public List<WwGdDetail>? totals1 { get; set; }
 
diff --git a/entity/MesDbModel.cs b/entity/ItemDetailModel.cs
similarity index 84%
rename from entity/MesDbModel.cs
rename to entity/ItemDetailModel.cs
index 79ced70..ff3ac10 100644
--- a/entity/MesDbModel.cs
+++ b/entity/ItemDetailModel.cs
@@ -10,6 +10,10 @@
     public string ItemModel { get; set; } // 鐗╁搧鍨嬪彿
     public decimal? FQty { get; set; } // 鐢宠鏁伴噺
     public decimal? SQty { get; set; } // 璋冨嚭宸叉壂鏁伴噺
+
+    public string? RecoKw { get; set; } // 鎺ㄨ崘搴撲綅
+
+    public decimal? DSQty { get; set; } // 寰呮壂鏁伴噺
     public decimal? RQty { get; set; } // 璋冨叆宸叉壂鏁伴噺
     public string Pid { get; set; } // 鍏宠仈瀛楁
     public string FMaterialId { get; set; } // 鏉愭枡 ID
diff --git a/service/Wom/WomdaaManager.cs b/service/Wom/WomdaaManager.cs
index 425e39d..4e169d9 100644
--- a/service/Wom/WomdaaManager.cs
+++ b/service/Wom/WomdaaManager.cs
@@ -1,6 +1,8 @@
 锘縰sing System.Data;
 using System.Data.SqlClient;
 using Masuit.Tools;
+using MES.Service.Modes;
+using Microsoft.SqlServer.Server;
 using NewPdaSqlServer.DB;
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
@@ -172,31 +174,43 @@
 
         if (womdaa?.Daa001 == null) throw new Exception("宸ュ崟鍙蜂笉瀛樺湪");
 
-        var womdabs = Db.Queryable<Womdaa, Womdab, MesItems, Womcab>(
-                (a, b, c, d) =>
-                    new JoinQueryInfos(
-                        JoinType.Left,
-                        a.Guid == b.DaaGuid,
-                        JoinType.Inner,
-                        c.Id.ToString() ==
-                        b.Dab003,
-                        JoinType.Inner, b.Erpid == d.Erpid
-                    ))
-            .Where((a, b, c, d) =>
-                a.Daa001 == query.daa001 && d.IssueType == "1")
-            .Select((a, b, c, d) => new Womdab
-            {
-                //Pid = b.Pid,
-                Dab003 = b.Dab003,
-                Dab006 = b.Dab006,
-                Dab007 = b.Dab007,
-                wNum = b.Dab006 - b.Dab007, // 璁$畻瀛楁 W_NUM
-                ItemName = c.ItemName, // 鍔ㄦ�佸瓧娈� ITEM_NAME
-                ItemNo = c.ItemNo // 鍔ㄦ�佸瓧娈� ITEM_NO
-            })
-            .ToList();
+        //var womdabs = Db.Queryable<Womdaa, Womdab, MesItems, Womcab>(
+        //        (a, b, c, d) =>
+        //            new JoinQueryInfos(
+        //                JoinType.Left,
+        //                a.Guid == b.DaaGuid,
+        //                JoinType.Inner,
+        //                c.Id.ToString() ==
+        //                b.Dab003,
+        //                JoinType.Inner, b.Erpid == d.Erpid
+        //            ))
+        //    .Where((a, b, c, d) =>
+        //        a.Daa001 == query.daa001 && d.Iss1ueType == "1")
+        //    .Select((a, b, c, d) => new ItemDetailModel
+        //    {
+        //        ItemNo = c.ItemNo,
+        //        ItemName = c.ItemName,
+        //        ItemModel = c.ItemModel,
+        //        FQty = b.Dab006, // 鐢宠鏁伴噺
+        //        SQty = b.Dab007, // 宸叉壂鏁伴噺
+        //        DSQty = b.Dab006 - b.Dab007, // 宸叉壂鏁伴噺
+        //    })
+        //    .ToList();
 
-        var list = womdabs.Where(s => s.wNum > 0).ToList();
+        var sql =string.Format(@"SELECT c.item_no ItemNo,c.item_name ItemName,c.item_model ItemModel,b.dab006 FQty,b.dab007 SQty,b.dab006 - b.dab007 DSQty ,
+       dbo.F_QX_GETRECODEPOTSE(B.dab003) as RecoKw
+    FROM WOMDAB B
+    LEFT JOIN WOMDAA A ON A.guid = B.daaGuid
+    LEFT JOIN MES_ITEMS C ON  B.dab003 = C.item_id
+    LEFT JOIN WOMCAB D ON B.erpid = D.ERPID
+    WHERE daa001 = '{0}' AND ISSUE_TYPE = 1 ORDER BY DAB002", query.daa001);
+
+        var womdabs = Db.Ado.SqlQuery<ItemDetailModel>(sql);
+
+
+        var DS_list = womdabs.Where(s => s.DSQty > 0).ToList();
+
+        var YS_list = womdabs.Where(s => s.SQty > 0).ToList();
 
         var mesInvItemOutCDetailsList = Db
             .Queryable<MesInvItemOutCDetails, MesItems, MesDepots>
@@ -230,9 +244,9 @@
         {
             daa001 = womdaa.Daa001,
             PlanNo = womcaa.Caa020,
-            totals = womdabs,
-            daisao = list,
-            yisao = mesInvItemOutCDetailsList
+            items = DS_list,
+            Ysitems = YS_list
+            // yisao = mesInvItemOutCDetailsList
         };
 
         return dto;
diff --git a/util/DbHelperSQL.cs b/util/DbHelperSQL.cs
new file mode 100644
index 0000000..468dd88
--- /dev/null
+++ b/util/DbHelperSQL.cs
@@ -0,0 +1,688 @@
+锘縰sing System.Collections;
+using System.Data;
+using System.Data.SqlClient;
+
+namespace Gs.Toolbox;
+
+/// <summary>
+///     鏁版嵁璁块棶绫�
+/// </summary>
+public abstract class DbHelperSQL
+{
+    //鏁版嵁搴撹繛鎺ュ瓧绗︿覆(web.config鏉ラ厤缃�)   
+    public static readonly string strConn =
+        getValueByKey("DataBaseConn");
+
+    #region 鍏敤鏂规硶
+
+    /// <summary>
+    ///     鍙栧埌鏈�澶у瓧娈靛��
+    /// </summary>
+    /// <param name="FieldName"></param>
+    /// <param name="TableName"></param>
+    /// <returns></returns>
+    public static int GetMaxID(string FieldName, string TableName)
+    {
+        var strsql = "select max(" + FieldName + ") from " + TableName;
+        var obj = GetSingle(strsql);
+        if (obj == null)
+            return 0;
+        return int.Parse(obj.ToString());
+    }
+
+    /// <summary>
+    ///     鏄惁瀛樺湪鏌愭潯璁板綍
+    /// </summary>
+    /// <param name="strSql"></param>
+    /// <param name="cmdParms"></param>
+    /// <returns></returns>
+    public static bool Exists(string strSql, params SqlParameter[] cmdParms)
+    {
+        var obj = GetSingle(strSql, cmdParms);
+        int cmdresult;
+        if (Equals(obj, null) || Equals(obj, DBNull.Value))
+            cmdresult = 0;
+        else
+            cmdresult = int.Parse(obj.ToString());
+        if (cmdresult == 0)
+            return false;
+        return true;
+    }
+
+    #endregion
+
+    #region 鎵ц绠�鍗昐QL璇彞
+
+    /// <summary>
+    ///     鎵цSQL璇彞锛岃繑鍥炲奖鍝嶇殑璁板綍鏁�
+    /// </summary>
+    /// <param name="SQLString">SQL璇彞</param>
+    /// <returns>褰卞搷鐨勮褰曟暟</returns>
+    public static int ExecuteSql(string SQLString)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            using (var cmd = new SqlCommand(SQLString, connection))
+            {
+                try
+                {
+                    connection.Open();
+                    var rows = cmd.ExecuteNonQuery();
+                    return rows;
+                }
+                catch (SqlException E)
+                {
+                    connection.Close();
+                    throw new Exception(E.Message);
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�
+    /// </summary>
+    /// <param name="SQLStringList">澶氭潯SQL璇彞</param>
+    public static void ExecuteSqlTran(ArrayList SQLStringList)
+    {
+        using (var conn = new SqlConnection(strConn))
+        {
+            conn.Open();
+            var cmd = new SqlCommand();
+            cmd.Connection = conn;
+            var tx = conn.BeginTransaction();
+            cmd.Transaction = tx;
+            try
+            {
+                for (var n = 0; n < SQLStringList.Count; n++)
+                {
+                    var strsql = SQLStringList[n].ToString();
+                    if (strsql.Trim().Length > 1)
+                    {
+                        cmd.CommandText = strsql;
+                        cmd.ExecuteNonQuery();
+                    }
+                }
+
+                tx.Commit();
+            }
+            catch (SqlException E)
+            {
+                tx.Rollback();
+                throw new Exception(E.Message);
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц甯︿竴涓瓨鍌ㄨ繃绋嬪弬鏁扮殑鐨凷QL璇彞銆�
+    /// </summary>
+    /// <param name="SQLString">SQL璇彞</param>
+    /// <param name="content">鍙傛暟鍐呭,姣斿涓�涓瓧娈垫槸鏍煎紡澶嶆潅鐨勬枃绔狅紝鏈夌壒娈婄鍙凤紝鍙互閫氳繃杩欎釜鏂瑰紡娣诲姞</param>
+    /// <returns>褰卞搷鐨勮褰曟暟</returns>
+    public static int ExecuteSql(string SQLString, string content)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            var cmd = new SqlCommand(SQLString, connection);
+            var myParameter = new SqlParameter("@content", SqlDbType.NText);
+            myParameter.Value = content;
+            cmd.Parameters.Add(myParameter);
+            try
+            {
+                connection.Open();
+                var rows = cmd.ExecuteNonQuery();
+                return rows;
+            }
+            catch (SqlException E)
+            {
+                throw new Exception(E.Message);
+            }
+            finally
+            {
+                cmd.Dispose();
+                connection.Close();
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鍚戞暟鎹簱閲屾彃鍏ュ浘鍍忔牸寮忕殑瀛楁(鍜屼笂闈㈡儏鍐电被浼肩殑鍙︿竴绉嶅疄渚�)
+    /// </summary>
+    /// <param name="strSQL">SQL璇彞</param>
+    /// <param name="fs">鍥惧儚瀛楄妭,鏁版嵁搴撶殑瀛楁绫诲瀷涓篿mage鐨勬儏鍐�</param>
+    /// <returns>褰卞搷鐨勮褰曟暟</returns>
+    public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            var cmd = new SqlCommand(strSQL, connection);
+            var myParameter = new SqlParameter("@fs", SqlDbType.Image);
+            myParameter.Value = fs;
+            cmd.Parameters.Add(myParameter);
+            try
+            {
+                connection.Open();
+                var rows = cmd.ExecuteNonQuery();
+                return rows;
+            }
+            catch (SqlException E)
+            {
+                throw new Exception(E.Message);
+            }
+            finally
+            {
+                cmd.Dispose();
+                connection.Close();
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц涓�鏉¤绠楁煡璇㈢粨鏋滆鍙ワ紝杩斿洖鏌ヨ缁撴灉锛坥bject锛夈��
+    /// </summary>
+    /// <param name="SQLString">璁$畻鏌ヨ缁撴灉璇彞</param>
+    /// <returns>鏌ヨ缁撴灉锛坥bject锛�</returns>
+    public static object GetSingle(string SQLString)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            using (var cmd = new SqlCommand(SQLString, connection))
+            {
+                try
+                {
+                    connection.Open();
+                    var obj = cmd.ExecuteScalar();
+                    if (Equals(obj, null) || Equals(obj, DBNull.Value))
+                        return null;
+                    return obj;
+                }
+                catch (SqlException e)
+                {
+                    connection.Close();
+                    throw new Exception(e.Message);
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц鏌ヨ璇彞锛岃繑鍥濻qlDataReader
+    /// </summary>
+    /// <param name="strSQL">鏌ヨ璇彞</param>
+    /// <returns>SqlDataReader</returns>
+    public static SqlDataReader ExecuteReader(string strSQL)
+    {
+        var connection = new SqlConnection(strConn);
+        var cmd = new SqlCommand(strSQL, connection);
+        try
+        {
+            connection.Open();
+            var myReader = cmd.ExecuteReader();
+            return myReader;
+        }
+        catch (SqlException e)
+        {
+            throw new Exception(e.Message);
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц鏌ヨ璇彞锛岃繑鍥濪ataSet
+    /// </summary>
+    /// <param name="SQLString">鏌ヨ璇彞</param>
+    /// <returns>DataSet</returns>
+    public static DataSet Query(string SQLString)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            var ds = new DataSet();
+            try
+            {
+                connection.Open();
+                var command = new SqlDataAdapter(SQLString, connection);
+                command.Fill(ds, "ds");
+            }
+            catch (SqlException ex)
+            {
+                throw new Exception(ex.Message);
+            }
+
+            return ds;
+        }
+    }
+
+    #endregion
+
+    #region 鎵ц甯﹀弬鏁扮殑SQL璇彞
+
+    /// <summary>
+    ///     鎵цSQL璇彞锛岃繑鍥炲奖鍝嶇殑璁板綍鏁�
+    /// </summary>
+    /// <param name="SQLString">SQL璇彞</param>
+    /// <returns>褰卞搷鐨勮褰曟暟</returns>
+    public static int ExecuteSql(string SQLString,
+        params SqlParameter[] cmdParms)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            using (var cmd = new SqlCommand())
+            {
+                try
+                {
+                    PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+                    var rows = cmd.ExecuteNonQuery();
+                    cmd.Parameters.Clear();
+                    return rows;
+                }
+                catch (SqlException E)
+                {
+                    throw new Exception(E.Message);
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�
+    /// </summary>
+    /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓簊ql璇彞锛寁alue鏄璇彞鐨凷qlParameter[]锛�</param>
+    public static void ExecuteSqlTran(Hashtable SQLStringList)
+    {
+        using (var conn = new SqlConnection(strConn))
+        {
+            conn.Open();
+            using (var trans = conn.BeginTransaction())
+            {
+                var cmd = new SqlCommand();
+                try
+                {
+                    //寰幆   
+                    foreach (DictionaryEntry myDE in SQLStringList)
+                    {
+                        var cmdText = myDE.Key.ToString();
+                        var cmdParms = (SqlParameter[])myDE.Value;
+                        PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+                        var val = cmd.ExecuteNonQuery();
+                        cmd.Parameters.Clear();
+
+                        //trans.Commit();
+                    }
+
+                    trans.Commit();
+                }
+                catch
+                {
+                    trans.Rollback();
+                    throw;
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟銆�
+    /// </summary>
+    /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓簊ql璇彞锛寁alue鏄璇彞鐨凷qlParameter[]锛�</param>
+    public static int ExecuteSqlTranRtn(Hashtable SQLStringList)
+    {
+        var d = 0;
+        using (var conn = new SqlConnection(strConn))
+        {
+            conn.Open();
+            using (var trans = conn.BeginTransaction())
+            {
+                var cmd = new SqlCommand();
+                try
+                {
+                    //寰幆   
+                    foreach (DictionaryEntry myDE in SQLStringList)
+                    {
+                        var cmdText = myDE.Key.ToString();
+                        var cmdParms = (SqlParameter[])myDE.Value;
+                        PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+                        var val = cmd.ExecuteNonQuery();
+                        d = d + val;
+                        cmd.Parameters.Clear();
+
+                        //trans.Commit();
+                    }
+
+                    trans.Commit();
+                }
+                catch
+                {
+                    trans.Rollback();
+                    throw;
+                }
+            }
+        }
+
+        return d;
+    }
+
+    /// <summary>
+    ///     鎵ц澶氭潯SQL璇彞锛屽疄鐜版暟鎹簱浜嬪姟
+    /// </summary>
+    /// <param name="SQLStringList">SQL璇彞鐨勫搱甯岃〃锛坘ey涓烘爣璇嗭紝value鏄璇彞鐨凷qlParameter[]锛�</param>
+    public static void ExecuteSqlTran(string sqltxt, Hashtable SQLStringList)
+    {
+        using (var conn = new SqlConnection(strConn))
+        {
+            conn.Open();
+            using (var trans = conn.BeginTransaction())
+            {
+                var cmd = new SqlCommand();
+                try
+                {
+                    //寰幆   
+                    foreach (DictionaryEntry myDE in SQLStringList)
+                    {
+                        var cmdText = sqltxt;
+                        var cmdParms = (SqlParameter[])myDE.Value;
+                        PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
+                        var val = cmd.ExecuteNonQuery();
+                        cmd.Parameters.Clear();
+                    }
+
+                    trans.Commit();
+                }
+                catch
+                {
+                    trans.Rollback();
+                    throw;
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц涓�鏉¤绠楁煡璇㈢粨鏋滆鍙ワ紝杩斿洖鏌ヨ缁撴灉锛坥bject锛夈��
+    /// </summary>
+    /// <param name="SQLString">璁$畻鏌ヨ缁撴灉璇彞</param>
+    /// <returns>鏌ヨ缁撴灉锛坥bject锛�</returns>
+    public static object GetSingle(string SQLString,
+        params SqlParameter[] cmdParms)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            using (var cmd = new SqlCommand())
+            {
+                try
+                {
+                    PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+                    var obj = cmd.ExecuteScalar();
+                    cmd.Parameters.Clear();
+                    if (Equals(obj, null) || Equals(obj, DBNull.Value))
+                        return null;
+                    return obj;
+                }
+                catch (SqlException e)
+                {
+                    throw new Exception(e.Message);
+                }
+            }
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц鏌ヨ璇彞锛岃繑鍥濻qlDataReader
+    /// </summary>
+    /// <param name="strSQL">鏌ヨ璇彞</param>
+    /// <returns>SqlDataReader</returns>
+    public static SqlDataReader ExecuteReader(string SQLString,
+        params SqlParameter[] cmdParms)
+    {
+        var connection = new SqlConnection(strConn);
+        var cmd = new SqlCommand();
+        try
+        {
+            PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+            var myReader = cmd.ExecuteReader();
+            cmd.Parameters.Clear();
+            return myReader;
+        }
+        catch (SqlException e)
+        {
+            throw new Exception(e.Message);
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц鏌ヨ璇彞锛岃繑鍥濪ataSet
+    /// </summary>
+    /// <param name="SQLString">鏌ヨ璇彞</param>
+    /// <returns>DataSet</returns>
+    public static DataSet Query(string SQLString,
+        params SqlParameter[] cmdParms)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            var cmd = new SqlCommand();
+            PrepareCommand(cmd, connection, null, SQLString, cmdParms);
+            using (var da = new SqlDataAdapter(cmd))
+            {
+                var ds = new DataSet();
+                try
+                {
+                    da.Fill(ds, "ds");
+                    cmd.Parameters.Clear();
+                }
+                catch (SqlException ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+
+                return ds;
+            }
+        }
+    }
+
+    //private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
+    //{
+
+    //    if (conn.State != ConnectionState.Open)
+    //        conn.Open();
+    //    cmd.Connection = conn;
+    //    cmd.CommandText = cmdText;
+    //    if (trans != null)
+    //        cmd.Transaction = trans;
+    //    cmd.CommandType = CommandType.Text;//cmdType;
+    //    if (cmdParms != null)
+    //    {
+    //        foreach (SqlParameter parameter in cmdParms)
+    //        {
+    //            if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
+    //                (parameter.Value == null))
+    //            {
+    //                parameter.Value = DBNull.Value;
+    //            }
+    //            cmd.Parameters.Add(parameter);
+    //        }
+    //    }
+    //}
+    private static void PrepareCommand(SqlCommand cmd, SqlConnection conn,
+        SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
+    {
+        if (conn.State != ConnectionState.Open)
+            conn.Open();
+        cmd.Connection = conn;
+        cmd.CommandText = cmdText;
+        if (trans != null)
+            cmd.Transaction = trans;
+        cmd.CommandType = CommandType.Text; //cmdType;   
+        if (cmdParms != null)
+            foreach (var parm in cmdParms)
+            {
+                //cmd.Parameters.Add(parm);
+                if ((parm.Direction == ParameterDirection.InputOutput ||
+                     parm.Direction == ParameterDirection.Input) &&
+                    parm.Value == null)
+                    parm.Value = DBNull.Value;
+                cmd.Parameters.Add(parm);
+            }
+    }
+
+    #endregion
+
+    #region 瀛樺偍杩囩▼鎿嶄綔
+
+    /// <summary>
+    ///     鎵ц瀛樺偍杩囩▼
+    /// </summary>
+    /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+    /// <returns>SqlDataReader</returns>
+    public static SqlDataReader RunProcedure(string storedProcName,
+        IDataParameter[] parameters)
+    {
+        var connection = new SqlConnection(strConn);
+        SqlDataReader returnReader;
+        connection.Open();
+        var command = BuildQueryCommand(connection, storedProcName, parameters);
+        command.CommandType = CommandType.StoredProcedure;
+        returnReader = command.ExecuteReader();
+        return returnReader;
+    }
+
+    /// <summary>
+    ///     鎵ц甯﹁緭鍑哄弬鏁扮殑瀛樺偍杩囩▼
+    /// </summary>
+    /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟,OutName 杈撳嚭鍙傛暟鐨勫悕瀛楋紙濡傛灉鏄涓互@涓哄垎鍓茬锛�</param>
+    /// <returns>string(浠鍒嗗壊鐨勮緭鍑哄弬鏁扮殑鍊�)</returns>
+    public static string RunProcedureOut(string storedProcName,
+        IDataParameter[] parameters, string outName)
+    {
+        var connection = new SqlConnection(strConn);
+        var returnstring = string.Empty;
+        connection.Open();
+        var command = BuildQueryCommand(connection, storedProcName, parameters);
+        command.CommandType = CommandType.StoredProcedure;
+        command.ExecuteNonQuery();
+        var str = string.Empty;
+        //瑙f瀽绌胯繃鏉ョ殑鍙傛暟   
+        var Arraystr = outName.Split('|');
+        foreach (var st in Arraystr)
+        {
+            var a = st;
+            if (str == string.Empty)
+                str = command.Parameters[a].Value.ToString();
+            else
+                str = str + "|" + command.Parameters[a].Value;
+        }
+        return str;
+    }
+
+    /// <summary>
+    ///     鎵ц瀛樺偍杩囩▼
+    /// </summary>
+    /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+    /// <param name="tableName">DataSet缁撴灉涓殑琛ㄥ悕</param>
+    /// <returns>DataSet</returns>
+    public static DataSet RunProcedure(string storedProcName,
+        IDataParameter[] parameters, string tableName)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            var dataSet = new DataSet();
+            connection.Open();
+            var sqlDA = new SqlDataAdapter();
+            sqlDA.SelectCommand =
+                BuildQueryCommand(connection, storedProcName, parameters);
+            sqlDA.Fill(dataSet, tableName);
+            connection.Close();
+            return dataSet;
+        }
+    }
+
+    /// <summary>
+    ///     鏋勫缓 SqlCommand 瀵硅薄(鐢ㄦ潵杩斿洖涓�涓粨鏋滈泦锛岃�屼笉鏄竴涓暣鏁板��)
+    /// </summary>
+    /// <param name="connection">鏁版嵁搴撹繛鎺�</param>
+    /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+    /// <returns>SqlCommand</returns>
+    private static SqlCommand BuildQueryCommand(SqlConnection connection,
+        string storedProcName, IDataParameter[] parameters)
+    {
+        var command = new SqlCommand(storedProcName, connection);
+        command.CommandType = CommandType.StoredProcedure;
+        foreach (SqlParameter parameter in parameters)
+            command.Parameters.Add(parameter);
+        return command;
+    }
+
+    /// <summary>
+    ///     鎵ц瀛樺偍杩囩▼锛岃繑鍥炲奖鍝嶇殑琛屾暟
+    /// </summary>
+    /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+    /// <param name="rowsAffected">褰卞搷鐨勮鏁�</param>
+    /// <returns></returns>
+    public static int RunProcedure(string storedProcName,
+        IDataParameter[] parameters, out int rowsAffected)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            int result;
+            connection.Open();
+            var command =
+                BuildIntCommand(connection, storedProcName, parameters);
+            rowsAffected = command.ExecuteNonQuery();
+            result = (int)command.Parameters["ReturnValue"].Value;
+            //Connection.Close();   
+            return result;
+        }
+    }
+
+    /// <summary>
+    ///     鎵ц瀛樺偍杩囩▼锛岃繑鍥炲奖鍝嶈鏁�
+    /// </summary>
+    /// <param name="storedProcName">string绫诲瀷瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">SqlParameters[]瀛樺偍杩囩▼鍙傛暟</param>
+    /// <returns>int 褰卞搷琛屾暟</returns>
+    public static int RunProcedure_NonQuery(string storedProcName,
+        IDataParameter[] parameters)
+    {
+        using (var connection = new SqlConnection(strConn))
+        {
+            connection.Open();
+            var command =
+                BuildQueryCommand(connection, storedProcName, parameters);
+            return command.ExecuteNonQuery();
+        }
+    }
+
+    /// <summary>
+    ///     鍒涘缓 SqlCommand 瀵硅薄瀹炰緥(鐢ㄦ潵杩斿洖涓�涓暣鏁板��)
+    /// </summary>
+    /// <param name="storedProcName">瀛樺偍杩囩▼鍚�</param>
+    /// <param name="parameters">瀛樺偍杩囩▼鍙傛暟</param>
+    /// <returns>SqlCommand 瀵硅薄瀹炰緥</returns>
+    private static SqlCommand BuildIntCommand(SqlConnection connection,
+        string storedProcName, IDataParameter[] parameters)
+    {
+        var command = BuildQueryCommand(connection, storedProcName, parameters);
+        command.Parameters.Add(new SqlParameter("ReturnValue",
+            SqlDbType.Int, 4, ParameterDirection.ReturnValue,
+            false, 0, 0, string.Empty, DataRowVersion.Default, null));
+        return command;
+    }
+
+    #endregion
+
+
+    public static string getValueByKey(string key)
+    {
+        // 鍒涘缓閰嶇疆鏋勫缓鍣�
+        var builder = new ConfigurationBuilder()
+            .SetBasePath(Directory.GetCurrentDirectory())
+            .AddJsonFile("appsettings.json", true, true);
+        // 鏋勫缓閰嶇疆
+        var configuration = builder.Build();
+        return configuration[key];
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.9.3