From d4e5b540d3600350c8c8519e2300f2c85d4186fb Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 19 三月 2025 18:17:09 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java |   10 +++
 smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java                    |    3 +
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java                  |    3 
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml                       |   23 +++++++
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java            |   51 ++++++++++++++++-
 ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java   |    2 
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java            |    6 +
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTarget.java                       |   42 ++++++++++++++
 smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java                           |    2 
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java                       |   10 +++
 10 files changed, 144 insertions(+), 8 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
index 647fa44..5bb9050 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskDetailController.java
@@ -143,4 +143,14 @@
         return toAjax(ServiceSubtaskDetailService.deleteServiceSubtaskDetailByCalldetailids(calldetailids));
     }
 
+    /**
+     * 鎸囨爣缁熻
+     */
+    //@PreAuthorize("@ss.hasPermi('smartor:ServiceSubtaskDetail:add')")
+    @ApiOperation("鎸囨爣缁熻")
+    @GetMapping(value = "/countPatByTarget/{targetid}")
+    public AjaxResult countPatByTarget(@PathVariable("targetid") Long targetid) {
+        return success(ServiceSubtaskDetailService.countPatByTarget(targetid));
+    }
+
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
index 2a8632f..608c381 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/HospitalFilterInterceptor.java
@@ -86,7 +86,7 @@
         String tableOrAlias = ""; // 淇濆瓨涓昏〃鍚嶆垨鍒悕
         if (matcher.find()) {
             // 浼樺厛鍖归厤绗竴涓〃鍚嶆垨鍒悕
-            tableOrAlias = matcher.group(3) != null ? matcher.group(3) : matcher.group(2);
+            tableOrAlias = matcher.group(3) != null && !matcher.group(3).equals("JOIN") ? matcher.group(3) : matcher.group(2);
         }
 
         // 濡傛灉鎵惧埌琛ㄥ悕鎴栧埆鍚嶏紝涓� WHERE 瀛愬彞娣诲姞鍓嶇紑
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTarget.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTarget.java
new file mode 100644
index 0000000..ac7e2ee
--- /dev/null
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskDetailTarget.java
@@ -0,0 +1,42 @@
+package com.smartor.domain;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鎸囨爣缁熻
+ *
+ * @author smartor
+ * @date 2023-03-24
+ */
+@Data
+@ApiModel(value = "ServiceSubtaskDetailTarget", description = "鎸囨爣缁熻")
+public class ServiceSubtaskDetailTarget extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "鎸囨爣ID")
+    private Long targetid;
+
+    @ApiModelProperty(value = "浠诲姟ID")
+    private Long taskid;
+
+    @ApiModelProperty(value = "鎸囨爣鍚嶇О")
+    private String targetname;
+
+    @ApiModelProperty(value = "鍗曢」鍚嶇О")
+    private String matchedtext;
+
+    @ApiModelProperty(value = "椤瑰嚭鐜版鏁� ")
+    private Long count;
+
+    @ApiModelProperty(value = "鍗犳瘮")
+    private String percentage;
+
+    @ApiModelProperty(value = "鎸囨爣鍑虹幇娆℃暟")
+    private String targetShowCount;
+
+
+}
diff --git a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
index 965443b..d8c1010 100644
--- a/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
+++ b/smartor/src/main/java/com/smartor/domain/SvyLibTemplateScriptVO.java
@@ -29,6 +29,8 @@
     @ApiModelProperty("鑷ID")
     private Long id;
 
+    @ApiModelProperty(value = "瀵瑰簲鐨刬vr_liba_target鐨勪富閿�")
+    private Long targetid;
 
     /**
      * 閫夐」鍒嗘敮鏍囪瘑(0:鏃犲垎鏀�1:鏈夊垎鏀�)
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java
index 905c1ef..f96af96 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskDetailMapper.java
@@ -1,6 +1,7 @@
 package com.smartor.mapper;
 
 import com.smartor.domain.ServiceSubtaskDetail;
+import com.smartor.domain.ServiceSubtaskDetailTarget;
 import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
@@ -62,4 +63,13 @@
      * @return 缁撴灉
      */
     public int deleteServiceSubtaskDetailByCalldetailids(String[] calldetailids);
