From c4dc6a5d66524d08b768046d9d2d5974bf96f45c Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:06:23 +0800
Subject: [PATCH] Merge branch 'smartor_ls_261103' into smartor_ls_merge
---
ruoyi-task/src/main/java/com/ruoyi/task/controller/ServiceSubtaskController.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 50 insertions(+), 9 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 a1b8afa..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
@@ -1009,26 +1009,35 @@
@AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getSfStatisticsCountDetailsHyperLink")
public AjaxResult getSfStatisticsCountDetailsHyperLink(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ Integer statisticaltype = serviceSubtaskCountReq.getStatisticaltype();
+ if (statisticaltype != null && statisticaltype != 1 && statisticaltype != 2 && statisticaltype != 3) {
+ return error("缁熻缁村害statisticaltype浠呮敮鎸侊細1-鎸夌梾鍖� 2-鎸夌瀹� 3-鎸塼askid");
+ }
+ if (serviceSubtaskCountReq.getScriptid() == null
+ && StringUtils.isEmpty(serviceSubtaskCountReq.getScriptContent())) {
+ return error("闂ID(scriptid)涓嶈兘涓虹┖");
+ }
+ if (serviceSubtaskCountReq.getOptionText() == null) {
+ return error("闂閫夐」(optionText)涓嶈兘涓虹┖");
+ }
+
LoginUser loginUser = getLoginUser();
String orgid = loginUser.getUser().getOrgid();
+ serviceSubtaskCountReq.setOrgid(orgid);
+
+ // 涓� getSfStatisticsCountDetails 淇濇寔鐩稿悓鐨勯厤缃瓫閫夊彛寰�
String configKey = serviceSubtaskCountReq.getConfigKey();
if (StringUtils.isNotEmpty(configKey)) {
String configValue = sysConfigService.selectConfigByKey(configKey, orgid);
serviceSubtaskCountReq.setConfigValue(configValue);
if (StringUtils.isEmpty(configValue)) {
- String logInfo = "getSfStatisticsCount-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
+ String logInfo = "getSfStatisticsCountDetailsHyperLink-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
log.error(logInfo);
return error(logInfo);
}
}
- String followUpCountStyle = sysConfigService.selectConfigByKey("followUpCountStyle", orgid);
- if (ObjectUtils.isNotEmpty(followUpCountStyle)) {
- serviceSubtaskCountReq.setFollowUpCountStyle(followUpCountStyle);
- } else {
- serviceSubtaskCountReq.setFollowUpCountStyle("1");
- }
- return success(serviceSubtaskService.getSfStatisticsHyperlink(serviceSubtaskCountReq));
+ return success(serviceSubtaskService.getSfStatisticsScriptDetailsHyperlink(serviceSubtaskCountReq));
}
/**
* 鍙戦�佺煭淇℃ā鏉�
@@ -1304,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);
@@ -1327,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