From 32a6f0bcae6563f0c785b668dd5a4a907292e48c Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期四, 25 九月 2025 18:14:20 +0800
Subject: [PATCH] 新增满意度统计明细

---
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java                        |   10 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   14 ++++
 smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java                    |    7 +
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java            |   15 +++-
 smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java                       |    2 
 smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java                    |    2 
 smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml                       |   73 ++++++++++++++++++++++++
 7 files changed, 115 insertions(+), 8 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
index b7849ea..3bf67f6 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java
@@ -360,4 +360,18 @@
         return success(serviceStatistics);
     }
 
+
+    /**
+     * 鑾峰彇闅忚缁熻姣斾緥
+     */
+    @ApiOperation("鑾峰彇闅忚婊℃剰搴︽槑缁�")
+    @PostMapping("/getSfStatisticsJoydetails")
+    public AjaxResult getSfStatisticsJoydetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+        if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size()==0&&
+                serviceSubtaskCountReq.getDeptcodes().size()==0) {
+            return error("绉戝鎴栫梾鍖轰笉鑳戒负绌�");
+        }
+        return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
+    }
+
 }
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java
index 90e48f1..fa24dc7 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskCount.java
@@ -32,10 +32,16 @@
     private Long count;
 
     @ApiModelProperty(value = "濉啓婊℃剰搴︽暟閲�")
-    private Long joyCount;
+    private Integer joyCount;
 
     @ApiModelProperty(value = "鎵�鏈夋弧鎰忓害鏁伴噺")
-    private Long joyAllCount;
+    private Integer joyAllCount;
+
+    @ApiModelProperty(value = "婊℃剰搴︽瘮渚�")
+    private String joyTotal;
+
+    @ApiModelProperty(value = "婊℃剰搴﹀悕绉�")
+    private String joyName;
 
     public ServiceSubtaskCount(String month, Long serviceType, Long count) {
         this.serviceType = serviceType;
diff --git a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
index 57e743e..b98759a 100644
--- a/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
+++ b/smartor/src/main/java/com/smartor/domain/ServiceSubtaskStatistic.java
@@ -181,8 +181,11 @@
     private String drname;
 
     @ApiModelProperty(value = "濉啓婊℃剰搴︽暟閲�")
-    private Long joyCount;
+    private Integer joyCount=0;
 
     @ApiModelProperty(value = "鎵�鏈夋弧鎰忓害鏁伴噺")
-    private Long joyAllCount;
+    private Integer joyAllCount=0;
+
+    @ApiModelProperty(value = "婊℃剰搴︽瘮渚�")
+    private String joyTotal="";
 }
diff --git a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
index 0dc0237..90a640b 100644
--- a/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
+++ b/smartor/src/main/java/com/smartor/mapper/ServiceSubtaskMapper.java
@@ -97,6 +97,8 @@
 
     public List<ServiceSubtaskCount> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq);
 
+    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq);
+
     public List<PatMedRes> getDeptRanking(PatMedReq patMedReq);
 
     public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest serviceStatisticsRequest);
diff --git a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
index 8fe736c..89ecadf 100644
--- a/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
+++ b/smartor/src/main/java/com/smartor/service/IServiceSubtaskService.java
@@ -131,5 +131,7 @@
 
     public List<ServiceSubtaskStatistic> getSfStatisticsJoy(ServiceSubtaskCountReq serviceSubtaskCountReq);
 
+    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq);
+
     public List<ServiceStatisticsResponse> getServiceStatistics(ServiceStatisticsRequest request);
 }
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 643e2cb..92b45c6 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -2316,7 +2316,10 @@
                 continue;
             }
             ServiceSubtaskStatistic statistic = getStatisticJoy(serviceSubtaskList,joySubCount);
-
+            if(statistic.getJoyCount()!=0&&statistic.getJoyAllCount()!=0) {
+                Double joyTotal = Double.parseDouble(statistic.getJoyCount() + "") / Double.parseDouble(statistic.getJoyAllCount() + "") * 100;
+                statistic.setJoyTotal(String.format("%.2f", joyTotal)+"%");
+            }
             //鍙婃椂鐜�
             ServiceSubtask ss = new ServiceSubtask();
             ss.setOrgid(serviceSubtaskList.get(0).getOrgid());
@@ -2454,15 +2457,15 @@
         serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
         //鍑洪櫌浜烘
         serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