+
+
+    /**
+     * 鎸囨爣缁熻
+     *
+     * @param targetid 鎸囨爣缁熻
+     * @return 鎸囨爣缁熻
+     */
+    public List<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid);
 }
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java
index d1e7ead..fc859f9 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskDetailService.java
@@ -1,6 +1,7 @@
 package com.smartor.service;
 
 import com.smartor.domain.ServiceSubtaskDetail;
+import com.smartor.domain.ServiceSubtaskDetailTarget;
 
 import java.util.List;
 import java.util.Map;
@@ -68,4 +69,6 @@
      * @return 缁撴灉
      */
     public int deleteServiceSubtaskDetailByCalldetailid(String subtaskDetailid);
+
+    public List<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid);
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
index d7b8332..7f4c48d 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskAnswerServiceImpl.java
@@ -372,7 +372,7 @@
                         svyLibTemplateScriptVO.setScriptResultId(scriptResult.get("asrtextId"));
                     }
                 }
-                map.put("scriptResult", scriptInfoByCondition);
+                map.put("scriptResult", svyLibTemplateScriptVOList);
                 map.put("taskName", scriptInfoByCondition.get("taskName"));
                 return map;
             } else if (scriptInfoByCondition.get("type").equals("3")) {
@@ -468,6 +468,7 @@
         serviceSubtaskDetailVO.setTargetid(svyTaskTemplateScriptVO.getTargetid() != null ? svyTaskTemplateScriptVO.getTargetid().intValue() : null);
         serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
         serviceSubtaskDetailVO.setScriptid(svyTaskTemplateScriptVO.getId());
+        serviceSubtaskDetailVO.setTemplatequestionnum(StringUtils.isNotEmpty(svyTaskTemplateScriptVO.getScriptno()) ? Long.valueOf(svyTaskTemplateScriptVO.getScriptno()) : null);
         serviceSubtaskDetailVO.setValueType(svyTaskTemplateScriptVO.getScriptType());
         serviceSubtaskDetailVO.setComment(null);
         serviceSubtaskDetailVO.setCreateTime(new Date());
@@ -532,7 +533,8 @@
         serviceSubtaskDetailVO.setQuestiontext(ivrTaskTemplateScriptVO.getScriptContent());
         serviceSubtaskDetailVO.setTaskid(Long.valueOf(taskid));
         serviceSubtaskDetailVO.setPatid(Long.valueOf(patid));
-        serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getId());
+        serviceSubtaskDetailVO.setScriptid(ivrTaskTemplateScriptVO.getScriptID());
+        serviceSubtaskDetailVO.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
         serviceSubtaskDetailVO.setValueType(ivrTaskTemplateScriptVO.getScriptType());
         serviceSubtaskDetailVO.setComment(null);
         serviceSubtaskDetailVO.setCreateTime(new Date());
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java
index 292ff61..6554d27 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskDetailServiceImpl.java
@@ -4,10 +4,8 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
-import com.smartor.domain.ServiceSubtask;
+import com.smartor.domain.*;
 import com.smartor.domain.ServiceSubtaskDetail;
-import com.smartor.domain.ServiceSubtaskDetail;
-import com.smartor.domain.ServiceTask;
 import com.smartor.mapper.ServiceSubtaskDetailMapper;
 import com.smartor.mapper.ServiceSubtaskMapper;
 import com.smartor.service.IServiceSubtaskDetailService;
@@ -17,6 +15,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -234,4 +234,49 @@
         return serviceTaskMap;
     }
 
