-- 用途:修正 yxe_self_report.chain_id 中残留的位置型占位符(chain_0、chain_3、chain_6 …) -- 日期:2026-10-11 -- 背景:前端 normalizeMerchantChain 在接口未返回 chainId 时会回退成 `chain_${index}`, -- 该值经审核端 saveMerchantEdit 写入 chain_id 落库。而按连锁筛选走的是等值匹配 -- (YxeSelfReportMapper.xml: a.chain_id = #{param.chainId}),占位符导致这些记录 -- 在按连锁筛选时被永久漏掉。本系统没有连锁表,chain 名称即事实上的连锁标识 -- (连锁字典 sys_dict_data.dict_id=175 的 dict_data_code 同样是连锁名)。 -- 影响:5 行(chain_6 -> 老百姓 3 行;chain_3 -> 百姓人家 2 行) -- 性质:幂等,可重复执行;以 chain_name 为准回填 chain_id -- 配套代码:MerchantServiceImpl.groupByChain 返回稳定 chainId; -- AuditSelfReportItem.vue 兜底链改用连锁名并在写入前拦截 chain_ 前缀 -- 执行前核对(应为 5 行) SELECT id, chain_id, chain_name FROM yxe_self_report WHERE chain_id REGEXP '^chain_[0-9]+$' ORDER BY id; -- 修正 UPDATE yxe_self_report SET chain_id = chain_name WHERE chain_id REGEXP '^chain_[0-9]+$' AND chain_name IS NOT NULL AND chain_name <> ''; -- 执行后核对(remaining_placeholder 与 mismatch 均应为 0) SELECT SUM(chain_id REGEXP '^chain_[0-9]+$') AS remaining_placeholder, SUM(chain_id <> chain_name) AS mismatch, COUNT(*) AS total FROM yxe_self_report; -- ============================================================ -- 执行记录 -- ============================================================ -- 2026-10-11 本地开发库(127.0.0.1:3306/yaoxiaoer,root) -- 执行结果:受影响 5 行 -- 执行后核对:remaining_placeholder = 0,mismatch = 0 -- 功能验证:按连锁筛选命中数 -- chainId=老百姓 279 -> 282(找回 id 119、130、169) -- chainId=百姓人家 174 -> 176(找回 id 138、139) -- -- 生产库:尚未执行。需经确认后按同一条语句复核执行。