From e6a18a1229e11f468a9109cad9c2abb71054527e Mon Sep 17 00:00:00 2001
From: zrg <z1873@LAPTOP-EAVL132E>
Date: 星期三, 26 八月 2026 17:50:12 +0800
Subject: [PATCH] 1
---
Gy_BarcodePrint/Gy_BarcodePrint.cs | 238 +++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 148 insertions(+), 90 deletions(-)
diff --git a/Gy_BarcodePrint/Gy_BarcodePrint.cs b/Gy_BarcodePrint/Gy_BarcodePrint.cs
index 11f9062..9102812 100644
--- a/Gy_BarcodePrint/Gy_BarcodePrint.cs
+++ b/Gy_BarcodePrint/Gy_BarcodePrint.cs
@@ -25,7 +25,8 @@
private const int COL_QTY = 4;
private const int COL_ISPRINTED = 5;
private const int COL_PRINTDATE = 6;
- private const int COL_PRINTERNAME = 7;
+ private const int COL_PRINTERNAME = 7;
+ private const int COL_REMARK = 8; // 鏂板锛氬唴澶栫鏍囪瘑
// 鎶ヨ〃鐩稿叧
private GridppReport Report;
@@ -60,7 +61,7 @@
// 鍒濆鐘舵�侊細鎸夐挳绂佺敤锛屽畾鏃跺櫒鏈惎鍔�
btnToggleAutoPrint.Enabled = false;
- timer1.Interval = 60000;
+ timer1.Interval = 30000;
timer1.Stop();
}
@@ -306,13 +307,6 @@
return;
}
- string templateName = GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "./Config/PWD.config", "PrintTemplate");
- if (string.IsNullOrEmpty(templateName) || templateName == "undefined")
- {
- LogService.Write("鑷姩鎵撳嵃: 鏈厤缃墦鍗版ā鏉匡紝璺宠繃");
- return;
- }
-
string safeAlias = alias.Replace("'", "''");
string sql = $@"
@@ -322,103 +316,136 @@
a.HQty AS 鏁伴噺,
a.HIsPrintSuccess AS 鏄惁鎵撳嵃鎴愬姛,
a.HLastPrintDate AS 鎵撳嵃鏃堕棿,
+ a.HRemark AS 鍐呭绠�,
a.HPrintName AS 鎵撳嵃鏈哄悕绉�
FROM Gy_BarCodeBill_Split a
INNER JOIN Gy_Material b ON a.HMaterID = b.HItemID
WHERE a.HIsPrintSuccess = 0 AND ISNULL(a.HPrintName,'') = '{safeAlias}'
ORDER BY a.HItemId";
- DataSet ds = oCn.RunProcReturn(sql, "AutoPrintQuery");
+ DataSet ds = oCn.RunProcReturn(sql, "Gy_BarCodeBill_Split");
if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
return;
- List<string> barcodeList = new List<string>();
- List<int> idList = new List<int>();
+ // 鏀堕泦鎵�鏈夊緟鎵撳嵃鏉$爜淇℃伅
+ List<Tuple<int, string, string>> items = new List<Tuple<int, string, string>>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
string barcode = dr["鏉$爜缂栧彿"].ToString().Trim();
if (string.IsNullOrEmpty(barcode)) continue;
- barcodeList.Add(barcode.Replace("'", "''"));
- idList.Add(Convert.ToInt32(dr["id"]));
+ int id = Convert.ToInt32(dr["id"]);
+ string remark = dr["鍐呭绠�"]?.ToString() ?? "";
+ items.Add(Tuple.Create(id, barcode, remark));
}
- if (barcodeList.Count == 0) return;
+ if (items.Count == 0) return;
- string inClause = string.Join(",", barcodeList.Select(b => "'" + b + "'"));
- string viewSql = $@"
- SELECT
- 鏉$爜缂栧彿,
- 鐗╂枡浠g爜,
- 鐗╂枡鍚嶇О,
- 瑙勬牸鍨嬪彿,
- 鎵瑰彿,
- 鏁伴噺,
- 渚涘簲鍟�,
- 缁勬墭鍗曞彿,
- 鐢熶骇鏃ユ湡,
- 婧愬崟鍗曞彿
- FROM h_v_IF_BarCodeBillList_Split
- WHERE 鏉$爜缂栧彿 IN ({inClause})";
+ // 鎸夌被鍨嬶紙鍐呭绠憋級鍒嗙粍
+ var groups = items.GroupBy(x => x.Item3);
+ int totalPrinted = 0;
- DataSet dsView = oCn.RunProcReturn(viewSql, "AutoPrintView");
- if (dsView == null || dsView.Tables.Count == 0 || dsView.Tables[0].Rows.Count == 0)
- return;
-
- DataTable dtPrint = new DataTable();
- dtPrint.Columns.Add("鏉$爜缂栧彿", typeof(string));
- dtPrint.Columns.Add("鐗╂枡浠g爜", typeof(string));
- dtPrint.Columns.Add("鐗╂枡鍚嶇О", typeof(string));
- dtPrint.Columns.Add("瑙勬牸鍨嬪彿", typeof(string));
- dtPrint.Columns.Add("鎵瑰彿", typeof(string));
- dtPrint.Columns.Add("鏁伴噺", typeof(string));
- dtPrint.Columns.Add("渚涘簲鍟�", typeof(string));
- dtPrint.Columns.Add("缁勬墭鍗曞彿", typeof(string));
- dtPrint.Columns.Add("鐢熶骇鏃ユ湡", typeof(string));
- dtPrint.Columns.Add("婧愬崟鍗曞彿", typeof(string));
-
- foreach (DataRow dr in dsView.Tables[0].Rows)
+ foreach (var group in groups)
{
- DataRow newRow = dtPrint.NewRow();
- newRow["鏉$爜缂栧彿"] = dr["鏉$爜缂栧彿"].ToString();
- newRow["鐗╂枡浠g爜"] = dr["鐗╂枡浠g爜"].ToString();
- newRow["鐗╂枡鍚嶇О"] = dr["鐗╂枡鍚嶇О"].ToString();
- newRow["瑙勬牸鍨嬪彿"] = dr["瑙勬牸鍨嬪彿"].ToString();
- newRow["鎵瑰彿"] = dr["鎵瑰彿"].ToString();
- object qty = dr["鏁伴噺"];
- newRow["鏁伴噺"] = qty == DBNull.Value ? "0" : Convert.ToDecimal(qty).ToString("0");
- newRow["渚涘簲鍟�"] = dr["渚涘簲鍟�"].ToString();
- newRow["缁勬墭鍗曞彿"] = dr["缁勬墭鍗曞彿"].ToString();
- object prodDate = dr["鐢熶骇鏃ユ湡"];
- newRow["鐢熶骇鏃ユ湡"] = prodDate == DBNull.Value ? "" : Convert.ToDateTime(prodDate).ToString("yyyy-MM-dd");
- newRow["婧愬崟鍗曞彿"] = dr["婧愬崟鍗曞彿"].ToString();
- dtPrint.Rows.Add(newRow);
+ string remark = group.Key;
+ string templateName = GetTemplateNameByRemark(remark);
+ if (string.IsNullOrEmpty(templateName) || templateName == "undefined")
+ {
+ LogService.Write($"鑷姩鎵撳嵃: 鏈壘鍒扮被鍨嬧�渰remark}鈥濆搴旂殑妯℃澘锛岃烦杩囪缁�");
+ continue;
+ }
+
+ // 鏋勫缓璇ョ粍鐨勬潯鐮佸垪琛ㄥ拰ID鍒楄〃
+ List<string> barcodeList = group.Select(x => x.Item2.Replace("'", "''")).ToList();
+ List<int> idList = group.Select(x => x.Item1).ToList();
+
+ string inClause = string.Join(",", barcodeList.Select(b => "'" + b + "'"));
+
+ // 鏌ヨ瑙嗗浘鏁版嵁
+ string viewSql = $@"
+ SELECT
+ 鏉$爜缂栧彿,
+ 鐗╂枡浠g爜,
+ 鐗╂枡鍚嶇О,
+ 瑙勬牸鍨嬪彿,
+ 鎵瑰彿,
+ 鏁伴噺,
+ 渚涘簲鍟�,
+ 缁勬墭鍗曞彿,
+ 鐢熶骇鏃ユ湡,
+ 婧愬崟鍗曞彿
+ FROM h_v_IF_BarCodeBillList_Split
+ WHERE 鏉$爜缂栧彿 IN ({inClause})";
+
+ DataSet dsView = oCn.RunProcReturn(viewSql, "h_v_IF_BarCodeBillList_Split");
+ if (dsView == null || dsView.Tables.Count == 0 || dsView.Tables[0].Rows.Count == 0)
+ {
+ LogService.Write($"鑷姩鎵撳嵃: 绫诲瀷鈥渰remark}鈥濈殑鏉$爜璇︽儏鏌ヨ鏃犵粨鏋滐紝璺宠繃");
+ continue;
+ }
+
+ // 鏋勫缓鎵撳嵃鏁版嵁琛�
+ DataTable dtPrint = new DataTable();
+ dtPrint.Columns.Add("鏉$爜缂栧彿", typeof(string));
+ dtPrint.Columns.Add("鐗╂枡浠g爜", typeof(string));
+ dtPrint.Columns.Add("鐗╂枡鍚嶇О", typeof(string));
+ dtPrint.Columns.Add("瑙勬牸鍨嬪彿", typeof(string));
+ dtPrint.Columns.Add("鎵瑰彿", typeof(string));
+ dtPrint.Columns.Add("鏁伴噺", typeof(string));
+ dtPrint.Columns.Add("渚涘簲鍟�", typeof(string));
+ dtPrint.Columns.Add("缁勬墭鍗曞彿", typeof(string));
+ dtPrint.Columns.Add("鐢熶骇鏃ユ湡", typeof(string));
+ dtPrint.Columns.Add("婧愬崟鍗曞彿", typeof(string));
+
+ foreach (DataRow dr in dsView.Tables[0].Rows)
+ {
+ DataRow newRow = dtPrint.NewRow();
+ newRow["鏉$爜缂栧彿"] = dr["鏉$爜缂栧彿"].ToString();
+ newRow["鐗╂枡浠g爜"] = dr["鐗╂枡浠g爜"].ToString();
+ newRow["鐗╂枡鍚嶇О"] = dr["鐗╂枡鍚嶇О"].ToString();
+ newRow["瑙勬牸鍨嬪彿"] = dr["瑙勬牸鍨嬪彿"].ToString();
+ newRow["鎵瑰彿"] = dr["鎵瑰彿"].ToString();
+ object qty = dr["鏁伴噺"];
+ newRow["鏁伴噺"] = qty == DBNull.Value ? "0" : Convert.ToDecimal(qty).ToString("0");
+ newRow["渚涘簲鍟�"] = dr["渚涘簲鍟�"].ToString();
+ newRow["缁勬墭鍗曞彿"] = dr["缁勬墭鍗曞彿"].ToString();
+ object prodDate = dr["鐢熶骇鏃ユ湡"];
+ newRow["鐢熶骇鏃ユ湡"] = prodDate == DBNull.Value ? "" : Convert.ToDateTime(prodDate).ToString("yyyy-MM-dd");
+ newRow["婧愬崟鍗曞彿"] = dr["婧愬崟鍗曞彿"].ToString();
+ dtPrint.Rows.Add(newRow);
+ }
+
+ // 鍒涘缓涓存椂DataGridView锛堝惈鍏ㄩ�夊垪锛�
+ DataGridView tempGrid = new DataGridView();
+ tempGrid.DataSource = dtPrint;
+ DataGridViewCheckBoxColumn selectCol = new DataGridViewCheckBoxColumn();
+ selectCol.HeaderText = "閫夋嫨";
+ selectCol.Name = "閫夋嫨";
+ tempGrid.Columns.Insert(0, selectCol);
+ foreach (DataGridViewRow row in tempGrid.Rows)
+ {
+ row.Cells["閫夋嫨"].Value = true;
+ }
+
+ // 璁剧疆鎶ヨ〃骞舵墦鍗�
+ Sub_SetReport(templateName, tempGrid);
+ Report.Printer.PrinterName = txtPrinter.Text.Trim();
+ Report.Print(false);
+
+ // 鏇存柊璇ョ粍鏉$爜鐘舵�佷负宸叉墦鍗�
+ if (idList.Count > 0)
+ {
+ string ids = string.Join(",", idList);
+ string updateSql = $@"UPDATE Gy_BarCodeBill_Split SET HIsPrintSuccess = 1, HLastPrintDate = GETDATE() WHERE HItemId IN ({ids})";
+ oCn.RunProc(updateSql);
+ }
+
+ totalPrinted += barcodeList.Count;
+ LogService.Write($"鑷姩鎵撳嵃: 绫诲瀷鈥渰remark}鈥濇墦鍗板畬鎴愶紝鍏� {barcodeList.Count} 涓潯鐮併��");
}
- DataGridView tempGrid = new DataGridView();
- tempGrid.DataSource = dtPrint;
- DataGridViewCheckBoxColumn selectCol = new DataGridViewCheckBoxColumn();
- selectCol.HeaderText = "閫夋嫨";
- selectCol.Name = "閫夋嫨";
- tempGrid.Columns.Insert(0, selectCol);
- foreach (DataGridViewRow row in tempGrid.Rows)
- {
- row.Cells["閫夋嫨"].Value = true;
- }
-
- Sub_SetReport(templateName, tempGrid);
- Report.Printer.PrinterName = txtPrinter.Text.Trim();
- //Report.PrintPreview(true); // 寮瑰嚭棰勮绐楀彛
- Report.Print(false);
-
- if (idList.Count > 0)
- {
- string ids = string.Join(",", idList);
- string updateSql = $@"UPDATE Gy_BarCodeBill_Split SET HIsPrintSuccess = 1, HLastPrintDate = GETDATE() WHERE HItemId IN ({ids})";
- oCn.RunProc(updateSql);
- }
-
+ // 鍒锋柊鐣岄潰鏁版嵁
LoadData();
- LogService.Write($"鑷姩鎵撳嵃瀹屾垚锛屽叡鎵撳嵃 {barcodeList.Count} 涓潯鐮併��");
+ LogService.Write($"鑷姩鎵撳嵃鍏ㄩ儴瀹屾垚锛屾�昏鎵撳嵃 {totalPrinted} 涓潯鐮併��");
}));
}
catch (Exception ex)
@@ -451,7 +478,7 @@
#region 琛ㄦ牸鍒濆鍖�
private void InitGrids()
{
- grdUnprinted.ColumnCount = 8;
+ grdUnprinted.ColumnCount = 9;
grdUnprinted.Columns[COL_ID].HeaderText = "ID";
grdUnprinted.Columns[COL_ID].Visible = false;
grdUnprinted.Columns[COL_BARCODE].HeaderText = "鏉$爜缂栧彿";
@@ -468,13 +495,15 @@
grdUnprinted.Columns[COL_PRINTDATE].Width = 150;
grdUnprinted.Columns[COL_PRINTERNAME].HeaderText = "鎵撳嵃鏈哄悕绉�";
grdUnprinted.Columns[COL_PRINTERNAME].Width = 200;
+ grdUnprinted.Columns[COL_REMARK].HeaderText = "鍐呭绠�";
+ grdUnprinted.Columns[COL_REMARK].Visible = false;
grdUnprinted.ReadOnly = true;
grdUnprinted.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
grdUnprinted.MultiSelect = true;
- grdPrinted.ColumnCount = 8;
+ grdPrinted.ColumnCount = 9;
grdPrinted.Columns[COL_ID].HeaderText = "ID";
grdPrinted.Columns[COL_ID].Visible = false;
grdPrinted.Columns[COL_BARCODE].HeaderText = "鏉$爜缂栧彿";
@@ -491,6 +520,8 @@
grdPrinted.Columns[COL_PRINTDATE].Width = 180;
grdPrinted.Columns[COL_PRINTERNAME].HeaderText = "鎵撳嵃鏈哄悕绉�";
grdPrinted.Columns[COL_PRINTERNAME].Width = 200;
+ grdPrinted.Columns[COL_REMARK].HeaderText = "鍐呭绠�";
+ grdPrinted.Columns[COL_REMARK].Visible = false;
grdPrinted.ReadOnly = true;
grdPrinted.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
@@ -522,6 +553,7 @@
a.HQty AS 鏁伴噺,
a.HIsPrintSuccess AS 鏄惁鎵撳嵃鎴愬姛,
a.HLastPrintDate AS 鎵撳嵃鏃堕棿,
+ a.HRemark AS 鍐呭绠�,
a.HPrintName AS 鎵撳嵃鏈哄悕绉�
FROM Gy_BarCodeBill_Split a
INNER JOIN Gy_Material b ON a.HMaterID = b.HItemID
@@ -541,11 +573,12 @@
foreach (DataRow dr in ds.Tables[0].Rows)
{
- object[] rowData = new object[8]; // 8鍒�
+ object[] rowData = new object[9]; // 8鍒�
rowData[COL_ID] = dr["id"];
rowData[COL_BARCODE] = dr["鏉$爜缂栧彿"].ToString();
rowData[COL_MATERIALCODE] = dr["鐗╂枡浠g爜"]?.ToString() ?? "";
rowData[COL_MATERIALNAME] = dr["鐗╂枡鍚嶇О"]?.ToString() ?? "";
+ rowData[COL_REMARK] = dr["鍐呭绠�"]?.ToString() ?? "";
// 鏁伴噺锛堢储寮�4锛�
object qtyObj = dr["鏁伴噺"];
@@ -690,10 +723,26 @@
return;
}
- string templateName = GetConfigKey_Print(AppDomain.CurrentDomain.BaseDirectory + "./Config/PWD.config", "PrintTemplate");
+ // ---------- 鏀瑰姩1锛氬厛鏀堕泦閫変腑琛岀殑 remark锛屽苟妫�鏌ユ槸鍚︿竴鑷� ----------
+ List<string> remarkList = new List<string>();
+ foreach (DataGridViewRow row in currentGrid.SelectedRows)
+ {
+ object remarkObj = row.Cells[COL_REMARK].Value;
+ string remark = remarkObj?.ToString() ?? "";
+ remarkList.Add(remark);
+ }
+ if (remarkList.Distinct().Count() > 1)
+ {
+ MessageBox.Show("閫変腑鏉$爜鍖呭惈鍐呯鍜屽绠憋紝璇峰垎鍒�夋嫨鍚屼竴绫诲瀷鎵撳嵃銆�", "鎻愮ず", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ return;
+ }
+ string firstRemark = remarkList.FirstOrDefault();
+
+ // ---------- 鏀瑰姩2锛氭牴鎹� remark 鍔ㄦ�佽幏鍙栨ā鏉� ----------
+ string templateName = GetTemplateNameByRemark(firstRemark);
if (string.IsNullOrEmpty(templateName) || templateName == "undefined")
{
- MessageBox.Show("鏈厤缃墦鍗版ā鏉匡紙PrintTemplate锛夛紝璇峰湪閰嶇疆鏂囦欢涓缃��", "閿欒", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ MessageBox.Show($"鏈壘鍒扮被鍨嬧�渰firstRemark}鈥濆搴旂殑鎵撳嵃妯℃澘锛岃妫�鏌ラ厤缃��", "閿欒", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
@@ -823,5 +872,14 @@
timer1?.Stop();
timer1?.Dispose();
}
+ private string GetTemplateNameByRemark(string remark)
+ {
+ string configPath = AppDomain.CurrentDomain.BaseDirectory + "./Config/PWD.config";
+ // 鏍规嵁澶囨敞鍐呭鍒ゆ柇锛岃嫢鍖呭惈"澶栫"鍒欎娇鐢ㄥ绠辨ā鏉匡紝鍚﹀垯榛樿鍐呯
+ if (!string.IsNullOrEmpty(remark) && remark.Trim().Contains("澶栫鐮�"))
+ return GetConfigKey_Print(configPath, "PrintTemplate2");
+ else
+ return GetConfigKey_Print(configPath, "PrintTemplate");
+ }
}
}
\ No newline at end of file
--
Gitblit v1.9.1