package com.ruoyi.satisfaction.domain.row; import lombok.Data; import java.util.Date; import java.util.List; /** * 满意度统计取「子任务」时的查询条件。 *

* 对应原实现 {@code ServiceSubtaskServiceImpl.getServiceSubtasks(ServiceSubtaskEntity)} * 里 {@code sltdMydTotalByScore} 实际用到的条件。原方法还支持近百个其它字段, * 但满意度只用到下面这些,故收敛为本查询对象。 *

* 每个字段与原来的 SQL 条件逐字对应(见 {@code SatisfactionMapper.xml}): *

*/ @Data public class SatisfactionSubtaskQuery { /** * 机构 id */ private String orgid; /** * 院区 id */ private String campusid; /** * 服务类型(满意度为 6 住院 / 14 门诊) */ private String serviceType; /** * 出院开始时间(按 endtime 过滤) */ private Date startOutHospTime; /** * 出院结束时间(按 endtime 过滤) */ private Date endOutHospTime; /** * 完成开始时间(按 finishtime 过滤,对应页面提交的 {@code startFinishTime}) *

* ⚠️ 2026-10-21 新增:原来只有 outHospTime 两个字段,而页面提交的是 * {@code startFinishTime / endFinishTime},Controller 也没有把它们传下来, * 于是取子任务时完全没有时间条件 —— 既导致统计口径不对,也导致 * {@code service_subtask} 被全量扫描、下游明细统计拿到几万个 id。 */ private Date startFinishTime; /** * 完成结束时间(按 finishtime 过滤) */ private Date endFinishTime; /** * 维度组合方式:病区维度与科室维度之间取 AND 还是 OR。 *

* 字段类型是 {@code String}(入参是 JSON 字符串),SQL 里用 {@code q.deptOrDistrict==1} * 与数字比较 —— OGNL 会把 {@code "1"} 转成数字再比,结论与字符串比较一致, * 这里保留原写法不动,避免改口径。 */ private String deptOrDistrict = "1"; /** * 在院/当前病区代码列表 → 落到 {@code service_subtask.hospitaldistrictcode} *

* 与 {@link #leavehospitaldistrictcodes} 是「同一维度的两列」:哪个参数传进来就过滤哪一列, * 不再一律按离院病区过滤(南华这批数据病区写在 hospitaldistrictcode, * leavehospitaldistrictcode 基本为空,只认后者会让统计只剩几条)。 */ private List hospitaldistrictcodes; /** * 离院病区代码列表 → 落到 {@code service_subtask.leavehospitaldistrictcode} */ private List leavehospitaldistrictcodes; /** * 在院/当前科室代码列表 → 落到 {@code service_subtask.deptcode} */ private List deptcodes; /** * 离院科室代码列表 → 落到 {@code service_subtask.leaveldeptcode} */ private List leaveldeptcodes; }