frmStaticMain.cs 111 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Infragistics.Win;
  4. using Infragistics.Win.UltraWinGrid;
  5. using JC_MeasuringSystem;
  6. using MeterPlugInLibrary;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Linq;
  12. using System.Net;
  13. using System.Reflection;
  14. using System.Windows.Forms;
  15. namespace RailMeterSystem
  16. {
  17. public partial class frmStaticMain : Form
  18. {
  19. #region
  20. //实时表数据采集 第一个是静态1,第二个是静态2
  21. private StaticDataCollectionControl collection1 = new StaticDataCollectionControl();
  22. private StaticDataCollectionControl collection2 = new StaticDataCollectionControl();
  23. //图片控制器含图片压缩及上传sftp
  24. //ImageControl imageControl = new ImageControl();
  25. /// <summary>
  26. /// 基础数据载入
  27. /// </summary>
  28. private BaseDbCls bd = new BaseDbCls();
  29. private Log l = Log.GetInstance();
  30. private string userId = "", userName = "";
  31. private int iPic = 0;
  32. private bool isEditCarNo = false; //是否编辑车号
  33. private string oldEditCarNo = "";//上一次编辑的车号
  34. private CoreAppUser appUser = null;
  35. private StaticCollectModel scModel1 = new StaticCollectModel(); //静态1
  36. private StaticCollectModel scModel2 = new StaticCollectModel(); //静态2
  37. #endregion
  38. #region 查询服务
  39. private int searchLimit = 3; //用于卡控查询,定时任务每1s加一次,若小于2则不会查询数据;
  40. //计量预报
  41. private PreRailwayScale preTack = null;
  42. //一次计量重量
  43. private MeterWorkRailwayActFirst first = null;
  44. private PreRailwayScaleService PreService = new PreRailwayScaleService();//查询预报信息
  45. private MeterWorkRailwayActualService mwas = new MeterWorkRailwayActualService();//计量结净数据
  46. private MeterWorkRailwayActFirstService railwayActFirstService = new MeterWorkRailwayActFirstService();//一次计量数据
  47. private MeterBaseMatterInfoService matterService = new MeterBaseMatterInfoService();//查询计量基础信息
  48. #endregion
  49. #region 下拉框相关事件
  50. //===============下拉框相关变量===============
  51. private ListBox show; //智能拼音输入时弹出的表框
  52. private DataTable dtMaterial;
  53. private int showLocation = 0;
  54. //===============下拉框相关变量=============
  55. #endregion
  56. //===============自重计量相关变量===========
  57. private bool isUsedFactoryWeight = false; //是否使用自重
  58. private double tareWeight = 0;//皮重
  59. //===============自重计量相关变量===========
  60. public frmStaticMain()
  61. {
  62. InitializeComponent();
  63. }
  64. #region 数据初始清理
  65. private void Clean()
  66. {
  67. try
  68. {
  69. setMsgInfo(lbPointName, "", "");
  70. updateSport("");
  71. PbStaticRailwayCache.videoInfo = null;
  72. PbStaticRailwayCache.dtStartTime = null;
  73. PbStaticRailwayCache.sportInfo = null;
  74. PbStaticRailwayCache.collect = null;
  75. first = null;
  76. //退出语音登录
  77. try
  78. {
  79. VoiceClose();
  80. IPVideoClose();
  81. }
  82. catch (Exception ex)
  83. {
  84. }
  85. setPanelRemovenfo(panel1);
  86. CleanForm(); //Clean方法
  87. }
  88. catch (Exception ex)
  89. {
  90. MessageBox.Show("Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  91. l.WriteLog(13, "Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  92. }
  93. }
  94. private void CleanForm()
  95. {
  96. try
  97. {
  98. isUsedFactoryWeight = false; //是否使用自重
  99. btnZZWgt.BackColor = Color.DodgerBlue; //点击保存后,复磅按钮重新变原色
  100. tareWeight = 0; //自重置为0
  101. strCarNo = "";
  102. PbStaticRailwayCache.dtStartTime = null;
  103. ucStaticTrackMeterInfo1.setPreTrackInfo(new PreRailwayScale { });
  104. //DataTable dtYb = dtRailwayScale.Clone();
  105. //setGridInfo(ultraGrid1, dtYb, this.dtRailwayScale);
  106. //DataTable dtSj = this.dtRailwayActFirst;
  107. //setGridInfo(ultraGrid2, dtSj, this.dtRailwayActFirst);
  108. //DataTable dtQxp = this.dtRailwayActual.Clone();
  109. //setGridInfo(ultraGrid3, dtQxp, this.dtRailwayActual);
  110. ucStorageWeightT1.setWgt(0);
  111. ucStorageWeightT1.setStable(true);
  112. ucStorageWeightT2.setWgt(0);
  113. ucStorageWeightT2.setStable(true);
  114. setMsgInfo(pl1, "Color", "Lime");
  115. setMsgInfo(pl2, "Color", "Lime");
  116. setMsgInfo(pl3, "Color", "Lime");
  117. //setMsgInfo(cmbCarType, "单秤", ""); //2021年4月26日 称重完成后,不在恢复成单秤的状态
  118. setMsgInfo(txtGroess, "", "");
  119. setMsgInfo(txtTare, "0", "");
  120. setMsgInfo(txtNet, "", "");
  121. //setMsgInfo(txtCarNo, "", ""); //2021年4月28日 不再清空车号,因为又会将车号再写上来,也需要进行复磅保存
  122. }
  123. catch (Exception ex)
  124. {
  125. //MessageBox.Show("CleanForm方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  126. l.WriteLog(13, "CleanForm方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  127. }
  128. }
  129. #endregion
  130. #region 对讲代码
  131. /// <summary>
  132. /// 硬盘录像机登录
  133. /// </summary>
  134. private DhCameraShot cameraShotMain = new DhCameraShot();
  135. /// <summary>
  136. /// 必须先打开连接
  137. /// </summary>
  138. private bool GetIPVideo(MeterBaseVideoinfo video)
  139. {
  140. try
  141. {
  142. cameraShotMain.ip = video.videoip;
  143. cameraShotMain.port = video.vdoPort;
  144. cameraShotMain.uid = video.vdoUser;
  145. cameraShotMain.pwd = video.vdoPwd;
  146. cameraShotMain.Connection();
  147. }
  148. catch (Exception ex)
  149. {
  150. setMsgInfo(txtMsgInfo, "视频连接打开失败:" + ex.Message, "");
  151. return false;
  152. }
  153. return true;
  154. }
  155. /// <summary>
  156. /// 必须先打开视频,然后再打开语音
  157. /// </summary>
  158. private void VoiceOpen()
  159. {
  160. try
  161. {
  162. if (cameraShotMain.StartTalk())
  163. {
  164. btnOpenVoice.Text = "关闭对讲";
  165. }
  166. }
  167. catch (Exception ex)
  168. {
  169. setMsgInfo(txtMsgInfo, "打开语音失败:" + ex.Message, "");
  170. }
  171. }
  172. /// <summary>
  173. /// 关闭语音对讲
  174. /// </summary>
  175. private void VoiceClose()
  176. {
  177. try
  178. {
  179. if (cameraShotMain.StopTalk())
  180. {
  181. setMsgInfo(btnOpenVoice, "打开对讲", "");
  182. }
  183. }
  184. catch (Exception ex)
  185. {
  186. setMsgInfo(txtMsgInfo, "打开对讲失败:" + ex.Message, "");
  187. }
  188. }
  189. /// <summary>
  190. /// 关闭视频
  191. /// </summary>
  192. private void IPVideoClose()
  193. {
  194. try
  195. {
  196. cameraShotMain.Close();
  197. }
  198. catch (Exception ex)
  199. {
  200. setMsgInfo(txtMsgInfo, "关闭对讲失败:" + ex.Message, "");
  201. }
  202. }
  203. private List<PictureBox> ltPicBoxs = new List<PictureBox>();
  204. /// <summary>
  205. /// 加载图相框
  206. /// </summary>
  207. private void setPicBoxSet()
  208. {
  209. try
  210. {
  211. if (PbStaticRailwayCache.videoChild != null && PbStaticRailwayCache.videoChild.Count > 0)
  212. {
  213. if (PbStaticRailwayCache.sportInfo != null)
  214. {
  215. if (PbStaticRailwayCache.sportInfo.baseSpotNo == "00010")
  216. {
  217. for (int k = 1; k <= 2; k++)
  218. {
  219. PictureBox pb = new PictureBox();
  220. pb.Name = "pb" + k;
  221. pb.Dock = DockStyle.Top;
  222. pb.Height = 260;
  223. pb.DoubleClick += new EventHandler(PictureBoxDoubleClick);
  224. pb.BorderStyle = BorderStyle.FixedSingle;
  225. panel1.Controls.Add(pb);
  226. ltPicBoxs.Add(pb);
  227. cameraShotMain.RealPlay(pb, k);
  228. }
  229. }
  230. else
  231. {
  232. for (int k = 3; k <= 4; k++)
  233. {
  234. PictureBox pb = new PictureBox();
  235. pb.Name = "pb" + k;
  236. pb.Dock = DockStyle.Top;
  237. pb.Height = 260;
  238. pb.DoubleClick += new EventHandler(PictureBoxDoubleClick);
  239. pb.BorderStyle = BorderStyle.FixedSingle;
  240. panel1.Controls.Add(pb);
  241. ltPicBoxs.Add(pb);
  242. cameraShotMain.RealPlay(pb, k);
  243. }
  244. }
  245. #region 室内摄像头
  246. PictureBox pb5 = new PictureBox();
  247. pb5.Name = "pb5";
  248. pb5.Dock = DockStyle.Top;
  249. pb5.Height = 260;
  250. pb5.DoubleClick += new EventHandler(PictureBoxDoubleClick);
  251. pb5.BorderStyle = BorderStyle.FixedSingle;
  252. panel1.Controls.Add(pb5);
  253. ltPicBoxs.Add(pb5);
  254. cameraShotMain.RealPlay(pb5, 5);
  255. #endregion
  256. }
  257. }
  258. }
  259. catch (Exception ex)
  260. {
  261. MessageBox.Show("setPicBoxSet载入录像异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  262. l.WriteLog(13, "setPicBoxSet载入录像异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  263. }
  264. }
  265. public void setPanelRemovenfo(Panel control)
  266. {
  267. setPanelRemoveMsg(control);
  268. }
  269. /// <summary>
  270. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  271. /// </summary>
  272. /// <param name="control"></param>
  273. /// <param name="ResultMessage"></param>
  274. /// <param name="sType"></param>
  275. private void setPanelRemoveMsg(Panel p)
  276. {
  277. try
  278. {
  279. if (p.InvokeRequired)
  280. {
  281. Action<Panel> action = new Action<Panel>(setPanelRemovenfo);
  282. Invoke(action, new object[] { p });
  283. }
  284. else
  285. {
  286. for (int i = p.Controls.Count - 1; i >= 0; i--)
  287. {
  288. p.Controls.RemoveAt(i);
  289. }
  290. }
  291. }
  292. catch (Exception ex)
  293. {
  294. //MessageBox.Show("setPanelRemove移除界面控件异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  295. l.WriteLog(13, "setPanelRemove移除界面控件异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  296. }
  297. }
  298. #endregion
  299. #region 控件值设置
  300. //如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  301. public void setMsgInfo(Control control, string ResultMessage, string sType)
  302. {
  303. setMsgMsg(control, ResultMessage, sType);
  304. }
  305. /// <summary>
  306. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable 3为check
  307. /// </summary>
  308. /// <param name="control"></param>
  309. /// <param name="ResultMessage"></param>
  310. /// <param name="sType"></param>
  311. private void setMsgMsg(Control control, string ResultMessage, string sType)
  312. {
  313. try
  314. {
  315. if (control.InvokeRequired)
  316. {
  317. Action<Control, string, string> action = new Action<Control, string, string>(setMsgInfo);
  318. Invoke(action, new object[] { control, ResultMessage, sType });
  319. }
  320. else
  321. {
  322. if (ResultMessage == "true" || ResultMessage == "false")
  323. {
  324. switch (sType)
  325. {
  326. case "1":
  327. control.Enabled = ResultMessage == "true" ? true : false;
  328. ; break;
  329. case "2":
  330. control.Visible = ResultMessage == "true" ? true : false;
  331. ; break;
  332. case "3":
  333. ((CheckBox)control).Checked = ResultMessage == "true" ? true : false;
  334. break;
  335. default: break;
  336. }
  337. }
  338. else if (ResultMessage == "color")
  339. {
  340. switch (sType)
  341. {
  342. case "Red":
  343. control.BackColor = Color.Red;
  344. ; break;
  345. case "Lime":
  346. control.BackColor = Color.Lime;
  347. ; break;
  348. case "GreenYellow":
  349. control.BackColor = Color.GreenYellow;
  350. ; break;
  351. default: break;
  352. }
  353. }
  354. else
  355. {
  356. control.Text = ResultMessage == null ? "" : ResultMessage;
  357. }
  358. }
  359. }
  360. catch (Exception ex)
  361. {
  362. //MessageBox.Show("setMsgMsg设置控件值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  363. l.WriteLog(13, "setMsgMsg设置控件值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  364. }
  365. }
  366. private delegate object GetControlPropertyCallBack(Control control, string name);
  367. /// <summary>
  368. /// 设置控件的值
  369. /// </summary>
  370. /// <param name="control"></param>
  371. /// <param name="name"></param>
  372. /// <returns></returns>
  373. public object GetControlProperty(Control control, string name)
  374. {
  375. try
  376. {
  377. if (control.InvokeRequired == true)
  378. {
  379. GetControlPropertyCallBack CallBack = new GetControlPropertyCallBack(GetControlProperty);
  380. return control.Invoke(CallBack, new object[] { control, name });
  381. }
  382. else
  383. {
  384. Type type = control.GetType();
  385. return type.InvokeMember(name,
  386. BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance,
  387. null, control, null);
  388. }
  389. }
  390. catch (Exception ex)
  391. {
  392. //MessageBox.Show("GetControlProperty设置控件的值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  393. l.WriteLog(13, "setMsgMsg设置控件值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  394. return null;
  395. }
  396. }
  397. /// <summary>
  398. /// 设置颜色提醒
  399. /// </summary>
  400. /// <param name="pointNo"></param>
  401. /// <param name="sType">1橘色提醒,2白色 3红色</param>
  402. private void setGridColor(UltraGrid control, string pointNo, string sType)
  403. {
  404. if (control != null && control.Rows != null && control.Rows.Count > 0 && !string.IsNullOrEmpty(pointNo) && !string.IsNullOrEmpty(sType))
  405. {
  406. setGridColorMsg(control, pointNo, sType);
  407. }
  408. }
  409. private void setGridColorMsg(UltraGrid control, string pointNo, string sType)
  410. {
  411. try
  412. {
  413. if (ultraGridPW.InvokeRequired)
  414. {
  415. Action<UltraGrid, string, string> action = new Action<UltraGrid, string, string>(setGridColor);
  416. Invoke(action, new object[] { control, pointNo, sType });
  417. }
  418. else
  419. {
  420. if (control != null && control.Rows != null && control.Rows.Count > 0)
  421. {
  422. foreach (UltraGridRow ugr in control.Rows)
  423. {
  424. if (ugr.Cells["baseSpotNo"].Text == pointNo)
  425. {
  426. switch (sType)
  427. {
  428. case "1":
  429. if (string.IsNullOrEmpty(ugr.Cells["controlIp"].Text))
  430. {
  431. ugr.Appearance.BackColor = Color.Orange;
  432. };
  433. break;
  434. case "2":
  435. ugr.Appearance.BackColor = Color.White;
  436. break;
  437. case "3":
  438. ugr.Appearance.BackColor = Color.Red;
  439. break;
  440. }
  441. break;
  442. }
  443. }
  444. }
  445. }
  446. }
  447. catch (Exception ex)
  448. {
  449. //MessageBox.Show("setGridColorMsg设置颜色异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  450. l.WriteLog(13, "setGridColorMsg设置颜色异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  451. }
  452. }
  453. public void setGridInfo(UltraGrid control, DataTable dt1, DataTable dt2)
  454. {
  455. setGridMsg(control, dt1, dt2);
  456. }
  457. /// <summary>
  458. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  459. /// </summary>
  460. /// <param name="control"></param>
  461. /// <param name="ResultMessage"></param>
  462. /// <param name="sType"></param>
  463. private void setGridMsg(UltraGrid p, DataTable dt1, DataTable dt2)
  464. {
  465. try
  466. {
  467. if (p.InvokeRequired)
  468. {
  469. Action<UltraGrid, DataTable, DataTable> action = new Action<UltraGrid, DataTable, DataTable>(setGridInfo);
  470. Invoke(action, new object[] { p, dt1, dt2 });
  471. }
  472. else
  473. {
  474. ClsControlPack.CopyDataToDatatable(ref dt1, ref dt2, true);
  475. ClsControlPack.RefreshAndAutoSize(p);
  476. }
  477. }
  478. catch (Exception ex)
  479. {
  480. MessageBox.Show("setGridMsg设置界面的值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  481. l.WriteLog(13, "setGridMsg设置界面的值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  482. }
  483. }
  484. #endregion
  485. #region 事件处理
  486. private string _controlIp = "";
  487. private void frmStaticMain_Load(object sender, EventArgs e)
  488. {
  489. try
  490. { //初始化时间控件的值
  491. dateTimeStart.Value = DateTime.Now.Date;
  492. dateTimeEnd.Value = DateTime.Now.Date.AddDays(1).AddSeconds(-1);
  493. _controlIp = GetIP();
  494. if (!_controlIp.Contains("192") && !_controlIp.Contains("168")) //只有在测试环境,【测试】按钮才有效
  495. {
  496. button1.Visible = false;
  497. button1.Enabled = false;
  498. }
  499. userId = ((ST_MainForm)(this.MdiParent)).UserID;
  500. userName = ((ST_MainForm)(this.MdiParent)).UserName;
  501. appUser = ((ST_MainForm)(this.MdiParent)).AppUser;
  502. collection1.EventDataCollectionArgs += new StaticEventDataCollection(EventData);//数据采集1
  503. collection2.EventDataCollectionArgs += new StaticEventDataCollection(EventData2);//数据采集2txtTare
  504. //状态(0:未配车;1:未使用;2:已使用;3:已作废;4:正使用)
  505. //ultraGrid1.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = GetValueListByString("0:未配车,1:未使用,2:已使用,3:已作废,4:正使用");
  506. //ultraGridScaleHis.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = GetValueListByString("0:未配车,1:未使用,2:已使用,3:已作废,4:正使用");
  507. if (!bd.setBaseDb())
  508. {
  509. MessageBox.Show("基础数据载入失败,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n");
  510. l.WriteLog(13, "基础数据载入失败,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n");
  511. return;
  512. }
  513. else
  514. {
  515. timer1.Start();
  516. timerSearchLimit.Start();
  517. List<MeterBaseSpotInfo> lt = PbStaticRailwayCache.sportInfos.Where(s => s.baseSpotName.Contains("静态")).ToList();
  518. dtJGPointInfo.Clear(); //2021年4月22日 杨秀东新加
  519. DataTable dt = dtJGPointInfo.Clone();
  520. foreach (MeterBaseSpotInfo mbsi in lt)
  521. {
  522. DataRow dr = dt.NewRow();
  523. dr["baseSpotNo"] = mbsi.baseSpotNo;
  524. dr["baseSpotName"] = mbsi.baseSpotName;
  525. dr["validFlag"] = string.IsNullOrEmpty(mbsi.controlIp) ? "未接管" : "已接管";
  526. dt.Rows.Add(dr);
  527. }
  528. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true);
  529. ClsControlPack.RefreshAndAutoSize(ultraGridPW);
  530. lbPointName.Text = "";
  531. lbMeterMan.Text = userName;
  532. //imageControl.Start();
  533. collection2.Start("CAR11"); //白家嘴计检站静态衡一
  534. collection1.Start("CAR12"); //白家嘴计检站静态衡二 这个有2个秤点
  535. }
  536. //=====================下拉界面相关事件========================
  537. //下拉框测试
  538. loadMaterialInfo();
  539. //智能输入弹出框设置
  540. show = new ListBox();
  541. this.Controls.Add(show);
  542. show.Size = new Size(500, 480); //设置show的宽度和长度
  543. show.Visible = false;
  544. show.ScrollAlwaysVisible = true;
  545. show.BringToFront();
  546. show.Font = new Font("宋体", 14.25f, FontStyle.Bold);
  547. show.DoubleClick += new EventHandler(show_DoubleClick);
  548. show.KeyPress += new KeyPressEventHandler(show_KeyPress);
  549. show.Leave += new EventHandler(show_Leave);
  550. //=====================下拉界面相关事件========================
  551. }
  552. catch (Exception ex)
  553. {
  554. MessageBox.Show("frmStaticMain_Load方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  555. l.WriteLog(13, "frmStaticMain_Load方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  556. }
  557. }
  558. /// <summary>
  559. /// 打开关闭语音对讲
  560. /// </summary>
  561. /// <param name="sender"></param>
  562. /// <param name="e"></param>
  563. private void btnOpenVoice_Click(object sender, EventArgs e)
  564. {
  565. try
  566. {
  567. if (panel1.Controls.Count > 0)
  568. {
  569. if (btnOpenVoice.Text == "打开对讲")
  570. {
  571. VoiceOpen();
  572. }
  573. else
  574. {
  575. VoiceClose();
  576. }
  577. }
  578. }
  579. catch (Exception ex)
  580. {
  581. MessageBox.Show("btnOpenVoice_Click打开对讲异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  582. l.WriteLog(13, "btnOpenVoice_Click打开对讲异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  583. }
  584. }
  585. /// <summary>
  586. /// 使用自重
  587. /// </summary>
  588. /// <param name="sender"></param>
  589. /// <param name="e"></param>
  590. private void btnZZWgt_Click(object sender, EventArgs e)
  591. {
  592. try
  593. {
  594. if (preTack == null || string.IsNullOrEmpty(ucStaticTrackMeterInfo1.predictionNo))
  595. {
  596. MessageBox.Show("[预报单号]为空不允许进行保存操作,请选择预报信息后再点击[使用自重]按钮!");
  597. return;
  598. }
  599. if (first != null)
  600. {
  601. MessageBox.Show("存在有效的一次计量数据,请先回皮再使用自重进行计量!");
  602. return;
  603. }
  604. btnZZWgt.BackColor = Color.Gray; //点击使用自重以后,就变为灰色;
  605. isUsedFactoryWeight = true;
  606. }
  607. catch (Exception ex)
  608. {
  609. MessageBox.Show("btnZZWgt_Click使用自重方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  610. l.WriteLog(13, "btnZZWgt_Click使用自重方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  611. }
  612. }
  613. /// <summary>
  614. /// 复磅操作;
  615. /// 1、客户端复磅时提醒要复磅的重量是多少;
  616. /// 2、服务端在服务端更新最近的一条重量记录,将原来的记录写在memo中;若存在二次计量记录则进行更新,并将原来的记录写在memo中;
  617. /// </summary>
  618. /// <param name="sender"></param>
  619. /// <param name="e"></param>
  620. private void btnRecover_Click(object sender, EventArgs e)
  621. {
  622. try
  623. {
  624. if (string.IsNullOrEmpty(txtCarNo.Text.Trim()) || !(txtCarNo.Text.Trim().Length == 7))
  625. {
  626. MessageBox.Show("车号[" + txtCarNo.Text.Trim() + "]" + "为空或车号长度不等于7,不能进行 [ 复磅 ] 操作!");
  627. return;
  628. }
  629. RESTfulResult<List<MeterWorkRailwayActFirst>> RESTfulResultRecent = railwayActFirstService.doQuerySelectSta(new MeterWorkRailwayActFirst()
  630. {
  631. pageNum = 1,
  632. pageSize = 10,
  633. railwayNo = txtCarNo.Text.Trim()
  634. });
  635. if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  636. {
  637. string lastWeight = RESTfulResultRecent.Data[0].meterWeight.ToString();
  638. string actualFirstNo = RESTfulResultRecent.Data[0].actualFirstNo.ToString(); ;
  639. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.collect != null && PbStaticRailwayCache.collect.mainWgt > 1000)
  640. {
  641. switch (PbStaticRailwayCache.sportInfo.baseSpotNo)
  642. {
  643. case "00011":
  644. if (cmbCarType.Text.Trim() == "双秤")
  645. {
  646. PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt + PbStaticRailwayCache.collect.viceWgt;
  647. }
  648. else
  649. {
  650. PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt;
  651. }
  652. ; break;
  653. case "00010":
  654. PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt;
  655. ; break;
  656. }
  657. }
  658. string msg = "上一次的计量重量为 [ " + Convert.ToDouble(lastWeight) / 1000 + " ]T 复磅后重量为[ " + PbStaticRailwayCache.lockWgt / 1000 + " ]T,是否继续保存!";
  659. DialogResult dr = MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel);
  660. if (dr == DialogResult.OK)
  661. {
  662. try
  663. {
  664. bool flag = SaveRecover(actualFirstNo);
  665. if (flag)
  666. {
  667. MessageBox.Show("[" + strCarNo + "]复磅成功!");
  668. QueryCarNo(); //计量完成后查询一次数据
  669. querySacle();//计量预报查询;查询所有有效的预报
  670. queryFirst(); //查询100条一次计量记录
  671. queryActual(); //查询100条二次计量记录
  672. queryFirst2(); //查询100条一次计量记录
  673. queryActual2(); //查询100条二次计量记录
  674. CleanForm(); //保存成功,清空文本框
  675. }
  676. else
  677. {
  678. MessageBox.Show("[" + strCarNo + "]复磅失败!");
  679. }
  680. }
  681. catch (Exception ex)
  682. {
  683. btnSave.Enabled = true;
  684. MessageBox.Show("[" + strCarNo + "]复磅失败!");
  685. txtMsgInfo.Text = strCarNo + "复磅失败:" + ex.Message.Trim();
  686. l.WriteLog(5, strCarNo + "复磅失败:" + ex.Message.Trim());
  687. }
  688. }
  689. }
  690. isEditCarNo = false;
  691. }
  692. catch (Exception ex)
  693. {
  694. MessageBox.Show("btnRecover_Click复磅方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  695. l.WriteLog(13, "btnRecover_Click复磅方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  696. }
  697. }
  698. /// <summary>
  699. /// 保存按钮
  700. /// </summary>
  701. /// <param name="sender"></param>
  702. /// <param name="e"></param>
  703. private void btnSave_Click(object sender, EventArgs e)
  704. {
  705. try
  706. {
  707. if (btnSave.BackColor.Equals(Color.Gray))
  708. {
  709. MessageBox.Show("[" + strCarNo + "]" + "已经保存成功,不能重复点击 [ 保存 ] 按钮!");
  710. return;
  711. }
  712. //预报为空不允许进行保存操作
  713. if (preTack == null || string.IsNullOrEmpty(ucStaticTrackMeterInfo1.predictionNo))
  714. {
  715. MessageBox.Show("[预报单号]为空不允许进行保存操作,请选择预报信息后再点击[保存]按钮!");
  716. return;
  717. }
  718. //2021年5月31日 添加校验
  719. if (isUsedFactoryWeight && string.IsNullOrEmpty(txtTare.Text))
  720. {
  721. MessageBox.Show("使用自重计量时,皮重不允许为空,请输入皮重后,再点击[保存]按钮!");
  722. return;
  723. }
  724. //2021年6月14日 添加硫酸使用自重的提示
  725. if (!String.IsNullOrEmpty(ucStaticTrackMeterInfo1.matterName) && "硫酸".Equals(ucStaticTrackMeterInfo1.matterName)
  726. && (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5))
  727. {
  728. string msg = "计量【硫酸】时,没有【皮重】或者【自重】信息或皮重信息未完整录入,是否继续保存!";
  729. DialogResult dr = MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel);
  730. if (dr == DialogResult.Cancel) return;
  731. }
  732. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.collect != null && PbStaticRailwayCache.collect.mainWgt > 1000)
  733. {
  734. switch (PbStaticRailwayCache.sportInfo.baseSpotNo)
  735. {
  736. case "00011":
  737. if (cmbCarType.Text.Trim() == "双秤")
  738. {
  739. PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt + PbStaticRailwayCache.collect.viceWgt;
  740. }
  741. else
  742. {
  743. PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt;
  744. }
  745. ; break;
  746. case "00010":
  747. PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt;
  748. ; break;
  749. }
  750. tareWeight = Convert.ToDouble(txtTare.Value) * 1000; //自重的皮重
  751. PbStaticRailwayCache.lockCarNo = txtCarNo.Text.Trim(); //界面车号
  752. DialogResult dr = MessageBox.Show("是否确认保存当前计量数据?", "提示", MessageBoxButtons.OKCancel);
  753. if (dr == DialogResult.OK)
  754. {
  755. try
  756. {
  757. string actNo = "";
  758. bool flag = SaveDB(out actNo);
  759. if (flag)
  760. {
  761. #region 截取图片信息
  762. try
  763. {
  764. //* 截取屏幕信息
  765. Point screenPoint = this.PointToScreen(new Point());
  766. Rectangle rect = new Rectangle(screenPoint, this.Size);
  767. Image img = new Bitmap(rect.Width, rect.Height);
  768. Graphics g = Graphics.FromImage(img);
  769. g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg"
  770. img.Save(string.Format("{0}imgShort\\formalImg\\{1}_{2}_{3}.jpg",
  771. AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
  772. PbStaticRailwayCache.sportInfo.baseSpotNo,
  773. "R" + actNo,
  774. (PbStaticRailwayCache.videoChild.Count + 1)), System.Drawing.Imaging.ImageFormat.Jpeg);
  775. //* 最后进行截图操作
  776. CameraShotCls cameraShot = new CameraShotCls();
  777. //cameraShot.CapMethod(actNo);
  778. cameraShot.CapMethodFromVideo(actNo);
  779. //*/
  780. }
  781. catch
  782. {
  783. l.WriteLog(5, PbStaticRailwayCache.lockCarNo + "截图失败");
  784. }
  785. #endregion
  786. MessageBox.Show("[" + strCarNo + "]保存成功!");
  787. btnSave.BackColor = Color.Gray; //2021年4月10日,保存后,只有车号变更才能够重新点击保存;
  788. QueryCarNo(); //计量完成后查询一次数据
  789. querySacle();//计量预报查询;查询所有有效的预报
  790. queryFirst(); //查询100条一次计量记录
  791. queryActual(); //查询100条二次计量记录
  792. queryFirst2(); //查询100条一次计量记录
  793. queryActual2(); //查询100条二次计量记录
  794. CleanForm(); //保存成功,清空文本框
  795. }
  796. else
  797. {
  798. MessageBox.Show("[" + strCarNo + "]保存失败!");
  799. }
  800. }
  801. catch (Exception ex)
  802. {
  803. btnSave.Enabled = true;
  804. MessageBox.Show("[" + strCarNo + "]保存失败!");
  805. txtMsgInfo.Text = strCarNo + "保存失败:" + ex.Message.Trim();
  806. l.WriteLog(5, strCarNo + "保存失败:" + ex.Message.Trim());
  807. }
  808. }
  809. }
  810. isEditCarNo = false;
  811. }
  812. catch (Exception ex)
  813. {
  814. MessageBox.Show("btnSave_Click保存方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  815. l.WriteLog(13, "btnSave_Click保存方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  816. }
  817. }
  818. /// <summary>
  819. /// 存储计量数据
  820. /// </summary>
  821. /// <returns></returns>
  822. private bool SaveDB(out string actNo)
  823. {
  824. actNo = "";
  825. try
  826. {
  827. MeterWorkRailwayActFirst mwraf = new MeterWorkRailwayActFirst();
  828. EntityBase<PreRailwayScale> entityBase = new EntityBase<PreRailwayScale>();
  829. preTack = (preTack == null ? new PreRailwayScale() : preTack);
  830. mwraf = entityBase.format<MeterWorkRailwayActFirst>(preTack, mwraf);
  831. mwraf.meterWeight = PbStaticRailwayCache.lockWgt;
  832. if (isUsedFactoryWeight)
  833. {
  834. mwraf.railwayFactoryWeight = tareWeight;
  835. }
  836. mwraf.createManNo = userId;
  837. mwraf.createManName = userName;
  838. mwraf.createTime = DateTime.Now;
  839. mwraf.meterGroup = appUser.userGroup;
  840. mwraf.meterClass = appUser.userClass;
  841. mwraf.railwayNo = strCarNo;
  842. mwraf.baseSpotNo = PbStaticRailwayCache.sportInfo.baseSpotNo;
  843. mwraf.baseSpotName = PbStaticRailwayCache.sportInfo.baseSpotName;
  844. RESTfulResult<string> rm = railwayActFirstService.doAddWfStatic(mwraf);
  845. if (rm.Succeed)
  846. {
  847. actNo = rm.Data;
  848. isLockWgt = true;
  849. setMsgInfo(txtMsgInfo, strCarNo + "保存成功", "");
  850. return true;
  851. }
  852. else
  853. {
  854. setMsgInfo(txtMsgInfo, strCarNo + "保存失败:" + rm.Message, "");
  855. l.WriteLog(5, strCarNo + "保存失败:" + rm.Message);
  856. return false;
  857. }
  858. }
  859. catch (Exception ex)
  860. {
  861. MessageBox.Show("Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  862. l.WriteLog(13, "方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  863. }
  864. return false;
  865. }
  866. /// <summary>
  867. /// 复磅保存操作
  868. /// </summary>
  869. /// <param name="actNo"></param>
  870. /// <returns></returns>
  871. private bool SaveRecover(string actualFirstNo)
  872. {
  873. try
  874. {
  875. MeterWorkRailwayActFirst mwraf = new MeterWorkRailwayActFirst();
  876. mwraf.actualFirstNo = actualFirstNo;
  877. mwraf.meterWeight = PbStaticRailwayCache.lockWgt;
  878. mwraf.createManNo = userId;
  879. mwraf.createManName = userName;
  880. mwraf.createTime = DateTime.Now;
  881. mwraf.meterGroup = appUser.userGroup;
  882. mwraf.meterClass = appUser.userClass;
  883. mwraf.railwayNo = strCarNo;
  884. mwraf.baseSpotNo = PbStaticRailwayCache.sportInfo.baseSpotNo;
  885. mwraf.baseSpotName = PbStaticRailwayCache.sportInfo.baseSpotName;
  886. RESTfulResult<string> rm = railwayActFirstService.doAddWfRecover(mwraf);
  887. if (rm.Succeed)
  888. {
  889. isLockWgt = true;
  890. setMsgInfo(txtMsgInfo, strCarNo + "复磅成功", "");
  891. return true;
  892. }
  893. else
  894. {
  895. setMsgInfo(txtMsgInfo, strCarNo + "复磅失败:" + rm.Message, "");
  896. l.WriteLog(5, strCarNo + "复磅失败:" + rm.Message);
  897. return false;
  898. }
  899. }
  900. catch (Exception ex)
  901. {
  902. MessageBox.Show("Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  903. l.WriteLog(13, "方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  904. }
  905. return false;
  906. }
  907. private void btnStart_Click(object sender, EventArgs e)
  908. {
  909. try
  910. {
  911. if (btnStart.Text != "释放")
  912. {
  913. UltraGridRow ugr = ultraGridPW.ActiveRow;
  914. if (ugr != null)
  915. {
  916. if (!string.IsNullOrEmpty(ugr.Cells["controlIp"].Text) && ugr.Cells["controlIp"].Text != _controlIp)
  917. {
  918. MessageBox.Show("当前计量点已被他人接管");
  919. return;
  920. }
  921. btnStart.BackColor = Color.Red;
  922. btnStart.Text = "释放";
  923. PbStaticRailwayCache.sportInfo = PbStaticRailwayCache.sportInfos.Where(s => s.baseSpotNo == ugr.Cells["baseSpotNo"].Text.Trim()).FirstOrDefault();
  924. //controlIp
  925. updateSport(_controlIp);
  926. if (PbStaticRailwayCache.sportInfo.baseSpotNo == "00011")
  927. {
  928. ucStorageWeightT2.Visible = true;
  929. pl3.Visible = true;
  930. cmbCarType.Enabled = true;
  931. }
  932. else
  933. {
  934. ucStorageWeightT2.Visible = false;
  935. pl3.Visible = false;
  936. setMsgInfo(cmbCarType, "单秤", "");
  937. cmbCarType.Enabled = false;
  938. }
  939. lbPointName.Text = PbStaticRailwayCache.sportInfo.baseSpotName;
  940. bd.getSpot();
  941. GetIPVideo(PbStaticRailwayCache.videoInfo);
  942. setPicBoxSet();
  943. }
  944. }
  945. else
  946. {
  947. btnStart.BackColor = Color.DodgerBlue;
  948. btnStart.Text = "接管";
  949. foreach (UltraGridRow ugrs in ultraGridPW.Rows)
  950. {
  951. ugrs.Appearance.BackColor = Color.White;
  952. }
  953. ucStorageWeightT2.Visible = false;
  954. pl3.Visible = false;
  955. Clean();//释放按钮
  956. }
  957. }
  958. catch (Exception ex)
  959. {
  960. MessageBox.Show("btnStart_Click接管按钮异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  961. l.WriteLog(13, "btnStart_Click接管按钮异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  962. }
  963. }
  964. private PbModelDbService<string> pdb = new PbModelDbService<string>();
  965. private MeterMonitorNoteService noteService = new MeterMonitorNoteService();
  966. /// <summary>
  967. /// 修改监控表的状态
  968. /// </summary>
  969. /// <param name="controlIp"></param>
  970. private void updateSport(string controlIp)
  971. {
  972. try
  973. {
  974. string sql = string.Format("update meter_base_spot_info set CONTROL_IP = '{0}' where CONTROL_IP='{1}' or base_spot_no='{2}'", controlIp, _controlIp, (PbStaticRailwayCache.sportInfo == null ? "" : PbStaticRailwayCache.sportInfo.baseSpotNo));
  975. RESTfulResult<string> rm = pdb.executeSqlDataWf(sql);
  976. if (rm.Succeed)
  977. {
  978. WriteMonitorNote("修改meter_base_spot_info接管状态为" + (string.IsNullOrEmpty(controlIp) ? "取消接管" : "接管"));
  979. }
  980. }
  981. catch (Exception ex)
  982. {
  983. MessageBox.Show("updateSport方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  984. l.WriteLog(13, "updateSport方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  985. }
  986. }
  987. private void WriteMonitorNote(string content)
  988. {
  989. try
  990. {
  991. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo != null)
  992. {
  993. RESTfulResult<string> rm = noteService.doAddWf(new MeterMonitorNote
  994. {
  995. baseSpotNo = PbStaticRailwayCache.sportInfo.baseSpotNo,
  996. baseSpotName = PbStaticRailwayCache.sportInfo.baseSpotName,
  997. operationContent = content,//str + chk.Text,
  998. carNo = txtCarNo.Text.Trim(),
  999. meterManNo = appUser.userid,
  1000. meterManName = appUser.username,
  1001. meterNoteSource = "5"
  1002. });
  1003. if (!rm.Succeed)
  1004. {
  1005. l.WriteLog(5, "静态衡写入操作日志异常:" + content);
  1006. }
  1007. }
  1008. }
  1009. catch (Exception ex)
  1010. {
  1011. MessageBox.Show("WriteMonitorNote方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1012. l.WriteLog(13, "WriteMonitorNote方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1013. }
  1014. }
  1015. /// <summary>
  1016. /// 放大图像
  1017. /// </summary>
  1018. private void PictureBoxDoubleClick(object sender, EventArgs e)
  1019. {
  1020. if (iPic != 0)
  1021. {
  1022. cameraShotMain.StopRealPlay(iPic);
  1023. }
  1024. PictureBox picture = (PictureBox)sender;
  1025. iPic = Convert.ToInt32(picture.Name.Substring(picture.Name.Length - 1, 1));
  1026. plImgShow.Visible = true;
  1027. cameraShotMain.RealPlay(pictureShow, iPic);
  1028. }
  1029. /// <summary>
  1030. /// 不显示大图
  1031. /// </summary>
  1032. private void pictureShow_DoubleClick(object sender, EventArgs e)
  1033. {
  1034. plImgShow.Visible = false;
  1035. cameraShotMain.StopRealPlay(iPic);
  1036. iPic = 0;
  1037. }
  1038. private void frmStaticMain_FormClosing(object sender, FormClosingEventArgs e)
  1039. {
  1040. try
  1041. {
  1042. Clean(); //关闭按钮
  1043. }
  1044. catch { }
  1045. timer1.Stop();
  1046. timerSearchLimit.Stop();
  1047. //imageControl.Stop();
  1048. try
  1049. {
  1050. collection1.Stop();
  1051. }
  1052. catch { }
  1053. try
  1054. {
  1055. collection2.Stop();
  1056. }
  1057. catch { }
  1058. }
  1059. #endregion
  1060. #region 数据采集部分
  1061. private bool iWgtChange1 = true; //重量初次大于500
  1062. private bool bTest = false;
  1063. private string strCarNo = "";
  1064. private bool isLockWgt = false;//是否锁定重量
  1065. /// <summary>
  1066. /// 数据采集;双称
  1067. /// </summary>
  1068. private void EventData(object o, StaticCollectModel e)
  1069. {
  1070. //这里每隔0.5秒执行一次
  1071. try
  1072. {
  1073. #region
  1074. #if DEBUG
  1075. //*
  1076. if (bTest)
  1077. {
  1078. e.carno = "";//功能测试
  1079. e.mainWgt = 10000;//rd.Next(40000, 50000);
  1080. e.viceWgt = 0;
  1081. e.firstRed = "0";
  1082. e.secondRed = "0";
  1083. e.thirdRed = "1";
  1084. e.carType = "车型1";
  1085. }
  1086. //*/
  1087. #endif
  1088. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011")
  1089. {
  1090. //此处需要调整,车号要能够进行编辑
  1091. if (!string.IsNullOrEmpty(e.carno) && e.carno != strCarNo && PbStaticRailwayCache.collect != null)
  1092. {
  1093. if (e.mainWgt > 1000 && !isEditCarNo)
  1094. {
  1095. strCarNo = e.carno;
  1096. if (!string.IsNullOrEmpty(strCarNo))
  1097. {
  1098. //QueryCarNo(); //采集时,车号有变化,查询一次数据;2021年4月23日注释;车号change的事件中会查询一次数据
  1099. }
  1100. }
  1101. if (string.IsNullOrEmpty(cmbCarType.Text.Trim()))
  1102. {
  1103. setMsgInfo(cmbCarType, "单秤", "");
  1104. foreach (ComBaseInfo cbi in PbStaticRailwayCache.ltCarType)
  1105. {
  1106. if (cbi.baseName == e.carType && cbi.baseName.Contains("双"))
  1107. {
  1108. setMsgInfo(cmbCarType, "双秤", "");
  1109. }
  1110. }
  1111. }
  1112. }
  1113. }
  1114. scModel1.mainWgt = e.mainWgt;
  1115. scModel1.viceWgt = e.viceWgt;
  1116. scModel1.weightStatus = e.weightStatus;
  1117. scModel1.datetime = e.datetime;
  1118. scModel1.carType = e.carType;//车型
  1119. scModel1.firstRed = e.firstRed;//红外1
  1120. scModel1.secondRed = e.secondRed;//红外2
  1121. scModel1.thirdRed = e.thirdRed;//红外3
  1122. if (!isEditCarNo) //为false的时候车号才会重新赋值
  1123. {
  1124. scModel1.carno = e.carno;
  1125. }
  1126. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011")
  1127. {
  1128. PbStaticRailwayCache.collect = scModel1;
  1129. setMsgInfo(pl1, "Color", e.firstRed != "0" ? "Red" : "Lime");
  1130. setMsgInfo(pl2, "Color", e.firstRed != "0" ? "Red" : "Lime");
  1131. setMsgInfo(pl3, "Color", e.firstRed != "0" ? "Red" : "Lime");
  1132. }
  1133. //重量大于500的情况下
  1134. if (e.mainWgt > 1000)
  1135. {
  1136. l.WriteLog(1, string.Format("双秤:车号:{0},主重:{1},副重{2},车型{3}", e.carno, e.mainWgt, e.viceWgt, e.carType));
  1137. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011")
  1138. {
  1139. //if (!PbStaticRailwayCache.isLockFrm)
  1140. {
  1141. if (!isEditCarNo) //为false的时候车号才会重新赋值
  1142. {
  1143. setMsgInfo(txtCarNo, scModel1.carno, "");
  1144. }
  1145. ucStorageWeightT1.setWgt(scModel1.mainWgt);
  1146. ucStorageWeightT1.setStable(scModel1.weightStatus != 1 ? true : false);
  1147. ucStorageWeightT2.setWgt(scModel1.viceWgt);
  1148. ucStorageWeightT2.setStable(scModel1.weightStatus != 1 ? true : false);
  1149. }
  1150. if (iWgtChange1)
  1151. {
  1152. setMsgInfo(btnSave, "true", "1");
  1153. }
  1154. if (PbStaticRailwayCache.dtStartTime == null)
  1155. PbStaticRailwayCache.dtStartTime = DateTime.Now;
  1156. iWgtChange1 = false;
  1157. int metWgt = 0;
  1158. string strTxt = GetControlProperty(cmbCarType, "Text").ToString().Trim();
  1159. if (strTxt == "双秤")
  1160. {
  1161. metWgt = scModel1.viceWgt + scModel1.mainWgt;
  1162. }
  1163. else
  1164. {
  1165. metWgt = scModel1.mainWgt;
  1166. }
  1167. if (!isLockWgt) //若已经称重保存成功则不再界面重量不再变化
  1168. {
  1169. if (first != null)
  1170. {
  1171. //一毛一皮正常结净
  1172. if (metWgt > first.meterWeight)
  1173. {
  1174. if (isUsedFactoryWeight)
  1175. {
  1176. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1177. if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5)
  1178. {
  1179. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1180. return;
  1181. }
  1182. setMsgInfo(txtNet, Math.Round(Math.Round(Convert.ToDouble(metWgt) / 1000, 2) - Convert.ToDouble(txtTare.Value), 2) + "", "");
  1183. }
  1184. else
  1185. {
  1186. //界面重量大于一次计量重量;则当前为皮重
  1187. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1188. setMsgInfo(txtTare, Math.Round(Convert.ToDouble(first.meterWeight) / 1000, 2) + "", "");
  1189. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000 - Convert.ToDouble(first.meterWeight) / 1000, 2) + "", "");
  1190. }
  1191. }
  1192. else
  1193. {
  1194. //界面重量小于一次计量重量;则当前为毛重;
  1195. //setMsgInfo(txtGroess, first.meterWeight + "", "");
  1196. //setMsgInfo(txtTare, metWgt + "", "");
  1197. //setMsgInfo(txtNet, (first.meterWeight - metWgt) + "", "");
  1198. //2021年4月19日 将毛重的取值从【meterWeight】变更为【meterBalanceWeight】
  1199. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000, 2) + "", "");
  1200. setMsgInfo(txtTare, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1201. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000 - Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1202. }
  1203. }
  1204. else
  1205. {
  1206. if (isUsedFactoryWeight)
  1207. {
  1208. //使用自重进行结净,自重为自己输入的
  1209. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1210. if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5)
  1211. {
  1212. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1213. return; //2021年5月31日 使用自重计量时,若界面为空则不处理
  1214. }
  1215. //setMsgInfo(txtTare, Convert.ToDouble(txtTare.Value) + "", "");
  1216. setMsgInfo(txtNet, Math.Round(Convert.ToDouble((metWgt / 1000) - txtTare.Value), 2) + "", "");
  1217. }
  1218. else
  1219. {
  1220. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1221. setMsgInfo(txtTare, "", "");
  1222. setMsgInfo(txtNet, "", "");
  1223. }
  1224. }
  1225. }
  1226. setGridColor(ultraGridPW, "00011", "3");
  1227. }
  1228. else
  1229. {
  1230. setGridColor(ultraGridPW, "00011", "1");
  1231. }
  1232. }
  1233. else
  1234. {
  1235. //重量小于1000
  1236. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011")
  1237. {
  1238. CleanForm(); //重量小于1000清空文本框
  1239. setMsgInfo(txtCarNo, "", "");
  1240. setGridColor(ultraGridPW, "00011", "3");
  1241. isEditCarNo = false;
  1242. }
  1243. else
  1244. {
  1245. setGridColor(ultraGridPW, "00011", "2");
  1246. }
  1247. //重量小于1000,可以点击保存按钮;按钮言颜色正常;车号编辑状态为false(初始化);
  1248. btnSave.BackColor = Color.DodgerBlue;
  1249. iWgtChange1 = true;
  1250. }
  1251. #endregion
  1252. }
  1253. catch (Exception ex)
  1254. {
  1255. //MessageBox.Show("frmMeterMain.EventData数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1256. l.WriteLog(13, "frmMeterMain.EventData数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1257. }
  1258. }
  1259. #endregion
  1260. #region 数据采集部分
  1261. private bool iWgtChange2 = true; //重量初次大于500
  1262. /// <summary>
  1263. /// 数据采集;单称
  1264. /// </summary>
  1265. private void EventData2(object o, StaticCollectModel e)
  1266. {
  1267. //这里每隔0.5秒执行一次
  1268. try
  1269. {
  1270. if (bTest)
  1271. {
  1272. e.carno = "";//功能测试
  1273. e.mainWgt = 0;//rd.Next(40000, 50000);
  1274. e.viceWgt = 0;
  1275. e.firstRed = "0";
  1276. e.secondRed = "0";
  1277. e.thirdRed = "1";
  1278. e.carType = "车型1";
  1279. }
  1280. #region
  1281. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010")
  1282. {
  1283. if (!string.IsNullOrEmpty(e.carno) && e.carno != strCarNo && PbStaticRailwayCache.collect != null)
  1284. {
  1285. if (e.mainWgt > 1000 && !isEditCarNo)
  1286. {
  1287. strCarNo = e.carno;
  1288. if (!string.IsNullOrEmpty(strCarNo))
  1289. {
  1290. //QueryCarNo(); //采集时,车号有变化,查询一次数据//2021年4月23日注释;车号change的事件中会查询一次数据
  1291. }
  1292. }
  1293. if (string.IsNullOrEmpty(cmbCarType.Text.Trim()))
  1294. {
  1295. setMsgInfo(cmbCarType, "单秤", "");
  1296. }
  1297. }
  1298. }
  1299. scModel2.mainWgt = e.mainWgt;
  1300. scModel2.weightStatus = e.weightStatus;
  1301. //PbStaticRailwayCache.collect.parkStatus = e.parkStatus;
  1302. scModel2.datetime = e.datetime;
  1303. //PbStaticRailwayCache.collect.licType = e.licType;
  1304. if (!isEditCarNo)
  1305. {
  1306. scModel2.carno = e.carno;
  1307. }
  1308. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010")
  1309. {
  1310. PbStaticRailwayCache.collect = scModel2;
  1311. setMsgInfo(pl1, "Color", e.firstRed != "0" ? "Red" : "Lime");
  1312. setMsgInfo(pl2, "Color", e.firstRed != "0" ? "Red" : "Lime");
  1313. setMsgInfo(pl3, "Color", e.firstRed != "0" ? "Red" : "Lime");
  1314. //PbStaticRailwayCache.ltCarType
  1315. }
  1316. //重量大于500的情况下
  1317. if (e.mainWgt > 1000)
  1318. {
  1319. l.WriteLog(1, string.Format("单秤:车号:{0},主重:{1},副重{2},车型{3}", e.carno, e.mainWgt, e.viceWgt, e.carType));
  1320. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010")
  1321. {
  1322. //if (!PbStaticRailwayCache.isLockFrm)
  1323. {
  1324. if (!isEditCarNo) //为false的时候车号才会重新赋值
  1325. {
  1326. setMsgInfo(txtCarNo, scModel2.carno, "");
  1327. }
  1328. ucStorageWeightT1.setWgt(scModel2.mainWgt);
  1329. ucStorageWeightT1.setStable(scModel2.weightStatus != 1 ? true : false);
  1330. }
  1331. if (iWgtChange2)
  1332. {
  1333. setMsgInfo(btnSave, "true", "1");
  1334. }
  1335. if (PbStaticRailwayCache.dtStartTime == null)
  1336. PbStaticRailwayCache.dtStartTime = DateTime.Now;
  1337. iWgtChange2 = false;
  1338. int metWgt = 0;
  1339. string strTxt = GetControlProperty(cmbCarType, "Text").ToString().Trim();
  1340. if (strTxt == "双秤")
  1341. {
  1342. metWgt = scModel2.viceWgt + scModel2.mainWgt;
  1343. }
  1344. else
  1345. {
  1346. metWgt = scModel2.mainWgt;
  1347. }
  1348. if (first != null)
  1349. {
  1350. //一毛一皮正常结净
  1351. if (metWgt > first.meterWeight)
  1352. {
  1353. //界面重量大于一次计量重量;则当前为皮重
  1354. if (isUsedFactoryWeight)
  1355. {
  1356. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1357. if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5)
  1358. {
  1359. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1360. return;
  1361. }
  1362. setMsgInfo(txtNet, Math.Round(Math.Round(Convert.ToDouble(metWgt) / 1000, 2) - Convert.ToDouble(txtTare.Value), 2) + "", "");
  1363. }
  1364. else
  1365. {
  1366. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1367. setMsgInfo(txtTare, Math.Round(Convert.ToDouble(first.meterWeight) / 1000, 2) + "", "");
  1368. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000 - Convert.ToDouble(first.meterWeight) / 1000, 2) + "", "");
  1369. }
  1370. }
  1371. else
  1372. {
  1373. //界面重量小于一次计量重量;则当前为毛重;
  1374. //setMsgInfo(txtGroess, first.meterWeight + "", "");
  1375. //setMsgInfo(txtTare, metWgt + "", "");
  1376. //setMsgInfo(txtNet, (first.meterWeight - metWgt) + "", "");
  1377. //2021年4月19日 将毛重的取值从【meterWeight】变更为【meterBalanceWeight】
  1378. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000, 2) + "", "");
  1379. setMsgInfo(txtTare, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1380. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000 - Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1381. }
  1382. }
  1383. else
  1384. {
  1385. if (isUsedFactoryWeight)
  1386. {
  1387. //使用自重进行结净,自重为自己输入的
  1388. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1389. String st = txtTare.Text;
  1390. if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5)
  1391. {
  1392. setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1393. return;
  1394. //txtTare.Value = 0; //注意numericupdown控件Text和Value是两个值,value不会清空,不这么处理,皮重框会一直有个值。
  1395. //txtTare.Text = "0";
  1396. }
  1397. //setMsgInfo(txtTare, Convert.ToDouble(txtTare.Value) + "", "");
  1398. setMsgInfo(txtNet, Math.Round(Convert.ToDouble((metWgt / 1000) - txtTare.Value), 2) + "", "");
  1399. }
  1400. else
  1401. {
  1402. setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", "");
  1403. setMsgInfo(txtTare, "", "");
  1404. setMsgInfo(txtNet, "", "");
  1405. }
  1406. }
  1407. setGridColor(ultraGridPW, "00010", "3");
  1408. }
  1409. else
  1410. {
  1411. setGridColor(ultraGridPW, "00010", "1");
  1412. }
  1413. }
  1414. else
  1415. {
  1416. if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010")
  1417. {
  1418. CleanForm(); //00010重量小于1000清空
  1419. setMsgInfo(txtCarNo, "", "");
  1420. setGridColor(ultraGridPW, "00010", "3");
  1421. isEditCarNo = false;
  1422. }
  1423. else
  1424. {
  1425. setGridColor(ultraGridPW, "00010", "2");
  1426. }
  1427. iWgtChange2 = true;
  1428. }
  1429. #endregion
  1430. }
  1431. catch (Exception ex)
  1432. {
  1433. //MessageBox.Show("frmMeterMain.EventData2数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1434. l.WriteLog(13, "frmMeterMain.EventData2数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1435. }
  1436. }
  1437. #endregion
  1438. #region 数据操作
  1439. /// <summary>
  1440. /// 按车号查询数据
  1441. /// </summary>
  1442. private void QueryCarNo()
  1443. {
  1444. //查询频率限制,每2s钟查询一次数据
  1445. //if (searchLimit > 1)
  1446. //{
  1447. // searchLimit = 0;
  1448. //}
  1449. //else
  1450. //{
  1451. // return;
  1452. //}
  1453. int count = 0;
  1454. try
  1455. {
  1456. if (!string.IsNullOrEmpty(strCarNo))
  1457. {
  1458. first = null;
  1459. count = 1;
  1460. //通过车号查询计量预报;2021年5月15日 调整预报查询的接口
  1461. RESTfulResult<List<PreRailwayScale>> rmx = PreService.doQueryJLByCar(new PreRailwayScale { railwayNo = strCarNo, railwayTypeNo = "001019001" });
  1462. count = 2;
  1463. try
  1464. {
  1465. dtRailwayScale.Clear();
  1466. DataTable dt = dtRailwayScale.Clone();
  1467. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  1468. {
  1469. dt = rmx.Data.ListToDataTable<PreRailwayScale>();
  1470. }
  1471. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtRailwayScale, true);
  1472. foreach (var item in this.ultraGrid1.Rows)
  1473. {
  1474. item.Cells["valueFlag"].Value = GetTrackType(item.Cells["valueFlag"].Value.ToString());
  1475. item.Cells["grossWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["grossWeight"].Value.ToString()) ? "0" : item.Cells["grossWeight"].Value.ToString()) / 1000;
  1476. item.Cells["tareWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["tareWeight"].Value.ToString()) ? "0" : item.Cells["tareWeight"].Value.ToString()) / 1000;
  1477. item.Cells["netWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["netWeight"].Value.ToString()) ? "0" : item.Cells["netWeight"].Value.ToString()) / 1000;
  1478. }
  1479. ClsControlPack.RefreshAndAutoSize(ultraGrid1);
  1480. if (ultraGrid1 != null && ultraGrid1.Rows != null && ultraGrid1.Rows.Count > 0)
  1481. {
  1482. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  1483. {
  1484. ugr.Appearance.BackColor = Color.White;//背景颜色重置
  1485. }
  1486. if (ultraGrid1.Rows.Count == 1 && !isLockWgt) //等于1时自动赋值并且没有计量完成
  1487. {
  1488. DataRow[] dr = dtRailwayScale.Select("predictionNo='" + ultraGrid1.Rows[0].Cells["predictionNo"].Text.Trim() + "'");
  1489. if (dr != null && dr.Length > 0)
  1490. {
  1491. preTack = dr[0].CreateItem<PreRailwayScale>();
  1492. ucStaticTrackMeterInfo1.setPreTrackInfo(preTack);
  1493. }
  1494. }
  1495. }
  1496. }
  1497. catch (Exception ex)
  1498. {
  1499. MessageBox.Show("预报数据查询出现异常,请联系系统维护人员处理!异常原因\r\n" + ex);
  1500. l.WriteLog(13, "预报数据查询框异常,位置【" + count + "】" + ex);
  1501. }
  1502. //dtRailwayActFirst.Clear();
  1503. //一次计量数据查询:仅查询当前车号有效的数据;存在则毛皮净写入界面
  1504. RESTfulResult<List<MeterWorkRailwayActFirst>> RESTfulResult = railwayActFirstService.doQueryWf(new MeterWorkRailwayActFirst { railwayNo = strCarNo, valueFlag = "1" });
  1505. if (RESTfulResult.Succeed)
  1506. {
  1507. if (RESTfulResult.Data != null && RESTfulResult.Data.Count > 0)
  1508. {
  1509. if (RESTfulResult.Data.Count == 1) //等于1时自动赋值并且没有计量完成
  1510. {
  1511. if (!isLockWgt)
  1512. {
  1513. first = RESTfulResult.Data[0];
  1514. PbStaticRailwayCache.strCode = first.predictionNo;
  1515. try
  1516. {
  1517. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  1518. {
  1519. PreRailwayScale ptsQ = rmx.Data.Where(s => s.predictionNo == RESTfulResult.Data[0].predictionNo).FirstOrDefault();
  1520. if (ptsQ != null && ptsQ.predictionNo != "" && !txtMsgInfo.Text.Contains("保存成功"))
  1521. {
  1522. //2021年4月21日 杨秀东处理,若提示信息包含保存成功,则不再给界面赋值
  1523. ucStaticTrackMeterInfo1.setPreTrackInfo(ptsQ);
  1524. preTack = ptsQ;
  1525. }
  1526. }
  1527. }
  1528. catch (Exception ex)
  1529. {
  1530. MessageBox.Show("一次计量数据查询出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex);
  1531. l.WriteLog(13, "车号[" + strCarNo + "]一次计量数据查询框异常位置【" + count + "】" + ex);
  1532. }
  1533. }
  1534. }
  1535. else
  1536. {
  1537. setMsgInfo(txtMsgInfo, "车号[" + strCarNo + "]存在多条未结净的数据,不允许进行计量操作!", "");
  1538. }
  1539. }
  1540. }
  1541. }
  1542. }
  1543. catch (Exception ex)
  1544. {
  1545. l.WriteLog(11, "QueryCarNo中出现异常:" + ex.Message);
  1546. MessageBox.Show("QueryCarNo方法中出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex);
  1547. }
  1548. }
  1549. /// <summary>
  1550. /// 预报查询
  1551. /// </summary>
  1552. private void querySacle()
  1553. {
  1554. try
  1555. {
  1556. dtRailwayScaleHis.Clear();
  1557. PreRailwayScale info = new PreRailwayScale();
  1558. info.pageNum = 1;
  1559. info.pageSize = 1000;
  1560. if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间
  1561. info.startTime = dateTimeStart.Text;
  1562. if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间
  1563. info.endTime = dateTimeEnd.Text;
  1564. if (!string.IsNullOrEmpty(cbMaterial.Text))//物资名称
  1565. info.matterName = cbMaterial.Text.Trim();
  1566. if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号
  1567. info.railwayNo = txtCarNoSearch.Text.Trim();
  1568. RESTfulResult<List<PreRailwayScale>> rmx = PreService.doQueryWfTime(info);
  1569. DataTable dt = dtRailwayScaleHis.Clone();
  1570. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  1571. {
  1572. dt = rmx.Data.ListToDataTable<PreRailwayScale>();
  1573. }
  1574. /**
  1575. RESTfulResult<List<PreRailwayScale>> rmx = PreService.doQueryTenWf(new PreRailwayScale { railwayTypeNo = "001019001" });
  1576. DataTable dt = dtRailwayScale.Clone();
  1577. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  1578. {
  1579. dt = rmx.Data.ListToDataTable<PreRailwayScale>();
  1580. }
  1581. */
  1582. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtRailwayScaleHis, true);
  1583. foreach (var item in this.ultraGridScaleHis.Rows)
  1584. {
  1585. item.Cells["valueFlag"].Value = GetTrackType(item.Cells["valueFlag"].Value.ToString());
  1586. }
  1587. ClsControlPack.RefreshAndAutoSize(ultraGridScaleHis);
  1588. }
  1589. catch (Exception ex)
  1590. {
  1591. MessageBox.Show("querySacle预报数据查询出现异常,请联系系统维护人员处理!异常原因\r\n" + ex);
  1592. l.WriteLog(13, "querySacle预报数据查询框异常,异常原因\r\n" + ex);
  1593. }
  1594. }
  1595. /// <summary>
  1596. /// 查询100条一次计量记录
  1597. /// </summary>
  1598. private void queryFirst()
  1599. {
  1600. try
  1601. {
  1602. //最近的100条一次计量数据数据查询
  1603. dtRailwayActFirst.Clear();
  1604. MeterWorkRailwayActFirst info = new MeterWorkRailwayActFirst();
  1605. info.pageNum = 1;
  1606. info.pageSize = 1000;
  1607. info.valueFlag = "4";
  1608. info.baseSpotNo = "00010"; //00010;白家嘴计检站静态衡一
  1609. if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间
  1610. info.createTime1 = dateTimeStart.Text;
  1611. if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间
  1612. info.createTime2 = dateTimeEnd.Text;
  1613. if (!string.IsNullOrEmpty(cbMaterial.Text))//物资名称
  1614. info.matterName = cbMaterial.Text.Trim();
  1615. if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号
  1616. info.railwayNo = txtCarNoSearch.Text.Trim();
  1617. RESTfulResult<List<MeterWorkRailwayActFirst>> RESTfulResultRecent = railwayActFirstService.doQuerySelectSta(info);
  1618. if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  1619. {
  1620. DataTable dts = dtRailwayActFirst.Clone();
  1621. dts = RESTfulResultRecent.Data.ListToDataTable<MeterWorkRailwayActFirst>();
  1622. ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActFirst, true);
  1623. foreach (var item in this.ultraGrid2.Rows)
  1624. {
  1625. item.Cells["meterWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterWeight"].Value.ToString()) ? "0" : item.Cells["meterWeight"].Value.ToString()) / 1000;
  1626. item.Cells["meterBalanceWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterBalanceWeight"].Value.ToString()) ? "0" : item.Cells["meterBalanceWeight"].Value.ToString()) / 1000;
  1627. item.Cells["railwayFactoryWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["railwayFactoryWeight"].Value.ToString()) ? "0" : item.Cells["railwayFactoryWeight"].Value.ToString()) / 1000;
  1628. }
  1629. ClsControlPack.RefreshAndAutoSize(ultraGrid2);
  1630. }
  1631. }
  1632. catch (Exception ex)
  1633. {
  1634. MessageBox.Show("最近的一次计量数据数据查询,请联系系统维护人员处理!异常原因:\r\n" + ex);
  1635. l.WriteLog(13, "车号[" + strCarNo + "]一次计量数据查询框异常,异常原因:" + ex);
  1636. }
  1637. }
  1638. /// <summary>
  1639. /// 查询100条一次计量记录;衡二
  1640. /// </summary>
  1641. private void queryFirst2()
  1642. {
  1643. try
  1644. {
  1645. //最近的100条一次计量数据数据查询
  1646. dtRailwayActFirst2.Clear();
  1647. MeterWorkRailwayActFirst info = new MeterWorkRailwayActFirst();
  1648. info.pageNum = 1;
  1649. info.pageSize = 1000;
  1650. info.valueFlag = "4";
  1651. info.baseSpotNo = "00011"; //00011;白家嘴计检站静态衡二
  1652. if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间
  1653. info.createTime1 = dateTimeStart.Text;
  1654. if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间
  1655. info.createTime2 = dateTimeEnd.Text;
  1656. if (!string.IsNullOrEmpty(cbMaterial.Text))//物资名称
  1657. info.matterName = cbMaterial.Text.Trim();
  1658. if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号
  1659. info.railwayNo = txtCarNoSearch.Text.Trim();
  1660. RESTfulResult<List<MeterWorkRailwayActFirst>> RESTfulResultRecent = railwayActFirstService.doQuerySelectSta(info);
  1661. if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  1662. {
  1663. DataTable dts = dtRailwayActFirst2.Clone();
  1664. dts = RESTfulResultRecent.Data.ListToDataTable<MeterWorkRailwayActFirst>();
  1665. ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActFirst2, true);
  1666. foreach (var item in this.ultraGridFirst2.Rows)
  1667. {
  1668. item.Cells["meterWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterWeight"].Value.ToString()) ? "0" : item.Cells["meterWeight"].Value.ToString()) / 1000;
  1669. item.Cells["meterBalanceWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterBalanceWeight"].Value.ToString()) ? "0" : item.Cells["meterBalanceWeight"].Value.ToString()) / 1000;
  1670. item.Cells["railwayFactoryWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["railwayFactoryWeight"].Value.ToString()) ? "0" : item.Cells["railwayFactoryWeight"].Value.ToString()) / 1000;
  1671. }
  1672. ClsControlPack.RefreshAndAutoSize(ultraGridFirst2);
  1673. }
  1674. }
  1675. catch (Exception ex)
  1676. {
  1677. MessageBox.Show("最近的一次计量数据数据查询,请联系系统维护人员处理!异常原因:\r\n" + ex);
  1678. l.WriteLog(13, "车号[" + strCarNo + "]一次计量数据查询框异常,异常原因:" + ex);
  1679. }
  1680. }
  1681. /// <summary>
  1682. /// 查询100条结净计量记录
  1683. /// </summary>
  1684. private void queryActual()
  1685. {
  1686. try
  1687. {
  1688. //计量结净数据查询
  1689. MeterWorkRailwayActual mwca = new MeterWorkRailwayActual();
  1690. mwca.pageNum = 1;
  1691. mwca.pageSize = 1000;
  1692. mwca.flag = "0";
  1693. mwca.valueFlag = "0";
  1694. mwca.netSpot3No = "00010"; //00010;白家嘴计检站静态衡一
  1695. if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间
  1696. mwca.createTime1 = dateTimeStart.Text;
  1697. if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间
  1698. mwca.createTime2 = dateTimeEnd.Text;
  1699. if (!string.IsNullOrEmpty(cbMaterial.Text.Trim()))//物资名称
  1700. mwca.matterName = cbMaterial.Text.Trim();
  1701. if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号
  1702. mwca.railwayNo = txtCarNoSearch.Text.Trim();
  1703. dtRailwayActual.Clear();
  1704. RESTfulResult<List<MeterWorkRailwayActual>> RESTfulResultRecent = mwas.doQuerySelectView(mwca);
  1705. if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  1706. {
  1707. DataTable dts = dtRailwayActual.Clone();
  1708. if (RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  1709. {
  1710. dts = RESTfulResultRecent.Data.ListToDataTable<MeterWorkRailwayActual>();
  1711. }
  1712. ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActual, true);
  1713. foreach (var item in this.ultraGrid3.Rows)
  1714. {
  1715. item.Cells["grossWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["grossWeight"].Value.ToString()) ? "0" : item.Cells["grossWeight"].Value.ToString()) / 1000;
  1716. item.Cells["tareWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["tareWeight"].Value.ToString()) ? "0" : item.Cells["tareWeight"].Value.ToString()) / 1000;
  1717. item.Cells["netWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["netWeight"].Value.ToString()) ? "0" : item.Cells["netWeight"].Value.ToString()) / 1000;
  1718. }
  1719. ClsControlPack.RefreshAndAutoSize(ultraGrid3);
  1720. }
  1721. }
  1722. catch (Exception ex)
  1723. {
  1724. MessageBox.Show("净重数据查询出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex);
  1725. l.WriteLog(13, "结净数据查询框异常,异常原因:" + ex);
  1726. }
  1727. }
  1728. /// <summary>
  1729. /// 查询100条结净计量记录;衡二
  1730. /// </summary>
  1731. private void queryActual2()
  1732. {
  1733. try
  1734. {
  1735. //计量结净数据查询
  1736. MeterWorkRailwayActual mwca = new MeterWorkRailwayActual();
  1737. mwca.pageNum = 1;
  1738. mwca.pageSize = 1000;
  1739. mwca.flag = "0";
  1740. mwca.valueFlag = "0";
  1741. mwca.netSpot3No = "00011"; //00011;白家嘴计检站静态衡二
  1742. if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间
  1743. mwca.createTime1 = dateTimeStart.Text;
  1744. if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间
  1745. mwca.createTime2 = dateTimeEnd.Text;
  1746. if (!string.IsNullOrEmpty(cbMaterial.Text.Trim()))//物资名称
  1747. mwca.matterName = cbMaterial.Text.Trim();
  1748. if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号
  1749. mwca.railwayNo = txtCarNoSearch.Text.Trim();
  1750. dtRailwayActual2.Clear();
  1751. RESTfulResult<List<MeterWorkRailwayActual>> RESTfulResultRecent = mwas.doQuerySelectView(mwca);
  1752. if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  1753. {
  1754. DataTable dts = dtRailwayActual2.Clone();
  1755. if (RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0)
  1756. {
  1757. dts = RESTfulResultRecent.Data.ListToDataTable<MeterWorkRailwayActual>();
  1758. }
  1759. ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActual2, true);
  1760. foreach (var item in this.ultraGridActual2.Rows)
  1761. {
  1762. item.Cells["grossWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["grossWeight"].Value.ToString()) ? "0" : item.Cells["grossWeight"].Value.ToString()) / 1000;
  1763. item.Cells["tareWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["tareWeight"].Value.ToString()) ? "0" : item.Cells["tareWeight"].Value.ToString()) / 1000;
  1764. item.Cells["netWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["netWeight"].Value.ToString()) ? "0" : item.Cells["netWeight"].Value.ToString()) / 1000;
  1765. }
  1766. ClsControlPack.RefreshAndAutoSize(ultraGridActual2);
  1767. }
  1768. }
  1769. catch (Exception ex)
  1770. {
  1771. MessageBox.Show("净重数据查询出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex);
  1772. l.WriteLog(13, "结净数据查询框异常,异常原因:" + ex);
  1773. }
  1774. }
  1775. private int iTime = 0;
  1776. /// <summary>
  1777. /// 定时任务
  1778. /// </summary>
  1779. /// <param name="sender"></param>
  1780. /// <param name="e"></param>
  1781. private void timer1_Tick(object sender, EventArgs e)
  1782. {
  1783. try
  1784. {
  1785. #region 每2秒查一次接管数据,若接管则改变状态 controlIp
  1786. if (iTime % 2 == 0)
  1787. {
  1788. MeterBaseSpotInfoService service = new MeterBaseSpotInfoService();
  1789. RESTfulResult<List<MeterBaseSpotInfo>> rms = service.doQueryWf(new MeterBaseSpotInfo { validFlag = "1", spotTypeNo = "001002002" });
  1790. if (rms.Succeed && rms.Data != null && rms.Data.Count > 0)
  1791. {
  1792. PbStaticRailwayCache.sportInfos = rms.Data;
  1793. string str = "";
  1794. string cIp = "";
  1795. bool bRefash = false;
  1796. DataTable dt = dtJGPointInfo.Clone();
  1797. foreach (DataRow dr in dtJGPointInfo.Rows)
  1798. {
  1799. MeterBaseSpotInfo msi = rms.Data.Where(s => s.baseSpotNo == dr["baseSpotNo"].ToString().Trim()).FirstOrDefault();
  1800. if (msi != null && msi.baseSpotNo != null)
  1801. {
  1802. str = (string.IsNullOrEmpty(msi.controlIp) ? "未接管" : "已接管");
  1803. if (dr["validFlag"].ToString().Trim() != str)
  1804. {
  1805. dr["validFlag"] = str;
  1806. bRefash = true;
  1807. }
  1808. cIp = (string.IsNullOrEmpty(msi.controlIp) ? "" : msi.controlIp);
  1809. if (dr["controlIp"].ToString().Trim() != cIp)
  1810. {
  1811. dr["controlIp"] = cIp;
  1812. bRefash = true;
  1813. }
  1814. }
  1815. dt.Rows.Add(dr.ItemArray);
  1816. }
  1817. if (bRefash)
  1818. {
  1819. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true);
  1820. }
  1821. }
  1822. }
  1823. #endregion
  1824. #region 10分钟刷新一次数据
  1825. if (iTime < 600)
  1826. {
  1827. iTime++;
  1828. if (iTime == 600)
  1829. {
  1830. //*
  1831. try
  1832. {
  1833. //秤上没有车时,每隔10分钟获取一次基础数据
  1834. if (PbStaticRailwayCache.collect != null && PbStaticRailwayCache.collect.mainWgt < 1000) //大于1t才认为有车厢
  1835. {
  1836. if (bd.setBaseDb())
  1837. {
  1838. l.WriteLog(0, "十分钟获取基础数据成功");
  1839. }
  1840. else
  1841. {
  1842. l.WriteLog(0, "十分钟获取基础数据失败");
  1843. }
  1844. }
  1845. }
  1846. catch (Exception ex)
  1847. {
  1848. l.WriteLog(0, "十分钟获取基础数据失败:" + ex.Message);
  1849. }
  1850. //*/
  1851. }
  1852. }
  1853. else
  1854. {
  1855. iTime = 0;
  1856. }
  1857. #endregion
  1858. }
  1859. catch (Exception ex)
  1860. {
  1861. MessageBox.Show("timer1_Tick任务异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1862. l.WriteLog(13, "timer1_Tick任务异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex);
  1863. }
  1864. }
  1865. #region 10分钟刷新一次数据
  1866. /// <summary>
  1867. /// 使用定时任务,确保查询的时间间隔大于1s
  1868. /// </summary>
  1869. /// <param name="sender"></param>
  1870. /// <param name="e"></param>
  1871. private void timerSearchLimit_Tick(object sender, EventArgs e)
  1872. {
  1873. searchLimit++;
  1874. }
  1875. #endregion
  1876. /// <summary>
  1877. /// 测试按钮
  1878. /// </summary>
  1879. /// <param name="sender"></param>
  1880. /// <param name="e"></param>
  1881. private void button1_Click(object sender, EventArgs e)
  1882. {
  1883. bTest = !bTest;
  1884. }
  1885. /// <summary>
  1886. /// 预报数据双击事件
  1887. /// </summary>
  1888. /// <param name="sender"></param>
  1889. /// <param name="e"></param>
  1890. private void ultraGrid1_DoubleClick(object sender, EventArgs e)
  1891. {
  1892. int count = 0;
  1893. try
  1894. {
  1895. if (this.ultraGrid1 == null || this.ultraGrid1.Rows.Count == 0)
  1896. {
  1897. return;
  1898. }
  1899. UltraGridRow ugr = this.ultraGrid1.ActiveRow;
  1900. ugr.Appearance.BackColor = Color.GreenYellow; //选中后,设置背景颜色为绿色
  1901. count = 1;
  1902. if (ugr != null && !string.IsNullOrEmpty(txtCarNo.Text))
  1903. {
  1904. count = 2;
  1905. DataRow[] dr = dtRailwayScale.Select("predictionNo='" + ugr.Cells["predictionNo"].Text.Trim() + "'");
  1906. count = 3;
  1907. if (dr != null && dr.Length > 0)
  1908. {
  1909. count = 4;
  1910. preTack = dr[0].CreateItem<PreRailwayScale>();
  1911. count = 5;
  1912. ucStaticTrackMeterInfo1.setPreTrackInfo(preTack);
  1913. }
  1914. }
  1915. }
  1916. catch (Exception ex)
  1917. {
  1918. l.WriteLog(13, "frmMeterMain.ultraGrid1_DoubleClick方法异常【" + count + "】:" + ex.Message);
  1919. MessageBox.Show("预报数据双击事件异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex);
  1920. }
  1921. }
  1922. #endregion
  1923. /// <summary>
  1924. /// 选择的sheet页变了,则重新查询数据
  1925. /// </summary>
  1926. /// <param name="sender"></param>
  1927. /// <param name="e"></param>
  1928. private void uTab_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e)
  1929. {
  1930. //QueryCarNo(); //选择的sheet页变了,则重新查询数据
  1931. }
  1932. /// <summary>
  1933. /// 车牌变更事件
  1934. /// 车号变更后,界面的提示信息也需要清空
  1935. /// </summary>
  1936. /// <param name="sender"></param>
  1937. /// <param name="e"></param>
  1938. private void txtCarNo_TextChanged(object sender, EventArgs e)
  1939. {
  1940. try
  1941. {
  1942. //2021年4月10日 车号改变车号改变后,界面按钮颜色变为正常颜色;同时可以点击
  1943. //提示信息框清空
  1944. if (oldEditCarNo.Equals(txtCarNo.Text.Trim())) return;
  1945. //if (string.IsNullOrEmpty(txtCarNo.Text.Trim()) || txtCarNo.Text.Length == 0) { };
  1946. oldEditCarNo = txtCarNo.Text.Trim();
  1947. strCarNo = txtCarNo.Text.ToString().Trim(); //全局变量赋值
  1948. scModel1.carno = strCarNo;
  1949. scModel2.carno = strCarNo;
  1950. if (txtCarNo.Text.Length > 0 && txtCarNo.Text.Length != 7)
  1951. {
  1952. btnSave.BackColor = Color.DodgerBlue;
  1953. isLockWgt = false;//不锁定界面重量
  1954. setMsgInfo(txtMsgInfo, "", ""); //清空信息提示框
  1955. isEditCarNo = true;
  1956. }
  1957. //车号为7位的时候,查询一下数据
  1958. if (txtCarNo.Text.Length == 7)
  1959. {
  1960. searchLimit = 3; //置为3,可以强制查询
  1961. isLockWgt = false;//不锁定界面重量
  1962. strCarNo = txtCarNo.Text.ToString().Trim(); //全局变量赋值
  1963. scModel1.carno = strCarNo;
  1964. scModel2.carno = strCarNo;
  1965. btnSave.BackColor = Color.DodgerBlue;
  1966. //isEditCarNo = true; //车号为7位的时候,还是保持原来的标志位;当点击保存按钮后,不管是否保存成功,都讲isEditCarNo = false(自动获取车号状态);
  1967. QueryCarNo(); //车号有变化的时候,查询一次数据
  1968. }
  1969. }
  1970. catch (Exception ex)
  1971. {
  1972. MessageBox.Show("txtCarNo_TextChanged处理异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex);
  1973. l.WriteLog(13, "txtCarNo_TextChanged处理异常:" + ex.Message);
  1974. }
  1975. }
  1976. /// <summary>
  1977. /// 获取IP地址
  1978. /// </summary>
  1979. /// <returns></returns>
  1980. public string GetIP()
  1981. {
  1982. try
  1983. {
  1984. IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
  1985. IPAddress ipAddr = ipHost.AddressList[0];
  1986. return ipAddr.ToString();
  1987. }
  1988. catch (Exception ex)
  1989. {
  1990. Random rd = new Random();
  1991. MessageBox.Show("GetIP方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex);
  1992. l.WriteLog(13, "GetIP方法异常:" + ex.Message);
  1993. return rd.Next(99999, 999999) + "";
  1994. }
  1995. }
  1996. /// <summary>
  1997. /// 查询进一个月的计量数据
  1998. /// </summary>
  1999. /// <param name="sender"></param>
  2000. /// <param name="e"></param>
  2001. private void btnSearch_Click(object sender, EventArgs e)
  2002. {
  2003. if (searchLimit > 1)
  2004. {
  2005. QueryCarNo();//点击查询按钮查询数据
  2006. querySacle();//计量预报查询;查询所有有效的预报
  2007. queryFirst(); //查询100条一次计量记录
  2008. queryActual(); //查询100条二次计量记录
  2009. queryFirst2(); //查询100条一次计量记录
  2010. queryActual2(); //查询100条二次计量记录
  2011. }
  2012. else
  2013. {
  2014. MessageBox.Show("请 2 秒钟之后再点击查询操作!");
  2015. }
  2016. }
  2017. /// <summary>
  2018. /// 车号刷新按钮,点击后车号获取模式变为【自动】
  2019. /// </summary>
  2020. /// <param name="sender"></param>
  2021. /// <param name="e"></param>
  2022. private void btnAutoCarNo_Click(object sender, EventArgs e)
  2023. {
  2024. isLockWgt = false;//不锁定界面重量
  2025. isEditCarNo = false; //刷新后,自动获取车号
  2026. oldEditCarNo = ""; //车号验证中的旧车号
  2027. searchLimit = 3;
  2028. btnZZWgt.BackColor = Color.DodgerBlue;//刷新后,不再进行自重处理;
  2029. isUsedFactoryWeight = false;
  2030. btnSave.BackColor = Color.DodgerBlue; //刷新后,可以点击保存;
  2031. setMsgInfo(txtMsgInfo, "", ""); //清空信息提示框
  2032. QueryCarNo();//点击刷新后,重新查询一下数据
  2033. }
  2034. /// <summary>
  2035. /// 下拉框公共方法:初始化物资名称下拉框
  2036. /// </summary>
  2037. private void loadMaterialInfo()
  2038. {
  2039. try
  2040. {
  2041. RESTfulResult<List<MeterBaseMatterInfo>> rmx = matterService.doQueryListLike(new MeterBaseMatterInfo { validFlag = "1", pageNum = 1, pageSize = 9999 });
  2042. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  2043. {
  2044. dtMaterial = rmx.Data.ListToDataTable<MeterBaseMatterInfo>();
  2045. }
  2046. if (dtMaterial != null)
  2047. {
  2048. DataRow dr = dtMaterial.NewRow();
  2049. dtMaterial.Rows.InsertAt(dr, 0);
  2050. cbMaterial.DataSource = dtMaterial;
  2051. cbMaterial.DisplayMember = "matterName";
  2052. cbMaterial.ValueMember = "matterNo";
  2053. }
  2054. }
  2055. catch (Exception ex)
  2056. {
  2057. MessageBox.Show("品名初始化失败 " + ex.ToString());
  2058. }
  2059. }
  2060. /// <summary>
  2061. /// 下拉框公共方法:光标离开的接口
  2062. /// </summary>
  2063. /// <param name="sender"></param>
  2064. /// <param name="e"></param>
  2065. private void cbMaterial_Leave(object sender, EventArgs e)
  2066. {
  2067. try
  2068. {
  2069. if (show == null)
  2070. {
  2071. return;
  2072. }
  2073. if (show.Focused == false)
  2074. {
  2075. show.Visible = false;
  2076. }
  2077. }
  2078. catch (System.Exception exp)
  2079. {
  2080. //WriteLog(exp.Message);
  2081. }
  2082. }
  2083. /// <summary>
  2084. /// 下拉框公共方法:物资名称下拉框字符串改变事件
  2085. /// </summary>
  2086. /// <param name="sender"></param>
  2087. /// <param name="e"></param>
  2088. private void cbMaterial_TextChanged(object sender, EventArgs e)
  2089. {
  2090. try
  2091. {
  2092. if (show == null || this.cbMaterial.Focused == false)
  2093. {
  2094. return;
  2095. }
  2096. ChangeString(sender);
  2097. show.Location = new Point(220, 169); //设置焦点的位置
  2098. showLocation = 1;
  2099. int sign = 0;
  2100. if (cbMaterial.Text.Length == 0)
  2101. {
  2102. show.Visible = false;
  2103. }
  2104. else
  2105. {
  2106. for (int i = 0; i < cbMaterial.Text.Length; i++)
  2107. {
  2108. if (Char.IsLower(cbMaterial.Text[i]) == false && Char.IsUpper(cbMaterial.Text[i]) == false) //是否纯字母
  2109. {
  2110. sign = 1;
  2111. break;
  2112. }
  2113. }
  2114. if (sign == 0)
  2115. {
  2116. show.Items.Clear();
  2117. string text = cbMaterial.Text;
  2118. text = text.ToUpper();
  2119. DataRow[] matchRows = null;
  2120. matchRows = this.dtMaterial.Select("MATTER_NAME LIKE '%" + text + "%'"); //MNEMONIC_CODE 助记码
  2121. //if (matchRows.Length > 200)
  2122. //{
  2123. // return;
  2124. //}
  2125. foreach (DataRow dr in matchRows)
  2126. {
  2127. show.Items.Add(dr["MATTERNAME"].ToString());
  2128. }
  2129. show.Visible = true;
  2130. }
  2131. else
  2132. {
  2133. show.Visible = false;
  2134. }
  2135. }
  2136. }
  2137. catch (System.Exception exp)
  2138. {
  2139. //WriteLog(exp.Message);
  2140. }
  2141. }
  2142. /// <summary>
  2143. /// 下拉框公共方法:字符串变化
  2144. /// </summary>
  2145. /// <param name="sender"></param>
  2146. private void ChangeString(object sender)
  2147. {
  2148. if (sender is TextBox)
  2149. {
  2150. TextBox tb = (TextBox)sender;
  2151. for (int i = 0; i < tb.Text.Length; i++)
  2152. {
  2153. int isChange = 0;
  2154. char newChar = FullCodeToHalfCode(tb.Text[i], ref isChange);
  2155. if (isChange == 1)
  2156. {
  2157. tb.Text = tb.Text.Replace(tb.Text[i], newChar);
  2158. tb.SelectionStart = i + 1;
  2159. }
  2160. }
  2161. }
  2162. else if (sender is ComboBox)
  2163. {
  2164. ComboBox cb = (ComboBox)sender;
  2165. for (int i = 0; i < cb.Text.Length; i++)
  2166. {
  2167. int isChange = 0;
  2168. char newChar = FullCodeToHalfCode(cb.Text[i], ref isChange);
  2169. if (isChange == 1)
  2170. {
  2171. cb.Text = cb.Text.Replace(cb.Text[i], newChar);
  2172. cb.SelectionStart = i + 1;
  2173. }
  2174. }
  2175. }
  2176. }
  2177. /// <summary>
  2178. /// 下拉框公共方法:编码转换
  2179. /// </summary>
  2180. /// <param name="c"></param>
  2181. /// <param name="isChange"></param>
  2182. /// <returns></returns>
  2183. private char FullCodeToHalfCode(char c, ref int isChange)
  2184. {
  2185. //得到c的编码
  2186. byte[] bytes = System.Text.Encoding.Unicode.GetBytes(c.ToString());
  2187. int H = Convert.ToInt32(bytes[1]);
  2188. int L = Convert.ToInt32(bytes[0]);
  2189. //得到unicode编码
  2190. int value = H * 256 + L;
  2191. //是全角
  2192. if (value >= 65281 && value <= 65374)
  2193. {
  2194. int halfvalue = value - 65248;//65248是全半角间的差值。
  2195. byte halfL = Convert.ToByte(halfvalue);
  2196. bytes[0] = halfL;
  2197. bytes[1] = 0;
  2198. isChange = 1;
  2199. }
  2200. else if (value == 12288)
  2201. {
  2202. int halfvalue = 32;
  2203. byte halfL = Convert.ToByte(halfvalue);
  2204. bytes[0] = halfL;
  2205. bytes[1] = 0;
  2206. isChange = 1;
  2207. }
  2208. else
  2209. {
  2210. isChange = 0;
  2211. return c;
  2212. }
  2213. //将bytes转换成字符
  2214. string ret = System.Text.Encoding.Unicode.GetString(bytes);
  2215. return Convert.ToChar(ret);
  2216. }
  2217. /// <summary>
  2218. /// 下拉框公共方法:双击选中智能输入列表中的内容
  2219. /// </summary>
  2220. /// <param name="sender"></param>
  2221. /// <param name="e"></param>
  2222. private void show_DoubleClick(object sender, EventArgs e)
  2223. {
  2224. if (show.SelectedIndex >= 0 && show.SelectedIndex >= 0)
  2225. {
  2226. if (showLocation == 1)
  2227. {
  2228. this.cbMaterial.Text = show.Items[show.SelectedIndex].ToString();
  2229. this.cbMaterial.Focus();
  2230. }
  2231. show.Visible = false;
  2232. }
  2233. }
  2234. /// <summary>
  2235. /// 下拉框公共方法:键盘按钮事件
  2236. /// </summary>
  2237. /// <param name="sender"></param>
  2238. /// <param name="e"></param>
  2239. private void show_KeyPress(object sender, KeyPressEventArgs e)
  2240. {
  2241. if (e.KeyChar == 13 && show.SelectedIndex >= 0)
  2242. {
  2243. if (showLocation == 1)
  2244. {
  2245. this.cbMaterial.Text = show.Items[show.SelectedIndex].ToString();
  2246. this.cbMaterial.Focus();
  2247. }
  2248. show.Visible = false;
  2249. }
  2250. else if ((e.KeyChar >= 65 && e.KeyChar <= 90) || (e.KeyChar >= 97 && e.KeyChar <= 122))
  2251. {
  2252. if (showLocation == 1)
  2253. {
  2254. show.Items.Clear();
  2255. this.cbMaterial.Focus();
  2256. string text = this.cbMaterial.Text + e.KeyChar;
  2257. this.cbMaterial.Text = text;
  2258. this.cbMaterial.SelectionStart = cbMaterial.Text.Length;
  2259. }
  2260. }
  2261. }
  2262. /// <summary>
  2263. /// 下拉框公共方法: 输入框失去焦点事件
  2264. /// </summary>
  2265. /// <param name="sender"></param>
  2266. /// <param name="e"></param>
  2267. private void show_Leave(object sender, EventArgs e)
  2268. {
  2269. show.Hide();
  2270. }
  2271. /// <summary>
  2272. /// 设置字段显示的别名
  2273. /// </summary>
  2274. /// <param name="str"></param>
  2275. /// <returns></returns>
  2276. public static ValueList GetValueListByString(string str)
  2277. {
  2278. ValueList vlist = new ValueList();
  2279. try
  2280. {
  2281. string[] strs = str.Split(',');
  2282. for (int i = 0; i < strs.Length; i++)
  2283. {
  2284. string[] strss = strs[i].Split(':');
  2285. vlist.ValueListItems.Add(strss[0], strss[1]);
  2286. }
  2287. }
  2288. catch (Exception ex)
  2289. {
  2290. }
  2291. return vlist;
  2292. }
  2293. /// <summary>
  2294. ///
  2295. /// </summary>
  2296. /// <param name="strCode"></param>
  2297. /// <returns></returns>
  2298. public static string GetTrackType(string strCode)
  2299. {
  2300. string valueFlag = ""; //状态(0:未配车;1:未使用;2:已使用;3:已作废;4:正使用)
  2301. switch (strCode)
  2302. {
  2303. case "0": valueFlag = "未配车"; break;
  2304. case "1": valueFlag = "未使用"; break;
  2305. case "2": valueFlag = "已使用"; break;
  2306. case "3": valueFlag = "已作废"; break;
  2307. case "4": valueFlag = "正使用"; break;
  2308. default:
  2309. break;
  2310. }
  2311. return valueFlag;
  2312. }
  2313. }
  2314. }