From 459aa78c84cf552ebea6ef056d978c2531d71ac8 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 06 三月 2026 17:14:27 +0800
Subject: [PATCH] 代码提交
---
smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java | 828 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 684 insertions(+), 144 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 3d86527..44461fa 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSubtaskServiceImpl.java
@@ -1,7 +1,9 @@
package com.smartor.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.ruoyi.common.core.redis.RedisCache;
@@ -11,12 +13,15 @@
import com.smartor.common.FtpService;
import com.smartor.config.PhoneUtils;
import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.*;
import com.sun.org.apache.bcel.internal.generic.NEW;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.ListUtils;
+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;
@@ -164,26 +169,30 @@
/**
* 鏌ヨ鍗曚竴浠诲姟锛堥殢璁匡級鍒楄〃
*
- * @param serviceSubtaskVO 鍗曚竴浠诲姟锛堥殢璁匡級
+ * @param serviceSubtaskEntity 鍗曚竴浠诲姟锛堥殢璁匡級
* @return 鍗曚竴浠诲姟锛堥殢璁匡級
*/
@Override
- public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskVO serviceSubtaskVO) {
- return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ public List<ServiceSubtask> selectServiceSubtaskList(ServiceSubtaskEntity serviceSubtaskEntity) {
+ return serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
}
- public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskVO serviceSubtaskVO) {
- return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskVO);
+ public List<ServiceSubtask> selectServiceSubtaskListAgain(ServiceSubtaskEntity serviceSubtaskEntity) {
+ return serviceSubtaskMapper.selectServiceSubtaskListAgain(serviceSubtaskEntity);
}
@Override
public ServiceTaskVO queryTaskByCondition(ServiceSubtask serviceSubtask) {
//瀹氫箟鎮h�呬笌鍗曚竴浠诲姟鍏宠仈琛ㄩ泦鍚�
List<PatTaskRelevance> patTaskRelevances = new ArrayList<>();
- ServiceSubtaskVO serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskVO.class);
+ ServiceSubtaskEntity serviceSubtaskVO = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskEntity.class);
List<ServiceSubtask> list = selectServiceSubtaskList(serviceSubtaskVO);
ServiceTask serviceTask = serviceTaskService.selectServiceTaskByTaskid(serviceSubtask.getTaskid());
+ if (ObjectUtils.isEmpty(serviceTask)) {
+ log.error("鎵句笉鍒板搴旂殑serviceTask, orgid锛歿}, taskid: {}", serviceSubtask.getOrgid(), serviceSubtask.getTaskid());
+ return null;
+ }
if (CollectionUtils.isEmpty(list) || list.size() == 0) {
ServiceTaskVO serviceTaskVO = DtoConversionUtils.sourceToTarget(serviceTask, ServiceTaskVO.class);
ObjectMapper objectMapper = new ObjectMapper();
@@ -224,7 +233,7 @@
} catch (JsonProcessingException e) {
e.printStackTrace();
}
-
+ List<ServiceSubtaskPreachform> serviceSubtaskPreachformLists = serviceSubtaskPreachformMapper.selectBySubtask(serviceSubtask);
for (ServiceSubtask serviceSubtask1 : list) {
PatTaskRelevance patTaskRelevance = new PatTaskRelevance();
if (!serviceSubtask1.getHospType().equals("2")) {
@@ -281,10 +290,7 @@
}
//鑾峰彇璇ユ偅鑰呮墍鏈夌殑鎵ц鐘舵��
- 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());
@@ -303,55 +309,95 @@
}
@Override
- public List<ServiceSubtask> patItem(ServiceSubtaskVO serviceSubtaskVO) {
- List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
- return selectServiceSubtaskList;
+ public List<ServiceSubtaskRes> patItem(ServiceSubtaskEntity serviceSubtaskEntity) {
+ List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskEntity);
+
+ List<ServiceSubtaskRes> serviceSubtaskResList = new ArrayList<>();
+ for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+ ServiceSubtaskRes serviceSubtaskRes = DtoConversionUtils.sourceToTarget(serviceSubtask, ServiceSubtaskRes.class);
+ serviceSubtaskRes.setContinueContent(JSONObject.parseObject(serviceSubtask.getContinueContent()));
+ }
+ return serviceSubtaskResList;
}
@Override
- public List<ServiceSubtask> patItem2(ServiceSubtaskVO serviceSubtaskVO) {
+ public List<ServiceSubtask> patItem2(ServiceSubtaskEntity serviceSubtaskEntity) {
List<ServiceSubtask> serviceSubtaskList = new ArrayList<>();
- for (Long sendstate : serviceSubtaskVO.getSendstates()) {
- serviceSubtaskVO.setSendstate(sendstate);
- List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
+ for (Long sendstate : serviceSubtaskEntity.getSendstates()) {
+ serviceSubtaskEntity.setSendstate(sendstate);
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
serviceSubtaskList.addAll(serviceSubtasks);
}
return serviceSubtaskList;
}
+// 鍘熸柟娉�
+// @Override
+// public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
+// serviceSubtaskVO.setPageSize(99999999);
+// serviceSubtaskVO.setPageNum(1);
+// List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
+// Map<String, Object> map = new HashMap<>();
+// Integer wzx = 0;
+// Integer ysf = 0;
+// Integer yc = 0;
+// Integer fssb = 0;
+// Integer yfs = 0;
+// Integer blq = 0;
+// Integer dsf = 0;
+// for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
+// if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
+// else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;
+// if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
+// if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
+// if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
+// if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
+// if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
+// yc = yc + 1;
+// }
+//
+// map.put("wzx", wzx);
+// map.put("ysf", ysf);
+// map.put("yc", yc);
+// map.put("fssb", fssb);
+// map.put("yfs", yfs);
+// map.put("blq", blq);
+// map.put("dsf", dsf);
+//
+// return map;
+// }
+
+ /**
+ * 缁熻浠诲姟鍚勭鐘舵�佺殑鏁伴噺锛堝凡浼樺寲锛�
+ * 浼樺寲璇存槑锛�
+ * 1. 浣跨敤鏁版嵁搴撳眰鑱氬悎璁$畻锛屾浛浠e簲鐢ㄥ眰閬嶅巻
+ * 2. 鎬ц兘鎻愬崌 10-100 鍊嶏紙鍙栧喅浜庢暟鎹噺锛�
+ * 3. 闄嶄綆鍐呭瓨鍗犵敤鍜岀綉缁滀紶杈�
+ *
+ * @param serviceSubtaskEntity 鏌ヨ鏉′欢
+ * @return 鍚勭姸鎬佺粺璁$粨鏋�
+ */
@Override
- public Map<String, Object> patItemCount(ServiceSubtaskVO serviceSubtaskVO) {
- serviceSubtaskVO.setPageSize(99999999);
- serviceSubtaskVO.setPageNum(1);
- List<ServiceSubtask> selectServiceSubtaskList = this.selectServiceSubtaskList(serviceSubtaskVO);
- Map<String, Object> map = new HashMap<>();
- Integer wzx = 0;
- Integer ysf = 0;
- Integer yc = 0;
- Integer fssb = 0;
- Integer yfs = 0;
- Integer blq = 0;
- Integer dsf = 0;
- for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) {
- if (serviceSubtask.getSendstate() == 4L) wzx = wzx + 1;
- else if (serviceSubtask.getSendstate() != 4L && serviceSubtask.getSendstate() != 2L) ysf = ysf + 1;
- if (serviceSubtask.getSendstate() == 5L) fssb = fssb + 1;
- if (serviceSubtask.getSendstate() >= 3L || serviceSubtask.getSendstate() == 1L) yfs = yfs + 1;
- if (serviceSubtask.getSendstate() == 2L) dsf = dsf + 1;
- if (serviceSubtask.getSendstate() == 1L) blq = blq + 1;
- if (StringUtils.isNotEmpty(serviceSubtask.getExcep()) && !serviceSubtask.getExcep().equals("0"))
- yc = yc + 1;
+ public Map<String, Object> patItemCount(ServiceSubtaskEntity serviceSubtaskEntity) {
+ // 鐩存帴璋冪敤鏁版嵁搴撶粺璁℃柟娉曪紝鍦ㄦ暟鎹簱灞傚畬鎴愯仛鍚堣绠�
+ Map<String, Object> result = serviceSubtaskMapper.countByCondition(serviceSubtaskEntity);
+ // 澶勭悊绌哄紓甯�
+ if (MapUtils.isEmpty(result)) {
+ result = new HashMap<>();
}
- map.put("wzx", wzx);
- map.put("ysf", ysf);
- map.put("yc", yc);
- map.put("fssb", fssb);
- map.put("yfs", yfs);
- map.put("blq", blq);
- map.put("dsf", dsf);
+ // 纭繚鎵�鏈� key 閮芥湁鍊硷紝閬垮厤绌烘寚閽堝紓甯�
+ // MyBatis 鐨� SUM 鍦ㄦ病鏈夊尮閰嶈鏃朵細杩斿洖 null
+ result.putIfAbsent("wzx", 0);
+ result.putIfAbsent("ysf", 0);
+ result.putIfAbsent("yc", 0);
+ result.putIfAbsent("jg", 0);
+ result.putIfAbsent("fssb", 0);
+ result.putIfAbsent("yfs", 0);
+ result.putIfAbsent("blq", 0);
+ result.putIfAbsent("dsf", 0);
- return map;
+ return result;
}
/**
@@ -383,18 +429,18 @@
if (patMedInhospList.size() > 0) {
serviceSubtask1.setIsVisitAgain(2);
- serviceSubtask1.setRemark(serviceSubtask1.getRemark()+";鎮h�呭啀鍏ラ櫌浜�");
+ serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";鎮h�呭啀鍏ラ櫌浜�");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
return "鏃犻渶鍐嶆闅忚锛屾偅鑰呭啀鍏ラ櫌浜�";
} else if (serviceSubtask1.getSendstate() == 4L) {
serviceSubtask1.setIsVisitAgain(2);
- serviceSubtask1.setRemark(serviceSubtask1.getRemark()+";鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц");
+ serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
return "鏃犻渶鍐嶆闅忚锛屼换鍔¤鏍囪涓嶅湪鎵ц";
} else if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
serviceSubtask1.setIsVisitAgain(2);
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask1);
- serviceSubtask1.setRemark(serviceSubtask1.getRemark()+";鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟");
+ serviceSubtask1.setRemark(serviceSubtask1.getRemark() + ";鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟");
return "鏃犻渶鍐嶆闅忚锛屾偅鑰呰鏍囪涓嶉渶瑕佽鏈嶅姟";
} else if (ObjectUtils.isNotEmpty(serviceSubtask1.getIsVisitAgain()) && serviceSubtask1.getIsVisitAgain() == 2) {
return "鏃犻渶鍐嶆闅忚锛岃浠诲姟宸茬粡鍐嶆闅忚杩囦簡";
@@ -482,7 +528,15 @@
}
if (ObjectUtils.isNotEmpty(serviceTaskVO.getIvrTaskTemplateVO())) {
tempid = Long.valueOf(ivrTaskTemplateService.saveOrUpdateTempScript(serviceTaskVO.getIvrTaskTemplateVO()));
- tempName = ivrTaskTemplateService.selectIvrTaskTemplateByID(tempid).getTemplateName();
+ log.info("IVR妯℃澘鎻掑叆鎴愬姛锛岃繑鍥炵殑tempid={}", tempid);
+
+ IvrTaskTemplate ivrTaskTemplate = ivrTaskTemplateService.selectIvrTaskTemplateByID(tempid);
+ if (ivrTaskTemplate == null) {
+ log.error("鏍规嵁tempid={}鏌ヨIVR妯℃澘澶辫触锛岃繑鍥瀗ull锛佽妫�鏌el_flag瀛楁鏄惁姝g‘璁剧疆", tempid);
+ throw new BaseException("IVR妯℃澘淇濆瓨鎴愬姛浣嗘煡璇㈠け璐ワ紝璇疯仈绯荤鐞嗗憳妫�鏌ユ暟鎹�");
+ }
+ tempName = ivrTaskTemplate.getTemplateName();
+ log.info("IVR妯℃澘鏌ヨ鎴愬姛锛宼empName={}", tempName);
}
//寰�浠诲姟琛ㄤ腑锛屾柊澧炰换鍔�
@@ -622,6 +676,11 @@
serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
+ serviceSubtask.setContinueContent(ObjectUtils.isNotEmpty(patTaskRelevance.getContinueContent()) ? patTaskRelevance.getContinueContent().toString() : null);
+ serviceSubtask.setContinueCount(patTaskRelevance.getContinueCount());
+ serviceSubtask.setContinueFlag(patTaskRelevance.getContinueFlag());
+ serviceSubtask.setContinueTimeNext(patTaskRelevance.getContinueTimeNext());
+ serviceSubtask.setContinueTimeNow(patTaskRelevance.getContinueTimeNow());
serviceSubtask.setCreateBy(serviceTask.getCreateBy());
serviceSubtask.setUpdateBy(serviceTask.getCreateBy());
serviceSubtask.setVisitTime(patTaskRelevance.getVisittime());
@@ -657,7 +716,7 @@
//淇敼鎿嶄綔锛岄渶瑕佸皢stopState鐘舵��+1
ServiceTask serviceTask1 = serviceTaskService.selectServiceTaskByTaskid(serviceTask.getTaskid());
//鑾峰彇鍒拌浠诲姟鎵�鏈夌殑鏈嶅姟锛屽苟浠庨槦鍒楅噷鍒犻櫎
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(serviceTask1.getTaskid());
serviceSubtaskVO.setSendstate(2L);
List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -839,6 +898,11 @@
serviceSubtask.setDrcode(patTaskRelevance.getDrcode());
serviceSubtask.setInhosptime(patTaskRelevance.getInhosptime());
serviceSubtask.setHospType(patTaskRelevance.getHospType());
+ serviceSubtask.setContinueContent(ObjectUtils.isNotEmpty(patTaskRelevance.getContinueContent()) ? patTaskRelevance.getContinueContent().toString() : null);
+ serviceSubtask.setContinueCount(patTaskRelevance.getContinueCount());
+ serviceSubtask.setContinueFlag(patTaskRelevance.getContinueFlag());
+ serviceSubtask.setContinueTimeNext(patTaskRelevance.getContinueTimeNext());
+ serviceSubtask.setContinueTimeNow(patTaskRelevance.getContinueTimeNow());
serviceSubtask.setEndtime(patTaskRelevance.getEndtime());
serviceSubtask.setNurseId(patTaskRelevance.getNurseId());
serviceSubtask.setNurseName(patTaskRelevance.getNurseName());
@@ -863,7 +927,7 @@
}
}
// 鏈夊彲鑳戒細鎶婂彂閫侀『搴忎篃淇敼浜嗭紙闇�瑕佹牴鎹畉askId灏嗘墍鏈夌殑sendstate锛�=4,5,6鐨剆ubTask鎷夊嚭鏉ワ紝杩涜淇敼涓�涓嬶級
- ServiceSubtaskVO ssVo = new ServiceSubtaskVO();
+ ServiceSubtaskEntity ssVo = new ServiceSubtaskEntity();
ssVo.setTaskid(serviceTaskVO.getTaskid());
ssVo.setDelFlag("0");
List<Long> ssList = new ArrayList<>();
@@ -1650,7 +1714,7 @@
redisCache.setCacheObject(phoneCallReqYQVO.getTaskid().trim() + "&&" + "mate" + "&&" + phoneCallReqYQVO.getUuid(), count + 1, 120, TimeUnit.MINUTES);
phoneCallBackYQVO.setType("text");
- phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, ivrTaskTemplateScriptVO.getIvrtext()));
+ phoneCallBackYQVO.setValue(ivrTaskTemplateScriptVO.getNoMatchText() + getObject(serviceSubtask, StringUtils.isNotEmpty(ivrTaskTemplateScriptVO.getIvrtext()) ? ivrTaskTemplateScriptVO.getIvrtext() : ivrTaskTemplateScriptVO.getScriptContent()));
}
}
@@ -1916,7 +1980,9 @@
continue;
}
//鑾峰彇閫氶厤绗﹀尮閰嶈繃鍚庣殑闂
- String scrContent = getObject(serviceSubtask, ivrTaskTemplateScript.getIvrtext());
+ String scriptContent = ivrTaskTemplateScript.getIvrtext();
+ if (StringUtils.isEmpty(scriptContent)) scriptContent = ivrTaskTemplateScript.getScriptContent();
+ String scrContent = getObject(serviceSubtask, scriptContent);
String kcb = serviceTask.getKcb() + "," + scrContent;
//灏佽杩斿洖鏁版嵁
@@ -1943,11 +2009,12 @@
@Override
public Integer saveQuestionAnswerPhone(ServiceSubTaskDetailReq serviceSubTaskDetailReq) {
int i = 0;
+ log.info("淇濆瓨鐢佃瘽鍥炶皟鍐呭 saveQuestionAnswerPhone锛歿}", serviceSubTaskDetailReq);
if (StringUtils.isNotEmpty(serviceSubTaskDetailReq.getParam1())) {
RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
Long tid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam1(), pri_key));
Long pid = Long.valueOf(rsaPublicKeyExample.decryptedData(serviceSubTaskDetailReq.getParam2(), pri_key));
- ServiceSubtaskVO ivrTaskSingle = new ServiceSubtaskVO();
+ ServiceSubtaskEntity ivrTaskSingle = new ServiceSubtaskEntity();
ivrTaskSingle.setTaskid(tid);
ivrTaskSingle.setPatid(pid);
List<ServiceSubtask> selectServiceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(ivrTaskSingle);
@@ -2151,8 +2218,18 @@
stringBuilder.append("鍏ラ櫌鍑嗗涓績鐢佃瘽锛�89975977銆傚叆闄㈠姙鐞嗛』鐭�:https://mp.weixin.qq.com/s/OCkotuRyQ8Ld2owFF0YErw");
String data = MessageSend.sendMsg(stringBuilder.toString(), "6", patArchiveSrmVO.getPhone(), LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
- if (StringUtils.isNotEmpty(data) && data.contains("result=0")) {
- sendError.add(patArchiveSrmVO);
+ if (StringUtils.isNotEmpty(data)) {
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode root = null;
+ try {
+ root = mapper.readTree(data);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ }
+ String status = root.get("result").get(0).get("status").asText();
+ if (status.equals("00000")) {
+ sendError.add(patArchiveSrmVO);
+ }
}
}
@@ -2169,60 +2246,100 @@
@Cacheable(value = "sfStatistics", key = "T(org.springframework.util.DigestUtils).md5DigestAsHex(#serviceSubtaskCountReq.toString().getBytes())", unless = "#result == null or #result.isEmpty()")
public List<ServiceSubtaskStatistic> getSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq) {
log.info("getSfStatistics鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
- List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
-// List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
-
- // 鏍规嵁鏉′欢杩涜鍒嗙粍
- Map<String, List<ServiceSubtask>> collect = new HashMap<>();
-
- if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && serviceSubtaskCountReq.getLeavehospitaldistrictcodes().size() > 0) {
+ String groupKey = "drcode";
+ if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && !serviceSubtaskCountReq.getLeavehospitaldistrictcodes().isEmpty()) {
if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
+ groupKey = "drcode";
} else {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictname()).orElse("Unknown")));
+ groupKey = "leavehospitaldistrictcode";
}
- } else if (serviceSubtaskCountReq.getDeptcodes() != null && serviceSubtaskCountReq.getDeptcodes().size() > 0) {
+ } else if (serviceSubtaskCountReq.getDeptcodes() != null && !serviceSubtaskCountReq.getDeptcodes().isEmpty()) {
if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrname()).orElse("Unknown")));
+ groupKey = "drcode";
} else {
- collect = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq).stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptname()).orElse("Unknown")));
+ groupKey = "deptcode";
}
}
-
- for (List<ServiceSubtask> serviceSubtaskList : collect.values()) {
+ List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
+ // 鏍规嵁鏉′欢杩涜鍒嗙粍
+ Map<String, List<ServiceSubtask>> collect = new HashMap<>();
+ serviceSubtaskCountReq.setGroupKey(groupKey);
+ List<String> groupKeyList = serviceSubtaskMapper.getSfStatisticsGroupKey(serviceSubtaskCountReq);
+ serviceSubtaskCountReq.setGroupKeyList(groupKeyList);
+ List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
+ switch (groupKey) {
+ case "deptcode":
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptcode()).orElse("Unknown")));
+ break;
+ case "drcode":
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
+ break;
+ case "leavehospitaldistrictcode":
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictcode()).orElse("Unknown")));
+ break;
+ default:
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
+ break;
+ }
+ //鑾峰彇鍙婃椂鐜囩粺璁″悎闆�
+ Map<String, Map<String, Object>> jsRates = getSsRateForSfStatistics(serviceSubtaskCountReq, collect);
+ for (String collectKey : collect.keySet()) {
+ List<ServiceSubtask> serviceSubtaskList = collect.get(collectKey);
if (CollectionUtils.isEmpty(serviceSubtaskList)) {
continue;
}
- ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList);
-
- //鍙婃椂鐜�
- ServiceSubtask ss = new ServiceSubtask();
- ss.setOrgid(serviceSubtaskList.get(0).getOrgid());
-
- // 濡傛灉鏈夊尰鐢熺紪鐮侊紝璁剧疆鍖荤敓缂栫爜鐢ㄤ簬鍙婃椂鐜囨煡璇�
- if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
- ss.setDrcode(serviceSubtaskList.get(0).getDrcode());
- } else {
- if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getLeavehospitaldistrictcodes())) {
- ss.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
- } else if (CollectionUtils.isNotEmpty(serviceSubtaskCountReq.getDeptcodes())) {
- ss.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+ ServiceSubtaskStatistic statistic = getStatistic(serviceSubtaskList, serviceSubtaskCountReq.getFollowUpCountStyle());
+ if (ObjectUtils.isNotEmpty(jsRates)) {
+ Map<String, Object> jsRateMap = jsRates.get(collectKey);
+ BigDecimal jsRate = new BigDecimal("0");
+ if (ObjectUtils.isNotEmpty(jsRateMap) && ObjectUtils.isNotEmpty(jsRateMap.get("rate"))) {
+ jsRate = new BigDecimal(jsRateMap.get("rate").toString());
}
+ Double jsRateDouble = (jsRate.setScale(4, RoundingMode.HALF_UP)).doubleValue();
+ statistic.setRate(jsRateDouble);
}
-
- ss.setStarttime(serviceSubtaskCountReq.getStartTime());
- ss.setEndtime(serviceSubtaskCountReq.getEndTime());
- if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
- ss.setEndtime(new Date());
- }
- Double jsRate = serviceSubtaskMapper.selectTimelyRate(ss);
- statistic.setRate(jsRate);
if (ObjectUtils.isNotEmpty(statistic)) {
serviceSubtaskStatistics.add(statistic);
}
}
return serviceSubtaskStatistics;
+ }
+
+ /**
+ * 闅忚缁熻-鍙婃椂鐜囩粺璁�
+ *
+ * @param serviceSubtaskCountReq
+ * @param collect
+ * @return
+ */
+ public Map<String, Map<String, Object>> getSsRateForSfStatistics(ServiceSubtaskCountReq serviceSubtaskCountReq, Map<String, List<ServiceSubtask>> collect) {
+ if (ObjectUtils.isEmpty(serviceSubtaskCountReq)) {
+ return null;
+ }
+ String groupKey = serviceSubtaskCountReq.getGroupKey();
+ if (StringUtils.isEmpty(groupKey)) {
+ return null;
+ }
+ List<String> groupKeyList = new ArrayList<>(collect.keySet());
+ if (ObjectUtils.isEmpty(groupKeyList)) {
+ return null;
+ }
+ //鍙婃椂鐜囩粺璁�
+ ServiceSubtaskEntity ssRate = new ServiceSubtaskEntity();
+ ssRate.setOrgid(serviceSubtaskCountReq.getOrgid());
+ ssRate.setStarttime(serviceSubtaskCountReq.getStartTime());
+ ssRate.setEndtime(serviceSubtaskCountReq.getEndTime());
+ if (serviceSubtaskCountReq.getEndTime() != null && new Date().before(serviceSubtaskCountReq.getEndTime())) {
+ ssRate.setEndtime(new Date());
+ }
+ ssRate.setGroupKey(groupKey);
+ ssRate.setGroupKeyList(groupKeyList);
+ Map<String, Map<String, Object>> jsRates = new HashMap<>();
+ if (!collect.isEmpty()) {
+ jsRates = serviceSubtaskMapper.selectTimelyRateBatch(ssRate);
+ }
+ return jsRates;
}
@Override
@@ -2322,6 +2439,7 @@
return serviceSubtaskStatistics;
}
+
/**
* 鑾峰彇婊℃剰搴﹂鐩�婚噺
* type : 1-绉戝 2鐥呭尯
@@ -2362,7 +2480,7 @@
List<IvrTaskTemplateScript> ivrTaskTemplateScripts = iIvrTaskTemplateScriptService.selectIvrTaskTemplateScriptList(ivrTaskTemplateScript);
if (CollectionUtils.isNotEmpty(ivrTaskTemplateScripts)) {
//闇�瑕佸厛璁$畻鍑哄彂閫侀噺锛屽啀涔樹互鍗曚釜闂埜婊℃剰搴﹂鐩暟閲忥紝寰楀埌婊℃剰搴﹂鐩�婚噺锛堝寘鍚簡鏈仛鐨勶級
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
List<Long> sendstates = new ArrayList<>(Arrays.asList(3L, 5L, 6L));
serviceSubtaskVO.setSendstates(sendstates);
@@ -2381,11 +2499,11 @@
svyTaskTemplateScript.setCategoryid(svyCategoryid);
List<SvyTaskTemplateScript> svyTaskTemplateScriptList = svyTaskTemplateScriptService.selectSvyTaskTemplateScriptList(svyTaskTemplateScript);
if (CollectionUtils.isNotEmpty(svyTaskTemplateScriptList)) {
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
- serviceSubtaskVO.setTaskid(serviceTask.getTaskid());
+ ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+ serviceSubtaskEntity.setTaskid(serviceTask.getTaskid());
List<Long> sendstates = new ArrayList<>(Arrays.asList(3L, 5L, 6L));
- serviceSubtaskVO.setSendstates(sendstates);
- List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(serviceSubtaskVO);
+ serviceSubtaskEntity.setSendstates(sendstates);
+ List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskBySendstate(serviceSubtaskEntity);
if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
int mydtmzlCount = svyTaskTemplateScriptList.size() * serviceSubtaskList.size();
mydtmzlsum.add(new BigDecimal(mydtmzlCount));
@@ -2418,7 +2536,7 @@
}
- private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList) {
+ private ServiceSubtaskStatistic getStatistic(List<ServiceSubtask> serviceSubtaskList, String followUpCountStyle) {
ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
//鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
DecimalFormat percentFormat = new DecimalFormat("##.##%");
@@ -2440,12 +2558,33 @@
List<ServiceSubtask> followUpSuccessInfo = new ArrayList<>();
//璁板綍棣栨闅忚澶辫触璇︽儏
List<ServiceSubtask> followUpFailInfo = new ArrayList<>();
+ //璁板綍棣栨闅忚浜哄伐璇︽儏
+ List<ServiceSubtask> manualInfo = new ArrayList<>();
+ //璁板綍棣栨闅忚鐭俊璇︽儏
+ List<ServiceSubtask> smsInfo = new ArrayList<>();
+ //璁板綍棣栨闅忚寰俊璇︽儏
+ List<ServiceSubtask> wechatInfo = new ArrayList<>();
+
+ //璁板綍鍐嶆搴旈殢璁胯鎯�
+ List<ServiceSubtask> needFollowUpAgainInfo = new ArrayList<>();
+ //璁板綍鍐嶆寰呴殢璁胯鎯�
+ List<ServiceSubtask> pendingFollowUpAgainInfo = new ArrayList<>();
+ //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
+ List<ServiceSubtask> followUpSuccessAgainInfo = new ArrayList<>();
+ //璁板綍鍐嶆闅忚澶辫触璇︽儏
+ List<ServiceSubtask> followUpFailAgainInfo = new ArrayList<>();
+ //璁板綍棣栨闅忚浜哄伐璇︽儏
+ List<ServiceSubtask> manualAgainInfo = new ArrayList<>();
+ //璁板綍棣栨闅忚鐭俊璇︽儏
+ List<ServiceSubtask> smsAgainInfo = new ArrayList<>();
+ //璁板綍棣栨闅忚寰俊璇︽儏
+ List<ServiceSubtask> wechatAgainInfo = new ArrayList<>();
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
//鏃犻渶闅忚浜烘
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
- if (serviceSubtask.getTaskSituation() !=null && serviceSubtask.getTaskSituation() == 6) {
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 6) {
serviceSubtaskStatistic.setFilterCount(serviceSubtaskStatistic.getFilterCount() + 1L);
filterServiceSubtasks.add(serviceSubtask);
}
@@ -2467,15 +2606,238 @@
serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
pendingFollowUpInfo.add(serviceSubtask);
}
- //棣栨闅忚鎴愬姛
- if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
- serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
- followUpSuccessInfo.add(serviceSubtask);
- }
//棣栨闅忚澶辫触
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
followUpFailInfo.add(serviceSubtask);
+ }
+ /**
+ * 涓嶅悓缁熻鏂瑰紡涓嬩笉鍚岀殑闅忚鎴愬姛鏁� 鍙傛暟 followUpCountStyle 鎺у埗
+ */
+ if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
+ //棣栨闅忚鎴愬姛
+ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6L)) {
+ serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+ followUpSuccessInfo.add(serviceSubtask);
+ }
+ //棣栨闅忚浜哄伐 (涓嶇粺璁′笉鎵ц)
+ 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.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+ serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+ smsInfo.add(serviceSubtask);
+ }
+ //棣栨闅忚寰俊(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+ serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+ wechatInfo.add(serviceSubtask);
+ }
+ } else {
+ //棣栨闅忚鎴愬姛 - 缁熻鏃跺�欏姞涓婁笉鎵ц鐨勶紝宸插彂閫佺殑
+ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
+ serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+ followUpSuccessInfo.add(serviceSubtask);
+ }
+ //棣栨闅忚浜哄伐 (缁熻涓嶆墽琛�)
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+ serviceSubtaskStatistic.setManual(serviceSubtaskStatistic.getManual() + 1L);
+ manualInfo.add(serviceSubtask);
+ }
+ //棣栨闅忚鐭俊(缁熻涓嶆墽琛�)
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+ serviceSubtaskStatistic.setSms(serviceSubtaskStatistic.getSms() + 1L);
+ smsInfo.add(serviceSubtask);
+ }
+ //棣栨闅忚寰俊(缁熻涓嶆墽琛�)
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+ serviceSubtaskStatistic.setWeChat(serviceSubtaskStatistic.getWeChat() + 1L);
+ wechatInfo.add(serviceSubtask);
+ }
+ }
+ if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
+ double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();
+ serviceSubtaskStatistic.setFollowUpRate(percentFormat.format(rate));
+ } else {
+ serviceSubtaskStatistic.setFollowUpRate("0.00%");
+ }
+ //缁撴灉寮傚父
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+ serviceSubtaskStatistic.setAbnormal(serviceSubtaskStatistic.getAbnormal() + 1L);
+ }
+ }//浜屾鍑洪櫌闅忚
+ else if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() > 1) {
+ //鍐嶆搴旈殢璁�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+ serviceSubtaskStatistic.setNeedFollowUpAgain(serviceSubtaskStatistic.getNeedFollowUpAgain() + 1L);
+ needFollowUpAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆寰呴殢璁�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+ serviceSubtaskStatistic.setPendingFollowUpAgain(serviceSubtaskStatistic.getPendingFollowUpAgain() + 1L);
+ pendingFollowUpAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆闅忚澶辫触
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+ serviceSubtaskStatistic.setFollowUpFailAgain(serviceSubtaskStatistic.getFollowUpFailAgain() + 1L);
+ followUpFailAgainInfo.add(serviceSubtask);
+ }
+ /**
+ * 涓嶅悓缁熻鏂瑰紡涓嬩笉鍚岀殑闅忚鎴愬姛鏁� 鍙傛暟 followUpCountStyle 鎺у埗
+ */
+ if (StringUtils.isNotEmpty(followUpCountStyle) && followUpCountStyle.equals("1")) {
+ //鍐嶆闅忚鎴愬姛
+ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 1 || serviceSubtask.getSendstate() == 3 || serviceSubtask.getSendstate() == 6)) {
+ serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+ followUpSuccessAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆闅忚浜哄伐(涓嶇粺璁′笉鎵ц)
+ 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.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("4")) {
+ serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+ smsAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆闅忚寰俊(涓嶇粺璁′笉鎵ц)
+ if (serviceSubtask.getSendstate() != null && !serviceSubtask.getSendstate().equals(4L) && serviceSubtask.getPreachform().equals("5")) {
+ serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+ wechatAgainInfo.add(serviceSubtask);
+ }
+ } else {
+ //鍐嶆闅忚鎴愬姛
+ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate().equals(1L) || serviceSubtask.getSendstate().equals(6L) || serviceSubtask.getSendstate().equals(3L) || serviceSubtask.getSendstate().equals(4L))) {
+ serviceSubtaskStatistic.setFollowUpSuccessAgain(serviceSubtaskStatistic.getFollowUpSuccessAgain() + 1L);
+ followUpSuccessAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆闅忚浜哄伐(缁熻涓嶆墽琛�)
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("1")) {
+ serviceSubtaskStatistic.setManualAgain(serviceSubtaskStatistic.getManualAgain() + 1L);
+ manualAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆闅忚鐭俊(缁熻涓嶆墽琛�)
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("4")) {
+ serviceSubtaskStatistic.setSmsAgain(serviceSubtaskStatistic.getSmsAgain() + 1L);
+ smsAgainInfo.add(serviceSubtask);
+ }
+ //鍐嶆闅忚寰俊(缁熻涓嶆墽琛�)
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getPreachform().equals("5")) {
+ serviceSubtaskStatistic.setWeChatAgain(serviceSubtaskStatistic.getWeChatAgain() + 1L);
+ wechatAgainInfo.add(serviceSubtask);
+ }
+ }
+ if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
+ double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccessAgain() + serviceSubtaskStatistic.getFollowUpFailAgain()) / serviceSubtaskStatistic.getNeedFollowUpAgain();
+ serviceSubtaskStatistic.setFollowUpRateAgain(percentFormat.format(rate));
+ } else {
+ serviceSubtaskStatistic.setFollowUpRateAgain("0.00%");
+ }
+ //鍐嶆寮傚父
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getExcep().equals("1")) {
+ serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
+ }
+ }
+ //闅忚鎯呭喌
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 1) {
+ serviceSubtaskStatistic.setTaskSituation1(serviceSubtaskStatistic.getTaskSituation1() + 1);
+ }
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 2) {
+ serviceSubtaskStatistic.setTaskSituation2(serviceSubtaskStatistic.getTaskSituation2() + 1);
+ }
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 3) {
+ serviceSubtaskStatistic.setTaskSituation3(serviceSubtaskStatistic.getTaskSituation3() + 1);
+ }
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 4) {
+ serviceSubtaskStatistic.setTaskSituation4(serviceSubtaskStatistic.getTaskSituation4() + 1);
+ }
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 5) {
+ serviceSubtaskStatistic.setTaskSituation5(serviceSubtaskStatistic.getTaskSituation5() + 1);
+ }
+ if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 7) {
+ serviceSubtaskStatistic.setTaskSituation6(serviceSubtaskStatistic.getTaskSituation6() + 1);
+ }
+ }
+ serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
+ //璁板綍棣栨搴旈殢璁胯鎯�
+ serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
+ //璁板綍棣栨寰呴殢璁胯鎯�
+ serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo);
+ //璁板綍棣栨闅忚鎴愬姛璇︽儏
+ serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo);
+ //璁板綍棣栨闅忚澶辫触璇︽儏
+ serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
+ //璁板綍棣栨闅忚浜哄伐璇︽儏
+ serviceSubtaskStatistic.setManualInfo(manualInfo);
+ //璁板綍棣栨闅忚鐭俊璇︽儏
+ serviceSubtaskStatistic.setSmsInfo(smsInfo);
+ //璁板綍棣栨闅忚寰俊璇︽儏
+ serviceSubtaskStatistic.setWechatInfo(wechatInfo);
+ //璁板綍鍐嶆搴旈殢璁胯鎯�
+ serviceSubtaskStatistic.setNeedFollowUpAgainInfo(needFollowUpAgainInfo);
+ //璁板綍鍐嶆寰呴殢璁胯鎯�
+ serviceSubtaskStatistic.setPendingFollowUpAgainInfo(pendingFollowUpAgainInfo);
+ //璁板綍鍐嶆闅忚鎴愬姛璇︽儏
+ serviceSubtaskStatistic.setFollowUpSuccessAgainInfo(followUpSuccessAgainInfo);
+ //璁板綍鍐嶆闅忚澶辫触璇︽儏
+ serviceSubtaskStatistic.setFollowUpFailAgainInfo(followUpFailAgainInfo);
+ //璁板綍鍐嶆闅忚浜哄伐璇︽儏
+ serviceSubtaskStatistic.setManualAgainInfo(manualAgainInfo);
+ //璁板綍鍐嶆闅忚鐭俊璇︽儏
+ serviceSubtaskStatistic.setSmsAgainInfo(smsAgainInfo);
+ //璁板綍鍐嶆闅忚寰俊璇︽儏
+ serviceSubtaskStatistic.setWechatAgainInfo(wechatAgainInfo);
+ return serviceSubtaskStatistic;
+ }
+
+ private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList, List<ServiceSubtaskCount> joySubCount) {
+ ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
+ //鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
+ DecimalFormat percentFormat = new DecimalFormat("##.##%");
+ serviceSubtaskStatistic.setDeptname(serviceSubtaskList.get(0).getDeptname());
+ serviceSubtaskStatistic.setDeptcode(serviceSubtaskList.get(0).getDeptcode());
+ serviceSubtaskStatistic.setLeavehospitaldistrictname(serviceSubtaskList.get(0).getLeavehospitaldistrictname());
+ serviceSubtaskStatistic.setLeavehospitaldistrictcode(serviceSubtaskList.get(0).getLeavehospitaldistrictcode());
+ serviceSubtaskStatistic.setDrcode(serviceSubtaskList.get(0).getDrcode());
+ serviceSubtaskStatistic.setDrname(serviceSubtaskList.get(0).getDrname());
+ //鍑洪櫌浜烘
+ serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
+ serviceSubtaskStatistic.setJoyCount(0);
+ serviceSubtaskStatistic.setJoyAllCount(0);
+ for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
+ //婊℃剰搴�
+ List<ServiceSubtaskCount> joyCountTemp = joySubCount.stream().filter(r -> r.getSubTaskId().equals(serviceSubtask.getId())).collect(Collectors.toList());
+ if (joyCountTemp != null && joyCountTemp.size() > 0) {
+ if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
+ serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + joyCountTemp.get(0).getJoyCount());
+ if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
+ serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + joyCountTemp.get(0).getJoyAllCount());
+ }
+ //鏃犻渶闅忚浜烘
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
+ serviceSubtaskStatistic.setNonFollowUp(serviceSubtaskStatistic.getNonFollowUp() + 1L);
+ }
+ //搴旈殢璁夸汉娆�
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+ serviceSubtaskStatistic.setFollowUpNeeded(serviceSubtaskStatistic.getFollowUpNeeded() + 1L);
+ }
+
+ //棣栨鍑洪櫌闅忚
+ if (serviceSubtask.getVisitCount() != null && serviceSubtask.getVisitCount() == 1) {
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() != 4) {
+ serviceSubtaskStatistic.setNeedFollowUp(serviceSubtaskStatistic.getNeedFollowUp() + 1L);
+ }
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 2) {
+ serviceSubtaskStatistic.setPendingFollowUp(serviceSubtaskStatistic.getPendingFollowUp() + 1L);
+ }
+ if (serviceSubtask.getSendstate() != null && (serviceSubtask.getSendstate() == 6)) {
+ serviceSubtaskStatistic.setFollowUpSuccess(serviceSubtaskStatistic.getFollowUpSuccess() + 1L);
+ }
+ if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 5) {
+ serviceSubtaskStatistic.setFollowUpFail(serviceSubtaskStatistic.getFollowUpFail() + 1L);
}
if (serviceSubtaskStatistic.getNeedFollowUp() > 0) {
double rate = (double) (serviceSubtaskStatistic.getFollowUpSuccess() + serviceSubtaskStatistic.getFollowUpFail()) / serviceSubtaskStatistic.getNeedFollowUp();
@@ -2528,39 +2890,13 @@
serviceSubtaskStatistic.setAbnormalAgain(serviceSubtaskStatistic.getAbnormalAgain() + 1L);
}
}
- //闅忚鎯呭喌
- if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 1) {
- serviceSubtaskStatistic.setTaskSituation1(serviceSubtaskStatistic.getTaskSituation1() + 1);
- }
- if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 2) {
- serviceSubtaskStatistic.setTaskSituation2(serviceSubtaskStatistic.getTaskSituation2() + 1);
- }
- if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 3) {
- serviceSubtaskStatistic.setTaskSituation3(serviceSubtaskStatistic.getTaskSituation3() + 1);
- }
- if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 4) {
- serviceSubtaskStatistic.setTaskSituation4(serviceSubtaskStatistic.getTaskSituation4() + 1);
- }
- if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 5) {
- serviceSubtaskStatistic.setTaskSituation5(serviceSubtaskStatistic.getTaskSituation5() + 1);
- }
- if (serviceSubtask.getTaskSituation() != null && serviceSubtask.getTaskSituation() == 7) {
- serviceSubtaskStatistic.setTaskSituation6(serviceSubtaskStatistic.getTaskSituation6() + 1);
- }
+
}
- serviceSubtaskStatistic.setFilterCountList(filterServiceSubtasks);
- //璁板綍棣栨搴旈殢璁胯鎯�
- serviceSubtaskStatistic.setNeedFollowUpInfo(needFollowUpInfo);
- //璁板綍棣栨寰呴殢璁胯鎯�
- serviceSubtaskStatistic.setPendingFollowUpInfo(pendingFollowUpInfo);
- //璁板綍棣栨闅忚鎴愬姛璇︽儏
- serviceSubtaskStatistic.setFollowUpSuccessInfo(followUpSuccessInfo);
- //璁板綍棣栨闅忚澶辫触璇︽儏
- serviceSubtaskStatistic.setFollowUpFailInfo(followUpFailInfo);
+
return serviceSubtaskStatistic;
}
- private ServiceSubtaskStatistic getStatisticJoy(List<ServiceSubtask> serviceSubtaskList, List<ServiceSubtaskCount> joySubCount) {
+ private ServiceSubtaskStatistic getStatisticCategory(List<ServiceSubtask> serviceSubtaskList, ServiceSubtaskCountReq serviceSubtaskCountReq) {
ServiceSubtaskStatistic serviceSubtaskStatistic = new ServiceSubtaskStatistic();
//鏍煎紡鍖栦负涓や綅灏忔暟鐨勭櫨鍒嗘瘮
DecimalFormat percentFormat = new DecimalFormat("##.##%");
@@ -2574,14 +2910,29 @@
serviceSubtaskStatistic.setDischargeCount(serviceSubtaskList.size());
serviceSubtaskStatistic.setJoyCount(0);
serviceSubtaskStatistic.setJoyAllCount(0);
+
+ //鑾峰彇闅忚缁熻
+ List<Long> subTaskIds = new ArrayList<>();
+ if (ObjectUtils.isNotEmpty(serviceSubtaskList)) {
+ subTaskIds = serviceSubtaskList.stream().map(ServiceSubtask::getId) // 鎻愬彇瀛楁
+ .filter(Objects::nonNull) // 杩囨护 null 鍊�
+ .filter(id -> ObjectUtils.isNotEmpty(id)) // 杩囨护绌哄瓧绗︿覆锛堝彲閫夛級
+ .distinct() // 鍘婚噸
+ .collect(Collectors.toList()); // 鏀堕泦鍒� List
+ serviceSubtaskCountReq.setSubTaskIds(subTaskIds);
+ }
+ List<ServiceSubtaskCount> subCounts = new ArrayList<>();
+ subCounts = serviceSubtaskMapper.getSfStatisticsCategory(serviceSubtaskCountReq);
+
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
- //婊℃剰搴�
- List<ServiceSubtaskCount> joyCountTemp = joySubCount.stream().filter(r -> r.getSubTaskId().equals(serviceSubtask.getId())).collect(Collectors.toList());
- if (joyCountTemp != null && joyCountTemp.size() > 0) {
- if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyCount()))
- serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + joyCountTemp.get(0).getJoyCount());
- if (ObjectUtils.isNotEmpty(joyCountTemp.get(0).getJoyAllCount()))
- serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + joyCountTemp.get(0).getJoyAllCount());
+ List<ServiceSubtaskCount> subCountTemp = subCounts.stream().filter(r -> r.getSubTaskId().equals(serviceSubtask.getId())).collect(Collectors.toList());
+
+ //缁熻
+ if (subCountTemp != null && subCountTemp.size() > 0) {
+ if (ObjectUtils.isNotEmpty(subCountTemp.get(0).getJoyCount()))
+ serviceSubtaskStatistic.setJoyCount(serviceSubtaskStatistic.getJoyCount() + subCountTemp.get(0).getJoyCount());
+ if (ObjectUtils.isNotEmpty(subCountTemp.get(0).getJoyAllCount()))
+ serviceSubtaskStatistic.setJoyAllCount(serviceSubtaskStatistic.getJoyAllCount() + subCountTemp.get(0).getJoyAllCount());
}
//鏃犻渶闅忚浜烘
if (serviceSubtask.getSendstate() != null && serviceSubtask.getSendstate() == 4) {
@@ -2819,6 +3170,187 @@
return serviceSubtaskMapper.getSfStatisticsJoydetails(serviceSubtaskCountReq);
}
+ /**
+ * 鑾峰彇闅忚缁熻姣斾緥
+ *
+ * @param serviceSubtaskCountReq
+ * @return
+ */
+ @Override
+ @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.info("getSfStatisticsScript鐨勫叆鍙備负锛歿}", serviceSubtaskCountReq);
+ List<ServiceSubtaskStatistic> serviceSubtaskStatistics = new ArrayList<>();
+
+ // 鏍规嵁鏉′欢杩涜鍒嗙粍
+ Map<String, List<ServiceSubtask>> collect = new HashMap<>();
+ String groupKey = "drcode";
+ if (serviceSubtaskCountReq.getLeavehospitaldistrictcodes() != null && !serviceSubtaskCountReq.getLeavehospitaldistrictcodes().isEmpty()) {
+ if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
+ groupKey = "drcode";
+ } else {
+ groupKey = "leavehospitaldistrictcode";
+ }
+ } else if (serviceSubtaskCountReq.getDeptcodes() != null && !serviceSubtaskCountReq.getDeptcodes().isEmpty()) {
+ if (serviceSubtaskCountReq.getDrcode() != null && !serviceSubtaskCountReq.getDrcode().isEmpty()) {
+ groupKey = "drcode";
+ } else {
+ groupKey = "deptcode";
+ }
+ }
+ serviceSubtaskCountReq.setGroupKey(groupKey);
+ List<String> groupKeyList = serviceSubtaskMapper.getSfStatisticsGroupKey(serviceSubtaskCountReq);
+ serviceSubtaskCountReq.setGroupKeyList(groupKeyList);
+ List<ServiceSubtask> rawData = serviceSubtaskMapper.getSfStatistics(serviceSubtaskCountReq);
+ switch (groupKey) {
+ case "deptcode":
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDeptcode()).orElse("Unknown")));
+ break;
+ case "drcode":
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
+ break;
+ case "leavehospitaldistrictcode":
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getLeavehospitaldistrictcode()).orElse("Unknown")));
+ break;
+ default:
+ collect = rawData.stream().collect(Collectors.groupingBy(subtask -> Optional.ofNullable(subtask.getDrcode()).orElse("Unknown")));
+ break;
+ }
+ //鑾峰彇鍙婃椂鐜囩粺璁″悎闆�
+ Map<String, Map<String, Object>> jsRates = getSsRateForSfStatistics(serviceSubtaskCountReq, collect);
+ for (String collectKey : collect.keySet()) {
+ List<ServiceSubtask> serviceSubtaskList = collect.get(collectKey);
+ if (CollectionUtils.isEmpty(serviceSubtaskList)) {
+ continue;
+ }
+ ServiceSubtaskStatistic statistic = getStatisticCategory(serviceSubtaskList, serviceSubtaskCountReq);
+ if (ObjectUtils.isNotEmpty(jsRates)) {
+ Map<String, Object> jsRateMap = jsRates.get(collectKey);
+ BigDecimal jsRate = new BigDecimal("0");
+ if (ObjectUtils.isNotEmpty(jsRateMap) && ObjectUtils.isNotEmpty(jsRateMap.get("rate"))) {
+ jsRate = new BigDecimal(jsRateMap.get("rate").toString());
+ }
+ Double jsRateDouble = (jsRate.setScale(4, RoundingMode.HALF_UP)).doubleValue();
+ statistic.setRate(jsRateDouble);
+ }
+ if (ObjectUtils.isNotEmpty(statistic)) {
+ serviceSubtaskStatistics.add(statistic);
+ }
+ }
+
+ //缁熻闅忚棰樼洰鍒嗙被
+ if (CollectionUtils.isNotEmpty(serviceSubtaskStatistics)) {
+ for (ServiceSubtaskStatistic serviceSubtaskStatistic : serviceSubtaskStatistics) {
+ //鑾峰彇婊℃剰搴﹂鐩�婚噺
+ BigDecimal sum = new BigDecimal(0);
+ //鑾峰彇婊℃剰搴﹂鐩~鎶ラ噺
+ BigDecimal finishedSum = new BigDecimal(0);
+ //瀹屾垚姣斾緥
+ Double finishedPercentage = null;
+ if (ObjectUtils.isNotEmpty(serviceSubtaskStatistic.getJoyCount())) {
+ finishedSum = 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();
+ }
+ serviceSubtaskStatistic.setJoyAllCount(sum.intValue());
+ serviceSubtaskStatistic.setJoyCount(finishedSum.intValue());
+ serviceSubtaskStatistic.setJoyTotal(finishedPercentage);
+ }
+ }
+
+ return serviceSubtaskStatistics;
+ }
+
+ @Override
+ public Map<String, ServiceSubtaskScriptCount> getSfStatisticsScriptDetails(ServiceSubtaskCountReq serviceSubtaskCountReq) {
+ Map<String, ServiceSubtaskScriptCount> result = new HashMap<>();
+ List<ServiceSubtaskScriptCount> allCounts = new ArrayList<>();
+ List<ServiceSubtaskScriptCount> allItemCounts = new ArrayList<>();
+ String type = serviceSubtaskCountReq.getType();
+ if (ObjectUtils.isEmpty(type)) {
+ //鏌ヨ璇煶缁熻鏄庣粏
+ serviceSubtaskCountReq.setType("1");
+ List<ServiceSubtaskScriptCount> ivyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+ List<ServiceSubtaskScriptCount> ivyItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+
+ //鏌ヨ鐭俊缁熻鏄庣粏
+ serviceSubtaskCountReq.setType("2");
+ List<ServiceSubtaskScriptCount> svyCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+ List<ServiceSubtaskScriptCount> svyItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+
+ allCounts.addAll(ivyCounts);
+ allCounts.addAll(svyCounts);
+ allItemCounts.addAll(ivyItemCounts);
+ allItemCounts.addAll(svyItemCounts);
+ } else {
+ allCounts = serviceSubtaskMapper.getSfStatisticsScriptDetails(serviceSubtaskCountReq);
+ allItemCounts = serviceSubtaskMapper.getSfStatisticsScriptItemDetails(serviceSubtaskCountReq);
+ }
+
+ for (ServiceSubtaskScriptCount count : allCounts) {
+ Map<String, ServiceSubtaskScriptCount> itemCountMap = new HashMap<>();
+ //闂嵎鍔犱笂绌虹櫧閫夐」
+ if (ObjectUtils.isNotEmpty(count.getTemplateid()) && ObjectUtils.isNotEmpty(count.getSubtaskType()) && count.getSubtaskType().equals("2")) {
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptVO = new SvyTaskTemplateScriptVO();
+ svyTaskTemplateScriptVO.setId(count.getScriptid());
+ svyTaskTemplateScriptVO.setOrgid(serviceSubtaskCountReq.getOrgid());
+ SvyTaskTemplateScriptVO svyTaskTemplateScriptResultVo = svyTaskTemplateScriptService.selectInfoByCondition(svyTaskTemplateScriptVO);
+ if (ObjectUtils.isNotEmpty(svyTaskTemplateScriptResultVo)) {
+ List<SvyTaskTemplateTargetoption> svyTaskTemplateTargetoptions = svyTaskTemplateScriptResultVo.getSvyTaskTemplateTargetoptions();
+ if (ObjectUtils.isNotEmpty(svyTaskTemplateTargetoptions)) {
+ //濉叆绌虹櫧淇℃伅
+ svyTaskTemplateTargetoptions.forEach(targetoption -> {
+ ServiceSubtaskScriptCount emptyCount = new ServiceSubtaskScriptCount();
+ emptyCount.setScriptid(count.getScriptid());
+ emptyCount.setScriptContent(count.getScriptContent());
+ emptyCount.setScriptType(count.getScriptType());
+ emptyCount.setSubtaskType(count.getSubtaskType());
+ emptyCount.setCompletedQuantity(count.getCompletedQuantity());
+ emptyCount.setAllQuantity(count.getAllQuantity());
+ emptyCount.setCompletedPercentage(count.getCompletedPercentage());
+ emptyCount.setTemplateid(count.getTemplateid());
+ emptyCount.setChosenQuantity(0);
+ emptyCount.setChosenPercentage("0.0");
+ emptyCount.setOptionText(targetoption.getOptioncontent());
+ itemCountMap.put(targetoption.getOptioncontent(), emptyCount);
+ });
+ }
+ }
+ }
+ allItemCounts.forEach(itemCount -> {
+ if (ObjectUtils.isNotEmpty(count.getScriptid()) && ObjectUtils.isNotEmpty(itemCount.getScriptid())) {
+ if (count.getScriptid().equals(itemCount.getScriptid())) {
+ //鏀惧叆缁熻淇℃伅
+ itemCount.setScriptContent(count.getScriptContent());
+ itemCount.setScriptType(count.getScriptType());
+ itemCount.setSubtaskType(count.getSubtaskType());
+ itemCount.setCompletedQuantity(count.getCompletedQuantity());
+ itemCount.setAllQuantity(count.getAllQuantity());
+ itemCount.setCompletedPercentage(count.getCompletedPercentage());
+ itemCount.setTemplateid(count.getTemplateid());
+ //璁$畻閫夋嫨姣斾緥
+ int chosenQuantity = ObjectUtils.isNotEmpty(itemCount.getChosenQuantity()) ? itemCount.getChosenQuantity() : 0;
+ int completedQuantity = itemCount.getCompletedQuantity();
+ if (ObjectUtils.isNotEmpty(completedQuantity) && completedQuantity != 0) {
+ BigDecimal chosenPercentage = (new BigDecimal(chosenQuantity)).divide(new BigDecimal(completedQuantity), 2, RoundingMode.HALF_UP);
+ itemCount.setChosenPercentage(chosenPercentage.toString());
+ }
+ itemCountMap.put(itemCount.getOptionText(), itemCount);
+ }
+ }
+ });
+ List<ServiceSubtaskScriptCount> itemCounts = new ArrayList<>(itemCountMap.values());
+ count.setDetails(itemCounts);
+ result.put(count.getScriptid().toString(), count);
+ }
+ return result;
+ }
+
/**
* @param serviceSubtask
@@ -2828,6 +3360,7 @@
* @return
*/
public Boolean setFailPreachForm(ServiceSubtask serviceSubtask, String preachform, String remark, String failSendstate) {
+ log.info("setFailPreachForm 闅忚娴佺▼澶勭悊 serviceSubtask:{}, preachform:{}, remark:{}, failSendstate:{}", serviceSubtask, preachform, remark, failSendstate);
//灏嗙姸鎬佽缃负澶辫触
ServiceSubtaskPreachform serviceSubtaskPreachform = new ServiceSubtaskPreachform();
serviceSubtaskPreachform.setSubid(serviceSubtask.getId());
@@ -2854,6 +3387,7 @@
if (serviceSubtaskPreachform1.getSort() == spSize.size() && failSendstate.equals("4")) {
serviceSubtask.setCurrentPreachform(preachform);
serviceSubtask.setSendstate(5L);
+ serviceSubtask.setRemark("setFailPreachForm鏂规硶 褰撳墠鐨刾reachform宸茬粡鏄渶鍚庝竴涓簡锛屽叏澶辫触浜�");
serviceSubtaskMapper.updateServiceSubtask(serviceSubtask);
return true;
}
@@ -2874,6 +3408,11 @@
serviceSubtaskPreachform.setTaskid(taskid);
List<ServiceSubtaskPreachform> serviceSubtaskPreachforms = serviceSubtaskPreachformMapper.selectServiceSubtaskPreachformList(serviceSubtaskPreachform);
if (CollectionUtils.isNotEmpty(serviceSubtaskPreachforms)) {
+ //娌℃湁闅忚鏃堕棿鍒欐寜褰撳ぉ鏉ョ畻--涓存椂
+ if (ObjectUtils.isEmpty(visitTime)) {
+ visitTime = new Date();
+ }
+
String compensateTime = serviceSubtaskPreachforms.get(0).getCompensateTime();
int hoursToAdd = Integer.valueOf(compensateTime) * 24;
Calendar calendar = Calendar.getInstance();
@@ -2888,6 +3427,7 @@
/**
* 璁$畻鎬昏琛�
+ *
* @param statistics 缁熻鏁版嵁鍒楄〃
* @return 鎬昏琛屾暟鎹�
*/
@@ -2995,8 +3535,8 @@
diagname.setLongSendTime(subtask.getLongSendTime());
diagname.setEndtime(subtask.getEndtime());
//璁$畻鍑洪櫌澶╂暟
- if(!Objects.isNull(diagname.getEndtime())){
- Integer endDay = DateUtils.differentDaysByMillisecond(diagname.getEndtime(),new Date());
+ if (!Objects.isNull(diagname.getEndtime())) {
+ Integer endDay = DateUtils.differentDaysByMillisecond(diagname.getEndtime(), new Date());
diagname.setEndDay(endDay);
}
diagname.setSfzh(subtask.getSfzh());
--
Gitblit v1.9.3