liusheng
2026-10-12 26d1f59f0266672398975ba0337bb3d8267c2d95
smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -1,17 +1,9 @@
package com.smartor.mapper;
import com.smartor.domain.*;
import com.smartor.domain.DTO.MydTrendReqDTO;
import com.smartor.domain.DTO.MzMydScoreRankDTO;
import com.smartor.domain.DTO.QuestionCountKsOrBqDTO;
import com.smartor.domain.DTO.ServiceSubtaskOptionStatDTO;
import com.smartor.domain.VO.PatSatisfactionReqVO;
import com.smartor.domain.VO.HeLibraryCountVO;
import com.smartor.domain.VO.MzMydScoreRankVO;
import com.smartor.domain.VO.QuestionCountKsOrBqVO;
import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.domain.entity.ServiceSubtaskSatisfactionEntity;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -44,7 +36,7 @@
     */
    public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskVO);
    public List<ServiceSubtask> selectSatisfactionSubtaskList(PatSatisfactionReqVO serviceSubtaskVO);
    /**
     * 用于补偿查询
@@ -86,11 +78,11 @@
     */
    public int countActiveByScheduleIdAndLoop(@Param("scheduleId") Long scheduleId, @Param("loopCount") Long loopCount);
    public  List<MydTrendReqDTO> mydTrend(@Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("type") String type);
    public  List<MydTrendReqDTO> sltdMydTotalByDimension(@Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("type") String type);
    public  List<MydTrendReqDTO> sltdMydTotalByYQ(@Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("type") String type);
    /**
     * 任务组(appltype=5):拉取某一轮次的全部 subtask(用于克隆到下一轮)。
@@ -237,7 +229,11 @@
     */
    PatMedRes selectVisitCount(PatMedReq patMedReq);
    List<Long> querySendCount(ServiceSubtaskSatisfactionEntity serviceSubtaskSatisfactionEntity);
    /**
     * 按病区分组统计延续护理数量
@@ -268,54 +264,14 @@
     */
    List<ServiceSubtask> gethelibraryCountHyperlink(HeLibraryCountVO heLibraryCountVO);
    /**
     * 统计问题的选项的百分比
     *
     * @param taskIds          任务 ID 列表 (用于服务类型 2)
     * @param subtaskIds       子任务 ID 列表(可选)。传了就只统计这批子任务(即本次导出的患者),
     *                         不传则统计这些任务下的全部答卷,保持原行为
     * @param startOutHospTime
     * @param endOutHospTime
     * @return
     */
    List<ServiceSubtaskDetailRatioExport> statQuestionOption(@Param("taskIds") List<Long> taskIds, @Param("startOutHospTime") Date startOutHospTime, @Param("endOutHospTime") Date endOutHospTime, @Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("scoreStart") Double scoreStart, @Param("scoreEnd") Double scoreEnd, @Param("questiontext") String questiontext, @Param("valueType") String valueType, @Param("subtaskIds") List<Long> subtaskIds);
    /**
     * 导出「问题详情占比」专用统计(按本次导出的子任务统计)
     * <p>
     * 数量 = 选择该选项的患者数(同一患者同一题只取最新一条明细),分数 = 该选项明细的 score 之和。
     *
     * @param subtaskIds   本次导出的子任务 ID(必传,为空则查不到数据)
     * @param questiontext 问题内容(可选,模糊匹配)
     */
    List<ServiceSubtaskOptionStatDTO> statMydQuestionOptionForExport(@Param("subtaskIds") List<Long> subtaskIds, @Param("questiontext") String questiontext);
    /**
     * 根据子任务 ID 统计问题的选项的百分比(用于满意度统计 serviceType=6)
     *
     * @param subtaskIds       子任务 ID 列表 (只能单个 taskid 下的所有子任务 id)
     * @param startOutHospTime
     * @param endOutHospTime
     * @return
     */
    List<ServiceSubtaskDetailRatioExport> statQuestionOptionBySubtaskIds(@Param("subtaskIds") List<Long> subtaskIds, @Param("startOutHospTime") Date startOutHospTime, @Param("endOutHospTime") Date endOutHospTime, @Param("startFinishTime") Date startFinishTime, @Param("endFinishTime") Date endFinishTime, @Param("scoreStart") Double scoreStart, @Param("scoreEnd") Double scoreEnd, @Param("questiontext") String questiontext, @Param("valueType") String valueType);
    /**
     * 根据科室、病区、题目类型统计的科室、病区评分
     * @param questionCountKsOrBqVO
     * @return
     */
    List<QuestionCountKsOrBqDTO> statQuestionOptionByKsOrBq(QuestionCountKsOrBqVO questionCountKsOrBqVO);
    /**
     * 门诊满意度综合得分排名(按科室或病区)
     * <p>
     * 综合满意度 = Σ(评分明细权重) / 评分明细条数 × 100%,
     * 权重只取 1、0.8、0.6、0.4、0.2 五档。
     *
     * @param mzMydScoreRankVO 查询条件(dimensionType、serviceType、时间区间、科室/病区编号、orgid/campusid)
     * @return 每个科室/病区的综合得分与项数,已按综合得分降序
     */
    List<MzMydScoreRankDTO> selectMzMydScoreRank(MzMydScoreRankVO mzMydScoreRankVO);
}