lu
2025-04-05 d70880a3d9ae6c9f99ec380ccd16f5524bb622e6
DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -10,7 +10,6 @@
using System.Net.Http;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@@ -63,12 +62,18 @@
            }
        }
        public static (Size, string, Color, Padding) getLoading()
        {
            Size _size = new Size(360, 90);
            return (_size, "拼命加载中,请稍后...", System.Drawing.Color.LightSkyBlue, new Padding(15));
        }
        public static string HttpPost(string url, string meth, string param)
        {
            string _caption = "拼命加载中,请稍后...";
            DevExpress.Utils.WaitDialogForm wdf = new DevExpress.Utils.WaitDialogForm(_caption + meth, "友情提示");
            wdf.BackColor = System.Drawing.Color.LightSkyBlue;
            wdf.Padding = new Padding(15);
            Size _size; string _caption; Color _color; Padding _pad;
            (_size, _caption, _color, _pad) = getLoading();
            DevExpress.Utils.WaitDialogForm wdf = new DevExpress.Utils.WaitDialogForm("加载进度:"+meth, _caption, _size);
            wdf.BackColor = _color;
            wdf.Padding = _pad;
            HttpWebRequest request = null;
            StreamWriter requestStream = null;
            WebResponse response = null;
@@ -86,27 +91,20 @@
                request.Timeout = 150000;
                request.AllowAutoRedirect = false;
                request.ServicePoint.Expect100Continue = false;
                //  wdf.SetCaption(_caption + "(10/100)" + meth);
                HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
                request.CachePolicy = noCachePolicy;
                //   wdf.SetCaption(_caption + "(20/100)" + meth);
                requestStream = new StreamWriter(request.GetRequestStream());
                requestStream.Write(param);
                requestStream.Close();
                //   wdf.SetCaption(_caption + "30/100)" + meth);
                response = request.GetResponse();
                //  wdf.SetCaption(_caption + "(40/100)");
                if (response != null)
                {
                    //  wdf.SetCaption(_caption + "(50/100)" + meth);
                    var reader = new StreamReader(response.GetResponseStream(),
                        Encoding.UTF8);
                    responseStr = reader.ReadToEnd();
                    //File.WriteAllText(Server.MapPath("~/") + @"\test.txt", responseStr); 
                    reader.Close();
                    //  wdf.SetCaption(_caption + "(60/100)" + meth);
                }
                // wdf.SetCaption(_caption + "(80/100)" + meth);
            }
            catch (Exception ex)
            {
@@ -120,7 +118,6 @@
                requestStream = null;
                response = null;
            }
            // wdf.SetCaption(_caption + "(90/100)");
            wdf.Close();
            return responseStr;
        }
@@ -283,6 +280,8 @@
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            colmn.Visible = !isEdt;
                            if (colmn.Visible == true)
                                colmn.VisibleIndex = 99999;
                        }
                        else
                        {
@@ -410,7 +409,14 @@
                        if (colType is CheckEdit)
                        {
                            var txt = colType as CheckEdit;
                            if (_isRead(txt.Tag))
                            {
                                txt.ReadOnly = true;
                            }
                            else
                                txt.ReadOnly = isEdt;
                            if (txt != null)
                            {
                                switch (strVal)
                                {
                                    case "True":
@@ -426,8 +432,8 @@
                                        txt.Checked = false;
                                        break;
                                }
                            }
                            txt.ReadOnly = isEdt;
                            continue;
                        }
                        //单选
@@ -453,6 +459,7 @@
                            txt.Enabled = !isEdt;
                            continue;
                        }
                        //时间
                        if (colType is DateTimePicker)
                        {
@@ -659,6 +666,18 @@
                            txt.Enabled = !isEdt;
                            continue;
                        }
                        //自定不良
                        if (colType is UcDictionary)
                        {
                            var txt = colType as UcDictionary;
                            txt.TextTxt = (strVal);
                            //if (txt.IsReadly == false)
                            //    txt.Enabled = !isEdt;
                            //else
                            //    txt.Enabled = false;
                            continue;
                        }
                    }
                }
                catch (Exception ex)
