From 475eadcff3012b2b54d22174e0970f9d24cfa6b4 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期五, 12 九月 2025 17:30:30 +0800
Subject: [PATCH] 1111
---
DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs | 997 ++++-----------------------------------------------------
1 files changed, 80 insertions(+), 917 deletions(-)
diff --git a/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs b/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
index abed60c..1daefa8 100644
--- a/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
+++ b/DevApp/Gs.DevApp/ToolBox/UtilityHelper.cs
@@ -55,20 +55,24 @@
/// <summary>
/// http璇锋眰
/// </summary>
- /// <param name="url"></param>
- /// <param name="meth"></param>
- /// <param name="param"></param>
- /// <param name="isLoading"></param>
+ /// <param name="url">api鏍瑰湴鍧�</param>
+ /// <param name="meth">鏂规硶鍚嶇О</param>
+ /// <param name="param">json鍙傛暟</param>
+ /// <param name="isLoading">鏄惁loading</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();
- DevExpress.Utils.WaitDialogForm wdf = new DevExpress.Utils.WaitDialogForm("鍔犺浇杩涘害:" + meth, _caption, _size);
- wdf.BackColor = _color;
- wdf.Padding = _pad;
- wdf.SetCaption("鍔犺浇杩涘害:" + meth);
- wdf.Visible = isLoading;
+ DevExpress.Utils.WaitDialogForm wdf = null;
+ if (isLoading == true)
+ {
+ Size _size; string _caption; Color _color; Padding _pad;
+ (_size, _caption, _color, _pad) = getLoading();
+ wdf = new DevExpress.Utils.WaitDialogForm("鍔犺浇杩涘害:" + meth, _caption, _size);
+ wdf.BackColor = _color;
+ wdf.Padding = _pad;
+ wdf.SetCaption("鍔犺浇杩涘害:" + meth);
+ wdf.Visible = isLoading;
+ }
HttpWebRequest request = null;
StreamWriter requestStream = null;
WebResponse response = null;
@@ -103,7 +107,8 @@
}
catch (Exception ex)
{
- wdf.Close();
+ if (wdf != null)
+ wdf.Close();
LogHelper.Debug(url, param + ":" + ex.Message);
throw ex;
}
@@ -113,7 +118,8 @@
requestStream = null;
response = null;
}
- wdf.Close();
+ if (wdf != null)
+ wdf.Close();
return responseStr;
}
@@ -274,7 +280,7 @@
{
colmn.Visible = !isEdt;
if (colmn.Visible == true)
- colmn.VisibleIndex = 1;
+ colmn.VisibleIndex = 99999;
}
else
{
@@ -454,6 +460,15 @@
txt.Enabled = !isEdt;
continue;
}
+ //澶氶��
+ if (colType is RadioGroup)
+ {
+ var txt = colType as RadioGroup;
+ if (txt != null)
+ txt.SelectedIndex = int.Parse(strVal);
+ txt.ReadOnly = isEdt;
+ continue;
+ }
//鏃堕棿
if (colType is DateTimePicker)
{
@@ -546,13 +561,6 @@
if (colType is UcLookOrg)
{
var txt = colType as UcLookOrg;
- txt.SetIdOrCode(strVal);
- txt.IsReadly = isEdt;
- continue;
- }
- if (colType is UcLookKw)
- {
- var txt = colType as UcLookKw;
txt.SetIdOrCode(strVal);
txt.IsReadly = isEdt;
continue;
@@ -755,6 +763,15 @@
txt.ReadOnly = isEdt;
continue;
}
+ //澶氶��
+ if (ctrl is RadioGroup)
+ {
+ var txt = ctrl as RadioGroup;
+ if (txt != null)
+ txt.SelectedIndex = 0;
+ txt.ReadOnly = isEdt;
+ continue;
+ }
//鏃堕棿
if (ctrl is DateTimePicker)
{
@@ -778,6 +795,7 @@
}
else
txt.ReadOnly = isEdt;
+ txt.Checked = false;
continue;
}
//鑷畾涔変粨搴�
@@ -917,14 +935,6 @@
txt.IsReadly = isEdt;
continue;
}
- //
- if (ctrl is UcLookKw)
- {
- var txt = ctrl as UcLookKw;
- txt.SetIdOrCode("-1");
- txt.IsReadly = isEdt;
- continue;
- }
//鑷畾涔夊崟鎹被鍨嬩笅鎷�
if (ctrl is UcDictionaryComBox)
{
@@ -1023,6 +1033,13 @@
txt.ReadOnly = isEdt;
continue;
}
+ //澶氶��
+ if (ctrl is RadioGroup)
+ {
+ var txt = ctrl as RadioGroup;
+ txt.ReadOnly = isEdt;
+ continue;
+ }
//鏃ユ湡
if (ctrl is DateTimePicker)
{
@@ -1045,13 +1062,6 @@
if (ctrl is UcLookCk)
{
var txt = ctrl as UcLookCk;
- txt.IsReadly = isEdt;
- continue;
- }
- //鑷畾涔変粨搴�
- if (ctrl is UcLookKw)
- {
- var txt = ctrl as UcLookKw;
txt.IsReadly = isEdt;
continue;
}
@@ -1700,6 +1710,7 @@
}
public delegate void DelegateGetModel(string guid);
public delegate void DelegateGetList(int currentPage);
+
/// <summary>
///
/// </summary>
@@ -1711,7 +1722,7 @@
/// <param name="action">濮旀墭1</param>
/// <param name="tips">楦熷槾鎻愮ず</param>
/// <param name="isPostSearch"></param>
- /// <param name="action2">濮旀墭2锛堝垪琛ㄦ樉绀烘槑缁嗭級</param>
+ /// <param name="action2">濮旀墭2</param>
public static void SetGridViewParameter(GridView gridView1, PictureBox picCheckBox = null, Form fm = null, string fileName = "checkStatus", string icoName = "", DelegateGetModel action = null, DevExpress.Utils.ToolTipController tips = null, bool isPostSearch = true, DelegateGetModel action2 = null)
{
gridView1.PopupMenuShowing += (s, e) =>
@@ -1926,15 +1937,15 @@
edit.SelectAll();
}
- public static void SetGridLayout(GridView gridView1)
+ public static void SetGridLayout(GridView gridView1,int maxWidth=500)
{
foreach (GridColumn column in gridView1.Columns)
{
- if (column.Width > 500)
- column.Width = 500;
+ if (column.Width > maxWidth)
+ column.Width = maxWidth;
}
}
-
+
/// <summary>
/// 璁剧疆閫夐」鍗�
/// </summary>
@@ -2107,7 +2118,20 @@
}
}
+
+ /// <summary>
+ /// 鏁版嵁杩囨护
+ /// </summary>
+ /// <returns></returns>
+ public static string GetOrgWhere()
+ {
+ System.Text.StringBuilder sb = new System.Text.StringBuilder();
+ sb.Append(" (select aboutGuid as fid from SYS_USER_BIND where userGuid='" + LoginInfoModel.CurrentUser.LoginUserGuid + "' and ftype='缁勭粐')");
+ return sb.ToString();
+ }
#endregion
+
+
/// <summary>
/// 鍒ゆ柇鏄笉鏄竴涓湁鏁堢殑鏁板��
/// </summary>
@@ -2215,8 +2239,6 @@
txt_iCount_1.ReadOnly = true;
}
-
-
#region 鑷畾涔夎繘搴︽潯鍒�
/// <summary>
@@ -2311,7 +2333,6 @@
// private GridColumn checkBoxColumn = null;
public static void CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
{
-
Rectangle checkBoxColumnHeaderRect = new Rectangle(51, 1, 37, 57);
if (e.Column != null && e.Column.AbsoluteIndex == 0)
{
@@ -2335,13 +2356,6 @@
}
}
- /// <summary>
- /// gridview 鍏ㄩ�夛紝鍙栨秷鍏ㄩ��
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- /// <param name="gcMain"></param>
- /// <param name="gridView1"></param>
public static void CustomMouseUp(object sender, MouseEventArgs e, DevExpress.XtraGrid.GridControl gcMain, DevExpress.XtraGrid.Views.Grid.GridView gridView1)
{
GridColumn checkBoxColumn = gridView1.Columns[0];
@@ -2368,7 +2382,6 @@
// row["chkInt"] = true;
//}
/********2025-07-23淇ˉ杩囨护bug 鏁呮敞閲� end ************/
-
/********2025-07-23淇ˉ杩囨护bug beg ************/
System.Collections.IList ftRow = gridView1.DataController.GetAllFilteredAndSortedRows();
System.Collections.ArrayList ftAry = new System.Collections.ArrayList();
@@ -2396,7 +2409,6 @@
}
#endregion
-
//璇诲彇榛樿缁勭粐
public static string GetFirstOrg(UserControl.UcLookOrg txt_erpSczz)
{
@@ -2421,867 +2433,6 @@
return "";
}
}
-
- #region GridView姹囨�婚厤缃伐鍏锋柟娉�
- /// <summary>
- /// 2025-08-14 kyy 蹇�熼厤缃瓽ridView搴曢儴姹囨�伙紙鍚敤姹囨�昏+璁剧疆鍒楁眰鍜屾眹鎬伙級
- /// </summary>
- /// <param name="gridView">鐩爣GridView鎺т欢</param>
- /// <param name="summaryColumns">闇�瑕佽繘琛屾眰鍜屾眹鎬荤殑鍒楀悕鏁扮粍</param>
- public static void SetupGridSummary(DevExpress.XtraGrid.Views.Grid.GridView gridView, params string[] summaryColumns)
- {
- // 鍚敤搴曢儴姹囨�昏
- gridView.OptionsView.ShowFooter = true;
-
- // 涓烘瘡涓寚瀹氬垪璁剧疆姹傚拰姹囨��
- foreach (var columnName in summaryColumns)
- {
- // 楠岃瘉鍒楁槸鍚﹀瓨鍦紙閬垮厤寮傚父锛�
- if (gridView.Columns[columnName] != null)
- {
- gridView.Columns[columnName].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
- gridView.Columns[columnName].SummaryItem.DisplayFormat = "鍚堣: {0}";
- }
- }
- }
-
- /// <summary>
- /// 2025-08-15 kyy 蹇�熼厤缃瓽ridView鏉′欢姹囨�伙紙鍙眹鎬绘弧瓒虫潯浠剁殑琛岋級
- /// 浣跨敤绠�鍗曠殑鏍囩鏄剧ず鏂瑰紡锛岄伩鍏嶅鏉傜殑姹囨�婚」閰嶇疆
- /// </summary>
- /// <param name="gridView">鐩爣GridView鎺т欢</param>
- /// <param name="conditionFieldName">鏉′欢瀛楁鍚嶏紙濡俢hkInt锛�</param>
- /// <param name="conditionValue">鏉′欢鍊硷紙濡倀rue銆�1绛夎〃绀洪�変腑锛�</param>
- /// <param name="summaryColumns">闇�瑕佽繘琛屾眰鍜屾眹鎬荤殑鍒楀悕鏁扮粍</param>
- public static void SetupGridSummaryWithCondition(DevExpress.XtraGrid.Views.Grid.GridView gridView, string conditionFieldName, object conditionValue, params string[] summaryColumns)
- {
- // 鍚敤搴曢儴姹囨�昏
- gridView.OptionsView.ShowFooter = true;
-
- // 瀛樺偍鏉′欢姹囨�婚厤缃埌GridView鐨凾ag涓�
- var conditionSummaryConfig = new
- {
- ConditionField = conditionFieldName,
- ConditionValue = conditionValue,
- SummaryColumns = summaryColumns
- };
-
- // 灏嗛厤缃瓨鍌ㄥ埌GridView鐨凾ag涓紙濡傛灉宸叉湁鍏朵粬Tag锛岄渶瑕佸悎骞讹級
- if (gridView.Tag == null)
- {
- gridView.Tag = conditionSummaryConfig;
- }
- else
- {
- // 濡傛灉宸叉湁Tag锛屽垱寤轰竴涓鍚堝璞�
- gridView.Tag = new { Existing = gridView.Tag, ConditionSummary = conditionSummaryConfig };
- }
-
- // 涓烘瘡涓寚瀹氬垪璁剧疆鑷畾涔夋眹鎬昏绠�
- foreach (var columnName in summaryColumns)
- {
- if (gridView.Columns[columnName] != null)
- {
- // 浣跨敤鏍囧噯鐨勬眰鍜屾眹鎬伙紝浣嗘樉绀鸿嚜瀹氫箟鏍煎紡
- gridView.Columns[columnName].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
- gridView.Columns[columnName].SummaryItem.DisplayFormat = "閫変腑鍚堣: {0}";
- }
- }
-
- // 缁戝畾鏁版嵁鍙樺寲浜嬩欢锛屾墜鍔ㄨ绠楁潯浠舵眹鎬�
- gridView.CustomDrawFooterCell -= GridView_CustomDrawFooterForCondition;
- gridView.CustomDrawFooterCell += GridView_CustomDrawFooterForCondition;
- }
-
- /// <summary>
- /// 鑷畾涔夌粯鍒堕〉鑴氬崟鍏冩牸锛屾樉绀烘潯浠舵眹鎬荤粨鏋�
- /// </summary>
- private static void GridView_CustomDrawFooterForCondition(object sender, DevExpress.XtraGrid.Views.Grid.FooterCellCustomDrawEventArgs e)
- {
- var gridView = sender as DevExpress.XtraGrid.Views.Grid.GridView;
- if (gridView?.Tag == null) return;
-
- try
- {
- // 鑾峰彇鏉′欢姹囨�婚厤缃�
- dynamic config = GetConditionSummaryConfig(gridView.Tag);
- if (config == null) return;
-
- string conditionField = config.ConditionField;
- object conditionValue = config.ConditionValue;
- string[] summaryColumns = config.SummaryColumns;
-
- // 妫�鏌ュ綋鍓嶅垪鏄惁闇�瑕佹潯浠舵眹鎬�
- if (summaryColumns != null && Array.IndexOf(summaryColumns, e.Column.FieldName) >= 0)
- {
- // 璁$畻鏉′欢姹囨�诲��
- decimal totalValue = CalculateConditionalSum(gridView, conditionField, conditionValue, e.Column.FieldName);
-
- // 璁剧疆鏄剧ず鏂囨湰
- e.Info.DisplayText = $"{totalValue:F2}";
-
- // 鍙互鑷畾涔夋樉绀烘牱寮�
- e.Appearance.ForeColor = System.Drawing.Color.Blue;
- e.Appearance.Font = new System.Drawing.Font(e.Appearance.Font, System.Drawing.FontStyle.Bold);
- }
- }
- catch (Exception ex)
- {
- System.Diagnostics.Debug.WriteLine($"鏉′欢姹囨�荤粯鍒堕敊璇�: {ex.Message}");
- }
- }
-
- /// <summary>
- /// 鑾峰彇鏉′欢姹囨�婚厤缃�
- /// </summary>
- private static dynamic GetConditionSummaryConfig(object tag)
- {
- if (tag == null) return null;
-
- // 妫�鏌ユ槸鍚︽槸鐩存帴鐨勯厤缃璞�
- var tagType = tag.GetType();
- if (tagType.GetProperty("ConditionField") != null)
- {
- return tag;
- }
-
- // 妫�鏌ユ槸鍚︽槸澶嶅悎瀵硅薄
- if (tagType.GetProperty("ConditionSummary") != null)
- {
- dynamic composite = tag;
- return composite.ConditionSummary;
- }
-
- return null;
- }
-
- /// <summary>
- /// 璁$畻鏉′欢姹囨�诲��
- /// </summary>
- private static decimal CalculateConditionalSum(DevExpress.XtraGrid.Views.Grid.GridView gridView, string conditionField, object conditionValue, string summaryField)
- {
- decimal total = 0;
-
- try
- {
- // 閬嶅巻鎵�鏈夊彲瑙佽
- for (int i = 0; i < gridView.DataRowCount; i++)
- {
- // 鑾峰彇鏉′欢瀛楁鍊�
- object conditionFieldValue = gridView.GetRowCellValue(i, conditionField);
-
- // 妫�鏌ユ潯浠舵槸鍚﹀尮閰�
- if (IsConditionMatched(conditionFieldValue, conditionValue))
- {
- // 鑾峰彇姹囨�诲瓧娈靛��
- object summaryFieldValue = gridView.GetRowCellValue(i, summaryField);
-
- // 绱姞鏁板��
- if (summaryFieldValue != null && decimal.TryParse(summaryFieldValue.ToString(), out decimal value))
- {
- total += value;
- }
- }
- }
- }
- catch (Exception ex)
- {
- System.Diagnostics.Debug.WriteLine($"鏉′欢姹囨�昏绠楅敊璇�: {ex.Message}");
- }
-
- return Math.Round(total, 2);
- }
-
- /// <summary>
- /// 鎵嬪姩鍒锋柊鏉′欢姹囨�绘樉绀� - 浼樺寲鐗堟湰锛岀珛鍗崇敓鏁�
- /// </summary>
- public static void RefreshConditionalSummary(DevExpress.XtraGrid.Views.Grid.GridView gridView)
- {
- try
- {
- if (gridView != null)
- {
- // 鍏堝埛鏂版暟鎹粦瀹�
- gridView.PostEditor();
- gridView.UpdateCurrentRow();
-
- // 寮哄埗閲嶇粯搴曢儴姹囨�诲尯鍩�
- gridView.InvalidateFooter();
-
- // 绔嬪嵆鍒锋柊甯冨眬
- gridView.LayoutChanged();
-
- // 寮哄埗閲嶇粯鏁翠釜瑙嗗浘
- gridView.Invalidate();
-
- // 纭繚鐣岄潰绔嬪嵆鏇存柊
- System.Windows.Forms.Application.DoEvents();
- }
- }
- catch (Exception ex)
- {
- System.Diagnostics.Debug.WriteLine($"鍒锋柊鏉′欢姹囨�婚敊璇�: {ex.Message}");
- }
- }
-
- /// <summary>
- /// 鍒ゆ柇鏉′欢鏄惁鍖归厤锛堢敤浜庢眹鎬伙級
- /// </summary>
- private static bool IsConditionMatched(object fieldValue, object targetValue)
- {
- if (fieldValue == null && targetValue == null) return true;
- if (fieldValue == null || targetValue == null) return false;
-
- string fieldStr = fieldValue.ToString().Trim();
- string targetStr = targetValue.ToString().Trim();
-
- // 澶勭悊甯冨皵鍊肩被鍨嬬殑鍖归厤
- if (IsBooleanValue(fieldStr) || IsBooleanValue(targetStr))
- {
- bool fieldBool = ConvertToBoolean(fieldStr);
- bool targetBool = ConvertToBoolean(targetStr);
- return fieldBool == targetBool;
- }
-
- // 澶勭悊鏁板�肩被鍨嬬殑鍖归厤
- if (decimal.TryParse(fieldStr, out decimal fieldNum) && decimal.TryParse(targetStr, out decimal targetNum))
- {
- return fieldNum == targetNum;
- }
-
- // 瀛楃涓插尮閰�
- return string.Equals(fieldStr, targetStr, StringComparison.OrdinalIgnoreCase);
- }
-
- /// <summary>
- /// 妫�鏌ユ槸鍚︿负甯冨皵鍊�
- /// </summary>
- private static bool IsBooleanValue(string value)
- {
- if (string.IsNullOrEmpty(value)) return false;
- string lower = value.ToLower();
- return lower == "true" || lower == "false" || lower == "1" || lower == "0";
- }
-
- /// <summary>
- /// 杞崲涓哄竷灏斿��
- /// </summary>
- private static bool ConvertToBoolean(string value)
- {
- if (string.IsNullOrEmpty(value)) return false;
- string lower = value.ToLower();
- return lower == "true" || lower == "1";
- }
- #endregion
-
- #region 绠�鍖栫増GridView棰滆壊璁剧疆鏂规硶 - 鍒涘缓鏃堕棿锛�2024骞�8鏈�15鏃� 鍒朵綔浜猴細kyy
-
- /// <summary>
- /// 涓�琛屼唬鐮佽缃瓽ridView棰滆壊鐨勬柟娉�
- /// 鍒涘缓鏃堕棿锛�2024骞�8鏈�15鏃� 鍒朵綔浜猴細kyy
- /// 浣跨敤绀轰緥锛�
- /// SetSimpleGridColor(gridView1, "checkStatus", "=1", "Cell", Color.Blue);
- /// SetSimpleGridColor(gridView1, "jyjg", "contains鍚堟牸", "Cell", Color.Green);
- /// SetSimpleGridColor(gridView1, "status", "=宸插鏍�", "Row", Color.Blue);
- /// SetSimpleGridColor(gridView1, "", "quantity-okRkqty>100", "Row", Color.Red); // 瀛楁杩愮畻琛ㄨ揪寮�
- /// </summary>
- /// <param name="gridView">GridView鎺т欢</param>
- /// <param name="fieldName">瀛楁鍚嶏紙杩愮畻琛ㄨ揪寮忔椂鍙负绌哄瓧绗︿覆锛�</param>
- /// <param name="condition">鏉′欢锛堟敮鎸�: =1, contains鍚堟牸, >5, >=10, 鎴栧瓧娈佃繍绠楀 fieldA+fieldB>100锛�</param>
- /// <param name="scope">鑼冨洿锛圕ell/鍗曞厓鏍�, Row/琛�, Column/鍒楋級</param>
- /// <param name="color">棰滆壊</param>
- public static void SetSimpleGridColor(GridView gridView, string fieldName, string condition, string scope, Color color)
- {
- if (gridView == null || string.IsNullOrEmpty(condition))
- return;
-
- // 妫�鏌ユ槸鍚︿负杩愮畻琛ㄨ揪寮�
- bool isCalculationExpression = IsCalculationExpression(condition);
-
- // 濡傛灉鏄繍绠楄〃杈惧紡浣嗘病鏈夋寚瀹歠ieldName锛宖ieldName璁句负绌�
- if (isCalculationExpression && string.IsNullOrEmpty(fieldName))
- {
- fieldName = ""; // 杩愮畻琛ㄨ揪寮忎笉闇�瑕佺壒瀹氬瓧娈靛悕
- }
- else if (!isCalculationExpression && string.IsNullOrEmpty(fieldName))
- {
- return; // 鏅�氭潯浠跺繀椤绘寚瀹氬瓧娈靛悕
- }
-
- // 绉婚櫎涔嬪墠鍙兘缁戝畾鐨勪簨浠讹紙閬垮厤閲嶅缁戝畾锛�
- gridView.RowCellStyle -= SimpleGridColor_RowCellStyle;
-
- // 鍒涘缓绠�鍗曠殑棰滆壊閰嶇疆骞跺瓨鍌ㄥ埌Tag
- var colorConfigs = gridView.Tag as List<SimpleColorConfig> ?? new List<SimpleColorConfig>();
-
- // 娣诲姞鏂伴厤缃�
- colorConfigs.Add(new SimpleColorConfig
- {
- FieldName = fieldName,
- Condition = condition,
- Scope = scope,
- Color = color
- });
-
- gridView.Tag = colorConfigs;
-
- // 缁戝畾棰滆壊璁剧疆浜嬩欢
- gridView.RowCellStyle += SimpleGridColor_RowCellStyle;
- }
-
- /// <summary>
- /// 绠�鍗曢鑹查厤缃被
- /// </summary>
- private class SimpleColorConfig
- {
- public string FieldName { get; set; }
- public string Condition { get; set; }
- public string Scope { get; set; }
- public Color Color { get; set; }
- }
-
- /// <summary>
- /// 绠�鍖栫殑棰滆壊璁剧疆浜嬩欢澶勭悊
- /// </summary>
- private static void SimpleGridColor_RowCellStyle(object sender, RowCellStyleEventArgs e)
- {
- var gridView = sender as GridView;
- if (gridView?.Tag is List<SimpleColorConfig> configs)
- {
- foreach (var config in configs)
- {
- // 鍒ゆ柇鏄惁搴旇搴旂敤棰滆壊
- bool shouldApply = false;
-
- // 妫�鏌ユ槸鍚︿负杩愮畻琛ㄨ揪寮�
- bool isCalculationExpression = IsCalculationExpression(config.Condition);
-
- if (isCalculationExpression)
- {
- // 杩愮畻琛ㄨ揪寮忔牴鎹寖鍥村喅瀹氭槸鍚﹀簲鐢�
- if (config.Scope.ToLower() == "row")
- shouldApply = true; // 鏁磋搴旂敤
- else if (config.Scope.ToLower() == "cell")
- shouldApply = true; // 鎵�鏈夊崟鍏冩牸閮藉皾璇曞簲鐢�
- else if (config.Scope.ToLower() == "column")
- shouldApply = true; // 鎵�鏈夊垪閮藉皾璇曞簲鐢�
- }
- else
- {
- // 鏅�氬瓧娈垫潯浠�
- if (config.Scope.ToLower() == "cell" && e.Column.FieldName == config.FieldName)
- shouldApply = true;
- else if (config.Scope.ToLower() == "row")
- shouldApply = true;
- else if (config.Scope.ToLower() == "column" && e.Column.FieldName == config.FieldName)
- shouldApply = true;
- }
-
- if (!shouldApply) continue;
-
- bool conditionMatched = false;
-
- if (isCalculationExpression)
- {
- // 澶勭悊瀛楁杩愮畻琛ㄨ揪寮�
- try
- {
- decimal result = EvaluateExpression(gridView, e.RowHandle, config.Condition);
- conditionMatched = result == 1; // 1琛ㄧず鏉′欢婊¤冻锛�0琛ㄧず涓嶆弧瓒�
-
- if (conditionMatched)
- {
- System.Diagnostics.Debug.WriteLine($"杩愮畻琛ㄨ揪寮忓尮閰嶆垚鍔� - 琛ㄨ揪寮�: {config.Condition}, 琛�: {e.RowHandle}");
- }
- }
- catch (Exception ex)
- {
- System.Diagnostics.Debug.WriteLine($"杩愮畻琛ㄨ揪寮忚绠楀け璐� - 琛ㄨ揪寮�: {config.Condition}, 閿欒: {ex.Message}");
- }
- }
- else
- {
- // 澶勭悊鍗曞瓧娈垫潯浠�
- object cellValue = gridView.GetRowCellValue(e.RowHandle, config.FieldName);
- if (cellValue != null)
- {
- string stringValue = cellValue.ToString().Trim();
-
- // 璋冭瘯淇℃伅锛氳緭鍑哄疄闄呯殑瀛楁鍊�
- if (config.FieldName == "checkStatus" && e.RowHandle < 3) // 鍙緭鍑哄墠鍑犺閬垮厤澶鏃ュ織
- {
- System.Diagnostics.Debug.WriteLine($"瀛楁鍊艰皟璇� - 瀛楁: {config.FieldName}, 瀹為檯鍊�: '{stringValue}', 绫诲瀷: {cellValue.GetType().Name}, 鏉′欢: {config.Condition}");
- }
-
- // 鍒ゆ柇鏉′欢鏄惁鍖归厤
- conditionMatched = IsConditionMatch(stringValue, config.Condition);
- }
- }
-
- if (conditionMatched)
- {
- e.Appearance.ForeColor = config.Color;
- System.Diagnostics.Debug.WriteLine($"棰滆壊鍖归厤鎴愬姛 - 瀛楁/琛ㄨ揪寮�: {config.FieldName ?? config.Condition}, 鏉′欢: {config.Condition}");
- break; // 鍖归厤鍒扮涓�涓潯浠跺氨鍋滄
- }
- }
- }
- }
-
- /// <summary>
- /// 妫�鏌ユ槸鍚︿负璁$畻琛ㄨ揪寮忥紙鍖呭惈瀛楁杩愮畻锛�
- /// </summary>
- private static bool IsCalculationExpression(string condition)
- {
- if (string.IsNullOrEmpty(condition))
- return false;
-
- // 妫�鏌ユ槸鍚﹀寘鍚暟瀛﹁繍绠楃鍜屾瘮杈冭繍绠楃鐨勭粍鍚�
- char[] mathOperators = { '+', '-', '*', '/' };
- string[] comparisonOperators = { ">=", "<=", ">", "<", "=", "!=" };
-
- bool hasMathOperator = condition.IndexOfAny(mathOperators) >= 0;
- bool hasComparisonOperator = comparisonOperators.Any(op => condition.Contains(op));
-
- // 濡傛灉鍚屾椂鍖呭惈鏁板杩愮畻绗﹀拰姣旇緝杩愮畻绗︼紝灏辫涓烘槸璁$畻琛ㄨ揪寮�
- return hasMathOperator && hasComparisonOperator;
- }
-
- /// <summary>
- /// 鍒ゆ柇鏉′欢鏄惁鍖归厤
- /// </summary>
- private static bool IsConditionMatch(string value, string condition)
- {
- if (string.IsNullOrEmpty(value) || string.IsNullOrEmpty(condition))
- return false;
-
- condition = condition.Trim();
- value = value.Trim();
-
- // 澶勭悊contains鏉′欢
- if (condition.StartsWith("contains", StringComparison.OrdinalIgnoreCase))
- {
- string matchText = condition.Substring(8).Trim();
-
- // 绉婚櫎鍓嶇紑澶勭悊锛堝"M:鍏嶆"涓殑"M:"锛�
- string processedValue = value;
- int colonIndex = processedValue.IndexOf(':');
- if (colonIndex >= 0 && colonIndex < processedValue.Length - 1)
- {
- processedValue = processedValue.Substring(colonIndex + 1).Trim();
- }
-
- return processedValue.IndexOf(matchText, StringComparison.OrdinalIgnoreCase) >= 0;
- }
-
- // 澶勭悊绛変簬鏉′欢
- if (condition.StartsWith("="))
- {
- string targetValue = condition.Substring(1).Trim();
-
- // 鐗规畩澶勭悊bit绫诲瀷瀛楁锛圔oolean鍊硷級
- if (IsBooleanCondition(targetValue))
- {
- return IsBooleanMatch(value, targetValue);
- }
-
- return string.Equals(value, targetValue, StringComparison.OrdinalIgnoreCase);
- }
-
- // 澶勭悊鏁板�兼瘮杈冩潯浠�
- if (decimal.TryParse(value, out decimal numericValue))
- {
- if (condition.StartsWith(">="))
- {
- if (decimal.TryParse(condition.Substring(2).Trim(), out decimal target))
- return numericValue >= target;
- }
- else if (condition.StartsWith("<="))
- {
- if (decimal.TryParse(condition.Substring(2).Trim(), out decimal target))
- return numericValue <= target;
- }
- else if (condition.StartsWith(">"))
- {
- if (decimal.TryParse(condition.Substring(1).Trim(), out decimal target))
- return numericValue > target;
- }
- else if (condition.StartsWith("<"))
- {
- if (decimal.TryParse(condition.Substring(1).Trim(), out decimal target))
- return numericValue < target;
- }
- else if (decimal.TryParse(condition, out decimal target))
- {
- return numericValue == target;
- }
- }
-
- // 妫�鏌ユ槸鍚︽槸甯冨皵鍊兼潯浠�
- if (IsBooleanCondition(condition))
- {
- return IsBooleanMatch(value, condition);
- }
-
- // 榛樿鎸夊瓧绗︿覆鐩哥瓑澶勭悊
- return string.Equals(value, condition, StringComparison.OrdinalIgnoreCase);
- }
-
- /// <summary>
- /// 鍒ゆ柇澶氬瓧娈佃繍绠楁潯浠舵槸鍚﹀尮閰嶏紙鏀寔瀛楁闂磋繍绠楋級
- /// </summary>
- private static bool IsConditionMatchWithCalculation(GridView gridView, int rowHandle, string condition)
- {
- if (string.IsNullOrEmpty(condition))
- return false;
-
- condition = condition.Trim();
-
- try
- {
- // 瑙f瀽骞惰绠楄〃杈惧紡
- decimal calculatedValue = EvaluateExpression(gridView, rowHandle, condition);
-
- // 濡傛灉琛ㄨ揪寮忚绠楁垚鍔燂紝杩斿洖true锛堣〃绀烘潯浠舵弧瓒筹級
- return true;
- }
- catch
- {
- // 濡傛灉璁$畻澶辫触锛岃繑鍥瀎alse
- return false;
- }
- }
-
- /// <summary>
- /// 璁$畻鍖呭惈瀛楁鍚嶇殑琛ㄨ揪寮�
- /// 鏀寔鏍煎紡锛歠ieldA+fieldB>100, fieldA-fieldB<=50, fieldA*fieldB>=fieldC绛�
- /// </summary>
- private static decimal EvaluateExpression(GridView gridView, int rowHandle, string expression)
- {
- // 鎻愬彇姣旇緝杩愮畻绗﹀拰鐩爣鍊�
- string[] operators = { ">=", "<=", ">", "<", "=", "!=" };
- string op = "";
- string leftExpression = "";
- string rightExpression = "";
-
- foreach (var oper in operators)
- {
- if (expression.Contains(oper))
- {
- string[] parts = expression.Split(new string[] { oper }, StringSplitOptions.None);
- if (parts.Length == 2)
- {
- op = oper;
- leftExpression = parts[0].Trim();
- rightExpression = parts[1].Trim();
- break;
- }
- }
- }
-
- if (string.IsNullOrEmpty(op))
- throw new ArgumentException("鏃犳晥鐨勮〃杈惧紡鏍煎紡");
-
- // 璁$畻宸︿晶琛ㄨ揪寮忕殑鍊�
- decimal leftValue = CalculateFieldExpression(gridView, rowHandle, leftExpression);
-
- // 璁$畻鍙充晶琛ㄨ揪寮忕殑鍊硷紙鍙兘鏄暟瀛楁垨瀛楁琛ㄨ揪寮忥級
- decimal rightValue;
- if (decimal.TryParse(rightExpression, out rightValue))
- {
- // 鍙充晶鏄暟瀛�
- }
- else
- {
- // 鍙充晶鏄瓧娈佃〃杈惧紡
- rightValue = CalculateFieldExpression(gridView, rowHandle, rightExpression);
- }
-
- // 鏍规嵁杩愮畻绗﹀垽鏂潯浠舵槸鍚︽弧瓒�
- switch (op)
- {
- case ">=":
- return leftValue >= rightValue ? 1 : 0;
- case "<=":
- return leftValue <= rightValue ? 1 : 0;
- case ">":
- return leftValue > rightValue ? 1 : 0;
- case "<":
- return leftValue < rightValue ? 1 : 0;
- case "=":
- return leftValue == rightValue ? 1 : 0;
- case "!=":
- return leftValue != rightValue ? 1 : 0;
- default:
- throw new ArgumentException($"涓嶆敮鎸佺殑杩愮畻绗�: {op}");
- }
- }
-
- /// <summary>
- /// 璁$畻鍖呭惈瀛楁杩愮畻鐨勮〃杈惧紡锛堝锛歠ieldA+fieldB-fieldC*2锛�
- /// </summary>
- private static decimal CalculateFieldExpression(GridView gridView, int rowHandle, string expression)
- {
- expression = expression.Trim();
-
- // 绠�鍗曠殑琛ㄨ揪寮忚В鏋愬櫒 - 鎸夎繍绠椾紭鍏堢骇澶勭悊
- // 鍏堝鐞嗕箻闄わ紝鍐嶅鐞嗗姞鍑�
-
- // 鍒嗗壊鍔犲噺杩愮畻
- var addSubTerms = SplitExpression(expression, new[] { '+', '-' });
- decimal result = 0;
- char lastOp = '+';
-
- foreach (var term in addSubTerms)
- {
- string cleanTerm = term.Key.Trim();
- char op = term.Value;
-
- // 澶勭悊涔橀櫎杩愮畻
- decimal termValue = CalculateMultiplyDivide(gridView, rowHandle, cleanTerm);
-
- if (lastOp == '+')
- result += termValue;
- else if (lastOp == '-')
- result -= termValue;
-
- lastOp = op;
- }
-
- return result;
- }
-
- /// <summary>
- /// 澶勭悊涔橀櫎杩愮畻
- /// </summary>
- private static decimal CalculateMultiplyDivide(GridView gridView, int rowHandle, string expression)
- {
- var mulDivTerms = SplitExpression(expression, new[] { '*', '/' });
- decimal result = 0;
- char lastOp = '*';
- bool isFirst = true;
-
- foreach (var term in mulDivTerms)
- {
- string cleanTerm = term.Key.Trim();
- char op = term.Value;
-
- decimal termValue = GetFieldOrNumericValue(gridView, rowHandle, cleanTerm);
-
- if (isFirst)
- {
- result = termValue;
- isFirst = false;
- }
- else if (lastOp == '*')
- result *= termValue;
- else if (lastOp == '/')
- result /= termValue;
-
- lastOp = op;
- }
-
- return result;
- }
-
- /// <summary>
- /// 鍒嗗壊琛ㄨ揪寮�
- /// </summary>
- private static List<KeyValuePair<string, char>> SplitExpression(string expression, char[] operators)
- {
- var result = new List<KeyValuePair<string, char>>();
- string currentTerm = "";
-
- for (int i = 0; i < expression.Length; i++)
- {
- char c = expression[i];
-
- if (operators.Contains(c))
- {
- if (!string.IsNullOrEmpty(currentTerm))
- {
- result.Add(new KeyValuePair<string, char>(currentTerm, i < expression.Length - 1 ? c : '\0'));
- currentTerm = "";
- }
- }
- else
- {
- currentTerm += c;
- }
- }
-
- if (!string.IsNullOrEmpty(currentTerm))
- {
- result.Add(new KeyValuePair<string, char>(currentTerm, '\0'));
- }
-
- return result;
- }
-
- /// <summary>
- /// 鑾峰彇瀛楁鍊兼垨鏁板��
- /// </summary>
- private static decimal GetFieldOrNumericValue(GridView gridView, int rowHandle, string valueExpression)
- {
- valueExpression = valueExpression.Trim();
-
- // 灏濊瘯瑙f瀽涓烘暟瀛�
- if (decimal.TryParse(valueExpression, out decimal numValue))
- {
- return numValue;
- }
-
- // 浣滀负瀛楁鍚嶅鐞�
- try
- {
- object cellValue = gridView.GetRowCellValue(rowHandle, valueExpression);
- if (cellValue != null && decimal.TryParse(cellValue.ToString(), out decimal fieldValue))
- {
- return fieldValue;
- }
- }
- catch
- {
- // 瀛楁涓嶅瓨鍦ㄦ垨鏃犳硶杞崲涓烘暟瀛�
- }
-
- return 0; // 榛樿鍊�
- }
-
- /// <summary>
- /// 妫�鏌ユ槸鍚︽槸甯冨皵鍊兼潯浠�
- /// </summary>
- private static bool IsBooleanCondition(string condition)
- {
- string lowerCondition = condition.ToLower();
- return lowerCondition == "true" || lowerCondition == "false" ||
- lowerCondition == "1" || lowerCondition == "0";
- }
-
- /// <summary>
- /// 甯冨皵鍊煎尮閰嶆鏌�
- /// </summary>
- private static bool IsBooleanMatch(string value, string condition)
- {
- // 鏍囧噯鍖栧竷灏斿��
- bool conditionBool = NormalizeBooleanValue(condition);
- bool valueBool = NormalizeBooleanValue(value);
-
- return conditionBool == valueBool;
- }
-
- /// <summary>
- /// 鏍囧噯鍖栧竷灏斿��
- /// </summary>
- private static bool NormalizeBooleanValue(string value)
- {
- if (string.IsNullOrEmpty(value))
- return false;
-
- string lowerValue = value.Trim().ToLower();
-
- // 澶勭悊鍚勭鍙兘鐨則rue鍊�
- if (lowerValue == "true" || lowerValue == "1" || lowerValue == "鏄�" || lowerValue == "宸插鏍�")
- return true;
-
- // 澶勭悊鍚勭鍙兘鐨刦alse鍊�
- if (lowerValue == "false" || lowerValue == "0" || lowerValue == "鍚�" || lowerValue == "鏈鏍�" || lowerValue == "")
- return false;
-
- // 榛樿涓篺alse
- return false;
- }
-
-
-
- /// <summary>
- /// 璁剧疆GridView澶嶉�夋鍒楃偣鍑绘椂鑷姩鍒锋柊鏉′欢姹囨��
- /// 2025-08-15 kyy 鏂板鍏敤鏂规硶
- /// </summary>
- /// <param name="gridView">鐩爣GridView鎺т欢</param>
- /// <param name="checkboxFieldName">澶嶉�夋瀛楁鍚嶏紙榛樿涓篶hkInt锛�</param>
- /// <param name="delayMs">寤惰繜鍒锋柊鏃堕棿锛堟绉掞紝榛樿100ms锛�</param>
- public static void SetupCheckboxClickRefresh(DevExpress.XtraGrid.Views.Grid.GridView gridView, string checkboxFieldName = "chkInt", int delayMs = 100)
- {
- if (gridView == null) return;
-
- // 娣诲姞榧犳爣鐐瑰嚮浜嬩欢锛屾娴嬪閫夋鍒楃偣鍑�
- gridView.MouseDown += (s, e) =>
- {
- var hitInfo = gridView.CalcHitInfo(e.Location);
- if (hitInfo.InRowCell && hitInfo.Column?.FieldName == checkboxFieldName)
- {
- // 澶嶉�夋鍒楄鐐瑰嚮锛屽欢杩熷埛鏂版眹鎬荤‘淇濆�煎凡鏇存柊
- System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
- timer.Interval = delayMs;
- timer.Tick += (sender, args) =>
- {
- timer.Stop();
- timer.Dispose();
- RefreshConditionalSummary(gridView);
- };
- timer.Start();
- }
- };
- }
-
- /// <summary>
- /// 涓�閿缃瓽ridView鏉′欢姹囨�荤殑瀹屾暣鍔熻兘锛堝寘鍚潯浠舵眹鎬�+瀹炴椂鍒锋柊锛�
- /// 2025-08-15 kyy 鏂板渚挎嵎鏂规硶
- /// </summary>
- /// <param name="gridView">鐩爣GridView鎺т欢</param>
- /// <param name="conditionFieldName">鏉′欢瀛楁鍚嶏紙濡俢hkInt锛�</param>
- /// <param name="conditionValue">鏉′欢鍊硷紙濡倀rue琛ㄧず閫変腑锛�</param>
- /// <param name="summaryColumns">闇�瑕佹眹鎬荤殑鍒楀悕鏁扮粍</param>
- /// <param name="enableRealTimeRefresh">鏄惁鍚敤瀹炴椂鍒锋柊锛堥粯璁rue锛�</param>
- /// <param name="refreshDelayMs">鍒锋柊寤惰繜鏃堕棿锛堟绉掞紝榛樿100ms锛�</param>
- public static void SetupCompleteConditionalSummary(DevExpress.XtraGrid.Views.Grid.GridView gridView,
- string conditionFieldName, object conditionValue, string[] summaryColumns,
- bool enableRealTimeRefresh = true, int refreshDelayMs = 100)
- {
- if (gridView == null || summaryColumns == null || summaryColumns.Length == 0) return;
-
- // 1. 璁剧疆鏉′欢姹囨��
- SetupGridSummaryWithCondition(gridView, conditionFieldName, conditionValue, summaryColumns);
-
- if (!enableRealTimeRefresh) return;
-
- // 2. 璁剧疆瀹炴椂鍒锋柊浜嬩欢
- // 鍗曞厓鏍煎�煎彉鍖栦簨浠�
- gridView.CellValueChanged += (s, e) =>
- {
- if (e.Column.FieldName == conditionFieldName)
- {
- RefreshConditionalSummary(gridView);
- }
- };
-
- // 鏁版嵁婧愬彉鍖栦簨浠�
- gridView.DataSourceChanged += (s, e) =>
- {
- RefreshConditionalSummary(gridView);
- };
-
- // 缂栬緫鍣ㄩ殣钘忎簨浠�
- gridView.HiddenEditor += (s, e) =>
- {
- System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
- timer.Interval = 50;
- timer.Tick += (sender, args) =>
- {
- timer.Stop();
- timer.Dispose();
- RefreshConditionalSummary(gridView);
- };
- timer.Start();
- };
-
- // 3. 璁剧疆澶嶉�夋鐐瑰嚮鍒锋柊
- SetupCheckboxClickRefresh(gridView, conditionFieldName, refreshDelayMs);
- }
-
- #endregion
-
}
/// <summary>
@@ -3317,7 +2468,6 @@
return Text.ToString();
}
-
}
/// <summary>
@@ -3364,10 +2514,23 @@
ipqc棣栨,
fqc,
鐢熶骇閫�鏂欏叆搴撴,
- 鍏跺畠鍏ュ簱妫�
+ 鍏跺畠鍏ュ簱妫�,
+ 閿�鍞��璐у叆搴撴,
+ 瓒呮湡妫�,
+ 濮斿閫�鏂欏叆搴撴,
+ cqcjyes,//閲嶆鏂规
+ cqcjno,//閲嶆鏂规
+ 浜х嚎绉伴噸,
+ iqc绉伴噸,
+ 鍙楁墭鍏ュ簱
}
-
+ public enum OrderType
+ {
+ 鍏跺畠鍏ュ簱,
+ 鐗╂枡璋冩嫧,
+ 鍏跺畠鍑哄簱
+ }
--
Gitblit v1.9.3