package com.ruoyi.satisfaction.domain.row;
|
|
import lombok.Data;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 满意度统计取「子任务」时的查询条件。
|
* <p>
|
* 对应原实现 {@code ServiceSubtaskServiceImpl.getServiceSubtasks(ServiceSubtaskEntity)}
|
* 里 {@code sltdMydTotalByScore} 实际用到的条件。原方法还支持近百个其它字段,
|
* 但满意度只用到下面这些,故收敛为本查询对象。
|
* <p>
|
* 每个字段与原来的 SQL 条件<b>逐字对应</b>(见 {@code SatisfactionMapper.xml}):
|
* <ul>
|
* <li>{@code orgid}:{@code and orgid = #{orgid}}(非空才拼)</li>
|
* <li>{@code campusid}:{@code and campusid = #{campusid}}(非空才拼)</li>
|
* <li>{@code serviceType}:{@code and service_type = #{serviceType}}(非空才拼;调用方逐个 serviceType 查询再合并)</li>
|
* <li>{@code startOutHospTime} / {@code endOutHospTime}:按 {@code endtime} 的 yymmdd 比较</li>
|
* <li>{@code deptOrDistrict} 为 {@code 1} 时,按 {@code leavehospitaldistrictcodes} 过滤病区</li>
|
* <li>{@code leaveldeptcodes}:按 {@code deptcode} 过滤科室</li>
|
* </ul>
|
*/
|
@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})
|
* <p>
|
* ⚠️ 2026-10-21 新增:原来只有 outHospTime 两个字段,而页面提交的是
|
* {@code startFinishTime / endFinishTime},Controller 也没有把它们传下来,
|
* 于是取子任务时<b>完全没有时间条件</b> —— 既导致统计口径不对,也导致
|
* {@code service_subtask} 被全量扫描、下游明细统计拿到几万个 id。
|
*/
|
private Date startFinishTime;
|
|
/**
|
* 完成结束时间(按 finishtime 过滤)
|
*/
|
private Date endFinishTime;
|
|
/**
|
* 维度组合方式:病区维度与科室维度之间取 AND 还是 OR。
|
* <ul>
|
* <li>{@code 1}:病区 AND 科室(页面默认值)</li>
|
* <li>{@code 2}:病区 OR 科室</li>
|
* <li>其它取值:沿用旧行为(只看科室)</li>
|
* </ul>
|
* 字段类型是 {@code String}(入参是 JSON 字符串),SQL 里用 {@code q.deptOrDistrict==1}
|
* 与数字比较 —— OGNL 会把 {@code "1"} 转成数字再比,结论与字符串比较一致,
|
* 这里保留原写法不动,避免改口径。
|
*/
|
private String deptOrDistrict = "1";
|
|
/**
|
* 在院/当前病区代码列表 → 落到 {@code service_subtask.hospitaldistrictcode}
|
* <p>
|
* 与 {@link #leavehospitaldistrictcodes} 是「同一维度的两列」:哪个参数传进来就过滤哪一列,
|
* 不再一律按离院病区过滤(南华这批数据病区写在 hospitaldistrictcode,
|
* leavehospitaldistrictcode 基本为空,只认后者会让统计只剩几条)。
|
*/
|
private List<String> hospitaldistrictcodes;
|
|
/**
|
* 离院病区代码列表 → 落到 {@code service_subtask.leavehospitaldistrictcode}
|
*/
|
private List<String> leavehospitaldistrictcodes;
|
|
/**
|
* 在院/当前科室代码列表 → 落到 {@code service_subtask.deptcode}
|
*/
|
private List<String> deptcodes;
|
|
/**
|
* 离院科室代码列表 → 落到 {@code service_subtask.leaveldeptcode}
|
*/
|
private List<String> leaveldeptcodes;
|
}
|