From 132cb0d089c7734f3eb3e858bd741fbc60dbdc9d Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期二, 20 一月 2026 16:46:25 +0800
Subject: [PATCH] 【丽水】获取随访统计比例 查询优化
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 67 ++++++++++++++++++++-------------
1 files changed, 40 insertions(+), 27 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
index ee3ab44..f98f258 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -231,7 +231,8 @@
} catch (JsonProcessingException e) {
e.printStackTrace();
}
-
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists =
+ serviceSubtaskPreachformMapper.selectBySubtask(serviceSubtask);
for (ServiceSubtask serviceSubtask1 : list) {
PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
if (!serviceSubtask1.getHospType().equals("2")) {
@@ -288,10 +289,9 @@
}
//鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
- ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
- serviceSubtaskPreachform.setTaskid(serviceTask.getTaskid());
- serviceSubtaskPreachform.setSubid(serviceSubtask1.getId());
- List<ServiceSubtaskPreachform> serviceSubtaskPreachformList = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachformList =
+ serviceSubtaskPreachformLists.stream().filter((item -> item.getSubid().equals(serviceSubtask1.getId())
+ && item.getTaskid().equals(serviceTask.getTaskid()))).collect(Collectors.toList());
List<Map<String, Object>> resultList = serviceSubtaskPreachformList.stream().map(item -> {
Map<String, Object> map = new HashMap<>();
map.put("sort", item.getSort());
@@ -2230,24 +2230,25 @@
public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
log.info("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
-// List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
+ List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
// 鏍规嵁鏉′欢杩涜鍒嗙粍
Map<String, List<ServiceSubtask>> collect = new HashMap<>();
if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
} else {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
}
} else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {
if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
} else {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
}
}
+
for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
if (CollectionUtils.isEmpty(serviceSubtaskList)) {
@@ -2566,18 +2567,24 @@
} else {
serviceSubtaskStatistic.setFollowUpRate("0.00%");
}
- //棣栨闅忚浜哄伐
- if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+ //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null
+ && !serviceSubtask.getSendstate().equals(4L)
+ && serviceSubtask.getPreachform().equals("1")) {
serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
manualInfo.add(serviceSubtask);
}
- //棣栨闅忚鐭俊
- if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+ //棣栨闅忚鐭俊(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null
+ && !serviceSubtask.getSendstate().equals(4L)
+ && serviceSubtask.getPreachform().equals("4")) {
serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
smsInfo.add(serviceSubtask);
}
- //棣栨闅忚寰俊
- if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+ //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null
+ && !serviceSubtask.getSendstate().equals(4L)
+ && serviceSubtask.getPreachform().equals("5")) {
serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
wechatInfo.add(serviceSubtask);
}
@@ -2613,18 +2620,24 @@
} else {
serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
}
- //鍐嶆闅忚浜哄伐
- if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+ //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null
+ && !serviceSubtask.getSendstate().equals(4L)
+ && serviceSubtask.getPreachform().equals("1")) {
serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
manualAgainInfo.add(serviceSubtask);
}
- //鍐嶆闅忚鐭俊
- if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+ //鍐嶆闅忚鐭俊(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null
+ && !serviceSubtask.getSendstate().equals(4L)
+ && serviceSubtask.getPreachform().equals("4")) {
serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
smsAgainInfo.add(serviceSubtask);
}
- //鍐嶆闅忚寰俊
- if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+ //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null
+ && !serviceSubtask.getSendstate().equals(4L)
+ && serviceSubtask.getPreachform().equals("5")) {
serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
wechatAgainInfo.add(serviceSubtask);
}
@@ -3069,7 +3082,7 @@
* @return
*/
@Override
- @Cacheable(value = "sfStatisticsJoy", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
+ @Cacheable(value = "getSfStatisticsScript", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
public List<ServiceSubtaskStatistic> getSfStatisticsScript(ServiceSubtaskCountReq serviceSubtaskCountReq) {
log.error("getSfStatisticsScript鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
@@ -3132,12 +3145,12 @@
BigDecimal finishedSum = new BigDecimal(0);
//瀹屾垚姣斾緥
Double finishedPercentage = null;
- if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())){
- finishedSum = new BigDecimal(serviceSubtaskStatistic.getJoyAllCount());
+ if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())){
+ finishedSum = new BigDecimal(serviceSubtaskStatistic.getJoyCount());
}
- if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())){
- sum = new BigDecimal(serviceSubtaskStatistic.getJoyCount());
+ if(ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyAllCount())){
+ sum = new BigDecimal(serviceSubtaskStatistic.getJoyAllCount());
}
if(sum.intValue() != 0){
finishedPercentage = finishedSum.divide(sum, 2, RoundingMode.HALF_UP).doubleValue();
--
Gitblit v1.9.3