g82tt
|
2315d5a174
|
V1.12.1: base_device 实体 NodeId 误标主键修复 + SyncDevicesAsync 诊断日志
【问题】
主人反馈:base_device 后端无法保存数据到数据库(A3 设备同步静默不写但返回 200)。
【根因】
base_device.cs:266-274 NodeId 字段被误标:
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
[Key]
public int? NodeId { get; set; }
而 DeviceId 已经是主键+自增(line 23-29),产生 3 重故障:
1. SqlSugar INSERT 时同时跳过 DeviceId 和 NodeId,但数据库 NodeId INT NULL 不是 AUTO_INCREMENT
→ entity.NodeId=gatewayNodeId 被跳过,实际写 NULL/默认值
2. Updateable WHERE 子句变成 DeviceId=X AND NodeId=Y 双重主键匹配
→ NodeId 实际值与赋的值不一致时,Update 影响行数=0 静默失败
3. SqlSugar 异常被 SyncDevicesAsync catch 块吞掉,Controller 看不到具体原因
【修复】
1. base_device.cs:268-270 移除 [SugarColumn(IsPrimaryKey=true,IsIdentity=true)] 和 [Key]
NodeId 改为普通外键字段(只保留 Column/Editable)
2. gateway_nodesService.cs: SyncDevicesAsync 新增 INSERT try/catch + 详细日志
- 每条新增/更新打印 Adapter/SourceId/DeviceId/NodeId 便于定位
- 失败时记录 entity 完整字段值(Name/Cat/Grp)便于排查
- catch 块 LogError 后 throw,异常不再被吞
【验证】
dotnet build api_sqlsugar 0 错误 0 警告
【效果】
- Insertable 正常写入 entity.NodeId=gatewayNodeId 值
- Updateable WHERE 只用 DeviceId 单主键匹配
- 异常不再静默,Controller 会返回 500 + 具体异常信息,主人能从日志看到根因
|
2026-07-24 05:48:18 +08:00 |
|
g82tt
|
3d41f4d412
|
V1.12: RuleEngineService DI 注入失败修复
【问题】
后端 VS 启动报: Unable to resolve service for type 'Warehouse.Services.iot_alarmService'
while attempting to activate 'Warehouse.Services.RuleEngineService'.
【根因】
1. iot_alarmService 通过框架 IDependency 机制被 AutofacContainerModuleExtension.AddModule
按第一个接口 Iiot_alarmService 注册到内置 DI(具体类未单独注册)
2. RuleEngineService 构造函数按具体类 iot_alarmService 注入 → 内置 DI 找不到 → 验证失败
【修复】
RuleEngineService.cs: 构造函数参数 + 字段类型由 iot_alarmService 改为 Iiot_alarmService
(符合框架惯例,与 gateway_nodesController.cs:40 / iot_alarmController.cs:15/24 一致)
【验证】
dotnet build api_sqlsugar 0 错误 0 警告
【效果】
- RuleEngineService 构造函数 DI 解析成功
- var app = builder.Build() 不再抛 AggregateException
- 后端可正常启动
- Quartz 调度 RuleEngineJob 每 10s 调一次 EvaluateAllAsync()
- 规则触发"告警"动作时 _alarmService.UpsertAlarmAsync 可正确调用
|
2026-07-24 05:34:21 +08:00 |
|
g82tt
|
a38f891197
|
全量提交: base_device子查询修复+SyncDevices父设备ParentDeviceId=0+KmsAdapter+前端多项修复
|
2026-06-18 11:14:52 +08:00 |
|
g82tt
|
1fb746c548
|
修复: Owl取流JSON反序列化(JsonOpts+PascalCase属性)+前端字段兼容+规则引擎SqlSugar语法
|
2026-06-08 10:50:14 +08:00 |
|
g82tt
|
29e12a235a
|
全量提交: KMS适配器终检修复+warehouse P0修复+MC4认证修复+网关B路由+接口文档+代码审核报告
|
2026-06-04 04:07:32 +08:00 |
|
g82tt
|
bb56c229f8
|
T1-T4: TaskController+3个IJob改用IServiceProvider构造注入+RuleEngineJob标记废弃
|
2026-06-04 00:43:38 +08:00 |
|
g82tt
|
9969d3bf6d
|
RuleEngine-R2-R4: RuleEngineService+RuleEngineJob+前端UI增强+大屏SignalR订阅
|
2026-06-04 00:24:46 +08:00 |
|
g82tt
|
5467f0c0e2
|
G1-G2: A1-A3自注册+BaseUrl修复+心跳重试+语法规范化+废弃标记
|
2026-06-03 23:47:43 +08:00 |
|
g82tt
|
8413a52a28
|
Fix-F2-F4: B4-batch+批量离线+凭据安全+前端地址+异常日志+滞后窗+console清理+API统一+Swagger+文档同步
|
2026-06-03 17:39:26 +08:00 |
|
g82tt
|
6835ce86ce
|
Fix-F1: RealtimePollJob实现+A1自注册+B组认证中间件
|
2026-06-03 17:35:36 +08:00 |
|
g82tt
|
f9eeeed843
|
V4完成: 预览+云台整合 操作列JSX按钮 全链路调通
|
2026-05-17 14:22:46 +08:00 |
|
g82tt
|
12ace53650
|
V3 基础设施: GatewayClient+3个Quartz Job+Startup注册
|
2026-05-17 10:41:59 +08:00 |
|
g82tt
|
b63915daa0
|
V1 Entity+Service扩展: 网关同步方法+字段分治+告警去重
|
2026-05-17 05:30:37 +08:00 |
|
g82tt
|
cfe26997bd
|
VolPro改造起点:device_manager模块代码生成完毕 6表页面可访问
|
2026-05-17 05:13:12 +08:00 |
|
g82tt
|
23ea4fe05f
|
Initial_commit_SecMPS_v2
|
2026-05-15 23:22:48 +08:00 |
|