From a77bf9fb4718d1b657f8ef8c6edfaffa1a53683f Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 06 二月 2026 17:01:20 +0800
Subject: [PATCH] 处理数据查询慢的问题
---
ruoyi-admin/src/main/java/com/ruoyi/web/controller/smartor/ServiceSubtaskController.java | 135 +++++++++++++++++++++++++++++++++++---------
1 files changed, 106 insertions(+), 29 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 698e966..993d800 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
@@ -1,6 +1,8 @@
package com.ruoyi.web.controller.smartor;
import com.github.pagehelper.ISelect;
+import com.github.pagehelper.Page;
+import com.ruoyi.common.annotation.AddOrgId;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants;
@@ -16,9 +18,12 @@
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.domain.SysConfig;
+import com.ruoyi.system.service.ISysConfigService;
import com.smartor.domain.*;
import com.smartor.mapper.PatMedInhospMapper;
import com.smartor.mapper.PatMedOuthospMapper;
@@ -68,6 +73,9 @@
@Autowired
private IServiceSubtaskRecordService serviceSubtaskRecordService;
+ @Autowired
+ private ISysConfigService configService;
+
@Value("${spring.profiles.active}")
private String active;
@@ -81,8 +89,8 @@
//@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());
+ public Map<String, Object> patItem(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
+ serviceSubtaskVO.setPageNum(PageUtils.getOffset(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize()));
List<ServiceSubtask> serviceSubtaskList = null;
LoginUser loginUser = getLoginUser();
SysUser user = loginUser.getUser();
@@ -103,27 +111,23 @@
}
// 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);
- //鑾峰彇total
- long total = PageUtils.count(new ISelect() {
- @Override
- public void doSelect() {
- serviceSubtaskVO.setPageNum(null);
- serviceSubtaskVO.setPageSize(null);
- serviceSubtaskService.patItem(serviceSubtaskVO);
- }
- });
- return getDataTable2(total, list);
+
+ serviceSubtaskVO.setPageNum(null);
+ serviceSubtaskVO.setPageSize(null);
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskService.patItem(serviceSubtaskVO);
+
+ return getDataTable3(CollectionUtils.isNotEmpty(serviceSubtasks) ? serviceSubtasks.size() : 0L, list);
}
/**
* 缁熻闅忚鏁版嵁 -- cache鐗�
*/
@ApiOperation("缁熻闅忚鏁版嵁")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/patItemCount")
public Map<String, Object> patItemCount(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
Map<String, Object> map = new HashMap<>();
@@ -132,22 +136,21 @@
LoginUser loginUser = getLoginUser();
SysUser user = null;
Long userId = null;
- if(ObjectUtils.isNotEmpty(loginUser)){
+ if (ObjectUtils.isNotEmpty(loginUser)) {
user = loginUser.getUser();
- if(ObjectUtils.isNotEmpty(user)){
+ if (ObjectUtils.isNotEmpty(user)) {
userId = user.getUserId();
}
}
- if(ObjectUtils.isNotEmpty(userId)){
+ 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 (MapUtils.isNotEmpty(redisMap)) {
+ oldCondition = (ServiceSubtaskVO) redisMap.get("searchCondition");
// 姣旇緝鏌ヨ鏉′欢鏄惁涓�鑷�
- if(ObjectUtils.isNotEmpty(oldCondition) &&
- isSameCondition(oldCondition, serviceSubtaskVO)){
+ if (ObjectUtils.isNotEmpty(oldCondition) && isSameCondition(oldCondition, serviceSubtaskVO)) {
// 鏉′欢涓�鑷达紝浣跨敤缂撳瓨
redisFlag = true;
map = redisMap;
@@ -156,7 +159,7 @@
}
// 濡傛灉娌℃湁缂撳瓨鎴栬�呮潯浠朵笉涓�鑷达紝閲嶆柊鏌ヨ
- if(!redisFlag){
+ if (!redisFlag) {
map = serviceSubtaskService.patItemCount(serviceSubtaskVO);
map.put("searchCondition", serviceSubtaskVO);
redisCache.setCacheObject(userId + "patItemCount", map, 120, TimeUnit.MINUTES);
@@ -173,14 +176,9 @@
*/
private boolean isSameCondition(ServiceSubtaskVO oldCondition, ServiceSubtaskVO newCondition) {
// 浣跨敤ReflectUtils鐨勯�氱敤鏂规硶姣旇緝锛屾帓闄ゅ垎椤靛弬鏁扮瓑鏃犲叧瀛楁
- return ReflectUtils.equalsAllFields(
- oldCondition,
- newCondition,
+ return ReflectUtils.equalsAllFields(oldCondition, newCondition,
// 鎺掗櫎鐨勫瓧娈碉細鍒嗛〉鍙傛暟銆佸簭鍒楀寲ID銆佹椂闂存埑绛�
- "pageNum", "pageSize", "serialVersionUID",
- "createBy", "createTime", "updateBy", "updateTime",
- "searchValue", "params"
- );
+ "pageNum", "pageSize", "serialVersionUID", "createBy", "createTime", "updateBy", "updateTime", "searchValue", "params");
}
@@ -216,6 +214,7 @@
*/
@ApiOperation("鏌ヨ鎮h�呴殢璁夸俊鎭�")
//@PreAuthorize("@ss.hasPermi('system:taskcall:list')")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/patItemByCondition")
public TableDataInfo patItemByCondition(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
List<ServiceSubtask> serviceSubtaskList = null;
@@ -265,6 +264,7 @@
* 闅忚鏁版嵁鏌ヨ
*/
@Log(title = "闅忚鏁版嵁鏌ヨ", businessType = BusinessType.EXPORT)
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/querySubtaskList")
public AjaxResult querySubtaskList(@RequestBody ServiceSubtaskVO serviceSubtaskVO) {
PageUtils.startPageByPost(serviceSubtaskVO.getPageNum(), serviceSubtaskVO.getPageSize());
@@ -299,6 +299,7 @@
* 鏍规嵁鐤剧梾妯$硦鏌ヨ
*/
//@PreAuthorize("@ss.hasPermi('system:taskcall:query')")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping(value = "/getSubtaskByDiagname")
public Map<String, Object> getSubtaskByDiagname(@RequestBody ServiceSubtask serviceSubtask) {
LoginUser loginUser = getLoginUser();
@@ -324,6 +325,7 @@
* 闅忚鍘嗗彶璁板綍瀵煎嚭
*/
@Log(title = "闅忚鍘嗗彶璁板綍瀵煎嚭", businessType = BusinessType.EXPORT)
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getSubtaskByDiagnameExport")
public void getSubtaskByDiagnameExport(HttpServletResponse response, ServiceSubtask serviceSubtask) {
LoginUser loginUser = getLoginUser();
@@ -332,7 +334,8 @@
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);
+ if (CollectionUtils.isNotEmpty(subtaskList))
+ serviceSubtaskDiagnameList = serviceSubtaskService.convertToDiagnameList(subtaskList);
ExcelUtil<ServiceSubtaskDiagname> util = new ExcelUtil<ServiceSubtaskDiagname>(ServiceSubtaskDiagname.class);
if (active.equals("ls") || active.equals("druid")) {
@@ -348,6 +351,7 @@
@ApiOperation("鏂板鎴栦慨鏀瑰垹闄ゅ崟涓�浠诲姟")
//@PreAuthorize("@ss.hasPermi('system:task:add')")
@Log(title = "鍗曚竴浠诲姟锛堥殢璁匡級", businessType = BusinessType.INSERT)
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/insertOrUpdateTask")
public AjaxResult insertOrUpdateHeTask(@RequestBody ServiceTaskVO ivrTaskVO) {
log.info("insertOrUpdateHeTask鐨勫叆鍙備负锛歿}", ivrTaskVO);
@@ -360,6 +364,7 @@
}
@ApiOperation("淇敼瀛愪换鍔�")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/update")
public AjaxResult update(@RequestBody ServiceSubtask serviceSubtask) {
serviceSubtask.setUpdateBy(getLoginUser().getUser().getNickName());
@@ -367,6 +372,7 @@
}
@ApiOperation("鏂板瀛愪换鍔�")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/addSubTask")
public AjaxResult addSubTask(@RequestBody ServiceSubtask serviceSubtask) {
SysUser user = getLoginUser().getUser();
@@ -375,6 +381,7 @@
}
@ApiOperation("鎮h�呭啀娆¢殢璁�")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/addSubTaskAgain")
public AjaxResult addSubTaskAgain(@RequestBody ServiceSubtask serviceSubtask) {
SysUser user = getLoginUser().getUser();
@@ -386,6 +393,7 @@
* 鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅
*/
@ApiOperation("鏍规嵁鏉′欢鏌ヨ浠诲姟淇℃伅")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/queryTaskByCondition")
public AjaxResult queryTaskByCondition(@RequestBody ServiceSubtaskVO ivrTaskcallVO) {
//鏍规嵁鍏ュ弬鏌ヨ淇℃伅
@@ -432,6 +440,7 @@
public AjaxResult saveQuestionAnswerPhone(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
// SysUser user = getLoginUser().getUser();
// serviceSubTaskDetailReq.setOrgid(user.getOrgid());
+ log.info("鎮h�呴棶棰樼粨鏋滆褰�(鐢佃瘽):{}", serviceSubTaskDetailReq);
return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));
}
@@ -441,6 +450,7 @@
@ApiOperation("閫氳瘽璁板綍鍥炶皟(涓婃捣)")
@PostMapping("/recordAcceptshanghai")
public AjaxResult recordAccepshanghait(@RequestBody ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
+ log.info("閫氳瘽璁板綍鍥炶皟(涓婃捣):{}", serviceSubTaskDetailReq);
return toAjax(serviceSubtaskService.saveQuestionAnswerPhone(serviceSubTaskDetailReq));
}
@@ -459,6 +469,7 @@
* 鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺
*/
@ApiOperation("鑾峰彇姣忎釜鏈堢殑闅忚銆佸璇婇噺")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getSfFzInfoEveryMonth")
public TableDataInfo getSfFzInfoEveryMonth(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
return getDataTable(serviceSubtaskService.getSfFzInfoEveryMonth(serviceSubtaskCountReq));
@@ -468,10 +479,17 @@
* 鑾峰彇闅忚缁熻姣斾緥
*/
@ApiOperation("鑾峰彇闅忚缁熻姣斾緥")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getSfStatistics")
public AjaxResult getSfStatistics(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
return error("鏈嶅姟绫诲瀷涓嶈兘涓虹┖");
+ }
+ String followUpCountStyle = configService.selectConfigByKey("followUpCountStyle", serviceSubtaskCountReq.getOrgid());
+ if (ObjectUtils.isNotEmpty(followUpCountStyle)) {
+ serviceSubtaskCountReq.setFollowUpCountStyle(followUpCountStyle);
+ } else {
+ serviceSubtaskCountReq.setFollowUpCountStyle("1");
}
return success(serviceSubtaskService.getSfStatistics(serviceSubtaskCountReq));
}
@@ -480,6 +498,7 @@
* 鑾峰彇闅忚缁熻姣斾緥
*/
@ApiOperation("鑾峰彇闅忚婊℃剰搴︾粺璁�")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getSfStatisticsJoy")
public Map<String, Object> getSfStatisticsJoy(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
@@ -514,6 +533,7 @@
* 闅忚缁熻瀵煎嚭
*/
@ApiOperation("鏈嶅姟缁熻鏌ヨ-鎸夋椂闂寸淮搴︾粺璁″嚭闄�/闂ㄨ瘖闅忚鏁版嵁")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getServiceStatistics")
public AjaxResult getServiceStatistics(@RequestBody ServiceStatisticsRequest serviceStatisticsRequest) {
SysUser user = getLoginUser().getUser();
@@ -527,6 +547,7 @@
* 鑾峰彇闅忚缁熻姣斾緥
*/
@ApiOperation("鑾峰彇闅忚婊℃剰搴︽槑缁�")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
@PostMapping("/getSfStatisticsJoydetails")
public AjaxResult getSfStatisticsJoydetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) {
@@ -535,6 +556,62 @@
return success(serviceSubtaskService.getSfStatisticsJoydetails(serviceSubtaskCountReq));
}
+ /**
+ * 鑾峰彇闅忚鍒嗙被缁熻鏄庣粏
+ */
+ @ApiOperation("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+ @PostMapping("/getSfStatisticsCount")
+ public Map<String, Object> getSfStatisticsCount(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ if (CollectionUtils.isEmpty(serviceSubtaskCountReq.getServiceType())) {
+ return error("鏈嶅姟绫诲瀷涓嶈兘涓虹┖");
+ }
+ String configKey = serviceSubtaskCountReq.getConfigKey();
+ if (StringUtils.isNotEmpty(configKey)) {
+ String configValue = configService.selectConfigByKey(configKey, serviceSubtaskCountReq.getOrgid());
+ 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("鑾峰彇闅忚鍒嗙被缁熻鏄庣粏璇︽儏")
+ @AddOrgId(field = "orgid", paramIndex = 0, campusField = "campusid")
+ @PostMapping("/getSfStatisticsCountDetails")
+ public AjaxResult getSfStatisticsCountDetails(@RequestBody ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() == 0 && serviceSubtaskCountReq.getDeptcodes().size() == 0) {
+ return error("绉戝鎴栫梾鍖轰笉鑳戒负绌�");
+ }
+ //澶嶈瘖缁熻
+ String configKey = serviceSubtaskCountReq.getConfigKey();
+ if (StringUtils.isNotEmpty(configKey)) {
+ String configValue = configService.selectConfigByKey(configKey, serviceSubtaskCountReq.getOrgid());
+ 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);
+ PageUtils.startPageByPost(serviceSubtaskCountReq.getPageNum(), serviceSubtaskCountReq.getPageSize());
+ return success(serviceSubtaskService.getSfStatisticsScriptDetails(serviceSubtaskCountReq));
+ }
/**
* 鍙戦�佺煭淇℃ā鏉�
--
Gitblit v1.9.3