frmMainBF.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Infragistics.Win;
  4. using Infragistics.Win.UltraWinGrid;
  5. using JC_MeasuringSystem;
  6. using MeterConditionLibrary;
  7. using MeterPlugInLibrary;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.ComponentModel;
  11. using System.Data;
  12. using System.Drawing;
  13. using System.Linq;
  14. using System.Net;
  15. using System.Reflection;
  16. using System.Text;
  17. using System.Threading.Tasks;
  18. using System.Windows.Forms;
  19. namespace StorageMeterSystem
  20. {
  21. public partial class frmMainBF : Form
  22. {
  23. #region
  24. List<StorageCollectModel> ltScModel = new List<StorageCollectModel>();
  25. private BaseDbCls bd = new BaseDbCls();
  26. Log l = Log.GetInstance();
  27. CoreAppUser appUser = null;
  28. int iPic = 0;
  29. PbModelDbService<string> pdb = new PbModelDbService<string>();
  30. MeterMonitorNoteService noteService = new MeterMonitorNoteService();
  31. MeterWorkStockOnlineService onlineService = new MeterWorkStockOnlineService();
  32. MeterWorkStorageOnlineService stOnlineService = new MeterWorkStorageOnlineService();
  33. StorageDataDbCollection collection = new StorageDataDbCollection();
  34. MeterWorkStorageActualService actualService = new MeterWorkStorageActualService();
  35. MeterWorkCalibrationMainService calibrationMainService = new MeterWorkCalibrationMainService();
  36. //图片控制器含图片压缩及上传sftp
  37. //ImageControl imageControl = new ImageControl();
  38. string _controlIp = "";
  39. #endregion
  40. public frmMainBF()
  41. {
  42. InitializeComponent();
  43. }
  44. #region 事件处理
  45. private void frmMain_Load(object sender, EventArgs e)
  46. {
  47. ucStorageWeightKg2.Visible = false;
  48. ValueList vlistFlag1 = new ValueList();
  49. vlistFlag1.ValueListItems.Add("1", "校秤失败");
  50. vlistFlag1.ValueListItems.Add("2", "校秤成功");
  51. vlistFlag1.ValueListItems.Add("3", "正在校秤");
  52. this.ultraGridJl.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = vlistFlag1;
  53. ValueList vlistFlag2 = new ValueList();
  54. vlistFlag2.ValueListItems.Add("1", "成功");
  55. vlistFlag2.ValueListItems.Add("2", "失败");
  56. this.ultraGridJl.DisplayLayout.Bands[1].Columns["valueFlag"].ValueList = vlistFlag2;
  57. _controlIp = GetIP();
  58. appUser = ((ST_MainForm)(this.MdiParent)).AppUser;
  59. if (!bd.getBaseDb() || !bd.setBaseDb())
  60. {
  61. MessageBox.Show("基础数据载入失败,请稍后重试,或联系管理员");
  62. return;
  63. }
  64. DataTable dt = dtJGPointInfo.Clone();
  65. foreach (MeterBaseSpotInfo mbsi in PbStorageCache.sportInfos)
  66. {
  67. int icnt = PbStorageCache.ltMonitor.Where(s => s.baseSpotNo == mbsi.baseSpotNo).Count();
  68. if (icnt > 0)
  69. {
  70. DataRow dr = dt.NewRow();
  71. dr["baseSpotNo"] = mbsi.baseSpotNo;
  72. dr["baseSpotName"] = mbsi.baseSpotName;
  73. dr["validFlag"] = "";//未接管
  74. dt.Rows.Add(dr);
  75. }
  76. }
  77. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true);
  78. ClsControlPack.RefreshAndAutoSize(ultraGridPW);
  79. #region
  80. string sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001025' and valid_Flag='1'";
  81. PbModelDbService<List<ComBaseInfo>> pb = new PbModelDbService<List<ComBaseInfo>>();
  82. RESTfulResult<List<ComBaseInfo>> rmType = pb.executeSqlDataWf(sql);
  83. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  84. {
  85. ValueList vlistMat = new ValueList();
  86. foreach (ComBaseInfo cbi in rmType.Data)
  87. {
  88. vlistMat.ValueListItems.Add(cbi.baseCode, cbi.baseName);
  89. }
  90. cmbMatterNo.ValueList = vlistMat;
  91. }
  92. else
  93. {
  94. MessageBox.Show("产品信息载入失败");
  95. return;
  96. }
  97. sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001026' and valid_Flag='1'";
  98. rmType = pb.executeSqlDataWf(sql);
  99. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  100. {
  101. ValueList vlistGrade = new ValueList();
  102. foreach (ComBaseInfo cbi in rmType.Data)
  103. {
  104. vlistGrade.ValueListItems.Add(cbi.baseCode, cbi.baseName);
  105. }
  106. cmbGrade.ValueList = vlistGrade;
  107. }
  108. else
  109. {
  110. MessageBox.Show("牌号载入失败");
  111. return;
  112. }
  113. sql = @"SELECT base_code baseCode,base_name baseName,memo FROM Com_Base_Info where p_base_code='001027' and valid_Flag='1'";
  114. rmType = pb.executeSqlDataWf(sql);
  115. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  116. {
  117. ValueList vlistStandard = new ValueList();
  118. foreach (ComBaseInfo cbi in rmType.Data)
  119. {
  120. vlistStandard.ValueListItems.Add(cbi.baseCode, cbi.baseName);
  121. }
  122. cmbStandard.ValueList = vlistStandard;
  123. }
  124. else
  125. {
  126. MessageBox.Show("标准载入失败");
  127. return;
  128. }
  129. #endregion
  130. //imageControl.Start();
  131. collection.EventDataCollectionArgs += new StorageEventDbCollection(EventData);
  132. collection.Start();
  133. timer1.Start();
  134. }
  135. public void EventData(object o, List<StorageCollectModel> lt)
  136. {
  137. //这里每隔0.5秒执行一次
  138. try
  139. {
  140. PbStorageCache.ltCollect = lt;
  141. foreach (StorageCollectModel sm in PbStorageCache.ltCollect)
  142. {
  143. setGridColorInfo(ultraGridPW, sm);
  144. if (PbStorageCache.sportInfo == null)
  145. {
  146. ucStorageWeightKg1.setWgt(0);
  147. ucStorageWeightKg1.setStable(true);
  148. ucStorageWeightKg2.setWgt(0);
  149. ucStorageWeightKg2.setStable(true);
  150. }
  151. if (PbStorageCache.sportInfo != null && PbStorageCache.sportInfo.baseSpotNo == sm.pointid)
  152. {
  153. ucStorageWeightKg1.setWgt(sm.mainWgt);
  154. ucStorageWeightKg1.setStable(sm.mainWeightStatus != 1 ? true : false);
  155. ucStorageWeightKg2.setWgt(sm.viceWgt);
  156. ucStorageWeightKg2.setStable(sm.mainWeightStatus != 1 ? true : false);
  157. }
  158. }
  159. }
  160. catch (Exception ex)
  161. {
  162. l.WriteLog(0, "frmMeterMain.EventData异常6:" + ex.Message);
  163. }
  164. }
  165. private void btnOpenVoice_Click(object sender, EventArgs e)
  166. {
  167. if (panel1.Controls.Count > 0)
  168. {
  169. if (btnOpenVoice.Text == "打开对讲")
  170. {
  171. VoiceOpen();
  172. }
  173. else
  174. {
  175. VoiceClose();
  176. }
  177. }
  178. }
  179. /// <summary>
  180. /// 换纸
  181. /// </summary>
  182. private void btnPage_Click(object sender, EventArgs e)
  183. {
  184. if (PbStorageCache.sportInfo != null)
  185. {
  186. string sql = string.Format("update meter_base_spot_info set COUNT_NUM = '{0}' where base_spot_no='{1}'", txtPageNum.Value, PbStorageCache.sportInfo.baseSpotNo);
  187. RESTfulResult<string> rm = pdb.executeSqlDataWf(sql);
  188. if (rm.Succeed)
  189. {
  190. WriteMonitorNote("修改计量点信息纸张总数:" + txtPageNum.Value);
  191. }
  192. }
  193. else
  194. {
  195. txtMsgInfo.Text = "当前未接管任何计量点,无法换纸";
  196. }
  197. }
  198. private void WriteMonitorNote(string content)
  199. {
  200. RESTfulResult<string> rm = noteService.doAddWf(new MeterMonitorNote
  201. {
  202. baseSpotNo = PbStorageCache.sportInfo.baseSpotNo,
  203. baseSpotName = PbStorageCache.sportInfo.baseSpotName,
  204. operationContent = content,//str + chk.Text,
  205. meterManNo = appUser.userid,
  206. meterManName = appUser.username,
  207. meterNoteSource = "6"
  208. });
  209. if (!rm.Succeed)
  210. {
  211. l.WriteLog(5, "静态衡写入操作日志异常:" + content);
  212. }
  213. }
  214. /// <summary>
  215. /// 放大图像
  216. /// </summary>
  217. private void PictureBoxDoubleClick(object sender, EventArgs e)
  218. {
  219. if (iPic != 0)
  220. {
  221. cameraShotMain.StopRealPlay(iPic);
  222. }
  223. PictureBox picture = (PictureBox)sender;
  224. iPic = Convert.ToInt32(picture.Name.Substring(picture.Name.Length - 1, 1));
  225. plImgShow.Visible = true;
  226. cameraShotMain.RealPlay(pictureShow, iPic);
  227. }
  228. /// <summary>
  229. /// 不显示大图
  230. /// </summary>
  231. private void pictureShow_DoubleClick(object sender, EventArgs e)
  232. {
  233. plImgShow.Visible = false;
  234. cameraShotMain.StopRealPlay(iPic);
  235. iPic = 0;
  236. }
  237. private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
  238. {
  239. try
  240. {
  241. Clean();
  242. }
  243. catch { }
  244. //imageControl.Stop();
  245. timer1.Stop();
  246. try
  247. {
  248. collection.Stop();
  249. } catch { }
  250. }
  251. validCalibration vCalib = new validCalibration();
  252. private void btnSave_Click(object sender, EventArgs e)
  253. {
  254. if (PbStorageCache.sportInfo == null) return;
  255. string msgInfo = "";
  256. bool isCalibration = vCalib.ValidMethod(new MeterWorkCalibrationMain { baseSpotNo = PbStorageCache.sportInfo.baseSpotNo, valueFlag = "2" }, out msgInfo);
  257. if (!isCalibration)
  258. {
  259. txtMsgInfo.Text = msgInfo;
  260. return;
  261. }
  262. #region
  263. if (cmbMatterNo.Value == null)
  264. {
  265. MessageBox.Show("请选择产品名称");
  266. return;
  267. }
  268. if (cmbGrade.Value == null)
  269. {
  270. MessageBox.Show("请选择牌号");
  271. return;
  272. }
  273. if (cmbStandard.Value == null)
  274. {
  275. MessageBox.Show("请选择标准");
  276. return;
  277. }
  278. #endregion
  279. DialogResult dr = MessageBox.Show("是否确认保存当前计量数据?", "提示", MessageBoxButtons.OKCancel);
  280. if (dr == DialogResult.OK)
  281. {
  282. btnSave.Enabled = false;
  283. try
  284. {
  285. string actNo = "";
  286. bool flag = SaveDB(out actNo);
  287. if (flag)
  288. {
  289. #region 截取图片信息
  290. try
  291. {
  292. //* 截取屏幕信息
  293. Point screenPoint = this.PointToScreen(new Point());
  294. Rectangle rect = new Rectangle(screenPoint, this.Size);
  295. Image img = new Bitmap(rect.Width, rect.Height);
  296. Graphics g = Graphics.FromImage(img);
  297. g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg"
  298. img.Save(string.Format("{0}imgShort\\tempImg\\{1}_{2}_{3}.jpg",
  299. AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
  300. PbStorageCache.sportInfo.baseSpotNo,
  301. "S" + actNo,
  302. (PbStorageCache.videoChild.Count + 1)), System.Drawing.Imaging.ImageFormat.Jpeg);
  303. //* 最后进行截图操作
  304. CameraShotCls cameraShot = new CameraShotCls();
  305. cameraShot.CapMethod(actNo);
  306. //*/
  307. }
  308. catch
  309. {
  310. l.WriteLog(5, "截图失败");
  311. }
  312. #endregion
  313. try
  314. {
  315. QueryInfo();
  316. }
  317. catch { }
  318. CleanForm();
  319. }
  320. btnSave.Enabled = true;
  321. }
  322. catch (Exception ex)
  323. {
  324. btnSave.Enabled = true;
  325. txtMsgInfo.Text = "保存失败:" + ex.Message.Trim();
  326. l.WriteLog(5, "保存失败:" + ex.Message.Trim());
  327. }
  328. }
  329. else
  330. {
  331. btnSave.Enabled = true;
  332. }
  333. }
  334. int iCnt = 0;
  335. private void timer1_Tick(object sender, EventArgs e)
  336. {
  337. iCnt++;
  338. if (iCnt % 2 == 0)
  339. {
  340. //每秒验证实时监控是否接管
  341. RESTfulResult<List<MeterWorkStockOnline>> rms = onlineService.doQueryWf(new MeterWorkStockOnline { validFlag = "1" });
  342. if (rms.Succeed && rms.Data != null && rms.Data.Count > 0)
  343. {
  344. //, userId = appUser.userid
  345. if (PbStorageCache.ltCollect == null || PbStorageCache.ltCollect.Count == 0)
  346. {
  347. Clean();
  348. return;
  349. }
  350. foreach (UltraGridRow ugPW in ultraGridPW.Rows)
  351. {
  352. MeterWorkStockOnline mwso = rms.Data.Where(s => s.baseSpotNo == ugPW.Cells["baseSpotNo"].Text.Trim()).FirstOrDefault();
  353. if (mwso != null && !string.IsNullOrEmpty(mwso.userId))
  354. {
  355. ugPW.Cells["validFlag"].Value = "已接管";
  356. if (mwso.userId == appUser.userid)
  357. {
  358. PbStorageCache.collect = PbStorageCache.ltCollect.Where(s => s.pointid == mwso.baseSpotNo).FirstOrDefault();
  359. PbStorageCache.sportInfo = PbStorageCache.sportInfos.Where(s => s.baseSpotNo == mwso.baseSpotNo).FirstOrDefault();
  360. if (btnStart.Text == "自动派位")
  361. {
  362. btnStart.Text = "取消接管";
  363. bd.getSpot();
  364. GetIPVideo(PbStorageCache.videoInfo);
  365. setPicBoxSet();
  366. QueryXC();
  367. }
  368. }
  369. }
  370. else
  371. {
  372. ugPW.Cells["validFlag"].Value = "未接管";
  373. }
  374. }
  375. //ClsControlPack.RefreshAndAutoSize(ultraGridPW);
  376. }
  377. }
  378. if (iCnt % 4 == 0)
  379. {
  380. if (!bGQ)
  381. {
  382. RESTfulResult<string> rm = stOnlineService.doSaveWf(new MeterWorkStorageOnline { userId = appUser.userid }); //实时在线写入,每隔2秒一次在线状态
  383. iCnt = 0;
  384. }
  385. }
  386. }
  387. private void btnCheckBalance_Click(object sender, EventArgs e)
  388. {
  389. if (PbStorageCache.collect != null)
  390. {
  391. frmCalibration fc = new frmCalibration();
  392. fc.userId = appUser.userid;
  393. fc.userName = appUser.username;
  394. if (fc.ShowDialog() == DialogResult.OK)
  395. {
  396. txtMsgInfo.Text = "校秤完成";
  397. QueryXC();
  398. }
  399. }
  400. }
  401. private void btnStart_Click(object sender, EventArgs e)
  402. {
  403. if (btnStart.Text == "自动派位")
  404. {
  405. if (PbStorageCache.sportInfo != null)
  406. {
  407. btnStart.BackColor = Color.Red;
  408. btnStart.Text = "取消接管";
  409. }
  410. }
  411. else
  412. {
  413. if (PbStorageCache.sportInfo != null)
  414. {
  415. Clean();
  416. }
  417. btnStart.BackColor = Color.DodgerBlue;
  418. btnStart.Text = "自动派位";
  419. }
  420. }
  421. bool bGQ = false;
  422. private void btnGQ_Click(object sender, EventArgs e)
  423. {
  424. if (btnGQ.Text == "挂起")
  425. {
  426. btnGQ.Text = "取消挂起";
  427. btnGQ.BackColor = Color.Red;
  428. bGQ = true;
  429. btnStart.Enabled = false;
  430. btnStart.BackColor = Color.DodgerBlue;
  431. btnStart.Text = "自动派位";
  432. if (PbStorageCache.sportInfo != null)
  433. {
  434. Clean();
  435. }
  436. try
  437. {
  438. //让用户处于掉线状态
  439. string sql = @"update Meter_Work_Storage_Online set last_time=sysdate-1 where user_id='" + appUser.userid + "'";
  440. PbModelDbService<string> pb = new PbModelDbService<string>();
  441. RESTfulResult<string> rm = pb.executeSqlDataWf(sql);
  442. }
  443. catch { }
  444. }
  445. else
  446. {
  447. btnGQ.Text = "挂起"; //改为非挂起状态
  448. btnGQ.BackColor = Color.DodgerBlue;
  449. bGQ = false;
  450. btnStart.Enabled = true;
  451. }
  452. }
  453. private bool SaveDB(out string actNo)
  454. {
  455. actNo = "";
  456. MeterWorkStorageActual mwraf = new MeterWorkStorageActual();
  457. mwraf.batchNo = txtBATCH_NO.Text.Trim();
  458. mwraf.memo = txtMEMO.Text.Trim();
  459. mwraf.valueFlag = "1";
  460. mwraf.createManNo = appUser.userid;
  461. mwraf.createManName = appUser.username;
  462. mwraf.createTime = DateTime.Now;
  463. mwraf.productNo = cmbMatterNo.Value.ToString();
  464. mwraf.productName = cmbMatterNo.Text.Trim();
  465. mwraf.gradeNo = cmbGrade.Value.ToString();
  466. mwraf.gradeName = cmbGrade.Text.Trim();
  467. mwraf.standardNo = cmbStandard.Value.ToString();
  468. mwraf.standardName = cmbStandard.Text.Trim();
  469. mwraf.packageNo = txtPACKAGE_NO.Text.Trim();
  470. mwraf.blockNum =txtBLOCK_NUM.Value+"";
  471. mwraf.productDate = txtPRODUCT_DATE.Value;
  472. mwraf.sealNo = txtSEAL_NO.Text;
  473. mwraf.bucketNo = txtBUCKET_NO.Text;
  474. mwraf.grossWeight = PbStorageCache.collect.mainWgt;
  475. mwraf.tareWeight = Convert.ToInt32(txtTARE_WEIGHT.Value);
  476. mwraf.combinPackageNo = txtCOMBIN_NO.Text.Trim();
  477. //mwraf.weightType = "0";
  478. mwraf.baseSpotNo = PbStorageCache.sportInfo.baseSpotNo;
  479. mwraf.baseSpotNo = PbStorageCache.sportInfo.baseSpotName;
  480. RESTfulResult<string> rm = actualService.doAddWf(mwraf);
  481. if (rm.Succeed)
  482. {
  483. actNo = rm.Data;
  484. setMsgInfo(txtMsgInfo, "保存成功", "");
  485. return true;
  486. }
  487. else
  488. {
  489. setMsgInfo(txtMsgInfo, "保存失败:" + rm.Message, "");
  490. l.WriteLog(5, "保存失败:" + rm.Message);
  491. return false;
  492. }
  493. }
  494. private void QueryInfo()
  495. {
  496. if (PbStorageCache.sportInfo != null)
  497. {
  498. DataTable dtSj = dataTable1.Clone();
  499. RESTfulResult<List<MeterWorkStorageActual>> rms = actualService.doQueryWf(new MeterWorkStorageActual { valueFlag = "1", baseSpotNo = PbStorageCache.sportInfo.baseSpotNo });
  500. if (rms.Succeed && rms.Data != null && rms.Data.Count > 0)
  501. {
  502. dtSj = rms.Data.ListToDataTable<MeterWorkStorageActual>();
  503. }
  504. ClsControlPack.CopyDataToDatatable(ref dtSj, ref dataTable1, true);
  505. ClsControlPack.RefreshAndAutoSize(ultraGridSj);
  506. }
  507. }
  508. /// <summary>
  509. /// 校秤数据查下
  510. /// </summary>
  511. private void QueryXC()
  512. {
  513. if (PbStorageCache.sportInfo != null)
  514. {
  515. DataTable dtJlM = dtCalibration.Clone();
  516. DataTable dtJlC = dtBranch.Clone();
  517. //dtCalibration dtBranch
  518. CommonPage<MeterWorkCalibrationMain> cpc = new CommonPage<MeterWorkCalibrationMain>();
  519. MeterWorkCalibrationMain mwca = new MeterWorkCalibrationMain();
  520. mwca.baseSpotNo = PbStorageCache.collect.pointid;
  521. cpc.param = mwca;
  522. cpc.pageNum = 1;
  523. cpc.pageSize = 10;
  524. RESTfulResult<PbGetSomeModel<MeterWorkCalibrationMain, MeterWorkCalibrationBranch>> rms = calibrationMainService.doQuerySomeWf(cpc);
  525. if (rms.Succeed && rms.Data != null)
  526. {
  527. dtJlM = rms.Data.one.ListToDataTable<MeterWorkCalibrationMain>();
  528. dtJlC = rms.Data.two.ListToDataTable<MeterWorkCalibrationBranch>();
  529. }
  530. dtBranch.Clear();
  531. dtCalibration.Clear();
  532. ClsControlPack.CopyDataToDatatable(ref dtJlM, ref dtCalibration, true);
  533. ClsControlPack.CopyDataToDatatable(ref dtJlC, ref dtBranch, true);
  534. ClsControlPack.RefreshAndAutoSize(ultraGridJl);
  535. }
  536. }
  537. #endregion
  538. #region 数据初始清理
  539. private void Clean()
  540. {
  541. //*
  542. PbStorageCache.videoInfo = null;
  543. //PbStorageCache.dtStartTime = null;
  544. PbStorageCache.sportInfo = null;
  545. PbStorageCache.collect = null;
  546. //退出语音登录
  547. try
  548. {
  549. VoiceClose();
  550. IPVideoClose();
  551. }
  552. catch (Exception ex) { }
  553. try
  554. {
  555. MeterWorkStockOnline mwmUpdate = new MeterWorkStockOnline
  556. {
  557. pointNo = PbStorageCache.sportInfo.baseSpotNo,
  558. userId = "",
  559. userIp = ""
  560. };
  561. RESTfulResult<string> rm = onlineService.doSaveWf(mwmUpdate);
  562. } catch { }
  563. setPanelRemovenfo(panel1);
  564. CleanForm();
  565. //*/
  566. }
  567. private void CleanForm()
  568. {
  569. cmbMatterNo.Text = "";
  570. cmbMatterNo.SelectedIndex = -1;
  571. txtGroess.Text = "";
  572. txtPageNum.Value = 0;
  573. cmbGrade.Text = "";
  574. cmbGrade.SelectedIndex = -1;
  575. cmbStandard.Text = "";
  576. cmbStandard.SelectedIndex = -1;
  577. txtBLOCK_NUM.Value = 0;
  578. txtBATCH_NO.Text = "";
  579. txtPRODUCT_DATE.Value = DateTime.Now;
  580. txtPACKAGE_NO.Text = "";
  581. txtSEAL_NO.Text = "";
  582. txtBUCKET_NO.Text = "";
  583. txtCOMBIN_NO.Text = "";
  584. txtMEMO.Text = "";
  585. txtTARE_WEIGHT.Value = 0;
  586. DataTable dtSj = dataTable1.Clone();
  587. ClsControlPack.CopyDataToDatatable(ref dtSj, ref dataTable1, true);
  588. ClsControlPack.RefreshAndAutoSize(ultraGridSj);
  589. dtBranch.Clear();
  590. dtCalibration.Clear();
  591. DataTable dtJl = dtCalibration.Clone();
  592. DataTable dtJlC = dtBranch.Clone();
  593. ClsControlPack.CopyDataToDatatable(ref dtJl, ref dtCalibration, true);
  594. ClsControlPack.CopyDataToDatatable(ref dtJlC, ref dtBranch, true);
  595. ClsControlPack.RefreshAndAutoSize(ultraGridJl);
  596. ucStorageWeightKg1.setWgt(0);
  597. ucStorageWeightKg1.setStable(true);
  598. ucStorageWeightKg2.setWgt(0);
  599. ucStorageWeightKg2.setStable(true);
  600. }
  601. #endregion
  602. #region 对讲代码
  603. /// <summary>
  604. /// 硬盘录像机登录
  605. /// </summary>
  606. DhCameraShot cameraShotMain = new DhCameraShot();
  607. /// <summary>
  608. /// 必须先打开连接
  609. /// </summary>
  610. private bool GetIPVideo(MeterBaseVideoinfo video)
  611. {
  612. try
  613. {
  614. cameraShotMain.ip = video.videoip;
  615. cameraShotMain.port = video.vdoPort;
  616. cameraShotMain.uid = video.vdoUser;
  617. cameraShotMain.pwd = video.vdoPwd;
  618. cameraShotMain.Connection();
  619. }
  620. catch (Exception ex)
  621. {
  622. setMsgInfo(txtMsgInfo, "视频连接打开失败:" + ex.Message, "");
  623. return false;
  624. }
  625. return true;
  626. }
  627. /// <summary>
  628. /// 必须先打开视频,然后再打开语音
  629. /// </summary>
  630. private void VoiceOpen()
  631. {
  632. try
  633. {
  634. if (cameraShotMain.StartTalk())
  635. {
  636. btnOpenVoice.Text = "关闭对讲";
  637. }
  638. }
  639. catch (Exception ex)
  640. {
  641. setMsgInfo(txtMsgInfo, "打开语音失败:" + ex.Message, "");
  642. }
  643. }
  644. /// <summary>
  645. /// 关闭语音对讲
  646. /// </summary>
  647. private void VoiceClose()
  648. {
  649. try
  650. {
  651. if (cameraShotMain.StopTalk())
  652. {
  653. setMsgInfo(btnOpenVoice, "打开对讲", "");
  654. }
  655. }
  656. catch (Exception ex)
  657. {
  658. setMsgInfo(txtMsgInfo, "打开对讲失败:" + ex.Message, "");
  659. }
  660. }
  661. /// <summary>
  662. /// 关闭视频
  663. /// </summary>
  664. private void IPVideoClose()
  665. {
  666. try
  667. {
  668. cameraShotMain.Close();
  669. }
  670. catch (Exception ex)
  671. {
  672. setMsgInfo(txtMsgInfo, "关闭对讲失败:" + ex.Message, "");
  673. }
  674. }
  675. List<PictureBox> ltPicBoxs = new List<PictureBox>();
  676. private void setPicBoxSet()
  677. {
  678. if (PbStorageCache.videoChild != null && PbStorageCache.videoChild.Count > 0)
  679. {
  680. if (PbStorageCache.sportInfo != null)
  681. {
  682. for (int k = 1; k <= 2; k++)
  683. {
  684. PictureBox pb = new PictureBox();
  685. pb.Name = "pb" + k;
  686. pb.Dock = DockStyle.Top;
  687. pb.Height = 260;
  688. pb.DoubleClick += new EventHandler(PictureBoxDoubleClick);
  689. pb.BorderStyle = BorderStyle.FixedSingle;
  690. panel1.Controls.Add(pb);
  691. ltPicBoxs.Add(pb);
  692. cameraShotMain.RealPlay(pb, k);
  693. }
  694. }
  695. }
  696. }
  697. public void setPanelRemovenfo(Panel control)
  698. {
  699. setPanelRemoveMsg(control);
  700. }
  701. /// <summary>
  702. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  703. /// </summary>
  704. /// <param name="control"></param>
  705. /// <param name="ResultMessage"></param>
  706. /// <param name="sType"></param>
  707. private void setPanelRemoveMsg(Panel p)
  708. {
  709. if (p.InvokeRequired)
  710. {
  711. Action<Panel> action = new Action<Panel>(setPanelRemovenfo);
  712. Invoke(action, new object[] { p });
  713. }
  714. else
  715. {
  716. for (int i = p.Controls.Count - 1; i >= 0; i--)
  717. {
  718. p.Controls.RemoveAt(i);
  719. }
  720. }
  721. }
  722. #endregion
  723. #region 控件值设置
  724. //如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable
  725. public void setMsgInfo(Control control, string ResultMessage, string sType)
  726. {
  727. setMsgMsg(control, ResultMessage, sType);
  728. }
  729. /// <summary>
  730. /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable 3为check
  731. /// </summary>
  732. /// <param name="control"></param>
  733. /// <param name="ResultMessage"></param>
  734. /// <param name="sType"></param>
  735. private void setMsgMsg(Control control, string ResultMessage, string sType)
  736. {
  737. if (control.InvokeRequired)
  738. {
  739. Action<Control, string, string> action = new Action<Control, string, string>(setMsgInfo);
  740. Invoke(action, new object[] { control, ResultMessage, sType });
  741. }
  742. else
  743. {
  744. if (ResultMessage == "true" || ResultMessage == "false")
  745. {
  746. switch (sType)
  747. {
  748. case "1":
  749. control.Enabled = ResultMessage == "true" ? true : false;
  750. ; break;
  751. case "2":
  752. control.Visible = ResultMessage == "true" ? true : false;
  753. ; break;
  754. case "3":
  755. ((CheckBox)control).Checked = ResultMessage == "true" ? true : false;
  756. break;
  757. default: break;
  758. }
  759. }
  760. else if (ResultMessage == "color")
  761. {
  762. switch (sType)
  763. {
  764. case "Red":
  765. control.BackColor = Color.Red;
  766. ; break;
  767. case "Lime":
  768. control.BackColor = Color.Lime;
  769. ; break;
  770. default: break;
  771. }
  772. }
  773. else
  774. {
  775. control.Text = ResultMessage == null ? "" : ResultMessage;
  776. }
  777. }
  778. }
  779. delegate object GetControlPropertyCallBack(Control control, string name);
  780. public object GetControlProperty(Control control, string name)
  781. {
  782. if (control.InvokeRequired == true)
  783. {
  784. GetControlPropertyCallBack CallBack = new GetControlPropertyCallBack(GetControlProperty);
  785. return control.Invoke(CallBack, new object[] { control, name });
  786. }
  787. else
  788. {
  789. Type type = control.GetType();
  790. return type.InvokeMember(name,
  791. BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance,
  792. null, control, null);
  793. }
  794. }
  795. public void setGridColorInfo(UltraGrid ugr, StorageCollectModel sModel)
  796. {
  797. setGridColorMsg(ugr, sModel);
  798. }
  799. private void setGridColorMsg(UltraGrid control, StorageCollectModel sModel)
  800. {
  801. if (control.InvokeRequired)
  802. {
  803. Action<UltraGrid, StorageCollectModel> action = new Action<UltraGrid, StorageCollectModel>(setGridColorInfo);
  804. Invoke(action, new object[] { control, sModel });
  805. }
  806. else
  807. {
  808. foreach (UltraGridRow urg in control.Rows)
  809. {
  810. if (PbStorageCache.collect != null && urg.Cells["baseSpotNo"].Text == PbStorageCache.collect.pointid)
  811. {
  812. urg.Appearance.BackColor = Color.Red;
  813. break;
  814. }
  815. else if (sModel.pointid == urg.Cells["baseSpotNo"].Text)
  816. {
  817. if (sModel.mainWgt > 20)
  818. {
  819. urg.Appearance.BackColor = Color.Orange;
  820. }
  821. else
  822. {
  823. urg.Appearance.BackColor = Color.White;
  824. }
  825. break;
  826. }
  827. }
  828. }
  829. }
  830. #endregion
  831. public string GetIP()
  832. {
  833. try
  834. {
  835. IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
  836. IPAddress ipAddr = ipHost.AddressList[0];
  837. return ipAddr.ToString();
  838. }
  839. catch (Exception exp)
  840. {
  841. Random rd = new Random();
  842. return rd.Next(99999, 999999) + "";
  843. }
  844. }
  845. }
  846. }