1
lu
2024-12-08 c47dadf9b621c36d84c6f0f2cac1fc5e08221858
DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -13,6 +13,8 @@
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.RichEdit.Export;
using DevExpress.XtraBars.Customization;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid;
@@ -20,11 +22,13 @@
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraTab;
using DevExpress.XtraTreeList;
using DevExpress.XtraWaitForm;
using Gs.DevApp.Entity;
using Gs.DevApp.UserControl;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using static System.Windows.Forms.Control;
namespace Gs.DevApp.ToolBox
{
@@ -64,35 +68,35 @@
        /// <param name="meth">方法名称</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public static async Task<string> HttpPostAsync(string url, string meth, string param)
        {
            if (string.IsNullOrEmpty(url))
                url = WebApiUrl;
            url += meth;
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("token", GetBasicAuthTicket());
            request.Accept = "*/*";
            request.Timeout = 15000;
            request.AllowAutoRedirect = false;
            request.ServicePoint.Expect100Continue = false;
            HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
            request.CachePolicy = noCachePolicy;
            using (Stream requestStream = await request.GetRequestStreamAsync())
            {
                byte[] dataBytes = Encoding.UTF8.GetBytes(param);
                await requestStream.WriteAsync(dataBytes, 0, dataBytes.Length);
            }
        //public static async Task<string> HttpPostAsync(string url, string meth, string param)
        //{
        //    if (string.IsNullOrEmpty(url))
        //        url = WebApiUrl;
        //    url += meth;
        //    var request = (HttpWebRequest)WebRequest.Create(url);
        //    request.Method = "POST";
        //    request.ContentType = "application/json";
        //    request.Headers.Add("token", GetBasicAuthTicket());
        //    request.Accept = "*/*";
        //    request.Timeout = 15000;
        //    request.AllowAutoRedirect = false;
        //    request.ServicePoint.Expect100Continue = false;
        //    HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
        //    request.CachePolicy = noCachePolicy;
        //    using (Stream requestStream = await request.GetRequestStreamAsync())
        //    {
        //        byte[] dataBytes = Encoding.UTF8.GetBytes(param);
        //        await requestStream.WriteAsync(dataBytes, 0, dataBytes.Length);
        //    }
            using (WebResponse response = await request.GetResponseAsync())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    return await reader.ReadToEndAsync();
                }
            }
        }
        //    using (WebResponse response = await request.GetResponseAsync())
        //    {
        //        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        //        {
        //            return await reader.ReadToEndAsync();
        //        }
        //    }
        //}
        /// <summary>
        ///     httpPost访问服务
@@ -103,39 +107,52 @@
        /// <returns></returns>
        public static string HttpPost(string url, string meth, string param)
        {
            if (string.IsNullOrEmpty(url))
                url = WebApiUrl;
            url += meth;
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers.Add("token", GetBasicAuthTicket());
            request.Accept = "*/*";
            request.Timeout = 15000;
            request.AllowAutoRedirect = false;
            request.ServicePoint.Expect100Continue = false;
            HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
            request.CachePolicy = noCachePolicy;
            string _caption = "拼命加载中,请稍后...";
            DevExpress.Utils.WaitDialogForm wdf = new DevExpress.Utils.WaitDialogForm(_caption + meth, "友情提示");
            wdf.BackColor = System.Drawing.Color.LightSkyBlue;
            wdf.Padding = new Padding(15);
            HttpWebRequest request = null;
            StreamWriter requestStream = null;
            WebResponse response = null;
            string responseStr = null;
            try
            {
                if (string.IsNullOrEmpty(url))
                    url = WebApiUrl;
                url += meth;
                request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json";
                request.Headers.Add("token", GetBasicAuthTicket());
                request.Accept = "*/*";
                request.Timeout = 15000;
                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)
            {
                wdf.Close();
                LogHelper.Debug(url, param + ":" + ex.Message);
                throw ex;
            }
@@ -145,7 +162,8 @@
                requestStream = null;
                response = null;
            }
            wdf.SetCaption(_caption + "(90/100)");
            wdf.Close();
            return responseStr;
        }
@@ -193,7 +211,14 @@
        {
            var dt = new DataTable();
            foreach (GridColumn col in gv.Columns)
                dt.Columns.Add(col.FieldName, typeof(string));
            {
                if (col.UnboundDataType == typeof(System.Boolean))
                    dt.Columns.Add(col.FieldName, typeof(System.Boolean));
                else
                {
                    dt.Columns.Add(col.FieldName, typeof(string));
                }
            }
            gc.BindingContext = new BindingContext();
            gc.DataSource = dt;
            gc.ForceInitialize();
@@ -293,13 +318,16 @@
                {
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        if (colmn.Name.ToString().Contains("gvMxDel"))
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            colmn.Visible = !isEdt;
                            break;
                            //  colmn.Visible = !isEdt;
                            //  break;
                            colmn.OptionsColumn.AllowEdit = true;
                        }
                        else
                            colmn.OptionsColumn.AllowEdit = !isEdt;
                    }
                    gv.OptionsBehavior.Editable = !isEdt;
                    //gv.OptionsBehavior.Editable = !isEdt;
                }
            var _btnAry = controls.Find("btnSelect", false);
            if (_btnAry.Length > 0)
