liusheng
2026-09-29 60ade5154522a042c816abaa1840751011ae0371
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
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<ServiceSubtaskDetailDTO> queryFillCount(@Param("subids") List<Long> subids, @Param("questiontext") String questiontext);
 
    /**
     * 满意度柱状图:一次性统计本次请求全部模板的填报量
     * (按 libtemplateid + questiontext + score 分组,只回传分值与条数,不回传明细行)
     * <p>
     * 替代 queryFillCount 的 N+1 写法,见 PatSatisfactionServiceImpl#satisfactionGraph
     *
     * @param query 聚合查询条件
     * @return 每行含 libtemplateid、questiontext、score、cnt
     */
    public List<Map<String, Object>> selectSatisfactionFillStat(SatisfactionStatQuery query);
 
    /**
     * 满意度统计:一次性统计本次请求全部问题的填报量(按 模板+问题+matchedtext+score 分组)
     * <p>
     * 用于 statistics / statisticsByDimension 的「各选项数量及占比」,替代逐个问题执行的
     * queryFillCount(那一步会先查出几万个 sub_id 再拼进 IN(...),并把约十万行明细传回 Java)。
     *
     * @param query 聚合查询条件
     * @return 每行含 libtemplateid、questiontext、matchedtext、score、cnt、targetvalue
     */
    public List<Map<String, Object>> selectSatisfactionFillStatByMatchedtext(SatisfactionStatQuery query);
 
    /**
     * 满意度柱状图:一次性统计本次请求全部模板的「回收人数」
     * (按 libtemplateid 分组,count(distinct sub_id):同一个人答了多道题只算一人)
     * <p>
     * satisfactionGraph / satisfactionGraphDimension 的回收人数必须是人数口径,
     * 不能像 selectSatisfactionFillStat 那样按题目汇总答案行数(那是题量口径)
     *
     * @param query 聚合查询条件
     * @return 每行含 libtemplateid、cnt(该模板已回收的份数/人数)
     */
    public List<Map<String, Object>> selectSatisfactionFillPersonCount(SatisfactionStatQuery query);
 
    /**
     * 按 scriptid 批量统计填写记录数(一次 SQL 替代逐个 scriptid 查明细)
     * <p>
     * 口径与原来「query.setScriptid(scriptId) 后 selectServiceSubtaskDetailList(...).size()」一致:
     * 只按 scriptid 过滤,不带 del_flag(原 SQL 里并没有 del_flag 条件)。
     *
     * @param scriptIds 问题ID集合
     * @return 每行含 scriptid、cnt
     */
    public List<Map<String, Object>> countDetailByScriptIds(@Param("scriptIds") List<Long> scriptIds);
 
    public ServiceSubtaskDetailDTO isExistServiceSubtaskDetail(@Param("subid") Long subid, @Param("scriptid") Long scriptid);
 
    /**
     * 查询语音任务呼叫明细列表
     *
     * @param serviceSubtaskDetail 语音任务呼叫明细
     * @return 语音任务呼叫明细集合
     */
    public List<ServiceSubtaskDetail> selectServiceSubtaskDetailList(ServiceSubtaskDetail serviceSubtaskDetail);
 
    /**
     * 查询随访详情-指标记录
     */
    public List<Map<String, Object>> 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<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid);
 
    /**
     * 查询同个subid重复的detail数据ID列表
     *
     * @return 重复记录ID列表
     */
    public List<Long> selectRepeatDetailIds();
 
    /**
     * 根据ID列表批量标记重复detail数据为删除
     *
     * @param ids 重复记录ID列表
     * @return 更新行数
     */
    public Integer deleteRepeatDetailByIds(@Param("ids") List<Long> ids);
}