frmOneYardToEnd.cs 84 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694
  1. using CarMeterSystem.OptionCls;
  2. using com.hnshituo.core.webapp.vo;
  3. using Common;
  4. using MeterConditionLibrary;
  5. using MeterPlugInLibrary;
  6. using MeterSceneLibrary;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Configuration;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Threading;
  14. using System.Windows.Forms;
  15. namespace CarMeterSystem
  16. {
  17. public partial class frmOneYardToEnd : Form
  18. {
  19. public frmOneYardToEnd()
  20. {
  21. InitializeComponent();
  22. }
  23. private MeterWorkCarActualFirst firstDb = null;//一次计量数据
  24. private SceneControl inner = new SceneControl(); //非内倒业务处理
  25. private Print printClass = new Print();//打印
  26. private VoicePlay vicPlayClass = new VoicePlay();//语音播放
  27. private Log lg = Log.GetInstance(); //写日志
  28. private MeterBaseCarService carService = new MeterBaseCarService(); //复磅操作
  29. private MeterWorkCarRecoverService carRecoverService = new MeterWorkCarRecoverService(); //复磅操作
  30. private MeterBaseTermTareDataService termTareDate = new MeterBaseTermTareDataService();//留期限皮操作
  31. private MeterWorkMonitorService monitor = new MeterWorkMonitorService(); //设备及远程呼叫监控表
  32. private MeterWorkCarActualFirstService workCarActualFirstService = new MeterWorkCarActualFirstService(); //一次计量数据
  33. private PreTrackScaleService trackService = new PreTrackScaleService();//查询预报信息
  34. private MeterBaseMatterInfoService matterInfoService = new MeterBaseMatterInfoService(); //物料信息
  35. private validTermTareCar termTareCar = new validTermTareCar();//验证是否可留期限皮
  36. private validRecoverInfo recoverInfo = new validRecoverInfo();//验证是否需要复磅以及是否满足复磅条件
  37. private validPrediction validPred = new validPrediction(); //验证预报信息
  38. private validUnloadAutomatic unloadAutomatic = new validUnloadAutomatic(); //自动卸货
  39. private validDataValidity dataValidity = new validDataValidity(); //验证采集的重量是否正常
  40. private validMatterName validMatterName = new validMatterName(); //物资名称验证与类型类型的关系验证
  41. private validDoorPost validDoorPost = new validDoorPost(); //验证门岗进厂的数据:返回空则说明已有进厂记录,允许计量
  42. private validUnitName validUnitName = new validUnitName();//九钢收发货名称的验证
  43. private JGLimsInterface limsInterface = new JGLimsInterface(); //九钢检化验提示处理
  44. private validShipWeight vShipWeight = new validShipWeight(); //本次的提单量+历史已经运输的总量,若大于提单总量,则不允许继续计量了
  45. private double firstWgt = 0;
  46. private bool bRailwayActual = true;
  47. private bool isVoiceDownCar = false;//车上人员请下车播放一次
  48. private string firstCode = "";//上次扫码编号
  49. private string TrackCarNo = "";//预报车号
  50. private string sPreCarNo = "";//摄像头识别车号
  51. private string limsMsg = "";
  52. //lianDaWgt
  53. //=========== 2021-11-25 eason add ====================
  54. LianDaMeter lianda = new LianDaMeter();
  55. int lianDaWgt = Convert.ToInt32(ConfigurationManager.AppSettings["lianDaWgt"]?.ToString() ?? "0");
  56. string lianDaPointNo = ConfigurationManager.AppSettings["lianDaPointNo"]?.ToString() ?? "00019";
  57. /// <summary>
  58. /// 是否是联达物料 0否1是
  59. /// </summary>
  60. PbModelDb lianDaQuery = null;
  61. //=====================================================
  62. private void frmOneYardToEnd_Load(object sender, EventArgs e)
  63. {
  64. try
  65. {
  66. //不显示重量
  67. ucWeightCarTJXJG1.setWgtBackColor(true);
  68. if (PbCache.isTest)
  69. {
  70. btnFH.Enabled = true;
  71. btnFH.Visible = true;
  72. }
  73. btnTare.Visible = false;
  74. timer1.Start();
  75. lbPointName.Text = PbCache.sportInfo.baseSpotName;
  76. ucCarMeterInfoJisco1.setMeterType(PbCache.bussinessTypeName);
  77. tableLayoutPanelPromptMsg.CellBorderStyle = (TableLayoutPanelCellBorderStyle)BorderStyle.FixedSingle;
  78. }
  79. catch (Exception ex)
  80. {
  81. lg.WriteLog(13, PbCache.lockCarNo + "frmCarSalePurchase_Load事件异常:" + ex.Message);
  82. }
  83. }
  84. /// <summary>
  85. /// 数据保存
  86. /// </summary>
  87. /// <param name="sender"></param>
  88. /// <param name="e"></param>
  89. private void btnSave_Click(object sender, EventArgs e)
  90. {
  91. try
  92. {
  93. if (PbCache.collect == null) return;
  94. PbCache.isLockFrm = true;
  95. PbCache.lockCarNo = PbCache.collect.carno;
  96. PbCache.lockWgt = PbCache.collect.weight;
  97. btnSave.Enabled = false;
  98. lg.WriteLog(15, PbCache.lockCarNo + "点击保存按钮");
  99. PreTrackScale preTrack = ucCarMeterInfoJisco1._preTrack;
  100. string strMsg = "";
  101. #region 红外对射及量程验证
  102. valid.ValidMethod();
  103. if (PbCache.range != null && PbCache.range.upperRange < PbCache.collect.weight)
  104. {
  105. //超量程
  106. vicPlayClass.GetVoicePlay("已超量程", PbCache.collect.carno);
  107. PbCache.ResultMessage = "当前重量已超量程,秤体量程为【" + PbCache.range.upperRange / 1000 + "】T,不允许进行自助计量操作!";
  108. PbCache.isLockFrm = false;
  109. btnSave.Enabled = true;
  110. setMsg(PbCache.ResultMessage);
  111. return;
  112. }
  113. else if (PbCache.collect.weightStatus == 0 && !PbCache.monitorResult.valid_park_status)
  114. {
  115. //重量稳定,且对射验证不合格
  116. vicPlayClass.GetVoicePlay("您的车辆未停到位", PbCache.collect.carno);
  117. PbCache.ResultMessage = "您的车辆未停到位,请调整车辆位置,不要遮挡激光检测设备,不允许进行自助计量操作!"; //btnSave_Click
  118. PbCache.isLockFrm = false;
  119. btnSave.Enabled = true;
  120. setMsg(PbCache.ResultMessage);
  121. return;
  122. }
  123. #endregion 红外对射及量程验证
  124. //仪表重量验证
  125. if (!dataValidity.ValidMethod(PbCache.lockWgt)) {
  126. PbCache.isLockFrm = false;
  127. btnSave.Enabled = true;
  128. setMsg(PbCache.ResultMessage);
  129. return;
  130. }
  131. //物资名称验证与类型类型的关系验证;业务类型验证
  132. if (!validMatterName.ValidMethod(preTrack))
  133. {
  134. PbCache.isLockFrm = false;
  135. btnSave.Enabled = true;
  136. setMsg(PbCache.ResultMessage);
  137. return;
  138. }
  139. //九钢收发货名称与计量点区域的验证
  140. if (!validUnitName.ValidMethod(preTrack))
  141. {
  142. PbCache.isLockFrm = false;
  143. btnSave.Enabled = true;
  144. setMsg(PbCache.ResultMessage);
  145. return;
  146. }
  147. //2021年6月22日 存在需要复磅的数据,不允许进行保存操作
  148. recoverInfo.ValidAllowSave(PbCache.lockCarNo);
  149. if (PbCache.isAllowRecover)
  150. {
  151. PbCache.isLockFrm = false;
  152. btnSave.Enabled = true;
  153. setMsg(PbCache.ResultMessage);
  154. return;
  155. }
  156. //存在零点禁止计量
  157. if (PbCache.isZeroAlarm)
  158. {
  159. PbCache.isLockFrm = false;
  160. btnSave.Enabled = true;
  161. setMsg("秤体存在零点,禁止进行计量操作!请点[语音求助],联系司秤工处理!");
  162. return;
  163. }
  164. //本次的提单量+历史已经运输的总量,若大于提单总量,则不允许继续计量了
  165. //BourneCao暂时屏蔽
  166. //if (!vShipWeight.ValidMethod(preTrack))
  167. //{
  168. // PbCache.isLockFrm = false;
  169. // btnSave.Enabled = true;
  170. // setMsg(PbCache.ResultMessage);
  171. // return;
  172. //}
  173. txtMsgInfo.Text = "称重保存中......";
  174. //FrmMessage frmMessage = FrmMess("是否确认保存当前计量数据!", "继续保存");
  175. try
  176. {
  177. //是否在黑名单内
  178. MeterBaseCarBlacelistService bService = new MeterBaseCarBlacelistService();
  179. RESTfulResult<List<MeterBaseCarBlacelist>> rmB = bService.doQueryWf(new MeterBaseCarBlacelist { carNo = PbCache.lockCarNo, valueFlag = "0" });
  180. if (rmB.Succeed)
  181. {
  182. if (rmB.Data != null && rmB.Data.Count > 0)
  183. {
  184. PbCache.ResultMessage = string.Format("车辆[{0}在黑名单内,不能计量", PbCache.lockCarNo);
  185. lg.WriteLog(3, string.Format("车辆[{0}在黑名单内,不能计量", PbCache.lockCarNo));
  186. PbCache.isLockFrm = false;
  187. btnSave.Enabled = true;
  188. return;
  189. }
  190. }
  191. else
  192. {
  193. PbCache.ResultMessage = "保存失败,获取黑名单数据异常,请稍后再试";
  194. lg.WriteLog(3, "获取黑名单数据异常,请稍后再试");
  195. PbCache.isLockFrm = false;
  196. btnSave.Enabled = true;
  197. return;
  198. }
  199. //验证门岗进厂的数据:返回空则说明已有进厂记录,允许计量
  200. // BourneCao暂时注释
  201. //if (!validDoorPost.ValidMethod(preTrack))
  202. //{
  203. // PbCache.isLockFrm = false;
  204. // btnSave.Enabled = true;
  205. // setMsg(PbCache.ResultMessage);
  206. // return;
  207. //}
  208. // BourneCao暂时注释
  209. // 附加重量
  210. //PbCache.addWgt = preTrack.addWeightSum == null ? 0 : preTrack.addWeightSum.Value;
  211. bool flag = false;
  212. //说明:不管是成功还是失败,都在180行有提示信息
  213. //if (inner.WeightMeter(preTrack, null, out strMsg)) //meterTypeNo "001006001","001006002"
  214. //{
  215. // flag = true;
  216. // ucWeightCarTJXJG1.setWgtBackColor(true);//称重完成后,显示颜色;
  217. // //票据打印
  218. // //Print1(PbCache.actualFirstNo);
  219. // //九钢检化验处理
  220. // limsInterface.imsCarLims(preTrack);
  221. // //若不是测试,保存完成后则不能返回,若是测试界面进入的则可点击返回按钮
  222. // if (PbCache.isTest)
  223. // {
  224. // btnFH.Enabled = true;
  225. // btnFH.Visible = true;
  226. // }
  227. //}
  228. //else
  229. //{
  230. // PbCache.isLockFrm = false;
  231. // btnSave.Enabled = true;
  232. //}
  233. #region 酒钢业务流程判断
  234. // 把车号加上-
  235. string tempCarNo = PbCache.lockCarNo;
  236. RESTfulResult<List<MeterBaseCar>> resCarList = carService.doQueryCarList(new MeterBaseCar { carNo = tempCarNo });
  237. RESTfulResult<rtInfo> strRm = new RESTfulResult<rtInfo>();
  238. if (resCarList.Succeed)
  239. {
  240. if (resCarList.Data != null && resCarList.Data.Count == 1)
  241. {
  242. MeterBaseCar car = resCarList.Data[0];
  243. ExecuteMethod em = new ExecuteMethod();
  244. // 厂内车辆
  245. if (car.carTypeNo == "001004003")
  246. {
  247. try
  248. {
  249. strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "InnerCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
  250. }
  251. catch (Exception exp)
  252. {
  253. PbCache.ResultMessage = "获取计量场景信息失败,请点击语音求助";
  254. //这里是未找到方法的情况
  255. lg.WriteLog(3, "获取场景失败!" + strRm.ResultMessage);
  256. //break;
  257. return;
  258. }
  259. }
  260. // 厂外车辆
  261. else if (car.carTypeNo == "001004002")
  262. {
  263. try
  264. {
  265. strRm = em.GetAndExecuteMethod<rtInfo>("MeterSceneLibrary", "OuterCarJISCO", "MeterMethod", new object[] { new PreTrackScale { } });
  266. }
  267. catch (Exception exp)
  268. {
  269. PbCache.ResultMessage = "获取计量场景信息失败,请点击语音求助";
  270. //这里是未找到方法的情况
  271. lg.WriteLog(3, "获取场景失败!" + strRm.ResultMessage);
  272. //break;
  273. return;
  274. }
  275. }
  276. if (strRm.Succeed)
  277. {
  278. if (strRm.Data.isError)
  279. {
  280. //如果是报错则直接不执行,并写入信息到界面,同时调用语音播报
  281. vicPlayClass.GetVoicePlay("计量数据保存失败", PbCache.collect.carno);
  282. PbCache.ResultMessage = strRm.Data.resultInfo;
  283. PbCache.isLockFrm = false;
  284. btnSave.Enabled = true;
  285. setMsg(PbCache.ResultMessage);
  286. return;
  287. }
  288. if (strRm.Data.result) //说明:标识当前跑了一个场景成功了;场景完成后则返回,不再进行下一个场景的执行操作;
  289. {
  290. PbCache.ResultMessage = strRm.Data.resultInfo; //语音提示文件
  291. //return;
  292. }
  293. else
  294. {
  295. //说明:不满足场景的的要求,不能进行return,继续下一个场景,若所有的场景都失败,则提示“未找到计量场景配置信息”
  296. //ResultMessage = strRm.Data.resultInfo;
  297. //return strRm.Data.result; //2021-3-18 杨秀东注释;要处理一车联运(多场景)的数据;问题:提示信息会出现问题
  298. }
  299. }
  300. else
  301. {
  302. vicPlayClass.GetVoicePlay("计量数据保存失败", PbCache.collect.carno);
  303. PbCache.ResultMessage = strRm.ResultMessage;
  304. PbCache.isLockFrm = false;
  305. btnSave.Enabled = true;
  306. setMsg(PbCache.ResultMessage);
  307. // todo:更新监控表,此秤点求助状态为求助中
  308. if (PbCache.monitor.isHelp == "0")
  309. {
  310. RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, isHelp = "1" });
  311. if (!rms.Succeed)
  312. {
  313. lg.WriteLog(3, PbCache.lockCarNo + "求助写入失败");
  314. }
  315. }
  316. return;
  317. }
  318. }
  319. else
  320. {
  321. PbCache.ResultMessage += "\n\r无法确认车辆类别,保存失败";
  322. PbCache.isLockFrm = false;
  323. btnSave.Enabled = true;
  324. setMsg(PbCache.ResultMessage);
  325. return;
  326. }
  327. }
  328. #endregion
  329. #region 期限皮显示及保存
  330. //留期限皮提醒
  331. string sql = @"select base_spot_no baseSpotNo,
  332. base_spot_name baseSpotName,
  333. warn_time warnTime,
  334. end_time endTime,
  335. car_no carNo
  336. from Meter_Base_Term_Tare_Data
  337. where car_no='" + PbCache.lockCarNo + "' and value_flag='0' order by METER_TIME desc ";
  338. PbModelDbService<List<MeterBaseTermTareData>> pbModelDbService = new PbModelDbService<List<MeterBaseTermTareData>>();
  339. RESTfulResult<List<MeterBaseTermTareData>> rES = pbModelDbService.executeSqlDataWf(sql);
  340. if (rES.Succeed)
  341. {
  342. if (rES.Data != null && rES.Data.Count > 0)
  343. {
  344. if (DateTime.Now.CompareTo(rES.Data[0].endTime) >= 0)
  345. {
  346. PbCache.ResultMessage += "\n\r提醒:期限皮重已过期,请及时留期限皮";
  347. }
  348. else if (DateTime.Now.CompareTo(rES.Data[0].warnTime) >= 0)
  349. {
  350. PbCache.ResultMessage += "\n\r提醒:期限皮重将要过期,请及时留期限皮";
  351. }
  352. }
  353. }
  354. //语音提醒部分
  355. //flag =true表示称重成功
  356. if (flag && PbCache.ResultMessage.Contains("请及时留期限皮"))
  357. {
  358. vicPlayClass.GetVoicePlay("称重完成空车留期限皮", PbCache.lockCarNo);
  359. }
  360. else
  361. {
  362. vicPlayClass.GetVoicePlay(strMsg, PbCache.lockCarNo);
  363. }
  364. //提示信息,
  365. //txtMsgInfo.Text = PbCache.ResultMessage;
  366. lblog = string.IsNullOrEmpty(PbCache.ResultMessage) ? strMsg : PbCache.ResultMessage;//偶尔出现ResultMessage为空的情况
  367. PbCache.ResultMessage = lblog;
  368. //queryWeightinfo(preTrack.predictionNo);
  369. DoShowlbLog(PbCache.ResultMessage);
  370. //期限皮按钮显示
  371. if (flag && !btnTare.Visible)
  372. {
  373. try
  374. {
  375. //2021年3月15日 杨秀东 期限皮重显示按钮的显示方法修改 isShowBtnTare ValidMethod
  376. if (!string.IsNullOrEmpty(TrackCarNo) && termTareCar.isShowBtnTare(TrackCarNo))
  377. {
  378. btnTare.Visible = true;
  379. }
  380. }
  381. catch (Exception ex)
  382. {
  383. lg.WriteLog(13, PbCache.lockCarNo + "期限皮重按钮显示事件异常:" + ex.Message);
  384. }
  385. }
  386. //
  387. #endregion 期限皮显示及保存
  388. #region LED写入
  389. PbCache.ledInfo = string.Format("计量完成,车号:{0},车重:{1},物资:{2}", PbCache.lockCarNo, PbCache.lockWgt, preTrack != null ? preTrack.matterName : "");
  390. #endregion LED写入
  391. //计量完成后,显示毛重或者皮重
  392. _ = BeginInvoke(new Action(() =>
  393. {
  394. if (PbCache.isTareWeight)
  395. ucWeightCarTJXJG1.setWeightType("皮重");
  396. else
  397. ucWeightCarTJXJG1.setWeightType("毛重");
  398. }));
  399. //图片截取
  400. // BourneCao暂时注释
  401. _ = BeginInvoke(new Action(() => { shotImage(); }));
  402. }
  403. catch (Exception ex)
  404. {
  405. //语音播报
  406. vicPlayClass.GetVoicePlay("称重数据保存失败", PbCache.lockCarNo);
  407. //提示信息,
  408. //txtMsgInfo.Text = "称重数据保存失败";
  409. lblog = "称重数据保存失败!" + ex.Message;
  410. DoShowlbLog(lblog);
  411. lg.WriteLog(3, PbCache.lockCarNo + "称重保存失败:" + ex.Message);
  412. PbCache.isLockFrm = false;
  413. btnSave.Enabled = true;
  414. }
  415. }
  416. catch (Exception ex)
  417. {
  418. lg.WriteLog(13, PbCache.lockCarNo + "保存事件异常:" + ex.Message);
  419. }
  420. }
  421. /// <summary>
  422. /// 查询重量信息,显示在界面上面
  423. /// </summary>
  424. /// <param name="strPredition"></param>
  425. public void queryWeightinfo(string strPredition)
  426. {
  427. try
  428. {
  429. string sqls = @"select '毛重:' || t.gross_weight / 1000 || ' T / 皮重:' || t.tare_weight / 1000 || ' T / 净重:' || t.net_weight / 1000 || ' T ' as txt as txt
  430. from meter_work_car_actual t where t.value_flag = '0' and T.Prediction_No = '" + strPredition + @"'";
  431. PbModelDbService<string> pbp = new PbModelDbService<string>();
  432. RESTfulResult<string> rmT = pbp.executeSqlDataWf(sqls);
  433. if (rmT.Succeed && rmT.Data != null && rmT.Data.Length>10)
  434. {
  435. }
  436. }
  437. catch (Exception ex)
  438. {
  439. lg.WriteLog(3, PbCache.lockCarNo + "计量完成,但重量信息提示失败:" + PbCache.actualFirstNo + ex.Message); ;
  440. }
  441. }
  442. /// <summary>
  443. /// 终端截图
  444. /// </summary>
  445. public void shotImage() {
  446. try
  447. {
  448. #region 截取图片信息
  449. //截取屏幕信息
  450. Point screenPoint = this.PointToScreen(new Point());
  451. Rectangle rect = new Rectangle(screenPoint, this.Size);
  452. Image img = new Bitmap(rect.Width, rect.Height);
  453. Graphics g = Graphics.FromImage(img);
  454. g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg"
  455. img.Save(string.Format("{0}imgShort\\formalImg\\{1}_{2}_{3}.jpg",
  456. AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
  457. PbCache.sportInfo.baseSpotNo, "C" + PbCache.actualFirstNo, 7), System.Drawing.Imaging.ImageFormat.Jpeg);
  458. //(PbCache.videoChild.Count + 1)), System.Drawing.Imaging.ImageFormat.Jpeg);
  459. //*
  460. //最后进行截图操作
  461. CameraShotCls cameraShot = new CameraShotCls();
  462. cameraShot.CapMethod(PbCache.actualFirstNo);
  463. //*/
  464. #endregion 截取图片信息
  465. }
  466. catch (Exception ex)
  467. {
  468. lg.WriteLog(3, "计量完成,但图片截取失败,编号:" + PbCache.actualFirstNo);
  469. }
  470. }
  471. private void btnHelp_Click(object sender, EventArgs e)
  472. {
  473. if (PbCache.monitor.isHelp == "0")
  474. {
  475. RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, isHelp = "1" });
  476. if (!rms.Succeed)
  477. {
  478. lg.WriteLog(3, PbCache.lockCarNo + "求助写入失败");
  479. }
  480. }
  481. lg.WriteLog(15, PbCache.lockCarNo + "点击了语音求助按钮");
  482. }
  483. private bool isOverSound = false;
  484. private bool isCalibration = true;
  485. private bool bRelation = true;
  486. private bool isShowRecover = true; //是否需要判断显示复磅按钮
  487. //验证校秤数据
  488. private validCalibration vCalib = new validCalibration();
  489. //验证对射
  490. private validParkStatus valid = new validParkStatus();
  491. //是否已经播放不验证对射语音
  492. bool isPlayCalibVoice = false;
  493. //是否已经播放停留超时语音
  494. bool isPlayOvertimeVoice = false;
  495. //是否已经播放超量程语音
  496. bool isPlayRangeVoice = false;
  497. private validCarno vCarNo = new validCarno();
  498. private bool bXCStart = false;
  499. private void timer1_Tick(object sender, EventArgs e)
  500. {
  501. try
  502. {
  503. if (PbCache.collect.weight < 500)
  504. {
  505. //不显示重量
  506. ucWeightCarTJXJG1.setWgtBackColor(false);
  507. isCalibration = true;
  508. PbCache.addWgt = 0;
  509. this.Close();
  510. }
  511. #region 1、求助按钮控制
  512. if (PbCache.monitor != null && !string.IsNullOrEmpty(PbCache.monitor.isHelp))
  513. {
  514. switch (PbCache.monitor.isHelp)
  515. {
  516. case "0": //未呼叫
  517. {
  518. if (btnHelp.Text != "语音求助")
  519. {
  520. btnHelp.BackColor = Color.DodgerBlue;
  521. btnHelp.Text = "语音求助";
  522. }
  523. }; break;
  524. case "1": //呼叫待接听
  525. {
  526. if (btnHelp.Text != "呼叫中")
  527. {
  528. btnHelp.BackColor = Color.Red;
  529. btnHelp.Text = "呼叫中";
  530. }
  531. }; break;
  532. case "2": //呼叫已接听
  533. {
  534. if (btnHelp.Text != "已接听")
  535. {
  536. btnHelp.BackColor = Color.Green;
  537. btnHelp.Text = "已接听";
  538. }
  539. }; break;
  540. }
  541. }
  542. #endregion 1、求助按钮控制
  543. #region 界面未锁定的情况下,初始设置值<车号、监控界面交互、设置初始的毛皮类型>
  544. if (!PbCache.isLockFrm)
  545. {
  546. //ucWeightT1.setWgt(PbCache.collect.weight);
  547. //周俊伶注释
  548. //ucWeightT1.setWgt(Math.Round((double)PbCache.collect.weight / 1000, 2)); //2021年5月10日界面显示单位,调整为T
  549. //ucWeightT1.setStable(PbCache.collect.weightStatus != 1 ? true : false);
  550. //ucWeightT1.setExceed(PbCache.collect.weight > PbCache.range.upperRange ? false : true);
  551. //2021年5月10日界面显示单位,调整为T
  552. ucWeightCarTJXJG1.setWgt(Math.Round((double)PbCache.collect.weight / 1000, 2));
  553. // 修改界面过磅状态红/绿图标
  554. ucWeightCarTJXJG1.setStable(PbCache.collect.weightStatus != 1 ? true : false);
  555. #region 远程计量交互代码
  556. //如果处于远程计量状态,且远程保存完成了,则提示保存完成,让司机知道
  557. if (PbCache.monitor != null)// && PbCache.collect.weight > 500)
  558. {
  559. if (!string.IsNullOrEmpty(PbCache.monitor.isOverWgt) && PbCache.monitor.isTakeOver == "2" && !isOverSound) //&& !PbCache.isLockFrm)
  560. {
  561. ucWeightCarTJXJG1.setWgtBackColor(true);//称重完成后,显示颜色;
  562. txtMsgInfo.Text = "称重完成";
  563. vicPlayClass.GetVoicePlay("称重完成", PbCache.collect.carno);
  564. isOverSound = true;
  565. Print1(PbCache.monitor.isOverWgt);
  566. return;
  567. }
  568. if (PbCache.monitor.isTakeOver == "2" || !string.IsNullOrEmpty(PbCache.monitor.isOverWgt))
  569. {
  570. btnSave.Visible = false;
  571. bRelation = true;
  572. lg.WriteLog(14, "车号:" + PbCache.collect.carno + ";远程计量完成后,保存按钮隐藏!");
  573. if (!txtMsgInfo.Text.Contains("称重完成") && PbCache.monitor.isTakeOver == "2")
  574. {
  575. txtMsgInfo.Text = "司秤工正在远程计量,请等待处理!!";
  576. }
  577. if (!txtMsgInfo.Text.Contains("称重完成") && !string.IsNullOrEmpty(PbCache.monitor.isOverWgt))
  578. {
  579. txtMsgInfo.Text = "本次计量称重已经完成,车辆请下秤!!";
  580. }
  581. return;
  582. }
  583. }
  584. #endregion 远程计量交互代码
  585. if (string.IsNullOrEmpty(TrackCarNo))
  586. {
  587. txtCarNo.Text = PbCache.collect.carno;
  588. }
  589. else
  590. {
  591. txtCarNo.Text = TrackCarNo;
  592. if (PbCache.collect != null && !string.IsNullOrEmpty(PbCache.collect.carno))
  593. {
  594. if (TrackCarNo != PbCache.collect.carno)
  595. {
  596. if (PbCache.monitor.carErr != "1") //写入一次车号异常
  597. {
  598. RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, carErr = "1" });
  599. }
  600. }
  601. else if (PbCache.monitor.carErr == "1") //若车号相等,但是之前写了一次车号异常,此时要改为车号正常
  602. {
  603. RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, carErr = "0" });
  604. }
  605. }
  606. // ??BourneCao 酒钢不可能预报车号和识别车号不一致
  607. vCarNo.ValidMethod(new PreTrackScale { carNo = TrackCarNo });
  608. if (TrackCarNo != PbCache.collect.carno && !PbCache.monitorResult.valid_carno)
  609. {
  610. // 2021年5月11日 未识别到车牌号,进行提示,避免出现重新扫码点保存的情况
  611. if (string.IsNullOrEmpty(PbCache.collect.carno))
  612. {
  613. txtMsgInfo.Text = string.Format("摄像头未识别到车牌号,不允许进行【保存】操作,请点击语音求助!");
  614. lg.WriteLog(14, "摄像头未识别到车牌号,不允许进行【保存】操作,请点击语音求助!");
  615. }
  616. else
  617. {
  618. txtMsgInfo.Text = string.Format("预报车号【{0}】与摄像头识别车号【{1}】不一致,请点击语音求助", TrackCarNo, PbCache.collect.carno);
  619. lg.WriteLog(14, "车号:" + PbCache.collect.carno + ";预报车号" + TrackCarNo + "与摄像头识别车号" + PbCache.collect.carno + "不一致!");
  620. }
  621. btnSave.Visible = false;
  622. return;
  623. }
  624. else
  625. {
  626. if (txtMsgInfo.Text.Contains("摄像头"))
  627. {
  628. txtMsgInfo.Text = ""; //将原来的不允许计量的提示给去掉
  629. }
  630. PbCache.collect.carno = TrackCarNo;
  631. }
  632. }
  633. }
  634. #endregion 界面未锁定的情况下,初始设置值<车号、监控界面交互、设置初始的毛皮类型>
  635. #region 红外对射及量程验证及停留超时验证
  636. valid.ValidMethod();
  637. if (PbCache.range != null && PbCache.range.upperRange < PbCache.collect.weight)
  638. {
  639. //超量程
  640. if (!isPlayRangeVoice)
  641. {
  642. vicPlayClass.GetVoicePlay("已超量程", PbCache.collect.carno);
  643. txtMsgInfo.Text = "当前重量已超量程,秤体量程为【" + PbCache.range.upperRange / 1000 + "】T,不允许进行自助计量操作!";
  644. isPlayRangeVoice = true;
  645. }
  646. }
  647. if (PbCache.collect.weightStatus == 0 && !PbCache.monitorResult.valid_park_status)
  648. {
  649. //重量稳定,且对射验证不合格
  650. if (!isPlayCalibVoice)
  651. {
  652. vicPlayClass.GetVoicePlay("您的车辆未停到位", PbCache.collect.carno);
  653. txtMsgInfo.Text = "您的车辆未停到位,请调整车辆位置,不要遮挡激光检测设备,不允许进行自助计量操作!";//timer1_Tick
  654. isPlayCalibVoice = true;
  655. }
  656. }
  657. if (PbCache.isOvertimeAlarm)
  658. {
  659. //停留超时提醒,不作为计量卡控的条件
  660. if (!isPlayOvertimeVoice && !PbCache.isLockFrm)
  661. {
  662. vicPlayClass.GetVoicePlay("停留超时", PbCache.collect.carno);
  663. //txtMsgInfo.Text = "您的车辆已停留超过三分钟,遇到操作问题请点击【语音求助】联系司秤工处理或继续进行自助计量!";
  664. isPlayOvertimeVoice = true;
  665. return;
  666. }
  667. }
  668. #endregion 红外对射及量程验证及停留超时验证
  669. #region 查一次是否校秤,若未校秤则不能计量
  670. //*
  671. if (bRelation)
  672. {
  673. string msgInfo = "";
  674. isCalibration = vCalib.ValidMethod(new MeterWorkCalibrationMain { baseSpotNo = PbCache.sportInfo.baseSpotNo, valueFlag = "2" }, out msgInfo);
  675. bRelation = false;
  676. }
  677. if (!isCalibration)
  678. {
  679. MeterBaseCalibraNumRel calibraNumRel = PbCache.ltBaseCalibraNumRel.Where(s => s.baseSpotNo == PbCache.sportInfo.baseSpotNo).FirstOrDefault();
  680. if (calibraNumRel == null || calibraNumRel.isMeter == "否" || PbCache.collect.weight > (calibraNumRel.upWeight == null ? 0 : calibraNumRel.upWeight.Value))
  681. {
  682. if (!bXCStart)
  683. {
  684. vicPlayClass.GetVoicePlay("未校秤", "");
  685. bXCStart = true;
  686. }
  687. txtMsgInfo.Text = "未校秤无法计量";
  688. return;
  689. }
  690. }
  691. //*/
  692. #endregion 查一次是否校秤,若未校秤则不能计量
  693. #region 判断是否需要复磅
  694. if (isShowRecover && !string.IsNullOrEmpty(txtCarNo.Text))
  695. {
  696. recoverInfo.ValidMethod(txtCarNo.Text);
  697. if (PbCache.isAllowRecover)
  698. {
  699. btnRecover.Visible = true;
  700. }
  701. else
  702. {
  703. btnRecover.Visible = false;
  704. }
  705. isShowRecover = false;
  706. }
  707. #endregion 判断是否需要复磅
  708. #region 第一次查询,有车号,重量稳定,红外验证通过的情况只查一次
  709. //如果没有查过一次,且扫描到车号信息,且重量稳定
  710. if ((bRailwayActual || sPreCarNo != TrackCarNo || firstCode != PbCache.strCode) && PbCache.collect.weightStatus == 0 && PbCache.monitorResult.valid_park_status)
  711. {
  712. firstWgt = 0;
  713. sPreCarNo = TrackCarNo;
  714. #region 查询一次计量表中是否存在一条未结净的数据,非一车联运情况扫码两次,一车联运的话
  715. RESTfulResult<List<MeterWorkCarActualFirst>> RESTfulResult = workCarActualFirstService.doQueryWf(new MeterWorkCarActualFirst { carNo = PbCache.collect.carno, valueFlag = "1" });
  716. if (RESTfulResult.Succeed)
  717. {
  718. if (RESTfulResult.Data != null && RESTfulResult.Data.Count > 0)
  719. {
  720. if (PbCache.sportInfo.baseSpotNo == lianDaPointNo)
  721. {
  722. bool flag = false;
  723. foreach (MeterWorkCarActualFirst fs in RESTfulResult.Data)
  724. {
  725. //联达磅过的联达物料
  726. if (fs.predictionNo.Contains("_"))
  727. {
  728. firstWgt = fs.meterWeight.Value;
  729. firstDb = fs;
  730. firstDb.predictionNo = firstDb.predictionNo.Replace("_", "");
  731. //给用户控件设置值
  732. ucCarMeterInfoJisco1.setFormControlValue(firstDb);
  733. flag = true;
  734. break;
  735. }
  736. }
  737. if (!flag)
  738. {
  739. firstWgt = RESTfulResult.Data[0].meterWeight.Value;
  740. firstDb = RESTfulResult.Data[0];
  741. firstDb.predictionNo = firstDb.predictionNo.Replace("_", "");
  742. //给用户控件设置值
  743. ucCarMeterInfoJisco1.setFormControlValue(firstDb);
  744. }
  745. }
  746. else
  747. {
  748. foreach (MeterWorkCarActualFirst fs in RESTfulResult.Data)
  749. {
  750. if (fs.predictionNo != null && !fs.predictionNo.Contains("_"))
  751. {
  752. firstWgt = RESTfulResult.Data[0].meterWeight.Value;
  753. firstDb = RESTfulResult.Data[0];
  754. firstDb.predictionNo = firstDb.predictionNo.Replace("_", "");
  755. //给用户控件设置值
  756. ucCarMeterInfoJisco1.setFormControlValue(firstDb);
  757. break;
  758. }
  759. }
  760. }
  761. }
  762. bRailwayActual = false;
  763. }
  764. #endregion 查询一次计量表中是否存在一条未结净的数据,非一车联运情况扫码两次,一车联运的话
  765. #region 查一次是否可留期限皮,可以则显示按钮
  766. PbCache.lockWgt = PbCache.collect.weight;
  767. //2021年3月15日 期限皮重显示按钮的显示方法修改 isShowBtnTare ValidMethod
  768. if (termTareCar.isShowBtnTare(TrackCarNo))
  769. {
  770. lg.WriteLog(3, string.Format("9车辆[{0}进入期限皮重显示按钮的显示判断", TrackCarNo));
  771. btnTare.Visible = true;
  772. }
  773. //
  774. #endregion 查一次是否可留期限皮,可以则显示按钮
  775. }
  776. #endregion 第一次查询,有车号,重量稳定,红外验证通过的情况只查一次
  777. #region 毛皮净赋值;存在一次重量firstWgt的情况下才赋值毛皮净重
  778. if (PbCache.collect.weightStatus == 0 && firstWgt > 500)
  779. {
  780. if (Math.Abs(firstWgt - PbCache.collect.weight) > AppConfigCache.differenceWgt)
  781. {
  782. //2021年5月10日界面显示单位,调整为T
  783. if (PbCache.collect.weight > firstWgt)
  784. {
  785. txtGroess.Text = Math.Round((double)PbCache.collect.weight / 1000, 2) + "";
  786. txtTare.Text = Math.Round(firstWgt / 1000, 2) + "";
  787. }
  788. else
  789. {
  790. txtTare.Text = Math.Round((double)PbCache.collect.weight / 1000, 2) + "";
  791. txtGroess.Text = Math.Round(firstWgt / 1000, 2) + "";
  792. }
  793. txtNet.Text = Math.Round(Math.Abs(PbCache.collect.weight - firstWgt) / 1000, 2) + "";
  794. }
  795. }
  796. #endregion 毛皮净赋值;存在一次重量firstWgt的情况下才赋值毛皮净重
  797. #region 界面未锁定的情况下,如果,有车号,重量稳定了,停车线验证通过,完成了扫码验证
  798. //没有远程接管,且已查过一次数据,且界面未锁定的情况下,如果,有车号,重量稳定了,停车线验证通过,完成了扫码验证的情况下,则按钮可用
  799. if (PbCache.monitor != null && PbCache.monitor.isTakeOver == "0" && !bRailwayActual
  800. && PbCache.collect.weightStatus == 0 && ucWeightT1.isGreenWgt)
  801. {
  802. if (!PbCache.isLockFrm)
  803. {
  804. if (!btnSave.Visible)//PbCache.isLockFrm
  805. {
  806. btnSave.Visible = true;
  807. }
  808. if (!isVoiceDownCar)
  809. {
  810. isVoiceDownCar = true;
  811. vicPlayClass.GetVoicePlay("车上人员请下车", PbCache.collect.carno);
  812. //txtMsgInfo.Text = "请核对车号后,扫描您手机中的二维码";
  813. }
  814. }
  815. else if (PbCache.monitor.validMatClick == "0")
  816. {
  817. //已锁定 && !PbCache.isLockFrm
  818. if (!btnSave.Enabled)
  819. {
  820. PbCache.isLockFrm = false;
  821. btnSave.Enabled = true;
  822. // 如果计量点配置中,设置了秤点计量类型为智能计量(下秤),验证扫码信息是否与识别车号一致。
  823. // 如果为是,自动保存
  824. }
  825. }
  826. }
  827. else
  828. {
  829. //2021年12月30日 添加提示信息
  830. if (!PbCache.isLockFrm)
  831. {
  832. if (PbCache.monitor.isTakeOver == "1")
  833. {
  834. lblog = "正在进行派位,不允许进行自助计量,请点击【语音求助】,联系司秤工处理!";
  835. DoShowlbLog(lblog);
  836. }
  837. if (PbCache.monitor.isTakeOver == "2")
  838. {
  839. lblog = "正在进行远程计量,请等待司秤工处理!";
  840. DoShowlbLog(lblog);
  841. }
  842. }
  843. if (btnSave.Visible && !PbCache.isLockFrm)
  844. {
  845. btnSave.Visible = false;
  846. lg.WriteLog(14, "车号:" + PbCache.collect.carno + ";对射没对准【" + PbCache.monitorResult.valid_park_status + "】" +
  847. "||重量不是绿色【" + ucWeightT1.isGreenWgt + "】" +
  848. "||重量不稳定 0:重量稳定; 1:重量不稳定; 2:空磅【" + PbCache.collect.weightStatus + "】" +
  849. "||不是智能计量状态【" + PbCache.monitor.isTakeOver + "】" +
  850. "||扫码编号为空隐藏【" + firstCode + "】" +
  851. "||一次计量数据已经查询完成【" + bRailwayActual + "】" +
  852. "||界面已锁定【" + PbCache.isLockFrm + "】,保存按钮隐藏!");
  853. }
  854. }
  855. #endregion 界面未锁定的情况下,如果,有车号,重量稳定了,停车线验证通过,完成了扫码验证
  856. }
  857. catch (Exception ex)
  858. {
  859. lg.WriteLog(13, "frmOneYardToEnd页面timer1异常!异常信息:" + ex);
  860. }
  861. }
  862. /// <summary>
  863. /// 是否是联达物料 0否1是
  864. /// </summary>
  865. /// <param name="matterNo"></param>
  866. /// <returns></returns>
  867. private bool setLianDaMat(string matterNo)
  868. {
  869. if (lianDaQuery == null)
  870. {
  871. RESTfulResult<MeterBaseMatterInfo> result = matterInfoService.doQueryId(matterNo);
  872. if (result.Succeed)
  873. {
  874. lianDaQuery = new PbModelDb();
  875. lianDaQuery.id = matterNo;
  876. //是联达的物料
  877. if (result.Data != null && result.Data.isLianda == "1")
  878. {
  879. lianDaQuery.text = "1";
  880. }
  881. else
  882. {
  883. lianDaQuery.text = "0";
  884. }
  885. }
  886. else
  887. {
  888. return false;
  889. }
  890. }
  891. return true;
  892. }
  893. #region 信息提示框
  894. private string lblog;//信息显示
  895. public string Lblog//信息显示
  896. {
  897. get { return lblog; }
  898. set
  899. {
  900. lblog = value;
  901. DoShowlbLog(value);
  902. }
  903. }
  904. private delegate void ShowlbLog(string lblog);
  905. private void DoShowlbLog(string _lbLog)
  906. {
  907. if (this.txtMsgInfo.InvokeRequired)
  908. {//在线程里以安全方式调用控件
  909. ShowlbLog _MyInvokeOne = new ShowlbLog(DoShowlbLog);
  910. txtMsgInfo.Invoke(_MyInvokeOne, new object[] { _lbLog });
  911. }
  912. else
  913. {
  914. txtMsgInfo.Text = _lbLog;
  915. }
  916. //2021年3月13日;不管是哪一种方式调用界面控件的值,均记录现场日志
  917. if (!string.IsNullOrEmpty(lblog) && PbCache.collect != null)
  918. {
  919. lg.WriteLog(9, "[" + PbCache.collect.carno + "]" + lblog);
  920. }
  921. }
  922. #endregion 信息提示框
  923. #region 打印
  924. private string strFirstNo = "";
  925. private class PrintCls
  926. {
  927. public int printNum { get; set; }
  928. public MeterWorkCarActual printDb { get; set; }
  929. public int iType { get; set; } //0毛 1 皮 2净
  930. public string qrCode { get; set; }
  931. }
  932. private PrintCls printData = new PrintCls();
  933. private void Print1(string firstNo)
  934. {
  935. try
  936. {
  937. //lg.WriteLog(1, "打印开始");
  938. #region 获取打印信息,若需要打印则调用打印操作
  939. List<PrintCls> prrintC = new List<PrintCls>();
  940. string sql = @"select actual_no actualNo,
  941. prediction_no predictionNo,
  942. car_no carNo,
  943. matter_no matterNo,
  944. matter_name matterName,
  945. gross_weight grossWeight,
  946. gross_time grossTime,
  947. tare_weight tareWeight,
  948. tare_time tareTime,
  949. net_weight netWeight,
  950. net_Time netTime,
  951. 'x' meterTypeNo,
  952. meter_type_name meterTypeName,
  953. spec_name specName,
  954. forwarding_unit_name forwardingUnitName,
  955. receiving_uint_name receivingUintName,
  956. load_point_name loadPointName,
  957. add_weight addWeight,
  958. '1' uploadFlag --1结净数据 0一次表数据
  959. from meter_work_car_actual where actual_first1_no = '" + firstNo + @"' or actual_first2_no='" + firstNo + @"'
  960. union all
  961. select t.actual_first_no actualNo,
  962. t.prediction_no predictionNo,
  963. t.car_no carNo,
  964. t.matter_no matterNo,
  965. t.matter_name matterName,
  966. t.meter_weight grossWeight,
  967. t.create_time grossTime,
  968. 0 tareWeight,
  969. t.create_time tareTime,
  970. 0 netWeight,
  971. null netTime,
  972. t.weight_type meterTypeNo, --0毛重 否则皮重
  973. t.meter_type_name meterTypeName,
  974. t.spec_name specName,
  975. t.forwarding_unit_name forwardingUnitName,
  976. t.receiving_uint_name receivingUintName,
  977. t.load_point_name loadPointName,
  978. t.add_weight addWeight,
  979. '0' uploadFlag
  980. from METER_WORK_CAR_ACTUAL_FIRST t
  981. where t.actual_first_no = '" + firstNo + "' or t.actual_first_no = (select max(actual_first2_no) from meter_work_car_actual where actual_first1_no='" + firstNo + "')";
  982. //查下如果有毛重或者结净数据,则可进入打印判断
  983. PbModelDbService<List<MeterWorkCarActual>> pbModelDbService = new PbModelDbService<List<MeterWorkCarActual>>();
  984. RESTfulResult<List<MeterWorkCarActual>> rm = pbModelDbService.executeSqlDataWf(sql);
  985. //lg.WriteLog(1, "打印第一个sql:" + sql);
  986. if (rm.Succeed)
  987. {
  988. if (rm.Data != null && rm.Data.Count > 0)
  989. {
  990. //2021年6月26日 对一车联运的进行处理;用一次计量编号查二次计量数据,
  991. sql = @"select t3.actual_no actualNo, t3.prediction_no predictionNo, t3.car_no carNo, t3.matter_no matterNo, t3.matter_name matterName,
  992. t3.gross_weight grossWeight, t3.gross_time grossTime, t3.tare_weight tareWeight, t3.tare_time tareTime, t3.net_weight netWeight,
  993. t3.net_Time netTime, 'x' meterTypeNo, t3.meter_type_name meterTypeName, t3.spec_name specName,
  994. t3.forwarding_unit_name forwardingUnitName, t3.receiving_uint_name receivingUintName, t3.load_point_name loadPointName,
  995. t3.add_weight addWeight, '1' uploadFlag from meter_work_car_actual_first t2
  996. left join meter_work_car_actual t3 on t2.actual_first_no = t3.actual_first1_no
  997. where t2.prediction_combination in (select t.prediction_combination
  998. from meter_work_car_actual_first t
  999. where t3.value_flag = '0' and t.actual_first_no = '" + firstNo + @"' and
  1000. instr(t.prediction_combination, '20') > 0) order by t3.net_time desc";
  1001. RESTfulResult<List<MeterWorkCarActual>> rmLy = pbModelDbService.executeSqlDataWf(sql);
  1002. if (rmLy.Succeed && rmLy.Data != null && rmLy.Data.Count == 1)
  1003. {
  1004. rm.Data = rmLy.Data; //一车联运,将毛重替换为净重数据
  1005. }
  1006. //若有毛重或者净重,找到对应数据的物料信息,若有,那么去找打印配置信息数据
  1007. List<MeterWorkCarActual> mwa = rm.Data.Where(s => !string.IsNullOrEmpty(s.matterNo) && (s.meterTypeNo == "x" || s.meterTypeNo == "0")).ToList();
  1008. if (mwa != null && mwa.Count > 0 && !string.IsNullOrEmpty(mwa[0].matterNo))
  1009. {
  1010. sql = @"select BASE_SPOT_NO baseSpotNo,
  1011. load_point_no loadPointNo,
  1012. matter_no matterNo,
  1013. METER_TYPE_NO meterTypeNo,
  1014. weight_type_name weightTypeName,
  1015. PRINT_NUM printNum
  1016. from METER_BASE_BILL_PRINT
  1017. where matter_no = '" + mwa[0].matterNo + @"'
  1018. and nvl(METER_TYPE_NO, '" + PbCache.bussinessTypeCode + @"') = '" + PbCache.bussinessTypeCode + @"'
  1019. and nvl(BASE_SPOT_NO, '" + PbCache.sportInfo.baseSpotNo + @"') = '" + PbCache.sportInfo.baseSpotNo + @"'
  1020. and nvl(load_point_no, '" + (mwa[0].loadPointNo == null ? "1" : mwa[0].loadPointNo) + @"') = '" + (mwa[0].loadPointNo == null ? "1" : mwa[0].loadPointNo) + @"'";
  1021. //lg.WriteLog(1, "打印第二个sql:" + sql);
  1022. //and nvl(METER_TYPE_NO, '') = ''
  1023. PbModelDbService<List<MeterBaseBillPrint>> pbPrintService = new PbModelDbService<List<MeterBaseBillPrint>>();
  1024. RESTfulResult<List<MeterBaseBillPrint>> rmPint = pbPrintService.executeSqlDataWf(sql);
  1025. if (rmPint.Succeed)
  1026. {
  1027. if (rmPint.Data != null && rmPint.Data.Count > 0)
  1028. {
  1029. //若有净重信息:1毛重时间晚于皮重时间,则打印毛、皮、净重,2毛重早于皮重,打印皮、净
  1030. //若只有毛重信息则打印毛重
  1031. List<MeterBaseBillPrint> lGrossprint = rmPint.Data.Where(s => s.weightTypeName.Contains("毛")).ToList();
  1032. List<MeterBaseBillPrint> lTarePrint = rmPint.Data.Where(s => s.weightTypeName.Contains("皮")).ToList();
  1033. List<MeterBaseBillPrint> lNetprint = rmPint.Data.Where(s => s.weightTypeName.Contains("净")).ToList();
  1034. List<MeterWorkCarActual> mwaChild = mwa.Where(s => s.meterTypeNo == "x").ToList();
  1035. if (mwaChild != null && mwaChild.Count > 0) //若有净重信息
  1036. {
  1037. if (lTarePrint != null && lTarePrint.Count > 0)
  1038. {
  1039. //获取非毛,非净重信息如果没有则用的期限皮,此时不打,否则则打印
  1040. MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo != "x" && s.meterTypeNo != "0").FirstOrDefault();
  1041. if (mwca != null)
  1042. {
  1043. PrintCls cls = new PrintCls();
  1044. cls.printNum = (int)(lTarePrint[0].printNum == null ? 0 : lTarePrint[0].printNum.Value);
  1045. cls.iType = 1;//皮重
  1046. cls.printDb = mwca;
  1047. prrintC.Add(cls);
  1048. }
  1049. }
  1050. if (lGrossprint != null && lGrossprint.Count > 0)
  1051. {
  1052. //获取毛重信息
  1053. MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo == "0").FirstOrDefault();
  1054. if (mwca != null)
  1055. {
  1056. PrintCls cls = new PrintCls();
  1057. cls.printNum = (int)(lGrossprint[0].printNum == null ? 0 : lGrossprint[0].printNum.Value);
  1058. cls.iType = 0;//毛重
  1059. cls.printDb = mwca;
  1060. prrintC.Add(cls);
  1061. }
  1062. }
  1063. if (lNetprint != null && lNetprint.Count > 0)
  1064. {
  1065. //获取净重信息
  1066. MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo == "x").FirstOrDefault();
  1067. if (mwca != null)
  1068. {
  1069. PrintCls cls = new PrintCls();
  1070. cls.printNum = (int)(lNetprint[0].printNum == null ? 0 : lNetprint[0].printNum.Value);
  1071. cls.iType = 2;//净重
  1072. cls.printDb = mwca;
  1073. prrintC.Add(cls);
  1074. }
  1075. }
  1076. }
  1077. else //只有毛重信息则打印毛重
  1078. {
  1079. if (lGrossprint != null && lGrossprint.Count > 0)
  1080. {
  1081. //获取毛重信息
  1082. MeterWorkCarActual mwca = rm.Data.Where(s => s.meterTypeNo == "0").FirstOrDefault();
  1083. if (mwca != null)
  1084. {
  1085. PrintCls cls = new PrintCls();
  1086. cls.printNum = (int)(lGrossprint[0].printNum == null ? 0 : lGrossprint[0].printNum.Value);
  1087. cls.iType = 0;//毛重
  1088. cls.printDb = mwca;
  1089. prrintC.Add(cls);
  1090. }
  1091. }
  1092. }
  1093. if (prrintC != null && prrintC.Count > 0)
  1094. {
  1095. FrmMessage frmMessage = FrmMess("是否打印第【1】张票据!", "打印");
  1096. if (frmMessage.ShowDialog(this) == DialogResult.OK)
  1097. {
  1098. lg.WriteLog(10, "车号【" + PbCache.lockCarNo + "】是否打印选择了【是】");
  1099. lg.WriteLog(15, PbCache.lockCarNo + "是否打印选择了【是】");
  1100. strFirstNo = firstNo;
  1101. //printDocument1.PrinterSettings.PrinterName = PbCache.sportInfo.printerName;//strPntSvrName;
  1102. System.Drawing.Printing.PaperSize customSize1 = new System.Drawing.Printing.PaperSize("TestPaper", 398, 433); //101mm*110mm,换算成英寸
  1103. printDocument1.DefaultPageSettings.PaperSize = customSize1;//将自定义的Papersize赋给PrintDocument
  1104. System.Drawing.Printing.Margins marginss = new System.Drawing.Printing.Margins(0, 0, 0, 0);
  1105. printDocument1.DefaultPageSettings.Margins = marginss;
  1106. printDocument1.PrintController = new System.Drawing.Printing.StandardPrintController();
  1107. foreach (PrintCls db in prrintC)
  1108. {
  1109. switch (db.printDb.meterTypeNo)
  1110. {
  1111. case "0": //毛
  1112. db.qrCode = db.printDb.actualNo + "," + db.printDb.grossWeight + "," + "1";
  1113. break;
  1114. case "x": //净
  1115. db.qrCode = db.printDb.actualNo + "," + db.printDb.netWeight + "," + "2";
  1116. break;
  1117. default: //皮
  1118. db.qrCode = db.printDb.actualNo + "," + db.printDb.grossWeight + "," + "1";
  1119. break;
  1120. }
  1121. RESTfulResult<string> rQRCode = workCarActualFirstService.doQRCodeWf(db.qrCode);
  1122. db.qrCode = rQRCode.Data;
  1123. for (int i = 0; i < db.printNum; i++)
  1124. {
  1125. if (i == 0)
  1126. {
  1127. printData = db;
  1128. printDocument1.Print();
  1129. lg.WriteLog(10, "当前第" + (i + 1) + "次打印:" + printData.iType + " 车号:" + db.printDb.carNo + ",二维码:" + db.qrCode);
  1130. }
  1131. else
  1132. {
  1133. FrmMessage frmMessageContinue = FrmMess("已打印【" + i + "】张,是否继续打印第【" + (i + 1) + "】张票据!", "打印");
  1134. if (frmMessageContinue.ShowDialog(this) == DialogResult.OK)
  1135. {
  1136. printData = db;
  1137. printDocument1.Print();
  1138. lg.WriteLog(10, "当前第" + (i + 1) + "次打印:" + printData.iType + " 车号:" + db.printDb.carNo + ",二维码:" + db.qrCode);
  1139. }
  1140. else
  1141. {
  1142. lg.WriteLog(10, "车号【" + PbCache.lockCarNo + "】第" + i + "次是否打印,选择了【否】");
  1143. }
  1144. }
  1145. //printData = db;
  1146. //printDocument1.Print();
  1147. //lg.WriteLog(11, "当前打印:" + printData.iType + " 车号:" + db.printDb.carNo);
  1148. }
  1149. }
  1150. }
  1151. else
  1152. {
  1153. lg.WriteLog(10, "车号【" + PbCache.lockCarNo + "】是否打印选择了【否】");
  1154. lg.WriteLog(15, PbCache.lockCarNo + "是否打印选择了【否】");
  1155. }
  1156. }
  1157. }
  1158. }
  1159. else
  1160. {
  1161. lg.WriteLog(10, "车号【" + PbCache.lockCarNo + "】获取打印配置数据信息异常sql:【" + sql + "】");
  1162. }
  1163. }
  1164. }
  1165. }
  1166. else
  1167. {
  1168. lg.WriteLog(10, "车号【" + PbCache.lockCarNo + "】获取计量数据信息异常sql:【" + sql + "】");
  1169. }
  1170. #endregion 获取打印信息,若需要打印则调用打印操作
  1171. }
  1172. catch (Exception ex)
  1173. {
  1174. lg.WriteLog(10, "车号【" + PbCache.lockCarNo + "】打印异常" + ex);
  1175. }
  1176. }
  1177. private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
  1178. {
  1179. try
  1180. {
  1181. if (printData != null && printData.printDb != null)
  1182. {
  1183. printClass.PrintAllPage(e, printData.printDb, printData.qrCode);
  1184. /*
  1185. //结净打印
  1186. if (printData.iType == 2)
  1187. {
  1188. printClass.PrintPage(e, printData.printDb, PbCache.strQRCode);
  1189. }
  1190. else //非结净打印
  1191. {
  1192. printClass.PrintWgtPage(e, printData.printDb, PbCache.strQRCode);
  1193. }
  1194. //*/
  1195. }
  1196. }
  1197. catch (Exception ex)
  1198. {
  1199. lg.WriteLog(11, "打印异常" + ex);
  1200. }
  1201. }
  1202. #endregion 打印
  1203. private void btnFH_Click(object sender, EventArgs e)
  1204. {
  1205. lg.WriteLog(15, PbCache.lockCarNo + "点击了返回主界面");
  1206. this.Close();
  1207. }
  1208. private static FrmMessage FrmMess(string strMess, string strBtnSaveInfo)
  1209. {
  1210. FrmMessage frmMessage = new FrmMessage();
  1211. frmMessage.StartPosition = FormStartPosition.Manual;
  1212. frmMessage.Location = new Point(350, 450);
  1213. frmMessage.ShowMessage = strMess;
  1214. frmMessage.BtnSaveText = strBtnSaveInfo;
  1215. frmMessage.BtnCancelText = "取消";
  1216. return frmMessage;
  1217. }
  1218. /// <summary>
  1219. /// 期限皮重保存
  1220. /// </summary>
  1221. /// <param name="sender"></param>
  1222. /// <param name="e"></param>
  1223. private void btnTare_Click(object sender, EventArgs e)
  1224. {
  1225. try
  1226. {
  1227. if (PbCache.collect == null) return;
  1228. //界面锁定
  1229. PbCache.lockWgt = PbCache.collect.weight;
  1230. if (PbCache.monitor.validCarno == "0")
  1231. {
  1232. PbCache.collect.carno = TrackCarNo;
  1233. }
  1234. PbCache.lockCarNo = PbCache.collect.carno;
  1235. btnTare.Enabled = false;
  1236. PreTrackScale preTrack = ucCarMeterInfoJisco1._preTrack;
  1237. lg.WriteLog(15, PbCache.lockCarNo + "点击期限皮重按钮");
  1238. //计量已完成,不允许重复保存期限皮重
  1239. if (PbCache.isLockFrm)
  1240. {
  1241. vicPlayClass.GetVoicePlay("不允许重复保存期限皮重", PbCache.collect.carno);
  1242. PbCache.ResultMessage = "已经完成计量保存操作,不允许重复保存期限皮重!";
  1243. btnSave.Enabled = true;
  1244. setMsg(PbCache.ResultMessage);
  1245. return;
  1246. }
  1247. #region 红外对射及量程验证
  1248. valid.ValidMethod();
  1249. if (PbCache.range != null && PbCache.range.upperRange < PbCache.collect.weight)
  1250. {
  1251. //超量程
  1252. vicPlayClass.GetVoicePlay("已超量程", PbCache.collect.carno);
  1253. PbCache.ResultMessage = "当前重量已超量程,秤体量程为【" + PbCache.range.upperRange / 1000 + "】T,不允许进行自助计量操作!";
  1254. btnSave.Enabled = true;
  1255. setMsg(PbCache.ResultMessage);
  1256. return;
  1257. }
  1258. else if (PbCache.collect.weightStatus == 0 && !PbCache.monitorResult.valid_park_status)
  1259. {
  1260. //重量稳定,且对射验证不合格
  1261. vicPlayClass.GetVoicePlay("您的车辆未停到位", PbCache.collect.carno);
  1262. PbCache.ResultMessage = "您的车辆未停到位,请调整车辆位置,不要遮挡激光检测设备,不允许进行自助计量操作!";//btnTare_Click
  1263. btnSave.Enabled = true;
  1264. setMsg(PbCache.ResultMessage);
  1265. return;
  1266. }
  1267. #endregion 红外对射及量程验证
  1268. //2021年3月13日 杨秀东新增逻辑,车号为空则不允许进行期限皮重保存操作
  1269. if (string.IsNullOrEmpty(PbCache.lockCarNo))
  1270. {
  1271. vicPlayClass.GetVoicePlay("不允许进行期限皮重保存", PbCache.lockCarNo);
  1272. PbCache.ResultMessage = "未抓拍到车牌号,进行期限皮重保存,请点[语音求助]!";
  1273. setMsg(PbCache.ResultMessage);
  1274. btnTare.Enabled = true;
  1275. return;
  1276. }
  1277. //期限皮重业务是否能够保存验证;物资、业务类型、车号验证
  1278. if (!termTareCar.ValidMethodThree(preTrack))
  1279. {
  1280. vicPlayClass.GetVoicePlay("不允许进行期限皮重保存", PbCache.lockCarNo);
  1281. setMsg(PbCache.ResultMessage);
  1282. btnTare.Enabled = true;
  1283. return;
  1284. }
  1285. //查一次是否可留期限皮;重量验证
  1286. if (!termTareCar.ValidMethod(PbCache.lockCarNo))
  1287. {
  1288. vicPlayClass.GetVoicePlay("不允许进行期限皮重保存", PbCache.lockCarNo);
  1289. setMsg(PbCache.ResultMessage);
  1290. btnTare.Enabled = true;
  1291. return;
  1292. }
  1293. //若存在有效的一次计量数据,则不允许进行期限皮重保存
  1294. if (!termTareCar.ValidActualFirst(preTrack))
  1295. {
  1296. vicPlayClass.GetVoicePlay("不允许进行期限皮重保存", PbCache.lockCarNo);
  1297. setMsg(PbCache.ResultMessage);
  1298. btnTare.Enabled = true;
  1299. return;
  1300. }
  1301. //暂停取实时数据
  1302. setMsg("称重保存中......");
  1303. FrmMessage frmMessage = FrmMess("是否确认保存期限皮重!", "继续保存");
  1304. if (frmMessage.ShowDialog(this) == DialogResult.Cancel)
  1305. {
  1306. setMsg("");
  1307. btnTare.Enabled = true;
  1308. lg.WriteLog(15, PbCache.lockCarNo + "期限皮重继续保存选择了【否】");
  1309. return;
  1310. }
  1311. MeterBaseTermTareData mbttd = new MeterBaseTermTareData();
  1312. mbttd.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  1313. mbttd.baseSpotName = PbCache.sportInfo.baseSpotName;
  1314. mbttd.carNo = PbCache.collect.carno;
  1315. mbttd.meterWeight = PbCache.lockWgt;
  1316. mbttd.valueFlag = "0";
  1317. mbttd.createTime = DateTime.Now;
  1318. mbttd.createManNo = PbCache.sportInfo.baseSpotNo;
  1319. mbttd.createManName = PbCache.sportInfo.baseSpotName;
  1320. mbttd.meterTime = mbttd.createTime.Value;
  1321. mbttd.startTime = mbttd.createTime.Value;
  1322. //操作日志
  1323. MeterMonitorNote monitorNote = new MeterMonitorNote();
  1324. monitorNote.baseSpotNo = mbttd.baseSpotNo;
  1325. monitorNote.baseSpotName = mbttd.baseSpotName;
  1326. monitorNote.operationContent = string.Format("保存期限皮重");
  1327. monitorNote.operationTime = mbttd.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  1328. monitorNote.carNo = mbttd.carNo;
  1329. monitorNote.meterNoteSource = "0";
  1330. //期限皮重数据保存
  1331. RESTfulResult<string> RESTfulResult = termTareDate.doSaveWf(mbttd, monitorNote);
  1332. if (RESTfulResult.Succeed && RESTfulResult.Code !="500")
  1333. {
  1334. PbCache.isLockFrm = true;
  1335. PbCache.actualFirstNo = RESTfulResult.Data;
  1336. //称重完成后,显示颜色;
  1337. _ = BeginInvoke(new Action(() => { ucWeightCarTJXJG1.setWgtBackColor(true); }));
  1338. //称重完成后,显示重量类型为皮重;
  1339. _ = BeginInvoke(new Action(() => { ucWeightCarTJXJG1.setWeightType("皮重"); }));
  1340. //期限皮重成功截图
  1341. _ = BeginInvoke(new Action(() => { shotImage(); }));
  1342. //保存成功,语音提示保存成功
  1343. vicPlayClass.GetVoicePlay("期限皮重保存成功", PbCache.lockCarNo);//播放语音
  1344. btnTare.Visible = false;
  1345. lg.WriteLog(3, string.Format("车号[{0}]期限皮重保存成功", PbCache.lockCarNo));
  1346. setMsg("称重保存成功,请离开秤台!");
  1347. }
  1348. else
  1349. {
  1350. PbCache.actualFirstNo = RESTfulResult.Data;
  1351. //期限皮重失败截图
  1352. _ = BeginInvoke(new Action(() => { shotImage(); }));
  1353. btnTare.Enabled = true;
  1354. setMsg(RESTfulResult.ResultMessage);
  1355. vicPlayClass.GetVoicePlay("期限皮重保存失败", PbCache.lockCarNo);//播放语音
  1356. lg.WriteLog(3, string.Format("车号[{0}]期限皮重保存失败", PbCache.lockCarNo));
  1357. }
  1358. }
  1359. catch (Exception ex)
  1360. {
  1361. lg.WriteLog(13, PbCache.lockCarNo + "期限皮重事件异常:" + ex.Message);
  1362. }
  1363. }
  1364. /// <summary>
  1365. /// 复磅保存
  1366. /// </summary>
  1367. /// <param name="sender"></param>
  1368. /// <param name="e"></param>
  1369. private void btnRecover_Click(object sender, EventArgs e)
  1370. {
  1371. try
  1372. {
  1373. if (PbCache.collect == null) return;
  1374. PbCache.isLockFrm = true;
  1375. PbCache.lockCarNo = PbCache.collect.carno;
  1376. PbCache.lockWgt = PbCache.collect.weight;
  1377. btnRecover.Enabled = false;
  1378. lg.WriteLog(15, PbCache.lockCarNo + "点击【复磅】按钮");
  1379. //仪表重量验证
  1380. if (!dataValidity.ValidMethod(PbCache.lockWgt))
  1381. {
  1382. txtMsgInfo.Text = PbCache.ResultMessage;
  1383. return;
  1384. }
  1385. //验证是否满足复磅的条件
  1386. recoverInfo.ValidMethod(PbCache.lockCarNo);
  1387. if (!PbCache.isAllowRecover)
  1388. {
  1389. PbCache.isLockFrm = false;
  1390. btnRecover.Enabled = true;
  1391. setMsg(PbCache.ResultMessage);
  1392. lg.WriteLog(15, PbCache.lockCarNo + "不满足复磅条件!" + PbCache.ResultMessage);
  1393. return;
  1394. }
  1395. txtMsgInfo.Text = "复磅保存中......";
  1396. FrmMessage frmMessage = FrmMess("是否确认保存当前复磅重量数据!", "继续保存");
  1397. if (frmMessage.ShowDialog(this) == DialogResult.Cancel)
  1398. {
  1399. PbCache.isLockFrm = false;
  1400. btnRecover.Enabled = true;
  1401. txtMsgInfo.Text = "";
  1402. lg.WriteLog(15, PbCache.lockCarNo + "【复磅】按钮选择否");
  1403. return;
  1404. }
  1405. //复磅数据保存
  1406. RESTfulResult<string> RESTfulResult = carRecoverService.doRecover(new MeterWorkCarRecover { carNo = PbCache.lockCarNo, recMeterWeight = PbCache.lockWgt });
  1407. if (RESTfulResult.Succeed)
  1408. {
  1409. //保存成功,语音提示保存成功
  1410. vicPlayClass.GetVoicePlay("称重完成", PbCache.lockCarNo);//播放语音
  1411. btnTare.Visible = false;
  1412. lg.WriteLog(3, string.Format("车号[{0}]复磅保存成功", PbCache.lockCarNo));
  1413. setMsg("复磅保存成功,请离开秤台!");
  1414. }
  1415. else
  1416. {
  1417. PbCache.isLockFrm = false;
  1418. btnRecover.Enabled = true;
  1419. setMsg(RESTfulResult.ResultMessage);
  1420. vicPlayClass.GetVoicePlay("称重数据保存失败", PbCache.lockCarNo);//播放语音
  1421. lg.WriteLog(3, string.Format("车号[{0}]复磅保存失败" + RESTfulResult.Message, PbCache.lockCarNo));
  1422. }
  1423. }
  1424. catch (Exception ex)
  1425. {
  1426. lg.WriteLog(13, PbCache.lockCarNo + "复磅保存事件异常:" + ex.Message);
  1427. }
  1428. }
  1429. #region 信息提示框
  1430. public void setMsgInfo(string ResultMessage)
  1431. {
  1432. setMsg(ResultMessage);
  1433. }
  1434. private void setMsg(string ResultMessage)
  1435. {
  1436. if (txtMsgInfo.InvokeRequired)
  1437. {
  1438. Action<string> action = new Action<string>(setMsgInfo);
  1439. Invoke(action, new object[] { ResultMessage });
  1440. }
  1441. else
  1442. {
  1443. txtMsgInfo.Text = ResultMessage;
  1444. }
  1445. if (!string.IsNullOrEmpty(ResultMessage) && PbCache.collect != null)
  1446. {
  1447. lg.WriteLog(9, "[" + PbCache.collect.carno + "]" + ResultMessage);
  1448. }
  1449. }
  1450. #endregion 信息提示框
  1451. /// <summary>
  1452. /// 车号改变时,判断是否需要显示复磅按钮
  1453. /// </summary>
  1454. /// <param name="sender"></param>
  1455. /// <param name="e"></param>
  1456. private void txtCarNo_TextChanged(object sender, EventArgs e)
  1457. {
  1458. }
  1459. /// <summary>
  1460. /// 清空监控表的数据
  1461. /// </summary>
  1462. /// <param name="sender"></param>
  1463. /// <param name="e"></param>
  1464. private void frmOneYardToEnd_FormClosing(object sender, FormClosingEventArgs e)
  1465. {
  1466. try
  1467. {
  1468. //初始化一些线程及数据,并关闭该界面
  1469. if (PbCache.collect != null && !string.IsNullOrEmpty(PbCache.collect.carno))
  1470. {
  1471. PbCache.collect.carno = "";
  1472. }
  1473. isShowRecover = true;//是否去查询“复磅”按钮的显示与否
  1474. PbCache.strCode = "";
  1475. PbCache.isOvertimeAlarm = false; //是否超时报警
  1476. bRailwayActual = true; //为true时会重新查询一次计量数据
  1477. isShowRecover = true;//是否去查询“复磅”按钮的显示与否
  1478. PbCache.Load();
  1479. //关闭一些线程及定时任务
  1480. timer1.Stop();
  1481. timer1.Dispose();
  1482. #region 清理一次监控表的几个数值,防止上车速度过快导致提示称重完成
  1483. //RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo, isOverWgt = "" });
  1484. RESTfulResult<string> rms = monitor.doUpdateWf(new MeterWorkMonitor
  1485. {
  1486. pointNo = PbCache.sportInfo.baseSpotNo,
  1487. validWgt = "1",
  1488. validCarno = "1",
  1489. validTareTime = "1",
  1490. validMatTime = "1",
  1491. validTimeInterval = "1",
  1492. validParkStatus = "1",
  1493. validExceedWgt = "1",
  1494. validPredictionDiff = "1",
  1495. validLianda = "1",
  1496. validMatClick = "1",
  1497. setCar = "",
  1498. rfidCar = "",
  1499. photoCar = "",
  1500. scanCar = "",
  1501. editCar = "",
  1502. carErr = "0",
  1503. wgtErr = "0",
  1504. stopOverTime = "0",
  1505. msgInfo = "",
  1506. isOverWgt = "",
  1507. isHelp = "0",
  1508. wgt = 0
  1509. });
  1510. }
  1511. catch (Exception ex)
  1512. {
  1513. lg.WriteLog(0, "frmCarSalePurchase_FormClosing异常:下秤关闭界面异常!异常信息:" + ex);
  1514. }
  1515. #endregion 清理一次监控表的几个数值,防止上车速度过快导致提示称重完成
  1516. }
  1517. }
  1518. }