package com.ruoyi.task.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; import com.ruoyi.task.domain.DTO.ServiceSubtaskDetailDTO; import com.ruoyi.task.domain.ServiceSubtaskDetail; import com.ruoyi.task.domain.ServiceSubtaskDetailTarget; import com.ruoyi.task.domain.ServiceSubtaskDetailVO; /** * 语音任务呼叫明细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); /** * 按 scriptid 批量统计填写记录数(一次 SQL 替代逐个 scriptid 查明细) *

* 口径与原来「query.setScriptid(scriptId) 后 selectServiceSubtaskDetailList(...).size()」一致: * 只按 scriptid 过滤,不带 del_flag(原 SQL 里并没有 del_flag 条件)。 * * @param scriptIds 问题ID集合 * @return 每行含 scriptid、cnt */ public List> countDetailByScriptIds(@Param("scriptIds") List scriptIds); public ServiceSubtaskDetailDTO isExistServiceSubtaskDetail(@Param("subid") Long subid, @Param("scriptid") Long scriptid); /** * 逻辑删除某个子任务下的全部明细(唯一的批量软删入口) *

* 2026-10-21 收口:通用 UPDATE(updateServiceSubtaskDetail / updateSSDByCondition)已不再接受 * 客户端传入的 delFlag,需要软删只能调这里,便于加日志、加操作人、加校验。 * * @param subId 子任务 id * @return 受影响行数 */ public int softDeleteServiceSubtaskDetailBySubId(@Param("subId") Long subId); /** * 逻辑删除单条明细 * * @param id 明细 id * @return 受影响行数 */ public int softDeleteServiceSubtaskDetailById(@Param("id") Long id); /** * 复活一条被逻辑删除的明细(只允许置回 '0') *

* 用于"保存答案时命中历史被删副本"的场景:先把内容 UPDATE 上去,再调本方法置回 del_flag='0', * 这样同一 (sub_id, scriptid) 不会再堆出重复副本。 * * @param id 明细 id * @return 受影响行数 */ public int reviveServiceSubtaskDetail(@Param("id") Long id); /** * 查询语音任务呼叫明细列表 * * @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); }