Form1.cs 25 KB

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