Form1.cs 31 KB

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