lu
2025-06-09 ccc1b0d541d8f3bdd2bcb72dd0b5533e68b886d5
DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -1,6 +1,7 @@
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Drawing;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Menu;
@@ -21,12 +22,10 @@
using System.Linq;
using System.Net;
using System.Net.Cache;
using System.Net.Http;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
using UserControls.Data;
@@ -43,33 +42,25 @@
        private static readonly string WebApiUrl =
            ConfigurationManager.AppSettings["WebApiUrl"];
        public static async Task<string> UploadFileAsync(string filePath)
        {
            using (var httpClient = new HttpClient())
            using (var form = new MultipartFormDataContent())
            {
                httpClient.DefaultRequestHeaders.Add("token",
                    GetBasicAuthTicket());
                using (var fs = File.OpenRead(filePath))
                using (var streamContent = new StreamContent(fs))
                {
                    form.Add(streamContent, "file", Path.GetFileName(filePath));
                    var response =
                        await httpClient.PostAsync(
                            WebApiUrl + "Upload/UploadFile", form);
                    var responseString =
                        await response.Content.ReadAsStringAsync();
                    return responseString;
                }
            }
        }
        /// <summary>
        /// 读取加载信息
        /// </summary>
        /// <returns></returns>
        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)
        /// <summary>
        /// http请求
        /// </summary>
        /// <param name="url"></param>
        /// <param name="meth"></param>
        /// <param name="param"></param>
        /// <param name="isLoading"></param>
        /// <returns></returns>
        public static string HttpPost(string url, string meth, string param, bool isLoading = true)
        {
            Size _size; string _caption; Color _color; Padding _pad;
            (_size, _caption, _color, _pad) = getLoading();
@@ -77,6 +68,7 @@
            wdf.BackColor = _color;
            wdf.Padding = _pad;
            wdf.SetCaption("加载进度:" + meth);
            wdf.Visible = isLoading;
            HttpWebRequest request = null;
            StreamWriter requestStream = null;
            WebResponse response = null;
@@ -123,15 +115,6 @@
            }
            wdf.Close();
            return responseStr;
        }
        /// <summary>
        ///     默认页大小
        /// </summary>
        /// <returns></returns>
        public static int GetPageSize()
        {
            return int.Parse(ConfigurationSettings.AppSettings.Get("PageSize"));
        }
        /// <summary>
@@ -251,6 +234,8 @@
            var array = new JArray();
            var d = json["rtnData"];
            foreach (var a in d) array.Add(a);
            //if (array.Count <=0)
            //    return null;
            var dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
            rto.rtnData = dt;
            return rto;
