From 491f10462ffe9ae1ef51566db56a42c0a2b499df Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 17 十二月 2025 15:04:14 +0800
Subject: [PATCH] 【丽水】统计随访数据 增加redis记录结果 提高查询效率

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   88 ++++++++++++++++++++++++++++++++++----------
 1 files changed, 68 insertions(+), 20 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 4865213..89a1e35 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
@@ -2,6 +2,8 @@
 
 import com.github.pagehelper.ISelect;
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.constant.CacheConstants;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -15,6 +17,7 @@
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.uuid.IdUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.PatMedInhospMapper;
 import com.smartor.mapper.PatMedOuthospMapper;
@@ -27,6 +30,7 @@
 import lombok.extern.slf4j.Slf4j;
 import net.bytebuddy.implementation.bytecode.Throw;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -39,6 +43,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -63,6 +68,9 @@
 
     @Value("${spring.profiles.active}")
     private String active;
+
+    @Autowired
+    private RedisCache redisCache;
 
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
@@ -90,7 +98,17 @@
             ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
             if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
         }
+
+        /**
+         * 浠g爜浼樺寲 鍒嗙缁熻
+        Map<String, Object> map = new HashMap<>();
+        map.put("serviceSubtaskList", serviceSubtaskList);
+        List<Map<String, Object>> list = new ArrayList<>();
+        list.add(map);
+         **/
+        //todo 浠g爜浼樺寲
         Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+//        Map<String, Object> map = patItemCount(serviceSubtaskVO);
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
         list.add(map);
@@ -104,6 +122,43 @@
             }
         });
         return getDataTable2(total, list);
+    }
+
+    /**
+     * 缁熻闅忚鏁版嵁
+     */
+    @ApiOperation("缁熻闅忚鏁版嵁")
+    @PostMapping("/patItemCount")
+    public Map<String, Object> patItemCount(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
+        Map<String, Object> map = new HashMap<>();
+        // 閫氳繃redis璁板綍缁撴灉
+        Map<String, Object> redisMap = new HashMap<>();
+        LoginUser loginUser = getLoginUser();
+        SysUser user = null;
+        Long userId = null;
+        if(ObjectUtils.isNotEmpty(loginUser)){
+            user = loginUser.getUser();
+            if(ObjectUtils.isNotEmpty(user)){
+                userId = user.getUserId();
+            }
+        }
+        if(ObjectUtils.isNotEmpty(userId)){
+            redisMap = redisCache.getCacheObject(userId + "patItemCount");
+            //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+//            Boolean redisFlag = false;
+//            Map oldConditionMap = (Map)redisMap.get("searchCondition");
+            if(MapUtils.isNotEmpty(redisMap)){
+                map = redisMap;
+                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+            }else {
+                map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+//                map.put("searchCondition",serviceSubtaskVO);
+                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+            }
+        }
+
+        map.put("code", HttpStatus.SUCCESS);
+        return map;
     }
 
 
@@ -152,7 +207,9 @@
             serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
             serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
         }
+        //todo 浠g爜浼樺寲
         Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+//        Map<String, Object> map = patItemCount(serviceSubtaskVO);
         map.put("serviceSubtaskList", serviceSubtaskList);
         List<Map<String, Object>> list = new ArrayList<>();
         list.add(map);
@@ -243,20 +300,6 @@
     /**
      * 闅忚鍘嗗彶璁板綍瀵煎嚭
      */
-    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
-//    @Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
-//    @PostMapping("/getSubtaskByDiagnameExport")
-//    public void getSubtaskByDiagnameExport(HttpServletResponse response, List<ServiceSubtaskDiagname> serviceSubtaskDiagnameList) {
-//        ExcelUtil<ServiceSubtaskDiagname> util = new ExcelUtil<ServiceSubtaskDiagname>(ServiceSubtaskDiagname.class);
-//
-//        if (active.equals("ls") || active.equals("druid")) {
-//            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
-//        } else {
-//            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚缁熻瀵煎嚭");
-//        }
-//    }
-
-    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
     @PostMapping("/getSubtaskByDiagnameExport")
     public void getSubtaskByDiagnameExport(HttpServletResponse response, ServiceSubtask serviceSubtask) {
@@ -265,15 +308,16 @@
         serviceSubtask.setOrgid(user.getOrgid());
         serviceSubtask.setPageNum(PageUtils.getOffset(serviceSubtask.getPageNum(), serviceSubtask.getPageSize()));
         List<ServiceSubtask> subtaskList = serviceSubtaskService.selectServiceSubtaskByDiagname(serviceSubtask);
-        ExcelUtil<ServiceSubtask> util = new ExcelUtil<ServiceSubtask>(ServiceSubtask.class);
+        List<ServiceSubtaskDiagname> serviceSubtaskDiagnameList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(subtaskList)) serviceSubtaskDiagnameList = serviceSubtaskService.convertToDiagnameList(subtaskList);
+        ExcelUtil<ServiceSubtaskDiagname> util = new ExcelUtil<ServiceSubtaskDiagname>(ServiceSubtaskDiagname.class);
 
         if (active.equals("ls") || active.equals("druid")) {
-            util.exportExcel(response, subtaskList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
+            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
         } else {
-            util.exportExcel(response, subtaskList, "闅忚缁熻瀵煎嚭");
+            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚缁熻瀵煎嚭");
         }
     }
-
 
     /**
      * 鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟
@@ -432,10 +476,14 @@
 
         ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);
 
+        String sheetName = "";
+        String fileName = "";
         if (active.equals("ls") || active.equals("druid")) {
-            util.exportExcel(response, sfStatistics, LocalDate.now().getMonthValue() + "鏈堝嚭闄㈤殢璁跨粺璁¤〃");
+            fileName = sheetName = LocalDate.now().getMonthValue() + "鏈堝嚭闄㈤殢璁跨粺璁¤〃";
+            util.exportExcelWithFileName(response, sfStatistics, sheetName, fileName);
         } else {
-            util.exportExcel(response, sfStatistics, "闅忚缁熻瀵煎嚭");
+            sheetName = "闅忚缁熻瀵煎嚭";
+            util.exportExcel(response, sfStatistics, sheetName);
         }
     }
 

--
Gitblit v1.9.3