新增第三张表
This commit is contained in:
parent
d168724596
commit
e6c0521bfe
@ -44,12 +44,12 @@ namespace MQTT_WinformV1.Service
|
||||
connStrBuilder.Database = strDBName;
|
||||
connStrBuilder.CharacterSet = "utf8mb4";
|
||||
sendconnectionString = connStrBuilder.ConnectionString;
|
||||
var (firstMachineData, finalMachineData) = await GetTodayInspectionDataAsync(sendconnectionString);
|
||||
int iResult = await InsertDataAsync(firstMachineData, finalMachineData, receiveconnectionString);
|
||||
var (firstMachineData, finalMachineData, finalResultMachineData) = await GetTodayInspectionDataAsync(sendconnectionString);
|
||||
int iResult = await InsertDataAsync(firstMachineData, finalMachineData, finalResultMachineData, receiveconnectionString);
|
||||
if (iResult > 0)
|
||||
{
|
||||
//变更上传状态
|
||||
await BatchUpdateTodayStatusAsync(sendconnectionString, firstMachineData, finalMachineData);
|
||||
await BatchUpdateTodayStatusAsync(sendconnectionString, firstMachineData, finalMachineData,finalResultMachineData);
|
||||
}
|
||||
return iResult;
|
||||
}
|
||||
@ -131,7 +131,7 @@ namespace MQTT_WinformV1.Service
|
||||
//}
|
||||
|
||||
#endregion
|
||||
public async Task<int> BatchUpdateTodayStatusAsync(string connectionString, DataTable firstMachineData, DataTable finalMachineData)
|
||||
public async Task<int> BatchUpdateTodayStatusAsync(string connectionString, DataTable firstMachineData, DataTable finalMachineData,DataTable finalResultMachineData)
|
||||
{
|
||||
// 新增:定义批次大小(MySQL IN子句建议不超过1000条,这里设500)
|
||||
int totalUpdated = 0;
|
||||
@ -172,6 +172,23 @@ namespace MQTT_WinformV1.Service
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 处理第三张表的ID(分批次)
|
||||
List<int> finalResultIds = new List<int>();
|
||||
if (finalResultMachineData?.Rows.Count > 0)
|
||||
{
|
||||
foreach (DataRow dr in finalResultMachineData.Rows)
|
||||
{
|
||||
finalResultIds.Add(int.Parse(dr["Id"].ToString()));
|
||||
}
|
||||
|
||||
// 新增:分批次更新第二张表
|
||||
for (int i = 0; i < finalIds.Count; i += UpdateBatchSize)
|
||||
{
|
||||
int endIndex = Math.Min(i + UpdateBatchSize, finalIds.Count);
|
||||
List<int> batchFinalIds = finalResultIds.GetRange(i, endIndex - i);
|
||||
totalUpdated += await UpdateSingleTableBatchAsync(connectionString, "qc_final_inspection_result", batchFinalIds);
|
||||
}
|
||||
}
|
||||
return totalUpdated;
|
||||
}
|
||||
|
||||
@ -231,6 +248,7 @@ namespace MQTT_WinformV1.Service
|
||||
private async Task<int> InsertDataAsync(
|
||||
DataTable firstMachineData,
|
||||
DataTable finalMachineData,
|
||||
DataTable finalResultMachineData,
|
||||
string receiveconnectionString)
|
||||
{
|
||||
int totalInserted = 0;
|
||||
@ -267,6 +285,21 @@ namespace MQTT_WinformV1.Service
|
||||
}
|
||||
}
|
||||
|
||||
// 处理第三张表:分批次插入
|
||||
if (finalResultMachineData?.Rows.Count > 0)
|
||||
{
|
||||
int finalResultTotal = finalResultMachineData.Rows.Count;
|
||||
for (int i = 0; i < finalResultTotal; i += InsertBatchSize)
|
||||
{
|
||||
DataTable batchDt = finalResultMachineData.Clone();
|
||||
int end = Math.Min(i + InsertBatchSize, finalResultTotal);
|
||||
for (int j = i; j < end; j++)
|
||||
{
|
||||
batchDt.ImportRow(finalResultMachineData.Rows[j]);
|
||||
}
|
||||
totalInserted += await BatchInsertFinalResultMachineDataAsync(batchDt, receiveconnectionString);
|
||||
}
|
||||
}
|
||||
return totalInserted;
|
||||
}
|
||||
|
||||
@ -320,6 +353,25 @@ namespace MQTT_WinformV1.Service
|
||||
return await BatchInsertAsync(connectionString, insertSql, data, MapFirstMachineParameters);
|
||||
}
|
||||
|
||||
private async Task<int> BatchInsertFinalResultMachineDataAsync(
|
||||
DataTable data,
|
||||
string connectionString)
|
||||
{
|
||||
const string insertSql = @"
|
||||
INSERT INTO qc_final_inspection_result
|
||||
(
|
||||
workorder, direction, qualified_quantity, unqualified_quantiy,
|
||||
created_by, updated_by, created_time, updated_time
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@workorder, @direction, @qualified_quantity, @unqualified_quantiy,
|
||||
@created_by, @updated_by, @created_time, @updated_time
|
||||
)";
|
||||
|
||||
return await BatchInsertAsync(connectionString, insertSql, data, MapFinalResultMachineParameters);
|
||||
}
|
||||
|
||||
private async Task<int> BatchInsertAsync(
|
||||
string connectionString,
|
||||
string sql,
|
||||
@ -382,6 +434,17 @@ namespace MQTT_WinformV1.Service
|
||||
cmd.Parameters.AddWithValue("@updated_time", DateTime.Now);
|
||||
}
|
||||
|
||||
private void MapFinalResultMachineParameters(MySqlCommand cmd, DataRow row)
|
||||
{
|
||||
cmd.Parameters.AddWithValue("@workorder", row["workorder"]);
|
||||
cmd.Parameters.AddWithValue("@direction", row["direction"]);
|
||||
cmd.Parameters.AddWithValue("@qualified_quantity", Convert.ToInt32(row["qualified_quantity"]));
|
||||
cmd.Parameters.AddWithValue("@unqualified_quantiy", Convert.ToInt32(row["unqualified_quantiy"]));
|
||||
cmd.Parameters.AddWithValue("@created_by", row["created_by"]);
|
||||
cmd.Parameters.AddWithValue("@updated_by", row["updated_by"]);
|
||||
cmd.Parameters.AddWithValue("@created_time", DateTime.Now);
|
||||
cmd.Parameters.AddWithValue("@updated_time", DateTime.Now);
|
||||
}
|
||||
|
||||
private decimal ConvertToDecimal(object value)
|
||||
{
|
||||
@ -409,7 +472,7 @@ namespace MQTT_WinformV1.Service
|
||||
|
||||
|
||||
// 提取公共方法
|
||||
public async Task<(DataTable FirstMachine, DataTable FinalMachine)>
|
||||
public async Task<(DataTable FirstMachine, DataTable FinalMachine,DataTable FinalResultMachine)>
|
||||
GetTodayInspectionDataAsync(string connectionString)
|
||||
{
|
||||
// 获取今天的日期范围
|
||||
@ -419,12 +482,13 @@ namespace MQTT_WinformV1.Service
|
||||
var tasks = new[]
|
||||
{
|
||||
QueryInspectionDataAsync(connectionString, "qc_firstarticle_inspection", startTime, endTime),
|
||||
QueryInspectionDataAsync(connectionString, "qc_final_inspection", startTime, endTime)
|
||||
QueryInspectionDataAsync(connectionString, "qc_final_inspection", startTime, endTime),
|
||||
QueryInspectionDataAsync(connectionString, "qc_final_inspection_result", startTime, endTime)
|
||||
};
|
||||
|
||||
var results = await Task.WhenAll(tasks);
|
||||
|
||||
return (results[0], results[1]);
|
||||
return (results[0], results[1], results[2]);
|
||||
}
|
||||
|
||||
// 参数化查询方法
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user