FrmMaxBletScale.cs 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Drawing;
  5. using System.Threading;
  6. using System.Windows.Forms;
  7. using com.hnshituo.core.webapp.vo;
  8. using Common;
  9. using Infragistics.Win;
  10. using Infragistics.Win.UltraWinEditors;
  11. using Infragistics.Win.UltraWinGrid;
  12. using NetSDKCS;
  13. namespace BeltScaleSystem
  14. {
  15. public partial class FrmMaxBletScale : Form
  16. {
  17. #region 参数与常量
  18. List<MeterBaseScalePoint> scalePoints = new List<MeterBaseScalePoint>();//计量点监控数据 目前采用仪表ip
  19. PreBeltScalePreService PreBeltScalePreService = new PreBeltScalePreService();//预报服务
  20. MeterWorkBeltActualService MeterWorkBeltActualService = new MeterWorkBeltActualService();//实绩服务
  21. private MeterWorkBeltXiaopiService workBeltXiaopiService = new MeterWorkBeltXiaopiService();//校皮数据接口
  22. MeterBaseBeltMaterialpmService baseBeltMaterialpmService = new MeterBaseBeltMaterialpmService();//物料系数服务
  23. public PreBeltScaleForecast beltinfo = new PreBeltScaleForecast();//预报实体
  24. MeterWorkBeltTimingService meterWorkBeltTimingService = new MeterWorkBeltTimingService();//定时数据接口
  25. private Log l = Log.GetInstance(); //日志
  26. RESTfulResult<List<MeterWorkBeltActual>> MeterWorkBeltActual_NOW = null;//当前计量的实绩
  27. private Boolean IsXiaolingA = false, IsXiaolingB = false;//是否校零
  28. public string oldzeroA="",oldzeroB="";
  29. public Boolean StartXiaoLingA = false, StartXiaoLingB=false;
  30. public CalibrateData[] cbDataByControlA = null, cbDataByControlB = null;
  31. MeterBaseOperationLogService LogService = new MeterBaseOperationLogService();//日志服务
  32. //页面基础信息
  33. public string sUserId = "", sUserName = "", sIpAddress = "", userClass = "", userGroup = "";
  34. public string sPointNo = "", sPointName = "";
  35. public MeterBaseScalePoint rowPointInfo = null;//计量点监控信息
  36. private delegate void UpdateUIEventHander(object sender, UpdateUIArgs args); //自定义事件用来从线程中更新控件的值
  37. MeterBaseVideoinfo baseVideoinfo = null;//视频类实体
  38. public int BtnType = 0;
  39. private Boolean IsSaveA = false, IsSaveB = false;
  40. private Boolean Isfrist = true;//第一次进入
  41. /// <summary>
  42. /// 物料参数
  43. /// </summary>
  44. public string materialParameter = "", materialParameterB = "", materialParameterImport = "", materialParameterImportB = "";
  45. #region 大华SDK相关
  46. fDisConnectCallBack _DisConnectCallBack;
  47. fHaveReConnectCallBack _ReConnectCallBack;
  48. IntPtr _LoginID = IntPtr.Zero;
  49. IntPtr _LoginID1 = IntPtr.Zero;
  50. IntPtr _LoginID2 = IntPtr.Zero;
  51. NET_DEVICEINFO_Ex _DeviceInfo = new NET_DEVICEINFO_Ex();
  52. IntPtr _PlayID = IntPtr.Zero;
  53. void DisConnectCallBack(IntPtr lLoginID, IntPtr pchDVRIP, int nDVRPort, IntPtr dwUser)
  54. {
  55. this.BeginInvoke(new Action(() =>
  56. {
  57. }));
  58. }
  59. void ReConnectCallBack(IntPtr lLoginID, IntPtr pchDVRIP, int nDVRPort, IntPtr dwUser)
  60. {
  61. this.BeginInvoke(new Action(() =>
  62. {
  63. }));
  64. }
  65. #endregion
  66. #endregion
  67. public FrmMaxBletScale()
  68. {
  69. InitializeComponent();
  70. try
  71. {
  72. _DisConnectCallBack = new fDisConnectCallBack(DisConnectCallBack);
  73. _ReConnectCallBack = new fHaveReConnectCallBack(ReConnectCallBack);
  74. NETClient.Init(_DisConnectCallBack, IntPtr.Zero, null);
  75. NETClient.SetAutoReconnect(_ReConnectCallBack, IntPtr.Zero);
  76. }
  77. catch (Exception ex)
  78. {
  79. MessageBox.Show(ex.Message);
  80. return;
  81. }
  82. }
  83. #region 采集数据
  84. public MeasData measDataA;
  85. public MeasData measDataB;
  86. #endregion
  87. #region #更新控件数据
  88. //更新UltraTextEditor、Button控件值Convert.ToDouble(txtWeight.Text.Replace("kg", "").Trim())
  89. private void setTedValue(string Ted, string values)
  90. {
  91. try
  92. {
  93. switch (Ted)
  94. {
  95. //A磅
  96. case "instrument_weight_Ted"://仪表重量
  97. this.instrument_weight_Ted.Invoke(new UpdateUIEventHander(UpdateUI_Method), instrument_weight_Ted, new UpdateUIArgs(values, "t"));
  98. break;
  99. case "cumulative_weight_Ted"://当前累计量
  100. this.cumulative_weight_Ted.Invoke(new UpdateUIEventHander(UpdateUI_Method), cumulative_weight_Ted, new UpdateUIArgs(values, "t"));
  101. break;
  102. case "realtime_amount_Ted"://实时量
  103. this.realtime_amount_Ted.Invoke(new UpdateUIEventHander(UpdateUI_Method), realtime_amount_Ted, new UpdateUIArgs(values, "t/h"));
  104. break;
  105. case "belt_speed_Ted"://皮带速度
  106. this.belt_speed_Ted.Invoke(new UpdateUIEventHander(UpdateUI_Method), belt_speed_Ted, new UpdateUIArgs(values, "m/s"));
  107. break;
  108. case "temperature_Ted"://温度
  109. this.temperature_Ted.Invoke(new UpdateUIEventHander(UpdateUI_Method), temperature_Ted, new UpdateUIArgs(values, "℃"));
  110. break;
  111. case "parameter_Ted"://物料参数
  112. this.parameter_Ted.Invoke(new UpdateUIEventHander(UpdateUI_Method), parameter_Ted, new UpdateUIArgs(values, ""));
  113. break;
  114. //B磅
  115. case "instrument_weight_Ted_1"://仪表重量
  116. this.instrument_weight_Ted_1.Invoke(new UpdateUIEventHander(UpdateUI_Method), instrument_weight_Ted_1, new UpdateUIArgs(values, "t"));
  117. break;
  118. case "cumulative_weight_Ted_1"://当前累计量
  119. this.cumulative_weight_Ted_1.Invoke(new UpdateUIEventHander(UpdateUI_Method), cumulative_weight_Ted_1, new UpdateUIArgs(values, "t"));
  120. break;
  121. case "realtime_amount_Ted_1"://实时量
  122. this.realtime_amount_Ted_1.Invoke(new UpdateUIEventHander(UpdateUI_Method), realtime_amount_Ted_1, new UpdateUIArgs(values, "t/h"));
  123. break;
  124. case "belt_speed_Ted_1"://皮带速度
  125. this.belt_speed_Ted_1.Invoke(new UpdateUIEventHander(UpdateUI_Method), belt_speed_Ted_1, new UpdateUIArgs(values, "m/s"));
  126. break;
  127. case "temperature_Ted_1"://温度
  128. this.temperature_Ted_1.Invoke(new UpdateUIEventHander(UpdateUI_Method), temperature_Ted_1, new UpdateUIArgs(values, "℃"));
  129. break;
  130. case "parameter_Ted_1"://物料参数
  131. this.parameter_Ted_1.Invoke(new UpdateUIEventHander(UpdateUI_Method), parameter_Ted_1, new UpdateUIArgs(values, ""));
  132. break;
  133. default:
  134. break;
  135. }
  136. }
  137. catch (Exception ex)
  138. {
  139. throw ex;
  140. }
  141. }
  142. //更新UltraTextEditor、Button控件值
  143. private double getTedValue(string Ted)
  144. {
  145. try
  146. {
  147. switch (Ted)
  148. {
  149. //A磅
  150. case "instrument_weight_Ted"://仪表重量
  151. return Convert.ToDouble(instrument_weight_Ted.Text.Replace("t", "").Trim());
  152. case "cumulative_weight_Ted"://当前累计量
  153. return Convert.ToDouble(cumulative_weight_Ted.Text.Replace("t", "").Trim());
  154. case "realtime_amount_Ted"://实时量
  155. return Convert.ToDouble(realtime_amount_Ted.Text.Replace("t/h", "").Trim());
  156. case "belt_speed_Ted"://皮带速度
  157. return Convert.ToDouble(belt_speed_Ted.Text.Replace("m/s", "").Trim());
  158. case "temperature_Ted"://温度
  159. return Convert.ToDouble(temperature_Ted.Text.Replace("℃", "").Trim());
  160. case "parameter_Ted"://物料参数
  161. return Convert.ToDouble(parameter_Ted.Text);
  162. //B磅
  163. case "instrument_weight_Ted_1"://仪表重量
  164. return Convert.ToDouble(instrument_weight_Ted_1.Text.Replace("t", "").Trim());
  165. case "cumulative_weight_Ted_1"://当前累计量
  166. return Convert.ToDouble(cumulative_weight_Ted_1.Text.Replace("t", "").Trim());
  167. case "realtime_amount_Ted_1"://实时量
  168. return Convert.ToDouble(realtime_amount_Ted_1.Text.Replace("t/h", "").Trim());
  169. case "belt_speed_Ted_1"://皮带速度
  170. return Convert.ToDouble(belt_speed_Ted_1.Text.Replace("m/s", "").Trim());
  171. case "temperature_Ted_1"://温度
  172. return Convert.ToDouble(temperature_Ted_1.Text.Replace("℃", "").Trim());
  173. case "parameter_Ted_1"://物料参数
  174. return Convert.ToDouble(parameter_Ted_1.Text);
  175. default:
  176. return 0;
  177. }
  178. }
  179. catch (Exception ex)
  180. {
  181. throw ex;
  182. }
  183. }
  184. /// <summary>
  185. /// 更新界面的UI
  186. /// </summary>
  187. /// <param name="sender"></param>
  188. /// <param name="args"></param>
  189. private void UpdateUI_Method(object sender, UpdateUIArgs args)
  190. {
  191. if (sender is UltraTextEditor)
  192. {
  193. if (args.textValue == "" || args.textValue == null)
  194. {
  195. ((UltraTextEditor)sender).Text = "0 " + args.unitValue;
  196. }
  197. else
  198. {
  199. ((UltraTextEditor)sender).Text = args.textValue + " " + args.unitValue;
  200. }
  201. }
  202. else if (sender is Button)
  203. {
  204. if (args.textValue == "red")
  205. {
  206. ((Button)sender).BackColor = Color.Red;
  207. ((Button)sender).ForeColor = Color.White;
  208. }
  209. else if (args.textValue == "green")
  210. {
  211. ((Button)sender).BackColor = Color.White;
  212. ((Button)sender).ForeColor = Color.Black;
  213. }
  214. else
  215. {
  216. ((Label)sender).Text = args.textValue;
  217. }
  218. }
  219. }
  220. public class UpdateUIArgs : EventArgs
  221. {
  222. public string textValue { get; private set; }
  223. public string unitValue { get; private set; }
  224. public UpdateUIArgs(string textValue, string unit)
  225. {
  226. this.textValue = textValue;
  227. this.unitValue = unit;
  228. }
  229. }
  230. #endregion
  231. //初始化加载
  232. private void FrmMaxBletScale_Load(object sender, EventArgs e)
  233. {
  234. if (!findMoxa())
  235. {
  236. MessageBox.Show("仪表ip获取失败!");
  237. return;
  238. }
  239. InitScaleInfo(scalePoints[0].moxaIp == "" ? "" : scalePoints[0].moxaIp, scalePoints[1].moxaIp == "" ? "" : scalePoints[1].moxaIp);
  240. loadFrom();//加载数据
  241. InitFrm();//初始化界面
  242. InitGraph();//初始化流量曲线
  243. timer1.Start();
  244. timer2.Start();
  245. InitVidio();//连接视频
  246. //UpdateControl(BtnType);
  247. Isfrist = false;
  248. }
  249. #region 表格查询相关 按钮事件
  250. /// <summary>
  251. /// 预报查询接口
  252. /// </summary>
  253. private void queryScale()
  254. {
  255. try
  256. {
  257. DataTable dtScaleTable = dataTable1.Clone();
  258. CommonPage<PreBeltScaleForecast> cp = new CommonPage<PreBeltScaleForecast>();
  259. cp.startTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd HH:mm:ss");
  260. cp.endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  261. cp.param = new PreBeltScaleForecast { valueFlag = "8", baseSpotNo = sPointNo }; //状态为8时 查询1和2
  262. RESTfulResult<List<PreBeltScaleForecast>> rms = PreBeltScalePreService.doQueryTenWf(cp);
  263. if (rms.Succeed)
  264. {
  265. if (rms.Data != null && rms.Data.Count > 0)
  266. {
  267. dtScaleTable = rms.Data.ListToDataTable<PreBeltScaleForecast>();
  268. ClsControlPack.CopyDataToDatatable(ref dtScaleTable, ref dataTable1, true);
  269. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  270. {
  271. if (ugr.Cells["valueFlag"].Value.ToString() == "2")
  272. {
  273. ugr.Appearance.BackColor = Color.YellowGreen;
  274. ultraGrid1_DoubleClickRow_Check(ugr);
  275. }
  276. else
  277. {
  278. ugr.Appearance.BackColor = Color.White;
  279. }
  280. }
  281. ClsControlPack.RefreshAndAutoSize(ultraGrid1);
  282. }
  283. else
  284. {
  285. dtScaleTable.Clear();
  286. ClsControlPack.CopyDataToDatatable(ref dtScaleTable, ref dataTable1, true);
  287. ClsControlPack.RefreshAndAutoSize(ultraGrid1);
  288. }
  289. }
  290. }
  291. catch (Exception)
  292. {
  293. throw;
  294. }
  295. }
  296. /// <summary>
  297. /// 定时数据查询接口
  298. /// </summary>
  299. private void querytiminginfo()
  300. {
  301. try
  302. {
  303. DataTable dtTmingTable = dataTable3.Clone();
  304. CommonPage<MeterWorkBeltTiminginfo> cp = new CommonPage<MeterWorkBeltTiminginfo>();
  305. cp.startTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd HH:mm:ss");
  306. cp.endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  307. cp.param = new MeterWorkBeltTiminginfo { valueFlag = "1", baseSpotNo = sPointNo, scaleName = "A", weightType = "0" };
  308. RESTfulResult<List<MeterWorkBeltTiminginfo>> rms = meterWorkBeltTimingService.doQueryWf(cp);
  309. DataTable dtTmingTable1 = dataTable4.Clone();
  310. CommonPage<MeterWorkBeltTiminginfo> cp1 = new CommonPage<MeterWorkBeltTiminginfo>();
  311. cp1.startTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd HH:mm:ss");
  312. cp1.endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  313. cp1.param = new MeterWorkBeltTiminginfo { valueFlag = "1", baseSpotNo = sPointNo, scaleName = "B", weightType = "0" };
  314. RESTfulResult<List<MeterWorkBeltTiminginfo>> rms1 = meterWorkBeltTimingService.doQueryWf(cp1);
  315. if (rms.Succeed && rms1.Succeed)
  316. {
  317. if (rms.Data != null && rms.Data.Count > 0)
  318. {
  319. dtTmingTable = rms.Data.ListToDataTable<MeterWorkBeltTiminginfo>();
  320. ClsControlPack.CopyDataToDatatable(ref dtTmingTable, ref dataTable3, true);
  321. ClsControlPack.RefreshAndAutoSize(ultraGrid2);
  322. }
  323. else
  324. {
  325. dtTmingTable.Clear();
  326. ClsControlPack.CopyDataToDatatable(ref dtTmingTable, ref dataTable3, true);
  327. ClsControlPack.RefreshAndAutoSize(ultraGrid2);
  328. }
  329. if (rms1.Data != null && rms1.Data.Count > 0)
  330. {
  331. dtTmingTable1 = rms1.Data.ListToDataTable<MeterWorkBeltTiminginfo>();
  332. ClsControlPack.CopyDataToDatatable(ref dtTmingTable1, ref dataTable4, true);
  333. ClsControlPack.RefreshAndAutoSize(ultraGrid3);
  334. }
  335. else
  336. {
  337. dtTmingTable1.Clear();
  338. ClsControlPack.CopyDataToDatatable(ref dtTmingTable1, ref dataTable4, true);
  339. ClsControlPack.RefreshAndAutoSize(ultraGrid3);
  340. }
  341. }
  342. }
  343. catch (Exception)
  344. {
  345. throw;
  346. }
  347. }
  348. /// <summary>
  349. /// 双击grid 赋值预报
  350. /// </summary>
  351. /// <param name="sender"></param>
  352. /// <param name="e"></param>
  353. private void ultraGrid1_DoubleClickRow(object sender, DoubleClickRowEventArgs e)
  354. {
  355. try
  356. {
  357. UltraGridRow row = ultraGrid1.ActiveRow;
  358. if (ultraGrid1.ActiveRow == null)
  359. {
  360. return;
  361. }
  362. if (startMerterBtn.Enabled == true && startMerterBtn_1.Enabled == true)
  363. { //在计量过程中不允许替换预报
  364. //界面赋值
  365. ultraGrid1_DoubleClickRow_Check(row);
  366. }
  367. else
  368. {
  369. if (row.Cells["valueFlag"].Text.Trim() == "使用中")
  370. {
  371. ultraGrid1_DoubleClickRow_Check(row);
  372. }
  373. else
  374. {
  375. MessageBox.Show("在计量过程中不允许更换其他预报!");
  376. return;
  377. }
  378. }
  379. }
  380. catch (Exception ex)
  381. {
  382. MessageBox.Show("ultraGrid1_ClickCell方法处理异常:" + ex);
  383. }
  384. }
  385. private void ultraGrid1_DoubleClickRow_Check(UltraGridRow ugr)
  386. {
  387. //重置物料系数
  388. materialParameter = "";
  389. materialParameterB = "";
  390. materialParameterImport = "";
  391. materialParameterImportB = "";
  392. CommonPage<PreBeltScaleForecast> cp = new CommonPage<PreBeltScaleForecast>();
  393. cp.param = new PreBeltScaleForecast { valueFlag = "8", baseSpotNo = sPointNo }; //状态为8时 查询1和2
  394. if (ugr != null)
  395. {
  396. beltinfo.predictionNo = ugr.Cells["predictionNo"].Text.Trim(); //预报编号
  397. beltinfo.newMatName = ugr.Cells["newMatName"].Text.Trim(); //物料名称
  398. beltinfo.newSupplier = ugr.Cells["newSupplier"].Text.Trim();//发货单位
  399. beltinfo.receivingUintName = ugr.Cells["receivingUintName"].Text.Trim(); //收货单位
  400. beltinfo.forwardingUnitNo = ugr.Cells["forwardingUnitNo"].Text.Trim();//发货单位编号
  401. beltinfo.receivingUintNo = ugr.Cells["receivingUintNo"].Text.Trim();//收货单位编号
  402. beltinfo.productNo = ugr.Cells["productNo"].Text.Trim();//物料编号
  403. beltinfo.valueFlag = ugr.Cells["valueFlag"].Text.Trim();//状态
  404. autoAutoFill(beltinfo);
  405. beltinfo.baseSpotNo = sPointNo;
  406. beltinfo.newMatClass = ugr.Cells["newMatClass"].Text.Trim();//状态
  407. beltinfo.valueFlag = "1";
  408. cp.memo1 = "A";
  409. cp.param = beltinfo;
  410. RESTfulResult<List<MeterBasemeterMaterialpm>> rms = baseBeltMaterialpmService.doQueryByBeltType(cp);
  411. if (rms.Data.Count > 0 && !Isfrist)
  412. {
  413. materialParameter = rms.Data[0].materialParameter.ToString();
  414. materialParameterImport = rms.Data[0].materialParameterImport.ToString();
  415. Boolean IsUpdateMatPm = false;
  416. //根据进口或者非进口的来修改物料参数
  417. if (materialParameterImport != "" && beltinfo.newMatClass.Contains("进口"))
  418. {
  419. megA.Text = "物料参数:进口" + materialParameterImport;
  420. if (materialParameterImport != getTedValue("parameter_Ted").ToString())
  421. {
  422. if (MessageBox.Show("物料参数不一致,是否更改物料参数?", sPointName + " A秤", MessageBoxButtons.YesNo) == DialogResult.Yes)//如果点击“确定”按钮
  423. {
  424. updateMatParameter(materialParameterImport, "A");
  425. IsUpdateMatPm = true;
  426. }
  427. }
  428. }
  429. if (materialParameter != "" && !beltinfo.newMatClass.Contains("进口"))
  430. {
  431. megA.Text = "物料参数:国内" + materialParameter;
  432. if (materialParameter != getTedValue("parameter_Ted").ToString())
  433. {
  434. if (MessageBox.Show("物料参数不一致,是否更改物料参数?", sPointName + " A秤", MessageBoxButtons.YesNo) == DialogResult.Yes)//如果点击“确定”按钮
  435. {
  436. updateMatParameter(materialParameter, "A");
  437. IsUpdateMatPm = true;
  438. }
  439. }
  440. }
  441. cp.memo1 = "B";
  442. rms = baseBeltMaterialpmService.doQueryByBeltType(cp);
  443. if (rms.Data.Count > 0)
  444. {
  445. materialParameterB = rms.Data[0].materialParameter.ToString();
  446. materialParameterImportB = rms.Data[0].materialParameterImport.ToString();
  447. }
  448. if (beltinfo.newMatClass.Contains("进口") && materialParameterImportB != "")
  449. {
  450. megB.Text = "物料参数:进口" + materialParameterImportB;
  451. //根据进口或者非进口的来修改物料参数
  452. if (materialParameterImportB != getTedValue("parameter_Ted_1").ToString())
  453. {
  454. if (MessageBox.Show("物料参数不一致,是否更改物料参数?", sPointName + " B秤", MessageBoxButtons.YesNo) == DialogResult.Yes)//如果点击“确定”按钮
  455. {
  456. updateMatParameter(materialParameterImportB, "B");
  457. IsUpdateMatPm = true;
  458. }
  459. }
  460. }
  461. if (!beltinfo.newMatClass.Contains("进口") && materialParameterB != "")
  462. {
  463. megB.Text = "物料参数:国内" + materialParameterB;
  464. if (materialParameterB != getTedValue("parameter_Ted_1").ToString())
  465. {
  466. if (MessageBox.Show("物料参数不一致,是否更改物料参数?", sPointName + " B秤", MessageBoxButtons.YesNo) == DialogResult.Yes)//如果点击“确定”按钮
  467. {
  468. updateMatParameter(materialParameterB, "B");
  469. IsUpdateMatPm = true;
  470. }
  471. }
  472. }
  473. if (IsUpdateMatPm)
  474. {
  475. MessageBox.Show("更改系数完成,请核对!");
  476. }
  477. }
  478. }
  479. if (MeterWorkBeltActual_NOW != null && MeterWorkBeltActual_NOW.Data != null)
  480. {
  481. if (MeterWorkBeltActual_NOW.Data.Count == 1)
  482. {
  483. if (MeterWorkBeltActual_NOW.Data[0].scaleName == "A")
  484. {
  485. if (MeterWorkBeltActual_NOW.Data[0].endTime != null)
  486. {
  487. startMerterBtn.Enabled = true; IsSaveA = false;
  488. }
  489. else
  490. {
  491. startMerterBtn.Enabled = false; IsSaveA = true;
  492. }
  493. }
  494. if (MeterWorkBeltActual_NOW.Data[0].scaleName == "B")
  495. {
  496. if (MeterWorkBeltActual_NOW.Data[0].endTime != null)
  497. {
  498. startMerterBtn_1.Enabled = true; IsSaveB = false;
  499. }
  500. else
  501. {
  502. startMerterBtn_1.Enabled = false; IsSaveB = true;
  503. }
  504. }
  505. }
  506. else if (MeterWorkBeltActual_NOW.Data.Count == 2)
  507. {
  508. if (MeterWorkBeltActual_NOW.Data[0].scaleName == "A")
  509. {
  510. if (MeterWorkBeltActual_NOW.Data[0].endTime == null && MeterWorkBeltActual_NOW.Data[0].startTime != null)
  511. {
  512. _startWeight1 = Convert.ToDouble(MeterWorkBeltActual_NOW.Data[0].startWeight);
  513. IsSaveA = true;
  514. UpdateControl(1);//A开始计量
  515. }
  516. }
  517. if (MeterWorkBeltActual_NOW.Data[0].scaleName == "B")
  518. {
  519. if (MeterWorkBeltActual_NOW.Data[0].endTime == null && MeterWorkBeltActual_NOW.Data[0].startTime != null)
  520. {
  521. UpdateControl(2);//B开始计量
  522. _startWeight2 = Convert.ToDouble(MeterWorkBeltActual_NOW.Data[0].startWeight);
  523. IsSaveB = true;
  524. }
  525. }
  526. if (MeterWorkBeltActual_NOW.Data[1].scaleName == "A")
  527. {
  528. if (MeterWorkBeltActual_NOW.Data[1].endTime == null && MeterWorkBeltActual_NOW.Data[1].startTime != null)
  529. {
  530. _startWeight1 = Convert.ToDouble(MeterWorkBeltActual_NOW.Data[1].startWeight);
  531. IsSaveA = true;
  532. UpdateControl(1);//A开始计量
  533. }
  534. }
  535. if (MeterWorkBeltActual_NOW.Data[1].scaleName == "B")
  536. {
  537. if (MeterWorkBeltActual_NOW.Data[1].endTime == null && MeterWorkBeltActual_NOW.Data[1].startTime != null)
  538. {
  539. UpdateControl(2);//B开始计量
  540. _startWeight2 = Convert.ToDouble(MeterWorkBeltActual_NOW.Data[1].startWeight);
  541. IsSaveB = true;
  542. }
  543. }
  544. }
  545. }
  546. }
  547. //根据预报编码查询实绩
  548. private void findActualById(string predictionNo)
  549. {
  550. MeterWorkBeltActual_NOW = null;//清空
  551. CommonPage<MeterWorkBeltActual> cp2 = new CommonPage<MeterWorkBeltActual>();
  552. MeterWorkBeltActual meterWorkBeltActual = new MeterWorkBeltActual();
  553. if (predictionNoTxt.Text.Trim() != "")
  554. {
  555. meterWorkBeltActual.valueFlag = "1";
  556. meterWorkBeltActual.baseSpotNo = sPointNo;
  557. meterWorkBeltActual.predictionNo = predictionNo;
  558. cp2.param = meterWorkBeltActual;
  559. MeterWorkBeltActual_NOW = MeterWorkBeltActualService.doQuery(cp2.param);
  560. }
  561. }
  562. /// <summary>
  563. /// 实绩查询接口
  564. /// </summary>
  565. private void queryActual()
  566. {
  567. try
  568. {
  569. DataTable dtScaleTable = dataTable5.Clone();
  570. CommonPage<MeterWorkBeltActual> cp = new CommonPage<MeterWorkBeltActual>();
  571. cp.param = new MeterWorkBeltActual
  572. {
  573. valueFlag = "1",
  574. baseSpotNo = sPointNo,
  575. startTime = DateTime.Now
  576. };
  577. cp.startTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd HH:mm:ss");
  578. cp.endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  579. RESTfulResult<List<MeterWorkBeltActual>> rms = MeterWorkBeltActualService.doQueryAndMultiple(cp);
  580. if (rms.Succeed)
  581. {
  582. if (rms.Data != null && rms.Data.Count > 0)
  583. {
  584. dtScaleTable = rms.Data.ListToDataTable<MeterWorkBeltActual>();
  585. ClsControlPack.CopyDataToDatatable(ref dtScaleTable, ref dataTable5, true);
  586. ClsControlPack.RefreshAndAutoSize(ultraGridActual);
  587. }
  588. else
  589. {
  590. dtScaleTable.Clear();
  591. ClsControlPack.CopyDataToDatatable(ref dtScaleTable, ref dataTable5, true);
  592. ClsControlPack.RefreshAndAutoSize(ultraGridActual);
  593. }
  594. }
  595. }
  596. catch (Exception)
  597. {
  598. throw;
  599. }
  600. }
  601. #endregion
  602. #region 流量曲线
  603. private StrapSeries _series1 = new StrapSeries();
  604. private StrapSeries _series2 = new StrapSeries();
  605. private const int _maxPointCount = 300;
  606. //初始化流量曲线
  607. private void InitGraph() {
  608. ultraChart1.Series.Clear();
  609. ultraChart2.Series.Clear();
  610. ultraChart1.Series.Add(_series1);
  611. ultraChart2.Series.Add(_series2);
  612. StrapDataPoint point = new StrapDataPoint();
  613. point.NumericValue = 0;
  614. point.TimeValue = DateTime.Now.AddSeconds(-_maxPointCount);
  615. _series1.Points.Add(point);
  616. _series2.Points.Add(point);
  617. ultraChart1.Tooltips.Format = Infragistics.UltraChart.Shared.Styles.TooltipStyle.LabelPlusDataValue;
  618. ultraChart2.Tooltips.Format = Infragistics.UltraChart.Shared.Styles.TooltipStyle.LabelPlusDataValue;
  619. }
  620. private void timer2_Tick(object sender, EventArgs e)
  621. {
  622. DateTime now = DateTime.Now;
  623. string endTimeStr = now.ToString("HH:mm:ss");
  624. string startTimeStr = now.AddSeconds(-_maxPointCount).ToString("HH:mm:ss");
  625. lbl_EndTime1.Text = endTimeStr;
  626. lbl_EndTime2.Text = endTimeStr;
  627. lbl_StartTime1.Text = startTimeStr;
  628. lbl_StartTime2.Text = startTimeStr;
  629. StrapDataPoint point = new StrapDataPoint();
  630. point.TimeValue = now;
  631. point.NumericValue = Convert.ToDouble(getTedValue("realtime_amount_Ted"));
  632. point.Label = "时间:" + point.TimeValue.ToString("HH:mm:ss") + "\r\n流量";
  633. _series1.Points.Add(point);
  634. if (_series1.Points.Count > _maxPointCount)
  635. {
  636. _series1.Points.RemoveAt(0);
  637. }
  638. point = new StrapDataPoint();
  639. point.TimeValue = now;
  640. point.NumericValue = Convert.ToDouble(getTedValue("realtime_amount_Ted_1"));
  641. point.Label = "时间:" + point.TimeValue.ToString("HH:mm:ss") + "\r\n流量";
  642. _series2.Points.Add(point);
  643. if (_series2.Points.Count > _maxPointCount)
  644. {
  645. _series2.Points.RemoveAt(0);
  646. }
  647. }
  648. #endregion
  649. #region 公共方法
  650. /// <summary>
  651. /// 定时器 更新数据
  652. /// </summary>
  653. private void timer1_Tick(object sender, EventArgs e)
  654. {
  655. try
  656. {
  657. if (measDataA != null)
  658. {
  659. setTedValue("instrument_weight_Ted", Math.Round(measDataA.Total, 2).ToString());//仪表重量
  660. if (IsSaveA)
  661. {
  662. setTedValue("cumulative_weight_Ted", Math.Round(measDataA.Total - _startWeight1, 2).ToString());//累计量
  663. }
  664. setTedValue("realtime_amount_Ted", Math.Round(measDataA.Flow, 2).ToString());//实时量
  665. setTedValue("belt_speed_Ted", Math.Round(measDataA.BeltSpeed, 2).ToString());//皮带速度
  666. setTedValue("temperature_Ted", Math.Round(measDataA.FieldTemp, 2).ToString());//温度
  667. setTedValue("parameter_Ted", measDataA.StdValue.ToString());//物料参数
  668. _curTotalWeight1 = Math.Round(measDataA.Total, 2);
  669. if ((measDataA.IsConnect ? "" : "2") != "")
  670. {
  671. label36.Text = "仪表连接异常!";
  672. return;
  673. }
  674. if ((measDataA.MeterStatus ? "" : "2") != "")
  675. {
  676. label36.Text = "仪表为校秤状态!";
  677. return;
  678. }
  679. }
  680. if (measDataB != null)
  681. {
  682. setTedValue("instrument_weight_Ted_1", Math.Round(measDataB.Total, 2).ToString());//仪表重量
  683. if (IsSaveB) {
  684. setTedValue("cumulative_weight_Ted_1", Math.Round(measDataB.Total - _startWeight2, 2).ToString());//累计量
  685. }
  686. setTedValue("realtime_amount_Ted_1", Math.Round(measDataB.Flow, 2).ToString());//实时量
  687. setTedValue("belt_speed_Ted_1", Math.Round(measDataB.BeltSpeed, 2).ToString());//皮带速度
  688. setTedValue("temperature_Ted_1", Math.Round(measDataB.FieldTemp, 2).ToString());//温度
  689. setTedValue("parameter_Ted_1", measDataB.StdValue.ToString());//物料参数
  690. _curTotalWeight1 = Math.Round(measDataB.Total, 2);
  691. if ((measDataB.IsConnect ? "" : "2") != "")
  692. {
  693. label37.Text = "仪表连接异常!";
  694. return;
  695. }
  696. if ((measDataB.MeterStatus ? "" : "2") != "")
  697. {
  698. label37.Text = "仪表为校秤状态!";
  699. return;
  700. }
  701. }
  702. if (StartXiaoLingA) {
  703. if (startZeroBtn.Enabled==true) {
  704. startZeroBtn.Enabled = false;
  705. }
  706. CalibrateData[] cbDatas = cbDataByControlA;
  707. oldzeroTxt.Text = oldzeroA;
  708. if (cbDatas != null)
  709. {
  710. for (int i = 0; i < cbDatas.Length; i++)
  711. {
  712. CalibrateChanged(cbDatas[i], "A");
  713. }
  714. }
  715. }
  716. if (StartXiaoLingB)
  717. {
  718. if (startZeroBtn_1.Enabled == true)
  719. {
  720. startZeroBtn_1.Enabled = false;
  721. }
  722. CalibrateData[] cbDatas = cbDataByControlB;
  723. oldzeroTxt_1.Text = oldzeroB;
  724. if (cbDatas != null)
  725. {
  726. for (int i = 0; i < cbDatas.Length; i++)
  727. {
  728. CalibrateChanged(cbDatas[i], "B");
  729. }
  730. }
  731. }
  732. }
  733. catch (Exception ex)
  734. {
  735. MessageBox.Show("异常" + ex.Message);
  736. return;
  737. }
  738. }
  739. //初始化监控视频
  740. private void InitVidio()
  741. {
  742. if (!findvidioIp())
  743. {
  744. MessageBox.Show("获取录像机ip失败!");
  745. return;
  746. }
  747. else
  748. {
  749. // ips = spotInfo.videoIp.Split(',');
  750. }
  751. if (baseVideoinfo != null)
  752. {
  753. if (IntPtr.Zero == _LoginID)
  754. {
  755. if (baseVideoinfo.position1 != null && baseVideoinfo.position1 != "")
  756. {
  757. _LoginID = NETClient.LoginWithHighLevelSecurity(baseVideoinfo.position1, Convert.ToUInt16(baseVideoinfo.vdoPort), baseVideoinfo.vdoUser, baseVideoinfo.vdoPwd, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref _DeviceInfo);
  758. }
  759. if (baseVideoinfo.position2 != null && baseVideoinfo.position2 != "")
  760. {
  761. _LoginID1 = NETClient.LoginWithHighLevelSecurity(baseVideoinfo.position2, Convert.ToUInt16(baseVideoinfo.vdoPort), baseVideoinfo.vdoUser, baseVideoinfo.vdoPwd, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref _DeviceInfo);
  762. }
  763. if (baseVideoinfo.position3 != null && baseVideoinfo.position3 != "")
  764. {
  765. _LoginID2 = NETClient.LoginWithHighLevelSecurity(baseVideoinfo.position3, Convert.ToUInt16(baseVideoinfo.vdoPort), baseVideoinfo.vdoUser, baseVideoinfo.vdoPwd, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref _DeviceInfo);
  766. }
  767. if (IntPtr.Zero == _LoginID)
  768. {
  769. MessageBox.Show(NETClient.GetLastError());
  770. return;
  771. }
  772. if (IntPtr.Zero == _PlayID)
  773. {
  774. if (baseVideoinfo.position1 != "" && baseVideoinfo.position1 != null)
  775. {
  776. _PlayID = NETClient.RealPlay(_LoginID, 0, this.pictureBox1.Handle);
  777. }
  778. if (baseVideoinfo.position2 != "" && baseVideoinfo.position2 != null)
  779. {
  780. _PlayID = NETClient.RealPlay(_LoginID1, 0, this.pictureBox2.Handle);
  781. }
  782. if (baseVideoinfo.position3 != "" && baseVideoinfo.position3 != null)
  783. {
  784. _PlayID = NETClient.RealPlay(_LoginID2, 0, this.pictureBox3.Handle);
  785. }
  786. if (IntPtr.Zero == _PlayID)
  787. {
  788. MessageBox.Show(NETClient.GetLastError());
  789. return;
  790. }
  791. bool ret = NETClient.RenderPrivateData(_PlayID, true);
  792. if (!ret)
  793. {
  794. MessageBox.Show(NETClient.GetLastError());
  795. return;
  796. }
  797. }
  798. else
  799. {
  800. NETClient.RenderPrivateData(_PlayID, false);
  801. NETClient.StopRealPlay(_PlayID);
  802. _PlayID = IntPtr.Zero;
  803. this.pictureBox1.Refresh();
  804. this.pictureBox2.Refresh();
  805. this.pictureBox3.Refresh();
  806. }
  807. }
  808. }
  809. }
  810. //查询录像机ip
  811. private bool findvidioIp()
  812. {
  813. MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService();
  814. RESTfulResult<List<MeterBaseVideoinfo>> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { pointtype = "皮带秤", pointid = sPointNo });
  815. if (rm.Succeed && rm.Data != null && rm.Data.Count > 0)
  816. {
  817. baseVideoinfo = rm.Data[0];
  818. return true;
  819. }
  820. else
  821. {
  822. return false;
  823. }
  824. }
  825. //填充窗口表单
  826. private void autoAutoFill(PreBeltScaleForecast forecast)
  827. {
  828. if (forecast == null || string.IsNullOrEmpty(forecast.predictionNo))
  829. {
  830. return;
  831. }
  832. //A磅
  833. predictionNoTxt.Text = forecast.predictionNo; //预报编号
  834. mat_nameTxt.Text = forecast.newMatName; //物料
  835. shippingTxt.Text = forecast.newSupplier; //发货
  836. receivingTxt.Text = forecast.receivingUintName;//收货
  837. findActualById(forecast.predictionNo);
  838. }
  839. //加载表格数据
  840. private void loadFrom()
  841. {
  842. //预报表转换
  843. ValueList vlistFlag1 = new ValueList();
  844. vlistFlag1.ValueListItems.Add("0", "无效");
  845. vlistFlag1.ValueListItems.Add("1", "未使用");
  846. vlistFlag1.ValueListItems.Add("2", "使用中");
  847. vlistFlag1.ValueListItems.Add("3", "已完成");
  848. this.ultraGrid1.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = vlistFlag1;
  849. //验证是否为校零状态
  850. if (StartXiaoLingA)
  851. {
  852. startZeroBtn.Enabled = false;
  853. }
  854. else {
  855. startZeroBtn.Enabled = true;
  856. }
  857. if (StartXiaoLingB)
  858. {
  859. startZeroBtn_1.Enabled = false;
  860. }
  861. else
  862. {
  863. startZeroBtn_1.Enabled = true;
  864. }
  865. queryActual();
  866. queryScale();
  867. querytiminginfo();
  868. }
  869. //初始化加载界面
  870. private void InitFrm()
  871. {
  872. this.PntNameLabel.Text = sPointName;//计量点
  873. this.UserNameLabel.Text = sUserName;//计量员
  874. //设置grid不可编辑
  875. GridHelper.SetExcludeColumnsActive(ultraGrid1.DisplayLayout.Bands[0], "");
  876. GridHelper.SetExcludeColumnsActive(ultraGrid2.DisplayLayout.Bands[0], "");
  877. GridHelper.SetExcludeColumnsActive(ultraGrid3.DisplayLayout.Bands[0], "");
  878. GridHelper.SetExcludeColumnsActive(ultraGridActual.DisplayLayout.Bands[0], "");
  879. }
  880. //清空计量预报数据
  881. private void ClearFromInfo()
  882. {
  883. predictionNoTxt.Text = ""; //预报编号
  884. mat_nameTxt.Text = ""; //物料
  885. shippingTxt.Text = ""; //发货
  886. receivingTxt.Text = "";//收货
  887. }
  888. //修改计量按钮样式
  889. private void UpdateControl(int id)
  890. {
  891. switch (id)
  892. {
  893. case 0://默认
  894. startMerterBtn.Enabled = true;
  895. startMerterBtn_1.Enabled = true;
  896. ClearFromInfo();//清空预报
  897. break;
  898. case 1:
  899. startMerterBtn.Enabled = false;
  900. break;
  901. case 2:
  902. startMerterBtn_1.Enabled = false;
  903. break;
  904. case 3:
  905. startMerterBtn.Enabled = true;
  906. if (startMerterBtn_1.Enabled == true)
  907. {
  908. ClearFromInfo();//清空预报
  909. }
  910. break;
  911. case 4:
  912. startMerterBtn_1.Enabled = true;
  913. if (startMerterBtn.Enabled == true)
  914. {
  915. ClearFromInfo();//清空预报
  916. }
  917. break;
  918. case 9:
  919. startMerterBtn.Enabled = false;
  920. startMerterBtn_1.Enabled = false;
  921. break;
  922. }
  923. }
  924. private void startMerterBtn_EnabledChanged(object sender, EventArgs e)
  925. {
  926. if (startMerterBtn.Enabled == true)
  927. {
  928. startMerterBtn.BackColor = Color.LimeGreen;
  929. endMerterBtn.BackColor = Color.Silver;
  930. endMerterBtn.Enabled = false;
  931. }
  932. else
  933. {
  934. startMerterBtn.BackColor = Color.Silver;
  935. endMerterBtn.BackColor = Color.LimeGreen;
  936. endMerterBtn.Enabled = true;
  937. }
  938. }
  939. private void startMerterBtn_1_EnabledChanged(object sender, EventArgs e)
  940. {
  941. if (startMerterBtn_1.Enabled == true)
  942. {
  943. startMerterBtn_1.BackColor = Color.LimeGreen;
  944. endMerterBtn_1.BackColor = Color.Silver;
  945. endMerterBtn_1.Enabled = false;
  946. }
  947. else
  948. {
  949. startMerterBtn_1.BackColor = Color.Silver;
  950. endMerterBtn_1.BackColor = Color.LimeGreen;
  951. endMerterBtn_1.Enabled = true;
  952. }
  953. }
  954. //A开始校零
  955. private void startZeroBtn_EnabledChanged(object sender, EventArgs e)
  956. {
  957. if (startZeroBtn.Enabled == true)//开始校零为true时
  958. {
  959. startZeroBtn.BackColor = Color.LimeGreen;//开始
  960. ConfirmCalibrate.BackColor = Color.Silver;//确认
  961. ConfirmCalibrate.Enabled = false;
  962. CancelCalibrate.BackColor = Color.Silver;//放弃
  963. CancelCalibrate.Enabled = false;
  964. ClearTotal.BackColor = Color.LimeGreen;//累计量清零
  965. ClearTotal.Enabled = true;
  966. }
  967. else
  968. {
  969. startZeroBtn.BackColor = Color.Silver;//开始
  970. ConfirmCalibrate.BackColor = Color.LimeGreen;//确认
  971. ConfirmCalibrate.Enabled = true;
  972. CancelCalibrate.BackColor = Color.LimeGreen;//放弃
  973. CancelCalibrate.Enabled = true;
  974. ClearTotal.BackColor = Color.Silver;//累计
  975. ClearTotal.Enabled = true;
  976. ClearTotal.BackColor = Color.Silver;//累计
  977. ClearTotal.Enabled = false;
  978. }
  979. }
  980. private void startZeroBtn_1_EnabledChanged(object sender, EventArgs e)
  981. {
  982. if (startZeroBtn_1.Enabled == true)//开始校零为true时
  983. {
  984. startZeroBtn_1.BackColor = Color.LimeGreen;//开始
  985. ConfirmCalibrate_1.BackColor = Color.Silver;//确认
  986. ConfirmCalibrate_1.Enabled = false;
  987. CancelCalibrate_1.BackColor = Color.Silver;//放弃
  988. CancelCalibrate_1.Enabled = false;
  989. ClearTotal_1.BackColor = Color.LimeGreen;//累计
  990. ClearTotal_1.Enabled = false;
  991. ClearTotal_1.BackColor = Color.LimeGreen;//累计
  992. ClearTotal_1.Enabled = true;
  993. }
  994. else
  995. {
  996. startZeroBtn_1.BackColor = Color.Silver;//开始
  997. ConfirmCalibrate_1.BackColor = Color.LimeGreen;//确认
  998. ConfirmCalibrate_1.Enabled = true;
  999. CancelCalibrate_1.BackColor = Color.LimeGreen;//放弃
  1000. CancelCalibrate_1.Enabled = true;
  1001. ClearTotal_1.BackColor = Color.Silver;//累计
  1002. ClearTotal_1.Enabled = true;
  1003. ClearTotal_1.BackColor = Color.Silver;//累计
  1004. ClearTotal_1.Enabled = false;
  1005. }
  1006. }
  1007. //查找moxaip
  1008. private Boolean findMoxa()
  1009. {
  1010. MeterBaseScalePointService monitorService = new MeterBaseScalePointService();
  1011. RESTfulResult<List<MeterBaseScalePoint>> rmMonitor = monitorService.doQueryWf(new MeterBaseScalePoint { validFlag = "1", baseSpotNo = sPointNo });
  1012. if (rmMonitor.Succeed)
  1013. {
  1014. scalePoints = rmMonitor.Data;
  1015. return true;
  1016. }
  1017. else
  1018. {
  1019. l.WriteLog(22, "获取仪表ip失败" + rmMonitor.Message);
  1020. return false;
  1021. }
  1022. }
  1023. #endregion
  1024. #region 采集赋值
  1025. protected delegate void WeightChangeDelegate(MeasData measData);
  1026. private CoreStrapMeas _strapMeter1 = null;
  1027. private CoreStrapMeas _strapMeter2 = null;
  1028. public double _curTotalWeight1 = 0;//当前累计量
  1029. public double _curTotalWeight2 = 0;
  1030. public double _startWeight1 = 0;//起始量
  1031. public double _startWeight2 = 0;
  1032. public void OnWeightChanged1(object sender, MeasEventArgs e)
  1033. {
  1034. string aa = this.Name;
  1035. if (!_strapMeter1.IsClose)
  1036. {
  1037. WeightChangeDelegate dlg = new WeightChangeDelegate(WeightChange1);
  1038. Invoke(dlg, e.Value);
  1039. }
  1040. }
  1041. public void OnWeightChanged2(object sender, MeasEventArgs e)
  1042. {
  1043. if (!_strapMeter1.IsClose)
  1044. {
  1045. string aa = this.Name;
  1046. WeightChangeDelegate dlg = new WeightChangeDelegate(WeightChange2);
  1047. Invoke(dlg, e.Value);
  1048. }
  1049. }
  1050. private void InitScaleInfo(string measaddr1, string measaddr2)
  1051. {
  1052. string meastype1 = "SA600";
  1053. string meastype2 = "SA600";
  1054. if (!string.IsNullOrEmpty(meastype1) && !string.IsNullOrEmpty(measaddr1))
  1055. {
  1056. _strapMeter1 = new CoreStrapMeas(ConvertMeasType(meastype1));
  1057. _strapMeter1.onMeasChanged += new MeasChangedEventHandler(OnWeightChanged1);
  1058. if (!_strapMeter1.Open(measaddr1))
  1059. {
  1060. MessageBox.Show("A秤打开失败,请检查仪表连接!");
  1061. l.WriteLog(22, "A秤打开失败,请检查仪表连接!");
  1062. return;
  1063. }
  1064. }
  1065. if (!string.IsNullOrEmpty(meastype2) && !string.IsNullOrEmpty(measaddr2))
  1066. {
  1067. _strapMeter2 = new CoreStrapMeas(ConvertMeasType(meastype2));
  1068. _strapMeter2.onMeasChanged += new MeasChangedEventHandler(OnWeightChanged2);
  1069. if (!_strapMeter2.Open(measaddr2))
  1070. {
  1071. MessageBox.Show("B秤打开失败,请检查仪表连接!");
  1072. l.WriteLog(22, "B秤打开失败,请检查仪表连接!");
  1073. return;
  1074. }
  1075. }
  1076. }
  1077. public void WeightChange1(MeasData measData)
  1078. {
  1079. try
  1080. {
  1081. }
  1082. catch (Exception ex)
  1083. {
  1084. MessageBox.Show("异常" + ex.Message);
  1085. return;
  1086. }
  1087. }
  1088. public void WeightChange2(MeasData measData)
  1089. {
  1090. try
  1091. {
  1092. }
  1093. catch (Exception ex)
  1094. {
  1095. MessageBox.Show("异常" + ex.Message);
  1096. return;
  1097. }
  1098. }
  1099. private StrapMeasType ConvertMeasType(string measTypeStr)
  1100. {
  1101. return StrapMeasType.SA600;
  1102. }
  1103. #endregion
  1104. #region 校零赋值
  1105. private delegate void TimerDelegate();
  1106. //A 校零定时器
  1107. private void timer3_Tick(object sender, EventArgs e)
  1108. {
  1109. Thread thread = new Thread(new ThreadStart(Calibrate1_TickDelegate));
  1110. thread.Start();
  1111. }
  1112. //B 校零定时器
  1113. private void timer4_Tick(object sender, EventArgs e)
  1114. {
  1115. Thread thread = new Thread(new ThreadStart(Calibrate1_TickDelegate1));
  1116. thread.Start();
  1117. }
  1118. private void Calibrate1_TickDelegate()
  1119. {
  1120. TimerDelegate td = new TimerDelegate(Calibrate1_Tick);
  1121. Invoke(td);
  1122. }
  1123. private void Calibrate1_TickDelegate1()
  1124. {
  1125. TimerDelegate td = new TimerDelegate(Calibrate1_Tick1);
  1126. Invoke(td);
  1127. }
  1128. private void Calibrate1_Tick()
  1129. {
  1130. CalibrateData[] cbDatas =_strapMeter1.FreshCalibrateData();
  1131. if (cbDatas != null)
  1132. {
  1133. for (int i = 0; i < cbDatas.Length; i++)
  1134. {
  1135. CalibrateChanged(cbDatas[i], "A");
  1136. }
  1137. }
  1138. }
  1139. private void Calibrate1_Tick1()
  1140. {
  1141. CalibrateData[] cbDatas = _strapMeter1.FreshCalibrateData();
  1142. if (cbDatas != null)
  1143. {
  1144. for (int i = 0; i < cbDatas.Length; i++)
  1145. {
  1146. CalibrateChanged(cbDatas[i], "B");
  1147. }
  1148. }
  1149. }
  1150. public void CalibrateChanged(CalibrateData cbData, String weightType)
  1151. {
  1152. if (cbData == null) return;
  1153. switch (weightType)
  1154. {
  1155. case "A":
  1156. beltlengthTxt.Text = Math.Round(cbData.MeasLength, 3).ToString();//带长
  1157. maxnumTxt.Text = Math.Round(cbData.MaxValue, 3).ToString();//最大值
  1158. minnumTxt.Text = Math.Round(cbData.MinValue, 3).ToString();//最小值
  1159. // oldzeroTxt.Text = Math.Round(cbData.OldZero, 3).ToString();//旧零点
  1160. newnumTxt.Text = Math.Round(cbData.NewZero, 5).ToString();//新零点
  1161. remaining_timeTxt.Text = cbData.RemainSeconds.ToString();//剩余时间
  1162. if (cbData.DevStatus)
  1163. {
  1164. timer3.Stop();
  1165. ConfirmCalibrate.Enabled = true; //确认校零
  1166. }
  1167. break;
  1168. case "B":
  1169. beltlengthTxt_1.Text = Math.Round(cbData.MeasLength, 3).ToString();//带长
  1170. maxnumTxt_1.Text = Math.Round(cbData.MaxValue, 3).ToString();//最大值
  1171. minnumTxt_1.Text = Math.Round(cbData.MinValue, 3).ToString();//最小值
  1172. //oldzeroTxt_1.Text = Math.Round(cbData.OldZero, 3).ToString();//旧零点
  1173. newnumTxt_1.Text = Math.Round(cbData.NewZero, 5).ToString();//新零点
  1174. remaining_timeTxt_1.Text = cbData.RemainSeconds.ToString();//剩余时间
  1175. if (cbData.DevStatus)
  1176. {
  1177. timer4.Stop();
  1178. ConfirmCalibrate_1.Enabled = true;
  1179. }
  1180. break;
  1181. }
  1182. }
  1183. //开始校零
  1184. private void startZeroBtn_Click(object sender, EventArgs e)
  1185. {
  1186. //if (startMerterBtn.Enabled==false) {
  1187. // MessageBox.Show("计量中不允许校零!");
  1188. // return;
  1189. //}
  1190. string oldzero = FindScaleZero("A");
  1191. if (oldzero == "500" || oldzero == "600")
  1192. {
  1193. oldzero = "";
  1194. MessageBox.Show("A秤查询旧零点出错或者是没查到");
  1195. }
  1196. //根据计量点查找最后的零点
  1197. oldzeroTxt.Text = oldzero;
  1198. if (predictionNoTxt.Text == "")
  1199. {
  1200. MessageBox.Show("预报不能为空,请选择预报后再校零。");
  1201. return;
  1202. }
  1203. if (_strapMeter1 != null)
  1204. {
  1205. _strapMeter1.StartCalibrateZero();
  1206. timer3.Start();
  1207. startZeroBtn.Enabled = false;//开始校零后禁用【开始校零】按钮
  1208. IsXiaolingA = true;
  1209. }
  1210. }
  1211. //B开始校零
  1212. private void button8_Click(object sender, EventArgs e)
  1213. {
  1214. //if (startMerterBtn_1.Enabled == false)
  1215. //{
  1216. // MessageBox.Show("计量中不允许校零!");
  1217. // return;
  1218. //}
  1219. string oldzero = FindScaleZero("B");
  1220. if (oldzero == "500")
  1221. {
  1222. oldzero = "";
  1223. MessageBox.Show("B秤查询旧零点出错或者是没查到!");
  1224. }
  1225. //根据计量点查找最后的零点
  1226. oldzeroTxt_1.Text = oldzero;
  1227. if (predictionNoTxt.Text == "")
  1228. {
  1229. MessageBox.Show("预报不能为空,请选择预报后再校零。");
  1230. return;
  1231. }
  1232. if (_strapMeter2 != null)
  1233. {
  1234. _strapMeter2.StartCalibrateZero();
  1235. timer4.Start();
  1236. startZeroBtn_1.Enabled = false;
  1237. IsXiaolingB = true;
  1238. }
  1239. }
  1240. private string FindScaleZero(string ScaleName)
  1241. {
  1242. CommonPage<MeterWorkBeltXiaopi> cp = new CommonPage<MeterWorkBeltXiaopi>();
  1243. MeterWorkBeltXiaopi beltXiaopi = new MeterWorkBeltXiaopi();
  1244. beltXiaopi.baseSpotNo = sPointNo;//计量点编码
  1245. beltXiaopi.scaleName = ScaleName;//秤体
  1246. cp.memo1 = "2";//查询旧零点
  1247. cp.param = beltXiaopi;
  1248. RESTfulResult<List<MeterWorkBeltXiaopi>> result = workBeltXiaopiService.doQueryWf(cp);
  1249. if (result.Succeed)
  1250. {
  1251. if (result.Data != null && result.Data.Count > 0)
  1252. {
  1253. return result.Data[0].newZero.ToString();
  1254. }
  1255. else
  1256. {
  1257. return "500";
  1258. }
  1259. }
  1260. return "500";
  1261. }
  1262. //确认校零
  1263. private void button6_Click(object sender, EventArgs e)
  1264. {
  1265. _strapMeter1.ConfirmCalibrateValue();
  1266. timer3.Stop();//关闭线程
  1267. startZeroBtn.Enabled = true;
  1268. xiaopi("A");
  1269. IsXiaolingA = false;
  1270. }
  1271. //确认校零B
  1272. private void ConfirmCalibrate_1_Click(object sender, EventArgs e)
  1273. {
  1274. _strapMeter2.ConfirmCalibrateValue();
  1275. timer4.Stop();
  1276. startZeroBtn_1.Enabled = true;
  1277. xiaopi("B");
  1278. IsXiaolingB = false;
  1279. }
  1280. //放弃校零
  1281. private void button4_Click(object sender, EventArgs e)
  1282. {
  1283. _strapMeter1.CancelCalibrateZero();
  1284. timer3.Stop();
  1285. startZeroBtn.Enabled = true;
  1286. IsXiaolingA = false;
  1287. beltlengthTxt.Text = "";//带长
  1288. maxnumTxt.Text = "";//最大值
  1289. minnumTxt.Text = "";//最小值
  1290. oldzeroTxt.Text = "";//旧零点
  1291. newnumTxt.Text = "";//新零点
  1292. remaining_timeTxt.Text = "";//剩余时间
  1293. }
  1294. //放弃校零B
  1295. private void CancelCalibrate_1_Click(object sender, EventArgs e)
  1296. {
  1297. _strapMeter2.CancelCalibrateZero();
  1298. timer4.Stop();
  1299. startZeroBtn_1.Enabled = true;
  1300. IsXiaolingB = false;
  1301. beltlengthTxt_1.Text = "";//带长
  1302. maxnumTxt_1.Text = "";//最大值
  1303. minnumTxt_1.Text = "";//最小值
  1304. oldzeroTxt_1.Text = "";//旧零点
  1305. newnumTxt_1.Text = "";//新零点
  1306. remaining_timeTxt_1.Text = "";//剩余时间
  1307. }
  1308. public void xiaopi(string ScaleName)
  1309. {
  1310. // 校皮:预报、时间、ScaleName 、计量点编码、计量点名称、新零点、物料
  1311. MeterWorkBeltXiaopi beltXiaopi = new MeterWorkBeltXiaopi();
  1312. beltXiaopi.predictionNo = predictionNoTxt.Text;//预报编号
  1313. if (ScaleName == "A")
  1314. {
  1315. beltXiaopi.newZero = newnumTxt.Text.ToString().Trim() == "" ? 0 : Convert.ToDouble(newnumTxt.Text.ToString());
  1316. }
  1317. else if (ScaleName == "B")
  1318. {
  1319. beltXiaopi.newZero = newnumTxt_1.Text.ToString() == "" ? 0 : Convert.ToDouble(newnumTxt_1.Text.ToString());
  1320. }
  1321. if (beltXiaopi.newZero == 0)
  1322. {
  1323. MessageBox.Show("新零点为空,校零失败!");
  1324. return;
  1325. }
  1326. beltXiaopi.baseSpotNo = sPointNo;//计量点编码
  1327. beltXiaopi.baseSpotName = sPointName;//计量点
  1328. beltXiaopi.productNo = beltinfo.productNo;//物料编码
  1329. beltXiaopi.productName = mat_nameTxt.Text;//物料名称
  1330. beltXiaopi.createManNo = sUserId;//用户id
  1331. beltXiaopi.createManName = sUserName;//用户名称
  1332. beltXiaopi.scaleName = ScaleName;//秤体
  1333. RESTfulResult<string> rm = workBeltXiaopiService.doAddWf(beltXiaopi);
  1334. if (rm.Succeed)
  1335. {
  1336. if ((!label36.Text.Contains("为校秤状态") && ScaleName == "A") || (!label37.Text.Contains("为校秤状态") && ScaleName == "B"))
  1337. {
  1338. MessageBox.Show(ScaleName + "秤确认校零成功!");
  1339. }
  1340. else
  1341. {
  1342. MessageBox.Show("请注意"+ScaleName + "秤红色提示是否还在确认是否校零成功!");
  1343. }
  1344. return;
  1345. }
  1346. else
  1347. {
  1348. MessageBox.Show("计量失败,请联系技术中心!");
  1349. l.WriteLog(22, "计量失败" + rm.Message);
  1350. return;
  1351. }
  1352. }
  1353. //累计量清零
  1354. private void ClearTotal_Click(object sender, EventArgs e)
  1355. {
  1356. try
  1357. {
  1358. if (startMerterBtn.Enabled == true && endMerterBtn.Enabled == false)
  1359. {
  1360. if (_strapMeter1 != null && MessageBox.Show("是否确定清零?", sPointName + " A秤", MessageBoxButtons.YesNo) == DialogResult.Yes)
  1361. {
  1362. startZeroBtn.Enabled = false;
  1363. _strapMeter1.ClearTotal();
  1364. startZeroBtn.Enabled = true;
  1365. }
  1366. }
  1367. else
  1368. {
  1369. MessageBox.Show("此船未结束,不允许清零!");
  1370. return;
  1371. }
  1372. }
  1373. catch (Exception ex)
  1374. {
  1375. MessageBox.Show("累积量清零" + ex.Message);
  1376. l.WriteLog(22, "累积量清零" + ex.Message);
  1377. }
  1378. }
  1379. //累计量清零 B
  1380. private void ClearTotal_1_Click(object sender, EventArgs e)
  1381. {
  1382. try
  1383. {
  1384. if (startMerterBtn_1.Enabled == true && endMerterBtn_1.Enabled == false)
  1385. {
  1386. if (_strapMeter2 != null && MessageBox.Show("是否确定清零?", sPointName + " B秤", MessageBoxButtons.YesNo) == DialogResult.Yes)
  1387. {
  1388. ClearTotal_1.Enabled = false;
  1389. _strapMeter2.ClearTotal();
  1390. ClearTotal_1.Enabled = true;
  1391. }
  1392. }
  1393. else
  1394. {
  1395. MessageBox.Show("此船未结束,不允许清零!");
  1396. return;
  1397. }
  1398. }
  1399. catch (Exception ex)
  1400. {
  1401. MessageBox.Show("累积量清零" + ex.Message);
  1402. l.WriteLog(22, "累积量清零" + ex.Message);
  1403. }
  1404. }
  1405. //显示差值
  1406. private void remaining_timeTxt_TextChanged(object sender, EventArgs e)
  1407. {
  1408. if (remaining_timeTxt.Text.Trim() == "0" && newnumTxt.Text.Trim() != "" && oldzeroTxt.Text.Trim() != "")
  1409. {
  1410. differenceTxt.Text = (Math.Round(Convert.ToDouble(newnumTxt.Text.Trim()), 6) - Math.Round(Convert.ToDouble(oldzeroTxt.Text.Trim()), 6)).ToString("0.00000");
  1411. }
  1412. }
  1413. private void remaining_timeTxt_1_TextChanged(object sender, EventArgs e)
  1414. {
  1415. if (remaining_timeTxt_1.Text.Trim() == "0" && newnumTxt_1.Text.Trim() != "" && oldzeroTxt_1.Text.Trim() != "")
  1416. {
  1417. differenceTxt_1.Text = (Math.Round(Convert.ToDouble(newnumTxt_1.Text.Trim()), 6) - Math.Round(Convert.ToDouble(oldzeroTxt_1.Text.Trim()), 6)).ToString("0.00000");
  1418. }
  1419. }
  1420. #endregion
  1421. #region 修改仪表物料参数
  1422. private void updateMatParameter(string parameter, string ScaleName)
  1423. {// (10)21003 (16)520b
  1424. int pm = Convert.ToInt32(Convert.ToDouble(parameter) * 10000);
  1425. byte[] C = intToBytes2(pm);
  1426. byte[] pmBytes = new byte[2];
  1427. pmBytes[0] = C[2];
  1428. pmBytes[1] = C[3];
  1429. switch (ScaleName)
  1430. {
  1431. case "A":
  1432. Addlog(getTedValue("parameter_Ted").ToString(), parameter, ScaleName, predictionNoTxt.Text.ToString());
  1433. _strapMeter1.setMatParameter(pmBytes);
  1434. break;
  1435. case "B":
  1436. Addlog(getTedValue("parameter_Ted_1").ToString(), parameter, ScaleName, predictionNoTxt.Text.ToString());
  1437. _strapMeter2.setMatParameter(pmBytes);
  1438. break;
  1439. }
  1440. }
  1441. public void Addlog(string materialParameter_old, string materialParameter_new, string scaleName, string preNo)
  1442. {
  1443. MeterBaseOperationLog log = new MeterBaseOperationLog();
  1444. log.operationId = preNo;
  1445. log.operationPage = "仪表参数";
  1446. log.operationFunction = "修改";
  1447. log.operationBeforeFix = "-计量点:" + sPointName + "-秤台:" + scaleName + "仪表参数:" + materialParameter_old;
  1448. log.operationAfterFix = "-计量点:" + sPointName + "-秤台:" + scaleName + "仪表参数:" + materialParameter_new;
  1449. log.logType = "皮带秤";
  1450. log.logTypeCode = "001002005";
  1451. log.createManNo = sUserId;
  1452. log.createManName = sUserName;
  1453. RESTfulResult<string> rESTfulResult = LogService.AddLog(log);
  1454. if (!rESTfulResult.Succeed)
  1455. {
  1456. MessageBox.Show("新增日志错误" + rESTfulResult.Message);
  1457. return;
  1458. }
  1459. }
  1460. public static byte[] intToBytes2(int value)
  1461. {
  1462. byte[] src = new byte[4];
  1463. src[0] = (byte)((value >> 24) & 0xFF);
  1464. src[1] = (byte)((value >> 16) & 0xFF);
  1465. src[2] = (byte)((value >> 8) & 0xFF);
  1466. src[3] = (byte)(value & 0xFF);
  1467. return src;
  1468. }
  1469. #endregion
  1470. #region 按钮事件 计量
  1471. //返回按钮
  1472. private void checkBtn_Click(object sender, EventArgs e)
  1473. {
  1474. if (IsXiaolingA == true|| IsXiaolingB == true) {
  1475. MessageBox.Show("在查看控件校零时不能返回!");
  1476. return;
  1477. }
  1478. if (_strapMeter1 != null)
  1479. {
  1480. _strapMeter1.Close();
  1481. }
  1482. if (_strapMeter2 != null)
  1483. {
  1484. _strapMeter2.Close();
  1485. }
  1486. //if (this.startMerterBtn.Enabled == false && this.startMerterBtn_1.Enabled == false)
  1487. //{
  1488. // BtnType = 9;//都在计量
  1489. //}
  1490. //if (startMerterBtn.Enabled == false && startMerterBtn_1.Enabled == true)
  1491. //{
  1492. // BtnType = 1;//A开始计量
  1493. //}
  1494. //if (startMerterBtn.Enabled == true && startMerterBtn_1.Enabled == false)
  1495. //{
  1496. // BtnType = 2;//B开始计量
  1497. //}
  1498. //if (this.startMerterBtn.Enabled == true && this.startMerterBtn_1.Enabled == true)
  1499. //{
  1500. // BtnType = 0;//未计量
  1501. //}
  1502. //退出监控
  1503. NETClient.Logout(_LoginID);
  1504. NETClient.Logout(_LoginID1);
  1505. NETClient.Logout(_LoginID2);
  1506. _LoginID = IntPtr.Zero;
  1507. _LoginID1 = IntPtr.Zero;
  1508. _LoginID2 = IntPtr.Zero;
  1509. // _AttachID = IntPtr.Zero;
  1510. _PlayID = IntPtr.Zero;
  1511. this.pictureBox1.Refresh();
  1512. this.pictureBox2.Refresh();
  1513. this.pictureBox3.Refresh();
  1514. this.timer1.Stop();
  1515. this.timer2.Stop();
  1516. timer3.Stop();
  1517. timer4.Stop();
  1518. Close();
  1519. Dispose();
  1520. }
  1521. private void pictureBox1_DoubleClick(object sender, EventArgs e)
  1522. {
  1523. try
  1524. {
  1525. ShowPictureBox sp = new ShowPictureBox(_PlayID,_LoginID);
  1526. sp.Name = "P1";
  1527. SetShowWin(sp);
  1528. }
  1529. catch { }
  1530. }
  1531. private void pictureBox2_DoubleClick(object sender, EventArgs e)
  1532. {
  1533. try
  1534. {
  1535. ShowPictureBox sp = new ShowPictureBox(_PlayID, _LoginID1);
  1536. sp.Name = "P2";
  1537. SetShowWin(sp);
  1538. }
  1539. catch { }
  1540. }
  1541. private void pictureBox3_DoubleClick(object sender, EventArgs e)
  1542. {
  1543. try
  1544. {
  1545. ShowPictureBox sp = new ShowPictureBox(_PlayID, _LoginID2);
  1546. sp.Name = "P3";
  1547. SetShowWin(sp);
  1548. }
  1549. catch { }
  1550. }
  1551. private Form tempForm_ = null;
  1552. private void SetShowWin(Form form1)
  1553. {
  1554. try
  1555. {
  1556. Form temp_ = null;
  1557. if (tempForm_ != null) temp_ = Application.OpenForms[tempForm_.Name];
  1558. if (temp_ == null)
  1559. {
  1560. tempForm_ = null;
  1561. tempForm_ = form1;
  1562. tempForm_.Show();
  1563. }
  1564. else
  1565. {
  1566. temp_.Activate();
  1567. temp_.WindowState = FormWindowState.Normal;
  1568. }
  1569. }
  1570. catch (Exception ex)
  1571. {
  1572. MessageBox.Show(ex.Message);
  1573. }
  1574. }
  1575. //刷新
  1576. private void flashBtn_Click(object sender, EventArgs e)
  1577. {
  1578. loadFrom();
  1579. }
  1580. //A开始计量
  1581. private void startMerterBtn_Click(object sender, EventArgs e)
  1582. {
  1583. string message = checkStartSave("A");
  1584. if (message != "200")
  1585. {
  1586. MessageBox.Show(message);
  1587. return;
  1588. }
  1589. StartMeter("A", 1);
  1590. }
  1591. //B开始计量
  1592. private void button11_Click(object sender, EventArgs e)
  1593. {
  1594. string message = checkStartSave("B");
  1595. if (message != "200")
  1596. {
  1597. MessageBox.Show(message);
  1598. return;
  1599. }
  1600. StartMeter("B", 2);
  1601. }
  1602. //开始计量之前的效验
  1603. private string checkStartSave(string ScaleName)
  1604. {
  1605. if (predictionNoTxt.Text == "")
  1606. {
  1607. return "请选择预报在进行计量!";
  1608. }
  1609. else if (predictionNoTxt.Text.ToString() != beltinfo.predictionNo)
  1610. {
  1611. return "核对预报是否错误!";
  1612. }
  1613. if (mat_nameTxt.Text.ToString().Trim() == "" || shippingTxt.Text.ToString().Trim() == "" || receivingTxt.Text.ToString().Trim() == "")
  1614. {
  1615. return "物料名称、收发货单位不能为空!";
  1616. }
  1617. if (getTedValue("instrument_weight_Ted") != 0 && ScaleName == "A")
  1618. {
  1619. return ScaleName + "仪表不为0时不能开始计量!";
  1620. }
  1621. if (getTedValue("instrument_weight_Ted_1") != 0 && ScaleName == "B")
  1622. {
  1623. return ScaleName + "仪表不为0时不能开始计量!";
  1624. }
  1625. if (MeterWorkBeltActual_NOW != null && MeterWorkBeltActual_NOW.Data != null)
  1626. {
  1627. if (MeterWorkBeltActual_NOW.Data.Count == 1)
  1628. {
  1629. if (MeterWorkBeltActual_NOW.Data[0].scaleName == ScaleName && MeterWorkBeltActual_NOW.Data[0].predictionNo == predictionNoTxt.Text.ToString() && MeterWorkBeltActual_NOW.Data[0].endTime != null)
  1630. {
  1631. return "预报" + predictionNoTxt.Text.ToString() + "----" + ScaleName + "秤已计量!请勿重复计量!";
  1632. }
  1633. }
  1634. }
  1635. bool IsHaveUse = false;
  1636. for (int i = 1; i < ultraGrid1.Rows.Count; i++)
  1637. {
  1638. string value = ultraGrid1.Rows[i].Cells["valueFlag"].Text.ToString();
  1639. if (value.Contains("0") || value.Contains("使用中"))
  1640. {
  1641. IsHaveUse = true;
  1642. }
  1643. }
  1644. if (IsHaveUse)
  1645. {
  1646. return "存在未完成计量的预报,请双击该预报结束计量或者找计量班长作废该预报!";
  1647. }
  1648. return "200";
  1649. }
  1650. //结束计量之前的效验
  1651. private string checkEndSave(string ScaleName)
  1652. {
  1653. //if (getTedValue("instrument_weight_Ted") == 0 && ScaleName == "A")
  1654. //{
  1655. // return ScaleName + "仪表为0时不能结束计量!";
  1656. //}
  1657. //if (getTedValue("instrument_weight_Ted_1") == 0 && ScaleName == "B")
  1658. //{
  1659. // return ScaleName + "仪表为0时不能结束计量!";
  1660. //}
  1661. if (predictionNoTxt.Text == "")
  1662. {
  1663. return "预报为空,不能结束";
  1664. }
  1665. else if (predictionNoTxt.Text.ToString() != beltinfo.predictionNo)
  1666. {
  1667. return "核对预报是否错误!";
  1668. }
  1669. return "200";
  1670. }
  1671. //开始计量
  1672. private void StartMeter(string ScaleName, int controlId)
  1673. {
  1674. MeterWorkBeltActual beltActual = new MeterWorkBeltActual();
  1675. beltActual.predictionNo = predictionNoTxt.Text;//预报编号
  1676. if (ScaleName == "A")
  1677. {
  1678. beltActual.startWeight = getTedValue("instrument_weight_Ted");
  1679. }
  1680. else if (ScaleName == "B")
  1681. {
  1682. beltActual.startWeight = getTedValue("instrument_weight_Ted_1");
  1683. }
  1684. // beltActual.startTime = DateTime.Now.ToString();
  1685. beltActual.baseSpotNo = sPointNo;//计量点编码
  1686. beltActual.baseSpotName = sPointName;//计量点
  1687. beltActual.forwardingUnitNo = beltinfo.forwardingUnitNo;//发货单位编码
  1688. beltActual.newSupplier = shippingTxt.Text;//发货单位
  1689. beltActual.receivingUintNo = beltinfo.receivingUintNo;//收货单位编码
  1690. beltActual.receivingUintName = receivingTxt.Text;//收货单位
  1691. beltActual.productNo = beltinfo.productNo;//物料编码
  1692. beltActual.newMatName = mat_nameTxt.Text;//物料名称
  1693. beltActual.createManNo = sUserId;//用户id
  1694. beltActual.createManName = sUserName;//用户名称
  1695. beltActual.meterClass = userClass;//班级班组
  1696. beltActual.meterGroup = userGroup;
  1697. beltActual.scaleName = ScaleName;//秤体
  1698. beltActual.heatNo = "1";//表示为开始计量的创建
  1699. RESTfulResult<string> rm = MeterWorkBeltActualService.doAddWf(beltActual);
  1700. if (rm.Succeed)
  1701. {
  1702. UpdateControl(controlId);
  1703. loadFrom();
  1704. }
  1705. else
  1706. {
  1707. MessageBox.Show("计量失败,请联系技术中心!");
  1708. l.WriteLog(22, "计量失败" + rm.Message);
  1709. }
  1710. }
  1711. //A结束计量
  1712. private void endMerterBtn_Click(object sender, EventArgs e)
  1713. {
  1714. string message = checkEndSave("A");
  1715. if (message != "200")
  1716. {
  1717. MessageBox.Show(message);
  1718. return;
  1719. }
  1720. EndMerter("A", 3);
  1721. }
  1722. //B结束计量
  1723. private void endMerterBtn_1_Click(object sender, EventArgs e)
  1724. {
  1725. string message = checkEndSave("B");
  1726. if (message != "200")
  1727. {
  1728. MessageBox.Show(message);
  1729. return;
  1730. }
  1731. EndMerter("B", 4);
  1732. }
  1733. //结束计量
  1734. private void EndMerter(string ScaleName, int controlId)
  1735. {
  1736. CommonPage<MeterWorkBeltActual> cp = new CommonPage<MeterWorkBeltActual>();
  1737. cp.param = new MeterWorkBeltActual { valueFlag = "1", baseSpotNo = sPointNo, scaleName = ScaleName, predictionNo = predictionNoTxt.Text.ToString() };
  1738. RESTfulResult<List<MeterWorkBeltActual>> rms = MeterWorkBeltActualService.doQuery(cp.param);
  1739. if (!rms.Succeed)
  1740. {
  1741. MessageBox.Show("查找原有预报失败,请联系技术中心!");
  1742. l.WriteLog(22, "计量失败" + rms.Message);
  1743. return;
  1744. }
  1745. MeterWorkBeltActual beltActual = new MeterWorkBeltActual();
  1746. if (ScaleName == "A")
  1747. {
  1748. beltActual.endWeight = getTedValue("instrument_weight_Ted");
  1749. }
  1750. else if (ScaleName == "B")
  1751. {
  1752. beltActual.endWeight = getTedValue("instrument_weight_Ted_1");
  1753. }
  1754. beltActual.startWeight = rms.Data[0].startWeight;
  1755. beltActual.actualNo = rms.Data[0].actualNo;
  1756. beltActual.predictionNo = predictionNoTxt.Text;//预报编号
  1757. beltActual.updateManNo = sUserId;
  1758. beltActual.updateManName = sUserName;
  1759. RESTfulResult<string> rm = MeterWorkBeltActualService.endMeter(beltActual);
  1760. if (rm.Succeed)
  1761. {
  1762. UpdateControl(controlId);
  1763. if (ScaleName == "A")
  1764. {
  1765. IsSaveA = false;
  1766. _startWeight1 = 0;
  1767. setTedValue("cumulative_weight_Ted", "0");//累计量
  1768. }
  1769. else
  1770. {
  1771. IsSaveB = false;
  1772. _startWeight2 = 0;
  1773. setTedValue("cumulative_weight_Ted_1", "0");//累计量
  1774. }
  1775. loadFrom();
  1776. }
  1777. else
  1778. {
  1779. MessageBox.Show("计量失败,请联系技术中心!");
  1780. _startWeight1 = getTedValue("cumulative_weight_Ted");
  1781. _startWeight2 = getTedValue("cumulative_weight_Ted_1");
  1782. l.WriteLog(22, "计量失败" + rm.Message);
  1783. return;
  1784. }
  1785. }
  1786. #endregion
  1787. }
  1788. }