From 141eef1ac1e9111fb33f96a95b59ba69422f8688 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期一, 14 九月 2026 17:02:17 +0800
Subject: [PATCH] 1.优化问卷详情的查询速度
---
smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java | 195 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 192 insertions(+), 3 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
index b0e83b2..729cc51 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java
@@ -21,6 +21,7 @@
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
+import java.util.stream.Collectors;
/**
* 鎮h�呴棬璇婅褰昐ervice涓氬姟灞傚鐞�
@@ -51,6 +52,8 @@
@Autowired
private PatArchiveMapper patArchiveMapper;
+ @Autowired
+ private ServiceTaskmedicalMapper serviceTaskmedicalMapper;
/**
@@ -76,11 +79,16 @@
PatMedOuthospQueryReq patMedOuthospQueryReq = DtoConversionUtils.sourceToTarget(patMedOuthosp, PatMedOuthospQueryReq.class);
patMedOuthospQueryReq.setBeginAdmitdate(patMedOuthosp.getBeginTime());
patMedOuthospQueryReq.setEndAdmitdate(patMedOuthosp.getEndTime());
+ if (!CollectionUtils.isEmpty(patMedOuthosp.getDeptcodes())) {
+ String result = String.join(",", patMedOuthosp.getDeptcodes());
+ patMedOuthospQueryReq.setDeptcode(result);
+ }
+
List<PatMedOuthosp> patMedOuthospQueryResps = patMedOuthospMapper.callSpQueryOuthosp(patMedOuthospQueryReq);
if (patMedOuthosp.getPageNum() != null) {
for (PatMedOuthosp patMedOuthosp1 : patMedOuthospQueryResps) {
PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid());
- if (patArchive.getBirthdate() != null) {
+ if (ObjectUtils.isNotEmpty(patArchive) && patArchive.getBirthdate() != null) {
Map<String, String> map = calculateAge(patArchive.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
patArchive.setAge(ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
patArchive.setAgeUnit(map.get("ageUnit"));
@@ -304,7 +312,7 @@
PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
String deptcodes = CollectionUtils.isEmpty(patMedReq.getDeptcodeList()) ? null : String.join(",", patMedReq.getDeptcodeList());
req.setBeginAdmitdate(patMedReq.getStartDate());
- req.setEndAdmitdate(DateUtils.addDays(patMedReq.getEndDate(),1));
+ req.setEndAdmitdate(DateUtils.addDays(patMedReq.getEndDate(), 1));
req.setDeptcode(deptcodes);
req.setOrgid(patMedReq.getOrgid());
// req.setCampusid(patMedReq.getCampusid());
@@ -470,7 +478,8 @@
}
//灏佽serviceSubtask
- private ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
+ @Override
+ public ServiceSubtask boxedServiceSubtask(ServiceTask serviceTask, PatMedOuthosp patMedOuthosp, PatArchive patArchive) {
ServiceSubtask serviceSubtask = DtoConversionUtils.sourceToTarget(serviceTask, ServiceSubtask.class);
serviceSubtask.setTaskid(serviceTask.getTaskid());
if (StringUtils.isNotEmpty(serviceTask.getLibtemplateid()))
@@ -504,6 +513,7 @@
serviceSubtask.setVisitDeptCode(patMedOuthosp.getDeptcode());
serviceSubtask.setVisitDeptName(patMedOuthosp.getDeptname());
serviceSubtask.setUpdateTime(new Date());
+ serviceSubtask.setAdmindate(patMedOuthosp.getAdmitdate());
//璁剧疆鍙戦�佹椂闂�
if (serviceTask.getSendDay() == null) serviceTask.setSendDay(1L);
Date newDate = addDays(patMedOuthosp.getAdmitdate(), serviceTask.getSendDay().intValue());
@@ -525,6 +535,185 @@
return serviceSubtask;
}
+ /**
+ *
+ * @param patMedOuthosp
+ * @param visitTimeNum
+ * @return
+ */
+ @Override
+ public Integer dealPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum){
+ Integer num = 0;
+
+ //鏅畞 瀛樺湪鐩稿悓璇婃柇鐨勯棬璇婅褰曞垯鏂板鍐嶆闅忚,鍚﹀垯鏂板闅忚
+ if(ObjectUtils.isNotEmpty(patMedOuthosp.getOrgid()) &&
+ patMedOuthosp.getOrgid().equals("47255004333112711A1001")){
+ PatMedOuthosp patMedOuthospVo = new PatMedOuthosp();
+ List<PatMedOuthosp> patMedOuthosps = new ArrayList<>();
+ patMedOuthospVo.setOrgid(patMedOuthosp.getOrgid());
+ patMedOuthospVo.setPatid(patMedOuthosp.getPatid());
+ patMedOuthospVo.setIcd10code(patMedOuthosp.getIcd10code());
+ // 鍚屼竴涓偅鑰� + 鍚屼竴涓瘖鏂紝鍘嗗彶涓婂凡缁忔湁闂ㄨ瘖闅忚璁板綍锛堟帓闄ゆ湰娆″氨璇婏紝鏈鍦ㄨ皟鐢ㄥ墠宸茶惤搴擄級
+ patMedOuthosps = selectPatMedOuthospList(patMedOuthospVo);
+ Long currentId = patMedOuthosp.getId();
+ List<Long> ids = patMedOuthosps.stream().map(PatMedOuthosp::getId).filter(ObjectUtils::isNotEmpty)
+ .filter(id -> !id.equals(currentId))
+ .distinct()
+ .collect(Collectors.toList());
+ ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
+ //鏅畞 鍙瀛樺湪鐩稿悓璇婃柇銆佹偅鑰呯殑闂ㄨ瘖璁板綍鍒欏綋鍐嶆闅忚澶勭悊
+ serviceSubtask.setInhospids(ids);
+ serviceSubtask.setServiceType("3");
+ List<ServiceSubtask> serviceSubtasks = CollectionUtils.isEmpty(ids)
+ ? new ArrayList<>()
+ : serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
+ if(CollectionUtils.isEmpty(serviceSubtasks)){
+ num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+ }else {
+ num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum, ids);
+ }
+ }else {
+ ServiceSubtaskEntity serviceSubtask = new ServiceSubtaskEntity();
+ serviceSubtask.setInhospid(patMedOuthosp.getId());
+ serviceSubtask.setServiceType("3");
+ serviceSubtask.setVisitCount(1);
+ List<ServiceSubtask> serviceSubtasks = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtask);
+ if(CollectionUtils.isEmpty(serviceSubtasks)){
+ num = followUpByPatMedOuthosp(patMedOuthosp, visitTimeNum);
+ }else {
+ num = followUpAgainByPatMedOuthosp(patMedOuthosp, visitTimeNum, null);
+ }
+ }
+ return num;
+ }
+
+ /**
+ * 闂ㄨ瘖棣栨闅忚
+ * @param patMedOuthosp
+ * @return
+ */
+ @Override
+ public Integer followUpByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum) {
+// if(ObjectUtils.isEmpty(patMedOuthosp.getFudate())){
+ Date adminDate = patMedOuthosp.getAdmitdate();
+ Date fuDate = addDays(adminDate, visitTimeNum);
+ patMedOuthosp.setFudate(fuDate);
+// }
+
+ PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp.getPatid());
+
+ //鏍规嵁鎮h�呯瀹わ紝鑾峰彇璇ョ柧鐥呯殑闀挎湡浠诲姟
+ ServiceTaskdept serviceTaskdept = new ServiceTaskdept();
+ serviceTaskdept.setLongtask(1L);
+ serviceTaskdept.setDeptCode(patMedOuthosp.getDeptcode());
+ serviceTaskdept.setServiceType("3");
+ List<ServiceTaskdept> serviceTaskdeptList = serviceTaskdeptMapper.selectServiceTaskdeptList(serviceTaskdept);
+ if (CollectionUtils.isEmpty(serviceTaskdeptList) || serviceTaskdeptList.size() == 0) {
+ patMedOuthosp.setDeptcheckFlag("2");
+ patMedOuthosp.setRemark("閫氳繃閮ㄩ棬,娌℃湁鎵惧埌闂ㄨ瘖闅忚浠诲姟ID");
+ updatePatMedOuthosp(patMedOuthosp);
+ } else {
+ for (ServiceTaskdept serviceTaskdept1 : serviceTaskdeptList) {
+ writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp, patArchive, 1);
+ }
+ }
+
+ // 鏍规嵁鎮h�呯殑鐤剧梾锛岃幏鍙栬鐤剧梾鐨勯暱鏈熶换鍔�
+// ServiceTaskdiag serviceTaskdiag = new ServiceTaskdiag();
+// serviceTaskdiag.setLongtask(1L);
+// serviceTaskdiag.setIcd10code(patMedOuthosp.getIcd10code());
+// List<ServiceTaskdiag> serviceTaskdiags = serviceTaskdiagMapper.selectServiceTaskdiagList(serviceTaskdiag);
+// //濡傛灉閮ㄩ棬妯℃澘涓虹┖锛堝皢deptIsNull璁剧疆涓簍rue锛�
+// if (org.apache.commons.collections4.CollectionUtils.isEmpty(serviceTaskdiags) || serviceTaskdiags.size() == 0) {
+// patMedOuthosp.setDiagcheckFlag("2");
+// patMedOuthosp.setRemark("閫氳繃icd10,娌℃湁鎵惧埌闂ㄨ瘖闅忚浠诲姟ID");
+// updatePatMedOuthosp(patMedOuthosp);
+// } else {
+// for (ServiceTaskdiag serviceTaskdept1 : serviceTaskdiags) {
+// writeInSubTask(serviceTaskdept1.getTaskId(), true, patMedOuthosp, patArchive, 2);
+// }
+// }
+ return 1;
+ }
+ /**
+ * 闂ㄨ瘖鍐嶆闅忚
+ * @param patMedOuthosp
+ * @return
+ */
+ @Override
+ public Integer followUpAgainByPatMedOuthosp(PatMedOuthosp patMedOuthosp, Integer visitTimeNum, List<Long> inhospids) {
+ Date adminDate = patMedOuthosp.getAdmitdate();
+ Date newDate = addDays(adminDate, visitTimeNum);
+
+ Integer i = 0;
+ String deptcode = patMedOuthosp.getDeptcode();
+ Long patid = patMedOuthosp.getPatid();
+ //鏌ョ湅鏈夋棤杩涜涓殑浠诲姟
+ ServiceSubtaskEntity serviceSubtaskEntity0 = new ServiceSubtaskEntity();
+ serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid());
+ serviceSubtaskEntity0.setSendstates(new ArrayList<>(Arrays.asList(1L, 2L, 3L, 7L)));
+ serviceSubtaskEntity0.setPatid(patid);
+ //鏅畞鏍规嵁璇婃柇鍐嶆闅忚
+ if(ObjectUtils.isNotEmpty(patMedOuthosp.getOrgid()) &&
+ patMedOuthosp.getOrgid().equals("47255004333112711A1001") && !CollectionUtils.isEmpty(inhospids)){
+ serviceSubtaskEntity0.setInhospids(inhospids);
+ }else {
+ serviceSubtaskEntity0.setDeptcode(deptcode);
+ }
+
+ serviceSubtaskEntity0.setSort(0);
+ List<ServiceSubtask> serviceSubtaskList0 = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity0);
+ if (!CollectionUtils.isEmpty(serviceSubtaskList0)) {
+ for (ServiceSubtask serviceSubtask0 : serviceSubtaskList0) {
+ serviceSubtask0.setSendstate(6L);
+ serviceSubtask0.setUpdateTime(new Date());
+ serviceSubtask0.setFinishtime(adminDate);
+ serviceSubtaskMapper.updateServiceSubtask(serviceSubtask0);
+
+ ServiceSubtask serviceSubtask1 = DtoConversionUtils.sourceToTarget(serviceSubtask0, ServiceSubtask.class);
+ serviceSubtask1.setId(null);
+ serviceSubtask1.setSendstate(2L);
+ serviceSubtask1.setUpid(serviceSubtask0.getId().intValue());
+ //鑰佹暟鎹殑visit_count鍙兘涓虹┖锛岄粯璁ゆ寜绗�1娆$畻
+ Integer visitCount = ObjectUtils.isEmpty(serviceSubtask0.getVisitCount()) ? 1 : serviceSubtask0.getVisitCount();
+ serviceSubtask1.setVisitCount(visitCount + 1);
+ serviceSubtask1.setVisitType(serviceSubtask0.getVisitType());
+ serviceSubtask1.setVisitDeptCode(serviceSubtask0.getVisitDeptCode());
+ serviceSubtask1.setVisitDeptName(serviceSubtask0.getVisitDeptName());
+ //鏂颁换鍔$瀹ゆ槸褰撳墠鍑洪櫌绉戝
+ serviceSubtask1.setDeptcode(patMedOuthosp.getDeptcode());
+ serviceSubtask1.setCreateTime(new Date());
+ serviceSubtask1.setUpdateTime(new Date());
+ serviceSubtask1.setFinishtime(null);
+ serviceSubtask1.setAdmindate(adminDate);
+
+ serviceSubtask1.setVisitTime(newDate);
+ serviceSubtask1.setLongSendTime(newDate);
+ i = i + serviceSubtaskMapper.insertServiceSubtask(serviceSubtask1);
+ }
+ } else {
+ //鏌ョ湅宸插畬鎴愮殑浠诲姟
+// ServiceSubtaskEntity serviceSubtaskEntity = new ServiceSubtaskEntity();
+// serviceSubtaskEntity0.setOrgid(patMedOuthosp.getOrgid());
+// serviceSubtaskEntity.setSendstates(new ArrayList<>(Arrays.asList(6L)));
+// serviceSubtaskEntity.setPatid(patid);
+// serviceSubtaskEntity.setDeptcode(deptcode);
+// serviceSubtaskEntity.setSort(0);
+// List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskEntity);
+// if(!CollectionUtils.isEmpty(serviceSubtaskList)){
+// ServiceSubtask serviceSubtask = serviceSubtaskList.get(0);
+// serviceSubtask.setSendstate(2L);
+// serviceSubtask.setCreateTime(new Date());
+// serviceSubtask.setUpdateTime(new Date());
+//
+// serviceSubtask.setVisitTime(newDate);
+// serviceSubtask.setLongSendTime(newDate);
+// i = serviceSubtaskMapper.insertServiceSubtask(serviceSubtask);
+// }
+ }
+ return i;
+ }
+
private Date addDays(Date date, Integer days) {
if (days == null) {
days = 1;
--
Gitblit v1.9.3