frmMotoriaMaincs.cs 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Infragistics.Win;
  4. using Infragistics.Win.UltraWinGrid;
  5. using JC_MeasuringSystem;
  6. using MeterPlugInLibrary;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.ComponentModel;
  10. using System.Data;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Reflection;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using System.Windows.Forms;
  17. using CreateAccess;
  18. namespace RailMeterSystem
  19. {
  20. public partial class frmMotoriaMaincs : Form
  21. {
  22. #region
  23. PreRailwayScaleService PreService = new PreRailwayScaleService();//查询预报信息
  24. MeterWorkRailwayActFirstService actFirstService = new MeterWorkRailwayActFirstService(); //
  25. MeterBaseRailwayWeightService baseRailwayWgt = new MeterBaseRailwayWeightService();
  26. MeterWorkRailwayActualService actualService = new MeterWorkRailwayActualService();
  27. #endregion
  28. public frmMotoriaMaincs()
  29. {
  30. InitializeComponent();
  31. }
  32. List<MeterBaseVideoinfo> ltMbV = new List<MeterBaseVideoinfo>();
  33. CoreAppUser appUser = null;
  34. private void frmMotoriaMaincs_Load(object sender, EventArgs e)
  35. {
  36. appUser = ((ST_MainForm)(this.MdiParent)).AppUser;
  37. cbTimeType.SelectedIndex = 1;
  38. ValueList vlist1 = new ValueList();
  39. vlist1.ValueListItems.Add("1", "未使用");
  40. vlist1.ValueListItems.Add("2", "已使用");
  41. ultraGridRecive.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = vlist1;
  42. ValueList vlist2 = new ValueList();
  43. vlist2.ValueListItems.Add("1", "正常结净");
  44. vlist2.ValueListItems.Add("2", "匹配结净");
  45. ultraGridNet.DisplayLayout.Bands[0].Columns["netMode"].ValueList = vlist2;
  46. ValueList vlist3 = new ValueList();
  47. vlist3.ValueListItems.Add("0", "待审核");
  48. vlist3.ValueListItems.Add("1", "已审核");
  49. vlist3.ValueListItems.Add("2", "已上传");
  50. ultraGridNet.DisplayLayout.Bands[0].Columns["uploadFlag"].ValueList = vlist3;
  51. dtStartTime.Value = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00");
  52. dtEndTime.Value = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59");
  53. #region 计量点数据
  54. DataTable dtPw = dtJGPointInfo.Clone();
  55. MeterBaseSpotInfoService service = new MeterBaseSpotInfoService();
  56. RESTfulResult<List<MeterBaseSpotInfo>> rms = service.doQueryWf(new MeterBaseSpotInfo { validFlag = "1", spotTypeNo = "001002002" });
  57. if (rms.Succeed && rms.Data != null && rms.Data.Count > 0)
  58. {
  59. foreach (MeterBaseSpotInfo mbs in rms.Data)
  60. {
  61. if (mbs.baseSpotName.Contains("动"))
  62. {
  63. DataRow dr = dtPw.NewRow();
  64. dr["baseSpotNo"] = mbs.baseSpotNo;
  65. dr["baseSpotName"] = mbs.baseSpotName;
  66. dtPw.Rows.Add(dr);
  67. }
  68. }
  69. ClsControlPack.CopyDataToDatatable(ref dtPw, ref this.dtJGPointInfo, true);
  70. ClsControlPack.RefreshAndAutoSize(ultraGridPW);
  71. #region 获取视频信息
  72. try
  73. {
  74. MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService();
  75. RESTfulResult<List<MeterBaseVideoinfo>> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { });
  76. if (rm.Succeed && rm.Data != null && rm.Data.Count > 0)
  77. {
  78. ltMbV = rm.Data;
  79. }
  80. } catch { }
  81. #endregion
  82. }
  83. else
  84. {
  85. MessageBox.Show("基础数据载入失败,请关闭界面并稍后打开,或联系管理员");
  86. return;
  87. }
  88. #endregion
  89. //ClsControlPack.SetUltraGridRowFilter(ref ultraGridNet, true);
  90. }
  91. #region 按钮事件
  92. private void GridPw()
  93. {
  94. UltraGridRow ugr = ultraGridPW.ActiveRow;
  95. if (ugr != null)
  96. {
  97. foreach (UltraGridRow ur in ultraGridPW.Rows)
  98. {
  99. ur.Appearance.BackColor = Color.White;
  100. }
  101. if (strBaseSpotNo != ugr.Cells["baseSpotName"].Text.Trim())
  102. {
  103. if (strBaseSpotNo != "")
  104. {
  105. //先关闭视频,再打开视频
  106. IPVideoClose();
  107. }
  108. MeterBaseVideoinfo mbv = ltMbV.Where(s => s.pointid == ugr.Cells["baseSpotNo"].Text.Trim()).FirstOrDefault();
  109. GetIPVideo(mbv);
  110. }
  111. strBaseSpotNo = ugr.Cells["baseSpotNo"].Text.Trim();
  112. ugr.Appearance.BackColor = Color.Red;
  113. }
  114. }
  115. private void btnQuery()
  116. {
  117. GridPw();
  118. dtRecevice.Clear();
  119. DataTable dtV = dtRecevice.Clone();
  120. ClsControlPack.CopyDataToDatatable(ref dtV, ref this.dtRecevice, true);
  121. ClsControlPack.RefreshAndAutoSize(ultraGridRecive);
  122. QueryVoice();
  123. QueryNetDb();
  124. QueryFirstDb();
  125. QueryPre();
  126. }
  127. private void btnSubmit()
  128. {
  129. ultraGridRecive.UpdateData();
  130. UltraGridRow ugrPre = ultraGridPre.ActiveRow;
  131. UltraGridRow ugrRec = ultraGridRecive.ActiveRow;
  132. UltraGridRow ugrPw = ultraGridPW.ActiveRow;
  133. UltraGridRow ugrV = ultraGridVoice.ActiveRow;
  134. UltraGridRow ugrFirs = ultraGridFirst.ActiveRow;
  135. PreRailwayScale prs = new PreRailwayScale();
  136. if (ugrPre != null && ugrPre.Appearance.BackColor == Color.Red)
  137. {
  138. DataRow[] drPre = dtRailwayScale.Select("predictionNo='" + ugrPre.Cells["predictionNo"].Text.Trim() + "'");
  139. DataTable dtPre = dtRailwayScale.Clone();
  140. dtPre.Rows.Add(drPre[0].ItemArray);
  141. List<PreRailwayScale> lp = dtPre.TableToDataList<PreRailwayScale>();
  142. prs = lp[0];
  143. prs.noticeNo = ugrV.Cells["actualNo"].Text.Trim();
  144. }
  145. else
  146. {
  147. MessageBox.Show("请选择预报信息");
  148. return;
  149. }
  150. MeterBaseRailwayWeight mbaseWeight = new MeterBaseRailwayWeight();
  151. if (ugrRec == null)
  152. {
  153. MessageBox.Show("请选择期限皮重信息");
  154. return;
  155. }
  156. else
  157. {
  158. DataRow[] drPre = dtRailwayActFirst.Select("railwayPk='" + ugrFirs.Cells["railwayPk"].Text.Trim() + "'");
  159. DataTable dtPre = dtRailwayActFirst.Clone();
  160. dtPre.Rows.Add(drPre[0].ItemArray);
  161. List<MeterBaseRailwayWeight> lp = dtPre.TableToDataList<MeterBaseRailwayWeight>();
  162. lp[0].railwayWeight = lp[0].railwayWeight == null ? 0 : lp[0].railwayWeight.Value * 1000;
  163. mbaseWeight = lp[0];
  164. }
  165. List<MeterWorkRailwayActFirst> lmwrf = new List<MeterWorkRailwayActFirst>();
  166. foreach (UltraGridRow ugr in ultraGridRecive.Rows)
  167. {
  168. if (ugr.Cells["UNCK"].Value.ToString().ToUpper() == "TRUE" && ugr.Cells["valueFlag"].Value.ToString() == "1")
  169. {
  170. MeterWorkRailwayActFirst actFirst = new MeterWorkRailwayActFirst();
  171. EntityBase<PreRailwayScale> entityBase = new EntityBase<PreRailwayScale>();
  172. actFirst = entityBase.format<MeterWorkRailwayActFirst>(prs, actFirst);
  173. actFirst.actualFirstNo = ugr.Cells["actualFirstNo"].Text;
  174. actFirst.baseSpotNo = ugrPw.Cells["baseSpotNo"].Text;
  175. actFirst.baseSpotName = ugrPw.Cells["baseSpotName"].Text;
  176. //actFirst.railwayNo = ugrRec.Cells["railwayNo"].Text;
  177. actFirst.railwaySpeed = Convert.ToDouble(string.IsNullOrEmpty(ugr.Cells["railwaySpeed"].Text) ? "0" : ugr.Cells["railwaySpeed"].Text);
  178. actFirst.meterWeight = Convert.ToDouble(string.IsNullOrEmpty(ugr.Cells["meterWeight"].Text) ? "0" : ugr.Cells["meterWeight"].Text);
  179. actFirst.createTime = Convert.ToDateTime(ugr.Cells["createTime"].Text);
  180. actFirst.railwayCarriageNo = ugr.Cells["railwayCarriageNo"].Text;
  181. actFirst.meterClass = appUser.userClass;
  182. actFirst.meterGroup = appUser.userGroup;
  183. actFirst.createManName = appUser.username;
  184. actFirst.createManNo = appUser.userid;
  185. actFirst.waterNum = (double) txtWaterNum.Value;
  186. lmwrf.Add(actFirst);
  187. }
  188. }
  189. if (lmwrf.Count > 0)
  190. {
  191. if (int.Parse(prs.railwayCarriageNo) < lmwrf.Count)
  192. {
  193. MessageBox.Show("当前勾选的过磅数据条数超过了预报可用次数,请重新选择");
  194. return;
  195. }
  196. FrmMessage frmMessage = FrmMess($"当前选中了【{lmwrf.Count}】条过磅数据\n\r期限皮重为【{mbaseWeight.railwayWeight/1000}】\n\r是否进行匹配!", "匹配");
  197. if (frmMessage.ShowDialog(this) != DialogResult.OK)
  198. {
  199. return;
  200. }
  201. //下面先保存,保存成功则使用下面的清理predictionNo的代码
  202. RESTfulResult<string> rES = actFirstService.doAddMotoriaWf(prs, lmwrf, mbaseWeight);
  203. if (rES.Succeed)
  204. {
  205. QueryPre();
  206. QueryNetDb();
  207. UltraGridRow ugr = ultraGridVoice.ActiveRow;
  208. if (ugr != null)
  209. {
  210. QueryReceived(ugr.Cells["actualNo"].Text.Trim());
  211. }
  212. MessageBox.Show("匹配成功");
  213. }
  214. else
  215. {
  216. MessageBox.Show("匹配失败:" + rES.Message);
  217. }
  218. }
  219. else
  220. {
  221. MessageBox.Show("请勾选未使用的过磅数据");
  222. }
  223. }
  224. private static FrmMessage FrmMess(string strMess, string strBtnSaveInfo)
  225. {
  226. FrmMessage frmMessage = new FrmMessage();
  227. frmMessage.StartPosition = FormStartPosition.Manual;
  228. frmMessage.Location = new Point(350, 450);
  229. frmMessage.ShowMessage = strMess;
  230. frmMessage.BtnSaveText = strBtnSaveInfo;
  231. frmMessage.BtnCancelText = "取消";
  232. return frmMessage;
  233. }
  234. private void btnPlay()
  235. {
  236. UltraGridRow ugr = ultraGridPW.ActiveRow;
  237. if (ugr != null)
  238. {
  239. string sBaseSpotNo= ugr.Cells["baseSpotNo"].Text.Trim();
  240. MeterBaseVideoinfo mbv = ltMbV.Where(s => s.pointid == ugr.Cells["baseSpotNo"].Text.Trim()).FirstOrDefault();
  241. if (mbv != null && mbv.videoip != null && mbv.videoip != "")
  242. {
  243. System.Diagnostics.Process.Start("chrome", string.Format("http://{0}", mbv.videoip));//指定浏览器
  244. MessageBox.Show(string.Format("登录账号:{0}\n\r登录密码:{1}", "admin", "hk123456"));
  245. }
  246. }
  247. //"C:\\Users\\eason\\Desktop\\测试.mp4"; ftp://172.22.42.2/pub/2020-12-28/00001_Voice_1.mp4;
  248. //axWindowsMediaPlayer1.URL = @"\\168.168.45.55\11\测试.mp4";
  249. //axWindowsMediaPlayer1.Ctlcontrols.play();
  250. }
  251. private void btnTare()
  252. {
  253. if (ultraGridRecive.Rows.Count > 0)
  254. {
  255. MeterBaseRailwayWeight mbrw = new MeterBaseRailwayWeight();
  256. int i = 0;
  257. decimal dSum = 0;
  258. mbrw.railwayWeight = 0;
  259. foreach (UltraGridRow ugr in ultraGridRecive.Rows)
  260. {
  261. if (ugr.Cells["UNCK"].Value.ToString().ToUpper() == "TRUE")
  262. {
  263. mbrw.railwayWeight += Convert.ToDecimal(ugr.Cells["meterWeight"].Text.Trim() == "" ? "0" : ugr.Cells["meterWeight"].Text.Trim());
  264. i++;
  265. }
  266. }
  267. if (i > 0)
  268. {
  269. dSum = mbrw.railwayWeight.Value;
  270. mbrw.railwayWeight = Math.Round(mbrw.railwayWeight.Value / i, 2);
  271. frmMotoriaTareSave fc = new frmMotoriaTareSave();
  272. mbrw.createManNo = appUser.userid;
  273. mbrw.createManName = appUser.username;
  274. mbrw.railwayTypeNo = "001019002";
  275. mbrw.railwayTypeName = "动态轨道衡";
  276. mbrw.valueFlag = "0";
  277. mbrw.railwayType = "0";
  278. mbrw.tareType = strBaseSpotNo;
  279. fc.iCnt = i;
  280. fc.dWgt = dSum;
  281. fc.getDt = mbrw;
  282. if (fc.ShowDialog() == DialogResult.OK)
  283. {
  284. QueryFirstDb();
  285. MessageBox.Show("期限皮重保存成功");
  286. }
  287. }
  288. else
  289. {
  290. MessageBox.Show("请勾选需求平均期限皮的数据");
  291. }
  292. }
  293. else
  294. {
  295. MessageBox.Show("请先勾选需求平均的皮重数据");
  296. }
  297. }
  298. string strBaseSpotNo = "";
  299. private void ultraGridVoice_Click(object sender, EventArgs e)
  300. {
  301. UltraGridRow ugr = ultraGridVoice.ActiveRow;
  302. if (ugr != null)
  303. {
  304. QueryReceived(ugr.Cells["actualNo"].Text.Trim());
  305. cbCheckAll.Checked = false;
  306. foreach (UltraGridRow ur in ultraGridVoice.Rows)
  307. {
  308. ur.Appearance.BackColor = Color.White;
  309. }
  310. ugr.Appearance.BackColor = Color.Red;
  311. }
  312. }
  313. private void ultraGridPre_Click(object sender, EventArgs e)
  314. {
  315. UltraGridRow ugr = ultraGridPre.ActiveRow;
  316. if (ugr != null)
  317. {
  318. foreach (UltraGridRow ugrc in ultraGridPre.Rows)
  319. {
  320. ugrc.Appearance.BackColor = Color.White;
  321. }
  322. ugr.Appearance.BackColor = Color.Red;
  323. //
  324. if (ultraGridPW.ActiveRow != null && ultraGridPW.ActiveRow.Cells["baseSpotNo"].Text.Trim() == "00025")
  325. {
  326. foreach (UltraGridRow ugrc in ultraGridFirst.Rows)
  327. {
  328. if (ugr.Cells["matterName"].Text.Trim().CompareTo("石英石") < 0)
  329. {
  330. if (ugrc.Cells["tareTypeNo"].Text.Trim() == "001032003")
  331. {
  332. ultraGridFirst.ActiveRow = ugrc;
  333. break;
  334. }
  335. }
  336. else
  337. {
  338. if (ugrc.Cells["tareTypeNo"].Text.Trim() == "001032002")
  339. {
  340. ultraGridFirst.ActiveRow = ugrc;
  341. break;
  342. }
  343. }
  344. }
  345. }
  346. }
  347. }
  348. #endregion
  349. #region 数据查询
  350. /// <summary>
  351. /// 视频查询
  352. /// </summary>
  353. private void QueryVoice()
  354. {
  355. string sql = string.Format(@"select t.actual_no actualNo,
  356. to_char(t.create_time, 'yyyy-MM-dd HH24:mi:ss') createTime,
  357. t.carriage_num carriageNum,
  358. t.base_spot_no baseSpotNo,
  359. t.base_spot_name baseSpotName,
  360. t.video_name videoName,
  361. t.sound_name soundName,
  362. t.track_way trackWay
  363. from METER_WORK_RAILWAY_REC_MAIN t
  364. where t.create_time between to_date('{0}','yyyy-MM-dd HH24:mi:ss') and to_date('{1}','yyyy-MM-dd HH24:mi:ss')",
  365. dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss"));
  366. if (!string.IsNullOrEmpty(strBaseSpotNo))
  367. {
  368. sql += " and t.base_spot_no='" + strBaseSpotNo + "'";
  369. }
  370. sql += " order by t.actual_no";
  371. DataTable dtV = dtVioce.Clone();
  372. PbModelDbService<List<MeterWorkRailwayMotorialRecMain>> pb = new PbModelDbService<List<MeterWorkRailwayMotorialRecMain>>();
  373. RESTfulResult<List<MeterWorkRailwayMotorialRecMain>> rmType = pb.executeSqlDataWf(sql);
  374. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  375. {
  376. dtV = rmType.Data.ListToDataTable<MeterWorkRailwayMotorialRecMain>();
  377. }
  378. ClsControlPack.CopyDataToDatatable(ref dtV, ref this.dtVioce, true);
  379. ClsControlPack.RefreshAndAutoSize(ultraGridVoice);
  380. }
  381. /// <summary>
  382. /// 采集数据查询
  383. /// </summary>
  384. private void QueryReceived(string actualNo)
  385. {
  386. string sql = string.Format(@"select t.actual_first_no actualFirstNo,
  387. t.railway_no railwayNo,
  388. t.railway_carriage_no railwayCarriageNo,
  389. t.railway_speed railwaySpeed,
  390. nvl(t.meter_weight, 0)/1000 meterWeight,
  391. to_char(t.create_time,'yyyy-mm-dd hh24:mi:ss') createTime,
  392. t.base_spot_no baseSpotNo,
  393. t.base_spot_name baseSpotName,
  394. value_flag valueFlag
  395. from METER_WORK_RAILWAY_RECEIVED t
  396. where value_flag !='0' and actual_first_no like '{0}%' order by t.actual_first_no", actualNo);
  397. DataTable dtV = dtRecevice.Clone();
  398. PbModelDbService<List<MeterWorkRailwayMotorialReceived>> pb = new PbModelDbService<List<MeterWorkRailwayMotorialReceived>>();
  399. RESTfulResult<List<MeterWorkRailwayMotorialReceived>> rmType = pb.executeSqlDataWf(sql);
  400. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  401. {
  402. dtV = rmType.Data.ListToDataTable<MeterWorkRailwayMotorialReceived>();
  403. }
  404. ClsControlPack.CopyDataToDatatable(ref dtV, ref this.dtRecevice, true);
  405. ClsControlPack.RefreshAndAutoSize(ultraGridRecive);
  406. foreach (UltraGridRow ugrc in ultraGridRecive.Rows)
  407. {
  408. if (ugrc.Cells["valueFlag"].Value.ToString() != "1")
  409. {
  410. ugrc.Appearance.BackColor = Color.Yellow;
  411. }
  412. }
  413. }
  414. /// <summary>
  415. /// 预报数据查询
  416. /// </summary>
  417. private void QueryPre()
  418. {
  419. PreRailwayScale prs = new PreRailwayScale();
  420. prs.railwayTypeNo = "001019002";
  421. if (strBaseSpotNo != "")
  422. {
  423. switch (strBaseSpotNo)
  424. {
  425. case "00025":
  426. {
  427. prs.memo = "1"; //选矿计检站动态衡
  428. prs.startTime = dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  429. prs.endTime = dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  430. }; break;
  431. case "00026":
  432. {
  433. prs.memo = "0"; //砂石计检站动态衡
  434. }; break;
  435. default:break;
  436. }
  437. }
  438. //通过车号查询计量预报
  439. RESTfulResult<List<PreRailwayScale>> rmx = PreService.doQueryTenWf(prs);
  440. dtRailwayScale.Clear();
  441. DataTable dt = dtRailwayScale.Clone();
  442. if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0)
  443. {
  444. dt = rmx.Data.ListToDataTable<PreRailwayScale>();
  445. }
  446. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtRailwayScale, true);
  447. ClsControlPack.RefreshAndAutoSize(ultraGridPre);
  448. }
  449. /// <summary>
  450. /// 期限皮重查询
  451. /// </summary>
  452. private void QueryFirstDb()
  453. {
  454. string sql = @"select railway_pk railwayPk,
  455. railway_no railwayNo,
  456. railway_weight/1000 railwayWeight,
  457. railway_type railwayType,
  458. railway_type_no railwayTypeNo,
  459. railway_type_name railwayTypeName,
  460. value_flag valueFlag,
  461. create_man_no createManNo,
  462. create_man_name createManName,
  463. update_man_no updateManNo,
  464. update_man_name updateManName,
  465. to_char(update_time, 'yyyy-mm-dd hh24:mi:ss') updateTime,
  466. to_char(start_time, 'yyyy-mm-dd') startTime,
  467. term_validity termValidity,
  468. tare_type_no tareTypeNo,
  469. tare_type_name tareTypeName,
  470. to_char(create_time, 'yyyy-MM-dd HH24:mi:ss') createTime,
  471. to_char(end_time, 'yyyy-MM-dd') endTime
  472. from Meter_Base_Railway_Weight
  473. where value_flag = '0' and tare_type='" + strBaseSpotNo + "' order by tare_type_no"; //end_time >= to_date(to_char(sysdate, 'yyyy-MM-dd'), 'yyyy-MM-dd') and
  474. dtRailwayActFirst.Clear();
  475. DataTable dtV = dtRailwayActFirst.Clone();
  476. PbModelDbService<List<MeterBaseRailwayWeight>> pb = new PbModelDbService<List<MeterBaseRailwayWeight>>();
  477. RESTfulResult<List<MeterBaseRailwayWeight>> rmType = pb.executeSqlDataWf(sql);
  478. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  479. {
  480. dtV = rmType.Data.ListToDataTable<MeterBaseRailwayWeight>();
  481. }
  482. ClsControlPack.CopyDataToDatatable(ref dtV, ref this.dtRailwayActFirst, true);
  483. ClsControlPack.RefreshAndAutoSize(ultraGridFirst);
  484. }
  485. /// <summary>
  486. /// 结净数据查询
  487. /// </summary>
  488. private void QueryNetDb()
  489. {
  490. string sql = $@"select actual_no actualNo,
  491. prediction_no predictionNo,
  492. notice_no noticeNo,
  493. railway_no railwayNo,
  494. railway_carriage_no railwayCarriageNo,
  495. matter_no matterNo,
  496. matter_name matterName,
  497. contract_no contractNo,
  498. batch_no batchNo,
  499. customer_supplier_no customerSupplierNo,
  500. customer_supplier_name customerSupplierName,
  501. forwarding_unit_no forwardingUnitNo,
  502. forwarding_unit_name forwardingUnitName,
  503. receiving_uint_no receivingUintNo,
  504. receiving_uint_name receivingUintName,
  505. material_no materialNo,
  506. material_name materialName,
  507. spec_no specNo,
  508. spec_name specName,
  509. load_point_no loadPointNo,
  510. load_point_name loadPointName,
  511. sample_voucher sampleVoucher,
  512. carrier_unit_no carrierUnitNo,
  513. carrier_unit_name carrierUnitName,
  514. meter_type_no meterTypeNo,
  515. meter_type_name meterTypeName,
  516. meter_process_no meterProcessNo,
  517. meter_process_edition_no meterProcessEditionNo,
  518. actual_first1_no actualFirst1No,
  519. nvl(gross_weight,0)/1000 grossWeight,
  520. gross_man_no grossManNo,
  521. gross_man_name grossManName,
  522. to_char(gross_time, 'yyyy-mm-dd hh24:mi:ss') grossTime ,
  523. base_spot1_no baseSpot1No,
  524. base_spot1_name baseSpot1Name,
  525. gross_class grossClass,
  526. gross_group grossGroup,
  527. gross_mode grossMode,
  528. actual_first2_no actualFirst2No,
  529. nvl(tare_weight,0)/1000 tareWeight,
  530. tare_man_no tareManNo,
  531. tare_man_name tareManName,
  532. to_char(tare_time, 'yyyy-mm-dd hh24:mi:ss') tareTime ,
  533. base_spot2_no baseSpot2No,
  534. base_spot2_name baseSpot2Name,
  535. tare_class tareClass,
  536. tare_group tareGroup,
  537. tare_mode tareMode,
  538. nvl(net_weight,0)/1000 netWeight,
  539. net_man_no netManNo,
  540. net_man_name netManName,
  541. to_char(net_time, 'yyyy-mm-dd hh24:mi:ss') netTime ,
  542. net_spot3_no netSpot3No,
  543. net_spot3_name netSpot3Name,
  544. net_class netClass,
  545. net_group netGroup,
  546. net_mode netMode,
  547. value_flag valueFlag,
  548. upload_flag uploadFlag,
  549. check_man_no checkManNo,
  550. check_man_name checkManName,
  551. to_char(check_time, 'yyyy-mm-dd hh24:mi:ss') checkTime ,
  552. upload_man_no uploadManNo,
  553. upload_man_name uploadManName,
  554. to_char(upload_time, 'yyyy-mm-dd hh24:mi:ss') uploadTime,
  555. sample_no sampleNo,
  556. railway_type_no railwayTypeNo,
  557. railway_type_name railwayTypeName,
  558. water_num waterNum,
  559. round((nvl(net_weight,0)- nvl(net_weight,0) * nvl(water_num,0)/100)/1000,2) dryWgt
  560. from meter_work_railway_actual
  561. where value_flag = '0' and railway_type_no='001019002' and {(cbTimeType.Text == "毛重时间" ? "gross_time" : "net_time")} between to_date('{dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss")}','yyyy-MM-dd HH24:mi:ss') and to_date('{dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss")}','yyyy-MM-dd HH24:mi:ss')";
  562. if (!string.IsNullOrEmpty(strBaseSpotNo))
  563. {
  564. sql += string.Format(" and NET_SPOT3_NO ='{0}'", strBaseSpotNo);
  565. }
  566. sql += " order by net_time";
  567. dtRailwayActual.Clear();
  568. DataTable dt = dtRailwayActual.Clone();
  569. PbModelDbService<List<MeterWorkRailwayActual>> pb = new PbModelDbService<List<MeterWorkRailwayActual>>();
  570. RESTfulResult<List<MeterWorkRailwayActual>> rmType = pb.executeSqlDataWf(sql);
  571. if (rmType.Succeed && rmType.Data != null && rmType.Data.Count > 0)
  572. {
  573. dt = rmType.Data.ListToDataTable<MeterWorkRailwayActual>();
  574. }
  575. ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtRailwayActual, true);
  576. ClsControlPack.RefreshAndAutoSize(ultraGridNet);
  577. }
  578. #endregion
  579. #region 对讲代码
  580. int iPic = 0;
  581. /// <summary>
  582. /// 硬盘录像机登录
  583. /// </summary>
  584. DhCameraShot cameraShotMain = new DhCameraShot();
  585. /// <summary>
  586. /// 必须先打开连接
  587. /// </summary>
  588. private bool GetIPVideo(MeterBaseVideoinfo video)
  589. {
  590. try
  591. {
  592. cameraShotMain.ip = video.videoip;
  593. cameraShotMain.port = video.vdoPort;
  594. cameraShotMain.uid = video.vdoUser;
  595. cameraShotMain.pwd = video.vdoPwd;
  596. cameraShotMain.Connection();
  597. }
  598. catch (Exception ex)
  599. {
  600. MessageBox.Show("视频连接打开失败:" + ex.Message);
  601. return false;
  602. }
  603. setPicBoxSet();
  604. return true;
  605. }
  606. /// <summary>
  607. /// 关闭视频
  608. /// </summary>
  609. private void IPVideoClose()
  610. {
  611. try
  612. {
  613. cameraShotMain.Close();
  614. }
  615. catch (Exception ex)
  616. {
  617. MessageBox.Show("关闭视频失败:" + ex.Message);
  618. }
  619. }
  620. private void setPicBoxSet()
  621. {
  622. pic1.Name = "pb2";
  623. pic1.DoubleClick += new EventHandler(PictureBoxDoubleClick);
  624. cameraShotMain.RealPlay(pic1, 2);
  625. }
  626. /// <summary>
  627. /// 放大图像
  628. /// </summary>
  629. private void PictureBoxDoubleClick(object sender, EventArgs e)
  630. {
  631. if (iPic != 0)
  632. {
  633. cameraShotMain.StopRealPlay(iPic);
  634. }
  635. PictureBox picture = (PictureBox)sender;
  636. iPic = Convert.ToInt32(picture.Name.Substring(picture.Name.Length - 1, 1));
  637. plImgShow.Visible = true;
  638. cameraShotMain.RealPlay(pictureShow, iPic);
  639. }
  640. /// <summary>
  641. /// 不显示大图
  642. /// </summary>
  643. private void pictureShow_DoubleClick(object sender, EventArgs e)
  644. {
  645. plImgShow.Visible = false;
  646. cameraShotMain.StopRealPlay(iPic);
  647. iPic = 0;
  648. }
  649. #endregion
  650. private void frmMotoriaMaincs_FormClosing(object sender, FormClosingEventArgs e)
  651. {
  652. IPVideoClose();
  653. }
  654. private void cbCheckAll_CheckedChanged(object sender, EventArgs e)
  655. {
  656. if (ultraGridRecive.Rows.Count > 0)
  657. {
  658. foreach (UltraGridRow ugr in ultraGridRecive.Rows)
  659. {
  660. if (ugr.Cells["valueFlag"].Value.ToString() == "1" && cbCheckAll.Checked)
  661. {
  662. ugr.Cells["UNCK"].Value = cbCheckAll.Checked;
  663. }
  664. else
  665. {
  666. ugr.Cells["UNCK"].Value = false;
  667. }
  668. }
  669. }
  670. ultraGridRecive.UpdateData();
  671. }
  672. private void ultraGridFirst_Click(object sender, EventArgs e)
  673. {
  674. UltraGridRow ugr = ultraGridFirst.ActiveRow;
  675. if (ugr != null)
  676. {
  677. foreach (UltraGridRow ugrc in ultraGridFirst.Rows)
  678. {
  679. ugrc.Appearance.BackColor = Color.White;
  680. ugrc.Cells["UNCK"].Value = false;
  681. }
  682. ugr.Appearance.BackColor = Color.Red;
  683. ugr.Cells["UNCK"].Value = true;
  684. }
  685. }
  686. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  687. {
  688. ultraGridNet.UpdateData();
  689. ultraGridRecive.UpdateData();
  690. switch (e.Tool.Key)
  691. {
  692. case "btnQuery":
  693. {
  694. cbCheckAll.Checked = false;
  695. cbNetAll.Checked = false;
  696. btnQuery();
  697. break;
  698. }
  699. case "btnSubmit":
  700. {
  701. btnSubmit();
  702. break;
  703. }
  704. case "btnTare":
  705. {
  706. btnTare();
  707. break;
  708. }
  709. case "btnPlay":
  710. {
  711. btnPlay();
  712. break;
  713. }
  714. case "btnWaterSave":
  715. {
  716. btnWaterSave();
  717. break;
  718. }
  719. default: break;
  720. }
  721. }
  722. private void btnWaterSave()
  723. {
  724. List<MeterWorkRailwayActual> lmwrf = new List<MeterWorkRailwayActual>();
  725. if(ultraGridNet.Rows!=null && ultraGridNet.Rows.Count > 0)
  726. {
  727. foreach (UltraGridRow ugr in ultraGridNet.Rows)
  728. {
  729. if (ugr.Cells["UNCK"].Value.ToString().ToUpper() == "TRUE"&& !ugr.HiddenResolved)
  730. {
  731. MeterWorkRailwayActual act = new MeterWorkRailwayActual();
  732. act.actualNo = ugr.Cells["actualNo"].Text.Trim();
  733. act.actualFirst1No = ugr.Cells["actualFirst1No"].Text.Trim();
  734. act.waterNum = (double)txtWaterNum.Value;
  735. act.uploadManName = appUser.username;
  736. act.uploadManNo = appUser.userid;
  737. lmwrf.Add(act);
  738. if (ugr.Cells["uploadFlag"].Value.ToString() != "0")
  739. {
  740. MessageBox.Show("已审核过的数据不允许进行水份匹配操作!");
  741. break;
  742. }
  743. }
  744. }
  745. }
  746. if (lmwrf.Count > 0)
  747. {
  748. FrmMessage frmMessage = FrmMess($"当前选中了【{lmwrf.Count}】条过磅数据\n\r水分为【{lmwrf[0].waterNum.Value}】\n\r是否进行匹配!", "匹配");
  749. if (frmMessage.ShowDialog(this) != DialogResult.OK)
  750. {
  751. return;
  752. }
  753. //下面先保存,保存成功则使用下面的清理predictionNo的代码
  754. RESTfulResult<string> rES = actFirstService.doEditMotoriaWf(lmwrf);
  755. if (rES.Succeed)
  756. {
  757. QueryNetDb();
  758. MessageBox.Show("匹配成功");
  759. }
  760. else
  761. {
  762. MessageBox.Show("匹配失败:" + rES.Message);
  763. }
  764. }
  765. else
  766. {
  767. MessageBox.Show("请勾选需增加水分的结净数据");
  768. }
  769. }
  770. private void cbNetAll_CheckedChanged(object sender, EventArgs e)
  771. {
  772. if (ultraGridNet.Rows.Count > 0)
  773. {
  774. foreach (UltraGridRow ugr in ultraGridNet.Rows)
  775. {
  776. ugr.Cells["UNCK"].Value = cbNetAll.Checked;
  777. }
  778. }
  779. ultraGridNet.UpdateData();
  780. }
  781. }
  782. }