Form1.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.IO;
  5. using System.Windows.Forms;
  6. using System.Xml;
  7. namespace UAS_XmlAnalysor
  8. {
  9. public partial class Form1 : Form
  10. {
  11. DataHelper dh = new DataHelper();
  12. DataTable dt;
  13. public Form1()
  14. {
  15. InitializeComponent();
  16. }
  17. private void Form1_Load(object sender, EventArgs e)
  18. {
  19. FolderPath.Text = Properties.Settings.Default.FolderPath;
  20. BackUpFolderPath.Text = Properties.Settings.Default.BackUpFolderPath;
  21. Source.Text = Properties.Settings.Default.Source;
  22. Master.Text = Properties.Settings.Default.Master;
  23. dt = (DataTable)dh.ExecuteSql("select ms_pwd,ma_user,ma_address from master ", "select");
  24. Master.DataSource = dt;
  25. Master.DisplayMember = "ma_user";
  26. Master.ValueMember = "ma_user";
  27. }
  28. private void StartWatch_Click(object sender, EventArgs e)
  29. {
  30. for (int i = 0; i < dt.Rows.Count; i++)
  31. {
  32. if (Master.Text == dt.Rows[i]["ma_user"].ToString())
  33. {
  34. DataHelper.DBConnectionString = "Data Source=" + dt.Rows[i]["ma_address"] + ";User ID=" + dt.Rows[i]["ma_user"] + ";PassWord=" + dt.Rows[i]["ms_pwd"]; ;
  35. dh = new DataHelper();
  36. }
  37. }
  38. if (!dh.CheckExist("source", "sc_code='" + Source.Text + "' and sc_statuscode='AUDITED'"))
  39. {
  40. OperateResult.AppendText("岗位资源错误或者未审核\n");
  41. return;
  42. }
  43. XmlWatcher.Path = FolderPath.Text;
  44. XmlWatcher.Filter = "*.xml";
  45. XmlWatcher.Created += new FileSystemEventHandler(XmlWatcher_Created);
  46. XmlWatcher.EnableRaisingEvents = true;
  47. Properties.Settings.Default.FolderPath = FolderPath.Text;
  48. Properties.Settings.Default.BackUpFolderPath = BackUpFolderPath.Text;
  49. Properties.Settings.Default.Source = Source.Text;
  50. Properties.Settings.Default.Master = Master.Text;
  51. Properties.Settings.Default.Save();
  52. Source.Enabled = false;
  53. OperateResult.AppendText("开始执行监控\n");
  54. }
  55. private void XmlWatcher_Created(object sender, FileSystemEventArgs e)
  56. {
  57. while (true)
  58. {
  59. try
  60. {
  61. using (Stream stream = File.Open(e.FullPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
  62. {
  63. if (stream != null)
  64. break;
  65. }
  66. System.Threading.Thread.Sleep(500);
  67. }
  68. catch (Exception)
  69. {
  70. }
  71. }
  72. XmlReader myReader = XmlReader.Create(FolderPath.Text + @"\" + e.Name);
  73. string sncode = e.Name.Split('.')[0];
  74. OperateResult.AppendText("读取文件" + e.Name + "\n");
  75. List<string> name = new List<string>();
  76. List<string> result = new List<string>();
  77. int name_or_result = 0;
  78. while (myReader.Read())
  79. {
  80. if (myReader.NodeType == XmlNodeType.Text)
  81. {
  82. if (name_or_result % 2 == 0)
  83. {
  84. name.Add(myReader.Value);
  85. name_or_result++;
  86. }
  87. else
  88. {
  89. result.Add(myReader.Value);
  90. name_or_result++;
  91. }
  92. }
  93. }
  94. string sql = "insert into STEPTESTDETAIL(std_id,std_sn,std_subclass1,std_testresult,std_date,std_rescode) values (STEPTESTDETAIL_seq.nextval,'" + sncode + "',:std_subclass1,:std_testresult,sysdate,'" + Source.Text + "')";
  95. dh.BatchInsert(sql, new string[] { "std_subclass1", "std_testresult" }, name.ToArray(), result.ToArray());
  96. myReader.Close();
  97. FileInfo file = new FileInfo(FolderPath.Text + @"\" + e.Name);
  98. if (file.Exists)
  99. {
  100. try
  101. {
  102. file.MoveTo(BackUpFolderPath.Text + @"\" + e.Name);
  103. }
  104. catch (Exception ex)
  105. {
  106. OperateResult.AppendText(e.Name + ex.Message+"\n");
  107. }
  108. }
  109. }
  110. private void StopWatch_Click(object sender, EventArgs e)
  111. {
  112. XmlWatcher.EnableRaisingEvents = false;
  113. Source.Enabled = true;
  114. OperateResult.AppendText("停止执行监控\n");
  115. }
  116. private void Clean_Click(object sender, EventArgs e)
  117. {
  118. OperateResult.Clear();
  119. }
  120. private void ChooseFolder_Click(object sender, EventArgs e)
  121. {
  122. FolderBrowserDialog folder = new FolderBrowserDialog();
  123. folder.Description = "选择监控文件夹";
  124. DialogResult result = folder.ShowDialog();
  125. if (result == DialogResult.OK)
  126. {
  127. FolderPath.Text = folder.SelectedPath;
  128. }
  129. }
  130. private void ReadNodeFromXML(string FileName)
  131. {
  132. }
  133. private void ChooseBackUpFolder_Click(object sender, EventArgs e)
  134. {
  135. FolderBrowserDialog folder = new FolderBrowserDialog();
  136. folder.Description = "选择备份文件夹";
  137. DialogResult result = folder.ShowDialog();
  138. if (result == DialogResult.OK)
  139. {
  140. BackUpFolderPath.Text = folder.SelectedPath;
  141. }
  142. }
  143. }
  144. }