From 1a652f0160f9c511c6a11793742dfcc937840954 Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期三, 29 十月 2025 11:37:59 +0800
Subject: [PATCH] 1、采购入库多选打印
---
DevApp/Gs.DevApp/DevFrm/QC/MesQcExceptional.cs | 201 ++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 162 insertions(+), 39 deletions(-)
diff --git a/DevApp/Gs.DevApp/DevFrm/QC/MesQcExceptional.cs b/DevApp/Gs.DevApp/DevFrm/QC/MesQcExceptional.cs
index ddf3ed8..603a583 100644
--- a/DevApp/Gs.DevApp/DevFrm/QC/MesQcExceptional.cs
+++ b/DevApp/Gs.DevApp/DevFrm/QC/MesQcExceptional.cs
@@ -9,22 +9,22 @@
using System.Diagnostics;
using System.Threading.Tasks;
using System.Windows.Forms;
-
-
+
+
namespace Gs.DevApp.DevFrm.QC
{
public partial class MesQcExceptional : DevExpress.XtraEditors.XtraForm
{
string _webServiceName = "MesQcExceptionalManager/";
List<FilterEntity> _filterList = new List<FilterEntity>();
-
+
public void Initialize(string param)
{
// 浣跨敤param杩涜鍒濆鍖栧伐浣�
Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 0);
getModel(param);
}
-
+
public MesQcExceptional()
{
InitializeComponent();
@@ -37,7 +37,7 @@
toolBarMenu1.btnFChkClick += ToolBarMenu1_btnFChkClick;
toolBarMenu1.btnChkClick += ToolBarMenu1_btnChkClick;
this.toolBarMenu1.btnEscClick += ToolBarMenu1_btnEscClick;
-
+
this.toolBarMenu1.getXmlConfig();
Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1);
Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameter(gridView1, picCheckBox, this, "chkStatus", "", (value) =>
@@ -53,10 +53,10 @@
}, lbGuid);
getPageList(1);
pageBar1.PagerEvent += PageBar1_PagerEvent;
-
+
-
-
+
+
}
private void GridView1_ColumnFilterChanged(object sender, EventArgs e)
@@ -101,7 +101,7 @@
frm.UpdateParent += Frm_UpdateParent;
frm.ShowDialog();
}
-
+
/// <summary>
/// 鏌ヨ鍥炶皟
/// </summary>
@@ -112,7 +112,7 @@
_filterList = e.FilterList;
getPageList(1);
}
-
+
/// <summary>
/// 鍒锋柊浜嬩欢
/// </summary>
@@ -205,7 +205,7 @@
// 鍒涘缓闇�瑕佺壒娈婂鐞嗙殑琛ㄦ牸瑙嗗浘鍒楄〃
List<DevExpress.XtraGrid.Views.Grid.GridView> gvList = new List<DevExpress.XtraGrid.Views.Grid.GridView>();
gvList.Add(gvMx1); // 娣诲姞鏄庣粏琛ㄨ鍥�1
-
+
// 鍚敤缂栬緫妯″紡涓嬬殑鎵�鏈夋帶浠�
// 鍙傛暟璇存槑锛�
// - this.layoutMx1.Controls锛氳鍚敤鐨勬帶浠跺鍣�
@@ -216,7 +216,7 @@
}
}
-
+
/// <summary>
/// 淇濆瓨 -鎸夐挳鐐瑰嚮浜嬩欢 澶勭悊寮傚父鍗曟槑缁嗙殑淇濆瓨閫昏緫
/// </summary>
@@ -245,22 +245,26 @@
// 4. 鏀堕泦鏄庣粏鏁版嵁
for (var i = 0; i < gvMx1.DataRowCount; i++)
{
-
+
var row = gvMx1.GetDataRow(i);
if (row != null)
{
// 鑾峰彇褰撳墠鏄庣粏琛岀殑GUID
Guid? _guid = UtilityHelper.ToGuid(row["guid"].ToString());
// 娣诲姞鏄庣粏椤瑰埌璇锋眰瀵硅薄
+ // 璇存槑锛�
+ // 鈶� 鏃ч�昏緫浣跨敤 row["process"].ToString()锛屽悗鍙板彧瑕佹妸鍒楀悕鏀规垚 processName/gs003 鎴栧瓨鍦ㄥぇ灏忓啓宸紓锛屽氨浼氭姏鍑� 鈥淐olumn 'process' does not belong to table鈥� 寮傚父锛�
+ // 鈶� GetRowString 浼氬湪 DataTable 涓寜涓嶅尯鍒嗗ぇ灏忓啓鐨勬柟寮忛�愪釜鍖归厤鍊欓�夊垪鍚嶏紝骞舵妸 DBNull/null 缁熶竴杞崲涓虹┖瀛楃涓诧紝鍏煎涓嶅悓鎺ュ彛涓庡巻鍙叉暟鎹紱
+ // 鈶� 瀛楁鍒楄〃鎻愪緵澶氫釜鍊欓�夊�硷紙process/processName/processDesc/processWay/gs003锛夛紝纭繚鍚庣瀛楁鍛藉悕璋冩暣鏃朵粛鑳芥垚鍔熶繚瀛樸��
_obj.list.Add(new
{
Guid = _guid,
- BatchQty = (row["batchQty"].ToString()), // 鎵规鏁伴噺
- GfRkqty = (row["gfRkqty"].ToString()), // 鍚堟牸鍏ュ簱鏁伴噺
- LfRkqtyz = (row["lfRkqty"].ToString()), // 涓嶅悎鏍煎叆搴撴暟閲�
- HandResult = (row["handResult"].ToString()), // 閫夊埆绫诲瀷
- ChooseType = (row["chooseType"].ToString()), // 澶勭悊鎰忚
- Process = (row["process"].ToString()), // 閫�鏂欐柟寮�
+ BatchQty = GetRowString(row, "batchQty"), // 鎵规鏁伴噺
+ //GfRkqty = GetRowString(row, "gfRkqty"), // 鍚堟牸鍏ュ簱鏁�
+ //LfRkqtyz = GetRowString(row, "lfRkqty"), // 涓存斁鍏ュ簱鏁�
+ HandResult = GetRowString(row, "handResult"), // 閫夊埆鎰忚
+ ChooseType = GetRowString(row, "chooseType"), // 寮傚父绫诲埆
+ Process = GetRowString(row, "process"), // 閫�鏂欐柟寮�
});
}
@@ -291,7 +295,7 @@
getModel(lbGuid.Text.Trim());
// 鍒锋柊鍒楄〃椤垫暟鎹�
getPageList(this.pageBar1.CurrentPage);
-
+
// 璺宠浆鍒版煡鐪嬬粨鏋滈〉闈�
Gs.DevApp.ToolBox.UtilityHelper.JumpTab(xtraTabControl1, 6);
}
@@ -301,8 +305,8 @@
ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
}
}
-
-
+
+
/// <summary>
///
/// </summary>
@@ -358,15 +362,15 @@
{
// 瀹氫箟鍙橀噺鏍囪褰撳墠鏄惁涓虹紪杈戠姸鎬侊紙榛樿闈炵紪杈戠姸鎬侊級
bool isEdit = false;
-
+
// 鑻ュ綋鍓嶅伐鍏锋爮鎿嶄綔鏄�"鏂板"锛坅dd锛夛紝鏃犻渶鍔犺浇宸叉湁鏁版嵁锛岀洿鎺ヨ繑鍥�
// 鍘熷洜锛氭柊澧炵姸鎬佷笅搴旀樉绀虹┖鐧借〃鍗曪紝鑰岄潪鍔犺浇鍘嗗彶鏁版嵁
if (toolBarMenu1.currentAction == "add") return;
-
+
// 鑻ュ綋鍓嶅伐鍏锋爮鎿嶄綔鏄�"缂栬緫"锛坋dit锛夛紝灏嗙紪杈戠姸鎬佹爣璁颁负true
// 鍚庣画鐣岄潰鎺т欢鐨勫彲缂栬緫鎬у皢鍩轰簬姝ゅ彉閲忓垽鏂�
if (toolBarMenu1.currentAction == "edit") isEdit = true;
-
+
// 鏍¢獙鍙傛暟锛氳嫢鏈紶鍏ユ湁鏁堢殑GUID锛堢敤鎴锋湭閫夋嫨浠讳綍琛岋級锛屾彁绀虹敤鎴峰苟缁堟鎵ц
if (string.IsNullOrEmpty(strGuid))
{
@@ -374,14 +378,14 @@
MsgHelper.Warning("璇峰厛閫夋嫨浣犺鎿嶄綔鐨勮锛�");
return;
}
-
+
// 鏋勫缓璇锋眰鍙傛暟瀵硅薄锛氫互鍖垮悕绫诲舰寮忓皝瑁呰鏌ヨ鐨勫疄浣撲富閿紙GUID锛�
// 璇ュ弬鏁板皢鐢ㄤ簬鍚戞湇鍔$璇锋眰瀵瑰簲鐨勫疄浣撴暟鎹�
var _obj = new
{
guid = strGuid,// 涓婚敭瀛楁锛屾湇鍔$閫氳繃姝ゅ�煎畾浣嶅叿浣撹褰�
};
-
+
try
{
// 璋冪敤HTTP宸ュ叿绫诲彂閫丳OST璇锋眰锛岃幏鍙栨湇鍔$杩斿洖鐨凧SON鏁版嵁
@@ -390,25 +394,25 @@
// 绗簩涓弬鏁帮細鎺ュ彛璺緞锛堢粨鍚坃webServiceName鍓嶇紑锛屽畬鏁磋矾寰勪负"MesQcExceptionalManager/GetModel"锛�
// 绗笁涓弬鏁帮細灏嗘煡璇㈠弬鏁板簭鍒楀寲涓篔SON瀛楃涓�
string strJson = UtilityHelper.HttpPost("", _webServiceName + "GetModel", JsonConvert.SerializeObject(_obj));
-
+
// 灏嗘湇鍔$杩斿洖鐨凧SON瀛楃涓茶浆鎹负閫氱敤杩斿洖妯″瀷锛圧eturnModel锛�
// ReturnModel鍖呭惈鐘舵�佺爜锛坮tnCode锛夈�佹秷鎭紙rtnMsg锛夈�佹暟鎹紙rtnData锛変笁涓牳蹇冨瓧娈�
ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
-
+
// 妫�鏌ユ湇鍔$杩斿洖鐘舵�侊細rtnCode > 0 琛ㄧず璇锋眰鎴愬姛锛堜笟鍔″眰闈㈢殑鎴愬姛锛�
if (_rtn.rtnCode > 0)
{
// 鎻愬彇杩斿洖鏁版嵁涓殑瀹炰綋璇︽儏锛坉ynamic绫诲瀷鍙姩鎬佽闂瓧娈碉紝鏃犻渶棰勫厛瀹氫箟瀹炰綋绫伙級
dynamic dy = _rtn.rtnData;
-
+
// 鍦ㄧ晫闈㈢殑lbGuid鏍囩涓婃樉绀哄綋鍓嶅疄浣撶殑GUID锛堢敤浜庢爣璇嗗綋鍓嶆搷浣滅殑璁板綍锛�
lbGuid.Text = strGuid;
-
+
// 鍒涘缓缃戞牸瑙嗗浘鍒楄〃锛屽寘鍚渶瑕佸鐞嗙殑鏄庣粏缃戞牸瑙嗗浘gvMx1
// 鍚庣画灏嗛�氳繃宸ュ叿鏂规硶缁熶竴璁剧疆杩欎簺缃戞牸鐨勫睘鎬э紙濡傚彲缂栬緫鎬э級
List<DevExpress.XtraGrid.Views.Grid.GridView> gvList = new List<DevExpress.XtraGrid.Views.Grid.GridView>();
gvList.Add(gvMx1);
-
+
// 璋冪敤宸ュ叿鏂规硶鎵归噺璁剧疆鐣岄潰鎺т欢鐨勫�煎拰鍙紪杈戠姸鎬�
// 鍙傛暟璇存槑锛�
// this.layoutMx1.Controls锛氬竷灞�瀹瑰櫒涓殑鎵�鏈夋帶浠讹紙鏂囨湰妗嗐�佷笅鎷夋绛夛級
@@ -416,8 +420,8 @@
// isEdit锛氭槸鍚︿负缂栬緫鐘舵�侊紙鎺у埗鎺т欢鏄惁鍙紪杈戯級
// gvList锛氶渶瑕佸悓姝ヨ缃殑缃戞牸瑙嗗浘鍒楄〃
UtilityHelper.SetValueByObj(this.layoutMx1.Controls, dy, isEdit, gvList);
-
-
+
+
// 瑙f瀽鏈嶅姟绔繑鍥炵殑JSON锛屾彁鍙栨槑缁嗘暟鎹垪琛紙瀛樺偍鍦╮tnData涓嬬殑list瀛楁涓級
// 浣跨敤JObject瑙f瀽JSON锛屼究浜庢彁鍙栧祵濂楃粨鏋勭殑鏁版嵁
JObject _job = JObject.Parse(strJson);
@@ -427,10 +431,11 @@
{
array.Add(a);
}
-
+
// 灏嗘槑缁嗘暟鎹殑JSON鏁扮粍杞崲涓篋ataTable锛堥�傚悎浣滀负缃戞牸鎺т欢鐨勬暟鎹簮锛�
DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());
-
+ EnsureProcessColumn(dt);
+
// 鑻ユ槑缁嗘暟鎹瓨鍦紙DataTable琛屾暟>0锛�
if (dt.Rows.Count > 0)
{
@@ -463,6 +468,124 @@
// 鏄剧ず寮傚父淇℃伅锛屼究浜庤皟璇曞拰鐢ㄦ埛鍙嶉
ToolBox.MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
}
+ }
+ /// <summary>
+ /// 缁熶竴灏佽 DataRow 瀛楁璇诲彇閫昏緫锛氭寜鐓у�欓�夊垪鍚嶅垪琛ㄤ緷娆℃煡鎵剧湡瀹炲垪锛屽拷鐣ュぇ灏忓啓骞惰閬� DBNull銆�
+ /// </summary>
+ /// <param name="row">褰撳墠寰幆鍒扮殑 DataRow锛岃嫢涓� null 鐩存帴杩斿洖绌哄瓧绗︿覆銆�</param>
+ /// <param name="columnCandidates">鎸変紭鍏堢骇鎺掑垪鐨勫�欓�夊垪鍚嶉泦鍚堬紙渚嬪 process/processName/gs003锛夈��</param>
+ /// <returns>鍖归厤鍒扮殑鍒楀�硷紱鑻ユ墍鏈夊�欓�夊垪鍧囦笉瀛樺湪鎴栧�间负 DBNull锛屽垯杩斿洖 string.Empty銆�</returns>
+ /// <remarks>
+ /// MesQcExceptional 鐨勪繚瀛樺姩浣滀緷璧栬鏂规硶锛屼互鍏煎鍚庣鎺ュ彛瀛楁鏀瑰悕鎴栧ぇ灏忓啓宸紓锛岄伩鍏嶅啀娆″嚭鐜� 鈥淐olumn 'process' does not belong to table鈥� 寮傚父銆�
+ /// </remarks>
+ private static string GetRowString(DataRow row, params string[] columnCandidates)
+ {
+ if (row == null || row.Table == null || columnCandidates == null)
+ return string.Empty;
+
+ foreach (var candidate in columnCandidates)
+ {
+ if (string.IsNullOrEmpty(candidate))
+ continue;
+ var match = FindMatchingColumn(row.Table, candidate);
+ if (!string.IsNullOrEmpty(match))
+ return NormalizeValue(row[match]);
+ }
+
+ return string.Empty;
+ }
+
+ private static string FindMatchingColumn(DataTable table, string columnName)
+ {
+ if (table == null || string.IsNullOrEmpty(columnName))
+ return null;
+
+ foreach (DataColumn column in table.Columns)
+ {
+ if (string.Equals(column.ColumnName, columnName, StringComparison.OrdinalIgnoreCase))
+ return column.ColumnName;
+ }
+
+ return null;
+ }
+
+ private static string FindFirstAvailableColumn(DataTable table, params string[] candidates)
+ {
+ if (table == null || candidates == null)
+ return null;
+
+ foreach (var candidate in candidates)
+ {
+ var match = FindMatchingColumn(table, candidate);
+ if (!string.IsNullOrEmpty(match))
+ return match;
+ }
+
+ return null;
+ }
+
+ private static bool HasColumnExact(DataTable table, string columnName)
+ {
+ if (table == null || string.IsNullOrEmpty(columnName))
+ return false;
+
+ foreach (DataColumn column in table.Columns)
+ {
+ if (string.Equals(column.ColumnName, columnName, StringComparison.Ordinal))
+ return true;
+ }
+
+ return false;
+ }
+
+ private static void CopyColumn(DataTable table, string sourceColumnName, string targetColumnName)
+ {
+ if (table == null || string.IsNullOrEmpty(sourceColumnName) || string.IsNullOrEmpty(targetColumnName))
+ return;
+
+ if (!HasColumnExact(table, targetColumnName))
+ table.Columns.Add(targetColumnName, typeof(string));
+
+ foreach (DataRow row in table.Rows)
+ {
+ row[targetColumnName] = NormalizeValue(row[sourceColumnName]);
+ }
+ }
+
+ /// <summary>
+ /// 鍦ㄧ粦瀹� gvMx1 鏄庣粏鍓嶇‘淇� DataTable 涓瓨鍦ㄥ悕涓� process 鐨勫垪锛�
+ /// 1. 浼樺厛澶嶇敤涓嶅尯鍒嗗ぇ灏忓啓鍖归厤鍒扮殑鍚屽悕鍒楋紝淇濊瘉 GridColumn23 鐨勭粦瀹氫笉鍙楀奖鍝嶏紱
+ /// 2. 鑻ユ棤鍚屽悕鍒楋紝鍒欏皾璇曚娇鐢ㄥ父瑙佸埆鍚嶏紙processName/processDesc/processWay/gs003锛夊鍒剁敓鎴愶紱
+ /// 3. 鑻ヤ粛鏃犳硶瀹氫綅鏈夋晥鍒楋紝鍒欏垱寤虹┖鐨� process 鍒楋紝閬垮厤鍓嶇璁块棶鏃舵姏鍑哄垪涓嶅瓨鍦ㄥ紓甯搞��
+ /// </summary>
+ /// <param name="table">鎺ュ彛杩斿洖鐨勬槑缁� DataTable銆�</param>
+ private static void EnsureProcessColumn(DataTable table)
+ {
+ if (table == null)
+ return;
+
+ var existing = FindMatchingColumn(table, "process");
+ if (!string.IsNullOrEmpty(existing))
+ {
+ if (!HasColumnExact(table, "process"))
+ CopyColumn(table, existing, "process");
+ return;
+ }
+
+ var fallback = FindFirstAvailableColumn(table, "processName", "processDesc", "processWay", "gs003");
+ if (string.IsNullOrEmpty(fallback))
+ {
+ if (!HasColumnExact(table, "process"))
+ table.Columns.Add("process", typeof(string));
+ return;
+ }
+
+ CopyColumn(table, fallback, "process");
+ }
+
+ private static string NormalizeValue(object value)
+ {
+ return value == null || value == DBNull.Value ? string.Empty : value.ToString();
}
/// <summary>
/// 宸ュ叿鏉′簨浠�
@@ -523,7 +646,7 @@
var strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModelSubmit", JsonConvert.SerializeObject(_obj));
var _rtn = UtilityHelper.ReturnToDynamic(strJson);
MsgHelper.Warning(_rtn.rtnData.outMsg.ToString());
-
+
if (_rtn.rtnCode > 0 && _rtn.rtnData.outSum * 1 > 0)
{
if (xtraTabControl1.SelectedTabPageIndex == 1)
@@ -540,8 +663,8 @@
MsgHelper.Warning("鎻愮ず锛�" + ex.Message);
}
}
-
+
-
+
}
}
\ No newline at end of file
--
Gitblit v1.9.3