@@ -791,13 +810,12 @@
                if (ctrl is CheckEdit)
                {
                    var txt = ctrl as CheckEdit;
                    txt.ReadOnly = isEdt;
                    if (txt.Tag != null && txt.Tag.ToString().Length > 0 && txt.Tag.ToString().StartsWith("moren"))
                    if (_isRead(txt.Tag))
                    {
                        txt.Checked = bool.Parse(txt.Tag.ToString().Replace("moren.", ""));
                        txt.ReadOnly = true;
                    }
                    else
                        txt.Checked = false;
                        txt.ReadOnly = isEdt;
                    continue;
                }
                //自定义仓库
@@ -1212,33 +1230,13 @@
            }
            return isEdt;
        }
        /// <summary>
        ///     切换选项卡
        /// </summary>
        /// <param name="tabControl">选项卡容器</param>
        /// <param name="idx">从0开始,如果是999,则全部可用</param>
        public static void JumpToTab(XtraTabControl tabControl, int idx)
        {
            if (idx == 999)
            {
                for (var i = 0; i < tabControl.TabPages.Count; i++)
                    tabControl.TabPages[i].PageEnabled = true;
                tabControl.SelectedTabPageIndex = tabControl.TabPages.Count - 1;
                return;
            }
            for (var i = 0; i < tabControl.TabPages.Count; i++)
                tabControl.TabPages[i].PageEnabled = false;
            tabControl.TabPages[idx].PageEnabled = true;
            tabControl.SelectedTabPageIndex = idx;
        }
        /// <summary>
        /// tab跳转:0查看,1退出,2删除,3修改,4新增加
        /// tab跳转:0查看,1退出,2删除,3修改,4新增加,6保存后
        /// </summary>
        /// <param name="tabControl"></param>
        /// <param name="idx">0查看,1退出,2删除,3修改,4新增加</param>
        /// <param name="idx">0查看,1退出,2删除,3修改,4新增加,6保存后</param>
        public static void JumpTab(XtraTabControl tabControl, int action)
        {
@@ -1282,6 +1280,14 @@
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                tabControl.SelectedTabPageIndex = 1;
                return;
            }
            if (action == 6)
            {
                tabControl.TabPages[0].PageEnabled = true;
                tabControl.TabPages[1].PageEnabled = true;
                return;
            }
        }
@@ -1374,6 +1380,11 @@
                return 0;
            }
        }
        public static decimal? GetDecimal(string s)
        {
            if (string.IsNullOrEmpty(s)) return null;
            return decimal.Parse(s);
        }
        public static int ToInt(string str)
        {
@@ -1578,7 +1589,6 @@
                    return rowGuid;
                }
            }
            return "";
        }