-        serviceSubtaskStatistic.setJoyCount(0L);
-        serviceSubtaskStatistic.setJoyAllCount(0L);
+        serviceSubtaskStatistic.setJoyCount(0);
+        serviceSubtaskStatistic.setJoyAllCount(0);
         for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
             //婊℃剰搴�
             List<ServiceSubtaskCount> joyCountTemp= joySubCount.stream().filter(r->r.getSubTaskId().equals(serviceSubtask.getId()))
                     .collect(Collectors.toList());
             if(joyCountTemp!=null&&joyCountTemp.size()>0){
                 if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
-                serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());
+                    serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount()+joyCountTemp.get(0).getJoyCount());
                 if(ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
                     serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount()+joyCountTemp.get(0).getJoyAllCount());
             }
@@ -2660,4 +2663,8 @@
         int remainingCalls = (int) (remainingHours * phoneUpEveryHour);
         return remainingCalls;
     }
+
+    public List<ServiceSubtaskCount> getSfStatisticsJoydetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+       return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
+    }
 }
diff --git a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
index 826effa..e3f07ff 100644
--- a/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
+++ b/smartor/src/main/resources/mapper/smartor/ServiceSubtaskMapper.xml
@@ -92,6 +92,8 @@
         <result property="subTaskId" column="subTaskId"/>
         <result property="joyCount" column="joyCount"/>
         <result property="joyAllCount" column="joyAllCount"/>
+        <result property="joyTotal" column="joyTotal"/>
+        <result property="joyName" column="joyName"/>
 
     </resultMap>
 
@@ -1119,6 +1121,77 @@
         GROUP BY sub_id
     </select>
 
+    <select id="getSfStatisticsJoydetails" parameterType="com.smartor.domain.ServiceSubtaskCountReq"
+            resultMap="ServiceSubtaskResult2">
+        SELECT joyName,joyCount,joyAllCount,ROUND(joyCount/joyAllCount,2) joyTotal  FROM  (
+        SELECT targetname joyName,
+               (select COUNT(sub_id) FROM service_subtask_detail WHERE sub_id IN(SELECT id FROM service_subtask t
+        <where>
+            del_flag=0
+            <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">
+                AND leavehospitaldistrictcode IN
+                <foreach collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
+                         close=")">
+                    #{leavehospitaldistrictcode}
+                </foreach>
+            </if>
+            <if test="deptcodes != null and deptcodes.size() > 0">
+                AND deptcode IN
+                <foreach collection="deptcodes" item="deptcode" open="(" separator=","
+                         close=")">
+                    #{deptcode}
+                </foreach>
+            </if>
+            <if test="serviceType != null and serviceType.size() > 0">
+                AND service_type IN
+                <foreach collection="serviceType" item="serviceType" open="(" separator=","
+                         close=")">
+                    #{serviceType}
+                </foreach>
+            </if>
+            <if test="startTime != null and endTime!=null">
+                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
+                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
+        </where>
+        ) AND targetid=a.id) joyCount , (SELECT COUNT(*) from (select sub_id FROM service_subtask_detail
+        WHERE sub_id IN(SELECT id FROM service_subtask t
+        <where>
+            del_flag=0
+        <if test="leavehospitaldistrictcodes != null and leavehospitaldistrictcodes.size() > 0">AND
+            leavehospitaldistrictcode IN
+            <foreach
+                    collection="leavehospitaldistrictcodes" item="leavehospitaldistrictcode" open="(" separator=","
+                     close=")">
+                #{leavehospitaldistrictcode}
+            </foreach>
+        </if>
+        <if test="deptcodes != null and deptcodes.size() > 0">
+            AND deptcode IN
+            <foreach collection="deptcodes" item="deptcode" open="(" separator=","
+                     close=")">
+                #{deptcode}
+            </foreach>
+        </if>
+        <if test="serviceType != null and serviceType.size() > 0">
+            AND service_type IN
+            <foreach collection="serviceType" item="serviceType" open="(" separator=","
+                     close=")">
+                #{serviceType}
+            </foreach>
+        </if>
+            <if test="startTime != null and endTime!=null">
+                AND date_format(visit_time,'%y%m%d') >= date_format(#{startTime},'%y%m%d')
+                AND date_format(visit_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+            </if>
+    </where>
+        GROUP BY sub_id ) ) ta ) joyAllCount
+        FROM ivr_liba_target a
+        WHERE assortid IN (SELECT config_value FROM sys_config WHERE config_key=
+        'joyCount')
+        )a1
+    </select>
+
     <select id="getDataByTime" resultMap="ServiceSubtaskResult">
 
         select id,

--
Gitblit v1.9.3