From 2cfa20c70ea84fa3435f3fd1e653c5ae60a3fc1e Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 06 一月 2026 16:52:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 128 ++++++++++++++++++++++++++++++++++++------
1 files changed, 108 insertions(+), 20 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 32f76f6..085f086 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
@@ -16,8 +16,11 @@
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.reflect.ReflectUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.service.ISysConfigService;
import com.smartor.domain.*;
import com.smartor.mapper.PatMedInhospMapper;
import com.smartor.mapper.PatMedOuthospMapper;
@@ -34,6 +37,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;
@@ -66,6 +70,9 @@
@Autowired
private IServiceSubtaskRecordService serviceSubtaskRecordService;
+ @Autowired
+ private ISysConfigService configService;
+
@Value("${spring.profiles.active}")
private String active;
@@ -77,6 +84,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 +107,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);
- **/
-
-// Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
- Map<String, Object> map = patItemCount(serviceSubtaskVO);
+// patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+// Map<String, Object> map = patItemCount(serviceSubtaskVO);
+ Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
map.put("serviceSubtaskList", serviceSubtaskList);
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
@@ -125,7 +126,7 @@
}
/**
- * 缁熻闅忚鏁版嵁
+ * 缁熻闅忚鏁版嵁 -- cache鐗�
*/
@ApiOperation("缁熻闅忚鏁版嵁")
@PostMapping("/patItemCount")
@@ -144,17 +145,47 @@
}
if(ObjectUtils.isNotEmpty(userId)){
redisMap = redisCache.getCacheObject(userId + "patItemCount");
+ //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+ 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);
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"
+ );
}
@@ -203,9 +234,10 @@
serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString());
serviceSubtask.setServiceSubtaskRecordList(serviceSubtaskRecordService.selectServiceSubtaskRecordList(serviceSubtaskRecord));
}
- //todo 浠g爜浼樺寲
- //Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
- Map<String, Object> map = patItemCount(serviceSubtaskVO);
+// patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+// Map<String, Object> map = patItemCount(serviceSubtaskVO);
+ Map<String, Object> map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
+
map.put("serviceSubtaskList", serviceSubtaskList);
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
@@ -309,9 +341,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, "闅忚鍘嗗彶璁板綍瀵煎嚭");
}
}
@@ -462,7 +494,7 @@
}
/**
- * 闅忚缁熻瀵煎嚭
+ * 闅忚鍘嗗彶璁板綍瀵煎嚭
*/
//@PreAuthorize("@ss.hasPermi('system:taskcall:export')")
@Log(title = "闅忚缁熻瀵煎嚭", businessType = BusinessType.EXPORT)
@@ -508,6 +540,62 @@
return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
}
+ /**
+ * 鑾峰彇闅忚鍒嗙被缁熻鏄庣粏
+ */
+ @ApiOperation("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏")
+ @PostMapping("/getSfStatisticsCount")
+ public Map<String, Object> getSfStatisticsCount(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
+ return error("鏈嶅姟绫诲瀷涓嶈兘涓虹┖");
+ }
+ PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize());
+
+ String configKey = serviceSubtaskCountReq.getConfigKey();
+ if(StringUtils.isNotEmpty(configKey)){
+ String configValue = configService.selectConfigByKey(configKey);
+ serviceSubtaskCountReq.setConfigValue(configValue);
+ if(StringUtils.isEmpty(configValue)){
+ String logInfo = "getSfStatisticsCount-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
+ log.error(logInfo);
+ return error(logInfo);
+ }
+ }else {
+ String logInfo = "getSfStatisticsCount-鍙傛暟configKey鏈紶鍏�, 璇烽厤缃ソ鍚庨噸璇�";
+ log.error(logInfo);
+ return error(logInfo);
+ }
+ return success(serviceSubtaskService.getSfStatisticsScript(serviceSubtaskCountReq));
+ }
+
+ @ApiOperation("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏璇︽儏")
+ @PostMapping("/getSfStatisticsCountDetails")
+ public AjaxResult getSfStatisticsCountDetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) {
+ return error("绉戝鎴栫梾鍖轰笉鑳戒负绌�");
+ }
+ PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize());
+ //澶嶈瘖缁熻
+ String configKey = serviceSubtaskCountReq.getConfigKey();
+ if(StringUtils.isNotEmpty(configKey)){
+ String configValue = configService.selectConfigByKey(configKey);
+ if(StringUtils.isEmpty(configValue)){
+ String logInfo = "getSfStatisticsCountDetails-鍙傛暟 " + configKey + " 鏈厤缃�, 璇烽厤缃ソ鍚庨噸璇�";
+ log.error(logInfo);
+ return error(logInfo);
+ }
+ serviceSubtaskCountReq.setConfigValue(configValue);
+ }else {
+ String logInfo = "getSfStatisticsCountDetails-鍙傛暟configKey鏈紶鍏�, 璇烽厤缃ソ鍚庨噸璇�";
+ log.error(logInfo);
+ return error(logInfo);
+ }
+
+ LoginUser loginUser = getLoginUser();
+ String orgid = loginUser.getUser().getOrgid();
+ serviceSubtaskCountReq.setOrgid(orgid);
+ return success(serviceSubtaskService.getSfStatisticsScriptDetails(serviceSubtaskCountReq));
+ }
/**
* 鍙戦�佺煭淇℃ā鏉�
--
Gitblit v1.9.3