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 |  551 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 544 insertions(+), 7 deletions(-)

diff --git a/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs b/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs
index d7af265..d0799b7 100644
--- a/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs
+++ b/DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs
@@ -1,22 +1,559 @@
-锘縰sing DevExpress.XtraEditors;
+锘縰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.ComponentModel;
 using System.Data;
-using System.Drawing;
-using System.Linq;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.IO;
+using System.Net.Sockets;
 using System.Text;
-using System.Threading.Tasks;
 using System.Windows.Forms;
 
 namespace Gs.DevApp.DevFrm.Work
 {
     public partial class Frm_Work01 : DevExpress.XtraEditors.XtraForm
     {
-        public Frm_Work01()
+        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 dianJianPath = "";//鐢垫鍙栧�艰矾寰�
+        string goodTag = "鈭�";
+        string badTag = "脳";
+        string fGxTouRu = "G001:鎶曞叆";
+        string fGxDianJian = "G002:鐢垫";
+        string fGxShouJian = "G003:姘存";
+        string fGxZhongJian = "G004:缁堟";
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <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();
+            if (string.IsNullOrEmpty(_barCode))
+            {
+                Toast vm = new Toast(-1, "~璇峰厛鎵拷婧爜~");
+                vm.Show();
+                return;
+            }
+            dynamic _obj = getObj(_barCode, _checkResult, _badDescription);
+            try
+            {
+                string strJson = UtilityHelper.HttpPost("", _webServiceName + "GetModel", JsonConvert.SerializeObject(_obj));
+                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
+                if (_rtn.rtnCode > 0)
+                {
+                    dynamic dy = _rtn.rtnData;
+                    //琛ㄥご鍜屾眹鎬�
+                    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"])
+                    {
+                        array.Add(a);
+                    }
+                    DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
+                    if (dt.Rows.Count > 0)
+                    {
+                        gcMx1.BindingContext = new BindingContext();
+                        gcMx1.DataSource = dt;
+                        gcMx1.ForceInitialize();
+                        gvMx1.BestFitColumns();
+                        Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gvMx1);
+                    }
+                    else
+                    {
+                        Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx1, gvMx1);
+                    }
+                    //涓嶈壇鍝佸垪琛�
+                    JArray array2 = new JArray();
+                    foreach (var a in _job["rtnData"]["list2"])
+                    {
+                        array2.Add(a);
+                    }
+                    DataTable dt2 = JsonConvert.DeserializeObject<DataTable>(array2.ToString());
+                    if (dt2.Rows.Count > 0)
+                    {
+                        gcMx2.BindingContext = new BindingContext();
+                        gcMx2.DataSource = dt2;
+                        gcMx2.ForceInitialize();
+                        gvMx2.BestFitColumns();
+                        Gs.DevApp.ToolBox.UtilityHelper.SetGridLayout(gvMx2);
+                    }
+                    else
+                    {
+                        Gs.DevApp.ToolBox.UtilityHelper.SetDefaultTable(gcMx2, gvMx2);
+                    }
+                    string _msg = _rtn.rtnMsg;
+                    if (!string.IsNullOrEmpty(_msg))
+                    {
+                        Toast vm = new Toast((goodTag == "鈭�" ? 1 : -1), _msg);
+                        vm.Show();
+                    }
+                }
+                else
+                {
+                    Toast vm = new Toast(-1, _rtn.rtnMsg);
+                    vm.Show();
+                }
+            }
+            catch (Exception ex)
+            {
+                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