+
+    /*
+     * @param targetid
+     * @return 鎸囨爣缁熻
+     */
+    @Override
+    public List<ServiceSubtaskDetailTarget> countPatByTarget(Long targetid) {
+        List<ServiceSubtaskDetailTarget> serviceSubtaskDetailTargets = ServiceSubtaskDetailMapper.countPatByTarget(targetid);
+        if (CollectionUtils.isNotEmpty(serviceSubtaskDetailTargets)) {
+            Long totalCount = serviceSubtaskDetailTargets.stream().filter(target -> target.getMatchedtext() == null || target.getMatchedtext().isEmpty()).mapToLong(target -> target.getCount() != null ? target.getCount() : 0) // 纭繚 count 涓� 0 濡傛灉涓� null
+                    .sum();
+
+
+            Long allShowCount = 0L;
+
+            // 閬嶅巻鍒楄〃锛屽皢 matchedText 涓�""璧嬪�肩粰 null
+            for (ServiceSubtaskDetailTarget target : serviceSubtaskDetailTargets) {
+                if (target.getMatchedtext() == null) {
+                    target.setCount(target.getCount() != null ? target.getCount() + totalCount : totalCount);  // 缁� matchedText 涓� null 鐨勫璞¤祴鍊�
+                }
+                //鍏佽null鐩稿姞锛屼笉鍏佽""鐩稿姞
+                if (target.getMatchedtext() == null || !target.getMatchedtext().isEmpty()) {
+                    allShowCount = allShowCount + target.getCount();
+                }
+            }
+
+            // 浣跨敤杩唬鍣ㄥ垹闄� matchedText 涓� "" 鐨勫璞�
+            Iterator<ServiceSubtaskDetailTarget> iterator = serviceSubtaskDetailTargets.iterator();
+            while (iterator.hasNext()) {
+                ServiceSubtaskDetailTarget target = iterator.next();
+                if (target.getMatchedtext() != null && target.getMatchedtext().isEmpty()) {
+                    iterator.remove();  // 鍒犻櫎 matchedText 涓� "" 鐨勫璞�
+                }
+            }
+            for (ServiceSubtaskDetailTarget target : serviceSubtaskDetailTargets) {
+                target.setTargetShowCount(allShowCount.toString());
+                BigDecimal count = new BigDecimal(target.getCount() != null ? target.getCount().toString() : "0");
+                BigDecimal allCount = new BigDecimal(allShowCount.toString());
+                target.setPercentage(count.divide(allCount, 2, RoundingMode.HALF_UP).toString());
+            }
+        }
+
+        return serviceSubtaskDetailTargets;
+    }
+
 }
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index b6a64e6..49c4259 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2201,12 +2201,13 @@
         serviceSubtaskDetail.setEndTime(System.currentTimeMillis());
         serviceSubtaskDetail.setSentEnd(1L);
         serviceSubtaskDetail.setTemplateid(ivrTaskTemplate.getId().toString());
-        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getId());
+        serviceSubtaskDetail.setTemplatequestionnum(ivrTaskTemplateScriptVO.getScriptno());
         serviceSubtaskDetail.setQuestiontext(ivrTaskTemplateScriptVO.getIvrtext());
         serviceSubtaskDetail.setQuestionvoice(phoneCallReqYQVO.getRecordpath());
         serviceSubtaskDetail.setCategoryname(ivrTaskTemplateScriptVO.getScriptType());
         serviceSubtaskDetail.setTargetoptions(ivrTaskTemplateScriptVO.getTargetOptions());
         serviceSubtaskDetail.setExtemplateText(ivrTaskTemplateScriptVO.getExtemplateText());
+        serviceSubtaskDetail.setScriptid(ivrTaskTemplateScriptVO.getId());
 
         int i = 1;
         for (IvrTaskTemplateTargetoption ivrTaskTemplateTargetoption : ivrTaskTemplateScriptVO.getIvrTaskScriptTargetoptionList()) {
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
index f0b9dd2..fdb1fa6 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskDetailMapper.xml
@@ -55,7 +55,13 @@
         <result property="guid" column="guid"/>
         <result property="extemplateText" column="extemplate_text"/>
     </resultMap>
-
+    <resultMap type="com.smartor.domain.ServiceSubtaskDetailTarget" id="ServiceSubtaskDetailTargetResult">
+        <result property="targetid" column="targetid"/>
+        <result property="taskid" column="taskid"/>
+        <result property="targetname" column="targetname"/>
+        <result property="matchedtext" column="matchedtext"/>
+        <result property="count" column="count"/>
+    </resultMap>
     <sql id="selectServiceSubtaskDetailVo">
         select id,
                sub_id,
@@ -394,4 +400,19 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="countPatByTarget" parameterType="Long" resultMap="ServiceSubtaskDetailTargetResult">
+        SELECT
+        service_task.taskid,
+        service_subtask_detail.targetid,
+        ivr_liba_target.targetname,
+        service_subtask_detail.matchedtext,
+        count(service_subtask_detail.matchedtext) count
+        FROM service_subtask_detail
+        JOIN service_task ON service_task.taskid = service_subtask_detail.taskid
+        JOIN ivr_liba_target ON ivr_liba_target.id = service_subtask_detail.targetid
+        WHERE
+        targetid = #{targetid}
+        GROUP BY matchedtext
+    </select>
 </mapper>

--
Gitblit v1.9.3