修改值集表

验证状态:已源码核验、未联调;适用基线:Web 7fe6dd10、services 89bd222c;核验日期:2026-09-12

用途与 App 场景

按 ID 修改值集表(改写前按typeCode+row+key(精确匹配)做排除自身的重复检查)。注意本操作按请求字段无条件改写,不是增量补丁。

Web 使用位置

页面/功能 角色或空间分支 调用证据
编辑表单提交 后端授权 administrator 或 value-set-table:write;前端入口见调用证据 app/routes/($lng).$spaceId.configuration.value-set-table.edit.$valueSetTableId/route.tsx:114

协议身份

operationId http-put-main-service-system-api-configuration-value-set-table-updatebyid-be7b9231
method + path PUT /main-service/system-api/configuration/value-set-table/updateById
base URL 当前 Web 使用同源相对 URL;App 的部署 base URL 未由源码固定
headers Accept: application/json;charset=UTF-8;有登录态时 Authorization: Bearer <token>;body 操作为 Content-Type: application/json
序列化 object body 由公共 wrapper 执行 JSON.stringify

前置条件与权限

需要有效登录态,并满足 administrator 角色或 value-set-table:write。 资源表受 MyBatis 租户拦截器按当前认证租户上下文约束(es-center-server-main-service/src/main/java/com/es/center/server/config/MybatisPlusConfig.java:72-88;configuration 表不在 tenant-id-ignore-tables 白名单),请求中的租户筛选字段不能代替空间切换。认证与空间

输入

JSON 路径/参数 JSON 类型 位置 必填 可空 默认值 枚举/范围/单位 说明 字段证据
body object body 写入字段 ValueSetTableUpdateRequestDTOvalueSetTableId 必填;显式 set 全部业务字段,省略的键按 NULL 改写(当前 Web 编辑表单总是提交全部业务字段,不发送 revisionrevision 被写为 NULL) gt-common-configuration-dto/src/main/java/tech/gt/configuration/dto/ValueSetTableUpdateRequestDTO.javagt-common-configuration-common/src/main/java/tech/gt/configuration/service/ValueSetTableService.java:124-139 updateById

输出、应答或事件

JSON 路径 JSON 类型 出现条件 可空 枚举/范围/单位 说明 字段证据
timestamp number JSON 响应 epoch 毫秒 响应生成时间 gt-common-core/src/main/java/tech/gt/api/ApiResult.java
status number JSON 响应 成功为 200 不能只看 HTTP status gt-common-core/src/main/java/tech/gt/api/ApiResult.java
error/localizedError/path string | null JSON 响应 成功通常为 null;失败见差异页 gt-common-core/src/main/java/tech/gt/api/ApiResult.java
extraData object 成功 本操作无专属键,恒为 {} gt-common-core/src/main/java/tech/gt/api/ApiResult.java
data boolean 业务成功 true/false true=同租户内命中并更新;false=ID 未命中或跨租户(0 行) gt-common-configuration-common/src/main/java/tech/gt/configuration/service/ValueSetTableService.java:124-139 updateById

完成判据

status=200 && data=true 表示同租户内命中并已改写;data=false 表示未命中。改写是否生效可随后用 getById 读回验证。

示例

以下均为按已核验契约构造的示例,不是真实联调记录;ID、时间与租户为占位值。

请求:

1{
2  "valueSetTableId": "vstab-01",
3  "valueSetTypeCode": "region",
4  "row": "gd",
5  "key": "city",
6  "value": "深圳",
7  "sort": 1,
8  "revision": 1
9}

成功响应:

1{
2  "timestamp": 1789142400000,
3  "status": 200,
4  "error": null,
5  "localizedError": null,
6  "path": null,
7  "extraData": {},
8  "data": true
9}

按已核实重复检查出口构造的代表失败(排除自身后 typeCode+row+key(精确匹配) 仍存在):

1{
2  "timestamp": 1789142400000,
3  "status": 422,
4  "error": "Value set table repeat",
5  "localizedError": null,
6  "path": "<request-path>",
7  "extraData": {},
8  "data": null
9}

信封字段证据:gt-common-core/src/main/java/tech/gt/api/ApiResult.java(成功/失败信封)与 es-center-server-main-service/src/main/java/com/es/center/server/config/JsonFormatConfig.java:20-113(时间序列化)。

错误与边界

认证失败/权限失败:认证与资源权限拒绝的 wire 形态见错误差异页对应锚点。 Bean Validation(@NotBlank/@Size)与参数绑定失败适用请求校验(HTTP 200,body 400/1002-1004)。 改写前按 typeCode+row+key(精确匹配) 做排除自身的重复检查,冲突时 Value set table repeat(200/422)适用业务拒绝。 本操作对业务字段是"无条件 set":省略或 null 的键会把库中值改写为 NULL,不是保持不变;也没有乐观锁校验(revision 仅是普通字段)。 公共 Web helper 默认 15 分钟超时(app/.common/lib/fetch-timeouts.ts:4-76 fetchTimeout/fetchTimeoutResponseJson)。本组写/导入操作没有幂等键,超时后须先读取资源状态再决定是否重试,不能仅凭超时盲重试。

调用关系与资源清理

成功后 toast 并返回列表;同 save 的缓存滞后边界。

已知缺口

无已知会阻止按当前源码调用的关键契约缺口。updateById 的 NULL 改写语义与无乐观锁是现行行为,App 需按此设计。 仅完成双仓静态源码核验,未执行真实 HTTP、数据库或权限矩阵联调。

验证状态与依据

结论 状态 仓库/基线 路径、符号及定位 内容指纹(脏文件)
Web 方法、路径、序列化与消费 已源码核验 web 7fe6dd10 app/.client/api/system/configuration/valueSetTableApi.ts:14 configurationvalueSetTableUpdateByIdApiapp/routes/($lng).$spaceId.configuration.value-set-table.edit.$valueSetTableId/route.tsx:114;公共 wrapper:app/.common/lib/fetch-timeouts.ts:4-76 fetchTimeout/fetchTimeoutResponseJson 证据文件与 HEAD 一致
权限、输入、输出和完成语义 已源码核验 services 89bd222c es-center-server-main-service/src/main/java/com/es/center/server/configuration/controller/ValueSetTableController.java:106 updateByIdgt-common-configuration-common/src/main/java/tech/gt/configuration/service/ValueSetTableService.java:124-139 updateById/updateByIdCachegt-common-configuration-dto/src/main/java/tech/gt/configuration/dto/ValueSetTableUpdateRequestDTO.java 证据文件与 HEAD 一致
JSON 字段与时间类型 已源码核验 services 89bd222c 本资源族字段模型ValueSetTableListResponseDTO.javaValueSetTableGetByIdResponseDTO.java(gt-common-configuration-dto/src/main/java/tech/gt/configuration/dto/) 证据文件与 HEAD 一致
清单归属 已重新比对 inventory .scratch/institutional-app-api-docs/inventory/operations.json SHA-256 b5cce137b4fc602840fdbe74c99d90667b3e581815bddc709e263ffcc64e00f9(工作树仅既有格式化漂移,本票未修改)
真实部署联调 未执行 未发送请求、未连接数据库/缓存/JMS