From a11465387cb67853ef9252a679c43ef2ff75d718 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 24 四月 2026 19:12:52 +0800
Subject: [PATCH] 提交

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java |   37 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 1 deletions(-)

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 53b97f1..9b04a47 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -16,6 +16,7 @@
 import com.smartor.config.PhoneUtils;
 import com.smartor.domain.DTO.ServiceSubtaskDetailDTO;
 import com.smartor.domain.*;
+import com.smartor.domain.VO.HeLibraryCountVO;
 import com.smartor.domain.VO.ServiceSubtaskCotinueCountVO;
 import com.smartor.domain.entity.ServiceSubtaskEntity;
 import com.smartor.mapper.*;
@@ -31,6 +32,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -3589,7 +3591,8 @@
         map.put("content", sendMagParam.getContent());
         String result = HttpUtil.postJsonRequest(xhsmsPath, new Gson().toJson(map));
         redisCache.setCacheObject(subTaskId + "recordAccept-hungup", "1", 10, TimeUnit.MINUTES);
-        if (StringUtils.isNotEmpty(serviceSubtask.getRemark())) serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
+        if (StringUtils.isNotEmpty(serviceSubtask.getRemark()))
+            serviceSubtask.setRemark("鐢佃瘽鍙戦�佹嫆鎺�,鐭俊琛ュ伩鍙戦�佹垚鍔�");
         else serviceSubtask.setRemark("鐭俊琛ュ伩鍙戦�佹垚鍔�");
         serviceSubtask.setSendstate(3L);
         serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
@@ -4172,6 +4175,38 @@
         }
     }
 
+    @Override
+    public Map<String, Object> getHeLibraryCount(@RequestBody HeLibraryCountVO heLibraryCountVO) {
+        if (ObjectUtils.isEmpty(heLibraryCountVO)) {
+            return new HashMap<>();
+        }
+        // 1. 鏌ヨ鍒嗙粍缁熻锛堝彂閫佹�婚噺銆佸彂閫佹垚鍔熼噺銆佸凡璇婚噺锛�
+        List<Map<String, Object>> groupStats = serviceSubtaskMapper.getHeLibraryCount(heLibraryCountVO);
+    
+        // 2. 璁$畻鍚勭粍鐨勫彂閫佹垚鍔熺巼鍜屽凡璇荤巼
+        List<Map<String, Object>> result = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(groupStats)) {
+            for (Map<String, Object> row : groupStats) {
+                long totalCount = row.get("totalCount") != null ? ((Number) row.get("totalCount")).longValue() : 0L;
+                long sendSuccessCount = row.get("sendSuccessCount") != null ? ((Number) row.get("sendSuccessCount")).longValue() : 0L;
+                long readCount = row.get("readCount") != null ? ((Number) row.get("readCount")).longValue() : 0L;
+                // 鍙戦�佹垚鍔熺巼
+                double sendSuccessRate = totalCount > 0 ? (double) sendSuccessCount / totalCount : 0.0;
+                // 宸茶鐜囷紙鍩轰簬鍙戦�佹垚鍔熺殑鏁伴噺璁$畻锛�
+                double readRate = sendSuccessCount > 0 ? (double) readCount / sendSuccessCount : 0.0;
+                row.put("sendSuccessRate", sendSuccessRate);
+                row.put("readRate", readRate);
+                result.add(row);
+            }
+        }
+    
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("list", result);
+        resultMap.put("total", result.size());
+        return resultMap;
+    }
+
+
     private Boolean saveServiceSubtaskDetail(ServiceSubtask serviceSubtask) {
         Boolean result = true;
         //3.4 濡傛灉3.1鎴�3.2涓簍rue鐨勮瘽锛屾牴鎹畉ype鍒ゆ柇浠�涔堢被鍨�

--
Gitblit v1.9.3