zhongrj
2023-05-05 cc1efbaded12b76f39699911ba0f032d14e8d24e
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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.gistack.sm.intelligentCall.mapper.CallTaskMapper">
 
    <!--查詢任务列表数据-->
    <select id="getCallListPage" resultType="cn.gistack.sm.intelligentCall.vo.CallTaskStatistic">
        select
        ct."id",
        ct."task_name" as taskName,
        date_format(ct."gmt_create",'%Y-%m-%d %H:%i:%s') as createTime,
        ct."task_status" as taskStatus,
        date_format(ct."task_schedule_time",'%Y-%m-%d %H:%i:%s') as executeTime,
        ctr."calling_number" as callingNumber,
        ctra."callee_number_count" as calleeNumberCount,
        ctra."connection_count" as connectionCount,
        ctra."failure_count" as failureCount,
        ctra."other_status_count" as otherStatusCount,
        cs."call_scenes_name" as  callScenesName
        from "SJZT_ODS"."call_task" ct
        left join (select * from "SJZT_ODS"."call_scenes" where "is_deleted" = 0) cs on ct."scene_id" = cs."id"
        left join (select DISTINCT "task_id","calling_number" from "SJZT_ODS"."call_task_result") ctr on ctr."task_id" = ct."id"
        left join "SJZT_ODS"."call_task_result_analyse" ctra on  ctra."task_id" = ct."id"
        where 1=1 and ct."is_deleted" = 0
        <if test="callTask.taskName!=null and callTask.taskName!=''">
            and ct."task_name" like concat(concat('%',#{callTask.taskName}),'%')
        </if>
        <if test="callTask.taskStatus!=null">
            and ct."task_status" = #{callTask.taskStatus}
        </if>
        <if test="callTask.startTime!=null and callTask.startTime!=''">
            and date_format(ct."task_schedule_time",'%Y-%m-%d') >= #{callTask.startTime}
        </if>
        <if test="callTask.endTime!=null and callTask.endTime!=''">
            and date_format(ct."task_schedule_time",'%Y-%m-%d') &lt;= #{callTask.endTime}
        </if>
        order by ct."gmt_create" desc
    </select>
 
    <!--查询呼叫详情列表信息-->
    <select id="getCallTaskResultListPage" resultType="cn.gistack.sm.intelligentCall.vo.CallTaskResultVO">
        select
        ctr."id",
        ctr."call_result" as callResult,
        ctr."call_duration" as callDuration,
        ctr."call_conversation_round" as callConversationRound,
        ctr."call_hangup_direction" as callHangupDirection,
        ctr."call_id" as callId,
        date_format(ctr."gmt_create",'%Y-%m-%d %H:%i:%s') as gmtCreate,
        ctr."calling_number" as callingNumber,
        ctr."callee_number" as calleeNumber,
        ctr."task_id" as taskId,
        ctr."call_start_time" as callStartTime,
        date_format(ctr."call_end_time",'%Y-%m-%d %H:%i:%s') as callEndTime,
        ctr."call_record_file" as callRecordFile,
        ctr."intention_customer_flag" as intentionCustomerFlag,
        ctr."is_deleted" as isDeleted,
        ctc.waterCode,
        aab."ad_name" as areaName,
        cas."tag_title" as tagTitle,
        ctc.userName,
        arb."name" as waterName,
        arb."res_reg_code" resRegCode,
        arb."eng_scal" engScal,
        arb."res_type" resType,
        arb."rv_name" rvName,
        REGEXP_SUBSTR (arb."res_loc",'[^-]+',1,2) as cityName,
        REGEXP_SUBSTR (arb."res_loc",'[^-]+',1,3) as countyName,
        if(ifnull(cas."tag_title",0)>'0',if(instr(cas."tag_title",'未发现险情')>0,1,if(instr(cas."tag_title",'发现险情')>0,2,0)),0) isDange,
        if(ifnull(cas."tag_title",0)>'0',if(instr(cas."tag_title",'是否巡查责任人-未识别')>0,0,if(instr(cas."tag_title",'不是巡查责任人')>0,1,if(instr(cas."tag_title",'是巡查责任人')>0,2,0))),0) isMan,
        if(ifnull(cas."tag_title",0)>'0',if(instr(cas."tag_title",'是否巡查-未识别')>0,0,if(instr(cas."tag_title",'未巡查')>0,1,if(instr(cas."tag_title",'已巡查')>0,2,0))),0) isPatrol,
        if(ifnull(cas."tag_title",0)>'0',if(instr(cas."tag_title",'是否超汛限-未识别')>0,0,if(instr(cas."tag_title",'未超汛限')>0,1,if(instr(cas."tag_title",'超汛限')>0,2,0))),0) isOver
        from "SJZT_ODS"."call_task_result" ctr
        left join
        (
        select "callee_number",
        "call_id",
        "task_id",
        JSON_VALUE("call_task_callee_content",'$."$水库编码$"') as waterCode,
        JSON_VALUE("call_task_callee_content",'$."$用户名$"') as userName from "SJZT_ODS"."call_task_callee"
        ) ctc
        on ctr."call_id" = ctc."call_id"
        left join "SJZT_MD"."att_res_base" arb on ctc.waterCode = arb."code"
        left join "SJZT_MD"."att_ad_base" aab on aab."guid" = concat(arb."ad_guid",'000000')
        left join
        (
        SELECT ctra."call_id", replace(WM_CONCAT(ctag."tag_title"),',', ',') as "tag_title" from "SJZT_ODS"."call_tag" ctag
        left join "SJZT_ODS"."call_task_result_attribute" ctra on ctag."id" = ctra."attribute_value"
        GROUP BY ctra."call_id"
        ) cas
        on cas."call_id" = ctr."call_id"
        left join "SJZT_ODS"."call_task" ct on ct."id" = ctr."task_id"
        where 1=1
        <if test="callTaskResult.taskId!=null and callTaskResult.taskId!=''">
            and ctr."task_id" = #{callTaskResult.taskId}
        </if>
        <if test="list != null and list.size()>0">
            and aab."ad_code" in
            <foreach collection="list" item="adCode" separator ="," open="("  close=")">
                #{adCode}
            </foreach>
        </if>
        <if test="callTaskResult.waterName!=null and callTaskResult.waterName!=''">
            and arb."name" like concat('%',#{callTaskResult.waterName},'%')
        </if>
        <if test="callTaskResult.userName!=null and callTaskResult.userName!=''">
            and ctc.userName like concat('%',#{callTaskResult.userName},'%')
        </if>
        <if test="callTaskResult.taskName!=null and callTaskResult.taskName!=''">
            and ct."task_name" like concat(concat('%',#{callTaskResult.taskName}),'%')
        </if>
        <if test="callTaskResult.taskStatus!=null">
            and ct."task_status" = #{callTaskResult.taskStatus}
        </if>
        <if test="callTaskResult.startTime!=null and callTaskResult.startTime!=''">
            and date_format(ctr."gmt_create",'%Y-%m-%d') >= #{callTaskResult.startTime}
        </if>
        <if test="callTaskResult.endTime!=null and callTaskResult.endTime!=''">
            and date_format(ctr."gmt_create",'%Y-%m-%d') &lt;= #{callTaskResult.endTime}
        </if>
        order by ctr."gmt_create" desc
    </select>
 
    <!--通过水库编码获取行政区名称-->
    <select id="getAreaNameByAdCode" resultType="java.lang.String">
        select aab."ad_name" from SJZT_MD."att_ad_base" aab
        left join SJZT_MD."att_res_base" arb on aab."guid" = concat(arb."ad_guid",'000000')
        where arb."code" = #{adCode}
    </select>
 
    <!--通过行政区编号获取水库名称-->
    <select id="getWaterNameByAreaCode" resultType="java.lang.String">
        select "name" from SJZT_MD."att_res_base" where concat("ad_guid",'000000') = #{adCode}
    </select>
 
    <!--查询所有下级区域-->
    <select id="getAllChildrenAreaByAreaCode" resultType="java.lang.String">
        select "ad_code" from SJZT_MD."att_ad_base"
        start with "ad_code" = #{areaCode}
        CONNECT BY PRIOR "ad_code" =  "p_ad_code"
    </select>
</mapper>