@@ -531,6 +559,51 @@
                                txt.Enabled = false;
                            continue;
                        }
                        //自定单位
                        if (colType is UcLookUnit)
                        {
                            var txt = colType as UcLookUnit;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定客户
                        if (colType is UcLookCustomer)
                        {
                            var txt = colType as UcLookCustomer;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定员工
                        if (colType is UcLookStaff)
                        {
                            var txt = colType as UcLookStaff;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        //自定组织
                        if (colType is UcLookOrg)
                        {
                            var txt = colType as UcLookOrg;
                            txt.SetIdOrCode(strVal);
                            if (txt.IsReadly == false)
                                txt.Enabled = !isEdt;
                            else
                                txt.Enabled = false;
                            continue;
                        }
                        if (colType is SimpleButton)
                        {
@@ -562,13 +635,16 @@
                {
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        if (colmn.Name.ToString().Contains("gvMxDel"))
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            colmn.Visible = !isEdt;
                            break;
                            //  colmn.Visible = !isEdt;
                            //  break;
                            colmn.OptionsColumn.AllowEdit = true;
                        }
                        else
                            colmn.OptionsColumn.AllowEdit = !isEdt;
                    }
                    gv.OptionsBehavior.Editable = !isEdt;
                    //gv.OptionsBehavior.Editable = !isEdt;
                }
            foreach (Control ctrl in controls)
            {
@@ -680,6 +756,38 @@
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定单位
                if (ctrl is UcLookUnit)
                {
                    var txt = ctrl as UcLookUnit;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定客户
                if (ctrl is UcLookCustomer)
                {
                    var txt = ctrl as UcLookCustomer;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定客户
                if (ctrl is UcLookStaff)
                {
                    var txt = ctrl as UcLookStaff;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                //自定组织
                if (ctrl is UcLookOrg)
                {
                    var txt = ctrl as UcLookOrg;
                    txt.SetIdOrCode("-1");
                    txt.Enabled = !isEdt;
                    continue;
                }
                if (ctrl is SimpleButton)
                {
                    var txt = ctrl as SimpleButton;
@@ -705,13 +813,16 @@
                {
                    foreach (GridColumn colmn in gv.Columns)
                    {
                        if (colmn.Name.ToString().Contains("gvMxDel"))
                        if (colmn.Name.ToString().Contains("gvMxDel") || colmn.Name.ToString().Contains("gvMxTui"))
                        {
                            colmn.Visible = !isEdt;
                            break;
                            //  colmn.Visible = !isEdt;
                            //  break;
                            colmn.OptionsColumn.AllowEdit = true;
                        }
                        else
                            colmn.OptionsColumn.AllowEdit = !isEdt;
                    }
                    gv.OptionsBehavior.Editable = !isEdt;
                    //gv.OptionsBehavior.Editable = !isEdt;
                }
            foreach (Control ctrl in controls)
            {
@@ -808,6 +919,46 @@
                if (ctrl is UcLookWorkline)
                {
                    var txt = ctrl as UcLookWorkline;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定义单位
                if (ctrl is UcLookUnit)
                {
                    var txt = ctrl as UcLookUnit;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定义客户
                if (ctrl is UcLookCustomer)
                {
                    var txt = ctrl as UcLookCustomer;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定义员工
                if (ctrl is UcLookStaff)
                {
                    var txt = ctrl as UcLookStaff;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
                        txt.Enabled = false;
                    continue;
                }
                //自定组织
                if (ctrl is UcLookOrg)
                {
                    var txt = ctrl as UcLookOrg;
                    if (txt.IsReadly == false)
                        txt.Enabled = !isEdt;
                    else
@@ -940,6 +1091,14 @@
                return 0;
            }
        }
        public static int ToBit(string str)
        {
            if (str.ToUpper() == "true".ToUpper())
                return 1;
            return 0;
        }
        /// <summary>
        /// 读取grid的当前行
        /// </summary>
@@ -1161,7 +1320,7 @@
                if (string.IsNullOrEmpty(filter.FilterString))
                    continue;
                //  fiList.Add(new FilterEntity("b.FNumber", "使用组织", " like ", "包含", "%" + filter.Value + "%"));
                string[] ddd = filter.FilterString.Replace("Contains","").Replace("(","").Replace(")","").Replace("'", "").Replace("'", "").Split(',');
                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()));
            }
@@ -1184,7 +1343,7 @@
                        _sbSqlWhere.Append(" and  org.FNumber " + itm.fileOper + "'" + itm.fileValue + "'");
                    else
                    {
                       _sbSqlWhere.Append(" and  org.NAME " + itm.fileOper + "'" + itm.fileValue.Trim() + "'");
                        _sbSqlWhere.Append(" and  org.NAME " + itm.fileOper + "'" + itm.fileValue.Trim() + "'");
                    }
                }
                else
@@ -1194,31 +1353,115 @@
            return _sbSqlWhere.ToString();
        }
        /// <summary>
        /// 初始化gridview
        ///
        /// </summary>
        /// <param name="gridView1"></param>
        public static void SetGridSear(GridView gridView1)
        /// <param name="gridView1">gridview</param>
        /// <param name="btnChkIco">图标按钮</param>
        /// <param name="fm">当前窗体</param>
        /// <param name="fileName">字段</param>
        /// <param name="icoName">图标路径</param>
        public static void SetGridSear(GridView gridView1, PictureBox btnChkIco = null, Form fm = null, string fileName = "checkStatus", string icoName = "")
        {
         //   gridView1.OptionsView.ColumnAutoWidth = false;自动调整列宽
            foreach (GridColumn column in gridView1.Columns)
            {
                column.OptionsFilter.AutoFilterCondition = AutoFilterCondition.Contains;
                column.OptionsFilter.ImmediateUpdateAutoFilter = false;
                column.OptionsColumn.AllowEdit = false;
                if (column.Tag==null || column.Tag.ToString().Length <= 0)
                // column.OptionsColumn.AllowEdit = false;
                if (column.Tag == null || column.Tag.ToString().Length <= 0)
                    column.OptionsFilter.AllowAutoFilter = false;
            }
            gridView1.OptionsFilter.AllowAutoFilterConditionChange = DevExpress.Utils.DefaultBoolean.False;
            gridView1.OptionsFilter.AllowFilterEditor = false;
            gridView1.OptionsFilter.ShowCustomFunctions = DevExpress.Utils.DefaultBoolean.False;
            gridView1.OptionsCustomization.AllowFilter = false;
            gridView1.OptionsFind.ShowSearchNavButtons = false;
            gridView1.OptionsView.ShowAutoFilterRow = true;
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.IndicatorWidth = 50;
            gridView1.CustomDrawRowIndicator += (s, e) =>
            {
                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
            };
            gridView1.CustomDrawEmptyForeground += (s, e) =>
            {
                var str = "暂未查找到匹配的数据!";
                var f = new Font("微软雅黑", 16);
                var r = new Rectangle(gridView1.GridControl.Width / 2 - 100,
                    e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5);
                e.Graphics.DrawString(str, f, Brushes.Gray, r);
            };
            if (btnChkIco != null)
            {
                gridView1.FocusedRowChanged += (s, e) =>
                {
                    UtilityHelper.SetCheckIco(s, btnChkIco, fm, fileName, icoName);
                };
            }
        }
        #endregion
        /// <summary>
        /// 设置明细grid样式
        /// </summary>
        /// <param name="gridView1"></param>
        /// <param name="btnChkIco"></param>
        /// <param name="fm"></param>
        /// <param name="fileName"></param>
        /// <param name="icoName"></param>
        public static void SetGridSearMx(GridView gridView1)
        {
            gridView1.OptionsFilter.AllowFilterEditor = false;
            gridView1.OptionsFilter.ShowCustomFunctions = DevExpress.Utils.DefaultBoolean.False;
            gridView1.OptionsCustomization.AllowFilter = false;
            gridView1.OptionsFind.ShowSearchNavButtons = false;
            gridView1.OptionsView.ShowAutoFilterRow = false;
            gridView1.OptionsView.ShowGroupPanel = false;
            gridView1.IndicatorWidth = 40;
            gridView1.CustomDrawRowIndicator += (s, e) =>
            {
                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
            };
            gridView1.CustomDrawEmptyForeground += (s, e) =>
            {
                var str = "暂无明细数据!";
                var f = new Font("微软雅黑", 16);
                var r = new Rectangle(gridView1.GridControl.Width / 2 - 100,
                    e.Bounds.Top + 45, e.Bounds.Right - 5, e.Bounds.Height - 5);
                e.Graphics.DrawString(str, f, Brushes.Gray, r);
            };
            gridView1.ValidatingEditor += (sender, e) =>
            {
                //yz_quantity_0
                GridView view = sender as GridView;
                if (view.FocusedColumn.Tag != null && view.FocusedColumn.Tag.ToString().StartsWith("yz_"))
                {
                    string[] _ary = view.FocusedColumn.Tag.ToString().Split('_');
                    if (_ary.Length > 2)
                    {
                        if (_ary[2] == "0")
                        {
                            double price = 0; if (!Double.TryParse(e.Value as String, out price))
                            { e.Valid = false; e.ErrorText = "请输入正确的数字."; }
                            return;
                        }
                    }
                }
            };
        }
        #endregion
        public static bool IsNumeric(string str)
        {
            Regex regex = new Regex("^[0-9]+$");
            return regex.IsMatch(str);
        }
    }
    /// <summary>