package com.ruoyi.satisfaction.service.strategy;
|
|
import com.ruoyi.satisfaction.domain.ServiceSubtaskDetailRatioExport;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
/**
|
* 满意度「站点口径」策略:<b>一个站点一套综合满意度得分口径</b>。
|
* <p>
|
* 这是本模块用来区分「南华」与「省立同德」两套满意度口径的<b>策略接口</b>:
|
* <ul>
|
* <li>{@link CommonSatisfactionScoreStrategy}({@link SatisfactionSites#COMMON})—— 通用/南华口径;</li>
|
* <li>{@link SltdSatisfactionScoreStrategy}({@link SatisfactionSites#SLTD})—— 省立同德口径。</li>
|
* </ul>
|
* 由 {@link SatisfactionScoreStrategyResolver} 按站点标识选择实现;调用方(Controller / Service)
|
* 只依赖本接口 + 解析器,不再自己写站点分支 —— 以后新增站点只需新增一个实现类。
|
* <p>
|
* <b>入参统一为</b>{@code List<ServiceSubtaskDetailRatioExport>}("问题详情占比"行:选项 + 数量 + 分值),
|
* 因为两个站点的综评入口拿到的都是这个结构。
|
*/
|
public interface SatisfactionScoreStrategy {
|
|
/**
|
* 站点标识(规范值,取自 {@link SatisfactionSites})
|
*/
|
String site();
|
|
/**
|
* 站点名称(中文,用于文档与日志)
|
*/
|
String siteName();
|
|
/**
|
* 计算「综合满意度得分」。
|
* <p>
|
* 返回值语义由各站点口径自行定义(通用口径是<b>平均分</b>保留 1 位;
|
* 同德口径是<b>百分制加权得分</b>保留 2 位),调用方按站点既有约定呈现。
|
*
|
* @param rows 同一道题(或同一批)的选项占比行
|
* @return 得分;<b>无法计算时返回 {@code null}</b>(调用方按站点既有约定回退,例如同德回退为 "0.00")
|
*/
|
BigDecimal comprehensiveScore(List<ServiceSubtaskDetailRatioExport> rows);
|
}
|