gz-oarms/docs/前后端联调指南.md

45 KiB
Raw Permalink Blame History

OARMS 前后端联调指南

AI 可执行的联调自动化校验手册。按模块逐层核对 PRD→前端接口→后端API→DTO→数据库表的完整链路。

一、联调流程总览

联调链路:PRD文档 → 前端接口定义 → 后端API路由 → 入参DTO → 数据库表 → 字段映射

每个模块的联调校验分为 5 层:

层级 校验内容 数据来源
L1 接口存在性 前端调用的路由是否在后端有对应实现 Controller @RequestMapping
L2 参数一致性 前端传参字段名/类型是否与后端 DTO 一致 Query/Req 类字段 vs 前端请求体
L3 返回值一致性 后端返回字段是否满足前端展示需要 VO/Entity 字段 vs 前端消费字段
L4 DTO-DB映射 Entity 字段是否与数据库列一一对应 @TableField vs DDL 列定义
L5 数据完整性 表是否存在、是否有初始数据、字段约束是否满足 DDL 文件 + 数据库查询

二、可执行校验规则

2.1 接口存在性校验

CHECK: 对前端每个 API 调用,在后端 Controller 中查找匹配路由
RULE:  HTTP方法 + 路径 必须精确匹配
FAIL:  前端调用 POST /api/xxx/save 但后端无此路由 → 缺少接口

2.2 参数一致性校验

CHECK: 前端请求体字段 vs 后端 Query/Req 类字段
RULE:
  - 字段名必须完全一致camelCase
  - 字段类型兼容前端String ↔ 后端String/Integer/LocalDate等
  - 必填字段标记一致
FAIL:
  - 前端传 screenName 但后端 DTO 无此字段 → 字段缺失
  - 前端传 String 但后端期望 Integer → 类型不匹配

2.3 返回值一致性校验

CHECK: 后端 VO/Entity 返回字段 vs 前端渲染需要的字段
RULE:
  - 前端表格列(col.prop) 必须与返回 JSON key 一致
  - 分页字段:后端 MyBatis-Plus 返回 records非 list
  - 日期格式:后端 @JsonFormat 自动格式化,前端直接展示
  - JSON字符串字段relatedRules/relatedLawClauses/scopeDistricts 返回 String前端需 JSON.parse()
FAIL:
  - 前端用 res.data.list 但后端返回 records → 分页字段不匹配
  - 前端直接对 JSON 字符串调 .map() → 类型错误

2.4 DTO-DB映射校验

CHECK: Entity 字段 vs 数据库表列
RULE:
  - @TableField("column_name") 的 column_name 必须在 DDL 中存在
  - Java类型映射String↔VARCHAR/CLOB, Integer↔TINYINT/INT, BigDecimal↔DECIMAL, LocalDate↔DATE, LocalDateTime↔TIMESTAMP
  - SuperEntity 审计字段createBy/createTime/createName/updateBy/updateTime/updateName不在 Entity 中声明但 DB 有对应列
FAIL:
  - Entity 字段无对应 DB 列 → 字段映射缺失
  - 类型不匹配(如 Java String vs DB INT→ 类型映射错误

2.5 数据完整性校验

CHECK: 数据库表是否存在、是否有初始数据
RULE:
  - 每个 Entity 对应的表必须在 DDL 文件中定义
  - 有 init_data.sql 的表应包含种子数据
  - 唯一约束字段必须有 check 接口支持
FAIL:
  - DDL 文件不存在 → 需创建表
  - 有表无数据 → 需补充初始数据

2.6 高频错误模式速查

错误模式 检测方法 修复方案
字段名不匹配中文prop vs 英文key 对比前端prop与后端VO字段 prop 必须与 JSON key 一致
rowKey不匹配默认id vs 实际主键名) 检查Entity @TableId字段名 显式设置 row-key="实际主键名"
分页字段名list vs records 检查返回类型 Page<Entity> 统一用 res.records
JSON字符串未解析 检查CLOB/JSON字段前端处理 JSON.parse() 或 Array.isArray() 判断
数组当单对象 检查一对多关系的详情接口 Array.isArray() ? data[0] : data
导出接口未设blob 检查文件下载请求 设置 responseType: 'blob'
null值导致组件报错 检查码表/选项接口返回 .filter(item => item.value != null)
排序字段驼峰未转下划线 检查后端排序逻辑 字段名转下划线后再拼SQL

