2026-10-19.md 15 KB

2026-10-19:移动端故障数据范围对齐预警管理

目标与结论

  • 移动端故障通知列表按预警管理范围对齐设备数据权限。
  • 列表和详情/日志/审核复用服务端 SQL 范围,客户端不能传入用户名作为授权依据。

用户补充要求(后续调整)

  • 故障权限不再依赖 work_order_id,统一通过报警自身 device_code 匹配设备;用户所属公司设备类型及父类为 4 的共享窨井设备均可见。
  • 移动端故障通知展示全部报警状态;移动端首页“待处理”仅统计审核状态为“未审核/待核实”的报警,今日新增统计可见范围内当天全部报警。

变更与验证

  • 后端 AlarmOperationsMapper 改为始终按 alarm_data.device_code 匹配设备;移动端范围包含公司设备类型直接子级及父类 4 子级,列表不再强制未处理状态;首页统计显式传入未审核状态。
  • 后续排查发现 Mapper 列表 SQL 对 query.alarmStatus 无条件执行等值筛选,而“全部”查询的该参数为空,导致 SQL alarm_status = NULL 返回 0 条。已改为仅显式传入状态时追加条件,并增加空状态/指定状态 SQL 断言。
  • git diff --check 通过,Mapper 调用签名已检索确认。
  • mvn -pl zksy-system '-Dtest=AlarmMobileServiceTest,MobileAlarmMapperTest' test 未能执行到测试:工程编译被既有 SmsProperties.getSupervisionTemplateCode() 缺失阻断(EarlyWarningServiceImpl、WarningSupervisionNotifier)。

风险与后续

  • 需要修复或同步 SMS 配置模型后重跑目标测试;真实账号与共享窨井工单数据尚未端到端验证。

2026-10-19:PC 应急指挥值守与预案管理调整

目标与结论

  • 按 prd/emergency/index.html 调整 PC 应急指挥值守、应急预案分级/编辑/审批页面,不触及其他业务模块。
  • 接报人由当前登录用户确定,接报时间由服务端记录当前时间;移除来源渠道表单项,将联系电话文案改为上报人电话。
  • 核实结论前置;真实事件显示类别、等级、必选处置单位、处置人和核验人,处置人候选限定在处置单位及所有下级部门;不真实时隐藏其他业务字段但保留可选核实意见。
  • 已核实和处置中均可转接、报送,两个操作共用转接部门多选和备注表单。开始处置、跟踪共用备注和附件表单。
  • 分级页及预案列表/审批页字段筛选按原型收敛,保留预案模板、版本和审批查看流程。

变更与验证

  • 前端改动:jbgl.vue、cphs.vue、zjbs.vue、gzjc.vue、DisEventGrade.vue、DisPlanEditing.vue、DisPlanApproval.vue。
  • 后端修改 EventVerifyDTO 和 DisEventServiceImpl:接报时间强制服务端生成;编辑缺省时保留旧时间/渠道;核验人可指定、未指定默认当前用户;真实事件校验处置单位有效,处置人可选且后端校验部门祖先关系。不真实核实意见可空并写入默认日志说明。
  • npm run build:prod 通过;mvn -pl pipe-network-service/zksy-system -am -DskipTests compile 通过;目标测试 DispatchTimeFormatGuardTest 1 项通过;两仓 git diff --check 通过。

风险与后续

  • 仍需用实际登录用户及部门树做浏览器联调,尤其验证下级部门处置人候选、默认核验人回显及附件上传结果。
  • Maven 目标模块本次编译通过;没有覆盖数据库集成和完整应急事件服务状态流测试。

本轮继续修改

  • 不真实核实时保留核实意见输入,意见改为可选;真实事件仍校验类别、等级和处置单位。
  • 新增接报表单不展示接报人/接报时间,服务端强制使用当前用户和当前时间落库;上报人电话必填。
  • zjbs.vue 报送层级不再展示附件;gzcb.vue 默认查询、筛选和催办按钮仅覆盖已核实/处置中,电话文案统一为处置人电话。
  • cphs.vue 列表列顺序调整为发生时间、初判时间、接报时间;接报与核实详情抽屉压缩间距,事件编号置左上、状态置右上。
  • 新增 pipe-network-service/sql/dispatch_cleanup_unused_fields.sql,清理迁移后的旧流程表和旧字段;脚本明确保留仍被代码引用的 channel、handler_phone、attach_url。

本轮验证

  • npm run build:prod 通过(仅有既有 Sass 弃用提示)。
  • mvn -pl pipe-network-service/zksy-system -am -DskipTests compile 通过。
  • DispatchTimeFormatGuardTest 通过;两仓 git diff --check 通过。

主键序列统一

  • 四张表统一使用显式序列:dis_event_grade_id_seq、dis_plan_id_seq、dis_plan_log_id_seq、dis_plan_version_id_seq。
  • 新建表定义已改为 DEFAULT nextval(...);dis_event_grade 服务移除 MAX(id)+1,改由数据库序列发号。
  • 新增升级脚本 pipe-network-service/sql/dispatch_named_id_sequences.sql,负责移除旧 Identity、绑定固定序列并按现有最大 ID 校准。
  • 后端目标测试重新通过。

