From 8249bbcc710c42f89c69fb0bd575094acd2e418d Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期五, 17 四月 2026 16:33:27 +0800
Subject: [PATCH] 南华附一上线、首页问题、定时任务问题处理
---
smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java | 226 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 209 insertions(+), 17 deletions(-)
diff --git a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
index f0e8abf..ad67157 100644
--- a/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/PatArchiveServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.common.utils.DtoConversionUtils;
import com.ruoyi.common.utils.StringUtils;
import com.smartor.domain.*;
+import com.smartor.domain.entity.ServiceSubtaskEntity;
import com.smartor.mapper.*;
import com.smartor.service.IPatArchiveService;
import com.smartor.service.IPatMedInhospService;
@@ -29,6 +30,10 @@
import java.io.FileOutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -62,10 +67,12 @@
private PatArchivecontactMapper patArchivecontactMapper;
@Autowired
- private IPatMedPhysicalService patMedPhysicalService;
+ private PatMedOuthospMapper patMedOuthospMapper;
@Autowired
private RedisCache redisCache;
+ @Autowired
+ private PatArchivetagServiceImpl patArchivetagServiceImpl;
/**
@@ -158,7 +165,7 @@
patArchiveMapper.updatePatArchive(patArchive);
if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1")) {
//涓嶉渶瑕佹湇鍔′簡锛岄渶瑕侀�氳繃patid鍜宻endstate=2鎴栬�卻endstate=1鍘绘煡璇竴涓嬶紝service_subtask閲屾槸鍚︽湁姝e湪鎵ц鐨勪换鍔★紝鏈夌殑璇濓紝绔嬪嵆鍋滀簡
- ServiceSubtaskVO serviceSubtaskVO = new ServiceSubtaskVO();
+ ServiceSubtaskEntity serviceSubtaskVO = new ServiceSubtaskEntity();
serviceSubtaskVO.setPatid(patArchive.getId());
serviceSubtaskVO.setSendstate(2L);
List<ServiceSubtask> serviceSubtaskList = serviceSubtaskMapper.selectServiceSubtaskList(serviceSubtaskVO);
@@ -172,7 +179,7 @@
//鍘籸edis涓紝鏌ヨ鏄惁鏈塻ubid锛屾湁鐨勮瘽绉婚櫎cache-exist
if (CollectionUtils.isNotEmpty(serviceSubtaskList)) {
for (ServiceSubtask serviceSubtask : serviceSubtaskList) {
- log.error("闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
+ log.info("闇�瑕佺Щ闄ょ殑subId涓猴細{}", serviceSubtask.getId().toString());
serviceSubtaskMapper.deleteServiceSubtaskById(serviceSubtask.getId());
redisCache.removeElementFromList("cache-exist", serviceSubtask.getId().toString());
redisCache.removeElementFromList("cache-0", serviceSubtask.getId().toString());
@@ -270,15 +277,24 @@
}
} else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 2) {
// 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3
- List<PatArchiveOthreInfo> patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthosp(patArchiveReq);
- if (CollectionUtils.isNotEmpty(patArchives2)) {
- patArchiveList.addAll(patArchives2);
+// List<PatArchiveOthreInfo> patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthosp(patArchiveReq);
+ List<PatArchiveOthreInfo> patientInfoQC = getPatientInfoUtils(patArchiveReq);
+
+ if (CollectionUtils.isNotEmpty(patientInfoQC)) {
+ patArchiveList.addAll(patientInfoQC);
}
} else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 3) {
// 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3
List<PatArchiveOthreInfo> patArchives3 = patArchiveMapper.selectPatArchiveInfoByPhysical(patArchiveReq);
if (CollectionUtils.isNotEmpty(patArchives3)) {
patArchiveList.addAll(patArchives3);
+ }
+ } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 4) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ patArchiveReq.setCry(1);
+ List<PatArchiveOthreInfo> patArchives1 = patArchiveMapper.selectPatArchiveInfoByInhospQC(patArchiveReq);
+ if (CollectionUtils.isNotEmpty(patArchives1)) {
+ patArchiveList.addAll(patArchives1);
}
}
@@ -558,7 +574,12 @@
@Override
public List<PatArchive> patInfoByContion(PatArchiveReq patArchive) {
List<PatArchive> patArchives = new ArrayList<>();
-
+ if (ObjectUtils.isNotEmpty(patArchive.getPageNum()) && ObjectUtils.isNotEmpty(patArchive.getPageSize())) {
+ patArchive.setPn((patArchive.getPageNum() - 1) * patArchive.getPageSize());
+ patArchive.setPs(patArchive.getPageSize());
+ patArchive.setPageNum(null);
+ patArchive.setPageSize(null);
+ }
//鏍规嵁鏉′欢鑾峰彇鎮h�呬俊鎭�
// List<PatArchive> patArchiveList = patArchiveMapper.patInfoByContion(patArchive);
List<PatArchiveOthreInfo> patArchiveList = new ArrayList<>();
@@ -579,14 +600,21 @@
patArchiveList.addAll(patArchives1);
}
} else if (patArchive.getAllhosp() != null && patArchive.getAllhosp() == 2) {
- List<PatArchiveOthreInfo> patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthosp(patArchive);
- if (CollectionUtils.isNotEmpty(patArchives2)) {
- patArchiveList.addAll(patArchives2);
+ List<PatArchiveOthreInfo> patientInfoUtils = getPatientInfoUtils(patArchive);
+ if (CollectionUtils.isNotEmpty(patientInfoUtils)) {
+ patArchiveList.addAll(patientInfoUtils);
}
} else if (patArchive.getAllhosp() != null && patArchive.getAllhosp() == 3) {
List<PatArchiveOthreInfo> patArchives3 = patArchiveMapper.selectPatArchiveInfoByPhysical(patArchive);
if (CollectionUtils.isNotEmpty(patArchives3)) {
patArchiveList.addAll(patArchives3);
+ }
+ } else if (patArchive.getAllhosp() != null && patArchive.getAllhosp() == 4) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ patArchive.setCry(1);
+ List<PatArchiveOthreInfo> patArchives1 = patArchiveMapper.selectPatArchiveInfoByInhospQC(patArchive);
+ if (CollectionUtils.isNotEmpty(patArchives1)) {
+ patArchiveList.addAll(patArchives1);
}
}
@@ -626,11 +654,13 @@
List<PatArchive> patArchiveList1 = DtoConversionUtils.sourceToTarget(patArchiveList, PatArchive.class);
//缁欐偅鑰呰仈绯讳汉璧嬪��
-// for (PatArchive pa : patArchives) {
for (PatArchive pa : patArchiveList1) {
PatArchivecontact patArchivecontact = new PatArchivecontact();
patArchivecontact.setPatid(pa.getId());
pa.setPatArchivecontactList(patArchivecontactMapper.selectPatArchivecontactList(patArchivecontact));
+ Map<String, String> map = calculateAge(pa.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now());
+ pa.setAge(StringUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null);
+ pa.setAgeUnit(map.get("ageUnit") != null ? map.get("ageUnit") : "");
}
return patArchiveList1;
@@ -751,26 +781,188 @@
List<PatArchiveOthreInfo> patArchiveList = new ArrayList<>();
if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 1) {
- // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ patArchiveReq.setCry(0);
List<PatArchiveOthreInfo> patArchives1 = patArchiveMapper.selectPatArchiveInfoByInhospQC(patArchiveReq);
if (CollectionUtils.isNotEmpty(patArchives1)) {
patArchiveList.addAll(patArchives1);
}
} else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 2) {
- // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3
- List<PatArchiveOthreInfo> patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthospQC(patArchiveReq);
- if (CollectionUtils.isNotEmpty(patArchives2)) {
- patArchiveList.addAll(patArchives2);
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ List<PatArchiveOthreInfo> patArchives2 = new ArrayList<>();
+// List<PatArchiveOthreInfo> patArchives2 = patArchiveMapper.selectPatArchiveInfoByOuthospQC(patArchiveReq);
+
+ //闂ㄦ�ヨ瘖淇℃伅锛岄噰鐢ㄥ垎琛ㄦ煡璇紙鍏堟煡闂ㄦ�ヨ瘖鐨勫瓨鍌ㄨ繃绋嬶紝鍐嶆煡鎮h�呭熀鏈俊鎭〃锛屽叧鑱旀潯浠讹細patid锛�
+ List<PatArchiveOthreInfo> patientInfoUtils = getPatientInfoUtils(patArchiveReq);
+ if (CollectionUtils.isNotEmpty(patientInfoUtils)) {
+ patArchiveList.addAll(patientInfoUtils);
}
} else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 3) {
- // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
List<PatArchiveOthreInfo> patArchives3 = patArchiveMapper.selectPatArchiveInfoByPhysicalQC(patArchiveReq);
if (CollectionUtils.isNotEmpty(patArchives3)) {
patArchiveList.addAll(patArchives3);
}
+
+ } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 4) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ patArchiveReq.setCry(1);
+ log.info("--------鏌ョ湅鍑洪櫌鐨勫叆鍙傚�间负锛歿}", patArchiveReq);
+ List<PatArchiveOthreInfo> patArchives1 = patArchiveMapper.selectPatArchiveInfoByInhospQC(patArchiveReq);
+ log.info("--------鏌ョ湅鍑洪櫌鐨勮繑鍙傚�间负锛歿}", patArchives1.size());
+ if (CollectionUtils.isNotEmpty(patArchives1)) {
+ patArchiveList.addAll(patArchives1);
+ }
}
+// //鏌ヨtagName
+// List<Long> patIds = patArchiveList.stream().map(PatArchiveOthreInfo::getId).distinct().collect(Collectors.toList());
+// Map<Long, String> patTagMap= patArchivetagMapper.getTagsByPatIds(patArchiveReq.getOrgid(),patIds);
+// //瑁呴厤tagName
+// if(ObjectUtils.isNotEmpty(patTagMap)){
+// patArchiveList.forEach(patArchiveOthreInfo -> {
+// String tagName = patTagMap.get(patArchiveOthreInfo.getId());
+// if(StringUtils.isNotEmpty(tagName)){
+// patArchiveOthreInfo.setTag(tagName);
+// }
+// });
+// }
return patArchiveList;
}
+
+ /**
+ * 鑾峰彇鎮h�呬俊鎭�(鍘婚噸)
+ *
+ * @param patArchiveReq
+ * @return
+ */
+// @Override
+
+ /**
+ * 鑾峰彇鎮h�呬俊鎭�绘暟锛堝幓閲嶏級
+ *
+ * @param patArchiveReq
+ * @return
+ */
+ @Override
+ public Long getPatientInfoQCCount(PatArchiveReq patArchiveReq) {
+ if (CollectionUtils.isEmpty(patArchiveReq.getLeavehospitaldistrictcodes()) || patArchiveReq.getLeavehospitaldistrictcodes().size() == 0) {
+ patArchiveReq.setLeavehospitaldistrictcodes(null);
+ }
+ if (CollectionUtils.isEmpty(patArchiveReq.getLeaveldeptcodes()) || patArchiveReq.getLeaveldeptcodes().size() == 0) {
+ patArchiveReq.setLeaveldeptcodes(null);
+ }
+
+ Long count = 0L;
+ if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 1) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ patArchiveReq.setCry(0);
+ count = patArchiveMapper.countPatArchiveInfoByInhospQC(patArchiveReq);
+ } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 2) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+// count = patArchiveMapper.countPatArchiveInfoByOuthospQC(patArchiveReq);
+ PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
+ String deptcodes = CollectionUtils.isEmpty(patArchiveReq.getLeaveldeptcodes()) ? null : String.join(",", patArchiveReq.getLeaveldeptcodes());
+ String leavehospitaldistrictcodes = CollectionUtils.isEmpty(patArchiveReq.getLeavehospitaldistrictcodes()) ? null : String.join(",", patArchiveReq.getLeavehospitaldistrictcodes());
+ req.setDeptcode(deptcodes);
+ req.setHospitaldistrictcode(leavehospitaldistrictcodes);
+ req.setOrgid(patArchiveReq.getOrgid());
+ req.setDrname(StringUtils.isNotEmpty(patArchiveReq.getDrname()) ? patArchiveReq.getDrname() : null);
+ req.setPatname(StringUtils.isNotEmpty(patArchiveReq.getName()) ? patArchiveReq.getName() : null);
+ req.setDiagname(StringUtils.isNotEmpty(patArchiveReq.getLeavediagname()) ? patArchiveReq.getLeavediagname() : null);
+ count = patMedOuthospMapper.callSpQueryOuthospCount(req);
+
+
+ } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 3) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ count = patArchiveMapper.countPatArchiveInfoByPhysicalQC(patArchiveReq);
+ } else if (patArchiveReq.getAllhosp() != null && patArchiveReq.getAllhosp() == 4) {
+ // 鏌ョ湅浣忛櫌 1 鏌ョ湅闂ㄨ瘖 2 鏌ョ湅浣撴 3 鏌ョ湅鍑洪櫌 4
+ patArchiveReq.setCry(1);
+ count = patArchiveMapper.countPatArchiveInfoByInhospQC(patArchiveReq);
+ }
+
+ return count;
+ }
+
+ private List<PatArchiveOthreInfo> getPatientInfoUtils(PatArchiveReq patArchiveReq) {
+ List<PatArchiveOthreInfo> patArchiveList = new ArrayList<>();
+
+ //闂ㄦ�ヨ瘖淇℃伅锛岄噰鐢ㄥ垎琛ㄦ煡璇紙鍏堟煡闂ㄦ�ヨ瘖鐨勫瓨鍌ㄨ繃绋嬶紝鍐嶆煡鎮h�呭熀鏈俊鎭〃锛屽叧鑱旀潯浠讹細patid锛�
+ PatMedOuthospQueryReq req = new PatMedOuthospQueryReq();
+ String deptcodes = CollectionUtils.isEmpty(patArchiveReq.getLeaveldeptcodes()) ? null : String.join(",", patArchiveReq.getLeaveldeptcodes());
+ String leavehospitaldistrictcodes = CollectionUtils.isEmpty(patArchiveReq.getLeavehospitaldistrictcodes()) ? null : String.join(",", patArchiveReq.getLeavehospitaldistrictcodes());
+ req.setDeptcode(deptcodes);
+ req.setHospitaldistrictcode(leavehospitaldistrictcodes);
+ req.setOrgid(patArchiveReq.getOrgid());
+ req.setDrname(StringUtils.isNotEmpty(patArchiveReq.getDrname()) ? patArchiveReq.getDrname() : null);
+ req.setPatname(StringUtils.isNotEmpty(patArchiveReq.getName()) ? patArchiveReq.getName() : null);
+ req.setDiagname(StringUtils.isNotEmpty(patArchiveReq.getLeavediagname()) ? patArchiveReq.getLeavediagname() : null);
+ req.setPageNum(patArchiveReq.getPageNum() == null ? null : patArchiveReq.getPageNum());
+ req.setPageSize(patArchiveReq.getPageSize() == null ? null : patArchiveReq.getPageSize());
+ List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.callSpQueryOuthosp(req);
+ for (PatMedOuthosp patMedOuthosp : patMedOuthosps) {
+ PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp.getPatid());
+ PatArchiveOthreInfo patArchiveOthreInfo = DtoConversionUtils.sourceToTarget(patArchive, PatArchiveOthreInfo.class);
+ patArchiveOthreInfo.setDeptcode(patMedOuthosp.getDeptcode());
+ patArchiveOthreInfo.setDeptname(patMedOuthosp.getDeptname());
+ patArchiveOthreInfo.setDrcode(patMedOuthosp.getDrcode());
+ patArchiveOthreInfo.setDrname(patMedOuthosp.getDrname());
+ patArchiveList.add(patArchiveOthreInfo);
+ }
+ return patArchiveList;
+ }
+
+ public Map<String, String> calculateAge(LocalDate birthdate, LocalDate today) {
+ if (birthdate == null || today.isBefore(birthdate)) {
+ return null;
+ }
+ Map<String, String> ageMap = new HashMap<>();
+
+ Period period = Period.between(birthdate, today);
+ long totalDays = ChronoUnit.DAYS.between(birthdate, today);
+ long totalMonths = ChronoUnit.MONTHS.between(birthdate, today);
+
+ int years = period.getYears();
+ int months = period.getMonths();
+ int days = period.getDays();
+
+ String ageUnit;
+ Integer age;
+ String ageUnit2 = null;
+ Integer age2 = null;
+
+ if (totalDays < 90) {
+ // 灏忎簬 1 涓湀锛屾寜澶╄绠�
+ ageUnit = "澶�";
+ age = (int) totalDays;
+ ageMap.put("age", age != null ? age.toString() : null);
+ ageMap.put("ageUnit", ageUnit);
+ ageMap.put("age2", null);
+ ageMap.put("ageUnit2", null);
+ } else if (totalMonths < 36) {
+ // 灏忎簬 1 骞达紝鎸夋湀 + 澶╄绠�
+ ageUnit = "鏈�";
+ age = (int) totalMonths;
+ ageUnit2 = "澶�";
+ age2 = days;
+ ageMap.put("age", age != null ? age.toString() : null);
+ ageMap.put("ageUnit", ageUnit);
+ ageMap.put("age2", age2 != null ? age2.toString() : null);
+ ageMap.put("ageUnit2", ageUnit2);
+ } else {
+ // 澶т簬 1 骞达紝鎸夊勾 + 鏈堣绠�
+ ageUnit = "宀�";
+ age = years;
+ ageUnit2 = "鏈�";
+ age2 = months;
+ ageMap.put("age", age != null ? age.toString() : null);
+ ageMap.put("ageUnit", ageUnit);
+ ageMap.put("age2", age2 != null ? age2.toString() : null);
+ ageMap.put("ageUnit2", ageUnit2);
+ }
+
+ return ageMap;
+ }
}
--
Gitblit v1.9.3