三、模块核对表

3.1 BS-1 大屏管理

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/screen/query ScreenQuery RestResult<Page<ScreenDetailVO>> 分页查询
GET /api/screen/detail String id RestResult<ScreenDetailVO> 详情
POST /api/screen/save ScreenSaveReq RestResult<?> 新增
POST /api/screen/update ScreenSaveReq RestResult<?> 更新
POST /api/screen/remove String id RestResult<?> 删除
GET /api/screen/options - RestResult<List<Map>> 选项列表
GET /api/screen/district/list - RestResult<List<Map>> 行政区划选项
POST /api/screen/toggle-status String id, Integer status RestResult<?> 切换状态
GET /api/screen/check-code String screenCode, String excludeId RestResult<Map> 编码唯一校验
GET /api/screen/check-address String address, String excludeId RestResult<Map> 地址唯一校验
GET /api/screen/export ScreenQuery RestResult<List<Map>> 导出
POST /api/screen/import List<Map> dataList RestResult<Map> 导入
GET /api/screen/import-template - RestResult<List<Map>> 导入模板
GET /api/screen/histories String id RestResult<List<Map>> 历史版本

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
keyword String - 关键词搜索
district String - 区域筛选
screenStatus Integer - 状态筛选

SaveReq 字段

字段 类型 说明
id String 主键(更新时必传)
screenCode String 大屏编码(唯一)必传
screenName String 大屏名称 必传
address String 地址(唯一)必传
district String 所属区域 必传
ownerUnit String 业主单位 必传
ownerContact String 业主联系方式
operatorUnit String 运营单位 必传
operatorContact String 运营联系方式
advertiser String 广告主
screenSpec String 屏幕规格 必传
adPlayTimeRange String 广告播放时间段 必传
screenStatus Integer 状态
longitude BigDecimal 经度
latitude BigDecimal 纬度

数据库表bs_screen

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK, ASSIGN_UUID
SCREEN_CODE screenCode VARCHAR(30) NOT NULL, UNIQUE
SCREEN_NAME screenName VARCHAR(100) NOT NULL
ADDRESS address VARCHAR(200) NOT NULL, UNIQUE
DISTRICT district VARCHAR(20) NOT NULL
OWNER_UNIT ownerUnit VARCHAR(100) NOT NULL
OWNER_CONTACT ownerContact VARCHAR(20)
OPERATOR_UNIT operatorUnit VARCHAR(100) NOT NULL
OPERATOR_CONTACT operatorContact VARCHAR(20)
ADVERTISER advertiser VARCHAR(100)
SCREEN_SPEC screenSpec VARCHAR(50) NOT NULL
AD_PLAY_TIME_RANGE adPlayTimeRange VARCHAR(20) NOT NULL
SCREEN_STATUS screenStatus TINYINT NOT NULL, 默认1, 1=正常,2=停用,3=维修中
LONGITUDE longitude DECIMAL(10,6)
LATITUDE latitude DECIMAL(10,6)
CREATE_BY - (SuperEntity) VARCHAR(50)
CREATE_TIME - (SuperEntity) TIMESTAMP
CREATE_NAME - (SuperEntity) VARCHAR(50)
UPDATE_BY - (SuperEntity) VARCHAR(50)
UPDATE_TIME - (SuperEntity) TIMESTAMP
UPDATE_NAME - (SuperEntity) VARCHAR(50)

关联表bs_screen_history历史版本 DDLV1.0.0__BS_screen_ddl.sql + V1.0.0__BS_screen_init_data.sql


