ImportGLdataForm.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using Uninpho.DBOperation.Model;
  12. using System.IO;
  13. using Uninpho.DBOperation.Operation;
  14. using System.Text.RegularExpressions;
  15. using System.Reflection;
  16. namespace Uninpho.Tools.components.DWForm
  17. {
  18. public partial class ImportGLdataForm : DevExpress.XtraEditors.XtraForm
  19. {
  20. public ImportGLdataForm()
  21. {
  22. InitializeComponent();
  23. }
  24. private void labelControl7_Click(object sender, EventArgs e)
  25. {
  26. }
  27. private void labelControl1_Click(object sender, EventArgs e)
  28. {
  29. }
  30. private void xianlumingText_SelectedIndexChanged(object sender, EventArgs e)
  31. {
  32. }
  33. private void zhanmingText_SelectedIndexChanged(object sender, EventArgs e)
  34. {
  35. }
  36. private void groupBox1_Enter(object sender, EventArgs e)
  37. {
  38. }
  39. private void lblShow_Click(object sender, EventArgs e)
  40. {
  41. }
  42. private void txtindir_TextChanged(object sender, EventArgs e)
  43. {
  44. }
  45. private void simpleButton2_Click(object sender, EventArgs e)
  46. {
  47. // 创建一个OpenFileDialog实例
  48. OpenFileDialog openFileDialog = new OpenFileDialog
  49. {
  50. // 设置文件对话框的标题
  51. Title = "选择文件",
  52. // 初始目录,可选
  53. InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
  54. // 设置过滤条件,只显示文本文件,可以根据需要修改
  55. Filter = "所有文件 (*.*)|*.*"
  56. };
  57. // 显示文件对话框并检查用户是否选择了文件
  58. if (openFileDialog.ShowDialog() == DialogResult.OK)
  59. {
  60. // 将选择的文件路径写入文本框
  61. txtindir.Text = openFileDialog.FileName;
  62. }
  63. }
  64. private void newCreateBtnSon_Click(object sender, EventArgs e)
  65. {
  66. saveData2PG(txtindir.Text, xianlumingText.Text, zhanmingText.Text);
  67. //打开表格数据转成实体类
  68. //if (TZCommonFunc.GetTabledata(TableName.T_gonglv_account))
  69. //{
  70. //插入数据
  71. // SqlQueryable_QX.Insertdata_GL(TZCommonFunc.Listdata_gl);
  72. // this.data_binding();
  73. // }
  74. }
  75. /// <summary>
  76. /// メソッド概要 取文件的编码格式
  77. /// </summary>
  78. /// <remarks>
  79. /// 機能仕様 取文件的编码格式
  80. /// </remarks>
  81. public static Encoding GetEncoding(string filePath)
  82. {
  83. using (var reader = new StreamReader(filePath, Encoding.Default, true))
  84. {
  85. if (reader.Peek() >= 0)
  86. {
  87. reader.Read();
  88. }
  89. Encoding encoding = reader.CurrentEncoding;
  90. reader.Close();
  91. return encoding;
  92. }
  93. }
  94. /// <summary>
  95. /// 读scv
  96. /// </summary>
  97. /// <param name="url"></param>
  98. private static void readSCV(string url, string xianlu, string chezhan, ref List<T_gonglv_account> gonglvCsvdata)
  99. {
  100. StreamReader sr = new StreamReader(url, GetEncoding(url));
  101. sr.ReadLine();
  102. sr.ReadLine();
  103. while (!sr.EndOfStream)
  104. {
  105. string origonss = sr.ReadLine();
  106. origonss = origonss.Replace(" ", " ");
  107. origonss = origonss.Replace("/t", ",");
  108. origonss = origonss.Replace(" ", ",");
  109. var arrayarr = origonss.ToCharArray();
  110. if (arrayarr[0] == ',' && arrayarr[1] == ',')
  111. {
  112. //简单判断这行是否是多余,例如“,,,,,,,,,,,,,,,,”这种行的录入
  113. continue;
  114. }
  115. T_gonglv_account onescvdata = new T_gonglv_account();
  116. onescvdata.Chezhan = chezhan;
  117. onescvdata.Xianlu = xianlu;
  118. onescvdata.Qxxh = arrayarr[0].ToString();
  119. // onescvdata.Id = Guid.NewGuid().ToString();
  120. List<string> loopstring = new List<string>();
  121. //使用正则去除属性字段中的逗号的影响
  122. Regex re = new Regex("(?<=,\").*?(?=\",)", RegexOptions.None);
  123. MatchCollection mc = re.Matches(origonss);
  124. //保存原始
  125. foreach (var item in mc)
  126. {
  127. //string ddd = item.ToString().Replace("\"\"", "\"");
  128. loopstring.Add(item.ToString());
  129. }
  130. //替换属性字段中的逗号为"$$$$$$$$$$$$$yxc$$$$$$$$$$$$$$$"
  131. origonss = Regex.Replace(origonss, "(?<=,\").*?(?=\",)", "$$$$$$$$$$$$$yxc$$$$$$$$$$$$$$$");
  132. string[] looparr = origonss.Split(',');
  133. //还原之前被替换的字段属性值
  134. int ii = 0;
  135. for (int i = 0; i < looparr.Length; i++)
  136. {
  137. if (looparr[i] == "\"$$$$$$$yxc$$$$$$$$\"")
  138. {
  139. looparr[i] = loopstring[ii++];
  140. }
  141. }
  142. ii = 0;
  143. //存入T_xxxw_csvdata
  144. //string[] propnames = new string[] { "Id", "Listid", "Cld", "Gzidh", "Nc", "Lc", "Gc", "Pmwz", "Spcg", "Gj", "Gddhdb", "Gddb", "Gddhcb", "Gdcb", "Gxdhdb", "Gxdb", "Gxdbcb", "Gxcb", "Dxg", "Zggc", "Yggc", "Zgpm", "Ygpm", "Sygc", "Sygddb", "Sygdcb", "Sypmwz", "Sygxdb", "Sygxcb", "Syspcg", "Sygj", "Fjzj", "Fjidh", "Fjsjcg", "Fjsccg", "Fjsjgj", "Fjscgj", "Fjsj5mgd", "Fjsc5mgd", "Fjsj150mgd", "Fjsc150mgd", "Fjsj5mgx", "Fjsc5mgx", "Fjsj150mgx", "Fjsc150mgx" };
  145. Type t = onescvdata.GetType();//获得该类的Type
  146. foreach (PropertyInfo pi in t.GetProperties())
  147. {
  148. if (pi.Name != "Id" && pi.Name != "Qxxh" && pi.Name != "Xianlu" && pi.Name != "Chezhan")
  149. {
  150. pi.SetValue(onescvdata, looparr[ii++]);
  151. }
  152. }
  153. gonglvCsvdata.Add(onescvdata);
  154. }
  155. sr.Close();
  156. }
  157. static string uuid_ = string.Empty;//预防报错
  158. public static string saveData2PG(string url, string xianlu, string chezhan)
  159. {
  160. string uuid = uuid_;
  161. List<T_gonglv_account> gonglvCsvdata = new List<T_gonglv_account>();
  162. //string[] filename = Path.GetFileNameWithoutExtension(url).Split('_');
  163. try
  164. {
  165. readSCV(url, xianlu, chezhan, ref gonglvCsvdata);
  166. //uuid = DataAnalysisToPG.Insertdata_gl_CsvList(new T_gonglv_account()
  167. //{
  168. // Qxxh = filename[0],
  169. // Xianlu = xianlu,
  170. // Chezhan = chezhan,
  171. // Dcbh = filename[1],
  172. //});
  173. //foreach (var item in gonglvCsvdata)
  174. //{
  175. // item.Id = uuid;
  176. //}
  177. DataAnalysisToPG.Insert_gl_data_CsvData(gonglvCsvdata);
  178. XtraMessageBox.Show("导入成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  179. }
  180. catch (Exception)
  181. {
  182. XtraMessageBox.Show("导入失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  183. }
  184. return uuid;
  185. }
  186. private void NewcancelBtn_Click(object sender, EventArgs e)
  187. {
  188. this.Close();
  189. }
  190. List<T_daocha_account> daochaData = new List<T_daocha_account>();
  191. /// <summary>
  192. /// 加载模糊查询的数据
  193. /// </summary>
  194. private void ImportGLdataForm_Load(object sender, EventArgs e)
  195. {
  196. daochaData = DBOperation.Operation.DataAnalysisToPG.QueryDCTZALL();
  197. //整理线路名集合
  198. var listtgXLMALL = daochaData.GroupBy(c => c.Xlm).Select(c => c.First()).ToList();
  199. foreach (var item in listtgXLMALL)
  200. {
  201. xianlumingText.Properties.Items.Add(item.Xlm);
  202. }
  203. }
  204. /// <summary>
  205. /// 线路名查询
  206. /// </summary>
  207. private void xianlumingText_TextChanged(object sender, EventArgs e)
  208. {
  209. zhanmingText.Properties.Items.Clear();
  210. var isInputTrueXLM = daochaData.FindAll(delegate (T_daocha_account dc)
  211. {
  212. return dc.Xlm == xianlumingText.Text;
  213. });
  214. //线路名
  215. if (isInputTrueXLM.Count != 0)
  216. {
  217. var listtg = isInputTrueXLM.GroupBy(c => c.Czm).Select(c => c.First()).ToList();
  218. foreach (var item in listtg)
  219. {
  220. zhanmingText.Properties.Items.Add(item.Czm);
  221. }
  222. zhanmingText.Enabled = true;
  223. }
  224. else
  225. {
  226. zhanmingText.Enabled = false;
  227. }
  228. zhanmingText.Text = "";
  229. }
  230. }
  231. }