Form1.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. using System.Data.OracleClient;
  11. using System.Collections;
  12. using System.Diagnostics;
  13. using Common;
  14. using Common.DbOption.work;
  15. namespace TrainVideoDataDispose
  16. {
  17. public partial class Form1 : Form
  18. {
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. }
  23. private string m_szRunPath = "";
  24. private bool m_bRun = true;
  25. //private bool newRow_Flag = false;
  26. private DataTable m_dtTrainWeightOrigDataMain;//轨道衡原始数据主表
  27. private DataTable m_dtTrainWeightOrigData;//轨道衡原始数据表
  28. private string[] m_szOrigDataPath;//轨道衡共享数据文件夹列表
  29. private System.Threading.Thread m_hTrainOrigDataCollect;//轨道衡原始数据采集线程
  30. private MeterWorkRailwayRecMainService meterWorkRailwayRecMainService = new MeterWorkRailwayRecMainService(); // 采集主表
  31. private Meter meterWorkRailwayRecMainService = new MeterWorkRailwayRecMainService(); // 采集主表
  32. /// <summary>
  33. /// 获取轨道衡系统上传的原始数据文件保存路径
  34. /// </summary>
  35. private void GetOrigDataPathInfo()
  36. {
  37. try
  38. {
  39. //doc:编辑TrainOrigData.txt时要用UTF-8格式保存
  40. if (System.IO.File.Exists(m_szRunPath + "\\TrainOrigData.txt"))
  41. {
  42. string str = System.IO.File.ReadAllText(m_szRunPath + "\\TrainOrigData.txt", Encoding.Default);
  43. m_szOrigDataPath = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
  44. }
  45. }
  46. catch (System.Exception error)
  47. {
  48. WriteLog("GetOrigDataPathInfo:" + error.Message);
  49. }
  50. }
  51. /// <summary>
  52. /// 构建轨道衡原始数据表,客户端获取该表得到最新数据
  53. /// </summary>
  54. private void BuildOrigDataTable()
  55. {
  56. m_dtTrainWeightOrigDataMain = new DataTable("ORIGDATAMAIN");
  57. DataColumn dc = new System.Data.DataColumn("SEQUENCENUMBER");//流水号
  58. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  59. dc = new System.Data.DataColumn("WEIGHTTIME");//时间
  60. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  61. dc = new System.Data.DataColumn("POINTNAME");//计量点
  62. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  63. dc = new System.Data.DataColumn("TOTALCOUNT");//总节数
  64. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  65. dc = new System.Data.DataColumn("VIDEOFILENAME");//录像文件名
  66. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  67. m_dtTrainWeightOrigData = new System.Data.DataTable("ORIGDATADETAIL");
  68. dc = new System.Data.DataColumn("SEQUENCENUMBER");//流水号
  69. m_dtTrainWeightOrigData.Columns.Add(dc);
  70. dc = new System.Data.DataColumn("INDEXNO");//车厢序号
  71. m_dtTrainWeightOrigData.Columns.Add(dc);
  72. dc = new System.Data.DataColumn("TRAINNO");//车号
  73. m_dtTrainWeightOrigData.Columns.Add(dc);
  74. dc = new System.Data.DataColumn("FID");//FID
  75. m_dtTrainWeightOrigData.Columns.Add(dc);
  76. dc = new System.Data.DataColumn("WEIGHT");//重量
  77. m_dtTrainWeightOrigData.Columns.Add(dc);
  78. dc = new System.Data.DataColumn("SPEED");//速度
  79. m_dtTrainWeightOrigData.Columns.Add(dc);
  80. dc = new System.Data.DataColumn("POINTNAME");//计量点
  81. m_dtTrainWeightOrigData.Columns.Add(dc);
  82. dc = new System.Data.DataColumn("MATERIALNAME");//物料
  83. m_dtTrainWeightOrigData.Columns.Add(dc);
  84. dc = new System.Data.DataColumn("SENDERID");//发送方
  85. m_dtTrainWeightOrigData.Columns.Add(dc);
  86. dc = new System.Data.DataColumn("RECEIVERID");//接收方
  87. m_dtTrainWeightOrigData.Columns.Add(dc);
  88. dc = new System.Data.DataColumn("WEIGHTTYPE");//计量类型
  89. m_dtTrainWeightOrigData.Columns.Add(dc);
  90. dc = new System.Data.DataColumn("VIDEOFILENAME");//录像文件
  91. m_dtTrainWeightOrigData.Columns.Add(dc);
  92. dc = new System.Data.DataColumn("WEIGHTTIME");//时间
  93. m_dtTrainWeightOrigData.Columns.Add(dc);
  94. dc = new System.Data.DataColumn("OPERATER");//计量点
  95. m_dtTrainWeightOrigData.Columns.Add(dc);
  96. dc = new System.Data.DataColumn("STOVENO");//炉号
  97. m_dtTrainWeightOrigData.Columns.Add(dc);
  98. dc = new System.Data.DataColumn("STEELTYPE");//钢种
  99. m_dtTrainWeightOrigData.Columns.Add(dc);
  100. dc = new System.Data.DataColumn("SPEC");//规格
  101. m_dtTrainWeightOrigData.Columns.Add(dc);
  102. dc = new System.Data.DataColumn("BILLETCOUNTS");//根数
  103. m_dtTrainWeightOrigData.Columns.Add(dc);
  104. dc = new System.Data.DataColumn("WASTEWEIGHT");//扣杂
  105. m_dtTrainWeightOrigData.Columns.Add(dc);
  106. dc = new System.Data.DataColumn("ISVALID");//是否有效
  107. m_dtTrainWeightOrigData.Columns.Add(dc);
  108. dc = new System.Data.DataColumn("ISMATCHED");//是否配车
  109. m_dtTrainWeightOrigData.Columns.Add(dc);
  110. //==================eason add 2019-10-21===============
  111. dc = new System.Data.DataColumn("POT");//罐号
  112. m_dtTrainWeightOrigData.Columns.Add(dc);
  113. dc = new System.Data.DataColumn("TRAIN_NO");//车号
  114. m_dtTrainWeightOrigData.Columns.Add(dc);
  115. //===================================================
  116. }
  117. /// <summary>
  118. /// 写日志信息到日志文件
  119. /// </summary>
  120. /// <param name="str"></param>
  121. private void WriteLog(string str)
  122. {
  123. if (System.IO.Directory.Exists(m_szRunPath + "\\log") == false)
  124. {
  125. System.IO.Directory.CreateDirectory(m_szRunPath + "\\log");
  126. }
  127. string strDate = System.DateTime.Now.ToString("yyyyMMdd");
  128. System.IO.TextWriter tw = new System.IO.StreamWriter(m_szRunPath + "\\log\\TrainSceneLogic_" + strDate + ".log", true);
  129. tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  130. tw.WriteLine(str);
  131. tw.WriteLine("\r\n");
  132. tw.Close();
  133. }
  134. private string[] carHeadNo = null;
  135. private void Form1_Load(object sender, EventArgs e)
  136. {
  137. //ldb- 进程已存在,则不重复打开。
  138. Process[] myProcess = Process.GetProcessesByName(Application.ProductName);
  139. if (myProcess.Length <= 1)
  140. {
  141. m_szRunPath = System.Environment.CurrentDirectory;
  142. getBaseCarInfo();
  143. GetOrigDataPathInfo();
  144. BuildOrigDataTable();
  145. //GetUnhandledHistoryData();
  146. m_hTrainOrigDataCollect = new System.Threading.Thread(new System.Threading.ThreadStart(GetOrigDataFile));
  147. m_hTrainOrigDataCollect.Start();
  148. }
  149. else
  150. {
  151. MessageBox.Show("程序已经启动.", "提示");
  152. Application.Exit();
  153. }
  154. }
  155. /// <summary>
  156. /// 线程读取原始数据
  157. /// </summary>
  158. private void GetOrigDataFile()
  159. {
  160. System.Threading.Thread.Sleep(1000);
  161. // int i = 0;
  162. string FileContent = "";
  163. while (m_bRun)
  164. {
  165. System.Threading.Thread.Sleep(1000);
  166. // Create a reference to the current directory.
  167. foreach (string strPath in m_szOrigDataPath)
  168. {
  169. System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(strPath);
  170. FileInfo[] fis = null;
  171. System.IO.DirectoryInfo dicar = new System.IO.DirectoryInfo(strPath + "\\chehao");
  172. FileInfo[] fiscar = null;
  173. try
  174. {
  175. FileContent = "";
  176. // Create an array representing the files in the current directory.
  177. fis = di.GetFiles("*.txt");
  178. foreach (FileInfo fi in fis)
  179. {
  180. //读文件
  181. FileContent = System.IO.File.ReadAllText(fi.FullName, Encoding.Default);
  182. string strSequenceNumber = System.DateTime.Now.ToString("yyyyMMddHHmmss");
  183. if (HandleOrigData(strSequenceNumber, FileContent, strPath) == true)
  184. {
  185. if (System.IO.Directory.Exists(strPath + "\\history") == false)
  186. {
  187. System.IO.Directory.CreateDirectory(strPath + "\\history");
  188. }
  189. //移到历史文件夹
  190. if (System.IO.File.Exists(strPath + "\\history\\" + fi.Name))
  191. {
  192. //20181130 原来同名txt文档先备份
  193. if (System.IO.Directory.Exists(strPath + "\\history\\existBak") == false)
  194. {
  195. System.IO.Directory.CreateDirectory(strPath + "\\history\\existBak");
  196. }
  197. System.IO.File.Copy(strPath + "\\history\\" + fi.Name, strPath + "\\history\\existBak" + fi.Name, true);
  198. System.IO.File.Delete(strPath + "\\history\\" + fi.Name);
  199. fi.MoveTo(strPath + "\\history\\" + fi.Name);
  200. }
  201. else
  202. {
  203. fi.MoveTo(strPath + "\\history\\" + fi.Name);
  204. }
  205. //newRow_Flag = true;
  206. }
  207. System.Threading.Thread.Sleep(1000);
  208. }
  209. if (dicar.Exists)
  210. {
  211. fiscar = dicar.GetFiles("*.txt");
  212. foreach (FileInfo fi in fiscar)
  213. {
  214. //读文件
  215. FileContent = System.IO.File.ReadAllText(fi.FullName, Encoding.Default);
  216. string strSequenceNumber = System.DateTime.Now.ToString("yyyyMMddHHmmss");
  217. if (HandleOrigDatas(strSequenceNumber, FileContent, strPath, fi.Name.Split('c')[0]) == true)
  218. {
  219. if (System.IO.Directory.Exists(strPath + "\\history\\chehao") == false)
  220. {
  221. System.IO.Directory.CreateDirectory(strPath + "\\history\\chehao");
  222. }
  223. //移到历史文件夹
  224. if (System.IO.File.Exists(strPath + "\\history\\chehao\\" + fi.Name))
  225. {
  226. System.IO.File.Delete(strPath + "\\history\\chehao\\" + fi.Name);
  227. fi.MoveTo(strPath + "\\history\\chehao\\" + fi.Name);
  228. }
  229. else
  230. {
  231. fi.MoveTo(strPath + "\\history\\chehao\\" + fi.Name);
  232. }
  233. //newRow_Flag = true;
  234. }
  235. System.Threading.Thread.Sleep(1000);
  236. }
  237. }
  238. }
  239. catch (System.Exception error)
  240. {
  241. WriteLog("GetOrigDataFile:" + error.Message);
  242. }
  243. }
  244. }
  245. }
  246. connection con1 = new connection();
  247. private bool HandleOrigDatas(string strSequenceNo, string strContent, string strPath, string fileTime)
  248. {
  249. string[] Lines = null;
  250. string[] Fields = null;
  251. //拆分行
  252. Lines = strContent.Split(new string[] { "\r\n" }, StringSplitOptions.None);
  253. if (Lines == null || Lines.Length == 0)
  254. {
  255. return false;
  256. }
  257. try
  258. {
  259. List<string[]> lss = new List<string[]>();
  260. if (lss.Count == 0)
  261. {
  262. // 默认把空文件处理掉
  263. return true;
  264. }
  265. for (int i = 0; i < Lines.Length - 1; i++)
  266. {
  267. Fields = Lines[i].Split(',');
  268. //================eason update 2019-10-21,增加一个不为9的判断===============
  269. if (Fields.Length != 4)
  270. {
  271. WriteLog("轨道衡车号数据格式不正确!" + Lines[i]);
  272. return false;
  273. }
  274. sModel sm = lm.Where(s => s.key == Fields[1].TrimStart('0').PadLeft(4, '0')).FirstOrDefault();
  275. // 写入采集主表
  276. // 写入采集从表
  277. /*
  278. if (sm != null)//车头数据
  279. {
  280. //若存在数据则将其写入
  281. string strSql = "INSERT INTO JL_TRAINOINFO(SEQUENCENUMBER,INDEXNO,TRAINNO,WEIGHTTIME,POINTNAME,IS_HEAD)VALUES"
  282. + "('" + strSequenceNo + "','" + Fields[0] + "','" + sm.value + "',TO_DATE('" + fileTime + "', 'YYYYMMDDHH24MISS'),"
  283. + "'" + Fields[3] + "','1')";
  284. OracleCommand ERP_InsertDB = new OracleCommand(strSql, con1.GetDefaultDatabaseConnectionForMain());
  285. int ERPint = ERP_InsertDB.ExecuteNonQuery();
  286. if (ERPint < 0)
  287. {
  288. WriteLog("轨道衡车号数据添加失败!");
  289. return false;
  290. }
  291. else
  292. {
  293. WriteLog(strSequenceNo + "轨道衡车号数据上传成功!");
  294. }
  295. string strUpdate = "update jl_trainorigdatadetail set ENGINE_NO='" + sm.value + "' where POINTNAME='" + Fields[3] + "' and WEIGHTTIME=TO_DATE('" + fileTime + "', 'YYYYMMDDHH24MISS')";
  296. ERP_InsertDB = new OracleCommand(strUpdate, con1.GetDefaultDatabaseConnectionForMain());
  297. ERPint = ERP_InsertDB.ExecuteNonQuery();
  298. if (ERPint < 0)
  299. {
  300. WriteLog("轨道衡车号数据更新失败!");
  301. return false;
  302. }
  303. else
  304. {
  305. WriteLog(strSequenceNo + "轨道衡车号数据更新成功!");
  306. }
  307. }
  308. else
  309. {
  310. //车厢数据
  311. lss.Add(Fields);
  312. //若存在数据则将其写入
  313. string strSql = "INSERT INTO JL_TRAINOINFO(SEQUENCENUMBER,INDEXNO,TRAINNO,WEIGHTTIME,POINTNAME,IS_HEAD)VALUES"
  314. + "('" + strSequenceNo + "','" + Fields[0] + "','" + Fields[1].TrimStart('0') + "',TO_DATE('" + Fields[2] + "', 'YYYYMMDDHH24MISS'),"
  315. + "'" + Fields[3] + "','0')";
  316. OracleCommand ERP_InsertDB = new OracleCommand(strSql, con1.GetDefaultDatabaseConnectionForMain());
  317. int ERPint = ERP_InsertDB.ExecuteNonQuery();
  318. if (ERPint < 0)
  319. {
  320. WriteLog("轨道衡车号数据添加失败!");
  321. return false;
  322. }
  323. else
  324. {
  325. WriteLog(strSequenceNo + "轨道衡车号数据上传成功!");
  326. }
  327. }
  328. */
  329. }
  330. return true;
  331. }
  332. catch (Exception exp)
  333. {
  334. WriteLog("保存数据异常原因!:" + exp.Message);
  335. return false;
  336. }
  337. }
  338. /// <summary>
  339. /// 处理轨道衡上传的原始数据
  340. /// </summary>
  341. /// <param name="strSequenceNo">流水号,客户端回传应使用该流水号</param>
  342. /// <param name="strContent">文件内容</param>
  343. private bool HandleOrigData(string strSequenceNo, string strContent, string strPath)
  344. {
  345. string[] Lines = null;
  346. string[] Fields = null;
  347. string strWeightTime = "";
  348. string strPointName = "";
  349. string strVideoFileName = "";
  350. DataRow dr = null;
  351. //拆分行
  352. Lines = strContent.Split(new string[] { "\r\n" }, StringSplitOptions.None);
  353. if (Lines == null || Lines.Length == 0)
  354. {
  355. return false;
  356. }
  357. m_dtTrainWeightOrigData.Clear();
  358. //处理每行
  359. for (int i = 0; i < Lines.Length - 1; i++)
  360. {
  361. Fields = Lines[i].Split(',');
  362. //================eason update 2019-10-21,增加一个不为9的判断===============
  363. //if (Fields.Length != 8 && Fields.Length != 9)
  364. //{
  365. // WriteLog("轨道衡数据格式不正确!" + Lines[i]);
  366. // return false;
  367. //}
  368. dr = m_dtTrainWeightOrigData.NewRow();
  369. //strSequenceNo = Fields[6]; //20181130增加: 改取现场生成时间 //20181207 取此字段容易主键冲突
  370. if (dtCarInfo != null && dtCarInfo.Rows.Count > 0)
  371. {
  372. foreach (DataRow drs in dtCarInfo.Rows)
  373. {
  374. if (drs["CARD_NO"].ToString().TrimStart('0') == Fields[1])
  375. {
  376. Fields[1] = drs["CAR_NO"].ToString().Trim();
  377. break;
  378. }
  379. }
  380. }
  381. if (lm.Where(s => s.value == Fields[1].TrimStart('0').PadLeft(s.value.Length, '0')).Count() > 0)
  382. {
  383. //说明是车头信息
  384. continue;
  385. }
  386. dr["SEQUENCENUMBER"] = strSequenceNo;
  387. dr["INDEXNO"] = Fields[0].PadLeft(2, '0');
  388. dr["TRAINNO"] = Fields[1].TrimStart('0');
  389. dr["FID"] = "";
  390. dr["WEIGHT"] = Fields[2];
  391. if (Fields[3] == "")
  392. {//lck20150109静态过磅时车速处理
  393. Fields[3] = "3";
  394. }
  395. dr["SPEED"] = Fields[3];
  396. dr["POINTNAME"] = Fields[4];
  397. strPointName = Fields[4];
  398. dr["MATERIALNAME"] = "";
  399. dr["SENDERID"] = "";
  400. dr["RECEIVERID"] = "";
  401. dr["WEIGHTTYPE"] = "";
  402. string _path = strPath.Substring(2);
  403. string _strPath = "\\\\194.168.0.38" + _path;//194.168.0.38
  404. dr["VIDEOFILENAME"] = _strPath + "\\" + Fields[5];
  405. strVideoFileName = _strPath + "\\" + Fields[5];
  406. dr["WEIGHTTIME"] = Fields[6];
  407. strWeightTime = Fields[6];
  408. dr["OPERATER"] = Fields[7];
  409. dr["WASTEWEIGHT"] = "0";
  410. dr["ISVALID"] = "False";
  411. dr["ISMATCHED"] = "False";
  412. dr["TRAIN_NO"] = Fields[1];//eason add191106保留原始车号
  413. //==============eason add 2019-10-21==================
  414. if (Fields.Length > 8)
  415. {
  416. dr["POT"] = Fields[8].TrimStart('0');
  417. if (Fields[8].Trim() != "")//if (Fields[1].Trim() == "" && Fields[8].Trim() != "")
  418. {
  419. dr["TRAINNO"] = "";
  420. //dr["TRAINNO"] = Fields[8];
  421. //如果是铁水车则车号位置放置罐号
  422. if (strPointName == "冶钢四炼东进" || strPointName == "冶钢106线"
  423. || strPointName == "84线铁水轨道衡")
  424. {
  425. if (Fields[8].TrimStart('0').Length > 2)
  426. {
  427. //if (Fields[8].TrimStart('0').IndexOf("65") == 0)
  428. //{
  429. // string m = Fields[8].TrimStart('0').Replace("65", "");
  430. // if (m == "10")
  431. // {
  432. // dr["TRAINNO"] = "010";
  433. // }
  434. // else
  435. // {
  436. // dr["TRAINNO"] = m;//取最后2位数
  437. // }
  438. // dr["TRAINNO"] = Fields[8].Trim().PadLeft(7, '0');
  439. //}
  440. //else if (Fields[8].TrimStart('0').IndexOf("75") == 0)
  441. //{
  442. // dr["TRAINNO"] = Fields[8].Replace("75", "").TrimStart('0');//取最后2位数 如果是09 则变为 9
  443. // dr["TRAINNO"] = Fields[8].Trim().PadLeft(7, '0');
  444. //}
  445. //else //if (Fields[8].TrimStart('0').IndexOf("120") == 0)
  446. // dr["TRAINNO"] = Fields[8];
  447. // 20200430 zzq
  448. dr["TRAINNO"] = Fields[8].Trim().PadLeft(7, '0');
  449. }
  450. else
  451. {
  452. dr["TRAINNO"] = "";
  453. }
  454. }
  455. }
  456. else
  457. {
  458. dr["TRAINNO"] = "";
  459. }
  460. }
  461. else
  462. {
  463. dr["POT"] = "";
  464. if (Fields[1].Trim() != "")
  465. {
  466. dr["TRAINNO"] = Fields[1].Trim().PadLeft(7, '0');
  467. }
  468. else
  469. {
  470. dr["TRAINNO"] = "";
  471. }
  472. }
  473. if (strPointName == "冶钢新站7道" || strPointName == "冶钢新站8道")
  474. {
  475. dr["POT"] = Fields[1].TrimStart('0');//罐号
  476. //车号另算
  477. //dr["TRAINNO"] = Fields[1];
  478. if (Fields[1].TrimStart('0').Length > 2)
  479. {
  480. //if (Fields[1].TrimStart('0').IndexOf("65") == 0)
  481. //{
  482. // //string m = Fields[1].TrimStart('0').Replace("65", "");
  483. // //if (m == "10")
  484. // //{
  485. // // dr["TRAINNO"] = "010";
  486. // //}
  487. // //else
  488. // //{
  489. // // dr["TRAINNO"] = m;//取最后2位数
  490. // //}
  491. // dr["TRAINNO"] = Fields[8].Trim().PadLeft(7, '0');
  492. //}
  493. //else if (Fields[1].TrimStart('0').IndexOf("75") == 0)
  494. // // dr["TRAINNO"] = Fields[1].Replace("75", "").TrimStart('0');//取最后2位数 如果是09 则变为 9
  495. // dr["TRAINNO"] = Fields[8].Trim().PadLeft(7, '0');
  496. //else
  497. // dr["TRAINNO"] = Fields[1];//120则取车号信息
  498. // 20200430 zzq
  499. dr["TRAINNO"] = Fields[1].Trim().PadLeft(7, '0');
  500. }
  501. dr["TRAIN_NO"] = "";
  502. }
  503. //==================================================
  504. m_dtTrainWeightOrigData.Rows.Add(dr);
  505. }
  506. m_dtTrainWeightOrigDataMain.Clear();
  507. DataRow newRow = m_dtTrainWeightOrigDataMain.NewRow();
  508. newRow["SEQUENCENUMBER"] = strSequenceNo;
  509. newRow["WEIGHTTIME"] = strWeightTime;
  510. newRow["POINTNAME"] = strPointName;
  511. newRow["TOTALCOUNT"] = (Lines.Length - 1).ToString();
  512. newRow["VIDEOFILENAME"] = strVideoFileName;
  513. m_dtTrainWeightOrigDataMain.Rows.Add(newRow);
  514. return SaveOrigData2DB(m_dtTrainWeightOrigDataMain, m_dtTrainWeightOrigData);
  515. }
  516. /// <summary>
  517. /// 保存原始数据
  518. /// </summary>
  519. /// <param name="dtMain"></param>
  520. /// <param name="dtDetail"></param>
  521. /// <returns></returns>
  522. private bool SaveOrigData2DB(DataTable dtMain, DataTable dtDetail)
  523. {
  524. //Guid trans = Guid.Empty;
  525. try
  526. {
  527. string strError = "";
  528. //connection con1 = new connection();
  529. //ArrayList list = new ArrayList();
  530. //保存从表数据
  531. foreach (DataRow dr in dtDetail.Rows)
  532. {
  533. //list.Add(dr["SEQUENCENUMBER"].ToString().Trim());
  534. //list.Add(dr["FID"].ToString().Trim());
  535. //list.Add(dr["POINTNAME"].ToString().Trim());
  536. //list.Add(dr["TRAINNO"].ToString().Trim());
  537. //list.Add(dr["SPEED"].ToString().Trim());
  538. //list.Add(dr["MATERIALNAME"].ToString().Trim());
  539. //list.Add(dr["SENDERID"].ToString().Trim());
  540. //list.Add(dr["RECEIVERID"].ToString().Trim());
  541. //list.Add(dr["WEIGHT"].ToString().Trim());
  542. //list.Add(dr["WEIGHTTIME"].ToString().Trim());
  543. //list.Add(dr["OPERATER"].ToString().Trim());
  544. //list.Add(dr["WEIGHTTYPE"].ToString().Trim());
  545. //list.Add(dr["SEQUENCENUMBER"].ToString().Trim());
  546. //list.Add("0");
  547. //list.Add(dr["INDEXNO"].ToString().Trim());
  548. //list.Add(dr["ISVALID"].ToString().Trim());
  549. //list.Add(dr["ISMATCHED"].ToString().Trim());
  550. //list.Add("0");
  551. //ClsServerCommon.setData("core.mcms.track.TrainDataDispose_Jiekou.AddTrainDataDetail_JieKou", new object[] { list }, ob, out strError);
  552. //if (!string.IsNullOrEmpty(strError))
  553. //{
  554. // WriteLog("从表数据异常原因:" + strError);
  555. // return false;
  556. //}
  557. if (dr["POINTNAME"].ToString().Trim() != string.Empty)
  558. {
  559. string strSql = "INSERT INTO JL_TRAINORIGDATADETAIL(SEQUENCENUMBER,FID,POINTNAME,TRAINNO,SPEED,"
  560. + "MATERIALNAME,SENDERID,RECEIVERID,WEIGHT,WEIGHTTIME,OPERATER,WEIGHTTYPE,VIDEOINDEX,WASTEWEIGHT,"
  561. + "INDEXNO,ISVALID,ISMATCHED,Matchtotals,SAVINGTIME,POT,TRAIN_NO)VALUES('" + dr["SEQUENCENUMBER"].ToString().Trim() + "','" + dr["FID"].ToString().Trim() + "',"
  562. + "'" + dr["POINTNAME"].ToString().Trim() + "','" + dr["TRAINNO"].ToString().Trim() + "','" + dr["SPEED"].ToString().Trim() + "',"
  563. + "'" + dr["MATERIALNAME"].ToString().Trim() + "','" + dr["SENDERID"].ToString().Trim() + "','" + dr["RECEIVERID"].ToString().Trim() + "',"
  564. + "'" + dr["WEIGHT"].ToString().Trim() + "',TO_DATE('" + dr["WEIGHTTIME"].ToString().Trim() + "', 'YYYYMMDDHH24MISS'),'" + dr["OPERATER"].ToString().Trim() + "',"
  565. + "'" + dr["WEIGHTTYPE"].ToString().Trim() + "','" + dr["SEQUENCENUMBER"].ToString().Trim() + "','0',"
  566. + "'" + dr["INDEXNO"].ToString().Trim() + "','" + dr["ISVALID"].ToString().Trim() + "','" + dr["ISMATCHED"].ToString().Trim() + "','0',"
  567. + "to_char(sysdate,'yyyy-MM-dd HH24:mi:ss'),'" + dr["POT"].ToString().Trim() + "','" + dr["TRAIN_NO"].ToString().Trim() + "')";
  568. OracleCommand ERP_InsertDB = new OracleCommand(strSql, con1.GetDefaultDatabaseConnectionForMain());
  569. int ERPint = ERP_InsertDB.ExecuteNonQuery();
  570. //将数据插入以后,需要将原始表中的上传标记改为已上传
  571. if (ERPint < 0)
  572. {
  573. WriteLog("从表数据添加失败!");
  574. return false;
  575. }
  576. WriteLog(dr["SEQUENCENUMBER"].ToString().Trim() + "从表数据上传成功!");
  577. }
  578. }
  579. //保存主表数据
  580. foreach (DataRow dr in dtMain.Rows)
  581. {
  582. //list.Add(dr["SEQUENCENUMBER"].ToString().Trim());
  583. //list.Add(dr["WEIGHTTIME"].ToString().Trim());
  584. //list.Add(dr["POINTNAME"].ToString().Trim());
  585. //list.Add(dr["TOTALCOUNT"].ToString().Trim());
  586. //list.Add(dr["VIDEOFILENAME"].ToString().Trim());
  587. //list.Add("False");
  588. //ClsServerCommon.setData("core.mcms.track.TrainDataDispose_Jiekou.AddTrainData_JieKou", new object[] { list }, ob, out strError);
  589. //if (!string.IsNullOrEmpty(strError))
  590. //{
  591. // WriteLog("主表数据异常原因:" + strError);
  592. // return false;
  593. //}
  594. if (dr["POINTNAME"].ToString().Trim() != string.Empty)
  595. {
  596. string strSql = "INSERT INTO JL_TRAINORIGDATA(SEQUENCENUMBER,WEIGHTTIME,POINTNAME,"
  597. + "TOTALCOUNT,VIDEOFILENAME,FLAG,SAVINGTIME)VALUES('" + dr["SEQUENCENUMBER"].ToString().Trim() + "',TO_DATE('" + dr["WEIGHTTIME"].ToString().Trim() + "', 'YYYYMMDDHH24MISS'),"
  598. + "'" + dr["POINTNAME"].ToString().Trim() + "','" + dr["TOTALCOUNT"].ToString().Trim() + "','" + dr["VIDEOFILENAME"].ToString().Trim() + "',"
  599. + "'False',TO_CHAR(sysdate, 'yyyy-MM-dd HH24:mi:ss'))";
  600. OracleCommand ERP_InsertDB = new OracleCommand(strSql, con1.GetDefaultDatabaseConnectionForMain());
  601. int ERPint = ERP_InsertDB.ExecuteNonQuery();
  602. //将数据插入以后,需要将原始表中的上传标记改为已上传
  603. if (ERPint < 0)
  604. {
  605. WriteLog("主表数据添加失败!");
  606. return false;
  607. }
  608. WriteLog(dr["SEQUENCENUMBER"].ToString().Trim() + "主表数据上传成功!");
  609. }
  610. }
  611. return true;
  612. }
  613. catch (Exception exp)
  614. {
  615. WriteLog("保存数据异常原因!:" + exp.Message);
  616. return false;
  617. }
  618. }
  619. //每隔一分钟读取一次基础数据
  620. DataTable dtCarInfo = null;
  621. private void timer1_Tick(object sender, EventArgs e)
  622. {
  623. getBaseCarInfo();
  624. }
  625. List<sModel> lm = new List<sModel>();
  626. private void getBaseCarInfo()
  627. {
  628. try
  629. {
  630. string sql = "SELECT CARD_NO,CAR_NO,CAR_TYPE FROM CMM_CARD_CAR";
  631. OracleCommand ERP_InsertDB = new OracleCommand(sql, con1.GetDefaultDatabaseConnectionForMain());
  632. OracleDataAdapter oda = new OracleDataAdapter();
  633. oda.SelectCommand = ERP_InsertDB;
  634. DataSet ds = new DataSet();
  635. oda.Fill(ds);
  636. if (ds != null && ds.Tables.Count > 0)
  637. {
  638. dtCarInfo = ds.Tables[0];
  639. if (lm.Count == 0)
  640. {
  641. foreach (DataRow dr in dtCarInfo.Rows)
  642. {
  643. if (dr["CAR_TYPE"].ToString().Trim() == "1")
  644. {
  645. lm.Add(new sModel { key = dr["CARD_NO"].ToString(), value = dr["CAR_NO"].ToString() });
  646. }
  647. }
  648. }
  649. }
  650. }
  651. catch (Exception ex)
  652. {
  653. WriteLog("读取车号匹配信息异常!:" + ex.Message);
  654. }
  655. }
  656. }
  657. public class sModel
  658. {
  659. public string key { get; set; }
  660. public string value { get; set; }
  661. }
  662. }