package com.ruoyi.satisfaction.domain.row; import lombok.Data; /** * 满意度分类只读视图(语音侧与问卷侧共用)。 *

* 为什么共用一个类:语音的 {@code ivr_liba_script_assort} 与问卷的 * {@code svy_lib_script_category} 在满意度统计里语义完全一致—— * 都是「一个满意度分类:id + 名称 + type」,调用方只用来 * 「按 {@code type.contains("myd")} 过滤出分类 id、并按名称分组」。 *

* 两表的原始列名不同,SQL 里已做别名归一: *

*

* ⚠️ 这是只读视图。 */ @Data public class SatisfactionCategoryRow { /** * 分类 id */ private Long id; /** * 分类名称 *

注意:分类口径统计是按「模板上的分类名」({@code script_assortname} / * {@code categoryName})分组,而不是用本字段;本字段主要用于建分类 id → 名称的映射。 */ private String name; /** * 分类类型(满意度固定为 myd 相关,调用方按 contains("myd") 过滤) */ private String type; /** * 对应列 {@code pid}:父分类 id(顶层为 {@code null} 或 {@code -1})。 *

* 用途:{@code /smartor/trace/getSatisfactionExceptConfigQuestion} 走的是 * 语音分类的服务方法 {@code IvrLibaScriptAssortServiceImpl.selectIvrLibaScriptAssortList}, * 该方法会把分类拼成树、只返回顶层节点({@code pid == null || pid == -1}), * 所以调用方必须用本字段做同样的顶层筛选才能与原文一致。 *

* 语音侧与问卷侧都取了本列,但只有语音侧需要按它筛顶层—— * 问卷侧原文直接用 {@code svyLibScriptCategoryMapper} 取全部分类(不拼树), * 两侧不一致是原文行为,必须保留。 */ private Long pid; }