From 0e9ba4ee9ee5c37a9379de1d352fd4973d3691f7 Mon Sep 17 00:00:00 2001 From: lu <123456> Date: 星期六, 02 八月 2025 08:56:20 +0800 Subject: [PATCH] bug --- DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs | 538 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 479 insertions(+), 59 deletions(-) diff --git a/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs b/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs index e5b8d2f..d0799b7 100644 --- a/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs +++ b/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs @@ -1,68 +1,247 @@ -锘縰sing DevExpress.XtraBars.Alerter; -using DevExpress.XtraBars.ToastNotifications; +锘縰sing DevExpress.Office.Utils; using DevExpress.XtraEditors; +using DevExpress.XtraGrid.Columns; +using DevExpress.XtraLayout.Utils; using Gs.DevApp.Entity; using Gs.DevApp.ToolBox; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using NModbus; using System; +using System.Collections.Generic; using System.Data; -using System.Drawing; +using System.Data.SqlClient; +using System.Dynamic; +using System.IO; +using System.Net.Sockets; +using System.Text; using System.Windows.Forms; namespace Gs.DevApp.DevFrm.Work { public partial class Frm_Work01 : DevExpress.XtraEditors.XtraForm { + string hostName = "192.168.60.51"; + int hostNamePoint = 502; + string strConn = "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=mesUser;Password =qixi1qaz@WSXmes"; + bool isCleanDianJian = false; string _webServiceName = "WorkCollect/"; - - string fGx = ""; - string fBc = ""; - public Frm_Work01(string _fGx, string _fBc) - { - InitializeComponent(); - this.fGx = _fGx; - this.fBc = _fBc; - txt_gx.Text = fGx; - txt_bc.Text = fBc; - txt_barCode.Focus(); - txt_barCode.KeyDown += (s, e) => - { - if (e.KeyCode == Keys.Enter) { getModel("", ""); }; - }; - btnGood.Click += (s, e) => - { - getModel("", "鈭�"); - }; - btnBad.Click += (s, e) => { - getModel("", "脳"); - }; - } + string dianJianPath = "";//鐢垫鍙栧�艰矾寰� + string goodTag = "鈭�"; + string badTag = "脳"; + string fGxTouRu = "G001:鎶曞叆"; + string fGxDianJian = "G002:鐢垫"; + string fGxShouJian = "G003:姘存"; + string fGxZhongJian = "G004:缁堟"; /// <summary> /// /// </summary> - /// <param name="_checkVal">妫�娴嬪��</param> - /// <param name="_checkResult">妫�娴嬬粨鏋�</param> - private void getModel(string _checkVal, string _checkResult) + /// <param name="_fGx">宸ュ簭</param> + /// <param name="_fBc">鐝</param> + /// <param name="_strinOther">鐩墠涓虹數妫�璺緞</param> + public Frm_Work01(string _fGx, string _fBc, string _strinOther) + { + InitializeComponent(); + gvMx1.IndicatorWidth = 60; + gvMx1.CustomDrawRowIndicator += (s, e) => + { + if (e.Info.IsRowIndicator && e.RowHandle >= 0) + e.Info.DisplayText = (e.RowHandle + 1).ToString(); + }; + txt_gx.Text = _fGx; + txt_bc.Text = _fBc; + txt_dianJianPath.Text = _strinOther; + dianJianPath = _strinOther; + this.Text = "宸ュ簭閲囬泦銆�" + _fGx + " - " + _fBc + "銆�"; + label8.Text = _fGx + "鏁伴噺"; + addColumn(); + txt_barCode.KeyDown += (s, e) => + { + if (e.KeyCode == Keys.Enter) + { + //濡傛灉鏄按妫�锛岃繕瑕佹壂宸ヤ綅 + if (txt_gx.Text.Trim() == fGxShouJian) + { + txt_gongWei.Focus(); + } + else + addModel(goodTag); + } + }; + txt_gongWei.KeyDown += (s, e) => + { + if (e.KeyCode == Keys.Enter) + { + //濡傛灉鏄按妫�锛屽彲浠ユ彁浜や簡 + if (txt_gx.Text.Trim() == fGxShouJian) + { + addModel(goodTag); + } + } + }; + btnGood.Click += (s, e) => + { + addModel(goodTag); + }; + btnBad.Click += (s, e) => + { + string _barCode = txt_barCode.Text.Trim(); + if (string.IsNullOrEmpty(_barCode)) + { + Toast vm = new Toast(-1, "~璇峰厛鎵拷婧爜~"); + vm.Show(); + return; + } + UcDictionarySelect frm = new UcDictionarySelect("宸ュ簭涓嶈壇鎻忚堪", " a.s_type='宸ュ簭涓嶈壇鎻忚堪' and pid<>'00000000-0000-0000-0000-000000000000'"); + frm.UpdateParent += (ss, ee) => + { + System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); + var lst = ee.DynamicList; + foreach (dynamic dym in lst) + { + if (stringBuilder.Length > 0) + stringBuilder.Append("|"); + stringBuilder.Append(dym.dicTxt); + } + string _txt = stringBuilder.ToString(); + if (string.IsNullOrEmpty(_txt)) + { + Toast vm = new Toast(-1, "~褰撲负涓嶈壇鏃讹紝璇烽�夋嫨涓嶈壇椤圭洰~"); + vm.Show(); + } + else + addModel(badTag, _txt); + }; + frm.ShowDialog(); + }; + this.ActiveControl = this.txt_barCode; + txt_barCode.Focus(); + } + + /// <summary> + /// 鏍规嵁宸ュ簭锛屾瀯閫犱笉鍚岀被鍨嬬殑瀹炰綋锛岃鍙栦笉鍚岀殑鏁版嵁 + /// </summary> + /// <param name="_barCode">鏉$爜</param> + /// <param name="_checkResult">缁撴灉</param> + /// <param name="_badDescription">涓嶈壇鎻忚堪</param> + /// <returns></returns> + private dynamic getObj(string _barCode, string _checkResult, string _badDescription = "") + { + dynamic _obj = new ExpandoObject(); + _obj.barCode = _barCode; + _obj.checkResult = _checkResult;//妫�娴嬬粨鏋� + _obj.processNo = txt_gx.Text.Trim();//宸ュ簭 + _obj.banCi = txt_bc.Text.Trim();//鐝 + _obj.gongWei = txt_gongWei.Text.Trim();//宸ヤ綅 + _obj.badDescription = _badDescription.Trim();//涓嶈壇鎻忚堪 + if (txt_gx.Text.Trim() == fGxTouRu) + { + return _obj; + } + //鐢垫 + if (txt_gx.Text.Trim() == fGxDianJian) + { + string TM = ""; + string JD = ""; + string JY = ""; + string JN = ""; + string XL = ""; + string GV = ""; + string JDV = ""; + string JYV = ""; + string JNV = ""; + string XLV = ""; + string GVV = ""; + string myStr = File.ReadAllText(dianJianPath, Encoding.Default); + if (myStr == "") + { + return _obj; + } + JArray dsTemp = JArray.Parse(myStr); + foreach (var ss in dsTemp) //鏌ユ壘鏌愪釜瀛楁涓庡�� + { + TM = (((JObject)ss)["TiaoMa"] == null) ? "" : ((JObject)ss)["TiaoMa"].ToString(); + JD = (((JObject)ss)["JieDi"] == null) ? "" : ((JObject)ss)["JieDi"]["state"].ToString(); + JY = (((JObject)ss)["JueYuan"] == null) ? "" : ((JObject)ss)["JueYuan"]["state"].ToString(); + JN = (((JObject)ss)["JiaoNai"] == null) ? "" : ((JObject)ss)["JiaoNai"]["state"].ToString(); + XL = (((JObject)ss)["XieLou"] == null) ? "" : ((JObject)ss)["XieLou"]["state"].ToString(); + GV = (((JObject)ss)["GongLv"] == null) ? "" : ((JObject)ss)["GongLv"]["state"].ToString(); + JDV = (((JObject)ss)["JieDi"] == null) ? "" : ((JObject)ss)["JieDi"]["value"].ToString().Replace(" ", ","); + JYV = (((JObject)ss)["JueYuan"] == null) ? "" : ((JObject)ss)["JueYuan"]["value"].ToString().Replace(" ", ", "); + JNV = (((JObject)ss)["JiaoNai"] == null) ? "" : ((JObject)ss)["JiaoNai"]["value"].ToString().Replace(" ", ", "); + XLV = (((JObject)ss)["XieLou"] == null) ? "" : ((JObject)ss)["XieLou"]["value"].ToString().Replace(" ", ", "); + GVV = (((JObject)ss)["GongLv"] == null) ? "" : ((JObject)ss)["GongLv"]["value"].ToString().Replace(" ", ", "); + } + _obj.t001 = TM; + _obj.t002 = JD; + _obj.t003 = JY; + _obj.t004 = JN; + _obj.t005 = XL; + _obj.t006 = GV; + _obj.t007 = JDV; + _obj.t008 = JYV; + _obj.t009 = JNV; + _obj.t010 = XLV; + _obj.t011 = GVV; + if (isCleanDianJian == true) + File.WriteAllText(dianJianPath, ""); + return _obj; + } + //姘存 + if (txt_gx.Text.Trim() == fGxShouJian) + { + string strCsl1 = "";//妯″紡1鍑烘按閲� + string strSw1 = "";//妯″紡1姘存俯 + string strCsl2 = ""; + string strSw2 = ""; + string strCsl3 = ""; + string strSw3 = ""; + string strCsl4 = ""; + string strSw4 = ""; + string strCsl5 = ""; + string strSw5 = ""; + string SJJG = "";//姘存鏌ョ粨鏋渙k銆乶g + string GWZT = "";//宸ヤ綅鐘舵�� + string SJJGZ = "";//姘存鏌ョ粨鏋�1 + (strCsl1, strSw1, SJJG, GWZT, SJJGZ) = getShuiJian(); + _obj.t002 = strCsl1; + _obj.t003 = strSw1; + _obj.t004 = strCsl2; + _obj.t005 = strSw2; + _obj.t006 = strCsl3; + _obj.t007 = strSw3; + _obj.t008 = strCsl4; + _obj.t009 = strSw4; + _obj.t010 = strCsl5; + _obj.t011 = strSw5; + _obj.t012 = SJJGZ; + _obj.t013 = GWZT; + return _obj; + } + //缁堟 + if (txt_gx.Text.Trim() == fGxZhongJian) + { + return _obj; + } + return null; + } + + /// <summary> + /// 涓婃姤瀹炰綋 + /// </summary> + /// <param name="_checkResult">缁撴灉锛氣垰</param> + /// <param name="_badDescription">涓嶈壇鎻忚堪</param> + private void addModel(string _checkResult, string _badDescription = "") { string _barCode = txt_barCode.Text.Trim(); - string _inBz = ""; ; //澶囨敞 if (string.IsNullOrEmpty(_barCode)) { - ToolBox.MsgHelper.ShowError("璇峰厛鎵爜锛�"); + Toast vm = new Toast(-1, "~璇峰厛鎵拷婧爜~"); + vm.Show(); return; } - var _obj = new - { - barCode = _barCode, - inBz = _inBz, - checkVal = _checkVal, - checkResult = _checkResult, - processNo = txt_gx.Text.Trim(),//宸ュ簭 - banCi = txt_bc.Text.Trim(),//鐝 - gongWei = txt_gw.Text.Trim(),//宸ヤ綅 - }; + dynamic _obj = getObj(_barCode, _checkResult, _badDescription); try { string strJson = UtilityHelper.HttpPost("", _webServiceName + "GetModel", JsonConvert.SerializeObject(_obj)); @@ -70,13 +249,17 @@ if (_rtn.rtnCode > 0) { dynamic dy = _rtn.rtnData; - txt_gdbh.Text = dy.gdbh; - txt_itemNo.Text = dy.itemNo; - txt_itemName.Text = dy.itemName; - txt_itemModel.Text = dy.itemModel; - txt_sjXt.Text = dy.sjXt; - txt_sjDate.Text = dy.sjDate; - txt_yjDate.Text = dy.yjDate; + //琛ㄥご鍜屾眹鎬� + UtilityHelper.SetValueByObj(this.layoutMx1.Controls, dy, false); + lbSum1.Text = dy.lbSum1; + lbSum2.Text = dy.lbSum2; + lbSum3.Text = dy.lbSum3; + lbSum4.Text = dy.lbSum4; + prog1.Position = dy.jd; + txt_barCode.ReadOnly = false; + if (txt_gx.Text.Trim() == fGxShouJian) + txt_gongWei.ReadOnly = false; + //鑹搧鍒楄〃 JObject _job = JObject.Parse(strJson); JArray array = new JArray(); foreach (var a in _job["rtnData"]["list"]) @@ -96,6 +279,7 @@ { Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1); } + //涓嶈壇鍝佸垪琛� JArray array2 = new JArray(); foreach (var a in _job["rtnData"]["list2"]) { @@ -117,23 +301,259 @@ string _msg = _rtn.rtnMsg; if (!string.IsNullOrEmpty(_msg)) { - //璁剧疆鍗曠獥鍙e嚭鐜板脊鍑虹殑閫熷害 - this.alertControl1.FormDisplaySpeed = DevExpress.XtraBars.Alerter.AlertFormDisplaySpeed.Fast; - //璁剧疆鏄剧ず澶氬皯鏃堕棿绐楀彛浼氳嚜鍔ㄥ叧闂� 浠ユ绉掍负鍗曚綅 - this.alertControl1.AutoFormDelay = 3000; - //璁剧疆鎻愬嚭绐楀彛鐨勬樉绀虹殑浣嶇疆 - this.alertControl1.FormLocation = DevExpress.XtraBars.Alerter.AlertFormLocation.BottomLeft; - this.alertControl1.Show(this, "鎻愮ず!", _msg); - }; + Toast vm = new Toast((goodTag == "鈭�" ? 1 : -1), _msg); + vm.Show(); + } } else - ToolBox.MsgHelper.ShowError("鎻愮ず锛�" + _rtn.rtnMsg); + { + Toast vm = new Toast(-1, _rtn.rtnMsg); + vm.Show(); + } } catch (Exception ex) { - ToolBox.MsgHelper.ShowError("鎻愮ず锛�" + ex.Message); + Toast vm = new Toast(-1, ex.Message); + vm.Show(); + } + txt_barCode.Text = ""; + txt_gongWei.Text = ""; + this.ActiveControl = this.txt_barCode; + txt_barCode.Focus(); + } + + /// <summary> + /// 澧炲姞鐢垫锛屾按妫�鐨勫垪 + /// </summary> + public void addColumn() + { + //鍙湁鐢垫鎵嶆樉绀� + if (txt_gx.Text.Trim() == fGxDianJian) + layDianJian.Visibility = LayoutVisibility.Always; + else + layDianJian.Visibility = LayoutVisibility.Never; + //鍙湁姘存鎵嶆樉绀� + if (txt_gx.Text.Trim() == fGxShouJian) + layShuiJian.Visibility = LayoutVisibility.Always; + else + layShuiJian.Visibility = LayoutVisibility.Never; + List<dynamic> _lst = new List<dynamic>(); + if (txt_gx.Text.Trim() == fGxDianJian) + { + _lst.Add(new + { + ziduan = "t002", + wenben = "鎺ュ湴", + kejian = true, + visibleIndex = 1, + }); + _lst.Add(new + { + ziduan = "t004", + wenben = "浜よ��", + kejian = true, + visibleIndex = 1, + }); + _lst.Add(new + { + ziduan = "t005", + wenben = "娉勬紡", + kejian = true, + visibleIndex = 1, + }); + _lst.Add(new + { + ziduan = "t006", + wenben = "鍔熺巼", + kejian = true, + visibleIndex = 1, + }); + _lst.Add(new + { + ziduan = "t007", + wenben = "鎺ュ湴缁撴灉", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t009", + wenben = "浜よ�愮粨鏋�", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t010", + wenben = "娉勬紡缁撴灉", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t011", + wenben = "鍔熺巼缁撴灉", + visibleIndex = -1, + }); + } + if (txt_gx.Text.Trim() == fGxShouJian) + { + _lst.Add(new + { + ziduan = "t002", + wenben = "鍑烘按閲�1", + kejian = true, + visibleIndex = 1, + }); + _lst.Add(new + { + ziduan = "t003", + wenben = "姘存俯1", + kejian = true, + visibleIndex = 1, + }); + _lst.Add(new + { + ziduan = "t004", + wenben = "鍑烘按閲�2", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t005", + wenben = "姘存俯2", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t006", + wenben = "鍑烘按閲�3", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t007", + wenben = "姘存俯3", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t008", + wenben = "鍑烘按閲�4", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t009", + wenben = "姘存俯4", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t010", + wenben = "鍑烘按閲�5", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t011", + wenben = "姘存俯5", + visibleIndex = -1, + }); + _lst.Add(new + { + ziduan = "t012", + wenben = "鏁版嵁缁撴灉", + kejian = true, + visibleIndex = 1, + }); + } + foreach (var item in _lst) + { + GridColumn newColumn = new GridColumn(); + newColumn.FieldName = item.ziduan; // 璁剧疆涓庢暟鎹簮瀵瑰簲鐨勫瓧娈靛悕 + newColumn.Caption = item.wenben; // 璁剧疆鍒楃殑鏍囬 + newColumn.VisibleIndex = item.visibleIndex; // 璁剧疆鍒楃殑鏄剧ず椤哄簭 + gvMx1.Columns.Add(newColumn); } } - } + + #region 璇诲彇姘存鏁版嵁 + private (string, string, string, string, string) getShuiJian() + { + string strCsl1 = ""; //妯″紡1鍑烘按閲� + string strSw1 = "";//妯″紡1姘存俯 + string SJJG = "";//姘存鏌ョ粨鏋渙k銆乶g + string GWZT = "";//宸ヤ綅鐘舵�� + string SJJGZ = "";//姘存鏌ョ粨鏋�1 + System.Text.StringBuilder sbSql1 = new StringBuilder(); + sbSql1.Append($"select MIG004,MIG005 from BASMIG(nolock) where MIG001='ShuiJianZhanWei01' and MIG003='{((BaseEdit)this.txt_gongWei).EditValue.ToString()}'"); + DataTable dataTable1 = this.GetDataTable(sbSql1.ToString(), "tmpBASMIG2"); + if (dataTable1 == null || dataTable1.Rows.Count <= 0) + { + ((BaseEdit)this.txt_gongWei).EditValue = (object)""; + LogHelper.Debug(this.ToString(), txt_gongWei.Text + "璇ユ按妫�绔欎綅鐮佷笉瀛樺湪锛岃纭锛�"); + //Toast vm = new Toast(-1, "璇ユ按妫�绔欎綅鐮佷笉瀛樺湪锛岃纭锛�"); + //vm.Show(); + } + else + { + ModbusFactory modbusFactory = new ModbusFactory(); + byte num1 = byte.Parse("1"); + ushort num2 = ushort.Parse("1"); + System.Text.StringBuilder sbSql2 = new StringBuilder(); + sbSql2.Append(string.Format($"select case when MIG006='D' then MIG003+{dataTable1.Rows[0][0]} else MIG003+{dataTable1.Rows[0][1]} end MIG003,MIG004 from BASMIG(nolock) where MIG001 = 'ShuiJianAddress01' order by MIG005")); + DataTable dataTable2 = GetDataTable(sbSql2.ToString(), "tmpBASMIG3"); + if (dataTable2 == null || dataTable2.Rows.Count <= 0) + { + ((BaseEdit)this.txt_gongWei).EditValue = (object)""; + LogHelper.Debug(this.ToString(), txt_gongWei.Text + "姘存鍦板潃涓嶅瓨鍦紝璇风‘璁わ紒"); + //Toast vm = new Toast(-1, "姘存鍦板潃涓嶅瓨鍦紝璇风‘璁わ紒"); + //vm.Show(); + } + else + { + try + { + IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(this.hostName, this.hostNamePoint)); + master.Transport.ReadTimeout = 10000; + master.Transport.Retries = 10000; + strCsl1 = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[0]["MIG003"].ToString()), num2)[0].ToString(); + strSw1 = (float.Parse(master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[1]["MIG003"].ToString()), num2)[0].ToString()) / 10f).ToString(); + ushort[] numArray = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[2]["MIG003"].ToString()), num2); + SJJGZ = numArray[0].ToString(); + SJJG = numArray[0].ToString(); + SJJG = (SJJG == "1" ? "OK" : (SJJG == "2" ? "NG" : SJJG)); + GWZT = master.ReadCoils(num1, ushort.Parse(dataTable2.Rows[3]["MIG003"].ToString()), num2)[0].ToString(); + } + catch (Exception ex) + { + ((BaseEdit)this.txt_gongWei).EditValue = (object)""; + LogHelper.Debug(this.ToString(), txt_gongWei.Text + ex.Message); + //Toast vm = new Toast(-1, ex.Message); + //vm.Show(); + } + } + } + return (strCsl1, strSw1, SJJG, GWZT, SJJGZ); + } + private DataTable GetDataTable(string SQLString, string tmpBASMIG2) + { + using (var connection = new SqlConnection(strConn)) + { + var ds = new DataSet(); + try + { + connection.Open(); + var command = new SqlDataAdapter(SQLString, connection); + command.Fill(ds, tmpBASMIG2); + } + catch (SqlException ex) + { + LogHelper.Debug(this.ToString(), ex.Message); + } + return ds.Tables[0]; + } + } + #endregion + + } } \ No newline at end of file -- Gitblit v1.9.3