3.2 LB-1 法律法规

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/law-clause/query LawClauseQuery RestResult<Page<LawClauseEntity>> 分页查询
GET /api/law-clause/detail String id RestResult<LawClauseEntity> 详情
POST /api/law-clause/save LawClauseSaveReq RestResult<?> 新增
POST /api/law-clause/update LawClauseSaveReq RestResult<?> 更新
POST /api/law-clause/remove String id RestResult<?> 删除
GET /api/law-clause/options - RestResult<List<Map>> 选项列表
POST /api/law-clause/repeal String id RestResult<?> 废止
GET /api/law-clause/check-clause-number String clauseNumber, String excludeId RestResult<Map> 条款号唯一校验
GET /api/law-clause/effective - RestResult<List<LawClauseEntity>> 已生效条款

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
keyword String - 关键词搜索
effectiveStatus Integer - 生效状态筛选

SaveReq 字段

字段 类型 说明
id String 主键(更新时必传)
clauseCode String 条款编号(唯一)必传
lawName String 法规名称 必传
clauseNumber String 条款号 必传
clauseContent String 条款内容 必传
clauseContentSummary String 条款摘要
effectiveStatus Integer 生效状态 1=有效,2=废止
publishDate LocalDate 发布日期

数据库表lb_law_clause

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK, ASSIGN_UUID
CLAUSE_CODE clauseCode VARCHAR(30) UNIQUE
LAW_NAME lawName VARCHAR(200) NOT NULL
CLAUSE_NUMBER clauseNumber VARCHAR(50) NOT NULL
CLAUSE_CONTENT clauseContent VARCHAR(2000) NOT NULL
CLAUSE_CONTENT_SUMMARY clauseContentSummary VARCHAR(200)
EFFECTIVE_STATUS effectiveStatus TINYINT NOT NULL, 默认1, 1=有效,2=废止
PUBLISH_DATE publishDate DATE
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV2.0.0__LB_law_ddl.sql + V2.0.0__LB_law_init_data.sql


3.3 MR-1 监测规则

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/monitoring-rules/query MonitoringRuleQuery RestResult<Page<MonitoringRuleDetailVO>> 分页查询
GET /api/monitoring-rules/detail String id RestResult<MonitoringRuleDetailVO> 详情
POST /api/monitoring-rules/save MonitoringRuleSaveReq RestResult<?> 新增
POST /api/monitoring-rules/update MonitoringRuleSaveReq RestResult<?> 更新
POST /api/monitoring-rules/remove String id RestResult<?> 删除
POST /api/monitoring-rules/toggle-status String id, Integer status RestResult<?> 切换启用状态
GET /api/monitoring-rules/check-name String ruleName, String excludeId RestResult<Map> 名称唯一校验
GET /api/monitoring-rules/enabled - RestResult<List<Map>> 已启用规则
GET /api/monitoring-rules/scope-types - RestResult<List<Map>> 范围类型选项
GET /api/monitoring-rules/status-options - RestResult<List<Map>> 状态选项
POST /api/monitoring-rules/export MonitoringRuleQuery RestResult<List<Map>> 导出

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
keyword String - 关键词搜索
enableStatus Integer - 启用状态筛选
scopeType Integer - 范围类型筛选

SaveReq 字段

字段 类型 说明
id String 主键(更新时必传)
ruleCode String 规则编码(唯一)
ruleName String 规则名称(唯一)
ruleContent String 规则内容
scopeType Integer 适用范围 1=全部大屏,2=指定区域
scopeDistricts String 适用区域列表JSON数组字符串⚠️前端需JSON.stringify
enableStatus Integer 启用状态 1=已启用,2=已停用
clauseIds List<String> 关联法条ID列表

DetailVO 额外字段

字段 类型 说明
lawClauses List<Map> 关联法条详情列表
histories List<Map> 操作历史列表

数据库表

主表mr_monitoring_rule 关联表mr_rule_law_clause_rel规则-法条关联) 日志表mr_rule_operation_history操作历史

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
RULE_CODE ruleCode VARCHAR(30) UNIQUE
RULE_NAME ruleName VARCHAR(100) UNIQUE
RULE_CONTENT ruleContent VARCHAR(2000)
SCOPE_TYPE scopeType TINYINT 1=全部,2=指定区域
SCOPE_DISTRICTS scopeDistricts CLOB JSON数组 ⚠️前端需JSON.parse
ENABLE_STATUS enableStatus TINYINT 1=启用,2=停用
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV6.0.0__MR_monitoring_rule_ddl.sql + V6.0.0__MR_monitoring_rule_init_data.sql

