From ccc1b0d541d8f3bdd2bcb72dd0b5533e68b886d5 Mon Sep 17 00:00:00 2001
From: lu <99954486@qq.com>
Date: 星期一, 09 六月 2025 09:53:37 +0800
Subject: [PATCH] 采购明细报表

---
 DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs |  315 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 211 insertions(+), 104 deletions(-)

diff --git a/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs b/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
index 4102f34..0d5a642 100644
--- a/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
+++ b/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -1,6 +1,7 @@
 锘縰sing 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>
         /// 杞珿uid
@@ -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
@@ -2113,6 +2102,34 @@
                 return true;
             return false;
         }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄笉鏄竴涓湁鏁堢殑姝f暣鏁�
+        /// </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>
+        /// <param name="box2">txt_iCount_1:鏁村紶鏁板��</param>
+        /// <param name="sum">txt_kQty:鍙墦鍗伴噺</param>
+        /// <param name="rd"></param>
+        /// <param name="txt_yuliang">txt_yuliang:浣欓噺</param>
         public static void PrintJiSuan(DevExpress.XtraEditors.TextEdit box1, DevExpress.XtraEditors.TextEdit box2, string sum, DevExpress.XtraEditors.RadioGroup rd, DevExpress.XtraEditors.TextEdit txt_yuliang = null)
         {
             if (rd.SelectedIndex == 2)
@@ -2123,25 +2140,27 @@
                 string t2 = box2.Text.Trim();
                 if (!Gs.DevApp.ToolBox.UtilityHelper.IsNumeric2(t1))
                     return;
+                if (Gs.DevApp.ToolBox.UtilityHelper.ToDecimal(t1) <= 0)
+                    return;
                 decimal? dc = Gs.DevApp.ToolBox.UtilityHelper.GetDecimal(sum);
                 decimal? dc1 = Gs.DevApp.ToolBox.UtilityHelper.GetDecimal(t1);
+                decimal dividend = decimal.Parse(sum); // 琚櫎鏁�
+                decimal divisor = decimal.Parse(t1);   // 闄ゆ暟
+                decimal shang = dividend / divisor;
 
-                int dividend = int.Parse(sum); // 琚櫎鏁�
-                int divisor = int.Parse(t1);   // 闄ゆ暟
+                decimal integerPart = Math.Truncate(shang); // 鑾峰彇鏁存暟閮ㄥ垎
+                decimal decimalPart = dividend - divisor * integerPart; // 鑾峰彇灏忔暟閮ㄥ垎
 
-                int quotient = dividend / divisor; // 鏁存暟閮ㄥ垎
-                int remainder = dividend % divisor; // 浣欐暟
-
-                box2.Text = quotient.ToString();
-
+                //decimal quotient = dividend / divisor; // 鏁存暟閮ㄥ垎
+                //decimal remainder = dividend % divisor; // 浣欐暟
+                box2.Text = integerPart.ToString();
                 if (rd.SelectedIndex == 0)
-                    txt_yuliang.Text = remainder.ToString();
+                    txt_yuliang.Text = decimalPart.ToString();
             }
             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)
         {
@@ -2153,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>
         /// 缁樺埗琛ㄥご鍏ㄩ�夊嬀閫夋

--
Gitblit v1.9.3