Form2.cs 80 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Infragistics.Win.UltraWinGrid;
  4. using MeterConditionLibrary;
  5. using MeterModuleLibrary;
  6. using MeterPlugInLibrary;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows.Forms;
  16. using JC_MeasuringSystem;
  17. using MeterSceneLibrary;
  18. using Infragistics.Win;
  19. using MeterModelLibrary;
  20. namespace CarRemoteMeter
  21. {
  22. public partial class Form2 : Form
  23. {
  24. //图片控制器含图片压缩及上传sftp
  25. ImageControl imageControl = new ImageControl();
  26. /// <summary>
  27. /// 基础数据载入
  28. /// </summary>
  29. private BaseDbCls bd = new BaseDbCls();
  30. Log l = Log.GetInstance();
  31. string userId = "", userName = "";
  32. CoreAppUser appUser = null;
  33. //实时表数据采集
  34. DataCollectionControl collection = new DataCollectionControl();
  35. bool bCollectionStart = false;
  36. #region 服务查询
  37. //预报查询
  38. PreTrackScaleService service = new PreTrackScaleService();
  39. PreTrackScale preTack = null;
  40. //与监控界面对接的表
  41. MeterWorkMonitorService monitorService = new MeterWorkMonitorService();
  42. //实时在线写入,每隔2秒一次
  43. MeterWorkOnlineService onlineService = new MeterWorkOnlineService();
  44. //验证是否可留期限皮
  45. validTermTareCar termTareCar = new validTermTareCar();
  46. //留期限皮操作
  47. MeterBaseTermTareDataService termTareDate = new MeterBaseTermTareDataService();
  48. //内倒业务处理
  49. InnerRemoteMeter inner = new InnerRemoteMeter();
  50. //非内倒业务处理
  51. SceneControl scene = new SceneControl();
  52. //历史皮重数据
  53. MeterBaseHisTareDataService meterBaseHisTareData = new MeterBaseHisTareDataService();
  54. //计量实绩
  55. MeterWorkCarActualService mwas = new MeterWorkCarActualService();
  56. //校秤记录
  57. MeterWorkCalibrationMainService mainService = new MeterWorkCalibrationMainService();
  58. //附加重量
  59. PerAddWeightService perAddWeight = new PerAddWeightService();
  60. //一次计量重量
  61. MeterWorkCarActualFirst first = null;
  62. MeterMonitorWeightService monitorWeightService = new MeterMonitorWeightService();
  63. string sPreNo = ""; //记录重量曲线变化
  64. int preWgt = 0;//前一次重量,用于重量曲线
  65. #endregion
  66. string preCarNo = "";//上次车号
  67. string editCarNo = "";//修正车号
  68. public Form2()
  69. {
  70. InitializeComponent();
  71. }
  72. private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  73. {
  74. try
  75. {
  76. timer1.Stop();
  77. timer2.Stop();
  78. }
  79. catch { }
  80. try
  81. {
  82. Clean();
  83. }
  84. catch { }
  85. try
  86. {
  87. imageControl.Stop();
  88. }
  89. catch { }
  90. }
  91. private void Form2_Load(object sender, EventArgs e)
  92. {
  93. //setMsgInfo(btnInnerQuery, "false", "1");
  94. setMsgInfo(btnCheck, "false", "1");
  95. setMsgInfo(btnSave, "false", "1");
  96. setMsgInfo(btnTareWgt, "false", "1");
  97. setMsgInfo(btnCheckBalance, "false", "1");
  98. ValueList vlist = new ValueList();
  99. vlist.ValueListItems.Add("0", "批次预报");
  100. vlist.ValueListItems.Add("1", "单次预报");
  101. vlist.ValueListItems.Add("2", "联运预报");
  102. vlist.ValueListItems.Add("3", "分检预报");
  103. ultraGridYb.DisplayLayout.Bands[0].Columns["predictionType"].ValueList = vlist;
  104. timer1.Start();
  105. collection.EventDataCollectionArgs += new EventDataCollection(EventData);//数据采集
  106. userId = ((ST_MainForm)(this.MdiParent)).UserID;
  107. userName = ((ST_MainForm)(this.MdiParent)).UserName;
  108. appUser = ((ST_MainForm)(this.MdiParent)).AppUser;
  109. if (bd.setBaseDb() && bd.getBaseDb())
  110. {
  111. timer2.Start();
  112. lbPointName.Text = "";
  113. lbMeterMan.Text = userName;
  114. PbCache.isNotValid = true;
  115. imageControl.Start();
  116. }
  117. else
  118. {
  119. MessageBox.Show("基础数据载入失败,请稍后重试,或联系管理员");
  120. this.Close();
  121. }
  122. //txtCarNo.LostFocus += new EventHandler(txtCarNo_KeyDown);
  123. lbWgt.LostFocus+= new EventHandler(lbWgt_ValueChanged);
  124. }
  125. #region 数据采集部分
  126. int iCounts = 0; //计数器
  127. bool iWgtChange = true; //重量初次大于500
  128. //车号修正
  129. CarNoModfiy modfiy = new CarNoModfiy();
  130. /// <summary>
  131. /// 数据采集
  132. /// </summary>
  133. private void EventData(object o, DataCollectionArgs e)
  134. {
  135. //这里每隔0.5秒执行一次
  136. try
  137. {
  138. if (iCounts < 1200)
  139. {
  140. iCounts++;
  141. }
  142. else
  143. {
  144. iCounts = 0;
  145. try
  146. {
  147. //秤上没有车时,每隔10分钟获取一次基础数据
  148. if (e.weight < 500)
  149. {
  150. editCarNo = "";
  151. preCarNo = "";
  152. if (bd.setBaseDb())
  153. {
  154. l.WriteLog(0, "十分钟获取基础数据成功");
  155. }
  156. else
  157. {
  158. l.WriteLog(0, "十分钟获取基础数据失败");
  159. }
  160. }
  161. }
  162. catch (Exception ex)
  163. {
  164. l.WriteLog(0, "十分钟获取基础数据失败:" + ex.Message);
  165. }
  166. }
  167. #region
  168. PbCache.collect.pointid = PbCache.sportInfo.baseSpotNo;
  169. #if DEBUG
  170. //*
  171. if (iCounts > 10 && bTest)
  172. {
  173. bTest = false;
  174. Random rd = new Random();
  175. e.carno = "湘A01234";
  176. e.weight = iTestWgt;//rd.Next(40000, 50000);
  177. }
  178. else
  179. {
  180. e.weight = iTestWgt;
  181. }
  182. //*/
  183. #endif
  184. PbCache.collect.weight = e.weight;
  185. PbCache.collect.weightStatus = e.weightStatus;
  186. PbCache.collect.parkStatus = e.parkStatus;
  187. PbCache.collect.datetime = e.datetime;
  188. PbCache.collect.licType = e.licType;
  189. #region 车号设置
  190. getFocusInfo(txtCarNo);
  191. if (!isFocus) //光标不在里面
  192. {
  193. if (strCbCarNo == "" || strTxtCarNo == "")
  194. {
  195. PbCache.collect.carno = e.carno;
  196. if (!string.IsNullOrEmpty(e.carno) && e.carno.Length > 1)
  197. {
  198. if (preCarNo == "")
  199. {
  200. preCarNo = e.carno;
  201. string methods = "";
  202. for (int i = 0; i <= PbCache.monitor.carMonitorLvl; i++)
  203. {
  204. methods += "CarNoTrustCorrect" + i + ",";
  205. }
  206. editCarNo = modfiy.CarNoCorrect(e.carno, methods.Substring(0, methods.Length - 1));
  207. }
  208. e.carno = editCarNo;
  209. setTxtCarNo(e.carno.Substring(1, e.carno.Length - 1));
  210. setCbCarNoInfo(e.carno.Substring(0, 1));
  211. QueryCarNo();
  212. }
  213. }
  214. else
  215. {
  216. if (!flagCarNo && (strCbCarNo + strTxtCarNo) != e.carno) //没有按回车,且车号不等于的时候
  217. {
  218. if (!string.IsNullOrEmpty(e.carno) && e.carno.Length > 1)
  219. {
  220. if (preCarNo == "" || preCarNo != e.carno)
  221. {
  222. preCarNo = e.carno;
  223. string methods = "";
  224. for (int i = 0; i <= PbCache.monitor.carMonitorLvl; i++)
  225. {
  226. methods += "CarNoTrustCorrect" + i + ",";
  227. }
  228. editCarNo = modfiy.CarNoCorrect(e.carno, methods.Substring(0, methods.Length - 1));
  229. }
  230. e.carno = editCarNo;
  231. PbCache.collect.carno = e.carno;
  232. setTxtCarNo(e.carno.Substring(1, e.carno.Length - 1));
  233. setCbCarNoInfo(e.carno.Substring(0, 1));
  234. QueryCarNo();
  235. }
  236. }
  237. else if (flagCarNo)
  238. {
  239. PbCache.collect.carno = strCbCarNo + strTxtCarNo;
  240. }
  241. }
  242. }
  243. #endregion
  244. //重量大于500的情况下
  245. if (e.weight > 500)
  246. {
  247. if (!PbCache.isLockFrm)
  248. {
  249. ucWeightT1.setWgt(PbCache.collect.weight);
  250. ucWeightT1.setStable(PbCache.collect.weightStatus != 1 ? true : false);
  251. ucWeightT1.setExceed(PbCache.collect.weight > PbCache.range.upperRange ? false : true);
  252. PbCache.addWgt = dAddWgt;
  253. if (first != null)
  254. {
  255. if (PbCache.collect.weight < first.meterWeight.Value)
  256. {
  257. setMsgInfo(txtTare, PbCache.collect.weight + "", "");
  258. setMsgInfo(txtGroess, first.meterWeight.Value + "", "");
  259. }
  260. else
  261. {
  262. setMsgInfo(txtGroess, PbCache.collect.weight + "", "");
  263. setMsgInfo(txtTare, first.meterWeight.Value + "", "");
  264. }
  265. double dbAddWgt = 0;
  266. if (first.addWeight != null && first.addWeight.Value > 0)
  267. {
  268. dbAddWgt = first.addWeight.Value;
  269. }
  270. else
  271. {
  272. dbAddWgt = dAddWgt;
  273. }
  274. //PbCache.addWgt = dbAddWgt;
  275. setMsgInfo(txtNet, Math.Abs(PbCache.collect.weight - first.meterWeight.Value) - dbAddWgt + "", "");
  276. }
  277. }
  278. if (iWgtChange)
  279. {
  280. setMsgInfo(btnInnerQuery, "true", "1");
  281. setMsgInfo(btnSave, "true", "1");
  282. setMsgInfo(btnTareWgt, "true", "1");
  283. setMsgInfo(btnCheckBalance, "true", "1");
  284. setMsgInfo(btnCheck, "true", "1");
  285. setReadOnlyInfo(txtPREDICTION_NO, "false", "0");
  286. }
  287. if (PbCache.dtStartTime == null)
  288. PbCache.dtStartTime = DateTime.Now;
  289. //每隔1秒刷一次计量实时监控表数据值
  290. if (iCounts % 2 == 0)
  291. {
  292. #region 每隔1秒写入一次重量曲线
  293. try
  294. {
  295. if (preWgt != e.weight)
  296. {
  297. sPreNo = PbCache.sportInfo.baseSpotNo + DateTime.Now.ToString("yyyyMMddHHmmssfff");
  298. monitorWeightService.doAddWf(new MeterMonitorWeight
  299. {
  300. weightNo = sPreNo,
  301. baseSpotNo = PbCache.sportInfo.baseSpotNo,
  302. baseSpotName = PbCache.sportInfo.baseSpotName,
  303. collectWeight = e.weight + "",
  304. collectStartTime = PbCache.dtStartTime.Value,
  305. collectEndTime = DateTime.Now,
  306. spotTypeNo = "001002001",
  307. spotTypeName = "汽车衡",
  308. actualFirstNo = PbCache.actualFirstNo
  309. });
  310. }
  311. else
  312. {
  313. if (!string.IsNullOrEmpty(sPreNo))
  314. {
  315. monitorWeightService.doUpdateWf(new MeterMonitorWeight
  316. {
  317. weightNo = sPreNo,
  318. collectEndTime = DateTime.Now
  319. });
  320. }
  321. }
  322. }
  323. catch { }
  324. #endregion
  325. switch (e.parkStatus)
  326. {
  327. case 1:
  328. setPicQRed(true);
  329. setPicHRed(false);
  330. break;
  331. case 2:
  332. setPicQRed(false);
  333. setPicHRed(true);
  334. break;
  335. case 3:
  336. setPicQRed(true);
  337. setPicHRed(true);
  338. break;
  339. default:
  340. setPicQRed(false);
  341. setPicHRed(false);
  342. break;
  343. }
  344. }
  345. iWgtChange = false;
  346. }
  347. else
  348. {
  349. if (flagStart && strIsRemote == "0")
  350. {
  351. Clean();
  352. }
  353. else
  354. {
  355. CleanForm();
  356. }
  357. }
  358. #endregion
  359. }
  360. catch (Exception ex)
  361. {
  362. l.WriteLog(0, "frmMeterMain.EventData异常2:" + ex.Message);
  363. }
  364. }
  365. #endregion
  366. #region 从接管到未的时候清理下数据
  367. //清理一次数据
  368. private void Clean()
  369. {
  370. if (PbCache.sportInfo == null || string.IsNullOrEmpty(PbCache.sportInfo.baseSpotNo)) return;
  371. MeterWorkMonitor mwmUpdate = new MeterWorkMonitor
  372. {
  373. pointNo = PbCache.sportInfo.baseSpotNo,
  374. validWgt = "1",
  375. validCarno = "1",
  376. validTareTime = "1",
  377. validMatTime = "1",
  378. validTimeInterval = "1",
  379. validParkStatus = "1",
  380. validExceedWgt = "1",
  381. validPredictionDiff = "1",
  382. setCar = "",
  383. rfidCar = "",
  384. photoCar = "",
  385. scanCar = "",
  386. editCar = "",
  387. carErr = "0",
  388. wgtErr = "0",
  389. stopOverTime = "0",
  390. msgInfo = "",
  391. //isTakeOver = "0",
  392. //userNo = "",
  393. ledWriter = ""
  394. };
  395. if (bVoice)
  396. {
  397. mwmUpdate.isHelp = "0";
  398. }
  399. //如果为1则是监控点击的远程计量,这个时候是不能清理的
  400. if (strIsRemote == "0")
  401. {
  402. mwmUpdate.userNo = "";
  403. mwmUpdate.isTakeOver = "0";
  404. }
  405. RESTfulResult<string> rm = monitorService.doUpdateWf(mwmUpdate);
  406. if (!rm.Succeed)
  407. {
  408. l.WriteLog(5, "初始化远程计量信息失败");
  409. }
  410. else
  411. {
  412. RESTfulResult<string> rmx = onlineService.doSaveWf(new MeterWorkOnline { userId = userId, workFlag = "0" });
  413. if (rmx.Succeed)
  414. {
  415. CleanForm();
  416. CleanCloseDb();
  417. }
  418. else
  419. {
  420. l.WriteLog(5, "初始化在线接管状态失败");
  421. }
  422. }
  423. }
  424. //如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  425. public void setMsgInfo(Control control, string ResultMessage, string sType)
  426. {
  427. setMsgMsg(control, ResultMessage, sType);
  428. }
  429. /// <summary>
  430. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable 3为check
  431. /// </summary>
  432. /// <param name="control"></param>
  433. /// <param name="ResultMessage"></param>
  434. /// <param name="sType"></param>
  435. private void setMsgMsg(Control control, string ResultMessage, string sType)
  436. {
  437. if (control.InvokeRequired)
  438. {
  439. Action<Control, string, string> action = new Action<Control, string, string>(setMsgInfo);
  440. Invoke(action, new object[] { control, ResultMessage, sType });
  441. }
  442. else
  443. {
  444. if (ResultMessage != "true" && ResultMessage != "false")
  445. {
  446. control.Text = ResultMessage == null ? "" : ResultMessage.Replace("请远程求助", "").Replace(",请点击语音求助", "");
  447. }
  448. else
  449. {
  450. switch (sType)
  451. {
  452. case "1":
  453. control.Enabled = ResultMessage == "true" ? true : false;
  454. ; break;
  455. case "2":
  456. control.Visible = ResultMessage == "true" ? true : false;
  457. ; break;
  458. case "3":
  459. ((CheckBox)control).Checked = ResultMessage == "true" ? true : false;
  460. break;
  461. default: break;
  462. }
  463. }
  464. }
  465. }
  466. public void setListBoxInfo(ListBox control)
  467. {
  468. setListBoxMsg(control);
  469. }
  470. /// <summary>
  471. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  472. /// </summary>
  473. /// <param name="control"></param>
  474. /// <param name="ResultMessage"></param>
  475. /// <param name="sType"></param>
  476. private void setListBoxMsg(ListBox control)
  477. {
  478. if (control.InvokeRequired)
  479. {
  480. Action<ListBox> action = new Action<ListBox>(setListBoxInfo);
  481. Invoke(action, new object[] { control });
  482. }
  483. else
  484. {
  485. control.Items.Clear();
  486. }
  487. }
  488. /// <summary>
  489. /// 设置readonly
  490. /// </summary>
  491. /// <param name="control"></param>
  492. /// <param name="sType">0为textbox 1为button</param>
  493. public void setReadOnlyInfo(Control control, string resultMsg, string sType)
  494. {
  495. setReadOnlyMsg(control, resultMsg, sType);
  496. }
  497. /// <summary>
  498. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  499. /// </summary>
  500. /// <param name="control"></param>
  501. /// <param name="ResultMessage"></param>
  502. /// <param name="sType"></param>
  503. private void setReadOnlyMsg(Control control, string resultMsg, string sType)
  504. {
  505. if (control.InvokeRequired)
  506. {
  507. Action<Control, string, string> action = new Action<Control, string, string>(setReadOnlyInfo);
  508. Invoke(action, new object[] { control, resultMsg, sType });
  509. }
  510. else
  511. {
  512. switch (sType)
  513. {
  514. case "0":
  515. ((TextBox)control).ReadOnly = resultMsg == "true" ? true : false;
  516. break;
  517. }
  518. }
  519. }
  520. public void setPanelRemovenfo(Panel control)
  521. {
  522. setPanelRemoveMsg(control);
  523. }
  524. /// <summary>
  525. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  526. /// </summary>
  527. /// <param name="control"></param>
  528. /// <param name="ResultMessage"></param>
  529. /// <param name="sType"></param>
  530. private void setPanelRemoveMsg(Panel p)
  531. {
  532. if (p.InvokeRequired)
  533. {
  534. Action<Panel> action = new Action<Panel>(setPanelRemovenfo);
  535. Invoke(action, new object[] { p });
  536. }
  537. else
  538. {
  539. for (int i = p.Controls.Count - 1; i >= 0; i--)
  540. {
  541. p.Controls.RemoveAt(i);
  542. }
  543. }
  544. }
  545. public void setGridInfo(UltraGrid control, DataTable dt1, DataTable dt2)
  546. {
  547. setGridMsg(control, dt1, dt2);
  548. }
  549. /// <summary>
  550. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  551. /// </summary>
  552. /// <param name="control"></param>
  553. /// <param name="ResultMessage"></param>
  554. /// <param name="sType"></param>
  555. private void setGridMsg(UltraGrid p, DataTable dt1, DataTable dt2)
  556. {
  557. if (p.InvokeRequired)
  558. {
  559. Action<UltraGrid, DataTable, DataTable> action = new Action<UltraGrid, DataTable, DataTable>(setGridInfo);
  560. Invoke(action, new object[] { p, dt1, dt2 });
  561. }
  562. else
  563. {
  564. ClsControlPack.CopyDataToDatatable(ref dt1, ref dt2, true);
  565. ClsControlPack.RefreshAndAutoSize(p);
  566. }
  567. }
  568. private void CleanCloseDb()
  569. {
  570. //*****************这里需要将语音对讲/视频都关闭*******************
  571. //退出语音登录
  572. try
  573. {
  574. VoiceClose();
  575. IPVideoClose();
  576. }
  577. catch (Exception ex)
  578. {
  579. }
  580. ls = null;
  581. //*****************************************************************
  582. flagCarNo = false;
  583. setMsgInfo(plImgShow, "false", "2");
  584. DataTable dtJld = dtJGPointInfo.Clone();
  585. setGridInfo(ultraGridPW, dtJld, this.dtJGPointInfo);
  586. setMsgInfo(lbPointName, "", "");
  587. setMsgInfo(lbMeterMan, "", "");
  588. PbCache.Load();
  589. PbCache.sportInfo = null;
  590. PbCache.videoInfo = null;
  591. PbCache.videoChild = null;
  592. CarCache.cameraShots = null;
  593. PbCache.range = null;
  594. PbCache.relations = null;
  595. setPanelRemovenfo(panel1);
  596. bCollectionStart = false;
  597. //关闭采集进程
  598. collection.Stop();
  599. }
  600. private void CleanForm()
  601. {
  602. editCarNo = "";
  603. preCarNo = "";
  604. sPreNo = "";
  605. preWgt = 0;
  606. ls = null;
  607. preTack = null;
  608. iWgtChange = true;
  609. PbCache.dtStartTime = null;
  610. PbCache.isTermTare = false;
  611. PbCache.addWgt = 0;
  612. dAddWgt = 0;
  613. first = null;
  614. PbCache.isLockFrm = false;
  615. PbCache.lockWgt = 0;
  616. PbCache.lockCarNo = "";
  617. strCbCarNo = "";
  618. strTxtCarNo = "";
  619. strType = "0";
  620. PbCache.ResultMessage = "";
  621. setMsgInfo(btnInnerQuery, "false", "1");
  622. setMsgInfo(btnCheck, "false", "1");
  623. setMsgInfo(btnSave, "false", "1");
  624. setMsgInfo(btnTareWgt, "false", "1");
  625. setMsgInfo(btnCheckBalance, "false", "1");
  626. setMsgInfo(txtGroess, "", "");
  627. setMsgInfo(txtTare, "", "");
  628. setMsgInfo(txtNet, "", "");
  629. setMsgInfo(lbWgt, "", "");
  630. setMsgInfo(txtPage, "", "");
  631. setTxtCarNoInfo("");
  632. setCbCarNoInfo("");
  633. ucWeightT1.setWgt(0);
  634. ucWeightT1.setStable(true);
  635. ucWeightT1.setExceed(true);
  636. setPicQRed(false);
  637. setPicHRed(false);
  638. setPreTrackInfo(new PreTrackScale());
  639. setHistWgt(null, null);
  640. setReadOnlyInfo(txtPREDICTION_NO, "true", "0");
  641. setListBoxInfo(lb1);
  642. setListBoxInfo(lb2);
  643. setMsgInfo(txtMsgInfo, "", "");
  644. DataTable dtYb = dtPreTrackScale.Clone();
  645. setGridInfo(ultraGridYb, dtYb, this.dtPreTrackScale);
  646. DataTable dtSj = dataTable1.Clone();
  647. setGridInfo(ultraGridSj, dtSj, this.dataTable1);
  648. DataTable dtQxp = dtTare.Clone();
  649. setGridInfo(ultraGridTare, dtQxp, this.dtTare);
  650. DataTable dtJl = dtCalibration.Clone();
  651. setGridInfo(ultraGridJl, dtJl, this.dtCalibration);
  652. }
  653. #endregion
  654. #region button按钮事件
  655. bool flagStart = true;
  656. /// <summary>
  657. /// 自动派位
  658. /// </summary>
  659. private void btnStart_Click(object sender, EventArgs e)
  660. {
  661. if (btnStart.Text == "自动派位")
  662. {
  663. if (PbCache.sportInfo != null)
  664. {
  665. btnStart.BackColor = Color.Red;
  666. btnStart.Text = "取消接管";
  667. timer2.Stop();
  668. flagStart = false;
  669. }
  670. }
  671. else
  672. {
  673. strIsRemote = "0";
  674. if (PbCache.sportInfo != null)
  675. {
  676. Clean();
  677. }
  678. try
  679. {
  680. bCollectionStart = false;
  681. btnStart.BackColor = Color.DodgerBlue;
  682. btnStart.Text = "自动派位";
  683. timer2.Start();
  684. flagStart = true;
  685. }
  686. catch { }
  687. }
  688. }
  689. bool bGQ = false;
  690. private void btnGQ_Click(object sender, EventArgs e)
  691. {
  692. if (btnGQ.Text == "挂起")
  693. {
  694. btnGQ.Text = "取消挂起";
  695. btnGQ.BackColor = Color.Red;
  696. bGQ = true;
  697. btnStart.Enabled = false;
  698. btnStart.BackColor = Color.DodgerBlue;
  699. btnStart.Text = "自动派位";
  700. timer2.Stop();
  701. flagStart = false;
  702. strIsRemote = "0";
  703. if (PbCache.sportInfo != null)
  704. {
  705. Clean();
  706. }
  707. try
  708. {
  709. //让用户处于掉线状态
  710. string sql = @"update Meter_Work_Online set last_time=sysdate-1 where user_id='" + appUser.userid + "'";
  711. PbModelDbService<string> pb = new PbModelDbService<string>();
  712. RESTfulResult<string> rm = pb.executeSqlDataWf(sql);
  713. }
  714. catch { }
  715. }
  716. else
  717. {
  718. bCollectionStart = false;
  719. btnGQ.Text = "挂起"; //改为非挂起状态
  720. btnGQ.BackColor = Color.DodgerBlue;
  721. bGQ = false;
  722. btnStart.Enabled = true;
  723. timer2.Start();
  724. flagStart = true;
  725. }
  726. }
  727. List<string> ls = new List<string>();
  728. double dAddWgt = 0;
  729. /// <summary>
  730. /// 选择器具
  731. /// </summary>
  732. private void btnCheck_Click(object sender, EventArgs e)
  733. {
  734. double dWgt = 0;
  735. //if (PbCache.collect.weightStatus == 0 && PbCache.collect.weight > 500)
  736. {
  737. frmApplianceCheck fac = new frmApplianceCheck();
  738. fac.ltAddWeightNo = ls == null ? null : ls;
  739. if (fac.ShowDialog() == DialogResult.OK)
  740. {
  741. dAddWgt = 0;
  742. lbUTENSIL_UTENSIL_NAME.Text = "";
  743. lbWgt.Text = "0";
  744. lb1.Items.Clear();
  745. lb2.Items.Clear();
  746. DataTable dt = fac.dtChecked;
  747. ls = fac.ltAddWeightNo;
  748. if (dt != null && dt.Rows.Count > 0)
  749. {
  750. foreach (DataRow dr in dt.Rows)
  751. {
  752. if (lbUTENSIL_UTENSIL_NAME.Text == "")
  753. {
  754. lbUTENSIL_UTENSIL_NAME.Text = dr["utensilUtensilName"].ToString();
  755. }
  756. if (lb1.Items.Count < 7)
  757. {
  758. lb1.Items.Add(dr["utensilNo"].ToString());
  759. }
  760. else
  761. {
  762. lb2.Items.Add(dr["utensilNo"].ToString());
  763. }
  764. dWgt += Convert.ToDouble(dr["utensilWeight"].ToString());
  765. }
  766. lbWgt.Text = dWgt + "";
  767. dAddWgt = dWgt;
  768. }
  769. }
  770. if (txtGroess.Text.Trim() != "" && txtTare.Text.Trim() != "")
  771. {
  772. txtNet.Text = (Convert.ToInt32(txtGroess.Text.Trim()) - Convert.ToInt32(txtTare.Text.Trim()) - dWgt) + "";
  773. }
  774. }
  775. }
  776. #region 对讲代码
  777. /// <summary>
  778. /// 硬盘录像机登录
  779. /// </summary>
  780. DhCameraShot cameraShotMain = new DhCameraShot();
  781. /// <summary>
  782. /// 必须先打开连接
  783. /// </summary>
  784. private bool GetIPVideo(MeterBaseVideoinfo video)
  785. {
  786. try
  787. {
  788. cameraShotMain.ip = video.videoip;
  789. cameraShotMain.port = video.vdoPort;
  790. cameraShotMain.uid = video.vdoUser;
  791. cameraShotMain.pwd = video.vdoPwd;
  792. cameraShotMain.Connection();
  793. }
  794. catch (Exception ex)
  795. {
  796. setMsgInfo(txtMsgInfo, "视频连接打开失败:" + ex.Message, "");
  797. //MessageBox.Show(ex.Message);
  798. return false;
  799. }
  800. return true;
  801. }
  802. bool bVoice = false;
  803. /// <summary>
  804. /// 必须先打开视频,然后再打开语音
  805. /// </summary>
  806. private void VoiceOpen()
  807. {
  808. try
  809. {
  810. if (cameraShotMain.StartTalk())
  811. {
  812. btnOpenVoice.Text = "关闭对讲";
  813. bVoice = true;
  814. }
  815. }
  816. catch (Exception ex)
  817. {
  818. setMsgInfo(txtMsgInfo, "打开语音失败:" + ex.Message, "");
  819. //MessageBox.Show("打开语音失败:" + ex.Message);
  820. }
  821. }
  822. /// <summary>
  823. /// 关闭语音对讲
  824. /// </summary>
  825. private void VoiceClose()
  826. {
  827. try
  828. {
  829. if (cameraShotMain.StopTalk())
  830. {
  831. setMsgInfo(btnOpenVoice, "打开对讲", "");
  832. bVoice = false;
  833. }
  834. }
  835. catch (Exception ex)
  836. {
  837. setMsgInfo(txtMsgInfo, "打开对讲失败:" + ex.Message, "");
  838. //MessageBox.Show(ex.Message);
  839. }
  840. }
  841. /// <summary>
  842. /// 关闭视频
  843. /// </summary>
  844. private void IPVideoClose()
  845. {
  846. try
  847. {
  848. cameraShotMain.Close();
  849. }
  850. catch (Exception ex)
  851. {
  852. setMsgInfo(txtMsgInfo, "关闭对讲失败:" + ex.Message, "");
  853. //MessageBox.Show(ex.Message);
  854. }
  855. }
  856. #endregion
  857. /// <summary>
  858. /// 对讲
  859. /// </summary>
  860. private void btnOpenVoice_Click(object sender, EventArgs e)
  861. {
  862. if (panel1.Controls.Count > 0)
  863. {
  864. if (btnOpenVoice.Text == "打开对讲")
  865. {
  866. VoiceOpen();
  867. }
  868. else
  869. {
  870. VoiceClose();
  871. }
  872. }
  873. }
  874. /// <summary>
  875. /// 校秤
  876. /// </summary>
  877. private void btnCheckBalance_Click(object sender, EventArgs e)
  878. {
  879. //if (PbCache.collect.weightStatus == 0 && PbCache.collect.weight > 500)
  880. {
  881. PbCache.isLockFrm = true;
  882. if (PbCache.collect != null)
  883. {
  884. PbCache.lockWgt = PbCache.collect.weight;
  885. frmCalibration fc = new frmCalibration();
  886. fc.userId = userId;
  887. fc.userName = userName;
  888. if (fc.ShowDialog() == DialogResult.OK)
  889. {
  890. txtMsgInfo.Text = "校秤完成";
  891. PbCache.isLockFrm = false;
  892. //Clean();
  893. }
  894. else
  895. {
  896. PbCache.isLockFrm = false;
  897. }
  898. }
  899. }
  900. }
  901. /// <summary>
  902. /// 期限皮
  903. /// </summary>
  904. private void btnTareWgt_Click(object sender, EventArgs e)
  905. {
  906. //if (PbCache.collect.weightStatus == 0 && PbCache.collect.weight > 500)
  907. {
  908. if (string.IsNullOrEmpty(strCbCarNo + strTxtCarNo))
  909. {
  910. MessageBox.Show("请先输入一个车号");
  911. return;
  912. }
  913. PbCache.lockWgt = PbCache.collect.weight;
  914. //是否可留期限皮
  915. if (!termTareCar.ValidMethod(PbCache.collect.carno))
  916. {
  917. if (PbCache.ResultMessage.Contains("无法留期限皮"))
  918. {
  919. DialogResult drs = MessageBox.Show(PbCache.ResultMessage.Replace("无法留期限皮", "") + " 确认留期限皮吗?", "提示", MessageBoxButtons.OKCancel);
  920. if (drs != DialogResult.OK)
  921. return;
  922. }
  923. else
  924. {
  925. txtMsgInfo.Text = PbCache.ResultMessage;
  926. //MessageBox.Show(PbCache.ResultMessage);
  927. return;
  928. }
  929. }
  930. if (termTareCar.ValidMethod(PbCache.collect.carno))
  931. {
  932. DialogResult dr = MessageBox.Show("确认留期限皮吗?", "提示", MessageBoxButtons.OKCancel);
  933. if (dr != DialogResult.OK)
  934. return;
  935. }
  936. txtMsgInfo.Text = "称重保存中,请稍等......";
  937. PbCache.isLockFrm = true;
  938. PbCache.lockCarNo = strCbCarNo + strTxtCarNo;
  939. MeterBaseTermTareData mbttd = new MeterBaseTermTareData();
  940. mbttd.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  941. mbttd.baseSpotName = PbCache.sportInfo.baseSpotName;
  942. mbttd.carNo = PbCache.collect.carno;
  943. mbttd.meterWeight = PbCache.lockWgt;
  944. mbttd.valueFlag = "0";
  945. mbttd.createTime = DateTime.Now;
  946. mbttd.createManNo = PbCache.sportInfo.baseSpotNo;
  947. mbttd.createManName = PbCache.sportInfo.baseSpotName;
  948. mbttd.meterTime = mbttd.createTime.Value;
  949. mbttd.startTime = mbttd.createTime.Value;
  950. //操作日志
  951. MeterMonitorNote monitorNote = new MeterMonitorNote();
  952. monitorNote.baseSpotNo = mbttd.baseSpotNo;
  953. monitorNote.baseSpotName = mbttd.baseSpotName;
  954. monitorNote.operationContent = string.Format("保存期限皮重");
  955. monitorNote.operationTime = mbttd.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  956. monitorNote.carNo = mbttd.carNo;
  957. monitorNote.meterNoteSource = "4";
  958. monitorNote.meterManNo = userId;
  959. monitorNote.meterManName = userName;
  960. //期限皮重数据保存
  961. RESTfulResult<string> RESTfulResult = termTareDate.doSaveWf(mbttd, monitorNote);
  962. if (RESTfulResult.Succeed)
  963. {
  964. txtMsgInfo.Text = "期限皮重保存成功!";
  965. //MessageBox.Show("期限皮重保存成功!");
  966. //Clean();
  967. }
  968. else
  969. {
  970. txtMsgInfo.Text = "期限皮重保存失败!" + RESTfulResult.ResultMessage;
  971. //MessageBox.Show("保存失败:" + RESTfulResult.ResultMessage);
  972. }
  973. }
  974. }
  975. /// <summary>
  976. /// 保存
  977. /// </summary>
  978. private void btnSave_Click(object sender, EventArgs e)
  979. {
  980. //if (PbCache.collect.weightStatus == 0 && PbCache.collect.weight > 500)
  981. {
  982. if (string.IsNullOrEmpty(strCbCarNo + strTxtCarNo))
  983. {
  984. MessageBox.Show("请先输入一个车号");
  985. return;
  986. }
  987. PbCache.isLockFrm = true;
  988. PbCache.lockWgt = PbCache.collect.weight;
  989. PbCache.lockCarNo = strCbCarNo + strTxtCarNo;
  990. btnSave.Enabled = false;
  991. DialogResult dr = MessageBox.Show("是否确认保存当前计量数据?", "提示", MessageBoxButtons.OKCancel);
  992. //PbCache.addWgt = lbWgt.Text.Trim() == "" ? 0 : Convert.ToDouble(lbWgt.Text.Trim());
  993. PbCache.addWgt = Convert.ToDouble(string.IsNullOrEmpty(lbWgt.Text) ? 0 : lbWgt.Value);
  994. if (dr == DialogResult.OK)
  995. {
  996. txtMsgInfo.Text = "称重保存中,请稍等......";
  997. btnSave.Enabled = false;
  998. try
  999. {
  1000. bool flag = false;
  1001. string strMsg = "";
  1002. //没有业务编号或者业务编号不是非内倒业务则认为是内倒
  1003. if (strType == "0")
  1004. {
  1005. rtInfo ri = null;
  1006. //获取稳定的重量,车号,计量信息等,然后进行计量业务操作
  1007. if (preTack != null)
  1008. {
  1009. ri = inner.MeterMethod(new InnerMeterInfo
  1010. {
  1011. carNo = cbCarNo.Text.Trim() + txtCarNo.Text.Trim(),
  1012. batchNo = "",
  1013. forwardingUnitNo = preTack.forwardingUnitNo,
  1014. forwardingUnitName = preTack.forwardingUnitName,
  1015. matterNo = preTack.matterNo,
  1016. matterName = preTack.matterName,
  1017. receivingUintName = preTack.receivingUintName,
  1018. receivingUintNo = preTack.receivingUintNo,
  1019. meterTypeNo = "001006003",
  1020. meterTypeName = PbCache.businessType.Where(s => s.baseCode == "001006003").FirstOrDefault().baseName,
  1021. predictionNo = ""
  1022. }, appUser);
  1023. }
  1024. else
  1025. {
  1026. ri = inner.MeterMethod(new InnerMeterInfo
  1027. {
  1028. carNo = cbCarNo.Text.Trim() + txtCarNo.Text.Trim(),
  1029. batchNo = "",
  1030. forwardingUnitNo = "",
  1031. forwardingUnitName = "",
  1032. matterNo = "",
  1033. matterName = "",
  1034. receivingUintName = "",
  1035. receivingUintNo = "",
  1036. meterTypeNo = "001006003",
  1037. meterTypeName = PbCache.businessType.Where(s => s.baseCode == "001006003").FirstOrDefault().baseName,
  1038. predictionNo = ""
  1039. }, appUser);
  1040. }
  1041. flag = ri.result;
  1042. strMsg = PbCache.ResultMessage;
  1043. }
  1044. else if (strType == "1")//存在业务编号且是非内倒计量业务
  1045. {
  1046. //将卡控条件设置为0,放过所有卡控
  1047. PbCache.isNotValid = true;
  1048. flag = false;
  1049. if (scene.WeightMeter(preTack, appUser, out strMsg)) //meterTypeNo "001006001","001006002"
  1050. {
  1051. flag = true;
  1052. }
  1053. }
  1054. else
  1055. {
  1056. flag = false;
  1057. PbCache.ResultMessage = "请输入正确的业务编号之后按回车";
  1058. }
  1059. if (flag)
  1060. {
  1061. #region 截取图片信息
  1062. try
  1063. {
  1064. //*
  1065. //截取屏幕信息
  1066. Point screenPoint = this.PointToScreen(new Point());
  1067. Rectangle rect = new Rectangle(screenPoint, this.Size);
  1068. Image img = new Bitmap(rect.Width, rect.Height);
  1069. Graphics g = Graphics.FromImage(img);
  1070. g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg"
  1071. img.Save(string.Format("{0}imgShort\\tempImg\\{1}_{2}_{3}.jpg",
  1072. AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
  1073. PbCache.sportInfo.baseSpotNo,
  1074. "C" + PbCache.actualFirstNo,
  1075. (PbCache.videoChild.Count + 1)), System.Drawing.Imaging.ImageFormat.Jpeg);
  1076. //*
  1077. //最后进行截图操作
  1078. CameraShotCls cameraShot = new CameraShotCls();
  1079. cameraShot.CapMethod(PbCache.actualFirstNo);
  1080. //*/
  1081. }
  1082. catch (Exception ex)
  1083. {
  1084. l.WriteLog(5, PbCache.lockCarNo + "截图失败");
  1085. }
  1086. #endregion
  1087. #region LED写入
  1088. PbCache.ledInfo = string.Format("计量完成,车号:{0},车重:{1},物资:{2}", PbCache.lockCarNo, PbCache.lockWgt, txtMATTER_NAME.Text.Trim());
  1089. #endregion
  1090. //Clean();
  1091. try
  1092. {
  1093. QueryCarNo();
  1094. }
  1095. catch { }
  1096. }
  1097. else
  1098. {
  1099. PbCache.isLockFrm = false;
  1100. btnSave.Enabled = true;
  1101. }
  1102. txtMsgInfo.Text = PbCache.ResultMessage;
  1103. if (!string.IsNullOrEmpty(PbCache.ResultMessage))
  1104. {
  1105. txtMsgInfo.Text = PbCache.ResultMessage;
  1106. //MessageBox.Show(PbCache.ResultMessage);
  1107. }
  1108. }
  1109. catch (Exception ex)
  1110. {
  1111. btnSave.Enabled = true;
  1112. PbCache.isLockFrm = false;
  1113. txtMsgInfo.Text = "保存失败:" + ex.Message.Trim();
  1114. l.WriteLog(5, "保存失败:" + ex.Message.Trim());
  1115. //MessageBox.Show("保存失败:" + ex.Message.Trim());
  1116. }
  1117. }
  1118. else
  1119. {
  1120. txtMsgInfo.Text = PbCache.ResultMessage;
  1121. btnSave.Enabled = true;
  1122. PbCache.isLockFrm = false;
  1123. }
  1124. }
  1125. }
  1126. /// <summary>
  1127. /// 0为内倒 1为非内倒
  1128. /// </summary>
  1129. string strType = "0";
  1130. /// <summary>
  1131. /// 回车时触发查询
  1132. /// </summary>
  1133. private void txtPREDICTION_NO_KeyDown(object sender, KeyEventArgs e)
  1134. {
  1135. if (e.KeyValue == 13)
  1136. {
  1137. QueryInnerInfo();
  1138. }
  1139. }
  1140. private void QueryInnerInfo()
  1141. {
  1142. txtFORWARDING_UNIT_NAME.Text = "";
  1143. txtMATTER_NAME.Text = "";
  1144. txtRECEIVING_UINT_NAME.Text = "";
  1145. preTack = null;
  1146. string strM = txtPREDICTION_NO.Text.Trim();
  1147. PbCache.strCode = strM;
  1148. setPreTrackInfo(new PreTrackScale());
  1149. if (strM.Length == 9)
  1150. {
  1151. strType = "0";
  1152. //内部物料,需确认车辆是否为内倒车辆
  1153. string sql = @"select t1.load_point_no as id, t1.load_point_name text, t1.meter_code text2
  1154. from meter_base_load_point t1
  1155. where t1.meter_code = '" + strM.Substring(3, 3) + @"'
  1156. and t1.valid_Flag = '1'
  1157. union all
  1158. select t1.load_point_no as id, t1.load_point_name text, t1.meter_code text2
  1159. from meter_base_load_point t1
  1160. where t1.meter_code = '" + strM.Substring(6, 3) + @"'
  1161. and t1.valid_Flag = '1'
  1162. union all
  1163. select t2.matter_no as id, t2.matter_name text, t2.meter_code text2
  1164. from meter_base_matter_info t2
  1165. where t2.meter_code = '" + strM.Substring(0, 3) + @"'
  1166. and t2.valid_Flag = '1'";
  1167. PbModelDbService<List<PbModelDb>> pb = new PbModelDbService<List<PbModelDb>>();
  1168. RESTfulResult<List<PbModelDb>> rm = pb.executeSqlDataWf(sql);
  1169. if (rm.Succeed && rm.Data.Count == 3)
  1170. {
  1171. txtMsgInfo.Text = "";
  1172. txtFORWARDING_UNIT_NAME.Text = rm.Data[0].text;
  1173. txtMATTER_NAME.Text = rm.Data[2].text;
  1174. txtRECEIVING_UINT_NAME.Text = rm.Data[1].text;
  1175. preTack = new PreTrackScale
  1176. {
  1177. predictionNo = strM,
  1178. forwardingUnitNo = rm.Data[0].id,
  1179. forwardingUnitName = rm.Data[0].text,
  1180. matterNo = rm.Data[2].id,
  1181. matterName = rm.Data[2].text,
  1182. receivingUintNo = rm.Data[1].id,
  1183. receivingUintName = rm.Data[1].text,
  1184. meterTypeNo = "001006003",
  1185. meterTypeName = ""
  1186. };
  1187. setPreTrackInfo(preTack);
  1188. seValidWhp();
  1189. txtMETER_TYPE.Text = "内倒";
  1190. #region 是否可用期限皮
  1191. PbCache.isTermTare = false;
  1192. sql = @"select matter_no id,
  1193. allowed_tare_weight text,
  1194. allowed_add_weight text2
  1195. from meter_base_matter_info
  1196. where valid_Flag = '1' and matter_no = '" + rm.Data[2].id + "'";
  1197. RESTfulResult<List<PbModelDb>> rmT = pb.executeSqlDataWf(sql);
  1198. if (rmT.Succeed)
  1199. {
  1200. if (rmT.Data != null && rmT.Data.Count > 0 && rmT.Data[0].text == "1")
  1201. {
  1202. PbCache.isTermTare = true;
  1203. }
  1204. }
  1205. #endregion
  1206. }
  1207. else
  1208. {
  1209. txtMsgInfo.Text = "不存在该业务编码,请确定输入的信息是否有错";
  1210. //MessageBox.Show("不存在该业务编码,请确定输入的信息是否有错");
  1211. }
  1212. }
  1213. else if (strM.Length > 0)
  1214. {
  1215. strType = "2";
  1216. RESTfulResult<List<PreTrackScale>> rm = service.doQueryWf(new PreTrackScale { predictionNo = strM });
  1217. if (rm.Succeed)
  1218. {
  1219. if (rm.Data == null || rm.Data.Count == 0)
  1220. {
  1221. txtMsgInfo.Text = "未找到预报信息,请确定输入的信息是否有错";
  1222. }
  1223. else
  1224. {
  1225. if (rm.Data[0].valueFlag != "1" && rm.Data[0].valueFlag != "4") //1未使用,4正使用
  1226. {
  1227. txtMsgInfo.Text = "请确保当前预报已配车且未使用或正使用";
  1228. }
  1229. else
  1230. {
  1231. preTack = rm.Data[0];
  1232. setPreTrackInfo(preTack);
  1233. seValidWhp();
  1234. strType = "1";
  1235. btnSave.Visible = validPredictionNo(preTack.predictionNo);
  1236. }
  1237. }
  1238. }
  1239. }
  1240. txtPREDICTION_NO.Text = strM;
  1241. }
  1242. #endregion
  1243. #region 数据设置及清空
  1244. /// <summary>
  1245. /// 清空或设置预报信息
  1246. /// </summary>
  1247. private void setPreTrackInfo(PreTrackScale pts)
  1248. {
  1249. setMsgInfo(txtPREDICTION_NO, pts.predictionNo == null ? "" : pts.predictionNo, "");
  1250. setMsgInfo(txtBATCH_NO, pts.batchNo == null ? "" : pts.batchNo, "");
  1251. setMsgInfo(txtBATCH_NO, pts.batchNo == null ? "" : pts.batchNo, "");
  1252. setMsgInfo(txtMATTER_NAME, pts.matterName == null ? "" : pts.matterName, "");
  1253. setMsgInfo(txtMETER_TYPE, pts.meterTypeName == null ? "" : pts.meterTypeName, "");
  1254. setMsgInfo(txtFORWARDING_UNIT_NAME, pts.forwardingUnitName == null ? "" : pts.forwardingUnitName, "");
  1255. setMsgInfo(txtRECEIVING_UINT_NAME, pts.receivingUintName == null ? "" : pts.receivingUintName, "");
  1256. setMsgInfo(txtLOAD_POINT_NAME, pts.loadPointName == null ? "" : pts.loadPointName, "");
  1257. setMsgInfo(txtCARRIER_UNIT_NAME, pts.carrierUnitName == null ? "" : pts.carrierUnitName, "");
  1258. setMsgInfo(txtRemark, pts.memo == null ? "" : pts.memo, "");
  1259. setMsgInfo(txtSHIPMENT_NET_WEIGHT, pts.shipmentNetWeight == null ? "" : pts.shipmentNetWeight.Value + "", "");
  1260. setMsgInfo(txtSHIPMENT_GROSS_WEIGHT, pts.shipmentGrossWeight == null ? "" : pts.shipmentGrossWeight.Value + "", "");
  1261. setMsgInfo(chkSample, string.IsNullOrEmpty(pts.sampleNo) ? "false" : "true", "3");
  1262. setMsgInfo(chkChemical, "false", "3");
  1263. }
  1264. private void setHistWgt(double? dHisTareWgt, int? iCount)
  1265. {
  1266. setMsgInfo(txtHisTare, dHisTareWgt == null ? "" : dHisTareWgt.Value + "", "");
  1267. setMsgInfo(txtCount, iCount == null ? "" : iCount.Value + "", "");
  1268. }
  1269. string strCbCarNo = "";
  1270. public void setCbCarNoInfo(string ResultMessage)
  1271. {
  1272. setCbCarNo(ResultMessage);
  1273. }
  1274. private void setCbCarNo(string ResultMessage)
  1275. {
  1276. if (cbCarNo.InvokeRequired)
  1277. {
  1278. Action<string> action = new Action<string>(setCbCarNoInfo);
  1279. Invoke(action, new object[] { ResultMessage });
  1280. }
  1281. else
  1282. {
  1283. if (string.IsNullOrEmpty(ResultMessage))
  1284. {
  1285. cbCarNo.SelectedIndex = -1;
  1286. }
  1287. cbCarNo.Text = ResultMessage;
  1288. strCbCarNo = cbCarNo.Text.Trim();
  1289. }
  1290. }
  1291. string strTxtCarNo = "";
  1292. public void setTxtCarNoInfo(string ResultMessage)
  1293. {
  1294. setTxtCarNo(ResultMessage);
  1295. }
  1296. private void setTxtCarNo(string ResultMessage)
  1297. {
  1298. if (txtCarNo.InvokeRequired)
  1299. {
  1300. Action<string> action = new Action<string>(setTxtCarNoInfo);
  1301. Invoke(action, new object[] { ResultMessage });
  1302. }
  1303. else
  1304. {
  1305. txtCarNo.Text = ResultMessage;
  1306. strTxtCarNo = txtCarNo.Text.Trim();
  1307. }
  1308. }
  1309. public void setPicQRed(bool bRed)
  1310. {
  1311. setQRed(bRed);
  1312. }
  1313. private void setQRed(bool bRed)
  1314. {
  1315. if (picQRed.InvokeRequired)
  1316. {
  1317. Action<bool> action = new Action<bool>(setPicQRed);
  1318. Invoke(action, new object[] { bRed });
  1319. }
  1320. else
  1321. {
  1322. if (bRed)
  1323. {
  1324. picQRed.Load(PbCache.path + "\\image\\icon\\red.gif");
  1325. }
  1326. else
  1327. {
  1328. picQRed.Load(PbCache.path + "\\image\\icon\\green.gif");
  1329. }
  1330. }
  1331. }
  1332. public void setPicHRed(bool bRed)
  1333. {
  1334. setHRed(bRed);
  1335. }
  1336. private void setHRed(bool bRed)
  1337. {
  1338. if (picHRed.InvokeRequired)
  1339. {
  1340. Action<bool> action = new Action<bool>(setPicHRed);
  1341. Invoke(action, new object[] { bRed });
  1342. }
  1343. else
  1344. {
  1345. if (bRed)
  1346. {
  1347. picHRed.Load(PbCache.path + "\\image\\icon\\red.gif");
  1348. }
  1349. else
  1350. {
  1351. picHRed.Load(PbCache.path + "\\image\\icon\\green.gif");
  1352. }
  1353. }
  1354. }
  1355. #endregion
  1356. int iCnt = 0, iTimes = 0;
  1357. private void timer1_Tick(object sender, EventArgs e)
  1358. {
  1359. iCnt++;
  1360. if (iCnt % 3 == 0)
  1361. {
  1362. //未挂起则3秒写入一次在线状态
  1363. if (!bGQ)
  1364. {
  1365. RESTfulResult<string> rm = onlineService.doSaveWf(new MeterWorkOnline { userId = userId });
  1366. }
  1367. iCnt = 0;
  1368. }
  1369. iTimes++;
  1370. if (iTimes > 600 && !bCollectionStart)
  1371. {
  1372. //没有远程接管的情况下十分钟载入一次基础数据
  1373. iTimes = 0;
  1374. bd.setBaseDb();
  1375. }
  1376. }
  1377. private void cbCarNo_SelectedIndexChanged(object sender, EventArgs e)
  1378. {
  1379. if (PbCache.collect != null && PbCache.collect.weight > 0)
  1380. {
  1381. if (cbCarNo.SelectedIndex > -1)
  1382. {
  1383. strCbCarNo = cbCarNo.Text.Trim();
  1384. QueryCarNo();
  1385. flagCarNo = true;
  1386. }
  1387. }
  1388. }
  1389. bool flagCarNo = false, isFocus = false;
  1390. private void txtCarNo_KeyDown(object sender, EventArgs e)
  1391. {
  1392. /*
  1393. if (PbCache.collect != null && PbCache.collect.weight > 0)
  1394. {
  1395. strTxtCarNo = txtCarNo.Text.Trim();
  1396. QueryCarNo();
  1397. flagCarNo = true;
  1398. }
  1399. //*/
  1400. }
  1401. private void getFocusInfo(Control control)
  1402. {
  1403. if (txtCarNo.InvokeRequired)
  1404. {
  1405. Action<Control> action = new Action<Control>(getFocusInfo);
  1406. Invoke(action, new object[] { control });
  1407. }
  1408. else
  1409. {
  1410. isFocus = control.Focused;
  1411. }
  1412. }
  1413. private void QueryCarNo()
  1414. {
  1415. if (PbCache.sportInfo != null)
  1416. {
  1417. if (strTxtCarNo != "" && strCbCarNo != "") //&& PbCache.collect.weightStatus == 0)
  1418. {
  1419. PbCache.collect.carno = strCbCarNo + strTxtCarNo;
  1420. first = null;
  1421. //setHistWgt(null, null);
  1422. //METER_BASE_HIS_TARE_DATA
  1423. RESTfulResult<List<MeterBaseHisTareData>> rmH = meterBaseHisTareData.doQueryWf(new MeterBaseHisTareData { carNo = PbCache.collect.carno, valueFlag = "0" });
  1424. if (rmH.Succeed && rmH.Data != null && rmH.Data.Count > 0)
  1425. {
  1426. string HisTareWgt = PbCache.tareCount != null ? (PbCache.tareCount.contrastTypeNo == "001012001" ? rmH.Data[0].upWeight.Value : rmH.Data[0].avgWeight.Value) + "" : rmH.Data[0].avgWeight.Value + "";
  1427. setMsgInfo(txtHisTare, HisTareWgt, "");
  1428. setMsgInfo(txtCount, rmH.Data[0].meterNum + "", "");
  1429. }
  1430. //通过车号查询计量预报
  1431. RESTfulResult<List<PreTrackScale>> rmx = service.doQueryTenWf(new PreTrackScale { carNo = PbCache.collect.carno });
  1432. dtPreTrackScale.Clear();
  1433. DataTable dt = dtPreTrackScale.Clone();
  1434. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  1435. {
  1436. dt = rmx.Data.ListToDataTable<PreTrackScale>();
  1437. }
  1438. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtPreTrackScale, true);
  1439. ClsControlPack.RefreshAndAutoSize(ultraGridYb);
  1440. //计量实绩
  1441. CommonPage<MeterWorkCarActual> cpc = new CommonPage<MeterWorkCarActual>();
  1442. MeterWorkCarActual mwca = new MeterWorkCarActual();
  1443. mwca.carNo = PbCache.collect.carno;
  1444. cpc.param = mwca;
  1445. cpc.pageNum = 1;
  1446. cpc.pageSize = 10;
  1447. RESTfulResult<DataTable> rm = mwas.doQueryWf(cpc);
  1448. if (rm.Succeed)
  1449. {
  1450. //WriteLog("二次计量数据查询失败!" + rm.ResultMessage);
  1451. dataTable1.Clear();
  1452. DataTable dts = dataTable1.Clone();
  1453. if (rm.Data != null && rm.Data.Rows.Count > 0)
  1454. {
  1455. dts = rm.Data;
  1456. }
  1457. ClsControlPack.CopyDataToDatatable(ref dts, ref this.dataTable1, true);
  1458. ClsControlPack.RefreshAndAutoSize(ultraGridSj);
  1459. }
  1460. //期限皮重
  1461. RESTfulResult<List<MeterBaseTermTareData>> rmTerm = termTareDate.doQueryWf(new MeterBaseTermTareData { carNo = PbCache.collect.carno, valueFlag = "0" });
  1462. dtTare.Clear();
  1463. DataTable dtTerm = dtTare.Clone();
  1464. if (rmTerm.Succeed && rmTerm.Data != null && rmTerm.Data.Count > 0)
  1465. {
  1466. dtTerm = rmTerm.Data.ListToDataTable<MeterBaseTermTareData>();
  1467. }
  1468. ClsControlPack.CopyDataToDatatable(ref dtTerm, ref this.dtTare, true);
  1469. ClsControlPack.RefreshAndAutoSize(ultraGridTare);
  1470. //校秤记录
  1471. RESTfulResult<List<MeterWorkCalibrationMain>> rmMain = mainService.doQueryWf(new MeterWorkCalibrationMain { baseSpotNo = PbCache.sportInfo.baseSpotNo });
  1472. dtCalibration.Clear();
  1473. DataTable dtMain = dtCalibration.Clone();
  1474. if (rmMain.Succeed && rmMain.Data != null && rmMain.Data.Count > 0)
  1475. {
  1476. dtMain = rmMain.Data.ListToDataTable<MeterWorkCalibrationMain>();
  1477. }
  1478. ClsControlPack.CopyDataToDatatable(ref dtMain, ref this.dtCalibration, true);
  1479. ClsControlPack.RefreshAndAutoSize(ultraGridJl);
  1480. //剩余纸张数 meter_work_monitor
  1481. RESTfulResult<List<MeterWorkMonitor>> rmMonitor = monitorService.doQueryOneWf(new MeterWorkMonitor { validFlag = "1", pointNo = PbCache.sportInfo.baseSpotNo });
  1482. if (rmMonitor.Succeed)
  1483. {
  1484. if (rmMonitor.Data != null && rmMonitor.Data.Count > 0)
  1485. {
  1486. //txtPage.Text = rmMonitor.Data[0].printNum == null ? "0" : (rmMonitor.Data[0].printNum.Value + "");
  1487. setMsgInfo(txtPage, rmMonitor.Data[0].printNum == null ? "0" : (rmMonitor.Data[0].printNum.Value + ""), "");
  1488. }
  1489. }
  1490. //是否存在一次计量数据,存在则毛皮净写入界面
  1491. MeterWorkCarActualFirstService workCarActualFirstService = new MeterWorkCarActualFirstService();
  1492. RESTfulResult<List<MeterWorkCarActualFirst>> RESTfulResult = workCarActualFirstService.doQueryWf(new MeterWorkCarActualFirst { carNo = PbCache.collect.carno, valueFlag = "1" });
  1493. if (RESTfulResult.Succeed)
  1494. {
  1495. if (RESTfulResult.Data != null && RESTfulResult.Data.Count > 0)
  1496. {
  1497. first = RESTfulResult.Data[0];
  1498. PbCache.strCode = first.predictionNo;
  1499. //setMsgInfo(lbWgt, (first.addWeight == null ? 0 : first.addWeight.Value) + "", ""); //一次附加重量作为附加重量显示
  1500. if (first.meterTypeNo == "001006003")
  1501. {
  1502. strType = "0"; //如果是内倒计量
  1503. //setMsgInfo(txtPREDICTION_NO, first.predictionNo, "");
  1504. setMsgInfo(txtMATTER_NAME, first.matterName, "");
  1505. setMsgInfo(txtMETER_TYPE, first.meterTypeName, "");
  1506. setMsgInfo(txtFORWARDING_UNIT_NAME, first.forwardingUnitName, "");
  1507. setMsgInfo(txtRECEIVING_UINT_NAME, first.receivingUintName, "");
  1508. }
  1509. else
  1510. {
  1511. setAddWgt(first.predictionNo); //非内倒才有这款逻辑
  1512. strType = "1"; //非内倒计量,此时计量预报中存在编号与一次一致的情况,则认为是非一车联运,或者一车联运互锁的方式或者最后一车一车联运预报,此时可将一次的信息填充到界面
  1513. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  1514. {
  1515. PreTrackScale ptsQ = rmx.Data.Where(s => s.predictionNo == RESTfulResult.Data[0].predictionNo).FirstOrDefault();
  1516. if (ptsQ != null && ptsQ.predictionNo != "")
  1517. {
  1518. setMsgInfo(txtPREDICTION_NO, ptsQ.predictionNo, "");
  1519. setMsgInfo(txtBATCH_NO, ptsQ.batchNo, "");
  1520. setMsgInfo(txtMATTER_NAME, ptsQ.matterName, "");
  1521. setMsgInfo(txtMETER_TYPE, ptsQ.meterTypeName, "");
  1522. setMsgInfo(txtCount, ptsQ.shipmentNum == null ? "" : ptsQ.shipmentNum.Value + "", "");
  1523. setMsgInfo(txtFORWARDING_UNIT_NAME, ptsQ.forwardingUnitName, "");
  1524. setMsgInfo(txtRECEIVING_UINT_NAME, ptsQ.receivingUintName, "");
  1525. setMsgInfo(txtCARRIER_UNIT_NAME, ptsQ.carrierUnitName, "");
  1526. setMsgInfo(txtLOAD_POINT_NAME, ptsQ.loadPointName, "");
  1527. setMsgInfo(txtSHIPMENT_GROSS_WEIGHT, ptsQ.shipmentGrossWeight == null ? "" : ptsQ.shipmentGrossWeight.Value + "", "");
  1528. setMsgInfo(txtSHIPMENT_NET_WEIGHT, ptsQ.shipmentNetWeight == null ? "" : ptsQ.shipmentNetWeight.Value + "", "");
  1529. preTack = ptsQ;
  1530. }
  1531. }
  1532. }
  1533. }
  1534. }
  1535. seValidWhp();
  1536. }
  1537. }
  1538. }
  1539. /// <summary>
  1540. /// 验证当前物料是否是危化品
  1541. /// </summary>
  1542. private void seValidWhp()
  1543. {
  1544. if (txtCarNo.Text.Trim() != "" && cbCarNo.Text.Trim() != "" && preTack != null && preTack.matterNo != "")
  1545. {
  1546. string strCarNo = cbCarNo.Text.Trim() + txtCarNo.Text.Trim();
  1547. if (PbCache.limit != null && PbCache.limit.Count > 0)
  1548. {
  1549. List<MeterBaseLimitChemical> mblc = PbCache.limit.Where(s => s.matterNo == preTack.matterNo).ToList();
  1550. //该物料是危化品
  1551. if (mblc.Count > 0)
  1552. {
  1553. chkChemical.Checked = true;
  1554. }
  1555. }
  1556. }
  1557. }
  1558. private void ultraGridYb_DoubleClick(object sender, EventArgs e)
  1559. {
  1560. UltraGridRow ugr = ultraGridYb.ActiveRow;
  1561. if (ugr != null)
  1562. {
  1563. DataRow[] dr = dtPreTrackScale.Select("predictionNo='" + ugr.Cells["predictionNo"].Text.Trim() + "'"); //Select(" CAR_NO = '" + strCarNO + "'")
  1564. if (dr != null && dr.Length > 0)
  1565. {
  1566. preTack = dr[0].CreateItem<PreTrackScale>();
  1567. setPreTrackInfo(preTack);
  1568. seValidWhp();
  1569. strType = "1";
  1570. lbWgt.Text = string.IsNullOrEmpty(dr[0]["addWeightSum"].ToString().Trim()) ? "" : dr[0]["addWeightSum"].ToString().Trim();
  1571. setAddWgt(preTack.predictionNo);
  1572. PbCache.strCode = preTack.predictionNo;
  1573. btnSave.Visible = validPredictionNo(ugr.Cells["predictionNo"].Text.Trim());
  1574. }
  1575. }
  1576. }
  1577. //
  1578. private void setAddWgt(string predictionNo)
  1579. {
  1580. try
  1581. {
  1582. setMsgInfo(lbUTENSIL_UTENSIL_NAME, "", "");
  1583. ls = new List<string>();
  1584. setListBoxInfo(lb1, "", "1");
  1585. setListBoxInfo(lb2, "", "1");
  1586. dAddWgt = 0;
  1587. RESTfulResult<List<PerAddWeight>> rm = perAddWeight.doQueryWf(new PerAddWeight { predictionNo = predictionNo });
  1588. if (rm.Succeed)
  1589. {
  1590. if (rm.Data != null && rm.Data.Count > 0)
  1591. {
  1592. int i = 0;
  1593. foreach (PerAddWeight per in rm.Data)
  1594. {
  1595. setMsgInfo(lbUTENSIL_UTENSIL_NAME, per.utensilUtensilName, "");
  1596. ls.Add(per.addWeightNo);
  1597. i++;
  1598. if (i < 8)
  1599. {
  1600. setListBoxInfo(lb1, per.utensilNo, "2");
  1601. }
  1602. else
  1603. {
  1604. setListBoxInfo(lb2, per.utensilNo, "2");
  1605. }
  1606. dAddWgt += string.IsNullOrEmpty(per.utensilWeight) ? 0 : Convert.ToDouble(per.utensilWeight);
  1607. }
  1608. }
  1609. }
  1610. //PbCache.addWgt = dAddWgt;
  1611. setMsgInfo(lbWgt, dAddWgt + "", "");
  1612. }
  1613. catch (Exception ex)
  1614. {
  1615. l.WriteLog(1, ex.Message.Trim());
  1616. }
  1617. }
  1618. public void setListBoxInfo(ListBox control, string ResultMessage, string sType)
  1619. {
  1620. setListBoxMsg(control, ResultMessage, sType);
  1621. }
  1622. private void setListBoxMsg(ListBox control, string ResultMessage, string sType)
  1623. {
  1624. if (control.InvokeRequired)
  1625. {
  1626. Action<ListBox, string, string> action = new Action<ListBox, string, string>(setListBoxInfo);
  1627. Invoke(action, new object[] { control, ResultMessage, sType });
  1628. }
  1629. else
  1630. {
  1631. switch (sType)
  1632. {
  1633. case "1":
  1634. control.Items.Clear();
  1635. ; break;
  1636. case "2":
  1637. control.Items.Add(ResultMessage);
  1638. ; break;
  1639. case "3":
  1640. control.Items.Remove(ResultMessage);
  1641. break;
  1642. default: break;
  1643. }
  1644. }
  1645. }
  1646. private bool validPredictionNo(string predictionNo)
  1647. {
  1648. bool flag = true;
  1649. txtMsgInfo.Text = "";
  1650. #region 如果存在一次信息,且当前预报编号与一次的不一样
  1651. if (first != null && !string.IsNullOrEmpty(first.predictionNo) && !string.IsNullOrEmpty(predictionNo))
  1652. {
  1653. if (PbCache.strCode != first.predictionNo)
  1654. {
  1655. if (first.predictionType != "2")//一次计量的计量预报如果不是联运预报,那么当前扫的码必须与前面那个一致
  1656. {
  1657. txtMsgInfo.Text = "当前计量预报【" + predictionNo + "】与上次未结净数据预报【" + first.predictionNo + "】不一致,请重新扫码或语音求助!";
  1658. flag = false;
  1659. }
  1660. else //如果一次计量是联运预报,且预报的使用状态为4(正使用)则认为走了互锁式计量,因为非互锁的情况计量一次预报状态会变为2
  1661. {
  1662. RESTfulResult<List<PreTrackScale>> rm = service.doQueryWf(new PreTrackScale { predictionNo = first.predictionNo, valueFlag = "4" });
  1663. if (rm.Succeed)
  1664. {
  1665. if (rm.Data != null && rm.Data.Count > 0)
  1666. {
  1667. txtMsgInfo.Text = "当前计量预报【" + predictionNo + "】与上次未结净数据预报【" + first.predictionNo + "】不一致,请重新扫码或语音求助!";
  1668. flag = false;
  1669. }
  1670. else //非互锁的情况计量,此时编号应该存在在一次计量中的编号中
  1671. {
  1672. string sCode = first.predictionCombination.Split(',').ToList().Where(s => s.CompareTo(predictionNo) == 0).FirstOrDefault();
  1673. if (string.IsNullOrEmpty(sCode))
  1674. {
  1675. txtMsgInfo.Text = "当前计量预报【" + predictionNo + "】不在上次计量联运预报【" + first.predictionCombination + "】中,请重新扫码或语音求助!";
  1676. flag = false;
  1677. }
  1678. }
  1679. }
  1680. else
  1681. {
  1682. l.WriteLog(0, "查询预报编号异常");
  1683. txtMsgInfo.Text = "获取一次计量时的预报失败,请稍后再试,预报编号【" + first.predictionNo + "】!";
  1684. flag = false;
  1685. }
  1686. }
  1687. }
  1688. }
  1689. #endregion
  1690. return flag;
  1691. }
  1692. private void ultraGridSj_DoubleClick(object sender, EventArgs e)
  1693. {
  1694. UltraGridRow ugr = ultraGridSj.ActiveRow;
  1695. if (ugr != null)
  1696. {
  1697. strType = "0";
  1698. preTack = new PreTrackScale
  1699. {
  1700. predictionNo = ugr.Cells["predictionNo"].Text.Trim(),
  1701. forwardingUnitNo = ugr.Cells["forwardingUnitNo"].Text.Trim(),
  1702. forwardingUnitName = ugr.Cells["forwardingUnitName"].Text.Trim(),
  1703. matterNo = ugr.Cells["matterNo"].Text.Trim(),
  1704. matterName = ugr.Cells["matterName"].Text.Trim(),
  1705. receivingUintNo = ugr.Cells["receivingUintNo"].Text.Trim(),
  1706. receivingUintName = ugr.Cells["receivingUintName"].Text.Trim()
  1707. };
  1708. setPreTrackInfo(preTack);
  1709. seValidWhp();
  1710. }
  1711. }
  1712. string strIsRemote = "0";
  1713. private void timer2_Tick(object sender, EventArgs e)
  1714. {
  1715. if (!bCollectionStart)
  1716. {
  1717. RESTfulResult<List<MeterWorkMonitor>> rm = monitorService.doQueryOneWf(new MeterWorkMonitor { userNo = userId });
  1718. if (rm.Succeed)
  1719. {
  1720. if (rm.Data != null && rm.Data.Count > 0)
  1721. {
  1722. strIsRemote = rm.Data[0].isRemote;
  1723. #region 将按钮设置为接管的状态
  1724. btnStart.BackColor = Color.Red;
  1725. btnStart.Text = "取消接管";
  1726. timer2.Stop();
  1727. flagStart = false;
  1728. #endregion
  1729. lbPointName.Text = "";
  1730. lbMeterMan.Text = "";
  1731. txtPREDICTION_NO.ReadOnly = false;
  1732. cbCarNo.Enabled = true;
  1733. txtCarNo.ReadOnly = false;
  1734. DataTable dt = dtJGPointInfo.Clone();
  1735. DataRow dr = dt.NewRow();
  1736. PbCache.sportInfo = PbCache.sportInfos.Where(s => s.baseSpotNo == rm.Data[0].pointNo).FirstOrDefault();
  1737. dr["baseSpotNo"] = rm.Data[0].pointNo;
  1738. dr["baseSpotName"] = rm.Data[0].pointName;
  1739. dt.Rows.Add(dr);
  1740. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true);
  1741. ClsControlPack.RefreshAndAutoSize(ultraGridPW);
  1742. PbCache.collect_no = rm.Data[0].collectionCode;
  1743. bd.getSpot();
  1744. //=====如果此时的远程接管状态是2,则说明是监控端点击的远程接管,此时将自动派位改为挂起状态===========
  1745. /*
  1746. if (rm.Data[0].isTakeOver == "2")
  1747. {
  1748. btnStart.BackColor = Color.Red;
  1749. btnStart.Text = "挂起";
  1750. timer2.Enabled = false;
  1751. flagStart = false;
  1752. }
  1753. //*/
  1754. //===================================================================================================
  1755. collection.Start(rm.Data[0].pointNo, rm.Data[0].pointName);
  1756. GetIPVideo(PbCache.videoInfo);
  1757. setPicBoxSet();
  1758. bCollectionStart = true;
  1759. lbPointName.Text = rm.Data[0].pointName;
  1760. lbMeterMan.Text = userName;
  1761. //放开按钮
  1762. /*
  1763. btnOpenVoice.Enabled = true;
  1764. btnCheckBalance.Enabled = true;
  1765. btnTareWgt.Enabled = true;
  1766. btnSave.Enabled = true;
  1767. //*/
  1768. }
  1769. }
  1770. }
  1771. else
  1772. {
  1773. /*
  1774. if (btnOpenVoice.Enabled)
  1775. {
  1776. //禁用按钮
  1777. btnOpenVoice.Enabled = false;
  1778. btnCheckBalance.Enabled = false;
  1779. btnTareWgt.Enabled = false;
  1780. btnSave.Enabled = false;
  1781. }
  1782. //*/
  1783. }
  1784. }
  1785. List<PictureBox> ltPicBoxs = new List<PictureBox>();
  1786. private void setPicBoxSet()
  1787. {
  1788. if (PbCache.videoChild != null && PbCache.videoChild.Count > 0)
  1789. {
  1790. int i = 0;
  1791. foreach (MeterBaseVideoChild child in PbCache.videoChild.OrderByDescending(s => s.p_ip))
  1792. {
  1793. i++;
  1794. if (i < 2) //只开启2个视频 1-3通道 左右上 6通道室内
  1795. {
  1796. PictureBox pb = new PictureBox();
  1797. pb.Name = "pb" + i;
  1798. pb.Dock = DockStyle.Top;
  1799. pb.Height = 245;
  1800. pb.DoubleClick += new EventHandler(PictureBoxDoubleClick);
  1801. pb.BorderStyle = BorderStyle.FixedSingle;
  1802. panel1.Controls.Add(pb);
  1803. cameraShotMain.RealPlay(pb, i);
  1804. }
  1805. }
  1806. }
  1807. }
  1808. private void lbWgt_ValueChanged(object sender, EventArgs e)
  1809. {
  1810. try
  1811. {
  1812. dAddWgt = Convert.ToDouble(string.IsNullOrEmpty(lbWgt.Text) ? 0 : lbWgt.Value);
  1813. }
  1814. catch
  1815. {
  1816. dAddWgt = 0;
  1817. }
  1818. }
  1819. bool bTest = true;
  1820. int iTestWgt = 0;
  1821. private void numericUpDown1_KeyDown(object sender, KeyEventArgs e)
  1822. {
  1823. if (e.KeyValue == 13)
  1824. {
  1825. iTestWgt = (int)numericUpDown1.Value;
  1826. }
  1827. }
  1828. private void txtCarNo_KeyDown(object sender, KeyEventArgs e)
  1829. {
  1830. if (e.KeyValue == 13)
  1831. {
  1832. if (PbCache.collect != null && PbCache.collect.weight > 0)
  1833. {
  1834. strTxtCarNo = txtCarNo.Text.Trim();
  1835. QueryCarNo();
  1836. flagCarNo = true;
  1837. }
  1838. }
  1839. }
  1840. private void btnInnerQuery_Click(object sender, EventArgs e)
  1841. {
  1842. frmMatCompanyInfo frmM = new frmMatCompanyInfo();
  1843. if (frmM.ShowDialog() == DialogResult.OK)
  1844. {
  1845. txtPREDICTION_NO.Text = frmM.PreNo;
  1846. QueryInnerInfo();
  1847. }
  1848. }
  1849. int iPic = 0;
  1850. /// <summary>
  1851. /// 不显示大图
  1852. /// </summary>
  1853. private void pictureShow_DoubleClick(object sender, EventArgs e)
  1854. {
  1855. plImgShow.Visible = false;
  1856. cameraShotMain.StopRealPlay(iPic);
  1857. iPic = 0;
  1858. }
  1859. /// <summary>
  1860. /// 放大图像
  1861. /// </summary>
  1862. private void PictureBoxDoubleClick(object sender, EventArgs e)
  1863. {
  1864. if (iPic != 0)
  1865. {
  1866. cameraShotMain.StopRealPlay(iPic);
  1867. }
  1868. PictureBox picture = (PictureBox)sender;
  1869. iPic = Convert.ToInt32(picture.Name.Substring(picture.Name.Length - 1, 1));
  1870. plImgShow.Visible = true;
  1871. cameraShotMain.RealPlay(pictureShow, iPic);
  1872. }
  1873. }
  1874. }