⚠️ JSON字段注意scopeDistricts 在 DB 中为 CLOB 存储 JSON 数组,后端 Entity 返回 String 类型。前端使用时需要 JSON.parse() 解析,不能直接当数组用。


3.4 AM-1 录屏设置

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/recording-config/query RecordingConfigQuery RestResult<Page<RecordingConfigEntity>> 分页查询
GET /api/recording-config/detail String id RestResult<RecordingConfigEntity> 详情
POST /api/recording-config/save RecordingConfigSaveReq RestResult<?> 新增
POST /api/recording-config/update RecordingConfigSaveReq RestResult<?> 更新
POST /api/recording-config/remove String id RestResult<?> 删除
GET /api/recording-config/configurable-screens - RestResult<List<Map>> 可配置大屏列表
POST /api/recording-config/toggle-status String id, Integer status RestResult<?> 切换启用状态

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
keyword String - 关键词搜索
district String - 区域筛选
configStatus Integer - 配置状态筛选

SaveReq 字段

字段 类型 说明
id String 主键(更新时必传)
screenId String 大屏ID唯一约束
screenName String 大屏名称(冗余)
screenAddress String 大屏地址(冗余)
district String 所属区域(冗余)
recordStartTime String 录屏开始时间 HH:MM:SS
recordEndTime String 录屏结束时间 HH:MM:SS
recordDuration Integer 单次录屏时长10-300
recordFrequency Integer 录屏频率分钟1-60
configStatus Integer 配置状态 1=已启用,2=已停用

数据库表am_recording_config

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
SCREEN_ID screenId VARCHAR(50) UNIQUE
SCREEN_NAME screenName VARCHAR(200)
SCREEN_ADDRESS screenAddress VARCHAR(500)
DISTRICT district VARCHAR(50)
RECORD_START_TIME recordStartTime VARCHAR(8) HH:MM:SS
RECORD_END_TIME recordEndTime VARCHAR(8) HH:MM:SS
RECORD_DURATION recordDuration INT 10-300
RECORD_FREQUENCY recordFrequency INT 1-60
CONFIG_STATUS configStatus TINYINT 1=启用,2=停用
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV3.0.0__AM_recording_config_ddl.sql无 init_data


3.5 AM-2 随机录屏

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/recording-task/query RecordingTaskQuery RestResult<Page<RecordingTaskEntity>> 分页查询
GET /api/recording-task/detail String id RestResult<Map> 详情

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
screenId String - 大屏筛选
taskStatus Integer - 任务状态筛选
startTimeBegin String - 开始时间范围起
startTimeEnd String - 开始时间范围止
district String - 区域筛选
screenName String - 大屏名称筛选

数据库表am_recording_task

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
SCREEN_ID screenId VARCHAR(50)
CONFIG_ID configId VARCHAR(50)
ACTUAL_START_TIME actualStartTime TIMESTAMP
ACTUAL_END_TIME actualEndTime TIMESTAMP
TASK_STATUS taskStatus TINYINT 1=录屏中,2=已完成,3=失败
VIDEO_FILE_PATH videoFilePath VARCHAR(500)
RETRY_COUNT retryCount INT
ERROR_MESSAGE errorMessage VARCHAR(500)
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

关联表am_alert_notification告警通知

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
TASK_ID taskId VARCHAR(50)
SCREEN_ID screenId VARCHAR(50)
ALERT_TYPE alertType TINYINT 1=录屏失败,2=录屏超时,3=设备离线
ALERT_MESSAGE alertMessage VARCHAR(500)
IS_RESOLVED isResolved TINYINT 0=未处理,1=已处理
RESOLVED_BY resolvedBy VARCHAR(100)
RESOLVED_AT resolvedAt TIMESTAMP
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV4.0.0__AM_recording_task_ddl.sql无 init_data