@@ -273,6 +258,8 @@
            {
                foreach (var gv in gridViews)
                {
                    gv.ClearSorting();
                    gv.OptionsCustomization.AllowSort = isEdt;
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        colmn.OptionsColumn.AllowEdit = true;
@@ -677,6 +664,8 @@
            {
                foreach (var gv in gridViews)
                {
                    gv.ClearSorting();
                    gv.OptionsCustomization.AllowSort = isEdt;
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        colmn.OptionsColumn.AllowEdit = true;
@@ -953,6 +942,8 @@
            {
                foreach (var gv in gridViews)
                {
                    gv.ClearSorting();
                    gv.OptionsCustomization.AllowSort = isEdt;
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        colmn.OptionsColumn.AllowEdit = true;
@@ -1172,7 +1163,12 @@
        }
        #endregion
        /// <summary>
        /// 判断控件只读状态
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="isEdt"></param>
        /// <returns></returns>
        private static bool _isRead(object obj, bool isEdt = false)
        {
            ///永远是只读的
@@ -1286,35 +1282,6 @@
            }
        }
        /// <summary>
        ///     转驼峰命名
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string ToCamelCase(string strItem)
        {
            //如果包含小写,但不包含下划线
            var hasLowercase = Regex.IsMatch(strItem, @"[a-z]");
            if (hasLowercase && !strItem.Contains("_"))
            {
                var chars = strItem.ToCharArray();
                chars[0] = char.ToLower(chars[0]);
                return new string(chars);
            }
            var strItems = strItem.ToLower().Split('_');
            var strItemTarget = strItems[0];
            for (var j = 1; j < strItems.Length; j++)
            {
                var temp = strItems[j];
                var temp1 = temp[0].ToString().ToUpper();
                var temp2 = "";
                temp2 = temp1 + temp.Remove(0, 1);
                strItemTarget += temp2;
            }
            return strItemTarget;
        }
        /// <summary>
        /// 转Guid
@@ -1343,30 +1310,7 @@
            if (string.IsNullOrEmpty(s)) return null;
            return decimal.Parse(s);
        }
        public static int ToInt(string str)
        {
            try
            {
                return int.Parse(str);
            }
            catch (Exception)
            {
                return 0;
            }
        }
        public static long ToLong(string str)
        {
            try
            {
                return long.Parse(str);
            }
            catch (Exception)
            {
                return 0;
            }
        }
        public static int ToBit(string str)
        {
@@ -1374,12 +1318,7 @@
                return 1;
            return 0;
        }
        public static bool ToBoole(string str)
        {
            if (str.ToUpper() == "true".ToUpper())
                return true;
            return false;
        }
        public static bool ToCheck(string str)
        {
@@ -1866,6 +1805,7 @@
                    DataRow row = gridView1.GetDataRow(e.RowHandle);
                    if (row == null)
                        return;
                    //这是danger色
                    bool columnExists = row.Table.Columns.Contains("isRed");
                    if (columnExists == true)
                    {
@@ -1873,6 +1813,16 @@
                        if (_isRed == "1")
                        {
                            e.Appearance.ForeColor = Color.Tomato;
                        }
                    }
                    //这是success色
                    columnExists = row.Table.Columns.Contains("isSuccess");
                    if (columnExists == true)
                    {
                        string _isRed = row["isSuccess"].ToString();
                        if (_isRed == "1")
                        {
                            e.Appearance.ForeColor = Color.FromArgb(128, 255, 128);
                        }
                    }
                    // 设置焦点行的背景色
@@ -1983,7 +1933,7 @@
                    }
                    action(_guid);
                }
                if (xtraTabControl1.SelectedTabPageIndex == 0)
                if (pageBar1 != null && xtraTabControl1.SelectedTabPageIndex == 0)
                {
                    page(pageBar1.CurrentPage);
                    int rowHandle = 0;
@@ -2003,7 +1953,7 @@
        /// <param name="fm"></param>
        /// <param name="fileName"></param>
        /// <param name="icoName"></param>
        public static void SetGridViewParameterMx(GridView gridView1)
        public static void SetGridViewParameterMx(GridView gridView1, DevExpress.Utils.ToolTipController tips = null)
        {
            gridView1.PopupMenuShowing += (s, e) =>
            {
@@ -2074,6 +2024,45 @@
                    }
                }
            };
            if (tips != null)
            {
                tips.Appearance.BackColor = Color.LightBlue; // 设置背景颜色
                tips.Appearance.ForeColor = Color.Black; // 设置前景色(文字颜色)
                gridView1.MouseMove += (s, e) =>
                {
                    try
                    {
                        GridHitInfo hi = gridView1.CalcHitInfo(new Point(e.X, e.Y));
                        if (hi.InRowCell)
                        {
                            int cuRowHandle = hi.RowHandle;
                            if (cuRowHandle < 0)
                                return;
                            DataRow curRow = gridView1.GetDataRow(cuRowHandle);
                            var column = hi.Column;
                            string showTxt = curRow[column.FieldName].ToString();
                            ToolTipControllerShowEventArgs aa = new ToolTipControllerShowEventArgs();
                            aa.AllowHtmlText = DefaultBoolean.True;
                            aa.Title = column.Caption; //HTML, 粗体
                            aa.ToolTip = showTxt; //断行
                            aa.ShowBeak = true;
                            aa.Rounded = true; ////圆角
                            aa.RoundRadius = 7; //圆角率
                                                // aa.ToolTipType = ToolTipType.SuperTip; //超级样式,可多行或显示图标
                            aa.ToolTipType = ToolTipType.Standard;//标准样式,可显示鸟嘴。
                            aa.IconType = ToolTipIconType.Information; //消息图标
                            aa.IconSize = ToolTipIconSize.Small; //大图标
                            tips.ShowHint(aa);
                        }
                        else
                            tips.HideHint();
                    }
                    catch (Exception exception)
                    {
                    }
                };
            }
        }
        #endregion
@@ -2115,6 +2104,25 @@
        }
        /// <summary>
        /// 判断是不是一个有效的正整数
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool IsNumeric3(string str, string str2)
        {
            decimal d1 = 0;
            decimal d2 = 0;
            if (!string.IsNullOrEmpty(str))
            {
                d1 = decimal.Parse(str);
            }
            if (!string.IsNullOrEmpty(str2))
            {
                d2 = decimal.Parse(str2);
            }
            return (d1 + d2) > 0 ? true : false;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="box1">txt_psnQty_1:每张条码数量</param>
@@ -2141,7 +2149,7 @@
                decimal shang = dividend / divisor;
                decimal integerPart = Math.Truncate(shang); // 获取整数部分
                decimal decimalPart = dividend - divisor* integerPart; // 获取小数部分
                decimal decimalPart = dividend - divisor * integerPart; // 获取小数部分
                //decimal quotient = dividend / divisor; // 整数部分
                //decimal remainder = dividend % divisor; // 余数
@@ -2151,7 +2159,7 @@
            }
            catch (Exception ex)
            {
              Gs.DevApp.ToolBox.MsgHelper.ShowError("输入数据错误:"+ex.Message);
                Gs.DevApp.ToolBox.MsgHelper.ShowError("输入数据错误:" + ex.Message);
            }
        }
        public static void PrintAuto(DevExpress.XtraEditors.TextEdit txt_psnQty_1, DevExpress.XtraEditors.TextEdit txt_iCount_1, DevExpress.XtraEditors.RadioGroup radOut, DevExpress.XtraEditors.TextEdit txt_yuliang = null)
