123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404 |
- using MeterVision.model;
- using System;
- using System.Collections.Generic;
- using System.Data.SQLite;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace MeterVision.db
- {
- public class DBPatch
- {
- public static bool InsertTPatch(TPatch tPatch)
- {
- // 构建插入的 SQL 语句
- string sql = "INSERT INTO t_patch (patch_id, create_time, patch_name,stand_id,stand_name) " +
- "VALUES (@PatchId, @CreateTime, @PatchName, @StandId, @StandName,@JudgeLastnumFlag)";
- // 创建参数数组
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", tPatch.PatchId),
- new SQLiteParameter("@CreateTime", tPatch.CreateTime),
- new SQLiteParameter("@PatchName", tPatch.PatchName),
- new SQLiteParameter("@StandId", tPatch.StandId),
- new SQLiteParameter("@StandName", tPatch.StandName),
- new SQLiteParameter("JudgeLastnumFlag",tPatch.JudgeLastnumFlag),
- };
- try
- {
- // 调用 SQLiteHelper 执行插入操作
- int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
- // 如果插入成功,返回 true,否则返回 false
- return rowsAffected > 0;
- }
- catch (Exception ex)
- {
- // 处理异常(如果有的话)
- Console.WriteLine("Error inserting data: " + ex.Message);
- return false;
- }
- }
- public static bool DeletePatchAndDetails(string patchId)
- {
- // 定义删除的 SQL 语句,使用事务来保证一致性
- string sql = @"
- BEGIN TRANSACTION;
- -- 删除 t_patch_detail 表中与 stand_id 相关的数据
- DELETE FROM t_patch_detail WHERE patch_id = @PatchId;
- -- 删除 t_patch 表中与 patch_id 相关的数据
- DELETE FROM t_patch WHERE patch_id = @PatchId;
- COMMIT;";
- // 创建参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId)
- };
- try
- {
- // 执行 SQL 删除操作
- int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
- // 返回是否成功删除
- return rowsAffected > 0;
- }
- catch (Exception ex)
- {
- // 处理异常(如果有的话)
- Console.WriteLine("Error deleting data: " + ex.Message);
- return false;
- }
- }
- public static Tuple<int,int, List<VPatch>> GetPagedVPatchs(int pageNumber, int pageSize)
- {
- // 计算 OFFSET 值
- int offset = (pageNumber - 1) * pageSize;
- // 定义 SQL 查询语句,带有分页
- string sql = @"
- SELECT patch_id, create_time, patch_name, stand_id, stand_name, judge_lastnum_flag,
- detail_count,run_count,equal_count,invalid_count,error_count
- FROM v_patch ORDER BY create_time DESC
- LIMIT @PageSize OFFSET @Offset;";
- // 创建 SQL 参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PageSize", pageSize),
- new SQLiteParameter("@Offset", offset)
- };
- // 执行查询并获取结果
- List<VPatch> patchs = new List<VPatch>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters))
- {
- while (reader.Read())
- {
- // 将查询结果映射到 TStand 对象
- VPatch patch = new VPatch
- {
- PatchId = reader.GetString(reader.GetOrdinal("patch_id")),
- CreateTime = reader.GetString(reader.GetOrdinal("create_time")),
- PatchName = reader.GetString(reader.GetOrdinal("patch_name")),
- StandId = reader.GetString(reader.GetOrdinal("stand_id")),
- StandName = reader.GetString(reader.GetOrdinal("stand_name")),
- JudgeLastnumFlag = reader.GetInt32(reader.GetOrdinal("judge_lastnum_flag")),
- DetailCount = reader.GetInt32(reader.GetOrdinal("detail_count")),
- RunCount = reader.GetInt32(reader.GetOrdinal("run_count")),
- EqualCount = reader.GetInt32(reader.GetOrdinal("equal_count")),
- InvalidCount = reader.GetInt32(reader.GetOrdinal("invalid_count")),
- ErrorCount = reader.GetInt32(reader.GetOrdinal("error_count"))
- };
- patchs.Add(patch);
- }
- }
- // 获取总记录数,用于计算总页数
- string countSql = "SELECT COUNT(*) FROM v_patch";
- int totalRecords = Convert.ToInt32(SQLiteHelper.GetSingle(countSql));
- // 计算总页数
- int totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);
- // 返回元组,包含总页数和结果列表
- return Tuple.Create(totalRecords,totalPages, patchs);
- }
- public static bool InsertPatchDetail(TPatchDetail patchDetail)
- {
- // 插入SQL语句
- string sql = @"
- INSERT INTO t_patch_detail (patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image, judge_lastnum_flag)
- VALUES (@PatchDetailId, @PatchId, @CreateTime, @StandDetailId, @StandValue, @SrcImage, @JudgeLastnumFlag);";
- // 定义参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetail.PatchDetailId),
- new SQLiteParameter("@PatchId", patchDetail.PatchId),
- new SQLiteParameter("@CreateTime", patchDetail.CreateTime),
- new SQLiteParameter("@StandDetailId", patchDetail.StandDetailId),
- new SQLiteParameter("@StandValue", patchDetail.StandValue),
- new SQLiteParameter("@SrcImage", patchDetail.SrcImage),
- new SQLiteParameter("@JudgeLastnumFlag",patchDetail.JudgeLastnumFlag),
- };
- // 执行插入操作
- try
- {
- int rowsAffected = SQLiteHelper.ExecuteNonQuery(sql, parameters);
- return rowsAffected > 0; // 返回是否成功插入
- }
- catch (Exception ex)
- {
- // 处理异常
- Console.WriteLine(ex.Message);
- return false;
- }
- }
- public static bool InsertPatchDetails(List<TPatchDetail> patchDetails)
- {
- // 插入SQL语句
- string sql = @"
- INSERT INTO t_patch_detail (patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image)
- VALUES (@PatchDetailId, @PatchId, @CreateTime, @StandDetailId, @StandValue, @SrcImage);";
- try
- {
- // 开始事务
- using (SQLiteConnection connection = SQLiteHelper.GetConnection())
- {
- connection.Open();
- using (SQLiteTransaction transaction = connection.BeginTransaction())
- {
- // 遍历列表插入每一条数据
- foreach (var patchDetail in patchDetails)
- {
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetail.PatchDetailId),
- new SQLiteParameter("@PatchId", patchDetail.PatchId),
- new SQLiteParameter("@CreateTime", patchDetail.CreateTime),
- new SQLiteParameter("@StandDetailId", patchDetail.StandDetailId),
- new SQLiteParameter("@StandValue", patchDetail.StandValue),
- new SQLiteParameter("@SrcImage", patchDetail.SrcImage)
- };
- // 执行插入操作
- SQLiteHelper.ExecuteNonQuery(sql, parameters, transaction);
- }
- // 提交事务
- transaction.Commit();
- }
- }
- return true;
- }
- catch (Exception ex)
- {
- // 处理异常
- Console.WriteLine(ex.Message);
- return false;
- }
- }
- public static bool UpdatePatchDetails(List<TPatchDetail> patchDetails)
- {
- // 更新 SQL 语句
- string sql = @"
- UPDATE t_patch_detail
- SET
- run_flag = @RunFlag,
- run_time = @RunTime,
- dst_image = @DstImage,
- result_meter = @ResultMeter,
- result_type = @ResultType,
- raw_value = @RawValue,
- final_value = @FinalValue,
- complete_value = @CompleteValue,
- value_changed = @ValueChanged,
- equal_flag = @EqualFlag,
- ai_ver = @AiVer,
- debug_info = @DebugInfo,
- log_path = @LogPath,
- memo = @Memo,
- meter_region = @MeterRegion,
- feature_region = @FeatureRegion,
- latest_complete = @LatestComplete,
- last_compress = @LastCompress,
- latest_value = @LatestValue,
- latest_time = @LatestTime
- WHERE patch_detail_id = @PatchDetailId;";
- try
- {
- using (SQLiteConnection connection = SQLiteHelper.GetConnection())
- {
- connection.Open();
- using (SQLiteTransaction transaction = connection.BeginTransaction())
- {
- foreach (var patchDetail in patchDetails)
- {
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@RunFlag", patchDetail.RunFlag),
- new SQLiteParameter("@RunTime", patchDetail.RunTime),
- new SQLiteParameter("@DstImage", patchDetail.DstImage),
- new SQLiteParameter("@ResultMeter", patchDetail.ResultMeter),
- new SQLiteParameter("@ResultType", patchDetail.ResultType),
- new SQLiteParameter("@RawValue", patchDetail.RawValue),
- new SQLiteParameter("@FinalValue", patchDetail.FinalValue),
- new SQLiteParameter("@CompleteValue", patchDetail.CompleteValue),
- new SQLiteParameter("@ValueChanged", patchDetail.ValueChanged),
- new SQLiteParameter("@EqualFlag", patchDetail.EqualFlag),
- new SQLiteParameter("@AiVer", patchDetail.AiVer),
- new SQLiteParameter("@DebugInfo", patchDetail.DebugInfo),
- new SQLiteParameter("@LogPath", patchDetail.LogPath),
- new SQLiteParameter("@Memo", patchDetail.Memo),
- new SQLiteParameter("@MeterRegion", patchDetail.MeterRegion),
- new SQLiteParameter("@FeatureRegion", patchDetail.FeatureRegion),
- new SQLiteParameter("@LatestComplete", patchDetail.LatestComplete),
- new SQLiteParameter("@LastCompress", patchDetail.LastCompress),
- new SQLiteParameter("@LatestValue", patchDetail.LatestValue),
- new SQLiteParameter("@LatestTime", patchDetail.LatestTime),
- new SQLiteParameter("@PatchDetailId", patchDetail.PatchDetailId) // 条件字段
- };
- SQLiteHelper.ExecuteNonQuery(sql, parameters, transaction);
- }
- // 提交事务
- transaction.Commit();
- }
- }
- return true;
- }
- catch (Exception ex)
- {
- Console.WriteLine("更新数据时出错: " + ex.Message);
- return false;
- }
- }
- //根据识别结果修改表内容
- public static bool UpdatePatchDetailWithResult(TPatchDetail detail)
- {
- string sql = @"
- UPDATE t_patch_detail
- SET run_flag = @RunFlag,
- run_time = @RunTime,
- dst_image = @DstImage,
- result_meter = @ResultMeter,
- result_type = @ResultType,
- raw_value = @RawValue,
- final_value = @FinalValue,
- complete_value = @CompleteValue,
- value_changed = @ValueChanged,
- equal_flag = @EqualFlag,
- ai_ver = @AiVer,
- debug_info = @DebugInfo,
- log_path = @LogPath,
- memo = @Memo,
- meter_type = @MeterType,
- last_unit = @LastUnit
- WHERE patch_detail_id = @PatchDetailId;";
- // 创建 SQL 参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", detail.PatchDetailId),
- new SQLiteParameter("@RunFlag", detail.RunFlag),
- new SQLiteParameter("@RunTime", detail.RunTime),
- new SQLiteParameter("@DstImage", detail.DstImage),
- new SQLiteParameter("@ResultMeter", detail.ResultMeter),
- new SQLiteParameter("@ResultType", detail.ResultType),
- new SQLiteParameter("@RawValue", detail.RawValue),
- new SQLiteParameter("@FinalValue", detail.FinalValue),
- new SQLiteParameter("@CompleteValue",detail.CompleteValue),
- new SQLiteParameter("@ValueChanged",detail.ValueChanged),
- new SQLiteParameter("@EqualFlag", detail.EqualFlag),
- new SQLiteParameter("@AiVer", detail.AiVer),
- new SQLiteParameter("@DebugInfo", detail.DebugInfo),
- new SQLiteParameter("@LogPath", detail.LogPath),
- new SQLiteParameter("@Memo",detail.Memo),
- new SQLiteParameter("@MeterType",detail.MeterType),
- new SQLiteParameter("@LastUnit",detail.LastUnit)
- };
- // 执行更新操作并返回受影响的行数
- return SQLiteHelper.ExecuteNonQuery(sql, parameters) > 0;
- }
- public static bool UpdatePatchDetailStandValue(string patchDetailId,string standValue,int equalFlag)
- {
- string sql = @"
- UPDATE t_patch_detail
- SET stand_value = @StandValue,
- equal_flag = @EqualFlag
- WHERE patch_detail_id = @PatchDetailId;";
- // 创建 SQL 参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetailId),
- new SQLiteParameter("@EqualFlag", equalFlag),
- new SQLiteParameter("@StandValue", standValue)
- };
- // 执行更新操作并返回受影响的行数
- return SQLiteHelper.ExecuteNonQuery(sql, parameters) > 0;
- }
- //同时插入t_patch与t_patch_detail(在一个事务中)
- public static bool InsertPatchAndDetails(TPatch patch, List<TPatchDetail> patchDetails)
- {
- try
- {
- using (SQLiteConnection connection = SQLiteHelper.GetConnection())
- {
- connection.Open();
- using (SQLiteTransaction transaction = connection.BeginTransaction())
- {
- // 插入 t_patch 表
- string patchSql = "INSERT INTO t_patch (patch_id, create_time, patch_name, stand_id, stand_name, judge_lastnum_flag) VALUES (@PatchId, @CreateTime, @PatchName, @StandId, @StandName, @JudgeLastnumFlag)";
- SQLiteParameter[] patchParams = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patch.PatchId),
- new SQLiteParameter("@CreateTime", patch.CreateTime),
- new SQLiteParameter("@PatchName", patch.PatchName),
- new SQLiteParameter("@StandId", patch.StandId),
- new SQLiteParameter("@StandName", patch.StandName),
- new SQLiteParameter("@JudgeLastnumFlag",patch.JudgeLastnumFlag),
- };
- SQLiteHelper.ExecuteNonQuery(patchSql, patchParams, transaction);
- // 插入 t_patch_detail 表
- foreach (var patchDetail in patchDetails)
- {
- //string detailSql = "INSERT INTO t_patch_detail (patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image) VALUES (@PatchDetailId, @PatchId, @CreateTime, @StandDetailId, @StandValue, @SrcImage)";
- string detailSql = @"
- INSERT INTO t_patch_detail (
- patch_detail_id, patch_id, create_time,
- stand_detail_id, stand_value, src_image,
- sample_time, station_key, station_id,
- meter_type, bright_val, flow_rate,
- digit_count, pointer_count, last_unit, num_in_upper,
- meter_region, feature_region, last_compress,
- latest_value, latest_time, latest_complete,judge_lastnum_flag
- ) VALUES (
- @PatchDetailId, @PatchId, @CreateTime,
- @StandDetailId, @StandValue, @SrcImage,
- @SampleTime, @StationKey, @StationId,
- @MeterType, @BrightVal, @FlowRate,
- @DigitCount, @PointerCount, @LastUnit, @NumInUpper,
- @MeterRegion, @FeatureRegion, @LastCompress,
- @LatestValue, @LatestTime, @LatestComplete, @JudgeLastnumFlag
- )";
- SQLiteParameter[] detailParams = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetail.PatchDetailId),
- new SQLiteParameter("@PatchId", patchDetail.PatchId),
- new SQLiteParameter("@CreateTime", patchDetail.CreateTime),
- new SQLiteParameter("@StandDetailId", patchDetail.StandDetailId),
- new SQLiteParameter("@StandValue", patchDetail.StandValue),
- new SQLiteParameter("@SrcImage", patchDetail.SrcImage),
- new SQLiteParameter("@SampleTime", patchDetail.SampleTime),
- new SQLiteParameter("@StationKey", patchDetail.StationKey),
- new SQLiteParameter("@StationId", patchDetail.StationId),
- new SQLiteParameter("@MeterType", patchDetail.MeterType),
- new SQLiteParameter("@BrightVal", patchDetail.BrightVal),
- new SQLiteParameter("@FlowRate", patchDetail.FlowRate),
- new SQLiteParameter("@DigitCount", patchDetail.DigitCount),
- new SQLiteParameter("@PointerCount", patchDetail.PointerCount),
- new SQLiteParameter("@LastUnit", patchDetail.LastUnit),
- new SQLiteParameter("@NumInUpper", patchDetail.NumInUpper),
- new SQLiteParameter("@MeterRegion", patchDetail.MeterRegion),
- new SQLiteParameter("@FeatureRegion", patchDetail.FeatureRegion),
- new SQLiteParameter("@LastCompress", patchDetail.LastCompress),
- new SQLiteParameter("@LatestValue", patchDetail.LatestValue),
- new SQLiteParameter("@LatestTime", patchDetail.LatestTime),
- new SQLiteParameter("@LatestComplete", patchDetail.LatestComplete),
- new SQLiteParameter("@JudgeLastnumFlag", patchDetail.JudgeLastnumFlag),
- };
- SQLiteHelper.ExecuteNonQuery(detailSql, detailParams, transaction);
- }
- // 提交事务
- transaction.Commit();
- return true;
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine($"插入数据失败:{ex.Message}");
- return false;
- }
- }
- public static bool UpdatePatchDetails_Latest(List<TPatchDetail> patchDetails)
- {
- try
- {
- using (SQLiteConnection connection = SQLiteHelper.GetConnection())
- {
- connection.Open();
- using (SQLiteTransaction transaction = connection.BeginTransaction())
- {
- // 插入 t_patch_detail 表
- foreach (var patchDetail in patchDetails)
- {
- // 更新 t_patch_detail 表(仅涉及的字段)
- string detailSql = @"
- UPDATE t_patch_detail
- SET latest_value = @LatestValue,
- latest_time = @LatestTime,
- latest_complete = @LatestComplete,
- last_compress = @LastCompress
- WHERE patch_detail_id = @PatchDetailId;";
- SQLiteParameter[] detailParams = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetail.PatchDetailId),
- new SQLiteParameter("@LastCompress", patchDetail.LastCompress),
- new SQLiteParameter("@LatestValue", patchDetail.LatestValue),
- new SQLiteParameter("@LatestTime", patchDetail.LatestTime),
- new SQLiteParameter("@LatestComplete", patchDetail.LatestComplete),
- };
- SQLiteHelper.ExecuteNonQuery(detailSql, detailParams, transaction);
- }
- // 提交事务
- transaction.Commit();
- return true;
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine($"插入数据失败:{ex.Message}");
- return false;
- }
- }
- public static bool UpdatePatchDetails_Latest(TPatchDetail patchDetail)
- {
- try
- {
- using (SQLiteConnection connection = SQLiteHelper.GetConnection())
- {
- connection.Open();
- // 更新 t_patch_detail 表(仅涉及的字段)
- string detailSql = @"
- UPDATE t_patch_detail
- SET latest_value = @LatestValue,
- latest_time = @LatestTime,
- latest_complete = @LatestComplete,
- last_compress = @LastCompress,
- meter_region = @MeterRegion,
- feature_region = @FeatureRegion
- WHERE patch_detail_id = @PatchDetailId;";
- SQLiteParameter[] detailParams = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetail.PatchDetailId),
- new SQLiteParameter("@LastCompress", patchDetail.LastCompress),
- new SQLiteParameter("@LatestValue", patchDetail.LatestValue),
- new SQLiteParameter("@LatestTime", patchDetail.LatestTime),
- new SQLiteParameter("@LatestComplete", patchDetail.LatestComplete),
- new SQLiteParameter("@MeterRegion", patchDetail.MeterRegion),
- new SQLiteParameter("@FeatureRegion", patchDetail.FeatureRegion),
- };
- SQLiteHelper.ExecuteNonQuery(detailSql, detailParams);
- return true;
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine($"插入数据失败:{ex.Message}");
- return false;
- }
- }
- public static Tuple<int, int, List<TPatchDetail>> GetPagedPatchDetails(int pageNumber, int pageSize, string patchId)
- {
- // 计算偏移量
- int offset = (pageNumber - 1) * pageSize;
- // 分页查询SQL
- //string sql = @"
- // SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image,
- // run_flag, run_time, dst_image, meter_type, digit_count, pointer_count,
- // last_unit, result_type, raw_value, final_value, equal_flag, ai_ver, debug_info, log_path
- // FROM t_patch_detail WHERE patch_id = @PatchId
- // ORDER BY create_time DESC -- 根据需要修改排序字段
- // LIMIT @PageSize OFFSET @Offset;";
- string sql = @"
- SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image,
- run_flag, run_time, dst_image, meter_type, digit_count, pointer_count,
- last_unit, result_type, raw_value, final_value, equal_flag, ai_ver, debug_info, log_path, memo
- FROM t_patch_detail WHERE patch_id = @PatchId
- ORDER BY create_time ASC -- 根据需要修改排序字段
- LIMIT @PageSize OFFSET @Offset;";
- // 定义参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId),
- new SQLiteParameter("@PageSize", pageSize),
- new SQLiteParameter("@Offset", offset)
- };
- // 执行查询并读取数据
- List<TPatchDetail> patchDetails = new List<TPatchDetail>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters))
- {
- while (reader.Read())
- {
- // 将查询结果映射到 TPatchDetail 对象
- TPatchDetail patchDetail = new TPatchDetail
- {
- PatchDetailId = reader.GetString(reader.GetOrdinal("patch_detail_id")),
- PatchId = reader.GetString(reader.GetOrdinal("patch_id")),
- CreateTime = reader.GetString(reader.GetOrdinal("create_time")),
- StandDetailId = reader.GetString(reader.GetOrdinal("stand_detail_id")),
- StandValue = reader.GetString(reader.GetOrdinal("stand_value")),
- SrcImage = reader.GetString(reader.GetOrdinal("src_image")),
- RunFlag = reader.GetInt32(reader.GetOrdinal("run_flag")),
- RunTime = reader.GetString(reader.GetOrdinal("run_time")),
- DstImage = reader.GetString(reader.GetOrdinal("dst_image")),
- MeterType = reader.GetInt32(reader.GetOrdinal("meter_type")),
- DigitCount = reader.GetInt32(reader.GetOrdinal("digit_count")),
- PointerCount = reader.GetInt32(reader.GetOrdinal("pointer_count")),
- LastUnit = reader.GetDouble(reader.GetOrdinal("last_unit")),
- ResultType = reader.GetInt32(reader.GetOrdinal("result_type")),
- RawValue = reader.GetInt64(reader.GetOrdinal("raw_value")),
- FinalValue = reader.GetInt64(reader.GetOrdinal("final_value")),
- EqualFlag = reader.GetInt32(reader.GetOrdinal("equal_flag")),
- AiVer = reader.GetString(reader.GetOrdinal("ai_ver")),
- DebugInfo = reader.GetString(reader.GetOrdinal("debug_info")),
- LogPath = reader.GetString(reader.GetOrdinal("log_path")),
- Memo = reader.GetString(reader.GetOrdinal("memo"))
- };
- patchDetails.Add(patchDetail);
- }
- }
- // 获取总记录数,用于计算总页数
- string countSql = "SELECT COUNT(*) FROM t_patch_detail WHERE patch_id = @PatchId";
- int totalRecords = Convert.ToInt32(SQLiteHelper.GetSingle(countSql, new SQLiteParameter("@PatchId", patchId)));
- // 计算总页数
- int totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);
- // 返回总记录数、总页数和分页结果
- return Tuple.Create(totalRecords, totalPages, patchDetails);
- }
- public static Tuple<int, int, List<TPatchDetail>> GetPagedPatchDetails(PatchFindModel findModel)
- {
- // 计算偏移量
- int offset = (findModel.PageNumber - 1) * findModel.PageSize;
- // 动态构造 WHERE 子句
- StringBuilder whereClause = new StringBuilder("WHERE patch_id = @PatchId");
- List<SQLiteParameter> parameters = new List<SQLiteParameter>
- {
- new SQLiteParameter("@PatchId", findModel.PatchId),
- new SQLiteParameter("@PageSize", findModel.PageSize),
- new SQLiteParameter("@Offset", offset)
- };
- if (findModel.RunFlag >= 0)
- {
- whereClause.Append(" AND run_flag = @RunFlag");
- parameters.Add(new SQLiteParameter("@RunFlag", findModel.RunFlag));
- }
- if (findModel.EqualFlag >= 0)
- {
- whereClause.Append(" AND equal_flag = @EqualFlag");
- parameters.Add(new SQLiteParameter("@EqualFlag", findModel.EqualFlag));
- }
- if (!string.IsNullOrEmpty(findModel.StationId))
- {
- whereClause.Append(" AND station_id = @StationId");
- parameters.Add(new SQLiteParameter("StationId", findModel.StationId));
- }
- if(findModel.PatchFindType == Patch.PatchFindType.HAVE_MEMO)
- {
- whereClause.Append(" AND memo != ''");
- //parameters.Add(new SQLiteParameter("@EqualFlag", findModel.EqualFlag));
- }
- //if (findModel.EqualFlag == 2) // 针对无标准值的查询条件
- //{
- // whereClause.Append(" AND stand_value = ''");
- //}
- // 分页查询SQL
- //string sql = $@"
- // SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image,
- // run_flag, run_time, dst_image, meter_type, digit_count, pointer_count,
- // last_unit, result_type, raw_value, final_value, equal_flag, ai_ver, debug_info, log_path, memo
- // FROM t_patch_detail
- // {whereClause}
- // ORDER BY create_time ASC -- 根据需要修改排序字段
- // LIMIT @PageSize OFFSET @Offset;";
- string sql = $@"
- SELECT * FROM t_patch_detail
- {whereClause}
- ORDER BY station_id,sample_time ASC
- LIMIT @PageSize OFFSET @Offset;";
- // 执行查询并读取数据
- List<TPatchDetail> patchDetails = new List<TPatchDetail>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters.ToArray()))
- {
- while (reader.Read())
- {
- TPatchDetail patchDetail = new TPatchDetail
- {
- PatchDetailId = reader.GetString(reader.GetOrdinal("patch_detail_id")),
- PatchId = reader.GetString(reader.GetOrdinal("patch_id")),
- CreateTime = reader.GetString(reader.GetOrdinal("create_time")),
- StandDetailId = reader.GetString(reader.GetOrdinal("stand_detail_id")),
- StandValue = reader.GetString(reader.GetOrdinal("stand_value")),
- SrcImage = reader.GetString(reader.GetOrdinal("src_image")),
- SampleTime = reader.GetString(reader.GetOrdinal("sample_time")),
- RunFlag = reader.GetInt32(reader.GetOrdinal("run_flag")),
- RunTime = reader.GetString(reader.GetOrdinal("run_time")),
- DstImage = reader.GetString(reader.GetOrdinal("dst_image")),
- ResultType = reader.GetInt32(reader.GetOrdinal("result_type")),
- RawValue = reader.GetInt64(reader.GetOrdinal("raw_value")),
- FinalValue = reader.GetInt64(reader.GetOrdinal("final_value")),
- CompleteValue = reader.GetInt64(reader.GetOrdinal("complete_value")),
- ValueChanged = reader.GetInt32(reader.GetOrdinal("value_changed")),
- ResultMeter = reader.GetInt32(reader.GetOrdinal("result_meter")),
- EqualFlag = reader.GetInt32(reader.GetOrdinal("equal_flag")),
- AiVer = reader.GetString(reader.GetOrdinal("ai_ver")),
- DebugInfo = reader.GetString(reader.GetOrdinal("debug_info")),
- LogPath = reader.GetString(reader.GetOrdinal("log_path")),
- Memo = reader.GetString(reader.GetOrdinal("memo")),
- StationKey = reader.GetString(reader.GetOrdinal("station_key")),
- StationId = reader.GetString(reader.GetOrdinal("station_id")),
- MeterType = reader.GetInt32(reader.GetOrdinal("meter_type")),
- BrightVal = reader.GetDouble(reader.GetOrdinal("bright_val")),
- FlowRate = reader.GetInt32(reader.GetOrdinal("flow_rate")),
- DigitCount = reader.GetInt32(reader.GetOrdinal("digit_count")),
- PointerCount = reader.GetInt32(reader.GetOrdinal("pointer_count")),
- LastUnit = reader.GetDouble(reader.GetOrdinal("last_unit")),
- NumInUpper = reader.GetInt32(reader.GetOrdinal("num_in_upper")),
- MeterRegion = reader.GetString(reader.GetOrdinal("meter_region")),
- FeatureRegion = reader.GetString(reader.GetOrdinal("feature_region")),
- LastCompress = reader.GetInt32(reader.GetOrdinal("last_compress")),
- LatestValue = reader.GetInt64(reader.GetOrdinal("latest_value")),
- LatestTime = reader.GetString(reader.GetOrdinal("latest_time")),
- LatestComplete = reader.GetInt64(reader.GetOrdinal("latest_complete")),
- JudgeLastnumFlag = reader.GetInt32(reader.GetOrdinal("judge_lastnum_flag")),
- };
- patchDetails.Add(patchDetail);
- }
- }
- // 获取总记录数,用于计算总页数
- string countSql = "SELECT COUNT(*) FROM t_patch_detail " + whereClause;
- int totalRecords = Convert.ToInt32(SQLiteHelper.GetSingle(countSql, parameters.ToArray()));
- // 计算总页数
- int totalPages = (int)Math.Ceiling((double)totalRecords / findModel.PageSize);
- // 返回总记录数、总页数和分页结果
- return Tuple.Create(totalRecords, totalPages, patchDetails);
- }
- public static VPatch GetVPatchById(string patchId)
- {
- VPatch vPatch = null;
- // 查询 SQL,从 v_patch 视图中获取数据
- string query = @"
- SELECT
- patch_id,
- create_time,
- patch_name,
- stand_id,
- stand_name,
- judge_lastnum_flag,
- detail_count,
- run_count,
- equal_count,
- invalid_count,
- error_count
- FROM v_patch
- WHERE patch_id = @PatchId;";
- // 构造参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId)
- };
- // 执行查询
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(query, parameters))
- {
- if (reader.Read())
- {
- vPatch = new VPatch
- {
- PatchId = reader["patch_id"].ToString(),
- CreateTime = reader["create_time"].ToString(),
- PatchName = reader["patch_name"].ToString(),
- StandId = reader["stand_id"].ToString(),
- StandName = reader["stand_name"].ToString(),
- JudgeLastnumFlag = Convert.ToInt32(reader["judge_lastnum_flag"]),
- DetailCount = reader["detail_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["detail_count"]),
- RunCount = reader["run_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["run_count"]),
- EqualCount = reader["equal_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["equal_count"]),
- InvalidCount = reader["invalid_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["invalid_count"]),
- ErrorCount = reader["error_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["error_count"]),
- };
- }
- }
- return vPatch;
- }
- public static Tuple<int, int, List<VPatchStation>> GetPagedPatchStations(int pageNumber, int pageSize, string findStationId,string patchId)
- {
- // 计算偏移量
- int offset = (pageNumber - 1) * pageSize;
- //动态构造 WHERE 子句
- StringBuilder whereClause = new StringBuilder("WHERE (patch_id = @PatchId");
- if (!string.IsNullOrEmpty(findStationId))
- {
- whereClause.Append(" AND station_id like @FindStationId");
- }
- whereClause.Append(") OR patch_id = ''");
- //string sql = @"
- // SELECT patch_id, station_id, total_count, error_count,equal_count, invalid_count
- // FROM v_patch_detail_station
- // WHERE patch_id = @PatchId OR patch_id = ''
- // ORDER BY station_id ASC -- 根据需要修改排序字段
- // LIMIT @PageSize OFFSET @Offset;";
- string sql = $@"
- SELECT patch_id, station_id, total_count, error_count,equal_count, invalid_count
- FROM v_patch_detail_station
- {whereClause}
- ORDER BY station_id ASC -- 根据需要修改排序字段
- LIMIT @PageSize OFFSET @Offset;";
- // 定义参数
- //SQLiteParameter[] parameters = new SQLiteParameter[]
- List<SQLiteParameter> parameters = new List<SQLiteParameter>
- {
- new SQLiteParameter("@PatchId", patchId),
- new SQLiteParameter("@PageSize", pageSize),
- new SQLiteParameter("@Offset", offset)
- };
- if (!string.IsNullOrEmpty(findStationId))
- {
- parameters.Add(new SQLiteParameter("FindStationId", "%" + findStationId + "%"));
- }
- // 执行查询并读取数据
- List<VPatchStation> vpsDetails = new List<VPatchStation>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters.ToArray()))
- {
- while (reader.Read())
- {
- VPatchStation patchDetail = new VPatchStation
- {
- PatchId = reader.GetString(reader.GetOrdinal("patch_id")),
- StationId = reader.GetString(reader.GetOrdinal("station_id")),
- TotalCount = reader.GetInt32(reader.GetOrdinal("total_count")),
- ErrorCount = reader.GetInt32(reader.GetOrdinal("error_count")),
- EqualCount = reader.GetInt32(reader.GetOrdinal("equal_count")),
- InvalidCount = reader.GetInt32(reader.GetOrdinal("invalid_count"))
- };
- vpsDetails.Add(patchDetail);
- }
- }
- // 获取总记录数,用于计算总页数
- string countSql = "SELECT COUNT(*) FROM v_patch_detail_station " + whereClause;
- //WHERE patch_id = @PatchId OR patch_id = ''";
- int totalRecords = Convert.ToInt32(SQLiteHelper.GetSingle(countSql, parameters.ToArray()));
- // 计算总页数
- int totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);
- // 返回总记录数、总页数和分页结果
- return Tuple.Create(totalRecords, totalPages, vpsDetails);
- }
- public static VPatchStation GetPatchStation(string patchId,string stationId)
- {
- VPatchStation vps = null;
- // 查询 SQL,从 v_patch 视图中获取数据
- string query = @"
- SELECT patch_id, station_id, total_count, error_count,equal_count, invalid_count
- FROM v_patch_detail_station
- WHERE patch_id = @PatchId AND station_id=@StationId;";
- // 构造参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId),
- new SQLiteParameter("@StationId", stationId),
- };
- // 执行查询
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(query, parameters))
- {
- if (reader.Read())
- {
- vps = new VPatchStation
- {
- PatchId = reader["patch_id"].ToString(),
- StationId = reader["station_id"].ToString(),
- TotalCount = reader["total_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["total_count"]),
- EqualCount = reader["equal_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["equal_count"]),
- ErrorCount = reader["error_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["error_count"]),
- InvalidCount = reader["invalid_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["invalid_count"])
- };
- }
- }
- return vps;
- }
- //获取所有的识别任务
- public static List<VPatch> GetAllVPatchs()
- {
- // 定义 SQL 查询语句,带有分页
- string sql = @"
- SELECT
- patch_id,
- create_time,
- patch_name,
- stand_id,
- stand_name,
- detail_count,
- judge_lastnum_flag,
- run_count,
- equal_count
- FROM v_patch WHERE detail_count = run_count
- ORDER BY create_time DESC";
- // 执行查询并获取结果
- List<VPatch> patchs = new List<VPatch>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql))
- {
- while (reader.Read())
- {
- // 将查询结果映射到 TStand 对象
- VPatch patch = new VPatch
- {
- PatchId = reader["patch_id"].ToString(),
- CreateTime = reader["create_time"].ToString(),
- PatchName = reader["patch_name"].ToString(),
- StandId = reader["stand_id"].ToString(),
- StandName = reader["stand_name"].ToString(),
- JudgeLastnumFlag = Convert.ToInt32(reader["judge_lastnum_flag"]),
- DetailCount = reader["detail_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["detail_count"]),
- RunCount = reader["run_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["run_count"]),
- EqualCount = reader["equal_count"] == DBNull.Value ? 0 : Convert.ToInt32(reader["equal_count"])
- };
- patchs.Add(patch);
- }
- }
- return patchs;
- }
- public static List<TPatchDetail> GetPatchDetailsWithRunFlag(string patchId,string stationId,int runFlag)
- {
- // 查询 SQL
- //string sql = @"
- // SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image,
- // run_flag, run_time, dst_image, meter_type, digit_count, pointer_count,
- // last_unit, result_type, raw_value, final_value, equal_flag, ai_ver, debug_info, log_path
- // FROM t_patch_detail
- // WHERE patch_id = @PatchId AND run_flag = 0
- // ORDER BY create_time AESC;"; // 可以根据需要修改排序字段
- //string sql = @"
- // SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image
- // FROM t_patch_detail
- // WHERE patch_id = @PatchId AND run_flag = 0
- // ORDER BY create_time ASC;"; // 可以根据需要修改排序字段
- string whereStation = " AND run_flag = @RunFlag";
- if (!string.IsNullOrEmpty(stationId))
- {
- whereStation = " AND station_id = @StationId";
- }
- //string sql = $@"
- // SELECT * FROM t_patch_detail
- // WHERE patch_id = @PatchId AND run_flag = 0{whereStation}
- // ORDER BY station_id,sample_time ASC";
- string sql = $@"
- SELECT * FROM t_patch_detail
- WHERE patch_id = @PatchId{whereStation}
- ORDER BY station_id,sample_time ASC";
- // 定义参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId),
- new SQLiteParameter("@StationId",stationId),
- new SQLiteParameter("@RunFlag",runFlag)
- };
- // 执行查询并读取数据
- List<TPatchDetail> patchDetails = new List<TPatchDetail>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters))
- {
- while (reader.Read())
- {
- // 将查询结果映射到 TPatchDetail 对象
- TPatchDetail patchDetail = new TPatchDetail
- {
- PatchDetailId = reader.GetString(reader.GetOrdinal("patch_detail_id")),
- PatchId = reader.GetString(reader.GetOrdinal("patch_id")),
- CreateTime = reader.GetString(reader.GetOrdinal("create_time")),
- StandDetailId = reader.GetString(reader.GetOrdinal("stand_detail_id")),
- StandValue = reader.GetString(reader.GetOrdinal("stand_value")),
- SrcImage = reader.GetString(reader.GetOrdinal("src_image")),
- SampleTime = reader.GetString(reader.GetOrdinal("sample_time")),
- RunFlag = reader.GetInt32(reader.GetOrdinal("run_flag")),
- RunTime = reader.GetString(reader.GetOrdinal("run_time")),
- DstImage = reader.GetString(reader.GetOrdinal("dst_image")),
- ResultType = reader.GetInt32(reader.GetOrdinal("result_type")),
- RawValue = reader.GetInt64(reader.GetOrdinal("raw_value")),
- FinalValue = reader.GetInt64(reader.GetOrdinal("final_value")),
- CompleteValue = reader.GetInt64(reader.GetOrdinal("complete_value")),
- ValueChanged = reader.GetInt32(reader.GetOrdinal("value_changed")),
- ResultMeter = reader.GetInt32(reader.GetOrdinal("result_meter")),
- EqualFlag = reader.GetInt32(reader.GetOrdinal("equal_flag")),
- AiVer = reader.GetString(reader.GetOrdinal("ai_ver")),
- DebugInfo = reader.GetString(reader.GetOrdinal("debug_info")),
- LogPath = reader.GetString(reader.GetOrdinal("log_path")),
- Memo = reader.GetString(reader.GetOrdinal("memo")),
- StationKey = reader.GetString(reader.GetOrdinal("station_key")),
- StationId = reader.GetString(reader.GetOrdinal("station_id")),
- MeterType = reader.GetInt32(reader.GetOrdinal("meter_type")),
- BrightVal = reader.GetDouble(reader.GetOrdinal("bright_val")),
- FlowRate = reader.GetInt32(reader.GetOrdinal("flow_rate")),
- DigitCount = reader.GetInt32(reader.GetOrdinal("digit_count")),
- PointerCount = reader.GetInt32(reader.GetOrdinal("pointer_count")),
- LastUnit = reader.GetDouble(reader.GetOrdinal("last_unit")),
- NumInUpper = reader.GetInt32(reader.GetOrdinal("num_in_upper")),
- MeterRegion = reader.GetString(reader.GetOrdinal("meter_region")),
- FeatureRegion = reader.GetString(reader.GetOrdinal("feature_region")),
- LastCompress = reader.GetInt32(reader.GetOrdinal("last_compress")),
- LatestValue = reader.GetInt64(reader.GetOrdinal("latest_value")),
- LatestTime = reader.GetString(reader.GetOrdinal("latest_time")),
- LatestComplete = reader.GetInt64(reader.GetOrdinal("latest_complete")),
- JudgeLastnumFlag = reader.GetInt32(reader.GetOrdinal("judge_lastnum_flag")),
- };
- patchDetails.Add(patchDetail);
- }
- }
- return patchDetails;
- }
- public static List<TPatchDetail> GetPatchDetailsWithRunFlag_StandDetal(string patchId, string stationId, int runFlag)
- {
- // 查询 SQL
- //string sql = @"
- // SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image,
- // run_flag, run_time, dst_image, meter_type, digit_count, pointer_count,
- // last_unit, result_type, raw_value, final_value, equal_flag, ai_ver, debug_info, log_path
- // FROM t_patch_detail
- // WHERE patch_id = @PatchId AND run_flag = 0
- // ORDER BY create_time AESC;"; // 可以根据需要修改排序字段
- //string sql = @"
- // SELECT patch_detail_id, patch_id, create_time, stand_detail_id, stand_value, src_image
- // FROM t_patch_detail
- // WHERE patch_id = @PatchId AND run_flag = 0
- // ORDER BY create_time ASC;"; // 可以根据需要修改排序字段
- string whereStation = " AND a.run_flag = @RunFlag";
- if (!string.IsNullOrEmpty(stationId))
- {
- whereStation = " AND a.station_id = @StationId";
- }
- //string sql = $@"
- // SELECT * FROM t_patch_detail
- // WHERE patch_id = @PatchId AND run_flag = 0{whereStation}
- // ORDER BY station_id,sample_time ASC";
- //string sql = $@"
- // SELECT * FROM t_patch_detail
- // WHERE patch_id = @PatchId{whereStation}
- // ORDER BY station_id,sample_time ASC";
- string sql = $@"
- SELECT a.*, b.dial_region as dial_region1,b.feature_region as feature_region1
- FROM t_patch_detail a
- LEFT JOIN t_stand_detail b ON a.stand_detail_id = b.stand_detail_id
- WHERE a.patch_id = @PatchId{ whereStation}
- ORDER BY a.station_id,a.sample_time ASC";
- // 定义参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId),
- new SQLiteParameter("@StationId",stationId),
- new SQLiteParameter("@RunFlag",runFlag)
- };
- // 执行查询并读取数据
- List<TPatchDetail> patchDetails = new List<TPatchDetail>();
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters))
- {
- while (reader.Read())
- {
- // 将查询结果映射到 TPatchDetail 对象
- TPatchDetail patchDetail = new TPatchDetail
- {
- PatchDetailId = reader.GetString(reader.GetOrdinal("patch_detail_id")),
- PatchId = reader.GetString(reader.GetOrdinal("patch_id")),
- CreateTime = reader.GetString(reader.GetOrdinal("create_time")),
- StandDetailId = reader.GetString(reader.GetOrdinal("stand_detail_id")),
- StandValue = reader.GetString(reader.GetOrdinal("stand_value")),
- SrcImage = reader.GetString(reader.GetOrdinal("src_image")),
- SampleTime = reader.GetString(reader.GetOrdinal("sample_time")),
- RunFlag = reader.GetInt32(reader.GetOrdinal("run_flag")),
- RunTime = reader.GetString(reader.GetOrdinal("run_time")),
- DstImage = reader.GetString(reader.GetOrdinal("dst_image")),
- ResultType = reader.GetInt32(reader.GetOrdinal("result_type")),
- RawValue = reader.GetInt64(reader.GetOrdinal("raw_value")),
- FinalValue = reader.GetInt64(reader.GetOrdinal("final_value")),
- CompleteValue = reader.GetInt64(reader.GetOrdinal("complete_value")),
- ValueChanged = reader.GetInt32(reader.GetOrdinal("value_changed")),
- ResultMeter = reader.GetInt32(reader.GetOrdinal("result_meter")),
- EqualFlag = reader.GetInt32(reader.GetOrdinal("equal_flag")),
- AiVer = reader.GetString(reader.GetOrdinal("ai_ver")),
- DebugInfo = reader.GetString(reader.GetOrdinal("debug_info")),
- LogPath = reader.GetString(reader.GetOrdinal("log_path")),
- Memo = reader.GetString(reader.GetOrdinal("memo")),
- StationKey = reader.GetString(reader.GetOrdinal("station_key")),
- StationId = reader.GetString(reader.GetOrdinal("station_id")),
- MeterType = reader.GetInt32(reader.GetOrdinal("meter_type")),
- BrightVal = reader.GetDouble(reader.GetOrdinal("bright_val")),
- FlowRate = reader.GetInt32(reader.GetOrdinal("flow_rate")),
- DigitCount = reader.GetInt32(reader.GetOrdinal("digit_count")),
- PointerCount = reader.GetInt32(reader.GetOrdinal("pointer_count")),
- LastUnit = reader.GetDouble(reader.GetOrdinal("last_unit")),
- NumInUpper = reader.GetInt32(reader.GetOrdinal("num_in_upper")),
- //MeterRegion = reader.GetString(reader.GetOrdinal("meter_region")),
- //FeatureRegion = reader.GetString(reader.GetOrdinal("feature_region")),
- MeterRegion = reader.GetString(reader.GetOrdinal("dial_region1")),
- FeatureRegion = reader.GetString(reader.GetOrdinal("feature_region1")),
- LastCompress = reader.GetInt32(reader.GetOrdinal("last_compress")),
- LatestValue = reader.GetInt64(reader.GetOrdinal("latest_value")),
- LatestTime = reader.GetString(reader.GetOrdinal("latest_time")),
- LatestComplete = reader.GetInt64(reader.GetOrdinal("latest_complete")),
- JudgeLastnumFlag = reader.GetInt32(reader.GetOrdinal("judge_lastnum_flag")),
- };
- patchDetails.Add(patchDetail);
- }
- }
- return patchDetails;
- }
- public static int GetPatchDetailsCountWithRunFlagZero(string patchId,string stationId)
- {
- string whereStation = "";
- if(!string.IsNullOrEmpty(stationId))
- {
- whereStation = " AND station_id = @StationId";
- }
- // 查询数据数量的 SQL
- string sql = $@"SELECT COUNT(*) FROM t_patch_detail WHERE patch_id = @PatchId AND run_flag = 0{whereStation}";
- // 定义参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchId", patchId),
- new SQLiteParameter("@StationId",stationId)
- };
- // 执行查询并返回数据数量
- return Convert.ToInt32(SQLiteHelper.GetSingle(sql, parameters));
- }
- /// <summary>
- /// 根据 patch_detail_id 删除指定的记录
- /// </summary>
- /// <param name="patchDetailId">要删除的记录的 ID</param>
- /// <returns>删除成功返回 true,否则返回 false</returns>
- public static bool DeleteTPatchDetailById(string patchDetailId)
- {
- // 构建删除的 SQL 语句
- string sql = "DELETE FROM t_patch_detail WHERE patch_detail_id = @PatchDetailId";
- // 创建参数数组
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", patchDetailId)
- };
- try
- {
- // 调用 SQLiteHelper 执行删除操作
- int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
- // 如果删除成功,返回 true,否则返回 false
- return rowsAffected > 0;
- }
- catch (Exception ex)
- {
- // 处理异常(如果有的话)
- Console.WriteLine("Error deleting data: " + ex.Message);
- return false;
- }
- }
- /// <summary>
- /// 根据 standDetailId 删除t_patch_detail与t_stand_detail中相关的数据
- /// </summary>
- /// <param name="standDetailId">要删除的记录的 模板详情ID</param>
- /// <returns>删除成功返回 true,否则返回 false</returns>
- public static bool Delete_TPatchDetail_TStandDetail_ByStand(string standDetailId)
- {
- // 构建删除的 SQL 语句
- //string sql = "DELETE FROM t_patch_detail WHERE patch_detail_id = @PatchDetailId";
- // 定义删除的 SQL 语句,使用事务来保证一致性
- string sql = @"
- BEGIN TRANSACTION;
- -- 删除 t_patch_detail 表中与 stand_id 相关的数据
- DELETE FROM t_patch_detail WHERE stand_detail_id = @StandDetailId;
- -- 删除 t_patch 表中与 patch_id 相关的数据
- DELETE FROM t_stand_detail WHERE stand_detail_id = @StandDetailId;
- COMMIT;";
- // 创建参数数组
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@StandDetailId", standDetailId)
- };
- try
- {
- // 调用 SQLiteHelper 执行删除操作
- int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
- // 如果删除成功,返回 true,否则返回 false
- return rowsAffected > 0;
- }
- catch (Exception ex)
- {
- // 处理异常(如果有的话)
- Console.WriteLine("Error deleting data: " + ex.Message);
- return false;
- }
- }
- public static bool UpdatePatchName(string patchId, string patchName)
- {
- string sql = @"
- UPDATE t_patch
- SET patch_name = @PatchName
- WHERE patch_id = @PatchId;";
- // 创建 SQL 参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchName", patchName),
- new SQLiteParameter("@PatchId", patchId)
- };
- // 执行更新操作并返回受影响的行数
- return SQLiteHelper.ExecuteNonQuery(sql, parameters) > 0;
- }
- public static bool UpdatePatchDetailMemo(string detailId,string memo)
- {
- // 定义 SQL 更新语句
- string sql = @"
- UPDATE t_patch_detail
- SET memo = @Memo
- WHERE patch_detail_id = @PatchDetailId;";
- // 创建 SQL 参数
- SQLiteParameter[] parameters = new SQLiteParameter[]
- {
- new SQLiteParameter("@PatchDetailId", detailId),
- new SQLiteParameter("@Memo", memo)
- };
- // 执行更新操作并返回受影响的行数
- return SQLiteHelper.ExecuteNonQuery(sql, parameters) > 0;
- }
- //升级数据库(t_patch_detail添加memo字段)
- public static void UpdateTPatchDetailSchema()
- {
- string sql = "PRAGMA table_info(t_patch_detail)";
- // 查询表结构,判断是否存在memo字段
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql))
- {
- bool memoExists = false;
- while (reader.Read())
- {
- if(reader["name"].ToString().ToLower() == "memo")
- {
- memoExists = true;
- break;
- }
- }
- reader.Close();
- //如果不存在memo字段,则添加该字段
- if (!memoExists)
- {
- sql = "ALTER TABLE t_patch_detail ADD COLUMN memo TEXT NOT NULL DEFAULT ''";
- SQLiteHelper.ExecuteNonQuery(sql, null);
- }
- }//using
- }
- //升级数据库(t_patch_detail添加memo字段)
- public static void UpdateTPatchSchema()
- {
- string sql = "PRAGMA table_info(t_patch)";
- // 查询表结构,判断是否存在memo字段
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql))
- {
- bool columnExists = false;
- while (reader.Read())
- {
- if (reader["name"].ToString().ToLower() == "judge_lastnum_flag")
- {
- columnExists = true;
- break;
- }
- }
- reader.Close();
- //如果不存在memo字段,则添加该字段
- if (!columnExists)
- {
- sql = "ALTER TABLE t_patch ADD COLUMN judge_lastnum_flag INTEGER NOT NULL DEFAULT 1";
- SQLiteHelper.ExecuteNonQuery(sql, null);
- }
- }//using
- }
- public static void UpdateTPatchDetail2Schema()
- {
- string sql = "PRAGMA table_info(t_patch_detail)";
- // 查询表结构,判断是否存在memo字段
- using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql))
- {
- bool columnExists = false;
- while (reader.Read())
- {
- if (reader["name"].ToString().ToLower() == "judge_lastnum_flag")
- {
- columnExists = true;
- break;
- }
- }
- reader.Close();
- //如果不存在memo字段,则添加该字段
- if (!columnExists)
- {
- sql = "ALTER TABLE t_patch_detail ADD COLUMN judge_lastnum_flag INTEGER NOT NULL DEFAULT 1";
- SQLiteHelper.ExecuteNonQuery(sql, null);
- }
- }//using
- }
- public static void RefreshV_PatchView()
- {
- string dropSql = "DROP VIEW IF EXISTS v_patch";
- string createSql = @"
- CREATE VIEW v_patch AS
- SELECT
- p.patch_id,
- p.create_time AS create_time,
- p.patch_name,
- p.stand_id,
- p.stand_name,
- p.judge_lastnum_flag,
- COUNT(pd.patch_id) AS detail_count,
- COUNT(CASE WHEN pd.run_flag = 1 THEN 1 END) AS run_count,
- COUNT(CASE WHEN pd.equal_flag = 1 THEN 1 END) AS equal_count,
- COUNT(CASE WHEN pd.equal_flag = 2 THEN 1 END) AS invalid_count,
- COUNT(CASE WHEN pd.equal_flag = 0 THEN 1 END) AS error_count
- FROM
- t_patch p
- LEFT JOIN
- t_patch_detail pd ON p.patch_id = pd.patch_id
- GROUP BY
- p.patch_id, p.create_time, p.patch_name, p.stand_id, p.stand_name, p.judge_lastnum_flag";
- SQLiteHelper.ExecuteNonQuery(dropSql, null);
- SQLiteHelper.ExecuteNonQuery(createSql, null);
- }
- //////////////////////////////////////////////////////////
- }
- }
|