3.6 AM-3 广告画面监控

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/monitor-record/query MonitorRecordQuery RestResult<Page<MonitorRecordEntity>> 分页查询
GET /api/monitor-record/detail String id RestResult<MonitorRecordEntity> 详情
POST /api/monitor-record/start String id RestResult<?> 开始监控
POST /api/monitor-record/judge MonitorJudgeReq RestResult<?> 监控判定

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
screenId String - 大屏筛选
monitorStatus Integer - 监控状态筛选
district String - 区域筛选
startTime String - 开始时间
endTime String - 结束时间
monitorPerson String - 监控人
screenName String - 大屏名称

JudgeReq 字段

字段 类型 说明
id String 记录ID
monitorStatus Integer 判定状态 3=正常,4=违规
monitorResult String 判定结果描述

数据库表am_monitor_record

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
TASK_ID taskId VARCHAR(50)
SCREEN_ID screenId VARCHAR(50)
SCREEN_NAME screenName VARCHAR(200) 冗余
SCREEN_ADDRESS screenAddress VARCHAR(500) 冗余
DISTRICT district VARCHAR(50) 冗余
MONITOR_STATUS monitorStatus TINYINT 1=待监控,2=监控中,3=正常,4=违规
MONITOR_RESULT monitorResult VARCHAR(500)
MONITOR_PERSON monitorPerson VARCHAR(100)
MONITORED_AT monitoredAt TIMESTAMP
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV5.0.0__AM_monitor_record_ddl.sql无 init_data


3.7 CW-1 固化取证

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/evidence-record/query EvidenceRecordQuery RestResult<Page<EvidenceRecordDetailVO>> 分页查询
GET /api/evidence-record/detail String id RestResult<EvidenceRecordDetailVO> 详情
POST /api/evidence-record/save EvidenceRecordSaveReq RestResult<?> 保存取证
GET /api/evidence-record/download String id RestResult<Map> 下载地址
GET /api/evidence-record/play String id RestResult<Map> 播放地址

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
district String - 区域筛选
evidenceStatus Integer - 取证状态筛选
startTime String - 开始时间
endTime String - 结束时间
evidencePerson String - 取证人

SaveReq 字段

