From b70470489e87f02b45b521090f1e5dd6052c3eb8 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期二, 06 一月 2026 10:40:21 +0800
Subject: [PATCH] 省立同德短信问题处理

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java |   65 ++++++++++++++++++++++----------
 1 files changed, 44 insertions(+), 21 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 89a1e35..698e966 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
@@ -17,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.reflect.ReflectUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.PatMedInhospMapper;
@@ -34,6 +35,7 @@
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -77,6 +79,7 @@
      */
     @ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
     //@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
+//    @Cacheable(value = "patItem", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskVO.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
     @PostMapping("/patItem")
     public TableDataInfo patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
         PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
@@ -99,16 +102,9 @@
             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爜浼樺寲
+//      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+//      Map<String, Object> map = patItemCount(serviceSubtaskVO);
         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);
@@ -125,7 +121,7 @@
     }
 
     /**
-     * 缁熻闅忚鏁版嵁
+     * 缁熻闅忚鏁版嵁 -- cache鐗�
      */
     @ApiOperation("缁熻闅忚鏁版嵁")
     @PostMapping("/patItemCount")
@@ -145,20 +141,46 @@
         if(ObjectUtils.isNotEmpty(userId)){
             redisMap = redisCache.getCacheObject(userId + "patItemCount");
             //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
-//            Boolean redisFlag = false;
-//            Map oldConditionMap = (Map)redisMap.get("searchCondition");
+            Boolean redisFlag = false;
+            ServiceSubtaskVO oldCondition = null;
             if(MapUtils.isNotEmpty(redisMap)){
-                map = redisMap;
-                redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
-            }else {
+                oldCondition = (ServiceSubtaskVO)redisMap.get("searchCondition");
+                // 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
+                if(ObjectUtils.isNotEmpty(oldCondition) &&
+                        isSameCondition(oldCondition, serviceSubtaskVO)){
+                    // 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
+                    redisFlag = true;
+                    map = redisMap;
+                    redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
+                }
+            }
+
+            // 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
+            if(!redisFlag){
                 map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
-//                map.put("searchCondition",serviceSubtaskVO);
+                map.put("searchCondition", serviceSubtaskVO);
                 redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
             }
         }
 
         map.put("code", HttpStatus.SUCCESS);
         return map;
+    }
+
+    /**
+     * 姣旇緝涓や釜ServiceSubtaskVO鐨勬煡璇㈡潯浠舵槸鍚︿竴鑷�
+     * 浣跨敤鍙嶅皠姣旇緝鎵�鏈夊瓧娈碉紝鎺掗櫎鍒嗛〉鍙傛暟鍜屾棤鍏冲瓧娈�
+     */
+    private boolean isSameCondition(ServiceSubtaskVO oldCondition, ServiceSubtaskVO newCondition) {
+        // 浣跨敤ReflectUtils鐨勯�氱敤鏂规硶姣旇緝锛屾帓闄ゅ垎椤靛弬鏁扮瓑鏃犲叧瀛楁
+        return ReflectUtils.equalsAllFields(
+                oldCondition,
+                newCondition,
+                // 鎺掗櫎鐨勫瓧娈碉細鍒嗛〉鍙傛暟銆佸簭鍒楀寲ID銆佹椂闂存埑绛�
+                "pageNum", "pageSize", "serialVersionUID",
+                "createBy", "createTime", "updateBy", "updateTime",
+                "searchValue", "params"
+        );
     }
 
 
@@ -207,9 +229,10 @@
             serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
             serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
         }
-        //todo 浠g爜浼樺寲
+//      patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+//      Map<String, Object> map = patItemCount(serviceSubtaskVO);
         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);
@@ -313,9 +336,9 @@
         ExcelUtil<ServiceSubtaskDiagname> util = new ExcelUtil<ServiceSubtaskDiagname>(ServiceSubtaskDiagname.class);
 
         if (active.equals("ls") || active.equals("druid")) {
-            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚缁熻瀵煎嚭");
+            util.exportExcel(response, serviceSubtaskDiagnameList, LocalDate.now().getMonthValue() + "闅忚鍘嗗彶璁板綍瀵煎嚭");
         } else {
-            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚缁熻瀵煎嚭");
+            util.exportExcel(response, serviceSubtaskDiagnameList, "闅忚鍘嗗彶璁板綍瀵煎嚭");
         }
     }
 
@@ -466,7 +489,7 @@
     }
 
     /**
-     * 闅忚缁熻瀵煎嚭
+     * 闅忚鍘嗗彶璁板綍瀵煎嚭
      */
     //@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
     @Log(title = "闅忚缁熻瀵煎嚭", businessType = BusinessType.EXPORT)

--
Gitblit v1.9.3