using com.hnshituo.core.webapp.vo; using Common; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using JC_MeasuringSystem; using MeterPlugInLibrary; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Reflection; using System.Windows.Forms; namespace RailMeterSystem { public partial class frmStaticMain : Form { #region //实时表数据采集 第一个是静态1,第二个是静态2 private StaticDataCollectionControl collection1 = new StaticDataCollectionControl(); private StaticDataCollectionControl collection2 = new StaticDataCollectionControl(); //图片控制器含图片压缩及上传sftp //ImageControl imageControl = new ImageControl(); /// /// 基础数据载入 /// private BaseDbCls bd = new BaseDbCls(); private Log l = Log.GetInstance(); private string userId = "", userName = ""; private int iPic = 0; private bool isEditCarNo = false; //是否编辑车号 private string oldEditCarNo = "";//上一次编辑的车号 private CoreAppUser appUser = null; private StaticCollectModel scModel1 = new StaticCollectModel(); //静态1 private StaticCollectModel scModel2 = new StaticCollectModel(); //静态2 #endregion #region 查询服务 private int searchLimit = 3; //用于卡控查询,定时任务每1s加一次,若小于2则不会查询数据; //计量预报 private PreRailwayScale preTack = null; //一次计量重量 private MeterWorkRailwayActFirst first = null; private PreRailwayScaleService PreService = new PreRailwayScaleService();//查询预报信息 private MeterWorkRailwayActualService mwas = new MeterWorkRailwayActualService();//计量结净数据 private MeterWorkRailwayActFirstService railwayActFirstService = new MeterWorkRailwayActFirstService();//一次计量数据 private MeterBaseMatterInfoService matterService = new MeterBaseMatterInfoService();//查询计量基础信息 #endregion #region 下拉框相关事件 //===============下拉框相关变量=============== private ListBox show; //智能拼音输入时弹出的表框 private DataTable dtMaterial; private int showLocation = 0; //===============下拉框相关变量============= #endregion //===============自重计量相关变量=========== private bool isUsedFactoryWeight = false; //是否使用自重 private double tareWeight = 0;//皮重 //===============自重计量相关变量=========== public frmStaticMain() { InitializeComponent(); } #region 数据初始清理 private void Clean() { try { setMsgInfo(lbPointName, "", ""); updateSport(""); PbStaticRailwayCache.videoInfo = null; PbStaticRailwayCache.dtStartTime = null; PbStaticRailwayCache.sportInfo = null; PbStaticRailwayCache.collect = null; first = null; //退出语音登录 try { VoiceClose(); IPVideoClose(); } catch (Exception ex) { } setPanelRemovenfo(panel1); CleanForm(); //Clean方法 } catch (Exception ex) { MessageBox.Show("Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } private void CleanForm() { try { isUsedFactoryWeight = false; //是否使用自重 btnZZWgt.BackColor = Color.DodgerBlue; //点击保存后,复磅按钮重新变原色 tareWeight = 0; //自重置为0 strCarNo = ""; PbStaticRailwayCache.dtStartTime = null; ucStaticTrackMeterInfo1.setPreTrackInfo(new PreRailwayScale { }); //DataTable dtYb = dtRailwayScale.Clone(); //setGridInfo(ultraGrid1, dtYb, this.dtRailwayScale); //DataTable dtSj = this.dtRailwayActFirst; //setGridInfo(ultraGrid2, dtSj, this.dtRailwayActFirst); //DataTable dtQxp = this.dtRailwayActual.Clone(); //setGridInfo(ultraGrid3, dtQxp, this.dtRailwayActual); ucStorageWeightT1.setWgt(0); ucStorageWeightT1.setStable(true); ucStorageWeightT2.setWgt(0); ucStorageWeightT2.setStable(true); setMsgInfo(pl1, "Color", "Lime"); setMsgInfo(pl2, "Color", "Lime"); setMsgInfo(pl3, "Color", "Lime"); //setMsgInfo(cmbCarType, "单秤", ""); //2021年4月26日 称重完成后,不在恢复成单秤的状态 setMsgInfo(txtGroess, "", ""); setMsgInfo(txtTare, "0", ""); setMsgInfo(txtNet, "", ""); //setMsgInfo(txtCarNo, "", ""); //2021年4月28日 不再清空车号,因为又会将车号再写上来,也需要进行复磅保存 } catch (Exception ex) { //MessageBox.Show("CleanForm方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "CleanForm方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } #endregion #region 对讲代码 /// /// 硬盘录像机登录 /// private DhCameraShot cameraShotMain = new DhCameraShot(); /// /// 必须先打开连接 /// private bool GetIPVideo(MeterBaseVideoinfo video) { try { cameraShotMain.ip = video.videoip; cameraShotMain.port = video.vdoPort; cameraShotMain.uid = video.vdoUser; cameraShotMain.pwd = video.vdoPwd; cameraShotMain.Connection(); } catch (Exception ex) { setMsgInfo(txtMsgInfo, "视频连接打开失败:" + ex.Message, ""); return false; } return true; } /// /// 必须先打开视频,然后再打开语音 /// private void VoiceOpen() { try { if (cameraShotMain.StartTalk()) { btnOpenVoice.Text = "关闭对讲"; } } catch (Exception ex) { setMsgInfo(txtMsgInfo, "打开语音失败:" + ex.Message, ""); } } /// /// 关闭语音对讲 /// private void VoiceClose() { try { if (cameraShotMain.StopTalk()) { setMsgInfo(btnOpenVoice, "打开对讲", ""); } } catch (Exception ex) { setMsgInfo(txtMsgInfo, "打开对讲失败:" + ex.Message, ""); } } /// /// 关闭视频 /// private void IPVideoClose() { try { cameraShotMain.Close(); } catch (Exception ex) { setMsgInfo(txtMsgInfo, "关闭对讲失败:" + ex.Message, ""); } } private List ltPicBoxs = new List(); /// /// 加载图相框 /// private void setPicBoxSet() { try { if (PbStaticRailwayCache.videoChild != null && PbStaticRailwayCache.videoChild.Count > 0) { if (PbStaticRailwayCache.sportInfo != null) { if (PbStaticRailwayCache.sportInfo.baseSpotNo == "00010") { for (int k = 1; k <= 2; k++) { PictureBox pb = new PictureBox(); pb.Name = "pb" + k; pb.Dock = DockStyle.Top; pb.Height = 260; pb.DoubleClick += new EventHandler(PictureBoxDoubleClick); pb.BorderStyle = BorderStyle.FixedSingle; panel1.Controls.Add(pb); ltPicBoxs.Add(pb); cameraShotMain.RealPlay(pb, k); } } else { for (int k = 3; k <= 4; k++) { PictureBox pb = new PictureBox(); pb.Name = "pb" + k; pb.Dock = DockStyle.Top; pb.Height = 260; pb.DoubleClick += new EventHandler(PictureBoxDoubleClick); pb.BorderStyle = BorderStyle.FixedSingle; panel1.Controls.Add(pb); ltPicBoxs.Add(pb); cameraShotMain.RealPlay(pb, k); } } #region 室内摄像头 PictureBox pb5 = new PictureBox(); pb5.Name = "pb5"; pb5.Dock = DockStyle.Top; pb5.Height = 260; pb5.DoubleClick += new EventHandler(PictureBoxDoubleClick); pb5.BorderStyle = BorderStyle.FixedSingle; panel1.Controls.Add(pb5); ltPicBoxs.Add(pb5); cameraShotMain.RealPlay(pb5, 5); #endregion } } } catch (Exception ex) { MessageBox.Show("setPicBoxSet载入录像异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "setPicBoxSet载入录像异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } public void setPanelRemovenfo(Panel control) { setPanelRemoveMsg(control); } /// /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable /// /// /// /// private void setPanelRemoveMsg(Panel p) { try { if (p.InvokeRequired) { Action action = new Action(setPanelRemovenfo); Invoke(action, new object[] { p }); } else { for (int i = p.Controls.Count - 1; i >= 0; i--) { p.Controls.RemoveAt(i); } } } catch (Exception ex) { //MessageBox.Show("setPanelRemove移除界面控件异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "setPanelRemove移除界面控件异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } #endregion #region 控件值设置 //如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable public void setMsgInfo(Control control, string ResultMessage, string sType) { setMsgMsg(control, ResultMessage, sType); } /// /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable 3为check /// /// /// /// private void setMsgMsg(Control control, string ResultMessage, string sType) { try { if (control.InvokeRequired) { Action action = new Action(setMsgInfo); Invoke(action, new object[] { control, ResultMessage, sType }); } else { if (ResultMessage == "true" || ResultMessage == "false") { switch (sType) { case "1": control.Enabled = ResultMessage == "true" ? true : false; ; break; case "2": control.Visible = ResultMessage == "true" ? true : false; ; break; case "3": ((CheckBox)control).Checked = ResultMessage == "true" ? true : false; break; default: break; } } else if (ResultMessage == "color") { switch (sType) { case "Red": control.BackColor = Color.Red; ; break; case "Lime": control.BackColor = Color.Lime; ; break; case "GreenYellow": control.BackColor = Color.GreenYellow; ; break; default: break; } } else { control.Text = ResultMessage == null ? "" : ResultMessage; } } } catch (Exception ex) { //MessageBox.Show("setMsgMsg设置控件值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "setMsgMsg设置控件值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } private delegate object GetControlPropertyCallBack(Control control, string name); /// /// 设置控件的值 /// /// /// /// public object GetControlProperty(Control control, string name) { try { if (control.InvokeRequired == true) { GetControlPropertyCallBack CallBack = new GetControlPropertyCallBack(GetControlProperty); return control.Invoke(CallBack, new object[] { control, name }); } else { Type type = control.GetType(); return type.InvokeMember(name, BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance, null, control, null); } } catch (Exception ex) { //MessageBox.Show("GetControlProperty设置控件的值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "setMsgMsg设置控件值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); return null; } } /// /// 设置颜色提醒 /// /// /// 1橘色提醒,2白色 3红色 private void setGridColor(UltraGrid control, string pointNo, string sType) { if (control != null && control.Rows != null && control.Rows.Count > 0 && !string.IsNullOrEmpty(pointNo) && !string.IsNullOrEmpty(sType)) { setGridColorMsg(control, pointNo, sType); } } private void setGridColorMsg(UltraGrid control, string pointNo, string sType) { try { if (ultraGridPW.InvokeRequired) { Action action = new Action(setGridColor); Invoke(action, new object[] { control, pointNo, sType }); } else { if (control != null && control.Rows != null && control.Rows.Count > 0) { foreach (UltraGridRow ugr in control.Rows) { if (ugr.Cells["baseSpotNo"].Text == pointNo) { switch (sType) { case "1": if (string.IsNullOrEmpty(ugr.Cells["controlIp"].Text)) { ugr.Appearance.BackColor = Color.Orange; }; break; case "2": ugr.Appearance.BackColor = Color.White; break; case "3": ugr.Appearance.BackColor = Color.Red; break; } break; } } } } } catch (Exception ex) { //MessageBox.Show("setGridColorMsg设置颜色异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "setGridColorMsg设置颜色异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } public void setGridInfo(UltraGrid control, DataTable dt1, DataTable dt2) { setGridMsg(control, dt1, dt2); } /// /// 如果ResultMessage为true或者false,则sType 为0的时候readonly 1为enable 2为visable /// /// /// /// private void setGridMsg(UltraGrid p, DataTable dt1, DataTable dt2) { try { if (p.InvokeRequired) { Action action = new Action(setGridInfo); Invoke(action, new object[] { p, dt1, dt2 }); } else { ClsControlPack.CopyDataToDatatable(ref dt1, ref dt2, true); ClsControlPack.RefreshAndAutoSize(p); } } catch (Exception ex) { MessageBox.Show("setGridMsg设置界面的值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "setGridMsg设置界面的值异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } #endregion #region 事件处理 private string _controlIp = ""; private void frmStaticMain_Load(object sender, EventArgs e) { try { //初始化时间控件的值 dateTimeStart.Value = DateTime.Now.Date; dateTimeEnd.Value = DateTime.Now.Date.AddDays(1).AddSeconds(-1); _controlIp = GetIP(); if (!_controlIp.Contains("192") && !_controlIp.Contains("168")) //只有在测试环境,【测试】按钮才有效 { button1.Visible = false; button1.Enabled = false; } userId = ((ST_MainForm)(this.MdiParent)).UserID; userName = ((ST_MainForm)(this.MdiParent)).UserName; appUser = ((ST_MainForm)(this.MdiParent)).AppUser; collection1.EventDataCollectionArgs += new StaticEventDataCollection(EventData);//数据采集1 collection2.EventDataCollectionArgs += new StaticEventDataCollection(EventData2);//数据采集2txtTare //状态(0:未配车;1:未使用;2:已使用;3:已作废;4:正使用) //ultraGrid1.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = GetValueListByString("0:未配车,1:未使用,2:已使用,3:已作废,4:正使用"); //ultraGridScaleHis.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = GetValueListByString("0:未配车,1:未使用,2:已使用,3:已作废,4:正使用"); if (!bd.setBaseDb()) { MessageBox.Show("基础数据载入失败,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n"); l.WriteLog(13, "基础数据载入失败,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n"); return; } else { timer1.Start(); timerSearchLimit.Start(); List lt = PbStaticRailwayCache.sportInfos.Where(s => s.baseSpotName.Contains("静态")).ToList(); dtJGPointInfo.Clear(); //2021年4月22日 杨秀东新加 DataTable dt = dtJGPointInfo.Clone(); foreach (MeterBaseSpotInfo mbsi in lt) { DataRow dr = dt.NewRow(); dr["baseSpotNo"] = mbsi.baseSpotNo; dr["baseSpotName"] = mbsi.baseSpotName; dr["validFlag"] = string.IsNullOrEmpty(mbsi.controlIp) ? "未接管" : "已接管"; dt.Rows.Add(dr); } ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true); ClsControlPack.RefreshAndAutoSize(ultraGridPW); lbPointName.Text = ""; lbMeterMan.Text = userName; //imageControl.Start(); collection2.Start("CAR11"); //白家嘴计检站静态衡一 collection1.Start("CAR12"); //白家嘴计检站静态衡二 这个有2个秤点 } //=====================下拉界面相关事件======================== //下拉框测试 loadMaterialInfo(); //智能输入弹出框设置 show = new ListBox(); this.Controls.Add(show); show.Size = new Size(500, 480); //设置show的宽度和长度 show.Visible = false; show.ScrollAlwaysVisible = true; show.BringToFront(); show.Font = new Font("宋体", 14.25f, FontStyle.Bold); show.DoubleClick += new EventHandler(show_DoubleClick); show.KeyPress += new KeyPressEventHandler(show_KeyPress); show.Leave += new EventHandler(show_Leave); //=====================下拉界面相关事件======================== } catch (Exception ex) { MessageBox.Show("frmStaticMain_Load方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "frmStaticMain_Load方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } /// /// 打开关闭语音对讲 /// /// /// private void btnOpenVoice_Click(object sender, EventArgs e) { try { if (panel1.Controls.Count > 0) { if (btnOpenVoice.Text == "打开对讲") { VoiceOpen(); } else { VoiceClose(); } } } catch (Exception ex) { MessageBox.Show("btnOpenVoice_Click打开对讲异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "btnOpenVoice_Click打开对讲异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } /// /// 使用自重 /// /// /// private void btnZZWgt_Click(object sender, EventArgs e) { try { if (preTack == null || string.IsNullOrEmpty(ucStaticTrackMeterInfo1.predictionNo)) { MessageBox.Show("[预报单号]为空不允许进行保存操作,请选择预报信息后再点击[使用自重]按钮!"); return; } if (first != null) { MessageBox.Show("存在有效的一次计量数据,请先回皮再使用自重进行计量!"); return; } btnZZWgt.BackColor = Color.Gray; //点击使用自重以后,就变为灰色; isUsedFactoryWeight = true; } catch (Exception ex) { MessageBox.Show("btnZZWgt_Click使用自重方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "btnZZWgt_Click使用自重方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } /// /// 复磅操作; /// 1、客户端复磅时提醒要复磅的重量是多少; /// 2、服务端在服务端更新最近的一条重量记录,将原来的记录写在memo中;若存在二次计量记录则进行更新,并将原来的记录写在memo中; /// /// /// private void btnRecover_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(txtCarNo.Text.Trim()) || !(txtCarNo.Text.Trim().Length == 7)) { MessageBox.Show("车号[" + txtCarNo.Text.Trim() + "]" + "为空或车号长度不等于7,不能进行 [ 复磅 ] 操作!"); return; } RESTfulResult> RESTfulResultRecent = railwayActFirstService.doQuerySelectSta(new MeterWorkRailwayActFirst() { pageNum = 1, pageSize = 10, railwayNo = txtCarNo.Text.Trim() }); if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { string lastWeight = RESTfulResultRecent.Data[0].meterWeight.ToString(); string actualFirstNo = RESTfulResultRecent.Data[0].actualFirstNo.ToString(); ; if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.collect != null && PbStaticRailwayCache.collect.mainWgt > 1000) { switch (PbStaticRailwayCache.sportInfo.baseSpotNo) { case "00011": if (cmbCarType.Text.Trim() == "双秤") { PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt + PbStaticRailwayCache.collect.viceWgt; } else { PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt; } ; break; case "00010": PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt; ; break; } } string msg = "上一次的计量重量为 [ " + Convert.ToDouble(lastWeight) / 1000 + " ]T 复磅后重量为[ " + PbStaticRailwayCache.lockWgt / 1000 + " ]T,是否继续保存!"; DialogResult dr = MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { try { bool flag = SaveRecover(actualFirstNo); if (flag) { MessageBox.Show("[" + strCarNo + "]复磅成功!"); QueryCarNo(); //计量完成后查询一次数据 querySacle();//计量预报查询;查询所有有效的预报 queryFirst(); //查询100条一次计量记录 queryActual(); //查询100条二次计量记录 queryFirst2(); //查询100条一次计量记录 queryActual2(); //查询100条二次计量记录 CleanForm(); //保存成功,清空文本框 } else { MessageBox.Show("[" + strCarNo + "]复磅失败!"); } } catch (Exception ex) { btnSave.Enabled = true; MessageBox.Show("[" + strCarNo + "]复磅失败!"); txtMsgInfo.Text = strCarNo + "复磅失败:" + ex.Message.Trim(); l.WriteLog(5, strCarNo + "复磅失败:" + ex.Message.Trim()); } } } isEditCarNo = false; } catch (Exception ex) { MessageBox.Show("btnRecover_Click复磅方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "btnRecover_Click复磅方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } /// /// 保存按钮 /// /// /// private void btnSave_Click(object sender, EventArgs e) { try { if (btnSave.BackColor.Equals(Color.Gray)) { MessageBox.Show("[" + strCarNo + "]" + "已经保存成功,不能重复点击 [ 保存 ] 按钮!"); return; } //预报为空不允许进行保存操作 if (preTack == null || string.IsNullOrEmpty(ucStaticTrackMeterInfo1.predictionNo)) { MessageBox.Show("[预报单号]为空不允许进行保存操作,请选择预报信息后再点击[保存]按钮!"); return; } //2021年5月31日 添加校验 if (isUsedFactoryWeight && string.IsNullOrEmpty(txtTare.Text)) { MessageBox.Show("使用自重计量时,皮重不允许为空,请输入皮重后,再点击[保存]按钮!"); return; } //2021年6月14日 添加硫酸使用自重的提示 if (!String.IsNullOrEmpty(ucStaticTrackMeterInfo1.matterName) && "硫酸".Equals(ucStaticTrackMeterInfo1.matterName) && (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5)) { string msg = "计量【硫酸】时,没有【皮重】或者【自重】信息或皮重信息未完整录入,是否继续保存!"; DialogResult dr = MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.Cancel) return; } if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.collect != null && PbStaticRailwayCache.collect.mainWgt > 1000) { switch (PbStaticRailwayCache.sportInfo.baseSpotNo) { case "00011": if (cmbCarType.Text.Trim() == "双秤") { PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt + PbStaticRailwayCache.collect.viceWgt; } else { PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt; } ; break; case "00010": PbStaticRailwayCache.lockWgt = PbStaticRailwayCache.collect.mainWgt; ; break; } tareWeight = Convert.ToDouble(txtTare.Value) * 1000; //自重的皮重 PbStaticRailwayCache.lockCarNo = txtCarNo.Text.Trim(); //界面车号 DialogResult dr = MessageBox.Show("是否确认保存当前计量数据?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { try { string actNo = ""; bool flag = SaveDB(out actNo); if (flag) { #region 截取图片信息 try { //* 截取屏幕信息 Point screenPoint = this.PointToScreen(new Point()); Rectangle rect = new Rectangle(screenPoint, this.Size); Image img = new Bitmap(rect.Width, rect.Height); Graphics g = Graphics.FromImage(img); g.CopyFromScreen(rect.X - 1, rect.Y - 1, 0, 0, rect.Size);//"D://file/1.jpg" img.Save(string.Format("{0}imgShort\\formalImg\\{1}_{2}_{3}.jpg", AppDomain.CurrentDomain.SetupInformation.ApplicationBase, PbStaticRailwayCache.sportInfo.baseSpotNo, "R" + actNo, (PbStaticRailwayCache.videoChild.Count + 1)), System.Drawing.Imaging.ImageFormat.Jpeg); //* 最后进行截图操作 CameraShotCls cameraShot = new CameraShotCls(); //cameraShot.CapMethod(actNo); cameraShot.CapMethodFromVideo(actNo); //*/ } catch { l.WriteLog(5, PbStaticRailwayCache.lockCarNo + "截图失败"); } #endregion MessageBox.Show("[" + strCarNo + "]保存成功!"); btnSave.BackColor = Color.Gray; //2021年4月10日,保存后,只有车号变更才能够重新点击保存; QueryCarNo(); //计量完成后查询一次数据 querySacle();//计量预报查询;查询所有有效的预报 queryFirst(); //查询100条一次计量记录 queryActual(); //查询100条二次计量记录 queryFirst2(); //查询100条一次计量记录 queryActual2(); //查询100条二次计量记录 CleanForm(); //保存成功,清空文本框 } else { MessageBox.Show("[" + strCarNo + "]保存失败!"); } } catch (Exception ex) { btnSave.Enabled = true; MessageBox.Show("[" + strCarNo + "]保存失败!"); txtMsgInfo.Text = strCarNo + "保存失败:" + ex.Message.Trim(); l.WriteLog(5, strCarNo + "保存失败:" + ex.Message.Trim()); } } } isEditCarNo = false; } catch (Exception ex) { MessageBox.Show("btnSave_Click保存方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "btnSave_Click保存方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } /// /// 存储计量数据 /// /// private bool SaveDB(out string actNo) { actNo = ""; try { MeterWorkRailwayActFirst mwraf = new MeterWorkRailwayActFirst(); EntityBase entityBase = new EntityBase(); preTack = (preTack == null ? new PreRailwayScale() : preTack); mwraf = entityBase.format(preTack, mwraf); mwraf.meterWeight = PbStaticRailwayCache.lockWgt; if (isUsedFactoryWeight) { mwraf.railwayFactoryWeight = tareWeight; } mwraf.createManNo = userId; mwraf.createManName = userName; mwraf.createTime = DateTime.Now; mwraf.meterGroup = appUser.userGroup; mwraf.meterClass = appUser.userClass; mwraf.railwayNo = strCarNo; mwraf.baseSpotNo = PbStaticRailwayCache.sportInfo.baseSpotNo; mwraf.baseSpotName = PbStaticRailwayCache.sportInfo.baseSpotName; RESTfulResult rm = railwayActFirstService.doAddWfStatic(mwraf); if (rm.Succeed) { actNo = rm.Data; isLockWgt = true; setMsgInfo(txtMsgInfo, strCarNo + "保存成功", ""); return true; } else { setMsgInfo(txtMsgInfo, strCarNo + "保存失败:" + rm.Message, ""); l.WriteLog(5, strCarNo + "保存失败:" + rm.Message); return false; } } catch (Exception ex) { MessageBox.Show("Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } return false; } /// /// 复磅保存操作 /// /// /// private bool SaveRecover(string actualFirstNo) { try { MeterWorkRailwayActFirst mwraf = new MeterWorkRailwayActFirst(); mwraf.actualFirstNo = actualFirstNo; mwraf.meterWeight = PbStaticRailwayCache.lockWgt; mwraf.createManNo = userId; mwraf.createManName = userName; mwraf.createTime = DateTime.Now; mwraf.meterGroup = appUser.userGroup; mwraf.meterClass = appUser.userClass; mwraf.railwayNo = strCarNo; mwraf.baseSpotNo = PbStaticRailwayCache.sportInfo.baseSpotNo; mwraf.baseSpotName = PbStaticRailwayCache.sportInfo.baseSpotName; RESTfulResult rm = railwayActFirstService.doAddWfRecover(mwraf); if (rm.Succeed) { isLockWgt = true; setMsgInfo(txtMsgInfo, strCarNo + "复磅成功", ""); return true; } else { setMsgInfo(txtMsgInfo, strCarNo + "复磅失败:" + rm.Message, ""); l.WriteLog(5, strCarNo + "复磅失败:" + rm.Message); return false; } } catch (Exception ex) { MessageBox.Show("Clean方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } return false; } private void btnStart_Click(object sender, EventArgs e) { try { if (btnStart.Text != "释放") { UltraGridRow ugr = ultraGridPW.ActiveRow; if (ugr != null) { if (!string.IsNullOrEmpty(ugr.Cells["controlIp"].Text) && ugr.Cells["controlIp"].Text != _controlIp) { MessageBox.Show("当前计量点已被他人接管"); return; } btnStart.BackColor = Color.Red; btnStart.Text = "释放"; PbStaticRailwayCache.sportInfo = PbStaticRailwayCache.sportInfos.Where(s => s.baseSpotNo == ugr.Cells["baseSpotNo"].Text.Trim()).FirstOrDefault(); //controlIp updateSport(_controlIp); if (PbStaticRailwayCache.sportInfo.baseSpotNo == "00011") { ucStorageWeightT2.Visible = true; pl3.Visible = true; cmbCarType.Enabled = true; } else { ucStorageWeightT2.Visible = false; pl3.Visible = false; setMsgInfo(cmbCarType, "单秤", ""); cmbCarType.Enabled = false; } lbPointName.Text = PbStaticRailwayCache.sportInfo.baseSpotName; bd.getSpot(); GetIPVideo(PbStaticRailwayCache.videoInfo); setPicBoxSet(); } } else { btnStart.BackColor = Color.DodgerBlue; btnStart.Text = "接管"; foreach (UltraGridRow ugrs in ultraGridPW.Rows) { ugrs.Appearance.BackColor = Color.White; } ucStorageWeightT2.Visible = false; pl3.Visible = false; Clean();//释放按钮 } } catch (Exception ex) { MessageBox.Show("btnStart_Click接管按钮异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "btnStart_Click接管按钮异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } private PbModelDbService pdb = new PbModelDbService(); private MeterMonitorNoteService noteService = new MeterMonitorNoteService(); /// /// 修改监控表的状态 /// /// private void updateSport(string controlIp) { try { string sql = string.Format("update meter_base_spot_info set CONTROL_IP = '{0}' where CONTROL_IP='{1}' or base_spot_no='{2}'", controlIp, _controlIp, (PbStaticRailwayCache.sportInfo == null ? "" : PbStaticRailwayCache.sportInfo.baseSpotNo)); RESTfulResult rm = pdb.executeSqlDataWf(sql); if (rm.Succeed) { WriteMonitorNote("修改meter_base_spot_info接管状态为" + (string.IsNullOrEmpty(controlIp) ? "取消接管" : "接管")); } } catch (Exception ex) { MessageBox.Show("updateSport方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "updateSport方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } private void WriteMonitorNote(string content) { try { if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo != null) { RESTfulResult rm = noteService.doAddWf(new MeterMonitorNote { baseSpotNo = PbStaticRailwayCache.sportInfo.baseSpotNo, baseSpotName = PbStaticRailwayCache.sportInfo.baseSpotName, operationContent = content,//str + chk.Text, carNo = txtCarNo.Text.Trim(), meterManNo = appUser.userid, meterManName = appUser.username, meterNoteSource = "5" }); if (!rm.Succeed) { l.WriteLog(5, "静态衡写入操作日志异常:" + content); } } } catch (Exception ex) { MessageBox.Show("WriteMonitorNote方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "WriteMonitorNote方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } /// /// 放大图像 /// private void PictureBoxDoubleClick(object sender, EventArgs e) { if (iPic != 0) { cameraShotMain.StopRealPlay(iPic); } PictureBox picture = (PictureBox)sender; iPic = Convert.ToInt32(picture.Name.Substring(picture.Name.Length - 1, 1)); plImgShow.Visible = true; cameraShotMain.RealPlay(pictureShow, iPic); } /// /// 不显示大图 /// private void pictureShow_DoubleClick(object sender, EventArgs e) { plImgShow.Visible = false; cameraShotMain.StopRealPlay(iPic); iPic = 0; } private void frmStaticMain_FormClosing(object sender, FormClosingEventArgs e) { try { Clean(); //关闭按钮 } catch { } timer1.Stop(); timerSearchLimit.Stop(); //imageControl.Stop(); try { collection1.Stop(); } catch { } try { collection2.Stop(); } catch { } } #endregion #region 数据采集部分 private bool iWgtChange1 = true; //重量初次大于500 private bool bTest = false; private string strCarNo = ""; private bool isLockWgt = false;//是否锁定重量 /// /// 数据采集;双称 /// private void EventData(object o, StaticCollectModel e) { //这里每隔0.5秒执行一次 try { #region #if DEBUG //* if (bTest) { e.carno = "";//功能测试 e.mainWgt = 10000;//rd.Next(40000, 50000); e.viceWgt = 0; e.firstRed = "0"; e.secondRed = "0"; e.thirdRed = "1"; e.carType = "车型1"; } //*/ #endif if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011") { //此处需要调整,车号要能够进行编辑 if (!string.IsNullOrEmpty(e.carno) && e.carno != strCarNo && PbStaticRailwayCache.collect != null) { if (e.mainWgt > 1000 && !isEditCarNo) { strCarNo = e.carno; if (!string.IsNullOrEmpty(strCarNo)) { //QueryCarNo(); //采集时,车号有变化,查询一次数据;2021年4月23日注释;车号change的事件中会查询一次数据 } } if (string.IsNullOrEmpty(cmbCarType.Text.Trim())) { setMsgInfo(cmbCarType, "单秤", ""); foreach (ComBaseInfo cbi in PbStaticRailwayCache.ltCarType) { if (cbi.baseName == e.carType && cbi.baseName.Contains("双")) { setMsgInfo(cmbCarType, "双秤", ""); } } } } } scModel1.mainWgt = e.mainWgt; scModel1.viceWgt = e.viceWgt; scModel1.weightStatus = e.weightStatus; scModel1.datetime = e.datetime; scModel1.carType = e.carType;//车型 scModel1.firstRed = e.firstRed;//红外1 scModel1.secondRed = e.secondRed;//红外2 scModel1.thirdRed = e.thirdRed;//红外3 if (!isEditCarNo) //为false的时候车号才会重新赋值 { scModel1.carno = e.carno; } if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011") { PbStaticRailwayCache.collect = scModel1; setMsgInfo(pl1, "Color", e.firstRed != "0" ? "Red" : "Lime"); setMsgInfo(pl2, "Color", e.firstRed != "0" ? "Red" : "Lime"); setMsgInfo(pl3, "Color", e.firstRed != "0" ? "Red" : "Lime"); } //重量大于500的情况下 if (e.mainWgt > 1000) { l.WriteLog(1, string.Format("双秤:车号:{0},主重:{1},副重{2},车型{3}", e.carno, e.mainWgt, e.viceWgt, e.carType)); if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011") { //if (!PbStaticRailwayCache.isLockFrm) { if (!isEditCarNo) //为false的时候车号才会重新赋值 { setMsgInfo(txtCarNo, scModel1.carno, ""); } ucStorageWeightT1.setWgt(scModel1.mainWgt); ucStorageWeightT1.setStable(scModel1.weightStatus != 1 ? true : false); ucStorageWeightT2.setWgt(scModel1.viceWgt); ucStorageWeightT2.setStable(scModel1.weightStatus != 1 ? true : false); } if (iWgtChange1) { setMsgInfo(btnSave, "true", "1"); } if (PbStaticRailwayCache.dtStartTime == null) PbStaticRailwayCache.dtStartTime = DateTime.Now; iWgtChange1 = false; int metWgt = 0; string strTxt = GetControlProperty(cmbCarType, "Text").ToString().Trim(); if (strTxt == "双秤") { metWgt = scModel1.viceWgt + scModel1.mainWgt; } else { metWgt = scModel1.mainWgt; } if (!isLockWgt) //若已经称重保存成功则不再界面重量不再变化 { if (first != null) { //一毛一皮正常结净 if (metWgt > first.meterWeight) { if (isUsedFactoryWeight) { setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5) { setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); return; } setMsgInfo(txtNet, Math.Round(Math.Round(Convert.ToDouble(metWgt) / 1000, 2) - Convert.ToDouble(txtTare.Value), 2) + "", ""); } else { //界面重量大于一次计量重量;则当前为皮重 setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); setMsgInfo(txtTare, Math.Round(Convert.ToDouble(first.meterWeight) / 1000, 2) + "", ""); setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000 - Convert.ToDouble(first.meterWeight) / 1000, 2) + "", ""); } } else { //界面重量小于一次计量重量;则当前为毛重; //setMsgInfo(txtGroess, first.meterWeight + "", ""); //setMsgInfo(txtTare, metWgt + "", ""); //setMsgInfo(txtNet, (first.meterWeight - metWgt) + "", ""); //2021年4月19日 将毛重的取值从【meterWeight】变更为【meterBalanceWeight】 setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000, 2) + "", ""); setMsgInfo(txtTare, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); setMsgInfo(txtNet, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000 - Convert.ToDouble(metWgt) / 1000, 2) + "", ""); } } else { if (isUsedFactoryWeight) { //使用自重进行结净,自重为自己输入的 setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5) { setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); return; //2021年5月31日 使用自重计量时,若界面为空则不处理 } //setMsgInfo(txtTare, Convert.ToDouble(txtTare.Value) + "", ""); setMsgInfo(txtNet, Math.Round(Convert.ToDouble((metWgt / 1000) - txtTare.Value), 2) + "", ""); } else { setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); setMsgInfo(txtTare, "", ""); setMsgInfo(txtNet, "", ""); } } } setGridColor(ultraGridPW, "00011", "3"); } else { setGridColor(ultraGridPW, "00011", "1"); } } else { //重量小于1000 if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00011") { CleanForm(); //重量小于1000清空文本框 setMsgInfo(txtCarNo, "", ""); setGridColor(ultraGridPW, "00011", "3"); isEditCarNo = false; } else { setGridColor(ultraGridPW, "00011", "2"); } //重量小于1000,可以点击保存按钮;按钮言颜色正常;车号编辑状态为false(初始化); btnSave.BackColor = Color.DodgerBlue; iWgtChange1 = true; } #endregion } catch (Exception ex) { //MessageBox.Show("frmMeterMain.EventData数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "frmMeterMain.EventData数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } #endregion #region 数据采集部分 private bool iWgtChange2 = true; //重量初次大于500 /// /// 数据采集;单称 /// private void EventData2(object o, StaticCollectModel e) { //这里每隔0.5秒执行一次 try { if (bTest) { e.carno = "";//功能测试 e.mainWgt = 0;//rd.Next(40000, 50000); e.viceWgt = 0; e.firstRed = "0"; e.secondRed = "0"; e.thirdRed = "1"; e.carType = "车型1"; } #region if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010") { if (!string.IsNullOrEmpty(e.carno) && e.carno != strCarNo && PbStaticRailwayCache.collect != null) { if (e.mainWgt > 1000 && !isEditCarNo) { strCarNo = e.carno; if (!string.IsNullOrEmpty(strCarNo)) { //QueryCarNo(); //采集时,车号有变化,查询一次数据//2021年4月23日注释;车号change的事件中会查询一次数据 } } if (string.IsNullOrEmpty(cmbCarType.Text.Trim())) { setMsgInfo(cmbCarType, "单秤", ""); } } } scModel2.mainWgt = e.mainWgt; scModel2.weightStatus = e.weightStatus; //PbStaticRailwayCache.collect.parkStatus = e.parkStatus; scModel2.datetime = e.datetime; //PbStaticRailwayCache.collect.licType = e.licType; if (!isEditCarNo) { scModel2.carno = e.carno; } if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010") { PbStaticRailwayCache.collect = scModel2; setMsgInfo(pl1, "Color", e.firstRed != "0" ? "Red" : "Lime"); setMsgInfo(pl2, "Color", e.firstRed != "0" ? "Red" : "Lime"); setMsgInfo(pl3, "Color", e.firstRed != "0" ? "Red" : "Lime"); //PbStaticRailwayCache.ltCarType } //重量大于500的情况下 if (e.mainWgt > 1000) { l.WriteLog(1, string.Format("单秤:车号:{0},主重:{1},副重{2},车型{3}", e.carno, e.mainWgt, e.viceWgt, e.carType)); if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010") { //if (!PbStaticRailwayCache.isLockFrm) { if (!isEditCarNo) //为false的时候车号才会重新赋值 { setMsgInfo(txtCarNo, scModel2.carno, ""); } ucStorageWeightT1.setWgt(scModel2.mainWgt); ucStorageWeightT1.setStable(scModel2.weightStatus != 1 ? true : false); } if (iWgtChange2) { setMsgInfo(btnSave, "true", "1"); } if (PbStaticRailwayCache.dtStartTime == null) PbStaticRailwayCache.dtStartTime = DateTime.Now; iWgtChange2 = false; int metWgt = 0; string strTxt = GetControlProperty(cmbCarType, "Text").ToString().Trim(); if (strTxt == "双秤") { metWgt = scModel2.viceWgt + scModel2.mainWgt; } else { metWgt = scModel2.mainWgt; } if (first != null) { //一毛一皮正常结净 if (metWgt > first.meterWeight) { //界面重量大于一次计量重量;则当前为皮重 if (isUsedFactoryWeight) { setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5) { setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); return; } setMsgInfo(txtNet, Math.Round(Math.Round(Convert.ToDouble(metWgt) / 1000, 2) - Convert.ToDouble(txtTare.Value), 2) + "", ""); } else { setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); setMsgInfo(txtTare, Math.Round(Convert.ToDouble(first.meterWeight) / 1000, 2) + "", ""); setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000 - Convert.ToDouble(first.meterWeight) / 1000, 2) + "", ""); } } else { //界面重量小于一次计量重量;则当前为毛重; //setMsgInfo(txtGroess, first.meterWeight + "", ""); //setMsgInfo(txtTare, metWgt + "", ""); //setMsgInfo(txtNet, (first.meterWeight - metWgt) + "", ""); //2021年4月19日 将毛重的取值从【meterWeight】变更为【meterBalanceWeight】 setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000, 2) + "", ""); setMsgInfo(txtTare, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); setMsgInfo(txtNet, Math.Round(Convert.ToDouble(first.meterBalanceWeight) / 1000 - Convert.ToDouble(metWgt) / 1000, 2) + "", ""); } } else { if (isUsedFactoryWeight) { //使用自重进行结净,自重为自己输入的 setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); String st = txtTare.Text; if (string.IsNullOrEmpty(txtTare.Text) || txtTare.Text.Length < 5) { setMsgInfo(txtNet, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); return; //txtTare.Value = 0; //注意numericupdown控件Text和Value是两个值,value不会清空,不这么处理,皮重框会一直有个值。 //txtTare.Text = "0"; } //setMsgInfo(txtTare, Convert.ToDouble(txtTare.Value) + "", ""); setMsgInfo(txtNet, Math.Round(Convert.ToDouble((metWgt / 1000) - txtTare.Value), 2) + "", ""); } else { setMsgInfo(txtGroess, Math.Round(Convert.ToDouble(metWgt) / 1000, 2) + "", ""); setMsgInfo(txtTare, "", ""); setMsgInfo(txtNet, "", ""); } } setGridColor(ultraGridPW, "00010", "3"); } else { setGridColor(ultraGridPW, "00010", "1"); } } else { if (PbStaticRailwayCache.sportInfo != null && PbStaticRailwayCache.sportInfo.baseSpotNo == "00010") { CleanForm(); //00010重量小于1000清空 setMsgInfo(txtCarNo, "", ""); setGridColor(ultraGridPW, "00010", "3"); isEditCarNo = false; } else { setGridColor(ultraGridPW, "00010", "2"); } iWgtChange2 = true; } #endregion } catch (Exception ex) { //MessageBox.Show("frmMeterMain.EventData2数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "frmMeterMain.EventData2数据采集异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } #endregion #region 数据操作 /// /// 按车号查询数据 /// private void QueryCarNo() { //查询频率限制,每2s钟查询一次数据 //if (searchLimit > 1) //{ // searchLimit = 0; //} //else //{ // return; //} int count = 0; try { if (!string.IsNullOrEmpty(strCarNo)) { first = null; count = 1; //通过车号查询计量预报;2021年5月15日 调整预报查询的接口 RESTfulResult> rmx = PreService.doQueryJLByCar(new PreRailwayScale { railwayNo = strCarNo, railwayTypeNo = "001019001" }); count = 2; try { dtRailwayScale.Clear(); DataTable dt = dtRailwayScale.Clone(); if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0) { dt = rmx.Data.ListToDataTable(); } ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtRailwayScale, true); foreach (var item in this.ultraGrid1.Rows) { item.Cells["valueFlag"].Value = GetTrackType(item.Cells["valueFlag"].Value.ToString()); item.Cells["grossWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["grossWeight"].Value.ToString()) ? "0" : item.Cells["grossWeight"].Value.ToString()) / 1000; item.Cells["tareWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["tareWeight"].Value.ToString()) ? "0" : item.Cells["tareWeight"].Value.ToString()) / 1000; item.Cells["netWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["netWeight"].Value.ToString()) ? "0" : item.Cells["netWeight"].Value.ToString()) / 1000; } ClsControlPack.RefreshAndAutoSize(ultraGrid1); if (ultraGrid1 != null && ultraGrid1.Rows != null && ultraGrid1.Rows.Count > 0) { foreach (UltraGridRow ugr in ultraGrid1.Rows) { ugr.Appearance.BackColor = Color.White;//背景颜色重置 } if (ultraGrid1.Rows.Count == 1 && !isLockWgt) //等于1时自动赋值并且没有计量完成 { DataRow[] dr = dtRailwayScale.Select("predictionNo='" + ultraGrid1.Rows[0].Cells["predictionNo"].Text.Trim() + "'"); if (dr != null && dr.Length > 0) { preTack = dr[0].CreateItem(); ucStaticTrackMeterInfo1.setPreTrackInfo(preTack); } } } } catch (Exception ex) { MessageBox.Show("预报数据查询出现异常,请联系系统维护人员处理!异常原因\r\n" + ex); l.WriteLog(13, "预报数据查询框异常,位置【" + count + "】" + ex); } //dtRailwayActFirst.Clear(); //一次计量数据查询:仅查询当前车号有效的数据;存在则毛皮净写入界面 RESTfulResult> RESTfulResult = railwayActFirstService.doQueryWf(new MeterWorkRailwayActFirst { railwayNo = strCarNo, valueFlag = "1" }); if (RESTfulResult.Succeed) { if (RESTfulResult.Data != null && RESTfulResult.Data.Count > 0) { if (RESTfulResult.Data.Count == 1) //等于1时自动赋值并且没有计量完成 { if (!isLockWgt) { first = RESTfulResult.Data[0]; PbStaticRailwayCache.strCode = first.predictionNo; try { if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0) { PreRailwayScale ptsQ = rmx.Data.Where(s => s.predictionNo == RESTfulResult.Data[0].predictionNo).FirstOrDefault(); if (ptsQ != null && ptsQ.predictionNo != "" && !txtMsgInfo.Text.Contains("保存成功")) { //2021年4月21日 杨秀东处理,若提示信息包含保存成功,则不再给界面赋值 ucStaticTrackMeterInfo1.setPreTrackInfo(ptsQ); preTack = ptsQ; } } } catch (Exception ex) { MessageBox.Show("一次计量数据查询出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex); l.WriteLog(13, "车号[" + strCarNo + "]一次计量数据查询框异常位置【" + count + "】" + ex); } } } else { setMsgInfo(txtMsgInfo, "车号[" + strCarNo + "]存在多条未结净的数据,不允许进行计量操作!", ""); } } } } } catch (Exception ex) { l.WriteLog(11, "QueryCarNo中出现异常:" + ex.Message); MessageBox.Show("QueryCarNo方法中出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex); } } /// /// 预报查询 /// private void querySacle() { try { dtRailwayScaleHis.Clear(); PreRailwayScale info = new PreRailwayScale(); info.pageNum = 1; info.pageSize = 1000; if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间 info.startTime = dateTimeStart.Text; if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间 info.endTime = dateTimeEnd.Text; if (!string.IsNullOrEmpty(cbMaterial.Text))//物资名称 info.matterName = cbMaterial.Text.Trim(); if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号 info.railwayNo = txtCarNoSearch.Text.Trim(); RESTfulResult> rmx = PreService.doQueryWfTime(info); DataTable dt = dtRailwayScaleHis.Clone(); if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0) { dt = rmx.Data.ListToDataTable(); } /** RESTfulResult> rmx = PreService.doQueryTenWf(new PreRailwayScale { railwayTypeNo = "001019001" }); DataTable dt = dtRailwayScale.Clone(); if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0) { dt = rmx.Data.ListToDataTable(); } */ ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtRailwayScaleHis, true); foreach (var item in this.ultraGridScaleHis.Rows) { item.Cells["valueFlag"].Value = GetTrackType(item.Cells["valueFlag"].Value.ToString()); } ClsControlPack.RefreshAndAutoSize(ultraGridScaleHis); } catch (Exception ex) { MessageBox.Show("querySacle预报数据查询出现异常,请联系系统维护人员处理!异常原因\r\n" + ex); l.WriteLog(13, "querySacle预报数据查询框异常,异常原因\r\n" + ex); } } /// /// 查询100条一次计量记录 /// private void queryFirst() { try { //最近的100条一次计量数据数据查询 dtRailwayActFirst.Clear(); MeterWorkRailwayActFirst info = new MeterWorkRailwayActFirst(); info.pageNum = 1; info.pageSize = 1000; info.valueFlag = "4"; info.baseSpotNo = "00010"; //00010;白家嘴计检站静态衡一 if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间 info.createTime1 = dateTimeStart.Text; if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间 info.createTime2 = dateTimeEnd.Text; if (!string.IsNullOrEmpty(cbMaterial.Text))//物资名称 info.matterName = cbMaterial.Text.Trim(); if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号 info.railwayNo = txtCarNoSearch.Text.Trim(); RESTfulResult> RESTfulResultRecent = railwayActFirstService.doQuerySelectSta(info); if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { DataTable dts = dtRailwayActFirst.Clone(); dts = RESTfulResultRecent.Data.ListToDataTable(); ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActFirst, true); foreach (var item in this.ultraGrid2.Rows) { item.Cells["meterWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterWeight"].Value.ToString()) ? "0" : item.Cells["meterWeight"].Value.ToString()) / 1000; item.Cells["meterBalanceWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterBalanceWeight"].Value.ToString()) ? "0" : item.Cells["meterBalanceWeight"].Value.ToString()) / 1000; item.Cells["railwayFactoryWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["railwayFactoryWeight"].Value.ToString()) ? "0" : item.Cells["railwayFactoryWeight"].Value.ToString()) / 1000; } ClsControlPack.RefreshAndAutoSize(ultraGrid2); } } catch (Exception ex) { MessageBox.Show("最近的一次计量数据数据查询,请联系系统维护人员处理!异常原因:\r\n" + ex); l.WriteLog(13, "车号[" + strCarNo + "]一次计量数据查询框异常,异常原因:" + ex); } } /// /// 查询100条一次计量记录;衡二 /// private void queryFirst2() { try { //最近的100条一次计量数据数据查询 dtRailwayActFirst2.Clear(); MeterWorkRailwayActFirst info = new MeterWorkRailwayActFirst(); info.pageNum = 1; info.pageSize = 1000; info.valueFlag = "4"; info.baseSpotNo = "00011"; //00011;白家嘴计检站静态衡二 if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间 info.createTime1 = dateTimeStart.Text; if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间 info.createTime2 = dateTimeEnd.Text; if (!string.IsNullOrEmpty(cbMaterial.Text))//物资名称 info.matterName = cbMaterial.Text.Trim(); if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号 info.railwayNo = txtCarNoSearch.Text.Trim(); RESTfulResult> RESTfulResultRecent = railwayActFirstService.doQuerySelectSta(info); if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { DataTable dts = dtRailwayActFirst2.Clone(); dts = RESTfulResultRecent.Data.ListToDataTable(); ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActFirst2, true); foreach (var item in this.ultraGridFirst2.Rows) { item.Cells["meterWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterWeight"].Value.ToString()) ? "0" : item.Cells["meterWeight"].Value.ToString()) / 1000; item.Cells["meterBalanceWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["meterBalanceWeight"].Value.ToString()) ? "0" : item.Cells["meterBalanceWeight"].Value.ToString()) / 1000; item.Cells["railwayFactoryWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["railwayFactoryWeight"].Value.ToString()) ? "0" : item.Cells["railwayFactoryWeight"].Value.ToString()) / 1000; } ClsControlPack.RefreshAndAutoSize(ultraGridFirst2); } } catch (Exception ex) { MessageBox.Show("最近的一次计量数据数据查询,请联系系统维护人员处理!异常原因:\r\n" + ex); l.WriteLog(13, "车号[" + strCarNo + "]一次计量数据查询框异常,异常原因:" + ex); } } /// /// 查询100条结净计量记录 /// private void queryActual() { try { //计量结净数据查询 MeterWorkRailwayActual mwca = new MeterWorkRailwayActual(); mwca.pageNum = 1; mwca.pageSize = 1000; mwca.flag = "0"; mwca.valueFlag = "0"; mwca.netSpot3No = "00010"; //00010;白家嘴计检站静态衡一 if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间 mwca.createTime1 = dateTimeStart.Text; if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间 mwca.createTime2 = dateTimeEnd.Text; if (!string.IsNullOrEmpty(cbMaterial.Text.Trim()))//物资名称 mwca.matterName = cbMaterial.Text.Trim(); if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号 mwca.railwayNo = txtCarNoSearch.Text.Trim(); dtRailwayActual.Clear(); RESTfulResult> RESTfulResultRecent = mwas.doQuerySelectView(mwca); if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { DataTable dts = dtRailwayActual.Clone(); if (RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { dts = RESTfulResultRecent.Data.ListToDataTable(); } ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActual, true); foreach (var item in this.ultraGrid3.Rows) { item.Cells["grossWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["grossWeight"].Value.ToString()) ? "0" : item.Cells["grossWeight"].Value.ToString()) / 1000; item.Cells["tareWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["tareWeight"].Value.ToString()) ? "0" : item.Cells["tareWeight"].Value.ToString()) / 1000; item.Cells["netWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["netWeight"].Value.ToString()) ? "0" : item.Cells["netWeight"].Value.ToString()) / 1000; } ClsControlPack.RefreshAndAutoSize(ultraGrid3); } } catch (Exception ex) { MessageBox.Show("净重数据查询出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex); l.WriteLog(13, "结净数据查询框异常,异常原因:" + ex); } } /// /// 查询100条结净计量记录;衡二 /// private void queryActual2() { try { //计量结净数据查询 MeterWorkRailwayActual mwca = new MeterWorkRailwayActual(); mwca.pageNum = 1; mwca.pageSize = 1000; mwca.flag = "0"; mwca.valueFlag = "0"; mwca.netSpot3No = "00011"; //00011;白家嘴计检站静态衡二 if (!string.IsNullOrEmpty(dateTimeStart.Text)) //查询开始时间 mwca.createTime1 = dateTimeStart.Text; if (!string.IsNullOrEmpty(dateTimeEnd.Text)) //查询结束时间 mwca.createTime2 = dateTimeEnd.Text; if (!string.IsNullOrEmpty(cbMaterial.Text.Trim()))//物资名称 mwca.matterName = cbMaterial.Text.Trim(); if (!string.IsNullOrEmpty(txtCarNoSearch.Text.Trim())) //车号 mwca.railwayNo = txtCarNoSearch.Text.Trim(); dtRailwayActual2.Clear(); RESTfulResult> RESTfulResultRecent = mwas.doQuerySelectView(mwca); if (RESTfulResultRecent.Succeed && RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { DataTable dts = dtRailwayActual2.Clone(); if (RESTfulResultRecent.Data != null && RESTfulResultRecent.Data.Count > 0) { dts = RESTfulResultRecent.Data.ListToDataTable(); } ClsControlPack.CopyDataToDatatable(ref dts, ref this.dtRailwayActual2, true); foreach (var item in this.ultraGridActual2.Rows) { item.Cells["grossWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["grossWeight"].Value.ToString()) ? "0" : item.Cells["grossWeight"].Value.ToString()) / 1000; item.Cells["tareWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["tareWeight"].Value.ToString()) ? "0" : item.Cells["tareWeight"].Value.ToString()) / 1000; item.Cells["netWeight"].Value = double.Parse(string.IsNullOrEmpty(item.Cells["netWeight"].Value.ToString()) ? "0" : item.Cells["netWeight"].Value.ToString()) / 1000; } ClsControlPack.RefreshAndAutoSize(ultraGridActual2); } } catch (Exception ex) { MessageBox.Show("净重数据查询出现异常,请联系系统维护人员处理!异常原因:\r\n" + ex); l.WriteLog(13, "结净数据查询框异常,异常原因:" + ex); } } private int iTime = 0; /// /// 定时任务 /// /// /// private void timer1_Tick(object sender, EventArgs e) { try { #region 每2秒查一次接管数据,若接管则改变状态 controlIp if (iTime % 2 == 0) { MeterBaseSpotInfoService service = new MeterBaseSpotInfoService(); RESTfulResult> rms = service.doQueryWf(new MeterBaseSpotInfo { validFlag = "1", spotTypeNo = "001002002" }); if (rms.Succeed && rms.Data != null && rms.Data.Count > 0) { PbStaticRailwayCache.sportInfos = rms.Data; string str = ""; string cIp = ""; bool bRefash = false; DataTable dt = dtJGPointInfo.Clone(); foreach (DataRow dr in dtJGPointInfo.Rows) { MeterBaseSpotInfo msi = rms.Data.Where(s => s.baseSpotNo == dr["baseSpotNo"].ToString().Trim()).FirstOrDefault(); if (msi != null && msi.baseSpotNo != null) { str = (string.IsNullOrEmpty(msi.controlIp) ? "未接管" : "已接管"); if (dr["validFlag"].ToString().Trim() != str) { dr["validFlag"] = str; bRefash = true; } cIp = (string.IsNullOrEmpty(msi.controlIp) ? "" : msi.controlIp); if (dr["controlIp"].ToString().Trim() != cIp) { dr["controlIp"] = cIp; bRefash = true; } } dt.Rows.Add(dr.ItemArray); } if (bRefash) { ClsControlPack.CopyDataToDatatable(ref dt, ref this.dtJGPointInfo, true); } } } #endregion #region 10分钟刷新一次数据 if (iTime < 600) { iTime++; if (iTime == 600) { //* try { //秤上没有车时,每隔10分钟获取一次基础数据 if (PbStaticRailwayCache.collect != null && PbStaticRailwayCache.collect.mainWgt < 1000) //大于1t才认为有车厢 { if (bd.setBaseDb()) { l.WriteLog(0, "十分钟获取基础数据成功"); } else { l.WriteLog(0, "十分钟获取基础数据失败"); } } } catch (Exception ex) { l.WriteLog(0, "十分钟获取基础数据失败:" + ex.Message); } //*/ } } else { iTime = 0; } #endregion } catch (Exception ex) { MessageBox.Show("timer1_Tick任务异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); l.WriteLog(13, "timer1_Tick任务异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n" + ex); } } #region 10分钟刷新一次数据 /// /// 使用定时任务,确保查询的时间间隔大于1s /// /// /// private void timerSearchLimit_Tick(object sender, EventArgs e) { searchLimit++; } #endregion /// /// 测试按钮 /// /// /// private void button1_Click(object sender, EventArgs e) { bTest = !bTest; } /// /// 预报数据双击事件 /// /// /// private void ultraGrid1_DoubleClick(object sender, EventArgs e) { int count = 0; try { if (this.ultraGrid1 == null || this.ultraGrid1.Rows.Count == 0) { return; } UltraGridRow ugr = this.ultraGrid1.ActiveRow; ugr.Appearance.BackColor = Color.GreenYellow; //选中后,设置背景颜色为绿色 count = 1; if (ugr != null && !string.IsNullOrEmpty(txtCarNo.Text)) { count = 2; DataRow[] dr = dtRailwayScale.Select("predictionNo='" + ugr.Cells["predictionNo"].Text.Trim() + "'"); count = 3; if (dr != null && dr.Length > 0) { count = 4; preTack = dr[0].CreateItem(); count = 5; ucStaticTrackMeterInfo1.setPreTrackInfo(preTack); } } } catch (Exception ex) { l.WriteLog(13, "frmMeterMain.ultraGrid1_DoubleClick方法异常【" + count + "】:" + ex.Message); MessageBox.Show("预报数据双击事件异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex); } } #endregion /// /// 选择的sheet页变了,则重新查询数据 /// /// /// private void uTab_SelectedTabChanged(object sender, Infragistics.Win.UltraWinTabControl.SelectedTabChangedEventArgs e) { //QueryCarNo(); //选择的sheet页变了,则重新查询数据 } /// /// 车牌变更事件 /// 车号变更后,界面的提示信息也需要清空 /// /// /// private void txtCarNo_TextChanged(object sender, EventArgs e) { try { //2021年4月10日 车号改变车号改变后,界面按钮颜色变为正常颜色;同时可以点击 //提示信息框清空 if (oldEditCarNo.Equals(txtCarNo.Text.Trim())) return; //if (string.IsNullOrEmpty(txtCarNo.Text.Trim()) || txtCarNo.Text.Length == 0) { }; oldEditCarNo = txtCarNo.Text.Trim(); strCarNo = txtCarNo.Text.ToString().Trim(); //全局变量赋值 scModel1.carno = strCarNo; scModel2.carno = strCarNo; if (txtCarNo.Text.Length > 0 && txtCarNo.Text.Length != 7) { btnSave.BackColor = Color.DodgerBlue; isLockWgt = false;//不锁定界面重量 setMsgInfo(txtMsgInfo, "", ""); //清空信息提示框 isEditCarNo = true; } //车号为7位的时候,查询一下数据 if (txtCarNo.Text.Length == 7) { searchLimit = 3; //置为3,可以强制查询 isLockWgt = false;//不锁定界面重量 strCarNo = txtCarNo.Text.ToString().Trim(); //全局变量赋值 scModel1.carno = strCarNo; scModel2.carno = strCarNo; btnSave.BackColor = Color.DodgerBlue; //isEditCarNo = true; //车号为7位的时候,还是保持原来的标志位;当点击保存按钮后,不管是否保存成功,都讲isEditCarNo = false(自动获取车号状态); QueryCarNo(); //车号有变化的时候,查询一次数据 } } catch (Exception ex) { MessageBox.Show("txtCarNo_TextChanged处理异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex); l.WriteLog(13, "txtCarNo_TextChanged处理异常:" + ex.Message); } } /// /// 获取IP地址 /// /// public string GetIP() { try { IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddr = ipHost.AddressList[0]; return ipAddr.ToString(); } catch (Exception ex) { Random rd = new Random(); MessageBox.Show("GetIP方法异常,请关闭界面并稍后打开,或联系管理员!\r\n异常原因:\r\n!" + ex); l.WriteLog(13, "GetIP方法异常:" + ex.Message); return rd.Next(99999, 999999) + ""; } } /// /// 查询进一个月的计量数据 /// /// /// private void btnSearch_Click(object sender, EventArgs e) { if (searchLimit > 1) { QueryCarNo();//点击查询按钮查询数据 querySacle();//计量预报查询;查询所有有效的预报 queryFirst(); //查询100条一次计量记录 queryActual(); //查询100条二次计量记录 queryFirst2(); //查询100条一次计量记录 queryActual2(); //查询100条二次计量记录 } else { MessageBox.Show("请 2 秒钟之后再点击查询操作!"); } } /// /// 车号刷新按钮,点击后车号获取模式变为【自动】 /// /// /// private void btnAutoCarNo_Click(object sender, EventArgs e) { isLockWgt = false;//不锁定界面重量 isEditCarNo = false; //刷新后,自动获取车号 oldEditCarNo = ""; //车号验证中的旧车号 searchLimit = 3; btnZZWgt.BackColor = Color.DodgerBlue;//刷新后,不再进行自重处理; isUsedFactoryWeight = false; btnSave.BackColor = Color.DodgerBlue; //刷新后,可以点击保存; setMsgInfo(txtMsgInfo, "", ""); //清空信息提示框 QueryCarNo();//点击刷新后,重新查询一下数据 } /// /// 下拉框公共方法:初始化物资名称下拉框 /// private void loadMaterialInfo() { try { RESTfulResult> rmx = matterService.doQueryListLike(new MeterBaseMatterInfo { validFlag = "1", pageNum = 1, pageSize = 9999 }); if (rmx.Succeed && rmx.Data != null && rmx.Data.Count > 0) { dtMaterial = rmx.Data.ListToDataTable(); } if (dtMaterial != null) { DataRow dr = dtMaterial.NewRow(); dtMaterial.Rows.InsertAt(dr, 0); cbMaterial.DataSource = dtMaterial; cbMaterial.DisplayMember = "matterName"; cbMaterial.ValueMember = "matterNo"; } } catch (Exception ex) { MessageBox.Show("品名初始化失败 " + ex.ToString()); } } /// /// 下拉框公共方法:光标离开的接口 /// /// /// private void cbMaterial_Leave(object sender, EventArgs e) { try { if (show == null) { return; } if (show.Focused == false) { show.Visible = false; } } catch (System.Exception exp) { //WriteLog(exp.Message); } } /// /// 下拉框公共方法:物资名称下拉框字符串改变事件 /// /// /// private void cbMaterial_TextChanged(object sender, EventArgs e) { try { if (show == null || this.cbMaterial.Focused == false) { return; } ChangeString(sender); show.Location = new Point(220, 169); //设置焦点的位置 showLocation = 1; int sign = 0; if (cbMaterial.Text.Length == 0) { show.Visible = false; } else { for (int i = 0; i < cbMaterial.Text.Length; i++) { if (Char.IsLower(cbMaterial.Text[i]) == false && Char.IsUpper(cbMaterial.Text[i]) == false) //是否纯字母 { sign = 1; break; } } if (sign == 0) { show.Items.Clear(); string text = cbMaterial.Text; text = text.ToUpper(); DataRow[] matchRows = null; matchRows = this.dtMaterial.Select("MATTER_NAME LIKE '%" + text + "%'"); //MNEMONIC_CODE 助记码 //if (matchRows.Length > 200) //{ // return; //} foreach (DataRow dr in matchRows) { show.Items.Add(dr["MATTERNAME"].ToString()); } show.Visible = true; } else { show.Visible = false; } } } catch (System.Exception exp) { //WriteLog(exp.Message); } } /// /// 下拉框公共方法:字符串变化 /// /// private void ChangeString(object sender) { if (sender is TextBox) { TextBox tb = (TextBox)sender; for (int i = 0; i < tb.Text.Length; i++) { int isChange = 0; char newChar = FullCodeToHalfCode(tb.Text[i], ref isChange); if (isChange == 1) { tb.Text = tb.Text.Replace(tb.Text[i], newChar); tb.SelectionStart = i + 1; } } } else if (sender is ComboBox) { ComboBox cb = (ComboBox)sender; for (int i = 0; i < cb.Text.Length; i++) { int isChange = 0; char newChar = FullCodeToHalfCode(cb.Text[i], ref isChange); if (isChange == 1) { cb.Text = cb.Text.Replace(cb.Text[i], newChar); cb.SelectionStart = i + 1; } } } } /// /// 下拉框公共方法:编码转换 /// /// /// /// private char FullCodeToHalfCode(char c, ref int isChange) { //得到c的编码 byte[] bytes = System.Text.Encoding.Unicode.GetBytes(c.ToString()); int H = Convert.ToInt32(bytes[1]); int L = Convert.ToInt32(bytes[0]); //得到unicode编码 int value = H * 256 + L; //是全角 if (value >= 65281 && value <= 65374) { int halfvalue = value - 65248;//65248是全半角间的差值。 byte halfL = Convert.ToByte(halfvalue); bytes[0] = halfL; bytes[1] = 0; isChange = 1; } else if (value == 12288) { int halfvalue = 32; byte halfL = Convert.ToByte(halfvalue); bytes[0] = halfL; bytes[1] = 0; isChange = 1; } else { isChange = 0; return c; } //将bytes转换成字符 string ret = System.Text.Encoding.Unicode.GetString(bytes); return Convert.ToChar(ret); } /// /// 下拉框公共方法:双击选中智能输入列表中的内容 /// /// /// private void show_DoubleClick(object sender, EventArgs e) { if (show.SelectedIndex >= 0 && show.SelectedIndex >= 0) { if (showLocation == 1) { this.cbMaterial.Text = show.Items[show.SelectedIndex].ToString(); this.cbMaterial.Focus(); } show.Visible = false; } } /// /// 下拉框公共方法:键盘按钮事件 /// /// /// private void show_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == 13 && show.SelectedIndex >= 0) { if (showLocation == 1) { this.cbMaterial.Text = show.Items[show.SelectedIndex].ToString(); this.cbMaterial.Focus(); } show.Visible = false; } else if ((e.KeyChar >= 65 && e.KeyChar <= 90) || (e.KeyChar >= 97 && e.KeyChar <= 122)) { if (showLocation == 1) { show.Items.Clear(); this.cbMaterial.Focus(); string text = this.cbMaterial.Text + e.KeyChar; this.cbMaterial.Text = text; this.cbMaterial.SelectionStart = cbMaterial.Text.Length; } } } /// /// 下拉框公共方法: 输入框失去焦点事件 /// /// /// private void show_Leave(object sender, EventArgs e) { show.Hide(); } /// /// 设置字段显示的别名 /// /// /// public static ValueList GetValueListByString(string str) { ValueList vlist = new ValueList(); try { string[] strs = str.Split(','); for (int i = 0; i < strs.Length; i++) { string[] strss = strs[i].Split(':'); vlist.ValueListItems.Add(strss[0], strss[1]); } } catch (Exception ex) { } return vlist; } /// /// /// /// /// public static string GetTrackType(string strCode) { string valueFlag = ""; //状态(0:未配车;1:未使用;2:已使用;3:已作废;4:正使用) switch (strCode) { case "0": valueFlag = "未配车"; break; case "1": valueFlag = "未使用"; break; case "2": valueFlag = "已使用"; break; case "3": valueFlag = "已作废"; break; case "4": valueFlag = "正使用"; break; default: break; } return valueFlag; } } }