You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2193 lines
92 KiB

4 days ago
  1. using NFine.Code;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.Data;
  6. using System.Data.Common;
  7. using System.Data.SqlClient;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Net;
  11. using System.Security.Cryptography;
  12. using System.Text;
  13. using System.Text.RegularExpressions;
  14. using System.Threading.Tasks;
  15. namespace NFine.Data.Extensions
  16. {
  17. /// <summary>
  18. /// 数据库访问辅助类,add by ngye, on 2013-08-14.
  19. /// </summary>
  20. public static class SqlHelper
  21. {
  22. #region [ 连接串相关 ]
  23. /// <summary>
  24. /// 数据中心DB的连接字符串
  25. /// </summary>
  26. public static string DataCenterConnString = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  27. public static string DataCenterU8ConnString = ConfigurationManager.ConnectionStrings["U8connstr"].ConnectionString;
  28. /// <summary>
  29. /// 获取同步服务器的连接
  30. /// </summary>
  31. /// <returns></returns>
  32. public static SqlConnection GetDataCenterConn()
  33. {
  34. return new SqlConnection(DataCenterConnString);
  35. }
  36. /// <summary>
  37. /// 根据连接串获取连接
  38. /// </summary>
  39. /// <returns></returns>
  40. public static SqlConnection GetConnByStr(string connStr)
  41. {
  42. string ConnString = ConfigurationManager.ConnectionStrings[connStr].ConnectionString;
  43. return new SqlConnection(ConnString);
  44. }
  45. /// <summary>
  46. /// MD5解密
  47. /// </summary>
  48. /// <param name="str"></param>
  49. /// <returns></returns>
  50. public static string FromMd5(string str)
  51. {
  52. //return str;
  53. return Decrypt(str, "&%#@?,:*_");
  54. }
  55. /// <summary>
  56. /// 解密
  57. /// </summary>
  58. /// <param name="strText"></param>
  59. /// <param name="sDecrKey"></param>
  60. /// <returns></returns>
  61. private static String Decrypt(String strText, String sDecrKey)
  62. {
  63. Byte[] byKey = { };
  64. Byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
  65. Byte[] inputByteArray = new byte[strText.Length];
  66. try
  67. {
  68. byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8));
  69. DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  70. inputByteArray = Convert.FromBase64String(strText);
  71. MemoryStream ms = new MemoryStream();
  72. CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV),
  73. CryptoStreamMode.Write);
  74. cs.Write(inputByteArray, 0, inputByteArray.Length);
  75. cs.FlushFinalBlock();
  76. System.Text.Encoding encoding = System.Text.Encoding.UTF8;
  77. return encoding.GetString(ms.ToArray());
  78. }
  79. catch (Exception ex)
  80. {
  81. return ex.Message;
  82. }
  83. }
  84. /// <summary>
  85. /// 根据连接串获取连接
  86. /// </summary>
  87. /// <returns></returns>
  88. public static SqlConnection GetConnByString(string conn)
  89. {
  90. return new SqlConnection(conn);
  91. }
  92. /// <summary>
  93. /// 测试连接串是否能正确
  94. /// </summary>
  95. /// <param name="connectionString">连接串</param>
  96. /// <returns></returns>
  97. public static bool TestConnectionString(string connectionString)
  98. {
  99. bool result = true;
  100. try
  101. {
  102. using (SqlConnection conn = GetConnByString(connectionString))
  103. {
  104. try
  105. {
  106. conn.Open();
  107. }
  108. catch (Exception ex)
  109. {
  110. result = false;
  111. }
  112. }
  113. }
  114. catch (Exception)
  115. {
  116. result = false;
  117. }
  118. return result;
  119. }
  120. /// <summary>
  121. /// 测试连接串是否正确
  122. /// </summary>
  123. /// <param name="connectionString">连接串</param>
  124. /// <param name="timeOut">测试的超时秒数</param>
  125. /// <param name="errInfo">错误时输出的错误信息</param>
  126. /// <returns>是否能正常连接</returns>
  127. public static bool TestConnectionString(string connectionString, int timeOut, ref string errInfo)
  128. {
  129. bool result = true;
  130. string[] arr = connectionString.Split(new char[] { ';' });
  131. List<string> list = new List<string>();
  132. foreach (string s in arr)
  133. {
  134. if (s.ToLower().IndexOf("timeout") == -1)
  135. {
  136. list.Add(s);
  137. }
  138. else
  139. {
  140. list.Add(String.Format("Connection Timeout={0}", timeOut));
  141. }
  142. }
  143. SqlConnection con = null;
  144. try
  145. {
  146. con = new SqlConnection(string.Join(";", list.ToArray()));
  147. con.Open();
  148. }
  149. catch (Exception ex)
  150. {
  151. result = false;
  152. errInfo = ex.Message;
  153. }
  154. finally
  155. {
  156. if (con != null)
  157. {
  158. con.Close();
  159. con.Dispose();
  160. con = null;
  161. }
  162. }
  163. return result;
  164. }
  165. #endregion
  166. #region [ 超时设置 ]
  167. public static int CommandTimeout
  168. {
  169. get
  170. {
  171. return 7200;
  172. }
  173. }
  174. #endregion
  175. public static string HttpPost(string url, string body)
  176. {
  177. try
  178. {
  179. Encoding encoding = Encoding.UTF8;
  180. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  181. request.Method = "POST";
  182. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  183. request.ContentType = "application/json; charset=utf-8";
  184. byte[] buffer = encoding.GetBytes(body);
  185. request.ContentLength = buffer.Length;
  186. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  187. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  188. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  189. {
  190. return reader.ReadToEnd();
  191. }
  192. }
  193. catch (WebException ex)
  194. {
  195. throw new Exception(ex.Message);
  196. }
  197. }
  198. /// <summary>
  199. /// Http Get请求
  200. /// </summary>
  201. /// <param name="url"></param>
  202. /// <param name="headerValue"></param>
  203. /// <returns></returns>
  204. public static String httpGet(string url)
  205. {
  206. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  207. WebHeaderCollection headers = new WebHeaderCollection();
  208. //headers.Add("Token", headerValue[0]);
  209. //headers.Add("Timespan", headerValue[1]);
  210. request.UserAgent = null;
  211. request.Headers = headers;
  212. request.Method = "GET";
  213. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  214. var httpStatusCode = (int)response.StatusCode;
  215. Console.WriteLine("返回码为 {0}", httpStatusCode);
  216. if (httpStatusCode == 200)
  217. {
  218. Stream myResponseStream = response.GetResponseStream();
  219. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
  220. string retString = myStreamReader.ReadToEnd();
  221. myStreamReader.Close();
  222. myResponseStream.Close();
  223. return retString;
  224. }
  225. else
  226. {
  227. Console.WriteLine("未返回数据 {0}", httpStatusCode);
  228. throw new Exception("no data response");
  229. }
  230. }
  231. //有header头使用
  232. public static String httpGetByHeader(string url, string HeaderName, string HeaderValue)
  233. {
  234. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  235. WebHeaderCollection headers = new WebHeaderCollection();
  236. headers.Add(HeaderName, HeaderValue);
  237. //headers.Add("Timespan", headerValue[1]);
  238. request.UserAgent = null;
  239. request.Headers = headers;
  240. request.Method = "GET";
  241. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  242. var httpStatusCode = (int)response.StatusCode;
  243. Console.WriteLine("返回码为 {0}", httpStatusCode);
  244. if (httpStatusCode == 200)
  245. {
  246. Stream myResponseStream = response.GetResponseStream();
  247. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
  248. string retString = myStreamReader.ReadToEnd();
  249. myStreamReader.Close();
  250. myResponseStream.Close();
  251. return retString;
  252. }
  253. else
  254. {
  255. Console.WriteLine("未返回数据 {0}", httpStatusCode);
  256. throw new Exception("no data response");
  257. }
  258. }
  259. #region [ ExecuteNonQuery ]
  260. /// <summary>
  261. /// 根据sql语句和参数,返回受影响行数
  262. /// </summary>
  263. /// <param name="sql">sql语句</param>
  264. /// <param name="spArr">可变参数</param>
  265. /// <returns>受影响行数</returns>
  266. public static int ExecuteNonQuery(string sql, params SqlParameter[] spArr)
  267. {
  268. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  269. {
  270. conn.Open();
  271. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  272. if (spArr.Length > 0)
  273. cmd.Parameters.AddRange(spArr.SetDBNull());
  274. return cmd.ExecuteNonQuery();
  275. }
  276. }
  277. //多语句一起事务中执行(Li编写)
  278. public static int CmdExecuteNonQueryLi(string sql, params SqlParameter[] spArr)
  279. {
  280. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  281. {
  282. conn.Open();
  283. SqlTransaction sqlTran = conn.BeginTransaction();
  284. SqlCommand cmd = new SqlCommand();
  285. cmd.Transaction = sqlTran;
  286. cmd.Connection = conn;
  287. try
  288. {
  289. cmd.CommandText = sql;
  290. int RES = cmd.ExecuteNonQuery();
  291. cmd.Transaction.Commit();
  292. return RES;
  293. }
  294. catch (Exception ex)
  295. {
  296. cmd.Transaction.Rollback();
  297. throw new Exception(ex.Message);
  298. }
  299. finally
  300. {
  301. if (conn.State != ConnectionState.Closed)
  302. {
  303. conn.Close();
  304. conn.Dispose();
  305. }
  306. }
  307. return 0;
  308. }
  309. }
  310. public static int ExecuteNonQuery(string connStr, string sql, params SqlParameter[] spArr)
  311. {
  312. using (SqlConnection conn = new SqlConnection(connStr))
  313. {
  314. conn.Open();
  315. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  316. if (spArr.Length > 0)
  317. cmd.Parameters.AddRange(spArr.SetDBNull());
  318. return cmd.ExecuteNonQuery();
  319. }
  320. }
  321. #endregion
  322. #region [ ExecuteScalar_ForProc ]
  323. /// <summary>
  324. /// 根据存储过程和参数,返回Scalar结果
  325. /// </summary>
  326. /// <param name="proc">存储过程</param>
  327. /// <param name="spArr">可变参数</param>
  328. /// <returns>object</returns>
  329. public static object ExecuteScalar_ForProc(string proc, params SqlParameter[] spArr)
  330. {
  331. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  332. {
  333. conn.Open();
  334. SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
  335. cmd.CommandType = CommandType.StoredProcedure;
  336. if (spArr.Length > 0)
  337. cmd.Parameters.AddRange(spArr.SetDBNull());
  338. object obj = cmd.ExecuteScalar();
  339. return obj;
  340. }
  341. }
  342. /// <summary>
  343. /// 根据存储过程和参数,返回Scalar结果,但不加上超时设置 ( 避免循环做 AddTimeout )
  344. /// </summary>
  345. /// <param name="proc">存储过程</param>
  346. /// <param name="spArr">可变参数</param>
  347. /// <returns>object</returns>
  348. public static object ExecuteScalar_ForProc_WithoutAddTimeout(string proc, params SqlParameter[] spArr)
  349. {
  350. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  351. {
  352. conn.Open();
  353. SqlCommand cmd = new SqlCommand(proc, conn);
  354. cmd.CommandType = CommandType.StoredProcedure;
  355. if (spArr.Length > 0)
  356. cmd.Parameters.AddRange(spArr.SetDBNull());
  357. object obj = cmd.ExecuteScalar();
  358. return obj;
  359. }
  360. }
  361. #endregion
  362. #region [ ExecuteScalar ]
  363. /// <summary>
  364. /// 根据sql语句和参数,返回Scalar结果
  365. /// </summary>
  366. /// <param name="sql">sql语句</param>
  367. /// <param name="spArr">可变参数</param>
  368. /// <returns>object</returns>
  369. public static object ExecuteScalar(string sql, params SqlParameter[] spArr)
  370. {
  371. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  372. {
  373. conn.Open();
  374. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  375. if (spArr.Length > 0)
  376. cmd.Parameters.AddRange(spArr.SetDBNull());
  377. object obj = cmd.ExecuteScalar();
  378. return obj;
  379. }
  380. }
  381. #endregion
  382. /// <summary>
  383. /// 获取数据字典公共方法
  384. /// </summary>
  385. /// <param name="F_EnCode"></param>
  386. /// <returns></returns>
  387. public static string GetItemsDetails(string F_EnCode)
  388. {
  389. string sql = @"SELECT a.F_ItemCode,a.F_ItemName FROM Sys_SRM_ItemsDetail a
  390. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  391. WHERE b.F_EnCode = '{0}'";
  392. sql = string.Format(sql, F_EnCode);
  393. DataTable dt = GetDataTableBySql(sql);
  394. return dt.Rows[0]["F_ItemCode"].ToString();
  395. }
  396. #region [ QueryByProc ]
  397. /// <summary>
  398. /// 根据存储过程及参数,返回DataSet
  399. /// </summary>
  400. /// <returns>DataSet</returns>
  401. public static DataSet GetDataSetByProc(string proc, params SqlParameter[] spArr)
  402. {
  403. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  404. {
  405. conn.Open();
  406. SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
  407. cmd.CommandType = CommandType.StoredProcedure;
  408. if (spArr.Length > 0)
  409. cmd.Parameters.AddRange(spArr.SetDBNull());
  410. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  411. DataSet ds = new DataSet();
  412. adapter.Fill(ds);
  413. return ds;
  414. }
  415. }
  416. /// <summary>
  417. /// 根据存储过程及参数,返回DataTable
  418. /// </summary>
  419. /// <returns>DataTable</returns>
  420. public static DataTable GetDataTableByProc(string proc, params SqlParameter[] spArr)
  421. {
  422. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  423. {
  424. conn.Open();
  425. SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
  426. cmd.CommandType = CommandType.StoredProcedure;
  427. if (spArr.Length > 0)
  428. cmd.Parameters.AddRange(spArr.SetDBNull());
  429. DataTable dt = cmd.ExecuteDataTable();
  430. return dt;
  431. }
  432. }
  433. /// <summary>
  434. /// 根据sql语句和参数,返回DataRow
  435. /// </summary>
  436. /// <param name="sql">sql语句</param>
  437. /// <param name="spArr">可变参数</param>
  438. /// <returns>DataRow</returns>
  439. public static DataRow GetDataRowByProc(string proc, params SqlParameter[] spArr)
  440. {
  441. DataTable dt = GetDataTableByProc(proc, spArr);
  442. if (dt == null || dt.Rows.Count == 0)
  443. return null;
  444. return dt.Rows[0];
  445. }
  446. #endregion
  447. #region [ Query ]
  448. /// <summary>
  449. /// 根据sql语句和参数,返回DataSet
  450. /// </summary>
  451. /// <param name="sql">sql语句</param>
  452. /// <param name="spArr">可变参数</param>
  453. /// <returns>DataSet</returns>
  454. public static DataSet GetDataSetBySql(string sql, params SqlParameter[] spArr)
  455. {
  456. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  457. {
  458. conn.Open();
  459. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  460. if (spArr.Length > 0)
  461. cmd.Parameters.AddRange(spArr.SetDBNull());
  462. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  463. DataSet ds = new DataSet();
  464. adapter.Fill(ds);
  465. return ds;
  466. }
  467. }
  468. /// <summary>
  469. /// 根据sql语句和参数,返回DataTable
  470. /// </summary>
  471. /// <param name="sql">sql语句</param>
  472. /// <param name="spArr">可变参数</param>
  473. /// <returns>DataTable</returns>
  474. public static DataTable GetDataTableBySql(string sql, params SqlParameter[] spArr)
  475. {
  476. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  477. {
  478. conn.Open();
  479. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  480. if (spArr.Length > 0)
  481. cmd.Parameters.AddRange(spArr.SetDBNull());
  482. DataTable dt = cmd.ExecuteDataTable();
  483. return dt;
  484. }
  485. }
  486. public static string GetSerialCodeBYVenDor(string workPointCode, string tbName, string colName, string Pre, int numLen)
  487. {
  488. string sql = "EXEC Addins_GetSerialCode '','{0}','{1}','{2}',{3}";
  489. sql = string.Format(sql, new object[] { tbName, colName, Pre, numLen });
  490. return DbHelper.ExecuteScalarByVenDor(CommandType.Text, sql).ToString();
  491. }
  492. /// <summary>
  493. /// 根据sql语句和参数,返回DataRow
  494. /// </summary>
  495. /// <param name="sql">sql语句</param>
  496. /// <param name="spArr">可变参数</param>
  497. /// <returns>DataRow</returns>
  498. public static DataRow GetDataRowBySql(string sql, params SqlParameter[] spArr)
  499. {
  500. DataTable dt = GetDataTableBySql(sql, spArr);
  501. if (dt == null || dt.Rows.Count == 0)
  502. return null;
  503. return dt.Rows[0];
  504. }
  505. #endregion
  506. #region [ GetValue ]
  507. public static object GetValue(DataRow dr, string fieldName, object replaceValue)
  508. {
  509. if (dr.IsNull(fieldName))
  510. return replaceValue;
  511. return dr[fieldName];
  512. }
  513. public static object GetValue(DataRow dr, int idx, object replaceValue)
  514. {
  515. if (dr.IsNull(idx))
  516. return replaceValue;
  517. return dr[idx];
  518. }
  519. #endregion
  520. #region [ GetString ]
  521. public static string GetString(DataRow dr, string fieldName, string replaceValue)
  522. {
  523. if (dr.IsNull(fieldName))
  524. return replaceValue;
  525. return Convert.ToString(dr[fieldName]);
  526. }
  527. public static string GetString(DataRow dr, int idx, string replaceValue)
  528. {
  529. if (dr.IsNull(idx))
  530. return replaceValue;
  531. return Convert.ToString(dr[idx]);
  532. }
  533. #endregion
  534. #region [ GetDateTime ]
  535. public static DateTime GetDateTime(DataRow dr, string fieldName, DateTime replaceValue)
  536. {
  537. if (dr.IsNull(fieldName))
  538. return replaceValue;
  539. return Convert.ToDateTime(dr[fieldName]);
  540. }
  541. public static DateTime GetDateTime(DataRow dr, int idx, DateTime replaceValue)
  542. {
  543. if (dr.IsNull(idx))
  544. return replaceValue;
  545. return Convert.ToDateTime(dr[idx]);
  546. }
  547. #endregion
  548. #region [ 非数据中心库操作 ]
  549. #region [ ExecuteScalar ]
  550. /// <summary>
  551. /// 根据sql语句和参数,返回Scalar结果
  552. /// </summary>
  553. /// <param name="connString">连接串</param>
  554. /// <param name="sql">sql语句</param>
  555. /// <param name="spArr">可变参数</param>
  556. /// <returns>object</returns>
  557. public static object ExecuteScalarWithConn(string connString, string sql, params SqlParameter[] spArr)
  558. {
  559. using (SqlConnection conn = SqlHelper.GetConnByString(connString))
  560. {
  561. conn.Open();
  562. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  563. if (spArr.Length > 0)
  564. cmd.Parameters.AddRange(spArr.SetDBNull());
  565. object obj = cmd.ExecuteScalar();
  566. return obj;
  567. }
  568. }
  569. #endregion
  570. #region [ ExecuteNonQuery ]
  571. /// <summary>
  572. /// 根据sql语句和参数,返回受影响行数
  573. /// </summary>
  574. /// <param name="connString">连接串</param>
  575. /// <param name="sql">sql语句</param>
  576. /// <param name="spArr">可变参数</param>
  577. /// <returns>受影响行数</returns>
  578. public static int ExecuteNonQueryWithConn(string connString, string sql, params SqlParameter[] spArr)
  579. {
  580. using (SqlConnection conn = SqlHelper.GetConnByString(connString))
  581. {
  582. conn.Open();
  583. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  584. if (spArr.Length > 0)
  585. cmd.Parameters.AddRange(spArr.SetDBNull());
  586. return cmd.ExecuteNonQuery();
  587. }
  588. }
  589. #endregion
  590. #region [ Query ]
  591. /// <summary>
  592. /// 根据sql语句和参数,返回DataTable
  593. /// </summary>
  594. /// <param name="connString">连接串</param>
  595. /// <param name="sql">sql语句</param>
  596. /// <param name="spArr">可变参数</param>
  597. /// <returns>DataTable</returns>
  598. public static DataTable GetDataTableBySqlWithConn(string connString, string sql, params SqlParameter[] spArr)
  599. {
  600. using (SqlConnection conn = SqlHelper.GetConnByString(connString))
  601. {
  602. conn.Open();
  603. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  604. if (spArr.Length > 0)
  605. cmd.Parameters.AddRange(spArr.SetDBNull());
  606. DataTable dt = cmd.ExecuteDataTable();
  607. return dt;
  608. }
  609. }
  610. /// <summary>
  611. /// 根据sql语句和参数,返回DataRow
  612. /// </summary>
  613. /// <param name="connString">连接串</param>
  614. /// <param name="sql">sql语句</param>
  615. /// <param name="spArr">可变参数</param>
  616. /// <returns>DataRow</returns>
  617. public static DataRow GetDataRowBySqlWithConn(string connString, string sql, params SqlParameter[] spArr)
  618. {
  619. DataTable dt = GetDataTableBySqlWithConn(connString, sql, spArr);
  620. if (dt == null || dt.Rows.Count == 0)
  621. return null;
  622. return dt.Rows[0];
  623. }
  624. #endregion
  625. #endregion
  626. #region [ 根据SQL文件路径执行 ]
  627. /// <summary>
  628. /// 执行SQL文件
  629. /// </summary>
  630. /// <param name="connString"></param>
  631. /// <param name="filePath"></param>
  632. /// <returns></returns>
  633. public static bool ExecuteNonQueryWithConnAndSqlFilePath(string connString, string filePath)
  634. {
  635. string sql = System.IO.File.ReadAllText(filePath);
  636. return ExecuteNonQueryWithConnAndGO(connString, sql);
  637. }
  638. #endregion
  639. #region [ 执行带Go语句 ]
  640. /// <summary>
  641. /// 执行带"GO"的SQL,返回最后一条SQL的受影响行数
  642. /// </summary>
  643. /// <param name="connString">连接串</param>
  644. /// <param name="sql">sql语句</param>
  645. /// <returns>返回最后一条SQL的受影响行数</returns>
  646. public static bool ExecuteNonQueryWithConnAndGO(string connString, string sql)
  647. {
  648. bool result = true;
  649. string[] arr = System.Text.RegularExpressions.Regex.Split(sql, @"\bGO\b", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
  650. using (SqlConnection conn = GetConnByString(connString))
  651. {
  652. conn.Open();
  653. SqlCommand cmd = new SqlCommand().AddTimeout();
  654. cmd.Connection = conn;
  655. SqlTransaction tx = conn.BeginTransaction();
  656. cmd.Transaction = tx;
  657. try
  658. {
  659. for (int n = 0; n < arr.Length; n++)
  660. {
  661. string strsql = arr[n];
  662. if (strsql.Trim().Length > 1 && strsql.Trim().Replace(";", "") != "")
  663. {
  664. cmd.CommandText = strsql;
  665. cmd.ExecuteNonQuery();
  666. }
  667. }
  668. tx.Commit();
  669. }
  670. catch (System.Data.SqlClient.SqlException E)
  671. {
  672. tx.Rollback();
  673. result = false;
  674. //return -1;
  675. throw new Exception(E.Message);
  676. }
  677. finally
  678. {
  679. if (conn.State != ConnectionState.Closed)
  680. {
  681. conn.Close();
  682. conn.Dispose();
  683. }
  684. }
  685. }
  686. return result;
  687. }
  688. #endregion
  689. /// <summary>
  690. /// 设置Sql参数
  691. /// </summary>
  692. /// <param name="parameterName"></param>
  693. /// <param name="value"></param>
  694. /// <param name="dbType"></param>
  695. /// <returns></returns>
  696. public static SqlParameter SetSqlParameter(string parameterName, object value, SqlDbType dbType)
  697. {
  698. if (value == null || string.IsNullOrEmpty(value.ToString()))
  699. {
  700. return new SqlParameter(parameterName, DBNull.Value);
  701. }
  702. SqlParameter sp = new SqlParameter(parameterName, value);
  703. sp.SqlDbType = dbType;
  704. return sp;
  705. }
  706. /// <summary>
  707. /// 根据sql及带 in 的id参数列表, 得到DataTable
  708. /// </summary>
  709. /// <param name="sql">带in ( {0} )的sql</param>
  710. /// <param name="ids">以逗号分隔的id字符串</param>
  711. /// <param name="idDbType">id的Sql数据类型</param>
  712. /// <returns>DataTable</returns>
  713. public static DataTable GetDataTableWithIn(string sql, string ids, SqlDbType idDbType)
  714. {
  715. SqlParameter[] spArr = GetWithInSqlParameters(ref sql, ids, idDbType);
  716. return GetDataTableBySql(sql, spArr);
  717. }
  718. /// <summary>
  719. /// 根据sql及带 in 的id参数列表, 得到受影响行数
  720. /// </summary>
  721. /// <param name="sql">带in ( {0} )的sql</param>
  722. /// <param name="ids">以逗号分隔的id字符串</param>
  723. /// <param name="idDbType">id的Sql数据类型</param>
  724. /// <returns>DataTable</returns>
  725. public static int ExecuteNonQueryWithIn(string sql, string ids, SqlDbType idDbType)
  726. {
  727. SqlParameter[] spArr = GetWithInSqlParameters(ref sql, ids, idDbType);
  728. return ExecuteNonQuery(sql, spArr);
  729. }
  730. #region [ 带 in 不确定参数的执行方法 ]
  731. /// <summary>
  732. /// 获取带 in 的sql参数列表
  733. /// </summary>
  734. /// <param name="sql">带in ( {0} )的sql</param>
  735. /// <param name="ids">以逗号分隔的id字符串</param>
  736. /// <param name="idDbType">id的Sql数据类型</param>
  737. /// <returns>sql参数列表</returns>
  738. public static SqlParameter[] GetWithInSqlParameters(ref string sql, string ids, SqlDbType idDbType)
  739. {
  740. if (string.IsNullOrEmpty(ids))
  741. {
  742. return null;
  743. }
  744. string[] idArr = ids.Split(',');
  745. //组建sql在in中的字符串
  746. StringBuilder sbCondition = new StringBuilder();
  747. List<SqlParameter> spList = new List<SqlParameter>();
  748. for (int i = 0; i < idArr.Length; i++)
  749. {
  750. string id = idArr[i];
  751. string spName = string.Format("@id{0}", i);
  752. sbCondition.AppendFormat("{0},", spName);
  753. spList.Add(SetSqlParameter(spName, id, idDbType));
  754. }
  755. //重新构建sql
  756. sql = string.Format(sql, sbCondition.ToString().TrimEnd(','));
  757. return spList.ToArray();
  758. }
  759. #endregion
  760. public static string Organize_F_ParentId(string F_Account)
  761. {
  762. string F_ParentId = string.Empty;
  763. string sql = @"
  764. SELECT c.F_ID,c.F_ParentId FROM sys_srm_user a
  765. LEFT JOIN sys_SRM_Role b ON a.F_RoleID=b.F_ID
  766. LEFT JOIN Sys_SRM_Organize c ON b.F_OrganizeId=c.F_ID
  767. WHERE a.F_Account='{0}'";
  768. sql = string.Format(sql, F_Account);
  769. DataTable dt = GetDataTableBySql(sql);
  770. if (dt.Rows.Count > 0)
  771. {
  772. if (dt.Rows[0]["F_ParentId"].ToString() == "0")
  773. {
  774. F_ParentId = "0";
  775. }
  776. else
  777. {
  778. F_ParentId = dt.Rows[0]["F_ID"].ToString();
  779. }
  780. }
  781. return F_ParentId;
  782. }
  783. //public static string OrganizeByVendor_F_ParentId(string sqls,string F_Account)
  784. //{
  785. // string F_ParentId = string.Empty;
  786. // string sql = @"
  787. // SELECT b.F_EnCode FROM (SELECT* FROM Sys_SRM_OrganizeByVendor a
  788. // WHERE a.F_EnCode= '{0}')aa
  789. // LEFT JOIN Sys_SRM_OrganizeByVendor b ON aa.F_ID=b.F_ParentID";
  790. // sql = string.Format(sql, F_Account);
  791. // DataTable dt = GetDataTableBySql(sql);
  792. // if (dt.Rows.Count > 0)
  793. // {
  794. // if (string.IsNullOrWhiteSpace( dt.Rows[0]["F_EnCode"].ToString()))
  795. // {
  796. // F_ParentId = "0";
  797. // }
  798. // else
  799. // {
  800. // sqls += "and vencode IN (" + sql + ")";
  801. // }
  802. // }
  803. // return sqls;
  804. //}
  805. public static string OrganizeByVendor_F_ParentId(string sqls, string F_Account)
  806. {
  807. string F_ParentId = string.Empty;
  808. string purchugcode = string.Empty;
  809. string sql = @"
  810. SELECT b.F_ItemCode as purchugcode,b.F_ItemName as purchugname from [dbo].[Sys_SRM_Items] a
  811. LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID
  812. WHERE a.F_EnCode='Vendor_Category' AND b.F_EnabledMark='1' AND b.F_ItemName LIKE '%{0}%'";
  813. sql = string.Format(sql, F_Account);
  814. DataTable dt = GetDataTableBySql(sql);
  815. if (dt.Rows.Count > 0)
  816. {
  817. for (int i = 0; i < dt.Rows.Count; i++)
  818. {
  819. purchugcode += "'" + dt.Rows[i]["purchugcode"].ToString() + "',";
  820. }
  821. sqls += @"and vencode IN ( SELECT vencode FROM dbo.ICSVendor WHERE VCCode IN(" + purchugcode.TrimEnd(',') + "))";
  822. }
  823. //else
  824. //{
  825. // sqls += @"and vencode = '" + purchugcode.TrimEnd(',') + "'";
  826. //}
  827. return sqls;
  828. }
  829. public static string OrganizeByVendor_F_ParentIdByCommint(string sqls, string F_Account)
  830. {
  831. string F_ParentId = string.Empty;
  832. string purchugcode = string.Empty;
  833. string sql = @"
  834. SELECT b.F_ItemCode as purchugcode,b.F_ItemName as purchugname from [dbo].[Sys_SRM_Items] a
  835. LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID
  836. WHERE a.F_EnCode='Vendor_Category' AND b.F_EnabledMark='1' AND b.F_ItemName LIKE '%{0}%'";
  837. sql = string.Format(sql, F_Account);
  838. DataTable dt = GetDataTableBySql(sql);
  839. if (dt.Rows.Count > 0)
  840. {
  841. for (int i = 0; i < dt.Rows.Count; i++)
  842. {
  843. purchugcode += "'" + dt.Rows[i]["purchugcode"].ToString() + "',";
  844. }
  845. sqls += @"and a.vencode IN ( SELECT vencode FROM dbo.ICSVendor WHERE VCCode IN(" + purchugcode.TrimEnd(',') + "))";
  846. }
  847. sqls += " GROUP BY POCode,CreateDateTime,e.ProjectCode,a.VenCode,d.VenName,ReleaseState,CreatePerson,a.Filename,a.uploadcomment ,a.SignBackStatus,a.WorkPoint ,a.EATTRIBUTE7,a.EATTRIBUTE8, a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12,a.BackComment";
  848. return sqls;
  849. }
  850. public static string OrganizeByVendor_F_ParentIdBYJX(string sqls, string F_Account)
  851. {
  852. string F_ParentId = string.Empty;
  853. string purchugcode = string.Empty;
  854. string sql = @"
  855. SELECT b.F_ItemCode as purchugcode,b.F_ItemName as purchugname from [dbo].[Sys_SRM_Items] a
  856. LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID
  857. WHERE a.F_EnCode='Vendor_Category' AND b.F_EnabledMark='1' AND b.F_ItemName LIKE '%{0}%'";
  858. sql = string.Format(sql, F_Account);
  859. DataTable dt = GetDataTableBySql(sql);
  860. if (dt.Rows.Count > 0)
  861. {
  862. for (int i = 0; i < dt.Rows.Count; i++)
  863. {
  864. purchugcode += "'" + dt.Rows[i]["purchugcode"].ToString() + "',";
  865. }
  866. sqls += @"and a.vencode IN ( SELECT vencode FROM dbo.ICSVendor WHERE VCCode IN(" + purchugcode.TrimEnd(',') + "))";
  867. }
  868. return sqls;
  869. //string F_ParentId = string.Empty;
  870. //string sql = @"
  871. //SELECT b.F_EnCode FROM (SELECT* FROM Sys_SRM_OrganizeByVendor a
  872. //WHERE a.F_EnCode= '{0}')aa
  873. //LEFT JOIN Sys_SRM_OrganizeByVendor b ON aa.F_ID=b.F_ParentID";
  874. //sql = string.Format(sql, F_Account);
  875. //DataTable dt = GetDataTableBySql(sql);
  876. //if (dt.Rows.Count > 0)
  877. //{
  878. // if (string.IsNullOrWhiteSpace(dt.Rows[0]["F_EnCode"].ToString()))
  879. // {
  880. // F_ParentId = "0";
  881. // }
  882. // else
  883. // {
  884. // sqls += "and a.vencode IN (" + sql + ")";
  885. // }
  886. //}
  887. //return sqls;
  888. }
  889. public static string OrganizeByVendor_F_ParentIdBYDZ(string sqls, string F_Account)
  890. {
  891. string F_ParentId = string.Empty;
  892. string purchugcode = string.Empty;
  893. string sql = @"
  894. SELECT b.F_ItemCode as purchugcode,b.F_ItemName as purchugname from [dbo].[Sys_SRM_Items] a
  895. LEFT JOIN [dbo].[Sys_SRM_ItemsDetail] b on a.F_Id=b.F_itemID
  896. WHERE a.F_EnCode='Vendor_Category' AND b.F_EnabledMark='1' AND b.F_ItemName LIKE '%{0}%'";
  897. sql = string.Format(sql, F_Account);
  898. DataTable dt = GetDataTableBySql(sql);
  899. if (dt.Rows.Count > 0)
  900. {
  901. for (int i = 0; i < dt.Rows.Count; i++)
  902. {
  903. purchugcode += "'" + dt.Rows[i]["purchugcode"].ToString() + "',";
  904. }
  905. sqls += @"and SupplierCode IN ( SELECT vencode FROM dbo.ICSVendor WHERE VCCode IN(" + purchugcode.TrimEnd(',') + "))";
  906. }
  907. return sqls;
  908. //string F_ParentId = string.Empty;
  909. //string sql = @"
  910. //SELECT b.F_EnCode FROM (SELECT* FROM Sys_SRM_OrganizeByVendor a
  911. //WHERE a.F_EnCode= '{0}')aa
  912. //LEFT JOIN Sys_SRM_OrganizeByVendor b ON aa.F_ID=b.F_ParentID";
  913. //sql = string.Format(sql, F_Account);
  914. //DataTable dt = GetDataTableBySql(sql);
  915. //if (dt.Rows.Count > 0)
  916. //{
  917. // if (string.IsNullOrWhiteSpace(dt.Rows[0]["F_EnCode"].ToString()))
  918. // {
  919. // F_ParentId = "0";
  920. // }
  921. // else
  922. // {
  923. // sqls += "and SupplierCode IN (" + sql + ")";
  924. // }
  925. //}
  926. //return sqls;
  927. }
  928. public static string Organize_F_Account(string F_ParentId, string Selectsql)
  929. {
  930. DataTable dt = null;
  931. string sql = @"with
  932. CTE
  933. as
  934. (
  935. select * from Sys_SRM_Organize where F_Id='{0}'
  936. union all
  937. select G.* from CTE inner join Sys_SRM_Organize as G
  938. on CTE.F_Id=G.F_ParentID
  939. ){1}
  940. AND CreatePerson IN
  941. (select F_RealName from CTE a
  942. inner JOIN sys_SRM_Role b ON a.F_ID=b.F_OrganizeId
  943. inner JOIN sys_srm_user c ON b.F_ID=c.F_RoleID
  944. )";
  945. sql = string.Format(sql, F_ParentId, Selectsql);
  946. return sql;
  947. }
  948. public static DataTable FindTablePageBySql_OtherTemp(string strSql, string TempName, string ParentId, DbParameter[] parameters, ref Pagination Pagination)
  949. {
  950. string orderField = Pagination.sidx;
  951. string orderType = Pagination.sord;
  952. int pageIndex = Pagination.page;
  953. int pageSize = Pagination.rows;
  954. int totalRow = Pagination.records;
  955. DataTable dt = GetPageTable_EXISTSTemp(strSql, TempName, ParentId, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  956. Pagination.records = totalRow;
  957. return dt;
  958. }
  959. //订单回签
  960. public static DataTable FindTablePageBySql_OtherTempByCommint(string strSql, string TempName, string ParentId, DbParameter[] parameters, ref Pagination Pagination)
  961. {
  962. string orderField = Pagination.sidx;
  963. string orderType = Pagination.sord;
  964. int pageIndex = Pagination.page;
  965. int pageSize = Pagination.rows;
  966. int totalRow = Pagination.records;
  967. DataTable dt = GetPageTable_EXISTSTempByCommint(strSql, TempName, ParentId, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  968. Pagination.records = totalRow;
  969. return dt;
  970. }
  971. public static DataTable FindTablePageBySql_OtherTempByVendor(string strSql, string TempName, string ParentId, DbParameter[] parameters, ref Pagination Pagination)
  972. {
  973. string orderField = Pagination.sidx;
  974. string orderType = Pagination.sord;
  975. int pageIndex = Pagination.page;
  976. int pageSize = Pagination.rows;
  977. int totalRow = Pagination.records;
  978. DataTable dt = GetPageTable_EXISTSTempByVendor(strSql, TempName, ParentId, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  979. Pagination.records = totalRow;
  980. return dt;
  981. }
  982. public static DataTable FindTablePageBySql_OtherTemp2(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  983. {
  984. string orderField = Pagination.sidx;
  985. string orderType = Pagination.sord;
  986. int pageIndex = Pagination.page;
  987. int pageSize = Pagination.rows;
  988. int totalRow = Pagination.records;
  989. DataTable dt = GetPageTable_EXISTSTemp2(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  990. Pagination.records = totalRow;
  991. return dt;
  992. }
  993. public static DataTable FindTablePageBySql_OtherTempKbs(ref Pagination Pagination, DataTable dts)
  994. {
  995. string orderField = Pagination.sidx;
  996. string orderType = Pagination.sord;
  997. int pageIndex = Pagination.page;
  998. int pageSize = Pagination.rows;
  999. int totalRow = Pagination.records;
  1000. DataTable dt = GetPageTable_EXISTSTempKbs(pageIndex, pageSize, ref totalRow, dts);
  1001. Pagination.records = totalRow;
  1002. return dt;
  1003. }
  1004. public static DataTable FindTablePageBySql_OtherTemp3(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  1005. {
  1006. string orderField = Pagination.sidx;
  1007. string orderType = Pagination.sord;
  1008. int pageIndex = Pagination.page;
  1009. int pageSize = Pagination.rows;
  1010. int totalRow = Pagination.records;
  1011. DataTable dt = GetPageTable_EXISTSTemp3(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1012. Pagination.records = totalRow;
  1013. return dt;
  1014. }
  1015. public static DataTable FindTablePageBySql_OtherTemp4(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  1016. {
  1017. string orderField = Pagination.sidx;
  1018. string orderType = Pagination.sord;
  1019. int pageIndex = Pagination.page;
  1020. int pageSize = Pagination.rows;
  1021. int totalRow = Pagination.records;
  1022. DataTable dt = GetPageTable_EXISTSTemp4(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1023. Pagination.records = totalRow;
  1024. return dt;
  1025. }
  1026. private static DataTable GetPageTable_EXISTSTemp(string sql, string sqlTempName, string ParentId, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1027. {
  1028. if (pageIndex == 0)
  1029. {
  1030. pageIndex = 1;
  1031. }
  1032. int num = (pageIndex - 1) * pageSize;
  1033. int num1 = (pageIndex) * pageSize;
  1034. string OrderBy = " order by " + orderField + " " + orderType + " ";
  1035. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1036. {
  1037. conn.Open();
  1038. sql = @" with
  1039. CTE
  1040. as
  1041. (
  1042. select * from Sys_SRM_Organize where F_Id='" + ParentId + @"'
  1043. union all
  1044. select G.* from CTE inner join Sys_SRM_Organize as G
  1045. on CTE.F_Id=G.F_ParentID
  1046. ) Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1047. sql += @" As rowNum, * From (" + sqlTempName + @" AND PersonCode IN
  1048. (select F_Account from CTE a
  1049. inner JOIN sys_SRM_Role b ON a.F_ID=b.F_OrganizeId
  1050. inner JOIN sys_srm_user c ON b.F_ID=c.F_RoleID
  1051. )) As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1052. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1053. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1054. DataSet ds = new DataSet();
  1055. adapter.Fill(ds);
  1056. //string ss = ds.Tables[0].Rows[0][0].ToString();
  1057. count = ds.Tables[0].Rows.Count <= 0 ? 0 : Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
  1058. return ds.Tables[0];
  1059. }
  1060. }
  1061. private static DataTable GetPageTable_EXISTSTempByCommint(string sql, string sqlTempName, string ParentId, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1062. {
  1063. if (pageIndex == 0)
  1064. {
  1065. pageIndex = 1;
  1066. }
  1067. int num = (pageIndex - 1) * pageSize;
  1068. int num1 = (pageIndex) * pageSize;
  1069. string OrderBy = " order by " + orderField + " " + orderType + " ";
  1070. string sqlcount = string.Empty;
  1071. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1072. {
  1073. conn.Open();
  1074. sql = @" with
  1075. CTE
  1076. as
  1077. (
  1078. select * from Sys_SRM_Organize where F_Id='" + ParentId + @"'
  1079. union all
  1080. select G.* from CTE inner join Sys_SRM_Organize as G
  1081. on CTE.F_Id=G.F_ParentID
  1082. ) Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1083. sql += @" As rowNum, * From (" + sqlTempName + @" AND PersonCode IN
  1084. (select F_Account from CTE a
  1085. inner JOIN sys_SRM_Role b ON a.F_ID=b.F_OrganizeId
  1086. inner JOIN sys_srm_user c ON b.F_ID=c.F_RoleID
  1087. ) GROUP BY POCode,CreateDateTime,e.ProjectCode,a.VenCode,d.VenName,ReleaseState,CreatePerson,a.Filename,a.uploadcomment ,a.SignBackStatus,a.WorkPoint ,a.EATTRIBUTE7,a.EATTRIBUTE8, a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12,a.BackComment) As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1088. sqlcount += @"with
  1089. CTE
  1090. as
  1091. (
  1092. select * from Sys_SRM_Organize where F_Id='" + ParentId + @"'
  1093. union all
  1094. select G.* from CTE inner join Sys_SRM_Organize as G
  1095. on CTE.F_Id=G.F_ParentID
  1096. ) Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")";
  1097. sqlcount += @" As rowNum, * From (" + sqlTempName + @" AND PersonCode IN
  1098. (select F_Account from CTE a
  1099. inner JOIN sys_SRM_Role b ON a.F_ID=b.F_OrganizeId
  1100. inner JOIN sys_srm_user c ON b.F_ID=c.F_RoleID
  1101. ) GROUP BY POCode,CreateDateTime,e.ProjectCode,a.VenCode,d.VenName,ReleaseState,CreatePerson,a.Filename,a.uploadcomment ,a.SignBackStatus,a.WorkPoint ,a.EATTRIBUTE7,a.EATTRIBUTE8, a.EATTRIBUTE9,a.EATTRIBUTE10 ,a.EATTRIBUTE11 ,a.EATTRIBUTE12,a.BackComment) As T ) As N";
  1102. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1103. SqlCommand cmdcount = new SqlCommand(sqlcount, conn).AddTimeout();
  1104. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1105. DataSet ds = new DataSet();
  1106. adapter.Fill(ds);
  1107. SqlDataAdapter adaptercount = new SqlDataAdapter(cmdcount);
  1108. DataSet dscount = new DataSet();
  1109. adaptercount.Fill(dscount);
  1110. //string ss = ds.Tables[0].Rows[0][0].ToString();
  1111. count = dscount.Tables[0].Rows.Count <= 0 ? 0 : Convert.ToInt32(dscount.Tables[0].Rows.Count);
  1112. return ds.Tables[0];
  1113. }
  1114. }
  1115. private static DataTable GetPageTable_EXISTSTempByVendor(string sql, string sqlTempName, string ParentId, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1116. {
  1117. if (pageIndex == 0)
  1118. {
  1119. pageIndex = 1;
  1120. }
  1121. int num = (pageIndex - 1) * pageSize;
  1122. int num1 = (pageIndex) * pageSize;
  1123. string OrderBy = " order by " + orderField + " " + orderType + " ";
  1124. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1125. {
  1126. conn.Open();
  1127. sql = @" with
  1128. CTE
  1129. as
  1130. (
  1131. select * from Sys_SRM_Organize where F_Id='" + ParentId + @"'
  1132. union all
  1133. select G.* from CTE inner join Sys_SRM_Organize as G
  1134. on CTE.F_Id=G.F_ParentID
  1135. ) Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1136. sql += @" As rowNum, * From (" + sqlTempName + @" AND PersonCode IN
  1137. (select F_Account from CTE a
  1138. )) As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1139. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1140. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1141. DataSet ds = new DataSet();
  1142. adapter.Fill(ds);
  1143. //string ss = ds.Tables[0].Rows[0][0].ToString();
  1144. count = ds.Tables[0].Rows.Count <= 0 ? 0 : Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
  1145. return ds.Tables[0];
  1146. }
  1147. }
  1148. //招投标权限
  1149. private static DataTable GetPageTable_EXISTSTemp2(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1150. {
  1151. //StringBuilder strSql = new StringBuilder();
  1152. if (pageIndex == 0)
  1153. {
  1154. pageIndex = 1;
  1155. }
  1156. int num = (pageIndex - 1) * pageSize;
  1157. int num1 = (pageIndex) * pageSize;
  1158. string OrderBy = " order by InvCode desc ";
  1159. //if (!string.IsNullOrEmpty(orderField))
  1160. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1161. //else
  1162. // OrderBy = "order by (select 0)";
  1163. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1164. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1165. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1166. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1167. //return DatabaseReader.ReaderToDataTable(dr);
  1168. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1169. {
  1170. conn.Open();
  1171. sql += " Select Count(1) From " + sqlTempName;
  1172. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1173. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1174. sql += Droptable;
  1175. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1176. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1177. DataSet ds = new DataSet();
  1178. adapter.Fill(ds);
  1179. string ss = ds.Tables[1].Rows[0][0].ToString();
  1180. count = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
  1181. return ds.Tables[1];
  1182. }
  1183. }
  1184. private static DataTable GetPageTable_EXISTSTempKbs(int pageIndex, int pageSize, ref int count, DataTable dts)
  1185. {
  1186. //StringBuilder strSql = new StringBuilder();
  1187. if (pageIndex == 0)
  1188. {
  1189. pageIndex = 1;
  1190. }
  1191. int num = (pageIndex - 1) * pageSize;
  1192. int num1 = (pageIndex) * pageSize;
  1193. //string OrderBy = " order by InvCode desc ";
  1194. //if (!string.IsNullOrEmpty(orderField))
  1195. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1196. //else
  1197. // OrderBy = "order by (select 0)";
  1198. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1199. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1200. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1201. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1202. //return DatabaseReader.ReaderToDataTable(dr);
  1203. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1204. {
  1205. //conn.Open();
  1206. //sql += " Select Count(1) From " + sqlTempName;
  1207. //sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1208. //sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1209. //sql += Droptable;
  1210. //SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1211. //SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1212. //DataSet ds = new DataSet();
  1213. //adapter.Fill(ds);
  1214. //string ss = dts.Rows[0][0].ToString();
  1215. //count = Convert.ToInt32(dts.Rows.Count.ToString());
  1216. //return dts;
  1217. DataTable resultTable = dts.Clone();
  1218. for (int i = num; i < Math.Min(num1, dts.Rows.Count); i++)
  1219. {
  1220. resultTable.ImportRow(dts.Rows[i]);
  1221. }
  1222. // 计算总记录数
  1223. count = dts.Rows.Count;
  1224. return resultTable;
  1225. }
  1226. }
  1227. private static DataTable GetPageTable_EXISTSTemp3(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1228. {
  1229. //StringBuilder strSql = new StringBuilder();
  1230. if (pageIndex == 0)
  1231. {
  1232. pageIndex = 1;
  1233. }
  1234. int num = (pageIndex - 1) * pageSize;
  1235. int num1 = (pageIndex) * pageSize;
  1236. string OrderBy = " order by VENDORCODE desc ";
  1237. //if (!string.IsNullOrEmpty(orderField))
  1238. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1239. //else
  1240. // OrderBy = "order by (select 0)";
  1241. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1242. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1243. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1244. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1245. //return DatabaseReader.ReaderToDataTable(dr);
  1246. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1247. {
  1248. conn.Open();
  1249. sql += " Select Count(1) From " + sqlTempName;
  1250. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1251. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1252. sql += Droptable;
  1253. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1254. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1255. DataSet ds = new DataSet();
  1256. adapter.Fill(ds);
  1257. string ss = ds.Tables[0].Rows[0][0].ToString();
  1258. if (ds.Tables[1].Rows.Count > 0)
  1259. {
  1260. count = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
  1261. return ds.Tables[0];
  1262. }
  1263. else
  1264. {
  1265. return new DataTable();
  1266. }
  1267. }
  1268. }
  1269. private static DataTable GetPageTable_EXISTSTemp4(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1270. {
  1271. //StringBuilder strSql = new StringBuilder();
  1272. if (pageIndex == 0)
  1273. {
  1274. pageIndex = 1;
  1275. }
  1276. int num = (pageIndex - 1) * pageSize;
  1277. int num1 = (pageIndex) * pageSize;
  1278. //string OrderBy = " order by dDate desc ";
  1279. string OrderBy = " order by " + orderField + " " + orderType + " ";
  1280. //if (!string.IsNullOrEmpty(orderField))
  1281. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1282. //else
  1283. // OrderBy = "order by (select 0)";
  1284. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1285. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1286. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1287. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1288. //return DatabaseReader.ReaderToDataTable(dr);
  1289. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1290. {
  1291. conn.Open();
  1292. sql += " Select Count(1) From " + sqlTempName;
  1293. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1294. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1295. sql += Droptable;
  1296. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1297. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1298. DataSet ds = new DataSet();
  1299. adapter.Fill(ds);
  1300. string ss = ds.Tables[0].Rows[0][0].ToString();
  1301. if (ds.Tables[1].Rows.Count > 0)
  1302. {
  1303. count = Convert.ToInt32(ss);
  1304. return ds.Tables[1];
  1305. }
  1306. else
  1307. {
  1308. return new DataTable();
  1309. }
  1310. }
  1311. }
  1312. public static DataTable FindTablePageBySql_OtherTempbyLOGUSER(string strSql, string TempName, string ParentId, DbParameter[] parameters, ref Pagination Pagination)
  1313. {
  1314. string orderField = Pagination.sidx;
  1315. string orderType = Pagination.sord;
  1316. int pageIndex = Pagination.page;
  1317. int pageSize = Pagination.rows;
  1318. int totalRow = Pagination.records;
  1319. DataTable dt = GetPageTable_EXISTSTempbyLOGUSER(strSql, TempName, ParentId, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1320. Pagination.records = totalRow;
  1321. return dt;
  1322. }
  1323. private static DataTable GetPageTable_EXISTSTempbyLOGUSER(string sql, string sqlTempName, string ParentId, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1324. {
  1325. if (pageIndex == 0)
  1326. {
  1327. pageIndex = 1;
  1328. }
  1329. int num = (pageIndex - 1) * pageSize;
  1330. int num1 = (pageIndex) * pageSize;
  1331. string OrderBy = " order by " + orderField + " " + orderType + " ";
  1332. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1333. {
  1334. conn.Open();
  1335. sql = @" with
  1336. CTE
  1337. as
  1338. (
  1339. select * from Sys_SRM_Organize where F_Id='" + ParentId + @"'
  1340. union all
  1341. select G.* from CTE inner join Sys_SRM_Organize as G
  1342. on CTE.F_Id=G.F_ParentID
  1343. ) Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1344. sql += @" As rowNum, * From (" + sqlTempName + @" AND A.LOGUSER IN
  1345. (select F_RealName from CTE a
  1346. inner JOIN sys_SRM_Role b ON a.F_ID=b.F_OrganizeId
  1347. inner JOIN sys_srm_user c ON b.F_ID=c.F_RoleID
  1348. )) As T ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1349. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1350. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1351. DataSet ds = new DataSet();
  1352. adapter.Fill(ds);
  1353. //string ss = ds.Tables[0].Rows[0][0].ToString();
  1354. count = ds.Tables[0].Rows.Count <= 0 ? 0 : Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
  1355. return ds.Tables[0];
  1356. }
  1357. }
  1358. public static DataTable FindTablePageBySql_OtherTempByZTB(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  1359. {
  1360. string orderField = Pagination.sidx;
  1361. string orderType = Pagination.sord;
  1362. int pageIndex = Pagination.page;
  1363. int pageSize = Pagination.rows;
  1364. int totalRow = Pagination.records;
  1365. DataTable dt = GetPageTable_EXISTSTempByZTB(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1366. Pagination.records = totalRow;
  1367. return dt;
  1368. }
  1369. private static DataTable GetPageTable_EXISTSTempByZTB(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1370. {
  1371. //StringBuilder strSql = new StringBuilder();
  1372. if (pageIndex == 0)
  1373. {
  1374. pageIndex = 1;
  1375. }
  1376. int num = (pageIndex - 1) * pageSize;
  1377. int num1 = (pageIndex) * pageSize;
  1378. string OrderBy = " order by InvCode desc ";
  1379. //if (!string.IsNullOrEmpty(orderField))
  1380. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1381. //else
  1382. // OrderBy = "order by (select 0)";
  1383. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1384. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1385. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1386. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1387. //return DatabaseReader.ReaderToDataTable(dr);
  1388. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1389. {
  1390. conn.Open();
  1391. sql += " Select Count(1) From " + sqlTempName;
  1392. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1393. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1394. sql += Droptable;
  1395. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1396. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1397. DataSet ds = new DataSet();
  1398. adapter.Fill(ds);
  1399. string ss = ds.Tables[1].Rows[0][0].ToString();
  1400. count = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
  1401. return ds.Tables[0];
  1402. }
  1403. }
  1404. public static DataTable FindTablePageBySql_OtherTempSORRFQbyChan(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  1405. {
  1406. string orderField = Pagination.sidx;
  1407. string orderType = Pagination.sord;
  1408. int pageIndex = Pagination.page;
  1409. int pageSize = Pagination.rows;
  1410. int totalRow = Pagination.records;
  1411. DataTable dt = GetPageTable_EXISTSTempSORRFQbyChan(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1412. Pagination.records = totalRow;
  1413. return dt;
  1414. }
  1415. private static DataTable GetPageTable_EXISTSTempSORRFQbyChan(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1416. {
  1417. //StringBuilder strSql = new StringBuilder();
  1418. if (pageIndex == 0)
  1419. {
  1420. pageIndex = 1;
  1421. }
  1422. int num = (pageIndex - 1) * pageSize;
  1423. int num1 = (pageIndex) * pageSize;
  1424. string OrderBy = " order by 物料编码 desc ";
  1425. //if (!string.IsNullOrEmpty(orderField))
  1426. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1427. //else
  1428. // OrderBy = "order by (select 0)";
  1429. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1430. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1431. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1432. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1433. //return DatabaseReader.ReaderToDataTable(dr);
  1434. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1435. {
  1436. conn.Open();
  1437. sql += " Select Count(1) From " + sqlTempName;
  1438. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1439. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1440. sql += Droptable;
  1441. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1442. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1443. DataSet ds = new DataSet();
  1444. adapter.Fill(ds);
  1445. string ss = ds.Tables[1].Rows[0][0].ToString();
  1446. count = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
  1447. return ds.Tables[0];
  1448. }
  1449. }
  1450. public static DataTable FindTablePageBySql_OtherTempSORRFQ(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  1451. {
  1452. string orderField = Pagination.sidx;
  1453. string orderType = Pagination.sord;
  1454. int pageIndex = Pagination.page;
  1455. int pageSize = Pagination.rows;
  1456. int totalRow = Pagination.records;
  1457. DataTable dt = GetPageTable_EXISTSTempSORRFQ(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1458. Pagination.records = totalRow;
  1459. return dt;
  1460. }
  1461. private static DataTable GetPageTable_EXISTSTempSORRFQ(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1462. {
  1463. //StringBuilder strSql = new StringBuilder();
  1464. if (pageIndex == 0)
  1465. {
  1466. pageIndex = 1;
  1467. }
  1468. int num = (pageIndex - 1) * pageSize;
  1469. int num1 = (pageIndex) * pageSize;
  1470. string OrderBy = " order by ITEMCODE desc ";
  1471. //if (!string.IsNullOrEmpty(orderField))
  1472. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1473. //else
  1474. // OrderBy = "order by (select 0)";
  1475. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1476. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1477. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1478. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1479. //return DatabaseReader.ReaderToDataTable(dr);
  1480. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1481. {
  1482. conn.Open();
  1483. sql += " Select Count(1) From " + sqlTempName;
  1484. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1485. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1486. sql += Droptable;
  1487. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1488. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1489. DataSet ds = new DataSet();
  1490. adapter.Fill(ds);
  1491. string ss = ds.Tables[1].Rows[0][0].ToString();
  1492. count = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
  1493. return ds.Tables[0];
  1494. }
  1495. }
  1496. public static DataTable FindTablePageBySql_OtherTemps(string strSql, string TempName, string Droptable, DbParameter[] parameters, ref Pagination Pagination)
  1497. {
  1498. string orderField = Pagination.sidx;
  1499. string orderType = Pagination.sord;
  1500. int pageIndex = Pagination.page;
  1501. int pageSize = Pagination.rows;
  1502. int totalRow = Pagination.records;
  1503. DataTable dt = GetPageTable_EXISTSTemps(strSql, TempName, Droptable, parameters, orderField, orderType, pageIndex, pageSize, ref totalRow);
  1504. Pagination.records = totalRow;
  1505. return dt;
  1506. }
  1507. private static DataTable GetPageTable_EXISTSTemps(string sql, string sqlTempName, string Droptable, DbParameter[] param, string orderField, string orderType, int pageIndex, int pageSize, ref int count)
  1508. {
  1509. //StringBuilder strSql = new StringBuilder();
  1510. if (pageIndex == 0)
  1511. {
  1512. pageIndex = 1;
  1513. }
  1514. int num = (pageIndex - 1) * pageSize;
  1515. int num1 = (pageIndex) * pageSize;
  1516. string OrderBy = " order by VENDORCODE desc ";
  1517. //if (!string.IsNullOrEmpty(orderField))
  1518. // OrderBy = "Order By " + orderField + " " + orderType + "";
  1519. //else
  1520. // OrderBy = "order by (select 0)";
  1521. //strSql.Append(sql+@" Select * From (Select ROW_NUMBER() Over (" + OrderBy + ")");
  1522. //strSql.Append(" As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " " + Droptable);
  1523. //count = Convert.ToInt32(ExecuteScalar(CommandType.Text, sql + " Select Count(1) From " + sqlTempName +" "+ Droptable, param));
  1524. //IDataReader dr = ExecuteReader(CommandType.Text, strSql.ToString(), param);
  1525. //return DatabaseReader.ReaderToDataTable(dr);
  1526. using (SqlConnection conn = SqlHelper.GetDataCenterConn())
  1527. {
  1528. conn.Open();
  1529. sql += " Select Count(1) From " + sqlTempName;
  1530. sql += " Select * From (Select ROW_NUMBER() Over (" + OrderBy + ") ";
  1531. sql += " As rowNum, * From " + sqlTempName + " ) As N Where rowNum > " + num + " And rowNum <= " + num1 + " ";
  1532. sql += Droptable;
  1533. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1534. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1535. DataSet ds = new DataSet();
  1536. adapter.Fill(ds);
  1537. string ss = ds.Tables[1].Rows[0][0].ToString();
  1538. count = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());
  1539. return ds.Tables[0];
  1540. }
  1541. }
  1542. public static string GetZZNumber(string ClassCode)
  1543. {
  1544. string result = string.Empty;
  1545. switch (ClassCode)
  1546. {
  1547. case "1":
  1548. result = "YW";
  1549. break;
  1550. case "2":
  1551. result = "BW";
  1552. break;
  1553. case "3":
  1554. result = "CW";
  1555. break;
  1556. case "4":
  1557. result = "FW";
  1558. break;
  1559. case "5":
  1560. result = "PW";
  1561. break;
  1562. case "6":
  1563. result = "DW";
  1564. break;
  1565. case "7":
  1566. result = "GW";
  1567. break;
  1568. case "8":
  1569. result = "LW";
  1570. break;
  1571. }
  1572. return result;
  1573. }
  1574. public static DataTable GetDataSetBySql(string sql, SqlCommand cmd)
  1575. {
  1576. cmd.CommandText = sql;
  1577. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  1578. DataTable ds = new DataTable();
  1579. adapter.Fill(ds);
  1580. return ds;
  1581. }
  1582. public static void UserPwdValid(string User, string Pwd)
  1583. {
  1584. if (string.IsNullOrWhiteSpace(User))
  1585. {
  1586. Regex regex = new Regex(@"^(?=.*[A-Za-z])(?=.*\d)(?=.*[~?!@#$%^&*_-])[A-Za-z\d~?!@#$%^&*_-]{8,}$");
  1587. //string rex = @"^(?=.*[A-Za-z])(?=.*\d)(?=.*[~?!@#$%^&*_-])[A-Za-z\d~?!@#$%^&*_-]{8,}$";
  1588. if (!regex.IsMatch(Pwd))
  1589. {
  1590. throw new Exception("密码不符合规则,至少8位,至少包含一个英文字母(区分大小写),至少包含一个数字,至少包含一个特殊字符.");
  1591. }
  1592. }
  1593. }
  1594. /// <summary>
  1595. /// 获取配置文件信息
  1596. /// </summary>
  1597. /// <param name="F_EnCode"></param>
  1598. /// <returns></returns>
  1599. public static string GetItemsDetails(string F_EnCode, string WorkPoint)
  1600. {
  1601. string msg = string.Empty;
  1602. string sqldetail = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  1603. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  1604. WHERE b.F_EnCode = '{0}' and a.F_EnabledMark='1' and a.F_ItemCode='{1}'";
  1605. sqldetail = string.Format(sqldetail, F_EnCode, WorkPoint);
  1606. DataTable dts = GetDataTableBySql(sqldetail);
  1607. if (dts.Rows.Count > 0)
  1608. {
  1609. msg = dts.Rows[0]["F_Description"].ToString();
  1610. }
  1611. return msg;
  1612. }
  1613. /// <summary>
  1614. /// 订单发布邮件内容
  1615. /// </summary>
  1616. /// <param name="F_EnCode"></param>
  1617. /// <returns></returns>
  1618. public static string GetItemsDetailsbySendMail(string F_EnCode)
  1619. {
  1620. string msg = string.Empty;
  1621. string sqldetail = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  1622. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  1623. WHERE b.F_EnCode = '{0}' and a.F_EnabledMark='1'";
  1624. sqldetail = string.Format(sqldetail, F_EnCode);
  1625. DataTable dts = GetDataTableBySql(sqldetail);
  1626. if (dts.Rows.Count > 0)
  1627. {
  1628. msg = dts.Rows[0]["F_Description"].ToString();
  1629. }
  1630. return msg;
  1631. }
  1632. /// <summary>
  1633. /// 送货单审核配置
  1634. /// </summary>
  1635. /// <param name="F_EnCode"></param>
  1636. /// <returns></returns>
  1637. public static string GetSHDZDSHItemsDetails(string F_EnCode, string WorkPoint)
  1638. {
  1639. string msg = string.Empty;
  1640. string sqldetail = @"SELECT a.F_ItemName,a.F_Description FROM Sys_SRM_ItemsDetail a
  1641. LEFT JOIN Sys_SRM_Items b ON a.F_ItemId = b.F_Id
  1642. WHERE b.F_EnCode = '{0}' and a.F_EnabledMark='1'";
  1643. sqldetail = string.Format(sqldetail, F_EnCode, WorkPoint);
  1644. DataTable dts = GetDataTableBySql(sqldetail);
  1645. if (dts.Rows.Count > 0)
  1646. {
  1647. msg = dts.Rows[0]["F_ItemName"].ToString();
  1648. }
  1649. return msg;
  1650. }
  1651. /// <summary>
  1652. /// 方法一:获取编号 返回Dictionary字典,调用该方法用Dictionary字典接收,只需要遍历Dictionary即可得到响应的值
  1653. /// </summary>
  1654. /// <param name="workPointCode"></param>
  1655. /// <param name="tbName"></param>
  1656. /// <param name="colName"></param>
  1657. /// <param name="Pre"></param>
  1658. /// <param name="numLen"></param>
  1659. /// <returns>返回Dictionary字典</returns>
  1660. public static Dictionary<string, int> GetAllCode(string cAcc_Id, string cVouchType, string iAmount)
  1661. {
  1662. string iFatherId = string.Empty, iChildId = string.Empty;
  1663. Dictionary<string, int> dic = new Dictionary<string, int>();
  1664. try
  1665. {
  1666. //SqlConnection conn = SqlHelper.GetDataCenterConn();
  1667. SqlConnection conn = new SqlConnection(DataCenterU8ConnString);
  1668. SqlCommand cmd = new SqlCommand("sp_GetIDWithoutRemote", conn);
  1669. cmd.CommandType = CommandType.StoredProcedure;
  1670. cmd.Parameters.AddWithValue("@cAcc_Id", cAcc_Id);  //给输入参数赋值
  1671. cmd.Parameters.AddWithValue("@cVouchType", cVouchType);  //给输入参数赋值
  1672. cmd.Parameters.AddWithValue("@iAmount", iAmount);  //给输入参数赋值
  1673. //cmd.Parameters.AddWithValue("@iFatherId", iFatherId);  //给输入参数赋值
  1674. //cmd.Parameters.AddWithValue("@iChildId", iChildId);  //给输入参数赋值
  1675. SqlParameter parOutput = cmd.Parameters.Add("@iFatherId", SqlDbType.NVarChar, 50);  //定义输出参数
  1676. cmd.Parameters["@iFatherId"].Direction = ParameterDirection.Output;
  1677. SqlParameter parOutputs = cmd.Parameters.Add("@iChildId", SqlDbType.NVarChar, 50);  //定义输出参数
  1678. cmd.Parameters["@iChildId"].Direction = ParameterDirection.Output;
  1679. SqlParameter parReturn = new SqlParameter("@return", SqlDbType.Int);
  1680. parReturn.Direction = ParameterDirection.ReturnValue;   //参数类型为ReturnValue
  1681. cmd.Parameters.Add(parReturn);
  1682. conn.Open();
  1683. cmd.ExecuteNonQuery();
  1684. iFatherId = cmd.Parameters["@iFatherId"].Value.ToString();
  1685. iChildId = cmd.Parameters["@iChildId"].Value.ToString();
  1686. if (!string.IsNullOrWhiteSpace(iFatherId))//判断iFatherId是否为空,不为空的话将值放入dictionary字典中,否则int.Parse()会抛出异常
  1687. {
  1688. dic.Add("iFatherId", int.Parse(iFatherId));
  1689. dic.Add("iChildId", int.Parse(iChildId));
  1690. }
  1691. }
  1692. catch (System.Exception ex)
  1693. {
  1694. throw ex;
  1695. }
  1696. return dic;
  1697. }
  1698. /// <summary>
  1699. /// DataSet转Json字符串,主子结构
  1700. /// 需要建立主子表关系,第一张表为主表
  1701. /// 会排除关联列
  1702. /// </summary>
  1703. /// <param name="dataSet"></param>
  1704. /// <param name="RelationName">关系名称</param>
  1705. /// <returns></returns>
  1706. public static string DataSetToJson(DataSet dataSet, string RelationName, string column)
  1707. {
  1708. DataRelation dataRelation = new DataRelation(RelationName, dataSet.Tables[0].Columns[column], dataSet.Tables[1].Columns[column]);
  1709. dataSet.Relations.Add(dataRelation);
  1710. StringBuilder jsonString = new StringBuilder();
  1711. //foreach (DataTable table in dataSet.Tables)
  1712. //{
  1713. DataTable table = dataSet.Tables[0];
  1714. jsonString.Append("[");
  1715. DataRowCollection drc = table.Rows;
  1716. for (int i = 0; i < drc.Count; i++)
  1717. {
  1718. DataRow dataRow = drc[i];
  1719. jsonString.Append("{");
  1720. for (int j = 0; j < table.Columns.Count; j++)
  1721. {
  1722. string strKey = table.Columns[j].ColumnName;
  1723. if (dataSet.Relations[RelationName].ParentColumns.Select(a => a.Caption).Contains(strKey))
  1724. continue;
  1725. string strValue = dataRow[j].ToString();
  1726. Type type = table.Columns[j].DataType;
  1727. jsonString.Append("\"" + strKey + "\":");
  1728. strValue = StringFormat(strValue, type);
  1729. if (j < table.Columns.Count - 1)
  1730. {
  1731. jsonString.Append(strValue + ",");
  1732. }
  1733. else
  1734. {
  1735. jsonString.Append(strValue);
  1736. }
  1737. }
  1738. jsonString.Append(",\"" + RelationName + "\":");
  1739. DataRow[] drs = dataRow.GetChildRows(RelationName);
  1740. jsonString.Append("[");
  1741. foreach (DataRow dr in drs)
  1742. {
  1743. DataTable dt = dr.Table;
  1744. jsonString.Append("{");
  1745. for (int j = 0; j < dt.Columns.Count; j++)
  1746. {
  1747. string strKey = dt.Columns[j].ColumnName;
  1748. if (dataSet.Relations[RelationName].ChildColumns.Select(a => a.Caption).Contains(strKey))
  1749. continue;
  1750. string strValue = dr[j].ToString();
  1751. Type type = dt.Columns[j].DataType;
  1752. jsonString.Append("\"" + strKey + "\":");
  1753. strValue = StringFormat(strValue, type);
  1754. if (j < dt.Columns.Count - 1)
  1755. {
  1756. jsonString.Append(strValue + ",");
  1757. }
  1758. else
  1759. {
  1760. jsonString.Append(strValue);
  1761. }
  1762. }
  1763. jsonString.Append("},");
  1764. }
  1765. if (drs.Length > 0)
  1766. jsonString.Remove(jsonString.Length - 1, 1);
  1767. jsonString.Append("]");
  1768. jsonString.Append("},");
  1769. }
  1770. jsonString.Remove(jsonString.Length - 1, 1);
  1771. jsonString.Append("]");
  1772. //}
  1773. string res = jsonString.ToString();
  1774. return res;
  1775. }
  1776. /// <summary>
  1777. /// 格式化字符型、日期型、布尔型
  1778. /// </summary>
  1779. /// <param name="str"></param>
  1780. /// <param name="type"></param>
  1781. /// <returns></returns>
  1782. private static string StringFormat(string str, Type type)
  1783. {
  1784. if (type == typeof(string))
  1785. {
  1786. str = String2Json(str);
  1787. str = "\"" + str + "\"";
  1788. }
  1789. else if (type == typeof(DateTime))
  1790. {
  1791. str = "\"" + str + "\"";
  1792. }
  1793. else if (type == typeof(bool))
  1794. {
  1795. str = str.ToLower();
  1796. }
  1797. else if (type != typeof(string) && string.IsNullOrEmpty(str))
  1798. {
  1799. str = "\"" + str + "\"";
  1800. }
  1801. return str;
  1802. }
  1803. /// <summary>
  1804. /// 过滤特殊字符
  1805. /// </summary>
  1806. /// <param name="s">字符串</param>
  1807. /// <returns>json字符串</returns>
  1808. private static string String2Json(String s)
  1809. {
  1810. StringBuilder sb = new StringBuilder();
  1811. for (int i = 0; i < s.Length; i++)
  1812. {
  1813. char c = s.ToCharArray()[i];
  1814. switch (c)
  1815. {
  1816. case '\"':
  1817. sb.Append("\\\""); break;
  1818. case '\\':
  1819. sb.Append("\\\\"); break;
  1820. case '/':
  1821. sb.Append("\\/"); break;
  1822. case '\b':
  1823. sb.Append("\\b"); break;
  1824. case '\f':
  1825. sb.Append("\\f"); break;
  1826. case '\n':
  1827. sb.Append("\\n"); break;
  1828. case '\r':
  1829. sb.Append("\\r"); break;
  1830. case '\t':
  1831. sb.Append("\\t"); break;
  1832. default:
  1833. sb.Append(c); break;
  1834. }
  1835. }
  1836. return sb.ToString();
  1837. }
  1838. public static string GetEATTRIBUTE(string Tabname, string TablenameJC)
  1839. {
  1840. string SqlKey = "";
  1841. string sql = @"select TableCode, ColumnCode AS Code,Name from ICSSRMColumnEnable
  1842. where Enable=1 and TableCode='" + Tabname + "' order by MTIME";
  1843. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  1844. for (int i = 0; i < dt.Rows.Count; i++)
  1845. {
  1846. SqlKey += "" + TablenameJC + "." + dt.Rows[i]["Code"].ToString() + ",";
  1847. }
  1848. return SqlKey;
  1849. }
  1850. /// <summary>
  1851. /// 根据sql语句和参数,返回DataRow
  1852. /// </summary>
  1853. /// <param name="sql">sql语句</param>
  1854. /// <param name="ConnectStr">数据库链接名称</param>
  1855. /// <param name="spArr">可变参数</param>
  1856. /// <returns>DataRow</returns>
  1857. public static DataRow GetDataRowBySql_OtherConn(string sql, string ConnectStr, params SqlParameter[] spArr)
  1858. {
  1859. DataTable dt = GetDataTableBySql_OtherConn(sql, ConnectStr, spArr);
  1860. if (dt == null || dt.Rows.Count == 0)
  1861. return null;
  1862. return dt.Rows[0];
  1863. }
  1864. /// <summary>
  1865. /// 根据sql语句和参数,返回DataTable 分页显示
  1866. /// </summary>
  1867. /// <param name="sql">sql语句</param>
  1868. /// <param name="ConnectStr">数据库链接名称</param>
  1869. /// <param name="spArr">可变参数</param>
  1870. /// <returns>DataTable</returns>
  1871. public static DataTable GetDataTableBySql_OtherConn(string sql, string ConnectStr, ref Pagination jqgridparam, params SqlParameter[] spArr)
  1872. {
  1873. using (SqlConnection conn = SqlHelper.GetConnByStr(ConnectStr))
  1874. {
  1875. string orderField = jqgridparam.sidx;
  1876. string orderType = jqgridparam.sord;
  1877. int pageIndex = jqgridparam.page;
  1878. int pageSize = jqgridparam.rows;
  1879. int totalRow = 0;
  1880. string OrderBy = "";
  1881. if (pageIndex == 0)
  1882. {
  1883. pageIndex = 1;
  1884. }
  1885. int num = (pageIndex - 1) * pageSize;
  1886. int num1 = (pageIndex) * pageSize;
  1887. if (!string.IsNullOrEmpty(orderField))
  1888. OrderBy = orderField + " " + orderType + "";
  1889. conn.Open();
  1890. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1891. if (spArr != null && spArr.Length > 0)
  1892. cmd.Parameters.AddRange(spArr.SetDBNull());
  1893. DataTable dt = cmd.ExecuteDataTable();
  1894. DataTable dtNew = dt.Clone();
  1895. if (dt != null && dt.Rows.Count > 0)
  1896. {
  1897. jqgridparam.records = dt.Rows.Count;
  1898. DataView dv = dt.DefaultView;
  1899. dv.Sort = OrderBy;
  1900. dt = dv.ToTable();
  1901. if (dt.Rows.Count >= num)
  1902. {
  1903. for (int i = num; i < num1 && i < dt.Rows.Count; i++)
  1904. {
  1905. dtNew.ImportRow(dt.Rows[i]);
  1906. }
  1907. }
  1908. }
  1909. return dtNew;
  1910. }
  1911. }
  1912. /// <summary>
  1913. /// 根据sql语句和参数,返回DataTable
  1914. /// </summary>
  1915. /// <param name="sql">sql语句</param>
  1916. /// <param name="ConnectStr">数据库链接名称</param>
  1917. /// <param name="spArr">可变参数</param>
  1918. /// <returns>DataTable</returns>
  1919. public static DataTable GetDataTableBySql_OtherConn(string sql, string ConnectStr, params SqlParameter[] spArr)
  1920. {
  1921. using (SqlConnection conn = SqlHelper.GetConnByStr(ConnectStr))
  1922. {
  1923. conn.Open();
  1924. SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
  1925. if (spArr != null && spArr.Length > 0)
  1926. cmd.Parameters.AddRange(spArr.SetDBNull());
  1927. DataTable dt = cmd.ExecuteDataTable();
  1928. return dt;
  1929. }
  1930. }
  1931. }//end of class
  1932. #region [ SqlHelper 的扩展方法类 ]
  1933. /// <summary>
  1934. /// 扩展方法类
  1935. /// </summary>
  1936. public static class SqlHelperExtensionMethods
  1937. {
  1938. /// <summary>
  1939. /// 新建SqlCommand对象时, 自动加上指定的 CommandTimeout. by ngye, on 2013-07-11.
  1940. /// </summary>
  1941. /// <param name="cmd">SqlCommand对象</param>
  1942. /// <returns>SqlCommand对象</returns>
  1943. public static SqlCommand AddTimeout(this SqlCommand cmd)
  1944. {
  1945. cmd.CommandTimeout = SqlHelper.CommandTimeout;
  1946. return cmd;
  1947. }
  1948. /// <summary>
  1949. /// 新建SqlBulkCopy对象时, 自动加上指定的 BulkCopyTimeout. by ngye, on 2013-08-30.
  1950. /// </summary>
  1951. /// <param name="cmd">SqlBulkCopy对象</param>
  1952. /// <returns>SqlBulkCopy对象</returns>
  1953. public static SqlBulkCopy AddTimeout(this SqlBulkCopy bulkCopy)
  1954. {
  1955. bulkCopy.BulkCopyTimeout = SqlHelper.CommandTimeout;
  1956. return bulkCopy;
  1957. }
  1958. /// <summary>
  1959. /// 执行cmd得到 DataTable. by ngye, on 2013-08-01
  1960. /// </summary>
  1961. /// <param name="cmd"></param>
  1962. /// <returns></returns>
  1963. public static DataTable ExecuteDataTable(this SqlCommand cmd)
  1964. {
  1965. DataTable dt = new DataTable();
  1966. using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
  1967. {
  1968. adapter.Fill(dt);
  1969. }
  1970. return dt;
  1971. }
  1972. /// <summary>
  1973. /// 为SqlParameter设置参数. by ngye, on 2013-08-15.
  1974. /// </summary>
  1975. /// <param name="sp"></param>
  1976. /// <returns></returns>
  1977. public static SqlParameter SetValue(this SqlParameter sp, object value)
  1978. {
  1979. sp.Value = value;
  1980. return sp;
  1981. }
  1982. /// <summary>
  1983. /// 为SqlParameter设置SqlDbType. by ngye, on 2013-09-03.
  1984. /// </summary>
  1985. /// <param name="sp"></param>
  1986. /// <returns></returns>
  1987. public static SqlParameter SetSqlDbType(this SqlParameter sp, SqlDbType dbType)
  1988. {
  1989. sp.SqlDbType = dbType;
  1990. return sp;
  1991. }
  1992. /// <summary>
  1993. /// 对可以为空的值作这样的处理,一旦其为空,就设置为DBNull.value.
  1994. /// </summary>
  1995. /// <param name="sp"></param>
  1996. /// <returns></returns>
  1997. public static SqlParameter[] SetDBNull(this SqlParameter[] spArr)
  1998. {
  1999. if (spArr == null || spArr.Length == 0)
  2000. return spArr;
  2001. for (int i = 0; i < spArr.Length; i++)
  2002. {
  2003. SqlParameter sp = spArr[i];
  2004. if (sp.Value == null)
  2005. sp.Value = DBNull.Value;
  2006. }
  2007. return spArr;
  2008. }
  2009. public static string HttpPost(string url, string body)
  2010. {
  2011. try
  2012. {
  2013. Encoding encoding = Encoding.UTF8;
  2014. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  2015. request.Method = "POST";
  2016. request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
  2017. request.ContentType = "application/json; charset=utf-8";
  2018. byte[] buffer = encoding.GetBytes(body);
  2019. request.ContentLength = buffer.Length;
  2020. request.GetRequestStream().Write(buffer, 0, buffer.Length);
  2021. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  2022. using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
  2023. {
  2024. return reader.ReadToEnd();
  2025. }
  2026. }
  2027. catch (WebException ex)
  2028. {
  2029. throw new Exception(ex.Message);
  2030. }
  2031. }
  2032. }
  2033. #endregion
  2034. }