SVN-Revision: r331
This commit is contained in:
tdx
2025-03-16 08:06:11 +00:00
parent 8fe2018dfa
commit 8e69246856
+20 -22
View File
@@ -4391,7 +4391,7 @@ namespace Lskj.PubBill
{ {
DataTable tvp = new DataTable();//虚构一个保存存储过程 DataTable tvp = new DataTable();//虚构一个保存存储过程
//更新前进行数据源筛选 //更新前进行数据源筛选
if (DateColumnList.Count > 0 && string.IsNullOrEmpty(BillModel.PrimaryDetailKey)) if (DateColumnList.Count > 0)
{ {
// 创建临时表 // 创建临时表
tvp.Columns.Add("lblOrderNo", typeof(string)); // 固定主键 tvp.Columns.Add("lblOrderNo", typeof(string)); // 固定主键
@@ -4401,27 +4401,26 @@ namespace Lskj.PubBill
// 获取主数据源 // 获取主数据源
DataTable mainDataSource = gcMain.GridControl.DataSourceTable(); DataTable mainDataSource = gcMain.GridControl.DataSourceTable();
if (mainDataSource.Columns.Contains(BillModel.DetailUUIDKey))
{
// 遍历主数据源 // 遍历主数据源
foreach (DataRow row in mainDataSource.Rows) foreach (DataRow row in mainDataSource.Rows)
{ {
if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added)
{ {
// 提取 billdocument_id // 提取 billdocument_id
string key = row[BillModel.PrimaryDetailKey].ToString(); string key = row[BillModel.DetailUUIDKey].ToString();
if (!string.IsNullOrEmpty(key))
{
// 遍历列并处理虚拟列 // 遍历列并处理虚拟列
foreach (DataColumn col in mainDataSource.Columns) foreach (GridColumn col in DateColumnList)
{ {
if (!Regex.IsMatch(col.ColumnName, @"^\d{4}-\d{2}-\d{2}$"))
continue;
// 检查值是否发生变化 // 检查值是否发生变化
bool isVerifyupd = true; bool isVerifyupd = true;
if (row.RowState == DataRowState.Modified) if (row.RowState == DataRowState.Modified)
{ {
object originalValue = row[col, DataRowVersion.Original]; object originalValue = row[col.FieldName, DataRowVersion.Original];
object currentValue = row[col, DataRowVersion.Current]; object currentValue = row[col.FieldName, DataRowVersion.Current];
isVerifyupd = !object.Equals(originalValue, currentValue); isVerifyupd = !object.Equals(originalValue, currentValue);
} }
@@ -4429,15 +4428,14 @@ namespace Lskj.PubBill
{ {
// 解析金额 // 解析金额
decimal newAmount = 0m; decimal newAmount = 0m;
if (row[col] != DBNull.Value && !string.IsNullOrWhiteSpace(row[col].ToString())) if (row[col.FieldName] != DBNull.Value && !string.IsNullOrWhiteSpace(row[col.FieldName].ToString()))
{ {
decimal.TryParse(row[col].ToString(), out newAmount); decimal.TryParse(row[col.FieldName].ToString(), out newAmount);
} }
// 插入数据到临时表 // 插入数据到临时表
DataRow dr = tvp.NewRow(); DataRow dr = tvp.NewRow();
dr["billdocument_id"] = key; dr["billdocument_id"] = key;
dr["showday"] = col.ColumnName; // 列名如 "2025-03-06" dr["showday"] = col.FieldName; //列名如 "2025-03-06"
dr["amount"] = newAmount; dr["amount"] = newAmount;
tvp.Rows.Add(dr); tvp.Rows.Add(dr);
} }
@@ -4445,6 +4443,8 @@ namespace Lskj.PubBill
} }
} }
} }
}
}
// 保存之前先进行表格更新 // 保存之前先进行表格更新
if (this.BillModel.DetailTreeTable) if (this.BillModel.DetailTreeTable)
@@ -4521,13 +4521,14 @@ namespace Lskj.PubBill
//保存完成后所有数据源进行拼接执行保存 //保存完成后所有数据源进行拼接执行保存
if (tvp != null && tvp.Rows.Count > 0) if (tvp != null && tvp.Rows.Count > 0)
{ {
foreach (DataRow dataRow in tvp.Rows) foreach (DataRow item in tvp.Rows)
{ {
dataRow["lblOrderNo"] = billNo; item["lblOrderNo"] = billNo;
} }
// 调用存储过程保存变更数据 // 调用存储过程保存变更数据
string msg; string msg;
int ret = SaveDayPlanChanges(tvp, out msg); int ret = SaveDayPlanChanges(tvp, out msg);
OnGcMainDataSourceChanged(gcMain.GridView, null);//手动刷新日期合计数据源
} }
break; break;
case 9: case 9:
@@ -5046,8 +5047,6 @@ namespace Lskj.PubBill
if (DateColumnList.Count > 0 && DateColumnList[0].Tag is DateTime dateTime) if (DateColumnList.Count > 0 && DateColumnList[0].Tag is DateTime dateTime)
{ {
string billNo = this.lblOrderNo.Text; string billNo = this.lblOrderNo.Text;
if (!string.IsNullOrEmpty(billNo))
{
this.gcMain.GridView.DataSourceChanged -= OnGcMainDataSourceChanged; this.gcMain.GridView.DataSourceChanged -= OnGcMainDataSourceChanged;
DataTable dataTable = gcMain.GridControl.DataSource as DataTable; DataTable dataTable = gcMain.GridControl.DataSource as DataTable;
//DataTable dataMain = dataTable.Copy(); //DataTable dataMain = dataTable.Copy();
@@ -5059,7 +5058,6 @@ namespace Lskj.PubBill
this.gcMain.GridView.DataSourceChanged += OnGcMainDataSourceChanged; this.gcMain.GridView.DataSourceChanged += OnGcMainDataSourceChanged;
} }
} }
}
/// <summary> /// <summary>
/// 保存日计划变更数据(批量保存)。 /// 保存日计划变更数据(批量保存)。
@@ -5084,7 +5082,7 @@ namespace Lskj.PubBill
// 创建 TVP 参数,名称必须与存储过程参数一致 // 创建 TVP 参数,名称必须与存储过程参数一致
SqlParameter tvpParam = new SqlParameter("@DayPlanChanges", SqlDbType.Structured) SqlParameter tvpParam = new SqlParameter("@DayPlanChanges", SqlDbType.Structured)
{ {
TypeName = "dbo.DayPlanChangeType", TypeName = "dbo.DayPlanChangeTVP",
Value = tvp Value = tvp
}; };
// 构造参数数组 // 构造参数数组
@@ -5111,7 +5109,7 @@ namespace Lskj.PubBill
string rightPrimaryKey = "billdocument_id"; string rightPrimaryKey = "billdocument_id";
string dateField = "showday"; string dateField = "showday";
string amountField = "amount"; string amountField = "amount";
string topPrimaryKey = this.BillModel.PrimaryDetailKey; string topPrimaryKey = BillModel.DetailUUIDKey;
DateTime endDate = startDate.AddDays(7); // 计算结束日期 DateTime endDate = startDate.AddDays(7); // 计算结束日期
// **1. 预索引 dataDayPlan 数据(billdocument_id -> 该 key 相关的所有行)** // **1. 预索引 dataDayPlan 数据(billdocument_id -> 该 key 相关的所有行)**
Dictionary<string, List<DataRow>> dayPlanMap = new Dictionary<string, List<DataRow>>(); Dictionary<string, List<DataRow>> dayPlanMap = new Dictionary<string, List<DataRow>>();
@@ -5185,7 +5183,7 @@ namespace Lskj.PubBill
string rightPrimaryKey = "billdocument_id"; string rightPrimaryKey = "billdocument_id";
string dateField = "showday"; string dateField = "showday";
string amountField = "amount"; string amountField = "amount";
string topPrimaryKey = this.BillModel.PrimaryDetailKey; string topPrimaryKey = BillModel.DetailUUIDKey;
DateTime endDate = startDate.AddDays(7); // 计算结束日期 DateTime endDate = startDate.AddDays(7); // 计算结束日期
// **1. 预索引 dataDayPlan 数据(billdocument_id -> 该 key 相关的所有行)** // **1. 预索引 dataDayPlan 数据(billdocument_id -> 该 key 相关的所有行)**
Dictionary<string, List<DataRow>> dayPlanMap = new Dictionary<string, List<DataRow>>(); Dictionary<string, List<DataRow>> dayPlanMap = new Dictionary<string, List<DataRow>>();