@@ -1596,7 +1606,7 @@
            GridView dgv = s as GridView;
            if (dgv != null)
            {
                if (dgv.GetSelectedRows() != null)
                if (dgv.GetSelectedRows() != null && dgv.GetSelectedRows().Count() > 0)
                {
                    var selectedRow = dgv.GetSelectedRows()[0]; // 获取第一个选中行的索引
                    if (selectedRow >= 0)
@@ -1634,6 +1644,23 @@
        /// <param name="icoName"></param>
        public static void SetCheckIco(GridView gridView1, string zdChk, string zdChkUser, string zdCkDate, PictureBox btnChkIco, Form fm, string fileName, string icoName = "")
        {
            btnChkIco.Anchor = AnchorStyles.Top | AnchorStyles.Right; // 靠右
            btnChkIco.Location = new Point(fm.ClientSize.Width - btnChkIco.Width - 20, 80); // 距离顶部10像素
            if (gridView1 == null)
            {
                btnChkIco.Visible = true;
                if (fileName == "1")
                {
                    btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_check;
                    btnChkIco.Tag = "已审核";
                }
                else
                {
                    btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_noCheck;
                    btnChkIco.Tag = "未审核";
                }
                return;
            }
            if (fileName == "1" || fileName.ToUpper() == true.ToString().ToUpper())
            {
                btnChkIco.Image = global::Gs.DevApp.Properties.Resources.ico_check;
@@ -1656,17 +1683,14 @@
                if (!string.IsNullOrEmpty(zdChk))
                    gridView1.SetFocusedRowCellValue(zdChk, false);
            }
            btnChkIco.Anchor = AnchorStyles.Top | AnchorStyles.Right; // 靠右
            btnChkIco.Location = new Point(fm.ClientSize.Width - btnChkIco.Width - 20, 80); // 距离顶部10像素
        }
        #region 设置搜索
        public static string getQueryWord(string str)
        public static FilterEntity getFilterEntityWord(string id, string idDec, string val, string type)
        {
            return str.ToUpper().Replace("query_".ToUpper(), "");
        }
        public static FilterEntity getFilterEntityWord(string id, string idDec, string val)
        {
            return new FilterEntity(getQueryWord(id), idDec + ")", " like ", "包含)", "%" + val + "%");
            return new FilterEntity(id, idDec + ")", " like ", "包含)", "%" + val + "%", type);
        }
        public static List<FilterEntity> GetDilter(GridColumnCollection Columns, GridView gridView1 = null)
        {
@@ -1685,7 +1709,7 @@
                //  fiList.Add(new FilterEntity("b.FNumber", "使用组织", " like ", "包含", "%" + filter.Value + "%"));
                string[] ddd = filter.FilterString.Replace("Contains", "").Replace("(", "").Replace(")", "").Replace("'", "").Replace("'", "").Split(',');
                //Contains([fSubsidiary], '005')
                fiList.Add(getFilterEntityWord(col.Tag.ToString(), col.Caption.Trim(), ddd[1].Trim()));
                fiList.Add(getFilterEntityWord(col.Tag.ToString(), col.Caption.Trim(), ddd[1].Trim(), col.UnboundExpression));
            }
            return fiList;
        }
@@ -1710,8 +1734,20 @@
                    }
                }
                else
                    _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" +
                                      itm.fileValue + "'");
                {
                    switch (itm.fileType)
                    {
                        case "时间类型":
                            _sbSqlWhere.Append(" and CONVERT(nvarchar(30)," + itm.fileId + ",23)" + itm.fileOper + "'" + itm.fileValue + "'");
                            break;
                        //case "数值类型":
                        //    _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'");
                        //    break;
                        default:
                            _sbSqlWhere.Append(" and " + itm.fileId + itm.fileOper + "'" + itm.fileValue + "'");
                            break;
                    }
                }
            }
            return _sbSqlWhere.ToString();
        }
@@ -1720,7 +1756,7 @@
        public delegate void DelegateGetModel(string guid);
        public delegate void DelegateGetList(int currentPage);
        /// <summary>
        ///
        /// 设置主表的样式
        /// </summary>
        /// <param name="gridView1">gridview</param>
        /// <param name="picCheckBox">图标按钮</param>
