Form1.cs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Common.DbOption.work;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Data.OracleClient;
  9. using System.Diagnostics;
  10. using System.IO;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Windows.Forms;
  14. namespace TrainVideoDataDispose
  15. {
  16. public partial class Form1 : Form
  17. {
  18. public Form1()
  19. {
  20. InitializeComponent();
  21. }
  22. private string m_szRunPath = "";
  23. private bool m_bRun = true;
  24. //private bool newRow_Flag = false;
  25. private DataTable m_dtTrainWeightOrigDataMain;//轨道衡原始数据主表
  26. private DataTable m_dtTrainWeightOrigData;//轨道衡原始数据表
  27. private string[] m_szOrigDataPath;//轨道衡共享数据文件夹列表
  28. private System.Threading.Thread m_hTrainOrigDataCollect;//轨道衡原始数据采集线程
  29. private MeterWorkRailwayRecMainService meterWorkRailwayRecMainService = new MeterWorkRailwayRecMainService(); // 采集主表
  30. private MeterWorkRailwayReceivedService MeterWorkRailwayReceivedService = new MeterWorkRailwayReceivedService(); // 采集从表
  31. private MeterBaseSpotInfoService meterBaseSpotInfoService = new MeterBaseSpotInfoService();
  32. /// <summary>
  33. /// 获取轨道衡系统上传的原始数据文件保存路径
  34. /// </summary>
  35. private void GetOrigDataPathInfo()
  36. {
  37. try
  38. {
  39. //doc:编辑TrainOrigData.txt时要用UTF-8格式保存
  40. DateTime dateTime = DateTime.Now;
  41. //string str = System.IO.File.ReadAllText(m_szRunPath + "\\TrainOrigData.txt", Encoding.Default);
  42. m_szOrigDataPath = new string[] { string.Format("D:\\JISCO\\Project code\\JISCO-WINFROM\\jisco_winform_wzjl\\TrainVideoDataDispose\\bin\\Debug\\{0}\\{1}\\{2}\\txt", dateTime.ToString("yyyy"), dateTime.ToString("MM"), dateTime.ToString("dd")) };
  43. }
  44. catch (System.Exception error)
  45. {
  46. WriteLog("GetOrigDataPathInfo:" + error.Message);
  47. }
  48. }
  49. /// <summary>
  50. /// 构建轨道衡原始数据表,客户端获取该表得到最新数据
  51. /// </summary>
  52. private void BuildOrigDataTable()
  53. {
  54. m_dtTrainWeightOrigDataMain = new DataTable("ORIGDATAMAIN");
  55. DataColumn dc = new System.Data.DataColumn("SEQUENCENUMBER");//流水号
  56. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  57. dc = new System.Data.DataColumn("WEIGHTTIME");//时间
  58. m_dtTrainWeightOrigDataMain.Columns.Add(dc);
  59. dc = new System.Data.DataColumn("POINTNO");//计量编号
  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("WEIGHT");//重量
  75. m_dtTrainWeightOrigData.Columns.Add(dc);
  76. dc = new System.Data.DataColumn("SPEED");//速度
  77. m_dtTrainWeightOrigData.Columns.Add(dc);
  78. dc = new System.Data.DataColumn("POINTNO");//计量编号
  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("WEIGHTTIME");//时间
  83. m_dtTrainWeightOrigData.Columns.Add(dc);
  84. dc = new System.Data.DataColumn("ISVALID");//是否有效
  85. m_dtTrainWeightOrigData.Columns.Add(dc);
  86. dc = new System.Data.DataColumn("RAILWAYWORKNO");//列车作业编号
  87. m_dtTrainWeightOrigData.Columns.Add(dc);
  88. dc = new System.Data.DataColumn("RAILWAYMODELNAME");//车型名称
  89. m_dtTrainWeightOrigData.Columns.Add(dc);
  90. }
  91. /// <summary>
  92. /// 写日志信息到日志文件
  93. /// </summary>
  94. /// <param name="str"></param>
  95. private void WriteLog(string str)
  96. {
  97. if (System.IO.Directory.Exists(m_szRunPath + "\\log") == false)
  98. {
  99. System.IO.Directory.CreateDirectory(m_szRunPath + "\\log");
  100. }
  101. string strDate = System.DateTime.Now.ToString("yyyyMMdd");
  102. System.IO.TextWriter tw = new System.IO.StreamWriter(m_szRunPath + "\\log\\TrainSceneLogic_" + strDate + ".log", true);
  103. tw.WriteLine(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
  104. tw.WriteLine(str);
  105. tw.WriteLine("\r\n");
  106. tw.Close();
  107. }
  108. private string[] carHeadNo = null;
  109. private Hashtable hashtable = new Hashtable();//存储称点信息
  110. private void Form1_Load(object sender, EventArgs e)
  111. {
  112. //ldb- 进程已存在,则不重复打开。
  113. Process[] myProcess = Process.GetProcessesByName(Application.ProductName);
  114. if (myProcess.Length <= 1)
  115. {
  116. m_szRunPath = System.Environment.CurrentDirectory;
  117. //getBaseCarInfo();
  118. GetOrigDataPathInfo();
  119. BuildOrigDataTable();
  120. //GetUnhandledHistoryData();
  121. m_hTrainOrigDataCollect = new System.Threading.Thread(new System.Threading.ThreadStart(GetOrigDataFile));
  122. m_hTrainOrigDataCollect.Start();
  123. }
  124. else
  125. {
  126. MessageBox.Show("程序已经启动.", "提示");
  127. Application.Exit();
  128. }
  129. }
  130. /// <summary>
  131. /// 线程读取原始数据
  132. /// </summary>
  133. private void GetOrigDataFile()
  134. {
  135. System.Threading.Thread.Sleep(1000);
  136. // int i = 0;
  137. string FileContent = "";
  138. while (m_bRun)
  139. {
  140. System.Threading.Thread.Sleep(1000);
  141. // Create a reference to the current directory.
  142. foreach (string strPath in m_szOrigDataPath)
  143. {
  144. System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(strPath);
  145. FileInfo[] fis = null;
  146. System.IO.DirectoryInfo dicar = new System.IO.DirectoryInfo(strPath + "\\chehao");
  147. FileInfo[] fiscar = null;
  148. try
  149. {
  150. FileContent = "";
  151. // Create an array representing the files in the current directory.
  152. fis = di.GetFiles("*.txt");
  153. foreach (FileInfo fi in fis)
  154. {
  155. //读文件
  156. FileContent = System.IO.File.ReadAllText(fi.FullName, Encoding.Default);
  157. string strSequenceNumber = System.DateTime.Now.ToString("yyyyMMddHHmmss");
  158. if (HandleOrigData(strSequenceNumber, FileContent, fi.FullName) == true)
  159. {
  160. if (System.IO.Directory.Exists(strPath + "\\history") == false)
  161. {
  162. System.IO.Directory.CreateDirectory(strPath + "\\history");
  163. }
  164. //移到历史文件夹
  165. if (System.IO.File.Exists(strPath + "\\history\\" + fi.Name))
  166. {
  167. //20181130 原来同名txt文档先备份
  168. if (System.IO.Directory.Exists(strPath + "\\history\\existBak") == false)
  169. {
  170. System.IO.Directory.CreateDirectory(strPath + "\\history\\existBak");
  171. }
  172. System.IO.File.Copy(strPath + "\\history\\" + fi.Name, strPath + "\\history\\existBak" + fi.Name, true);
  173. System.IO.File.Delete(strPath + "\\history\\" + fi.Name);
  174. fi.MoveTo(strPath + "\\history\\" + fi.Name);
  175. }
  176. else
  177. {
  178. fi.MoveTo(strPath + "\\history\\" + fi.Name);
  179. }
  180. //newRow_Flag = true;
  181. }
  182. System.Threading.Thread.Sleep(1000);
  183. }
  184. if (dicar.Exists)
  185. {
  186. fiscar = dicar.GetFiles("*.txt");
  187. foreach (FileInfo fi in fiscar)
  188. {
  189. //读文件
  190. FileContent = System.IO.File.ReadAllText(fi.FullName, Encoding.Default);
  191. string strSequenceNumber = System.DateTime.Now.ToString("yyyyMMddHHmmss");
  192. if (HandleOrigDatas(strSequenceNumber, FileContent, strPath, fi.Name.Split('c')[0]) == true)
  193. {
  194. if (System.IO.Directory.Exists(strPath + "\\history\\chehao") == false)
  195. {
  196. System.IO.Directory.CreateDirectory(strPath + "\\history\\chehao");
  197. }
  198. //移到历史文件夹
  199. if (System.IO.File.Exists(strPath + "\\history\\chehao\\" + fi.Name))
  200. {
  201. System.IO.File.Delete(strPath + "\\history\\chehao\\" + fi.Name);
  202. fi.MoveTo(strPath + "\\history\\chehao\\" + fi.Name);
  203. }
  204. else
  205. {
  206. fi.MoveTo(strPath + "\\history\\chehao\\" + fi.Name);
  207. }
  208. //newRow_Flag = true;
  209. }
  210. System.Threading.Thread.Sleep(1000);
  211. }
  212. }
  213. }
  214. catch (System.Exception error)
  215. {
  216. WriteLog("GetOrigDataFile:" + error.Message);
  217. }
  218. }
  219. }
  220. }
  221. connection con1 = new connection();
  222. private bool HandleOrigDatas(string strSequenceNo, string strContent, string strPath, string fileTime)
  223. {
  224. string[] Lines = null;
  225. string[] Fields = null;
  226. //拆分行
  227. Lines = strContent.Split(new string[] { "\r\n" }, StringSplitOptions.None);
  228. if (Lines == null || Lines.Length == 0)
  229. {
  230. return false;
  231. }
  232. try
  233. {
  234. List<string[]> lss = new List<string[]>();
  235. if (lss.Count == 0)
  236. {
  237. // 默认把空文件处理掉
  238. return true;
  239. }
  240. for (int i = 0; i < Lines.Length - 1; i++)
  241. {
  242. Fields = Lines[i].Split(',');
  243. //================eason update 2019-10-21,增加一个不为9的判断===============
  244. if (Fields.Length != 4)
  245. {
  246. WriteLog("轨道衡车号数据格式不正确!" + Lines[i]);
  247. return false;
  248. }
  249. sModel sm = lm.Where(s => s.key == Fields[1].TrimStart('0').PadLeft(4, '0')).FirstOrDefault();
  250. // 写入采集主表
  251. // 写入采集从表
  252. /*
  253. if (sm != null)//车头数据
  254. {
  255. //若存在数据则将其写入
  256. string strSql = "INSERT INTO JL_TRAINOINFO(SEQUENCENUMBER,INDEXNO,TRAINNO,WEIGHTTIME,POINTNAME,IS_HEAD)VALUES"
  257. + "('" + strSequenceNo + "','" + Fields[0] + "','" + sm.value + "',TO_DATE('" + fileTime + "', 'YYYYMMDDHH24MISS'),"
  258. + "'" + Fields[3] + "','1')";
  259. OracleCommand ERP_InsertDB = new OracleCommand(strSql, con1.GetDefaultDatabaseConnectionForMain());
  260. int ERPint = ERP_InsertDB.ExecuteNonQuery();
  261. if (ERPint < 0)
  262. {
  263. WriteLog("轨道衡车号数据添加失败!");
  264. return false;
  265. }
  266. else
  267. {
  268. WriteLog(strSequenceNo + "轨道衡车号数据上传成功!");
  269. }
  270. string strUpdate = "update jl_trainorigdatadetail set ENGINE_NO='" + sm.value + "' where POINTNAME='" + Fields[3] + "' and WEIGHTTIME=TO_DATE('" + fileTime + "', 'YYYYMMDDHH24MISS')";
  271. ERP_InsertDB = new OracleCommand(strUpdate, con1.GetDefaultDatabaseConnectionForMain());
  272. ERPint = ERP_InsertDB.ExecuteNonQuery();
  273. if (ERPint < 0)
  274. {
  275. WriteLog("轨道衡车号数据更新失败!");
  276. return false;
  277. }
  278. else
  279. {
  280. WriteLog(strSequenceNo + "轨道衡车号数据更新成功!");
  281. }
  282. }
  283. else
  284. {
  285. //车厢数据
  286. lss.Add(Fields);
  287. //若存在数据则将其写入
  288. string strSql = "INSERT INTO JL_TRAINOINFO(SEQUENCENUMBER,INDEXNO,TRAINNO,WEIGHTTIME,POINTNAME,IS_HEAD)VALUES"
  289. + "('" + strSequenceNo + "','" + Fields[0] + "','" + Fields[1].TrimStart('0') + "',TO_DATE('" + Fields[2] + "', 'YYYYMMDDHH24MISS'),"
  290. + "'" + Fields[3] + "','0')";
  291. OracleCommand ERP_InsertDB = new OracleCommand(strSql, con1.GetDefaultDatabaseConnectionForMain());
  292. int ERPint = ERP_InsertDB.ExecuteNonQuery();
  293. if (ERPint < 0)
  294. {
  295. WriteLog("轨道衡车号数据添加失败!");
  296. return false;
  297. }
  298. else
  299. {
  300. WriteLog(strSequenceNo + "轨道衡车号数据上传成功!");
  301. }
  302. }
  303. */
  304. }
  305. return true;
  306. }
  307. catch (Exception exp)
  308. {
  309. WriteLog("保存数据异常原因!:" + exp.Message);
  310. return false;
  311. }
  312. }
  313. /// <summary>
  314. /// 处理轨道衡上传的原始数据
  315. /// </summary>
  316. /// <param name="strSequenceNo">流水号,客户端回传应使用该流水号</param>
  317. /// <param name="strContent">文件内容</param>
  318. private bool HandleOrigData(string strSequenceNo, string strContent, string strPath)
  319. {
  320. string[] Lines = null;
  321. string[] Fields = null;
  322. string strWeightTime = "";
  323. string strPointNo = "";
  324. string strPointName = "";
  325. string strVideoFileName = "";
  326. DataRow dr = null;
  327. //读取称点配置信息并存入hashtable
  328. hashtable.Clear();
  329. //读取配置
  330. //拆分行
  331. Lines = strContent.Split(new string[] { "\r\n" }, StringSplitOptions.None);
  332. if (Lines == null || Lines.Length == 0)
  333. {
  334. return false;
  335. }
  336. m_dtTrainWeightOrigData.Clear();
  337. //处理每行
  338. for (int i = 0; i < Lines.Length - 1; i++)
  339. {
  340. Fields = Lines[i].Split(',');
  341. //================eason update 2019-10-21,增加一个不为9的判断===============
  342. //if (Fields.Length != 8 && Fields.Length != 9)
  343. //{
  344. // WriteLog("轨道衡数据格式不正确!" + Lines[i]);
  345. // return false;
  346. //}
  347. dr = m_dtTrainWeightOrigData.NewRow();
  348. //strSequenceNo = Fields[6]; //20181130增加: 改取现场生成时间 //20181207 取此字段容易主键冲突
  349. if (dtCarInfo != null && dtCarInfo.Rows.Count > 0)
  350. {
  351. foreach (DataRow drs in dtCarInfo.Rows)
  352. {
  353. if (drs["CARD_NO"].ToString().TrimStart('0') == Fields[1])
  354. {
  355. Fields[1] = drs["CAR_NO"].ToString().Trim();
  356. break;
  357. }
  358. }
  359. }
  360. if (lm.Where(s => s.value == Fields[1].TrimStart('0').PadLeft(s.value.Length, '0')).Count() > 0)
  361. {
  362. //说明是车头信息
  363. continue;
  364. }
  365. dr["SEQUENCENUMBER"] = strSequenceNo;
  366. dr["INDEXNO"] = Fields[1];//车厢号
  367. //dr["TRAINNO"] = strSequenceNo;
  368. dr["TRAINNO"] = Fields[3];
  369. dr["RAILWAYMODELNAME"] = Fields[2];//车型
  370. dr["WEIGHT"] = Fields[4];//重量
  371. dr["RAILWAYWORKNO"] = strSequenceNo;//列车作业编号
  372. if (Fields[3] == "")
  373. {//lck20150109静态过磅时车速处理
  374. Fields[3] = "3";
  375. }
  376. dr["SPEED"] = Fields[5];//速度
  377. RESTfulResult<List<MeterBaseSpotInfo>> rmX = meterBaseSpotInfoService.doQueryWf(new MeterBaseSpotInfo { baseSpotNo = Fields[8] });
  378. strPointNo = rmX.Data[0].baseSpotNo;//称点信息
  379. strPointName = rmX.Data[0].baseSpotName;//称点信息
  380. dr["POINTNO"] = strPointNo;//称点信息
  381. dr["POINTNAME"] = strPointName;//称点信息
  382. string _path = strPath.Substring(2);//录像地址
  383. string _strPath = "\\\\194.168.0.38" + _path;//194.168.0.38//录像地址dd
  384. strVideoFileName = strPath.Replace("\\txt", "\\movie").Replace(".txt",".mp4");//录像地址
  385. dr["WEIGHTTIME"] = Fields[6];//时间
  386. strWeightTime = Fields[6];//时间
  387. dr["ISVALID"] = "1";//是否有效
  388. m_dtTrainWeightOrigData.Rows.Add(dr);
  389. }
  390. m_dtTrainWeightOrigDataMain.Clear();
  391. DataRow newRow = m_dtTrainWeightOrigDataMain.NewRow();
  392. newRow["SEQUENCENUMBER"] = strSequenceNo;
  393. newRow["WEIGHTTIME"] = strWeightTime;
  394. newRow["POINTNO"] = strPointNo;
  395. newRow["POINTNAME"] = strPointName;
  396. newRow["TOTALCOUNT"] = (Lines.Length - 1).ToString();
  397. newRow["VIDEOFILENAME"] = strVideoFileName;
  398. m_dtTrainWeightOrigDataMain.Rows.Add(newRow);
  399. return SaveOrigData2DB(m_dtTrainWeightOrigDataMain, m_dtTrainWeightOrigData);
  400. }
  401. /// <summary>
  402. /// 保存原始数据
  403. /// </summary>
  404. /// <param name="dtMain"></param>
  405. /// <param name="dtDetail"></param>
  406. /// <returns></returns>
  407. private bool SaveOrigData2DB(DataTable dtMain, DataTable dtDetail)
  408. {
  409. //Guid trans = Guid.Empty;
  410. try
  411. {
  412. string strError = "";
  413. //connection con1 = new connection();
  414. //ArrayList list = new ArrayList();
  415. //保存从表数据
  416. foreach (DataRow dr in dtDetail.Rows)
  417. {
  418. MeterWorkRailwayMotorialReceived meterWorkRailwayMotorialReceived = new MeterWorkRailwayMotorialReceived();
  419. meterWorkRailwayMotorialReceived.actualFirstNo = dr["SEQUENCENUMBER"].ToString().Trim();//流水号
  420. meterWorkRailwayMotorialReceived.baseSpotName = dr["POINTNAME"].ToString().Trim();//称点名称
  421. meterWorkRailwayMotorialReceived.baseSpotNo = dr["POINTNO"].ToString().Trim();//称点编号
  422. meterWorkRailwayMotorialReceived.railwayNo = dr["TRAINNO"].ToString().Trim();//车号
  423. meterWorkRailwayMotorialReceived.railwaySpeed = double.Parse(dr["SPEED"].ToString().Trim());//速度
  424. meterWorkRailwayMotorialReceived.valueFlag = dr["ISVALID"].ToString().Trim();//是否有效
  425. meterWorkRailwayMotorialReceived.meterWeight = double.Parse(dr["WEIGHT"].ToString().Trim());//重量
  426. meterWorkRailwayMotorialReceived.railwayModel = dr["RAILWAYMODELNAME"].ToString().Trim();//车型
  427. meterWorkRailwayMotorialReceived.railwayWorkNo = dr["RAILWAYWORKNO"].ToString().Trim();//列车作业编号
  428. meterWorkRailwayMotorialReceived.createTime = DateTime.Parse(dr["WEIGHTTIME"].ToString());//时间
  429. meterWorkRailwayMotorialReceived.railwayCarriageNo = dr["INDEXNO"].ToString().Trim();//车厢号
  430. RESTfulResult<string> rm = MeterWorkRailwayReceivedService.doAdd(meterWorkRailwayMotorialReceived);
  431. if (!rm.Succeed)
  432. {
  433. WriteLog("保存数据异常原因!:" + rm.Message);
  434. return false;
  435. }
  436. }
  437. //保存主表数据
  438. foreach (DataRow dr in dtMain.Rows)
  439. {
  440. MeterWorkRailwayRecMain meterWorkRailwayRecMain = new MeterWorkRailwayRecMain();
  441. meterWorkRailwayRecMain.actualNo = dr["SEQUENCENUMBER"].ToString().Trim();
  442. meterWorkRailwayRecMain.baseSpotName = dr["POINTNAME"].ToString().Trim();
  443. meterWorkRailwayRecMain.baseSpotNo = dr["POINTNO"].ToString().Trim();
  444. meterWorkRailwayRecMain.createTime = DateTime.Now;
  445. meterWorkRailwayRecMain.videoName = dr["VIDEOFILENAME"].ToString().Trim();
  446. meterWorkRailwayRecMain.carriageNum = int.Parse(dr["TOTALCOUNT"].ToString().Trim());
  447. RESTfulResult<string> rm = meterWorkRailwayRecMainService.doAdd(meterWorkRailwayRecMain);
  448. if (!rm.Succeed)
  449. {
  450. WriteLog("保存数据异常原因!:" + rm.Message);
  451. return false;
  452. }
  453. }
  454. return true;
  455. }
  456. catch (Exception exp)
  457. {
  458. WriteLog("保存数据异常原因!:" + exp.Message);
  459. return false;
  460. }
  461. }
  462. //每隔一分钟读取一次基础数据
  463. DataTable dtCarInfo = null;
  464. private void timer1_Tick(object sender, EventArgs e)
  465. {
  466. getBaseCarInfo();
  467. }
  468. List<sModel> lm = new List<sModel>();
  469. private void getBaseCarInfo()
  470. {
  471. try
  472. {
  473. string sql = "SELECT CARD_NO,CAR_NO,CAR_TYPE FROM CMM_CARD_CAR";
  474. OracleCommand ERP_InsertDB = new OracleCommand(sql, con1.GetDefaultDatabaseConnectionForMain());
  475. OracleDataAdapter oda = new OracleDataAdapter();
  476. oda.SelectCommand = ERP_InsertDB;
  477. DataSet ds = new DataSet();
  478. oda.Fill(ds);
  479. if (ds != null && ds.Tables.Count > 0)
  480. {
  481. dtCarInfo = ds.Tables[0];
  482. if (lm.Count == 0)
  483. {
  484. foreach (DataRow dr in dtCarInfo.Rows)
  485. {
  486. if (dr["CAR_TYPE"].ToString().Trim() == "1")
  487. {
  488. lm.Add(new sModel { key = dr["CARD_NO"].ToString(), value = dr["CAR_NO"].ToString() });
  489. }
  490. }
  491. }
  492. }
  493. }
  494. catch (Exception ex)
  495. {
  496. WriteLog("读取车号匹配信息异常!:" + ex.Message);
  497. }
  498. }
  499. }
  500. public class sModel
  501. {
  502. public string key { get; set; }
  503. public string value { get; set; }
  504. }
  505. }