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.

237 lines
8.2 KiB

2 years ago
  1. using Entity.Sugar;
  2. using Euro.Transfer.Base;
  3. using SqlSugar.Base;
  4. using System;
  5. using System.Configuration;
  6. using System.IO;
  7. using System.Runtime.InteropServices;
  8. using System.Text;
  9. using System.Xml;
  10. namespace Euro.Transfer
  11. {
  12. public class Common
  13. {
  14. #region GetAppSetting
  15. /// <summary>
  16. /// 獲取WebService的配置信息
  17. /// </summary>
  18. /// <param name="sKey">appSettings中配置的Key值</param>
  19. /// <example></example>
  20. /// <returns>appSettings中配置的value值</returns>
  21. public static string GetAppSetting(string sKey)
  22. {
  23. return ConfigurationManager.AppSettings[sKey].ToString();
  24. }
  25. #endregion GetAppSetting
  26. #region UpdateAppSettings
  27. /// <summary>
  28. /// 修改config配置
  29. /// </summary>
  30. /// <param name="key">要修改的key</param>
  31. /// <param name="value">修改的值</param>
  32. /// <returns></returns>
  33. public static bool UpdateAppSettings(string key, string value)
  34. {
  35. var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
  36. if (!config.HasFile)
  37. {
  38. throw new ArgumentException("程序配置文件缺失!");
  39. }
  40. var _key = config.AppSettings.Settings[key];
  41. if (_key == null)
  42. config.AppSettings.Settings.Add(key, value);
  43. else
  44. config.AppSettings.Settings[key].Value = value;
  45. config.Save(ConfigurationSaveMode.Modified);
  46. return true;
  47. }
  48. #endregion UpdateAppSettings
  49. #region ConfigSetValue
  50. /// <summary>
  51. /// 写操作
  52. /// </summary>
  53. /// <param name="AppKey"></param>
  54. /// <param name="AppValue"></param>
  55. /// <param name="sExecutablePath">todo: describe sExecutablePath parameter on ConfigSetValue</param>
  56. public static void ConfigSetValue(string sExecutablePath, string AppKey, string AppValue)
  57. {
  58. if (!Directory.Exists(sExecutablePath))
  59. {
  60. sExecutablePath = System.Windows.Forms.Application.StartupPath.ToString();
  61. }
  62. var xDoc = new XmlDocument();
  63. //获取可执行文件的路径和名称
  64. xDoc.Load(sExecutablePath + ".config");
  65. XmlNode xNode;
  66. XmlElement xElem1;
  67. XmlElement xElem2;
  68. xNode = xDoc.SelectSingleNode("//connectionStrings");
  69. // xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config");
  70. xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@name='" + AppKey + "']");
  71. if (xElem1 != null) xElem1.SetAttribute("connectionString", AppValue);
  72. else
  73. {
  74. xElem2 = xDoc.CreateElement("add");
  75. xElem2.SetAttribute("name", AppKey);
  76. xElem2.SetAttribute("connectionString", AppValue);
  77. xNode.AppendChild(xElem2);
  78. }
  79. xDoc.Save(sExecutablePath + "Euro.Transfer.exe.config");
  80. }
  81. #endregion ConfigSetValue
  82. #region ConfigGetValue
  83. /// <summary>
  84. /// 读操作
  85. /// </summary>
  86. /// <param name="appKey"></param>
  87. /// <param name="sExecutablePath">todo: describe sExecutablePath parameter on ConfigGetValue</param>
  88. /// <returns></returns>
  89. public static string ConfigGetValue(string sExecutablePath, string appKey)
  90. {
  91. if (!Directory.Exists(sExecutablePath))
  92. {
  93. sExecutablePath = System.Windows.Forms.Application.StartupPath.ToString() + "/";
  94. }
  95. var xDoc = new XmlDocument();
  96. try
  97. {
  98. xDoc.Load(sExecutablePath + "Euro.Transfer.exe.config");
  99. XmlNode xNode;
  100. XmlElement xElem;
  101. xNode = xDoc.SelectSingleNode("//appSettings");
  102. xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + appKey + "']");
  103. if (xElem != null)
  104. return xElem.GetAttribute("value");
  105. else
  106. return "";
  107. }
  108. catch (Exception)
  109. {
  110. return "";
  111. }
  112. }
  113. #endregion ConfigGetValue
  114. #region fnCreateDir
  115. /// <summary>
  116. /// 創建目錄
  117. /// </summary>
  118. /// <param name="strPath"></param>
  119. public static void FnCreateDir(string strPath)
  120. {
  121. if (!Directory.Exists(strPath))
  122. {
  123. Directory.CreateDirectory(strPath);
  124. }
  125. }
  126. #endregion fnCreateDir
  127. #region GetSystemSetting
  128. /// <summary>
  129. /// 獲取系統設定
  130. /// </summary>
  131. /// <param name="sOrgID">todo: describe sOrgID parameter on GetSystemSetting</param>
  132. /// <param name="sItemID">todo: describe sItemID parameter on GetSystemSetting</param>
  133. /// <returns></returns>
  134. public static string GetSystemSetting(string sOrgID, string sItemID)
  135. {
  136. var sSettingValue = string.Empty;
  137. if (!string.IsNullOrWhiteSpace(sOrgID) && !string.IsNullOrWhiteSpace(sItemID))
  138. {
  139. try
  140. {
  141. var db = SugarBase.DB;
  142. var oSet = db.Queryable<OTB_SYS_SystemSetting>().Single(it => it.OrgID == sOrgID && it.SettingItem == sItemID);
  143. if (oSet != null)
  144. {
  145. sSettingValue = oSet.SettingValue;
  146. }
  147. }
  148. catch (Exception ex)
  149. {
  150. //写错误日志
  151. ServiceTools.WriteLog(ServiceBase.Errorlog_Path, "Euro.Transfer.Common.GetSystemSetting(獲取系統設定) Error:" + ex.Message + " sOrgID:" + sOrgID + ";sItemID:" + sItemID, true);
  152. }
  153. }
  154. return sSettingValue;
  155. }
  156. #endregion GetSystemSetting
  157. #region PadRightEx
  158. /// <summary>
  159. /// </summary>
  160. /// <param name="str"></param>
  161. /// <param name="totalByteCount"></param>
  162. /// <param name="c"></param>
  163. /// <returns></returns>
  164. public static string PadRightEx(string str, int totalByteCount, char c)
  165. {
  166. var coding = Encoding.GetEncoding("gb2312");
  167. var dcount = 0;
  168. foreach (char ch in str.ToCharArray())
  169. {
  170. if (coding.GetByteCount(ch.ToString()) == 2)
  171. dcount++;
  172. }
  173. var w = str.PadRight(totalByteCount - dcount, c);
  174. return w;
  175. }
  176. #endregion PadRightEx
  177. }
  178. /// <summary>
  179. /// 中文字符轉換工具
  180. /// </summary>
  181. public class ChineseStringUtility
  182. {
  183. private const int LOCALE_SYSTEM_DEFAULT = 0x0800;
  184. private const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;
  185. private const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;
  186. [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
  187. private static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out] string lpDestStr, int cchDest);
  188. /// <summary>
  189. /// 将字符转换成简体中文
  190. /// </summary>
  191. /// <param name="source">输入要转换的字符串</param>
  192. /// <returns>转换完成后的字符串</returns>
  193. public static string ToSimplified(string source)
  194. {
  195. var target = new String(' ', source.Length);
  196. var ret = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_SIMPLIFIED_CHINESE, source, source.Length, target, source.Length);
  197. return target;
  198. }
  199. /// <summary>
  200. /// 将字符转换为繁体中文
  201. /// </summary>
  202. /// <param name="source">输入要转换的字符串</param>
  203. /// <returns>转换完成后的字符串</returns>
  204. public static string ToTraditional(string source)
  205. {
  206. var target = new String(' ', source.Length);
  207. var ret = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, source, source.Length, target, source.Length);
  208. return target;
  209. }
  210. }
  211. }