@@ -1751,14 +1787,13 @@
            };
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.OptionsCustomization.AllowGroup = false;
            gridView1.Appearance.HeaderPanel.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.ControlText;
            // gridView1.Appearance.HeaderPanel.ForeColor = DevExpress.LookAndFeel.DXSkinColors.ForeColors.ControlText;
            gridView1.OptionsView.ColumnAutoWidth = false;//自动调整列宽
            foreach (GridColumn column in gridView1.Columns)
            {
                column.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
                column.OptionsColumn.AllowEdit = true;
                column.OptionsFilter.AutoFilterCondition = AutoFilterCondition.Contains;
                // column.OptionsFilter.AutoFilterCondition = AutoFilterCondition.Contains;
                column.OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains;
                column.OptionsFilter.ImmediateUpdateAutoFilter = false;
                if (column.Tag == null || column.Tag.ToString().EndsWith("edit"))
@@ -1864,7 +1899,24 @@
            edit.SelectAll();
        }
        public static void SetTabParameter(GridView gridView1, DevExpress.XtraTab.XtraTabControl xtraTabControl1, UcPageBar pageBar1, DelegateGetModel action = null, DelegateGetList page = null)
        public static void SetGridLayout(GridView gridView1)
        {
            foreach (GridColumn column in gridView1.Columns)
            {
                if (column.Width > 500)
                    column.Width = 500;
            }
        }
        /// <summary>
        /// 设置选项卡
        /// </summary>
        /// <param name="gridView1"></param>
        /// <param name="xtraTabControl1"></param>
        /// <param name="pageBar1"></param>
        /// <param name="action"></param>
        /// <param name="page"></param>
        public static void SetTabParameter(GridView gridView1, DevExpress.XtraTab.XtraTabControl xtraTabControl1, UcPageBar pageBar1, DelegateGetModel action = null, DelegateGetList page = null,Label lbGuid=null)
        {
            xtraTabControl1.SelectedPageChanged += (s, e) =>
            {
@@ -1897,7 +1949,12 @@
                }
                if (xtraTabControl1.SelectedTabPageIndex == 0)
                {
                    //  page(pageBar1.CurrentPage);
                    page(pageBar1.CurrentPage);
                    int rowHandle = 0;
                    rowHandle = gridView1.LocateByValue(1, gridView1.Columns["guid"], lbGuid.Text);
                    if (rowHandle < 0)
                        rowHandle = 0;
                    gridView1.FocusedRowHandle = rowHandle ;
                }
            };
        }
