ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

质检第一版代码

质检第一版代码 整体规划说明你现有代码:PipeToolsUserControl是顶部Palette工具栏,PluginEntry负责加载数据库+初始化Palette面板。我们新增:PipeCheckUserControl(右侧面板,里面放TreeView,质检检查项树,支持右键弹出动态配置窗体)原有DB:ToolsConfigDb(业务参数库)、TemplateConfigDb(模板库)新增质检库:QCConfig.db(SQLite),独立存放检查项元数据 + 用户项目配置,和你现有两套库分开,避免混表。一、QCConfig.db 表结构(SQLite,直接执行建表SQL)-- 表1:检查项元数据表 CheckItemMeta【内置,一般不允许用户增删,只能读】 CREATE TABLE CheckItemMeta ( CheckItemId TEXT PRIMARY KEY, GroupName TEXT NOT NULL, ItemShowName TEXT NOT NULL, CheckerClass TEXT NOT NULL, ParamSchema TEXT NOT NULL, -- JSON,定义参数类型、显示名称、范围 DefaultJson TEXT NOT NULL, -- 默认参数JSON SortIndex INTEGER NOT NULL DEFAULT 0, Remark TEXT ); -- 表2:项目质检配置表 ProjectCheckConfig【用户操作,右键保存写入】 CREATE TABLE ProjectCheckConfig ( CheckItemId TEXT PRIMARY KEY, IsEnable INTEGER NOT NULL DEFAULT 0, -- 0禁用 /1启用 SortIndex INTEGER NOT NULL DEFAULT 0, UserParamJson TEXT NOT NULL -- 用户配置JSON,图层、实体类型、阈值 ); -- 表3【可选】质检模板表,另存为整套配置模板 CREATE TABLE QC_Template( TemplateId TEXT PRIMARY KEY, TemplateName TEXT NOT NULL, ConfigSnapshot TEXT NOT NULL, CreateTime TEXT DEFAULT (datetime('now','localtime')) ); -- 初始化测试数据,直接插入【管线超长检查】示例 INSERT INTO CheckItemMeta(CheckItemId,GroupName,ItemShowName,CheckerClass,ParamSchema,DefaultJson,SortIndex,Remark) VALUES( 'PIPE_OVER_LENGTH', '管线几何检查', '管线超长检查', 'PipeQC.Checker.PipeOverLengthChecker', '{ "Params":[ {"Key":"MaxLength","Label":"超长阈值","Type":"Double","Default":75.0,"Unit":"m","Min":0.01,"Max":null} ] }', '{ "Layers":["PS*"], "ExcludeLayers":[], "EntityTypes":["LINE","LWPOLYLINE"], "MaxLength":75.0 }', 1, '检查管线长度超过阈值' ); -- 再插入一条:管线锐角检查示例 INSERT INTO CheckItemMeta(CheckItemId,GroupName,ItemShowName,CheckerClass,ParamSchema,DefaultJson,SortIndex,Remark) VALUES( 'PIPE_SHARP_ANGLE', '管线几何检查', '管线锐角检查', 'PipeQC.Checker.PipeSharpAngleChecker', '{ "Params":[ {"Key":"MinAngle","Label":"最小允许角度","Type":"Double","Default":30.0,"Unit":"°","Min":0.1,"Max":180} ] }', '{ "Layers":["PS*"], "ExcludeLayers":[], "EntityTypes":["LWPOLYLINE"], "MinAngle":30.0 }', 2, '管线夹角小于阈值标记错误' );二、数据库读取封装类(CommBaseDB.QCConfig 仿照你现有DB的风格,和PipeTopologyConfig写法对齐)你现有代码模式:xxxConfig.Instance.SetEnvironment(connStr,tableName); xxxConfig.Instance.Load();下面按照这套风格写,保持项目代码风格统一using System; using System.Collections.Generic; using System.Data.SQLite; using Newtonsoft.Json; namespace CommBaseDB.QCConfig { public class QCItemMeta { public string CheckItemId { get; set; } public string GroupName { get; set; } public string ItemShowName { get; set; } public string CheckerClass { get; set; } public string ParamSchema { get; set; } public string DefaultJson { get; set; } public int SortIndex { get; set; } public string Remark { get; set; } } public class QCUserConfig { public string CheckItemId { get; set; } public bool IsEnable { get; set; } public int SortIndex { get; set; }
返回列表