预案库字段收敛

  • dis_plan_library.event_type、event_level 统一存储 dis_plan_type、dis_plan_level 字典编码,并在模板管理/预案选择页面使用对应字典显示标签。
  • dis_plan_library.event_region、topic、plan_summary 已从实体、匹配结果和前端交互移除;专题匹配接口同步删除,匹配改为类型/等级/责任单位三项。
  • dispatch_refactor.sql 增加历史中文标签到字典编码的转换、三列幂等删除、字段注释和类型等级索引;模板种子脚本同步改为新字段。
  • 前端 npm run build:prod 通过,后端增量编译和 DispatchTimeFormatGuardTest 曾通过;本轮 clean compile 暴露工程既有 SmsProperties#getSupervisionTemplateCode() 编译阻断(与本次预案库改动无关)。

事件详情样式调整

  • 接报管理、初判核实、工作处置三个事件详情抽屉参考预警详情布局:顶部展示事件编号和状态,基础信息与处置相关人员使用分组描述表格,事件记录单独分组。
  • “事件记录(操作日志)”统一改为“事件记录”。
  • 前端生产构建与 git diff --check 通过(仅有既有 Sass 弃用提示)。

Kingbase 脚本修正

  • dispatch_refactor.sql 在存量 Identity 主键上提前执行 ALTER SEQUENCE ... OWNED BY 会触发 Kingbase“无法更改标识列的所有权”。已移除主脚本中的四处 OWNED BY,统一延后到先 DROP IDENTITY 的 dispatch_named_id_sequences.sql。
  • 发生该错误后需先在当前连接执行 ROLLBACK;,再整体重跑修正后的主脚本;不要继续在 aborted transaction 中执行后续语句。

预案与事件分级字典统一

  • DisPlanEditing.vue 的预案类型、预案级别,以及模板新增/编辑表单和模板列表,统一使用 useDict('dis_plan_type', 'dis_plan_level') 对应 sys_dict_data.dict_type,模板列表和表单文案改为“预警类型”“预警级别”。
  • DisEventGrade.vue 的事件类别、事件等级下拉、列表展示和导出同步使用 dis_plan_type、dis_plan_level。
  • npm run build:prod 通过,仅保留既有 Sass 弃用提示;前端 git diff --check 通过。

dis_event_grade.event_type 评估

  • 前端 DisEventGrade.vue 已无 eventType 字段使用。
  • 后端 DisEventGrade 实体、DisEventGradePageDTO、DisEventGradeServiceImpl 的查询和更新仍引用 event_type。
  • 该列可删除,但必须同步清理 Java 字段/查询赋值、dispatch_refactor.sql 建表与加列/注释,并提供 Kingbase DROP COLUMN IF EXISTS 脚本;不能只删除数据库列。
  • dis_event.event_type、dis_plan_library.event_type 和预案匹配对象的 eventType 是其他业务字段,不能一并删除。

清理 dis_event_grade.event_type

  • 已从后端 DisEventGrade 实体、分页 DTO、查询条件和更新赋值中移除 event_type。
  • 已从 dispatch_refactor.sql 的建表/补列/注释中移除,并加入 DROP COLUMN IF EXISTS event_type;合并 Kingbase 脚本同步加入幂等删除。
  • mvn -pl pipe-network-service/zksy-system -am -DskipTests compile 通过;数据库脚本仍需在目标 Kingbase 执行后才会实际删除存量列。

预案类型取数复核

  • 用户要求 DisPlanEditing.vue 所有预案类型读取 sys_dict_data 中 dict_type = 'dis_plan_type' 的数据。
  • 已确认现有筛选、预案列表/表单、模板列表/表单、新建模板选择与导出均复用 useDict('dis_plan_type', 'dis_plan_level'),本轮无需修改业务代码。
  • 已核对调用链:getDicts 请求 /system/dict/data/type/dis_plan_type,后端查询 app_user.sys_dict_data,按字典类型和启用状态过滤,并按 dict_sort 排序;显示 dict_label、提交 dict_value。
  • Vue SFC 脚本与模板编译、git diff --check 均通过。未连接目标数据库验证实际字典内容。

删除事件接报人冗余列与接报管理管网类型

  • 按用户要求移除 dis_event.reporter:删除实体与接报入参字段、接报保存写入逻辑;展示 VO 的接报人继续按 create_user_id 查询昵称,不再依赖名称快照。
  • jbgl.vue 移除管网类型的列表列、详情项、表单项、字典请求及新增/编辑提交字段。
  • 后端主建表脚本及已有清理/合并脚本同步删除 reporter,修正人员迁移脚本的过期说明与自检示例;新增仅删该列的 pipe-network-service/sql/dispatch_drop_event_reporter.sql,便于存量库单独升级。
  • 后端 mvn -pl pipe-network-service/zksy-system -am -DskipTests compile -q 通过,前端 jbgl.vue 脚本与模板编译通过。
  • 尚未执行目标 Kingbase 的删列脚本;需部署新版后端后执行。创建人缺失或用户已删除的事件不再有接报人名称快照可回退。