@@ -1988,145 +2045,7 @@
            Regex regex = new Regex("^[0-9]+$");
            return regex.IsMatch(str);
        }
        public static void getGridViewConfig(string namespaceFullName, List<DevExpress.XtraGrid.Views.Grid.GridView> gvList)
        {
            // gridView1.ShowCustomization();
            // gridView1.OptionsMenu.EnableColumnMenu = false;
            JArray array = new JArray();
            var _obj = new
            {
                formPath = namespaceFullName,
            };
            try
            {
                string strJson = UtilityHelper.HttpPost("", "Fm/GetModel", JsonConvert.SerializeObject(_obj));
                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
                if (_rtn.rtnCode > 0)
                {
                    JObject _job = JObject.Parse(strJson);
                    foreach (var a in _job["rtnData"]["list"])
                    {
                        array.Add(a);
                    }
                }
                else
                    ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
            }
            foreach (GridView gridView1 in gvList)
            {
                gridView1.PopupMenuShowing += (s, e) =>
                {
                    if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
                    {
                        GridViewColumnMenu menu = e.Menu as GridViewColumnMenu;
                        if (menu != null)
                        {
                            string[] ary = { "Column Chooser", "Hide This Column", "Clear All Sorting", "Clear Sorting", "Sort Descending", "Sort Ascending", "Best Fit (all columns)" };
                            for (int i = menu.Items.Count - 1; i >= 0; i--)
                            {
                                string _caption = menu.Items[i].Caption;
                                if (!ary.Contains(_caption))
                                {
                                    menu.Items.Remove(menu.Items[i]);
                                }
                            }
                        }
                    }
                };
                gridView1.OptionsView.ShowGroupPanel = false;
                gridView1.OptionsCustomization.AllowGroup = false;
                if (string.IsNullOrEmpty(namespaceFullName)) return;
                foreach (GridColumn column in gridView1.Columns)
                {
                    JToken john = array.FirstOrDefault(t => t["controlId"].ToString().ToUpper() == column.Name.ToString().Trim().ToUpper());
                    if (john != null)
                    {
                        string controlIdx = john["controlIdx"].ToString();
                        string controlVisible = john["controlVisible"].ToString();
                        if (!string.IsNullOrEmpty(controlIdx))
                            column.VisibleIndex = int.Parse(controlIdx);
                        if (!string.IsNullOrEmpty(controlVisible))
                            column.Visible = bool.Parse(controlVisible);
                    }
                }
            }
        }
        public static void getXmlConfig(string namespaceFullName, List<DevExpress.XtraGrid.Views.Grid.GridView> gvList)
        {
            // gridView1.ShowCustomization();
            // gridView1.OptionsMenu.EnableColumnMenu = false;
            JArray array = new JArray();
            var _obj = new
            {
                formPath = namespaceFullName,
            };
            try
            {
                string strJson = UtilityHelper.HttpPost("", "Fm/GetModel", JsonConvert.SerializeObject(_obj));
                ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
                if (_rtn.rtnCode > 0)
                {
                    JObject _job = JObject.Parse(strJson);
                    foreach (var a in _job["rtnData"]["list"])
                    {
                        //string _id = a["controlId"].ToString();
                        //string _controlType = a["controlType"].ToString();
                        //string _controlXml = a["controlXml"].ToString();
                        //string _splitterPosition = a["splitterPosition"].ToString();
                        array.Add(a);
                    }
                    foreach (GridView gridView1 in gvList)
                    {
                        gridView1.PopupMenuShowing += (s, e) =>
                        {
                            if (e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column)
                            {
                                GridViewColumnMenu menu = e.Menu as GridViewColumnMenu;
                                if (menu != null)
                                {
                                    string[] ary = { "Column Chooser", "Hide This Column", "Clear All Sorting", "Clear Sorting", "Sort Descending", "Sort Ascending", "Best Fit (all columns)" };
                                    for (int i = menu.Items.Count - 1; i >= 0; i--)
                                    {
                                        string _caption = menu.Items[i].Caption;
                                        if (!ary.Contains(_caption))
                                        {
                                            menu.Items.Remove(menu.Items[i]);
                                        }
                                    }
                                }
                            }
                        };
                        gridView1.OptionsView.ShowGroupPanel = false;
                        gridView1.OptionsCustomization.AllowGroup = false;
                        JToken john = array.FirstOrDefault(t => t["controlId"].ToString().ToUpper() == gridView1.Name.ToString().Trim().ToUpper());
                        if (john != null)
                        {
                            string controlId = john["controlId"].ToString();
                            string controlXml = john["controlXml"].ToString();
                            byte[] byteArray = Encoding.UTF8.GetBytes(controlXml);
                            using (var stream = new MemoryStream(byteArray))
                            {
                                gridView1.RestoreLayoutFromStream(stream);
                            }
                        }
                    }
                }
                else
                    ToolBox.MsgHelper.Warning("提示:" + _rtn.rtnMsg);
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
            }
        }
    }
    /// <summary>
@@ -2138,10 +2057,11 @@
        {
        }
        public CboItemEntity(string val, string text)
        public CboItemEntity(string val, string text, string fType = "")
        {
            Text = text;
            Value = val;
            FType = fType;
        }
        /// <summary>
@@ -2153,6 +2073,8 @@
        ///     对象值
        /// </summary>
        public object Value { get; set; } = "";
        public object FType { get; set; } = "";
        public override string ToString()
        {
@@ -2174,13 +2096,14 @@
        /// <param name="operDec">操作符备注</param>
        /// <param name="val"></param>
        public FilterEntity(string id, string idDec, string oper,
            string operDec, string val)
            string operDec, string val, string type)
        {
            fileId = id;
            fileIdDec = idDec;
            fileOper = oper;
            fileOperDec = operDec;
            fileValue = val;
            fileType = type;
        }
        public string fileId { get; set; }
@@ -2192,5 +2115,7 @@
        public string fileOperDec { get; set; }
        public string fileValue { get; set; }
        public string fileType { get; set; }
    }
}