From 40bcb0cdb9f43f922b025a3fb8f7bafa376e6dc7 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 17 十二月 2025 15:48:47 +0800
Subject: [PATCH] 【丽水】统计随访数据 增加redis记录结果 提高查询效率
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 153 insertions(+), 5 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..217a96a 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,8 @@
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;
import com.smartor.mapper.PatMedOuthospMapper;
@@ -27,15 +31,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 +66,12 @@
@Autowired
private IServiceSubtaskRecordService serviceSubtaskRecordService;
+
+ @Value("${spring.profiles.active}")
+ private String active;
+
+ @Autowired
+ private RedisCache redisCache;
/**
* 鏌ヨ鎮h�呴殢璁夸俊鎭�
@@ -83,7 +99,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);
+ //patItemCount 璋冪敤redisCache璁板綍缁熻鏁版嵁
+ Map<String, Object> map = patItemCount(serviceSubtaskVO);
map.put("serviceSubtaskList", serviceSubtaskList);
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
@@ -97,6 +123,69 @@
}
});
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");
+ //璁板綍鏄惁鏈夊彲鐢ㄧ紦瀛�
+ Boolean redisFlag = false;
+ ServiceSubtaskVO oldCondition = null;
+ if(MapUtils.isNotEmpty(redisMap)){
+ 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"
+ );
}
@@ -145,7 +234,9 @@
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);
map.put("serviceSubtaskList", serviceSubtaskList);
List<Map<String, Object>> list = new ArrayList<>();
list.add(map);
@@ -206,6 +297,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 +485,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 +496,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