package com.smartor.mapper; import com.smartor.domain.DTO.ServiceSubtaskDetailDTO; import com.smartor.domain.ServiceSubtaskDetail; import com.smartor.domain.ServiceSubtaskDetailTarget; import com.smartor.domain.ServiceSubtaskDetailVO; import com.smartor.domain.entity.SatisfactionStatQuery; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * 语音任务呼叫明细Mapper接口 * * @author smartor * @date 2023-03-24 */ @Mapper public interface ServiceSubtaskDetailMapper { /** * 查询语音任务呼叫明细 * * @param calldetailid 语音任务呼叫明细主键 * @return 语音任务呼叫明细 */ public ServiceSubtaskDetail selectServiceSubtaskDetailByCalldetailid(String calldetailid); public List queryFillCount(@Param("subids") List subids, @Param("questiontext") String questiontext); /** * 满意度柱状图:一次性统计本次请求全部模板的填报量 * (按 libtemplateid + questiontext + score 分组,只回传分值与条数,不回传明细行) *

* 替代 queryFillCount 的 N+1 写法,见 PatSatisfactionServiceImpl#satisfactionGraph * * @param query 聚合查询条件 * @return 每行含 libtemplateid、questiontext、score、cnt */ public List> selectSatisfactionFillStat(SatisfactionStatQuery query); /** * 满意度统计:一次性统计本次请求全部问题的填报量(按 模板+问题+matchedtext+score 分组) *

* 用于 statistics / statisticsByDimension 的「各选项数量及占比」,替代逐个问题执行的 * queryFillCount(那一步会先查出几万个 sub_id 再拼进 IN(...),并把约十万行明细传回 Java)。 * * @param query 聚合查询条件 * @return 每行含 libtemplateid、questiontext、matchedtext、score、cnt、targetvalue */ public List> selectSatisfactionFillStatByMatchedtext(SatisfactionStatQuery query); public ServiceSubtaskDetailDTO isExistServiceSubtaskDetail(@Param("subid") Long subid, @Param("scriptid") Long scriptid); /** * 查询语音任务呼叫明细列表 * * @param serviceSubtaskDetail 语音任务呼叫明细 * @return 语音任务呼叫明细集合 */ public List selectServiceSubtaskDetailList(ServiceSubtaskDetail serviceSubtaskDetail); /** * 查询随访详情-指标记录 */ public List> getServiceSubtaskDetails(ServiceSubtaskDetailVO serviceSubtaskDetailVo); /** * 新增语音任务呼叫明细 * * @param serviceSubtaskDetail 语音任务呼叫明细 * @return 结果 */ public int insertServiceSubtaskDetail(ServiceSubtaskDetail serviceSubtaskDetail); /** * 修改语音任务呼叫明细 * * @param serviceSubtaskDetail 语音任务呼叫明细 * @return 结果 */ public int updateServiceSubtaskDetail(ServiceSubtaskDetail serviceSubtaskDetail); public int updateSSDByCondition(ServiceSubtaskDetail serviceSubtaskDetail); /** * 删除语音任务呼叫明细 * * @param calldetailid 语音任务呼叫明细主键 * @return 结果 */ public int deleteServiceSubtaskDetailByCalldetailid(String calldetailid); /** * 批量删除语音任务呼叫明细 * * @param calldetailids 需要删除的数据主键集合 * @return 结果 */ public int deleteServiceSubtaskDetailByCalldetailids(String[] calldetailids); /** * 指标统计 * * @param targetid 指标统计 * @return 指标统计 */ public List countPatByTarget(Long targetid); /** * 查询同个subid重复的detail数据ID列表 * * @return 重复记录ID列表 */ public List selectRepeatDetailIds(); /** * 根据ID列表批量标记重复detail数据为删除 * * @param ids 重复记录ID列表 * @return 更新行数 */ public Integer deleteRepeatDetailByIds(@Param("ids") List ids); }