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 |  129 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 123 insertions(+), 6 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 2fb4c59..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,15 +30,21 @@
 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;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.text.DecimalFormat;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * 鍗曚竴浠诲姟锛堥殢璁匡級Controller
@@ -56,6 +65,12 @@
 
     @Autowired
     private IServiceSubtaskRecordService serviceSubtaskRecordService;
+
+    @Value("${spring.profiles.active}")
+    private String active;
+
+    @Autowired
+    private RedisCache redisCache;
 
     /**
      * 鏌ヨ鎮h�呴殢璁夸俊鎭�
@@ -83,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);
@@ -97,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;
     }
 
 
@@ -145,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);
@@ -206,6 +266,53 @@
     @GetMapping(value = "/getInfo/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
         return success(serviceSubtaskService.selectServiceSubtaskById(id));
+    }
+
+    /**
+     * 鏍规嵁鐤剧梾妯$硦鏌ヨ
+     */
+    //@PreAuthorize("@ss.hasPermi('system:taskcall:query')")
+    @PostMapping(value = "/getSubtaskByDiagname")
+    public Map<String, Object> getSubtaskByDiagname(@RequestBody ServiceSubtask serviceSubtask) {
+        LoginUser loginUser = getLoginUser();
+        SysUser user = loginUser.getUser();
+        serviceSubtask.setOrgid(user.getOrgid());
+        serviceSubtask.setPageNum(PageUtils.getOffset(serviceSubtask.getPageNum(), serviceSubtask.getPageSize()));
+        List<ServiceSubtask> serviceSubtaskList = serviceSubtaskService.selectServiceSubtaskByDiagname(serviceSubtask);
+        Map<String, Object> rspData = new HashMap();
+        rspData.put("code", HttpStatus.SUCCESS);
+        rspData.put("msg", "鏌ヨ鎴愬姛");
+        rspData.put("rows", serviceSubtaskList);
+
+        serviceSubtask.setPageNum(null);
+        serviceSubtask.setPageSize(null);
+        List<ServiceSubtask> total = serviceSubtaskService.selectServiceSubtaskByDiagname(serviceSubtask);
+        if (CollectionUtils.isNotEmpty(total)) rspData.put("total", total.size());
+        else rspData.put("total", 0);
+        return rspData;
+    }
+
+
+    /**
+     * 闅忚鍘嗗彶璁板綍瀵煎嚭
+     */
+    @Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
+    @PostMapping("/getSubtaskByDiagnameExport")
+    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")) {
+            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
+        } else {
+            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚缁熻瀵煎嚭");
+        }
     }
 
     /**
@@ -347,7 +454,7 @@
      */
     @ApiOperation("鑾峰彇闅忚婊℃剰搴︾粺璁�")
     @PostMapping("/getSfStatisticsJoy")
-    public AjaxResult getSfStatisticsJoy(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+    public Map<String, Object> getSfStatisticsJoy(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
         if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
             return error("鏈嶅姟绫诲瀷涓嶈兘涓虹┖");
         }
@@ -358,12 +465,22 @@
      * 闅忚缁熻瀵煎嚭
      */
     //@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.getSfStatistics(serviceSubtaskCountReq);
+        List<ServiceSubtaskStatistic> sfStatistics = serviceSubtaskService.getSfStatisticsExport(serviceSubtaskCountReq);
+
         ExcelUtil<ServiceSubtaskStatistic> util = new ExcelUtil<ServiceSubtaskStatistic>(ServiceSubtaskStatistic.class);
-        util.exportExcel(response, sfStatistics, "闅忚缁熻瀵煎嚭");
+
+        String sheetName = "";
+        String fileName = "";
+        if (active.equals("ls") || active.equals("druid")) {
+            fileName = sheetName = LocalDate.now().getMonthValue() + "鏈堝嚭闄㈤殢璁跨粺璁¤〃";
+            util.exportExcelWithFileName(response, sfStatistics, sheetName, fileName);
+        } else {
+            sheetName = "闅忚缁熻瀵煎嚭";
+            util.exportExcel(response, sfStatistics, sheetName);
+        }
     }
 
     /**

--
Gitblit v1.9.3