From bb9fd6f1fad1a20e7536fad50f7f8c7d932a9011 Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期二, 02 九月 2025 23:17:36 +0800 Subject: [PATCH] 查询超时问题处理 --- smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java | 70 +++++++++++++++++++++++++++++++++++ smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java | 13 ++++++ smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml | 8 +-- 3 files changed, 86 insertions(+), 5 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 dd95a3d..c793f11 100644 --- a/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/PatMedOuthospServiceImpl.java @@ -1,5 +1,9 @@ package com.smartor.service.impl; +import java.time.LocalDate; +import java.time.Period; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import java.util.*; import com.ruoyi.common.core.domain.entity.SysDept; @@ -11,6 +15,7 @@ import com.smartor.domain.*; import com.smartor.mapper.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.smartor.service.IPatMedOuthospService; @@ -64,9 +69,74 @@ @Override public List<PatMedOuthosp> selectPatMedOuthospList(PatMedOuthosp patMedOuthosp) { List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp); + for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) { + PatArchive patArchive = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid()); + if (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")); + patArchive.setAge2(ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null); + patArchive.setAgeUnit2(map.get("ageUnit2")); + patMedOuthosp1.setAge(patArchive.getAge() + patArchive.getAgeUnit() + patArchive.getAge2() + patArchive.getAgeUnit2()); + patMedOuthosp1.setTelcode(patArchive.getTelcode()); + patMedOuthosp1.setIdcardno(patArchive.getIdcardno()); + } + } return patMedOuthosps; } + 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 < 30) { + // 灏忎簬 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 < 12) { + // 灏忎簬 涓�骞达紝鎸夋湀 + 澶╄绠� + 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 { + // 澶т簬绛変簬 涓�骞达紝鎸夊勾 + 鏈堣绠� + 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; + } + /** * 鏂板鎮h�呴棬璇婅褰� * diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java index 16b192f..91ef27e 100644 --- a/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java +++ b/smartor/src/main/java/com/smartor/service/impl/ServiceExternalServiceImpl.java @@ -891,6 +891,19 @@ patMedOuthosp.setOuthospno(externalInHospPatientInfo.getBingAnHao()); patMedOuthosp.setSerialnum(externalInHospPatientInfo.getJiuZhenYWID()); List<PatMedOuthosp> patMedOuthosps = patMedOuthospMapper.selectPatMedOuthospList(patMedOuthosp); + for (PatMedOuthosp patMedOuthosp1 : patMedOuthosps) { + PatArchive pa = patArchiveMapper.selectPatArchiveByPatid(patMedOuthosp1.getPatid()); + if (patArchive.getBirthdate() != null) { + Map<String, String> map = calculateAge(pa.getBirthdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), LocalDate.now()); + pa.setAge(ObjectUtils.isNotEmpty(map.get("age")) ? Long.valueOf(map.get("age")) : null); + pa.setAgeUnit(map.get("ageUnit")); + pa.setAge2(ObjectUtils.isNotEmpty(map.get("age2")) ? Long.valueOf(map.get("age2")) : null); + pa.setAgeUnit2(map.get("ageUnit2")); + patMedOuthosp1.setAge(pa.getAge() + pa.getAgeUnit() + pa.getAge2() + pa.getAgeUnit2()); + patMedOuthosp1.setTelcode(patArchive.getTelcode()); + patMedOuthosp1.setIdcardno(patArchive.getIdcardno()); + } + } patMedOuthosp.setPatid(patArchive.getId()); patMedOuthosp.setPatno(externalInHospPatientInfo.getBingAnHao()); diff --git a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml index 30ba326..a51fa27 100644 --- a/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml +++ b/smartor/src/main/resources/mapper/smartor/PatMedOuthospMapper.xml @@ -113,11 +113,8 @@ pmo.hpi, pmo.fuflag, pmo.patname, - CONCAT(pa.age,pa.age_unit,pa.age2,pa.age_unit2) AS age, - pa.telcode, - pmo.mainsuit, - pa.idcardno - from pat_med_outhosp pmo left join pat_archive pa on pmo.patid = pa.id + pmo.mainsuit + from pat_med_outhosp pmo <where> pmo.del_flag=0 <if test="orgid != null ">and pmo.orgid = #{orgid}</if> @@ -135,6 +132,7 @@ date_format(#{endTime},'%y%m%d') </if> <if test="patid != null ">and pmo.patid = #{patid}</if> + <if test="serialnum != null ">and pmo.serialnum = #{serialnum}</if> <if test="fuflag != null ">and pmo.fuflag = #{fuflag}</if> <if test="patno != null ">and pmo.patno = #{patno}</if> <if test="outhospno != null and outhospno != ''">and pmo.outhospno = #{outhospno}</if> -- Gitblit v1.9.3