From cf8712a9c0816559f50644f15672e7359028c4c4 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:02:58 +0800
Subject: [PATCH] 妇幼-住院完成生成

---
 ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java b/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
index 06b4a55..06204ba 100644
--- a/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
+++ b/ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java
@@ -1313,10 +1313,12 @@
             Boolean redisFlag = false;
             if (MapUtils.isNotEmpty(redisMap)) {
                 long tCmp = System.currentTimeMillis();
-                ServiceSubtaskEntity oldCondition = (ServiceSubtaskEntity) redisMap.get("searchCondition");
+                ServiceSubtaskEntity oldCondition = convertCachedCondition(redisMap.get("searchCondition"));
                 if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskEntity)) {
                     redisFlag = true;
                     map = redisMap;
+                    // 椤烘墜鍥炲~杞崲鍚庣殑瀹炰綋锛岃杩欐潯缂撳瓨涓嬫鑳戒互姝g‘绫诲瀷鍙嶅簭鍒楀寲
+                    map.put("searchCondition", oldCondition);
                     redisCache.setCacheObject(userId + "patItemCount", map, 60, TimeUnit.MINUTES);
                 }
                 log.info("[patItem鑰楁椂] 4.2 鏉′欢姣斿={}ms锛屽懡涓�={}", System.currentTimeMillis() - tCmp, redisFlag);
@@ -1336,6 +1338,36 @@
         return map;
     }
 
+    /**
+     * 鎶� Redis 缂撳瓨閲岀殑鏌ヨ鏉′欢杩樺師鎴� {@link ServiceSubtaskEntity}銆�
+     * <p>
+     * 缂撳瓨鐢� {@code FastJson2JsonRedisSerializer} 鎸� {@code Object.class} 鍙嶅簭鍒楀寲锛�
+     * 褰� {@code searchCondition} 鐨� {@code @type} 缂哄け銆佹垨鎸囧悜宸茶縼绉荤殑鏃у寘鍚�
+     * 锛堝 {@code com.smartor.domain.entity.ServiceSubtaskEntity}锛夋椂锛宖astjson2 浼�
+     * 闈欓粯閫�鍖栨垚 {@link com.alibaba.fastjson2.JSONObject}锛岀洿鎺ュ己杞細鎶�
+     * {@code ClassCastException}銆傝繖閲岀粺涓�杞崲锛涜浆鎹㈠け璐ヨ繑鍥� {@code null}锛�
+     * 璋冪敤鏂规寜缂撳瓨鏈懡涓鐞嗭紙閲嶆柊鏌ュ簱锛夛紝閬垮厤鏁翠釜鎺ュ彛 500銆�
+     */
+    private ServiceSubtaskEntity convertCachedCondition(Object cachedCondition) {
+        if (cachedCondition == null) {
+            return null;
+        }
+        if (cachedCondition instanceof ServiceSubtaskEntity) {
+            return (ServiceSubtaskEntity) cachedCondition;
+        }
+        try {
+            // 涓嶈兘鐩存帴鐢� TypeUtils.cast / toJavaObject锛氭棫缂撳瓨閲岀殑 @type 鍙兘鎸囧悜宸茶縼绉荤殑绫伙紝
+            // fastjson2 浼氭寜 @type 鍘绘壘绫诲苟鎶� "No suitable ObjectReader found"銆�
+            // 杞垚 JSON 瀛楃涓插悗鎸夌洰鏍囩被瑙f瀽锛屾湭寮�鍚� SupportAutoType 鏃� @type 鍙細琚綋浣滄櫘閫氬瓧娈靛拷鐣ャ��
+            return com.alibaba.fastjson2.JSON.parseObject(
+                    com.alibaba.fastjson2.JSON.toJSONString(cachedCondition),
+                    ServiceSubtaskEntity.class);
+        } catch (Exception e) {
+            log.warn("銆恜atItemCount銆戠紦瀛樹腑鐨勬煡璇㈡潯浠舵棤娉曡繕鍘熶负 ServiceSubtaskEntity锛屾寜缂撳瓨鏈懡涓鐞嗭紝瀹為檯绫诲瀷锛歿}",
+                    cachedCondition.getClass().getName(), e);
+            return null;
+        }
+    }
 
     /**
      * 姣旇緝涓や釜ServiceSubtaskVO鐨勬煡璇㈡潯浠舵槸鍚︿竴鑷�

--
Gitblit v1.9.3