@@ -2164,7 +2172,95 @@
            else
                txt_iCount_1.ReadOnly = true;
        }
        #region 自定义进度条列
        /// <summary>
        /// 自定义进度条列
        /// </summary>
        /// <param name="view"></param>
        /// <param name="fieldName">列的字段名</param>
        /// <param name="warningValue"></param>
        /// <param name="lessColor"></param>
        /// <param name="greaterColor"></param>
        public static void CustomProgressBarColumn(DevExpress.XtraGrid.Views.Grid.GridView view, string fieldName, int warningValue = 50, Brush lessColor = null, Brush greaterColor = null)
        {
            var col = view.Columns[fieldName];
            if (col == null) return;
            col.AppearanceCell.Options.UseTextOptions = true;
            col.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
            view.CustomDrawCell += (s, e) =>
            {
                int _handle = e.RowHandle;
                if (_handle < 0)
                    return;
                if (e.Column.FieldName == fieldName)
                {
                    DrawProgressBar(e, warningValue, lessColor, greaterColor);
                    e.Handled = true;
                    DrawEditor(e);
                }
            };
        }
        private static void DrawProgressBar(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e, int warningValue = 50, Brush lessColor = null, Brush greaterColor = null)
        {
            string d = e.CellValue == null ? null : e.CellValue.ToString();
            decimal percent = string.IsNullOrEmpty(d) ? 0m : decimal.Parse(d);
            if (percent <= 0)
                percent = 0.1m;
            int width = (int)(percent * e.Bounds.Width);
            Rectangle rect = new Rectangle(e.Bounds.X, e.Bounds.Y, width, e.Bounds.Height);
            Brush b = Brushes.Green;
            if (greaterColor != null)
            {
                b = greaterColor;
            }
            if (percent * 100 < warningValue)
            {
                if (lessColor == null)
                {
                    b = Brushes.Red;
                }
                else
                {
                    b = lessColor;
                }
            }
            e.Graphics.FillRectangle(b, rect);
        }
        private static void DrawEditor(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            GridCellInfo cell = e.Cell as GridCellInfo;
            Point offset = cell.CellValueRect.Location;
            BaseEditPainter pb = cell.ViewInfo.Painter as BaseEditPainter;
            AppearanceObject style = cell.ViewInfo.PaintAppearance;
            if (!offset.IsEmpty)
                cell.ViewInfo.Offset(offset.X, offset.Y);
            try
            {
                pb.Draw(new ControlGraphicsInfoArgs(cell.ViewInfo, e.Cache, cell.Bounds));
            }
            finally
            {
                if (!offset.IsEmpty)
                {
                    cell.ViewInfo.Offset(-offset.X, -offset.Y);
                }
            }
        }
        #endregion
        #region 绘制表头全选勾选框
        /// <summary>
        /// 绘制表头全选勾选框