字段 类型 说明
monitorRecordId String 关联监测记录ID 必传
screenId String 大屏ID 必传
evidenceVideoFile String 取证视频文件路径 必传
clipStartTime String 片段起始时间 HH:MM:SS 必传
clipEndTime String 片段结束时间 HH:MM:SS 必传
clipDuration Integer 片段时长(秒,>=3必传
evidencePerson String 取证人 必传

DetailVO 额外字段

字段 类型 说明
statusHistory List<Map> 状态变更历史

数据库表

主表cw_evidence_record 日志表cw_evidence_status_history

主表字段:

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
MONITOR_RECORD_ID monitorRecordId VARCHAR(50) NOT NULL
SCREEN_ID screenId VARCHAR(50) NOT NULL
SCREEN_NAME screenName VARCHAR(200) NOT NULL, 冗余
SCREEN_ADDRESS screenAddress VARCHAR(500) NOT NULL, 冗余
DISTRICT district VARCHAR(50) NOT NULL, 冗余
EVIDENCE_VIDEO_FILE evidenceVideoFile VARCHAR(500) NOT NULL, UNIQUE
CLIP_START_TIME clipStartTime VARCHAR(8) NOT NULL, HH:MM:SS
CLIP_END_TIME clipEndTime VARCHAR(8) NOT NULL, HH:MM:SS
CLIP_DURATION clipDuration INT NOT NULL, >=3
EVIDENCE_STATUS evidenceStatus TINYINT NOT NULL, 默认1, 1=待关联规则,2=已关联规则,3=已生成线索
EVIDENCE_PERSON evidencePerson VARCHAR(100) NOT NULL
EVIDENCED_AT evidencedAt TIMESTAMP NOT NULL
SOURCE_MONITOR_PERSON sourceMonitorPerson VARCHAR(100) NOT NULL, 冗余
SOURCE_MONITOR_TIME sourceMonitorTime TIMESTAMP 冗余
SOURCE_MONITOR_REMARK sourceMonitorRemark VARCHAR(500) 冗余
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV7.0.0__CW_evidence_ddl.sql无 init_data

⚠️ 文件下载/播放download 和 play 接口当前为占位实现,需对接文件存储系统。


3.8 CW-2 规则关联

接口清单

方法 路径 入参类型 返回类型 说明
GET /api/evidence-rule-relation/query-by-evidence String evidenceId RestResult<List<Map>> 按证据查关联规则
POST /api/evidence-rule-relation/relate RuleRelateReq RestResult<?> 关联规则

RuleRelateReq 字段

字段 类型 说明
evidenceId String 证据ID
ruleIds List<String> 规则ID列表

数据库表cw_evidence_rule_relation

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
EVIDENCE_ID evidenceId VARCHAR(50)
RULE_ID ruleId VARCHAR(50)
ASSOCIATED_BY associatedBy VARCHAR(50)
ASSOCIATED_AT associatedAt TIMESTAMP

DDLV8.0.0__CW_evidence_rule_relation_ddl.sql无 init_data


3.9 CW-3 线索生成

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/monitoring-clue/query MonitoringClueQuery RestResult<Page<MonitoringClueDetailVO>> 分页查询
GET /api/monitoring-clue/detail String id RestResult<MonitoringClueDetailVO> 详情
POST /api/monitoring-clue/generate String evidenceId RestResult<?> 生成线索
GET /api/monitoring-clue/clue-preview String evidenceId RestResult<Map> 生成前预览
GET /api/monitoring-clue/status-summary - RestResult<List<Map>> 各状态数量统计

Query 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
clueCode String - 线索编码
district String - 区域筛选
clueStatus Integer - 线索状态筛选
keyword String - 关键词

DetailVO 额外字段

字段 类型 说明
generationLogs List<Map> 生成日志列表

数据库表

主表cw_monitoring_clue 日志表cw_clue_generation_log

主表字段:

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
CLUE_CODE clueCode VARCHAR(20) UNIQUE, 格式 XS-{YYYYMMDD}-{seq3}
EVIDENCE_ID evidenceId VARCHAR(50) UNIQUE
SCREEN_ID screenId VARCHAR(50)
SCREEN_NAME screenName VARCHAR(100) 冗余
SCREEN_ADDRESS screenAddress VARCHAR(200) 冗余
DISTRICT district VARCHAR(20) 冗余
OWNER_UNIT ownerUnit VARCHAR(100) 冗余
OWNER_CONTACT ownerContact VARCHAR(20) 冗余
OPERATOR_UNIT operatorUnit VARCHAR(100) 冗余
OPERATOR_CONTACT operatorContact VARCHAR(20) 冗余
ADVERTISER advertiser VARCHAR(100) 冗余
RELATED_RULES relatedRules CLOB JSON数组 ⚠️需JSON.parse
RELATED_LAW_CLAUSES relatedLawClauses CLOB JSON数组 ⚠️需JSON.parse
VIDEO_EVIDENCE_PATH videoEvidencePath VARCHAR(500)
CLIP_START_TIME clipStartTime VARCHAR(8) 冗余
CLIP_END_TIME clipEndTime VARCHAR(8) 冗余
CLIP_DURATION clipDuration INT 冗余
CLUE_STATUS clueStatus TINYINT 1=待转办,2=已转办,3=处理中,4=已办结
GENERATED_BY generatedBy VARCHAR(100)
GENERATED_AT generatedAt TIMESTAMP
TRANSFERRED_AT transferredAt TIMESTAMP
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV9.0.0__CW_monitoring_clue_ddl.sql无 init_data

⚠️ JSON字段注意relatedRules 和 relatedLawClauses 为 CLOB 存储 JSON 数组,前端需 JSON.parse()。 ⚠️ 线索编码规则:自动生成,格式 XS-{YYYYMMDD}-{seq3}


3.10 CW-4 线索转办

接口清单

方法 路径 入参类型 返回类型 说明
POST /api/clue-transfer/query ClueTransferQuery RestResult<Page<ClueTransferDetailVO>> 分页查询
GET /api/clue-transfer/detail String id RestResult<ClueTransferDetailVO> 详情
POST /api/clue-transfer/submit ClueTransferReq RestResult<?> 提交转办
GET /api/clue-transfer/targets/districts - RestResult<List<Map>> 目标区域
GET /api/clue-transfer/targets/departments String districtCode RestResult<List<Map>> 目标部门
GET /api/clue-transfer/targets/persons String departmentId RestResult<List<Map>> 目标人员
GET /api/clue-transfer/clues/{clueId}/disposal-feedback String clueId RestResult<Map> 处置反馈
POST /api/clue-transfer/pending-clues/query PendingClueQuery RestResult<Page<PendingClueVO>> 待转办线索查询
GET /api/clue-transfer/pending-clues/detail String clueId RestResult<PendingClueDetailVO> 待转办线索详情
GET /api/clue-transfer/operation-logs String transferRecordId RestResult<List<OperationLogVO>> 操作日志
POST /api/clue-transfer/status-update TransferStatusUpdateReq RestResult<?> 状态更新(外部回调)
POST /api/clue-transfer/urge TransferUrgeReq RestResult<?> 催办
POST /api/clue-transfer/withdraw TransferWithdrawReq RestResult<?> 撤回

ClueTransferQuery 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
clueId String - 线索ID
transferTargetDistrict String - 目标区域
transferStatus String - 转办状态

ClueTransferReq 字段

字段 类型 说明
clueId String 线索ID
transferTargetDistrict String 目标区域
transferTargetDepartment String 目标部门
transferTargetPerson String 目标联系人
transferDescription String 转办说明

PendingClueQuery 字段

字段 类型 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页条数
clueCode String - 线索编码
district String - 区域
keyword String - 关键词

其他 Req 字段

TransferStatusUpdateReq

字段 类型 说明
transferRecordId String 转办记录ID
newStatus String 新状态
externalClueId String 外部线索ID
disposalResult String 处置结果
remark String 备注

TransferUrgeReq

字段 类型 说明
transferRecordId String 转办记录ID
urgeMessage String 催办信息

TransferWithdrawReq

字段 类型 说明
transferRecordId String 转办记录ID
withdrawReason String 撤回原因

ClueTransferDetailVO 额外字段

字段 类型 说明
clueCode String 线索编码
operationLogs List<Map> 操作日志

数据库表

主表cw_clue_transfer_record 日志表cw_transfer_operation_log

主表字段:

DB列 Java字段 类型 约束
ID id VARCHAR(50) PK
CLUE_ID clueId VARCHAR(50)
TRANSFER_TARGET_DISTRICT transferTargetDistrict VARCHAR(20)
TRANSFER_TARGET_DEPARTMENT transferTargetDepartment VARCHAR(100)
TRANSFER_TARGET_PERSON transferTargetPerson VARCHAR(50)
TRANSFER_DESCRIPTION transferDescription VARCHAR(500)
TRANSFER_PERSON transferPerson VARCHAR(100)
TRANSFERRED_AT transferredAt TIMESTAMP
TRANSFER_STATUS transferStatus VARCHAR(20) transferred/processing/completed/failed
EXTERNAL_CLUE_ID externalClueId VARCHAR(100)
DISPOSAL_RESULT disposalResult VARCHAR(2000)
DISPOSAL_COMPLETED_AT disposalCompletedAt TIMESTAMP
CREATE_BY ~ UPDATE_NAME - (SuperEntity) - 审计字段

DDLV10.0.0__CW_clue_transfer_ddl.sql无 init_data

⚠️ 模拟数据targets/districts、targets/departments、targets/persons 接口当前返回模拟数据,需对接组织架构系统。 ⚠️ 状态流转transferred → processing → completed/failed通过 status-update 接口由外部系统回调。