新增第三张表
This commit is contained in:
parent
d168724596
commit
e6c0521bfe
@ -44,12 +44,12 @@ namespace MQTT_WinformV1.Service
|
|||||||
connStrBuilder.Database = strDBName;
|
connStrBuilder.Database = strDBName;
|
||||||
connStrBuilder.CharacterSet = "utf8mb4";
|
connStrBuilder.CharacterSet = "utf8mb4";
|
||||||
sendconnectionString = connStrBuilder.ConnectionString;
|
sendconnectionString = connStrBuilder.ConnectionString;
|
||||||
var (firstMachineData, finalMachineData) = await GetTodayInspectionDataAsync(sendconnectionString);
|
var (firstMachineData, finalMachineData, finalResultMachineData) = await GetTodayInspectionDataAsync(sendconnectionString);
|
||||||
int iResult = await InsertDataAsync(firstMachineData, finalMachineData, receiveconnectionString);
|
int iResult = await InsertDataAsync(firstMachineData, finalMachineData, finalResultMachineData, receiveconnectionString);
|
||||||
if (iResult > 0)
|
if (iResult > 0)
|
||||||
{
|
{
|
||||||
//变更上传状态
|
//变更上传状态
|
||||||
await BatchUpdateTodayStatusAsync(sendconnectionString, firstMachineData, finalMachineData);
|
await BatchUpdateTodayStatusAsync(sendconnectionString, firstMachineData, finalMachineData,finalResultMachineData);
|
||||||
}
|
}
|
||||||
return iResult;
|
return iResult;
|
||||||
}
|
}
|
||||||
@ -131,7 +131,7 @@ namespace MQTT_WinformV1.Service
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
#endregion
|
#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)
|
// 新增:定义批次大小(MySQL IN子句建议不超过1000条,这里设500)
|
||||||
int totalUpdated = 0;
|
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;
|
return totalUpdated;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,6 +248,7 @@ namespace MQTT_WinformV1.Service
|
|||||||
private async Task<int> InsertDataAsync(
|
private async Task<int> InsertDataAsync(
|
||||||
DataTable firstMachineData,
|
DataTable firstMachineData,
|
||||||
DataTable finalMachineData,
|
DataTable finalMachineData,
|
||||||
|
DataTable finalResultMachineData,
|
||||||
string receiveconnectionString)
|
string receiveconnectionString)
|
||||||
{
|
{
|
||||||
int totalInserted = 0;
|
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;
|
return totalInserted;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,6 +353,25 @@ namespace MQTT_WinformV1.Service
|
|||||||
return await BatchInsertAsync(connectionString, insertSql, data, MapFirstMachineParameters);
|
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(
|
private async Task<int> BatchInsertAsync(
|
||||||
string connectionString,
|
string connectionString,
|
||||||
string sql,
|
string sql,
|
||||||
@ -382,6 +434,17 @@ namespace MQTT_WinformV1.Service
|
|||||||
cmd.Parameters.AddWithValue("@updated_time", DateTime.Now);
|
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)
|
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)
|
GetTodayInspectionDataAsync(string connectionString)
|
||||||
{
|
{
|
||||||
// 获取今天的日期范围
|
// 获取今天的日期范围
|
||||||
@ -419,12 +482,13 @@ namespace MQTT_WinformV1.Service
|
|||||||
var tasks = new[]
|
var tasks = new[]
|
||||||
{
|
{
|
||||||
QueryInspectionDataAsync(connectionString, "qc_firstarticle_inspection", startTime, endTime),
|
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);
|
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