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

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   83 ++++++++++++++++++++++++++++++++++++-----
 1 files changed, 73 insertions(+), 10 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 4326803..32f76f6 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,8 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * 鍗曚竴浠诲姟锛堥殢璁匡級Controller
@@ -62,6 +68,9 @@
 
     @Value("${spring.profiles.active}")
     private String active;
+
+    @Autowired
+    private RedisCache redisCache;
 
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
@@ -89,7 +98,17 @@
             ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
             if (ObjectUtils.isNotEmpty(serviceTask)) serviceSubtask.setPreachform(serviceTask.getPreachform());
         }
-        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+
+        /**
+         * 浠g爜浼樺寲 鍒嗙缁熻
+        Map<String, Object> map = new HashMap<>();
+        map.put("serviceSubtaskList", serviceSubtaskList);
+        List<Map<String, Object>> list = new ArrayList<>();
+        list.add(map);
+         **/
+
+//        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);
@@ -103,6 +122,39 @@
             }
         });
         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");
+            if(MapUtils.isNotEmpty(redisMap)){
+                map = redisMap;
+                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+            }else {
+                map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+            }
+        }
+
+        map.put("code", HttpStatus.SUCCESS);
+        return map;
     }
 
 
@@ -151,7 +203,9 @@
             serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
             serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
         }
-        Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+        //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);
@@ -240,12 +294,18 @@
 
 
     /**
-     * 闅忚缁熻瀵煎嚭
+     * 闅忚鍘嗗彶璁板綍瀵煎嚭
      */
-    //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
-    @Log(title = "闅忚缁熻瀵煎嚭锛�", businessType = BusinessType.EXPORT)
+    @Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
     @PostMapping("/getSubtaskByDiagnameExport")
-    public void getSubtaskByDiagnameExport(HttpServletResponse response, List<ServiceSubtaskDiagname> serviceSubtaskDiagnameList) {
+    public void getSubtaskByDiagnameExport(HttpServletResponse response, ServiceSubtask serviceSubtask) {
+        LoginUser loginUser = getLoginUser();
+        SysUser user = loginUser.getUser();
+        serviceSubtask.setOrgid(user.getOrgid());
+        serviceSubtask.setPageNum(PageUtils.getOffset(serviceSubtask.getPageNum(), serviceSubtask.getPageSize()));
+        List<ServiceSubtask> subtaskList = serviceSubtaskService.selectServiceSubtaskByDiagname(serviceSubtask);
+        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")) {
@@ -254,7 +314,6 @@
             util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚缁熻瀵煎嚭");
         }
     }
-
 
     /**
      * 鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟
@@ -406,17 +465,21 @@
      * 闅忚缁熻瀵煎嚭
      */
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
-    @Log(title = "闅忚缁熻瀵煎嚭锛�", businessType = BusinessType.EXPORT)
+    @Log(title = "闅忚缁熻瀵煎嚭", businessType = BusinessType.EXPORT)
     @PostMapping("/getSfStatisticsExport")
     public void export(HttpServletResponse response, ServiceSubtaskCountReq serviceSubtaskCountReq) {
         List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatisticsExport(serviceSubtaskCountReq);
 
         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