接报表单字段顺序

  • jbgl.vue 新增/编辑共用表单将“事件描述”移至第一行,其他字段顺序、校验和提交逻辑保持原样。
  • Vue SFC 脚本/模板编译及 git diff --check 通过;无新增风险或后续迁移。

工作处置列表字段调整

  • 按用户要求移除 gzjc.vue 列表“管网类型”列;详情展示及其字典引用保留。
  • Vue SFC 脚本/模板编译及 git diff --check 通过;无新增风险或后续迁移。
  • 后续按用户要求将列表 handler 列标题从“负责人”改为“处置人”,与详情文案一致;git diff --check 通过。

四个应急值守页面共用事件详情

  • 按用户要求从 jbgl.vue 提取 disOnDuty/EventDetailDrawer.vue;jbgl.vue、gzjc.vue、zjbs.vue、补充指定的 cphs.vue 均接入该组件,字段与布局统一按接报管理详情展示。
  • 公共组件统一通过 getEventDetail(id) 加载最新事件档案及 logs,事件记录继续复用 EventLogTimeline.vue;删除各页面重复的抽屉、日志转换、附件详情辅助函数、详情样式和不再使用的字典引用。
  • 保留核实、开始处置/跟踪、解除、转接/报送表单与数据状态;初判核实 GIS 点位点击也进入公共详情。
  • 公共组件提供加载状态、失败重试,并忽略切换事件、关闭及卸载后的旧响应,避免不同事件数据串用。
  • 五个 Vue 文件脚本/模板/样式编译通过;模拟接口异步验证覆盖最新档案与日志、乱序响应、关闭/卸载、失败重试和空详情,全部通过;npm run build:prod 通过(既有 Sass 弃用提示)。
  • 未进行真实登录态浏览器联调,无数据库结构或后端接口改动。

数字预案库移除 create_by

  • 按用户要求移除后端 DisPlanLibrary.createBy 及模板新增时的登录名赋值,保留 create_user_id。
  • 种子脚本改用按登录名查询用户 ID 写入 create_user_id;主结构脚本和序列/字典合并脚本同步幂等删列;人员 ID 迁移脚本移除对预案库旧 create_by 的回填引用并修正说明。
  • 新增后端 pipe-network-service/sql/dispatch_drop_plan_library_create_by.sql,供存量 Kingbase 单独删列并核验。
  • mvn -pl pipe-network-service/zksy-admin -am -DskipTests compile -q 通过;后端 git diff --check 通过;前端未使用该字段,无业务代码改动。
  • 尚未执行目标数据库脚本,需部署新版后端后执行;历史记录已存在的 create_user_id 保留,未关联 ID 的旧登录名在删列后不再保留。

预案与模板编制单位表单调整

  • 按用户要求将 DisPlanEditing.vue 模板新增/编辑表单及列表的“责任单位”改为“编制单位”,输入提示同步调整。
  • 预案新增/编辑共用表单的编制单位改为普通文本输入,移除部门下拉、候选加载和该页不再使用的 API 导入;保留原字段与提交逻辑。
  • Vue SFC 脚本与模板编译通过,git diff --check 通过。
  • 无数据库或接口变更;未进行浏览器登录态联调。

预案正文改用公告富文本编辑器

  • DisPlanEditing.vue 的预案正文和模板章节正文改用 sys_notice 使用的 NoticeEditor.vue(wangEditor),统一工具栏、HTML 内容格式和图片上传能力。
  • NoticeEditor.vue 增加可配置 placeholder 属性,公告原有默认提示保持不变;预案场景传入对应提示。
  • 相关 Vue SFC 编译通过,npm run build:prod 通过(仅既有 Sass 弃用警告),git diff --check 通过。
  • 未进行真实登录态浏览器联调;正文仍通过原 content、planContent 字段提交。

预案附件并入富文本

  • DisPlanEditing.vue 移除独立 PDF/Word 附件上传、粘贴上传、版本附件下载和导出附件列;预案正文与模板正文继续通过 sys_notice 的 wangEditor 上传图片。
  • 预案审批页同步移除附件展示入口;正文仍使用 content / planContent。
  • 后端移除 DisPlan、DisPlanVersion、PlanSaveDTO、PlanVersionVO 的附件字段及服务层映射;主结构/迁移 SQL 不再创建或搬迁这些字段。
  • 新增 pipe-network-service/sql/dispatch_drop_plan_attachments.sql,并将历史 dispatch_plan_version_attach.sql 改为幂等删列脚本,清理 dis_plan、dis_plan_version 的存量附件列。
  • 前端两个预案页面 SFC 编译、后端 Maven 编译、两端 git diff --check 均通过;数据库脚本尚未在目标 KingbaseES 执行。

预案列表操作按钮布局

  • DisPlanEditing.vue、DisPlanApproval.vue 的表格操作按钮改为 flex 不换行布局,取消按钮默认间距并调整操作列宽度;模板操作和审批操作同样处理。
  • 两个 Vue SFC 模板/样式编译通过,git diff --check 通过。