From 9817ecf55eb4fa51e60b28d2e68b633b266050b8 Mon Sep 17 00:00:00 2001 From: zhangheng <3226558941@qq.com> Date: Wed, 14 Aug 2024 15:38:12 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homepage/SystemHomePageController.java | 40 +++++++++ .../mapper/patientinfo/PatientInfoMapper.java | 18 ++++ .../PatientPreHospitalizationMapper.java | 10 +++ .../SignPatientManageRouteNodeMapper.java | 15 ++-- .../homepage/SystemHomePageService.java | 23 +++++ .../impl/SystemHomePageServiceImpl.java | 88 +++++++++++++++++++ .../vo/homepage/ServiceModeStatistics.java | 29 ++++++ .../manage/vo/homepage/SignPatientCount.java | 25 ++++++ .../manage/vo/homepage/TopStatisticsVO.java | 32 +++++++ .../manage/patientinfo/PatientInfoMapper.xml | 34 +++++++ .../PatientPreHospitalizationMapper.xml | 10 +++ .../SignPatientManageRouteNodeMapper.xml | 25 ++++++ .../homepage/HomePageController.java | 4 +- .../controller/info/MobileInfoController.java | 2 +- .../mapper/homepage/HomePageMapper.java | 3 +- .../service/homepage/HomePageService.java | 4 +- .../homepage/Impl/HomePageServiceImpl.java | 22 ++++- .../xinelu/mobile/vo/homepage/HealthLog.java | 22 +++++ .../mapper/homepage/HomePageMapper.xml | 11 ++- 19 files changed, 399 insertions(+), 18 deletions(-) create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/controller/homepage/SystemHomePageController.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/SystemHomePageService.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/impl/SystemHomePageServiceImpl.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/ServiceModeStatistics.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/SignPatientCount.java create mode 100644 postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/TopStatisticsVO.java create mode 100644 postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/HealthLog.java diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/homepage/SystemHomePageController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/homepage/SystemHomePageController.java new file mode 100644 index 00000000..4c02d8f7 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/homepage/SystemHomePageController.java @@ -0,0 +1,40 @@ +package com.xinelu.manage.controller.homepage; + +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.manage.service.homepage.SystemHomePageService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 首页信息Controller + * + * @author zh + * @date 2024-08-13 + */ +@RestController +@RequestMapping("/system/homePage") +public class SystemHomePageController extends BaseController { + + @Resource + private SystemHomePageService systemHomePageService; + + + @GetMapping("topStatistics") + public AjaxResult topStatistics() { + return AjaxResult.success(systemHomePageService.topStatistics()); + } + + @GetMapping("signPatientCount") + public AjaxResult signPatientCount() { + return AjaxResult.success(systemHomePageService.signPatientCount()); + } + + @GetMapping("serviceModeStatistics") + public AjaxResult serviceModeStatistics() { + return AjaxResult.success(systemHomePageService.serviceModeStatistics()); + } +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java index c885c400..7857678b 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java @@ -6,6 +6,9 @@ import com.xinelu.manage.dto.patientinfo.PatientInfoDto; import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo; import com.xinelu.manage.vo.patientinfo.PatientInfoVo; import com.xinelu.manage.vo.patientinfo.PatientNextTaskVo; +import org.apache.ibatis.annotations.Param; + +import java.time.LocalDate; import java.util.List; /** @@ -104,4 +107,19 @@ public interface PatientInfoMapper { * @return 被护理人基本信息 */ ResidentInfo getPatientInfoByOpenId(String openId); + + /** + * 根据创建时间查询患者数量 + * + * @param firstDay 本月第一天 + * @param now 当前时间 + * @return int + */ + int getPatientInfoCountByCreateTime(@Param("firstDay") LocalDate firstDay, @Param("now") LocalDate now); + + int selectPatientInfoCountBySignTime(@Param("firstDay") LocalDate firstDay, @Param("now") LocalDate now); + + int selectPatientSignTotalCount(); + + int selectPatientSignServiceCount(); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientprehospitalization/PatientPreHospitalizationMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientprehospitalization/PatientPreHospitalizationMapper.java index 49df6d7a..9160667c 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientprehospitalization/PatientPreHospitalizationMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/patientprehospitalization/PatientPreHospitalizationMapper.java @@ -2,6 +2,8 @@ package com.xinelu.manage.mapper.patientprehospitalization; import com.xinelu.manage.domain.patientprehospitalization.PatientPreHospitalization; import com.xinelu.manage.dto.patientinfo.PatientInfoDto; + +import java.time.LocalDate; import java.util.List; import org.apache.ibatis.annotations.Param; @@ -39,4 +41,12 @@ public interface PatientPreHospitalizationMapper { */ public int deleteByIds(Long[] ids); + /** + * 根据创建时间查询预住院患者数量 + * + * @param firstDay 本月第一天 + * @param now 当前时间 + * @return int + */ + int getPatientPreHospitalizationCountByCreateTime(@Param("firstDay") LocalDate firstDay, @Param("now") LocalDate now); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java index d0918835..18add448 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.java @@ -3,15 +3,14 @@ package com.xinelu.manage.mapper.signpatientmanageroutenode; import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto; import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto; -import com.xinelu.manage.vo.signpatientmanageroutenode.PatientManageNodeListVo; -import com.xinelu.manage.vo.signpatientmanageroutenode.PatientTaskVo; -import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientManageNodeAuditVo; -import com.xinelu.manage.vo.signpatientmanageroutenode.SignPatientTaskVo; -import com.xinelu.manage.vo.signpatientmanageroutenode.TextMessage; +import com.xinelu.manage.vo.signpatientmanageroutenode.*; import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeAuditVo; -import java.util.List; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + /** * 签约患者管理任务路径节点Mapper接口 * @@ -152,4 +151,8 @@ public interface SignPatientManageRouteNodeMapper { * @return int */ int updateNodeExecuteStatusByIds(@Param("manageRouteNodeIds") List manageRouteNodeIds, @Param("nodeExecuteStatus") String nodeExecuteStatus, @Param("appletStatus") String appletStatus, @Param("messageStatus") String messageStatus, @Param("officialStatus") String officialStatus); + + int selectNodeCountByCreateTime(@Param("firstDay") LocalDate firstDay, @Param("now") LocalDate now); + + BigDecimal selectNodeCount(@Param("phoneDialMethod") String phoneDialMethod, @Param("messagePushSign") Long messagePushSign, @Param("appletPushSign") Long appletPushSign); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/SystemHomePageService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/SystemHomePageService.java new file mode 100644 index 00000000..94b70587 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/SystemHomePageService.java @@ -0,0 +1,23 @@ +package com.xinelu.manage.service.homepage; + +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.manage.vo.homepage.ServiceModeStatistics; +import com.xinelu.manage.vo.homepage.SignPatientCount; +import com.xinelu.manage.vo.homepage.TopStatisticsVO; + +import java.util.List; + +/** + * 首页信息Service接口 + * + * @author ZH + * @date 2024-08-13 + */ +public interface SystemHomePageService { + + TopStatisticsVO topStatistics(); + + List signPatientCount(); + + ServiceModeStatistics serviceModeStatistics(); +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/impl/SystemHomePageServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/impl/SystemHomePageServiceImpl.java new file mode 100644 index 00000000..514180a8 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/homepage/impl/SystemHomePageServiceImpl.java @@ -0,0 +1,88 @@ +package com.xinelu.manage.service.homepage.impl; + +import com.xinelu.common.enums.PhoneDialMethodEnum; +import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper; +import com.xinelu.manage.mapper.patientprehospitalization.PatientPreHospitalizationMapper; +import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRouteNodeMapper; +import com.xinelu.manage.service.homepage.SystemHomePageService; +import com.xinelu.manage.vo.homepage.ServiceModeStatistics; +import com.xinelu.manage.vo.homepage.SignPatientCount; +import com.xinelu.manage.vo.homepage.TopStatisticsVO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.temporal.TemporalAdjusters; +import java.util.ArrayList; +import java.util.List; + +/** + * 首页信息Service业务层处理 + * + * @author ZH + * @date 2024-08-13 + */ +@Service +public class SystemHomePageServiceImpl implements SystemHomePageService { + @Resource + private PatientInfoMapper patientInfoMapper; + @Resource + private PatientPreHospitalizationMapper patientPreHospitalizationMapper; + @Resource + private SignPatientManageRouteNodeMapper signPatientManageRouteNodeMapper; + + @Override + public TopStatisticsVO topStatistics() { + LocalDate now = LocalDate.now(); + TopStatisticsVO topStatisticsVO = new TopStatisticsVO(); + LocalDate firstDay = now.with(TemporalAdjusters.firstDayOfMonth()); + int createPatientCount = patientInfoMapper.getPatientInfoCountByCreateTime(firstDay, now); + int patientPreHospitalizationCount = patientPreHospitalizationMapper.getPatientPreHospitalizationCountByCreateTime(firstDay, now); + topStatisticsVO.setThisMonthPatient(createPatientCount + patientPreHospitalizationCount); + topStatisticsVO.setSignPatientCount(patientInfoMapper.selectPatientInfoCountBySignTime(firstDay, now)); + topStatisticsVO.setNodeCount(signPatientManageRouteNodeMapper.selectNodeCountByCreateTime(firstDay, now)); + topStatisticsVO.setPatientSignCount(patientInfoMapper.selectPatientSignTotalCount()); + topStatisticsVO.setPatientSignServiceCount(patientInfoMapper.selectPatientSignServiceCount()); + return topStatisticsVO; + } + + @Override + public List signPatientCount() { + List localDates = new ArrayList<>(); + List signPatientCounts = new ArrayList<>(); + LocalDate now = LocalDate.now(); + for (int i = 5; i >= 0; i--) { + LocalDate localDate = now.minusMonths(i); + localDates.add(localDate); + } + for (LocalDate localDate : localDates) { + SignPatientCount signPatientCount = new SignPatientCount(); + LocalDate firstDay = localDate.with(TemporalAdjusters.firstDayOfMonth()); + LocalDate lastDay = localDate.with(TemporalAdjusters.lastDayOfMonth()); + int createPatientCount = patientInfoMapper.getPatientInfoCountByCreateTime(firstDay, lastDay); + int i = patientInfoMapper.selectPatientInfoCountBySignTime(firstDay, lastDay); + signPatientCount.setTime(localDate); + signPatientCount.setSignPatientCount(createPatientCount); + signPatientCount.setProportion(new BigDecimal(i).divide(new BigDecimal(createPatientCount), 2, RoundingMode.HALF_UP)); + signPatientCounts.add(signPatientCount); + } + return signPatientCounts; + } + + @Override + public ServiceModeStatistics serviceModeStatistics() { + ServiceModeStatistics serviceModeStatistics = new ServiceModeStatistics(); + BigDecimal all = signPatientManageRouteNodeMapper.selectNodeCount(null, null, null); + BigDecimal common = signPatientManageRouteNodeMapper.selectNodeCount(PhoneDialMethodEnum.COMMON.getInfo(), null, null); + BigDecimal AI = signPatientManageRouteNodeMapper.selectNodeCount(PhoneDialMethodEnum.AI.getInfo(), null, null); + BigDecimal messagePushSign = signPatientManageRouteNodeMapper.selectNodeCount(null, 0L, null); + BigDecimal appletPushSign = signPatientManageRouteNodeMapper.selectNodeCount(null, null, 0L); + serviceModeStatistics.setAI(AI.divide(all, 2, RoundingMode.HALF_UP)); + serviceModeStatistics.setMessage(messagePushSign.divide(all, 2, RoundingMode.HALF_UP)); + serviceModeStatistics.setCommon(common.divide(all, 2, RoundingMode.HALF_UP)); + serviceModeStatistics.setWeChat(appletPushSign.divide(all, 2, RoundingMode.HALF_UP)); + return serviceModeStatistics; + } +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/ServiceModeStatistics.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/ServiceModeStatistics.java new file mode 100644 index 00000000..ff52ce24 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/ServiceModeStatistics.java @@ -0,0 +1,29 @@ +package com.xinelu.manage.vo.homepage; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class ServiceModeStatistics { + + /** + * 短信 + */ + private BigDecimal message; + + /** + * ai + */ + private BigDecimal AI; + + /** + * 人工随访 + */ + private BigDecimal common; + + /** + * 微信 + */ + private BigDecimal weChat; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/SignPatientCount.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/SignPatientCount.java new file mode 100644 index 00000000..96905307 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/SignPatientCount.java @@ -0,0 +1,25 @@ +package com.xinelu.manage.vo.homepage; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; + +@Data +public class SignPatientCount { + + /** + * 时间 + */ + private LocalDate time; + + /** + * 数量 + */ + private Integer SignPatientCount; + + /** + * 百分比 + */ + private BigDecimal proportion; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/TopStatisticsVO.java b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/TopStatisticsVO.java new file mode 100644 index 00000000..a6843384 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/vo/homepage/TopStatisticsVO.java @@ -0,0 +1,32 @@ +package com.xinelu.manage.vo.homepage; + +import lombok.Data; + +@Data +public class TopStatisticsVO { + + /** + * 本月新增患者数 + */ + private Integer thisMonthPatient; + + /** + * 本月签约患者数 + */ + private Integer signPatientCount; + + /** + * 本月随访人次 + */ + private Integer nodeCount; + + /** + * 服务总人数 + */ + private Integer patientSignCount; + + /** + * 服务中患者数 + */ + private Integer patientSignServiceCount; +} \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml index 64105970..9d921042 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml @@ -714,4 +714,38 @@ + + + + + + + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml index a23cd433..6eb3311f 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml @@ -391,4 +391,14 @@ #{item.updateTime,jdbcType=TIMESTAMP}) + + diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml index 80d293b6..a1da8194 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml @@ -938,4 +938,29 @@ #{manageRouteNodeIds} + + + + \ No newline at end of file diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java index 638c207c..98ffe25f 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/homepage/HomePageController.java @@ -3,10 +3,10 @@ package com.xinelu.mobile.controller.homepage; import com.xinelu.common.core.controller.BaseController; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.page.TableDataInfo; -import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; import com.xinelu.mobile.service.homepage.HomePageService; +import com.xinelu.mobile.vo.homepage.HealthLog; import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; import org.springframework.web.bind.annotation.*; @@ -76,7 +76,7 @@ public class HomePageController extends BaseController { @GetMapping("/selectTaskExecuteRecord") public TableDataInfo selectPatientTaskExecuteRecord(Long residentId) { startPage(); - List list = homePageService.selectPatientTaskExecuteRecord(residentId); + List list = homePageService.selectPatientTaskExecuteRecord(residentId); return getDataTable(list); } diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/info/MobileInfoController.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/info/MobileInfoController.java index cf070649..d7974e88 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/info/MobileInfoController.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/controller/info/MobileInfoController.java @@ -17,7 +17,7 @@ import java.util.List; */ @Slf4j @RestController -@RequestMapping("/mobile/info") +@RequestMapping("/postDischarge") public class MobileInfoController extends BaseController { diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/mapper/homepage/HomePageMapper.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/mapper/homepage/HomePageMapper.java index 3d32018a..b4b119bd 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/mapper/homepage/HomePageMapper.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/mapper/homepage/HomePageMapper.java @@ -2,6 +2,7 @@ package com.xinelu.mobile.mapper.homepage; import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; import com.xinelu.manage.vo.signpatientmanageroute.PhonePush; +import com.xinelu.mobile.vo.homepage.HealthLog; import com.xinelu.mobile.vo.homepage.MessageTabulationVO; import com.xinelu.mobile.vo.homepage.NodeExecuteStatus; import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; @@ -33,7 +34,7 @@ public interface HomePageMapper { * @param nodeExecuteStatus 节点状态 * @return PatientTaskExecuteRecord */ - List selectTaskExecuteRecordByResidentId(@Param("residentId") Long residentId, @Param("nodeExecuteStatus") String nodeExecuteStatus); + List selectTaskExecuteRecordByResidentId(@Param("residentId") Long residentId, @Param("nodeExecuteStatus") String nodeExecuteStatus); /** * 根据居民查询满意度问卷 diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java index 408976e7..08cefdb8 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/HomePageService.java @@ -2,10 +2,10 @@ package com.xinelu.mobile.service.homepage; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.page.TableDataInfo; -import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; import com.xinelu.manage.domain.signpatientmanageroutenode.SignPatientManageRouteNode; import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO; import com.xinelu.manage.vo.signpatientmanageroute.PhonePush; +import com.xinelu.mobile.vo.homepage.HealthLog; import com.xinelu.mobile.vo.myfollowup.MyFollowUpVO; import java.util.List; @@ -64,7 +64,7 @@ public interface HomePageService { * @param residentId 用户id * @return AjaxResult */ - List selectPatientTaskExecuteRecord(Long residentId); + List selectPatientTaskExecuteRecord(Long residentId); /** * 满意度问卷 diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java index 405cd238..bfbcce10 100644 --- a/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/service/homepage/Impl/HomePageServiceImpl.java @@ -33,6 +33,7 @@ import com.xinelu.manage.vo.questionsubjectoption.QuestionSubjectOptionVO; import com.xinelu.manage.vo.signpatientmanageroute.PhonePush; import com.xinelu.mobile.mapper.homepage.HomePageMapper; import com.xinelu.mobile.service.homepage.HomePageService; +import com.xinelu.mobile.vo.homepage.HealthLog; import com.xinelu.mobile.vo.homepage.MessageContentVO; import com.xinelu.mobile.vo.homepage.MessageTabulationVO; import com.xinelu.mobile.vo.homepage.NodeExecuteStatus; @@ -45,6 +46,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Comparator; @@ -272,8 +274,24 @@ public class HomePageServiceImpl implements HomePageService { * @return AjaxResult */ @Override - public List selectPatientTaskExecuteRecord(Long residentId) { - return homePageMapper.selectTaskExecuteRecordByResidentId(residentId, null); + public List selectPatientTaskExecuteRecord(Long residentId) { + List patientTaskExecuteRecords = homePageMapper.selectTaskExecuteRecordByResidentId(residentId, null); + if (CollectionUtils.isNotEmpty(patientTaskExecuteRecords)) { + for (HealthLog patientTaskExecuteRecord : patientTaskExecuteRecords) { + LocalDate localDate = null; + if (Objects.nonNull(patientTaskExecuteRecord.getDischargeTime())) { + localDate = patientTaskExecuteRecord.getDischargeTime().plusDays(patientTaskExecuteRecord.getRouteNodeDay()); + } + if (Objects.isNull(patientTaskExecuteRecord.getDischargeTime()) && Objects.nonNull(patientTaskExecuteRecord.getVisitDate())) { + localDate = patientTaskExecuteRecord.getVisitDate().plusDays(patientTaskExecuteRecord.getRouteNodeDay()); + } + if (Objects.isNull(localDate)) { + continue; + } + patientTaskExecuteRecord.setExecuteTime(localDate.atTime(0, 0, 0)); + } + } + return patientTaskExecuteRecords; } /** diff --git a/postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/HealthLog.java b/postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/HealthLog.java new file mode 100644 index 00000000..95c2a13e --- /dev/null +++ b/postdischarge-mobile/src/main/java/com/xinelu/mobile/vo/homepage/HealthLog.java @@ -0,0 +1,22 @@ +package com.xinelu.mobile.vo.homepage; + +import com.xinelu.manage.domain.patienttaskexecuterecord.PatientTaskExecuteRecord; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDate; + +@EqualsAndHashCode(callSuper = true) +@Data +public class HealthLog extends PatientTaskExecuteRecord { + + @ApiModelProperty(value = "出院时间") + private LocalDate dischargeTime; + + @ApiModelProperty(value = "就诊时间") + private LocalDate visitDate; + + @ApiModelProperty(value = "管理路径节点时间,时间单位为:天") + private Integer routeNodeDay; +} \ No newline at end of file diff --git a/postdischarge-mobile/src/main/resources/mapper/homepage/HomePageMapper.xml b/postdischarge-mobile/src/main/resources/mapper/homepage/HomePageMapper.xml index 5001042b..8cc22a72 100644 --- a/postdischarge-mobile/src/main/resources/mapper/homepage/HomePageMapper.xml +++ b/postdischarge-mobile/src/main/resources/mapper/homepage/HomePageMapper.xml @@ -42,15 +42,18 @@ - p.del_flag = 0 - - and p.resident_id = #{residentId} - + p.del_flag = 0 + + and p.resident_id = #{residentId} + and p.patient_name = #{patientName} @@ -133,12 +163,12 @@ and date_format(p.admission_time,'%y%m%d') <= date_format(#{admissionTimeEnd}, '%y%m%d') - - and date_format(p.discharge_time,'%y%m%d') >= date_format(#{dischargeTimeStart}, '%y%m%d') - - - and date_format(p.discharge_time,'%y%m%d') <= date_format(#{dischargeTimeEnd}, '%y%m%d') - + + and date_format(p.discharge_time,'%y%m%d') >= date_format(#{dischargeTimeStart}, '%y%m%d') + + + and date_format(p.discharge_time,'%y%m%d') <= date_format(#{dischargeTimeEnd}, '%y%m%d') + and date_format(p.appointment_date, '%y%m%d') >= date_format(#{appointmentDateStart}, '%y%m%d') @@ -160,529 +190,542 @@ and p.patient_source = #{patientSource} - - and p.surgical_name = #{surgicalName} - - - ${params.dataScope} + + and p.surgical_name = #{surgicalName} + + + ${params.dataScope} order by p.id desc - + - + - + - + - - insert into patient_info - - - resident_id, - - - patient_name, - - patient_phone, - - family_member_phone, - - birth_date, - - card_no, - - sex, - - address, - - patient_type, - - sign_status, - - sign_patient_record_id, - - service_status, - - sign_time, - - visit_method, - - attending_physician_id, - - attending_physician_name, - - main_diagnosis, - - hospital_agency_id, - - hospital_agency_name, - - campus_agency_id, - - campus_agency_name, - - department_id, - - department_name, - - ward_id, - - ward_name, - - - responsible_nurse, - - - patient_visit_record_id, - - - visit_serial_number, - - - admission_time, - - - discharge_time, - - - patient_pre_hospitalization_id, - - appointment_treatment_group, - - registration_no, - - registration_date, - - appointment_date, - - in_hospital_number, - - visit_date, - - discharge_method, - - patient_source, - - surgical_name, - - del_flag, - - create_by, - - create_time, - - update_by, - - update_time, - - - - #{residentId}, - - #{patientName}, - - #{patientPhone}, - - #{familyMemberPhone}, - - #{birthDate}, - - #{cardNo}, - - #{sex}, - - #{address}, - - #{patientType}, - - #{signStatus}, - - #{signPatientRecordId}, - - #{serviceStatus}, - - #{signTime}, - - #{visitMethod}, - - #{attendingPhysicianId}, - - #{attendingPhysicianName}, - - #{mainDiagnosis}, - - #{hospitalAgencyId}, - - #{hospitalAgencyName}, - - #{campusAgencyId}, - - #{campusAgencyName}, - - #{departmentId}, - - #{departmentName}, - - #{wardId}, - - #{wardName}, - - #{responsibleNurse}, - - #{patientVisitRecordId}, - - #{visitSerialNumber}, - - #{admissionTime}, - - #{dischargeTime}, - - - #{patientPreHospitalizationId}, - - #{appointmentTreatmentGroup}, - - #{registrationNo}, - - #{registrationDate}, - - #{appointmentDate}, - - #{inHospitalNumber}, - - #{visitDate}, - - #{dischargeMethod}, - - #{patientSource}, - - #{surgicalName}, - - #{delFlag}, - - #{createBy}, - - #{createTime}, - - #{updateBy}, - - #{updateTime}, - - - + + insert into patient_info + + + resident_id, + + + patient_name, + + patient_phone, + + family_member_phone, + + birth_date, + + card_no, + + sex, + + address, + + patient_type, + + sign_status, + + sign_patient_record_id, + + service_status, + + sign_time, + + visit_method, + + attending_physician_id, + + attending_physician_name, + + main_diagnosis, + + hospital_agency_id, + + hospital_agency_name, + + campus_agency_id, + + campus_agency_name, + + department_id, + + department_name, + + ward_id, + + ward_name, + + + responsible_nurse, + + + patient_visit_record_id, + + + visit_serial_number, + + + admission_time, + + + discharge_time, + + + patient_pre_hospitalization_id, + + appointment_treatment_group, + + registration_no, + + registration_date, + + appointment_date, + + in_hospital_number, + + visit_date, + + discharge_method, + + patient_source, + + surgical_name, + + del_flag, + + create_by, + + create_time, + + update_by, + + update_time, + + + + #{residentId}, + + #{patientName}, + + #{patientPhone}, + + #{familyMemberPhone}, + + #{birthDate}, + + #{cardNo}, + + #{sex}, + + #{address}, + + #{patientType}, + + #{signStatus}, + + #{signPatientRecordId}, + + #{serviceStatus}, + + #{signTime}, + + #{visitMethod}, + + #{attendingPhysicianId}, + + #{attendingPhysicianName}, + + #{mainDiagnosis}, + + #{hospitalAgencyId}, + + #{hospitalAgencyName}, + + #{campusAgencyId}, + + #{campusAgencyName}, + + #{departmentId}, + + #{departmentName}, + + #{wardId}, + + #{wardName}, + + #{responsibleNurse}, + + #{patientVisitRecordId}, + + #{visitSerialNumber}, + + #{admissionTime}, + + #{dischargeTime}, + + + #{patientPreHospitalizationId}, + + #{appointmentTreatmentGroup}, + + #{registrationNo}, + + #{registrationDate}, + + #{appointmentDate}, + + #{inHospitalNumber}, + + #{visitDate}, + + #{dischargeMethod}, + + #{patientSource}, + + #{surgicalName}, + + #{delFlag}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + + + - - update patient_info - - - resident_id = #{residentId}, - - - patient_name = #{patientName}, - - - patient_phone = #{patientPhone}, - - - family_member_phone = #{familyMemberPhone}, - - - birth_date = #{birthDate}, - - - card_no = #{cardNo}, - - - sex = #{sex}, - - - address = #{address}, - - - patient_type = #{patientType}, - - sign_status = - #{signStatus}, - - sign_patient_record_id = #{signPatientRecordId}, - - service_status = #{serviceStatus}, - - sign_time = - #{signTime}, - - visit_method = - #{visitMethod}, - - attending_physician_id = - #{attendingPhysicianId}, - - attending_physician_name = - #{attendingPhysicianName}, - - main_diagnosis = - #{mainDiagnosis}, - - hospital_agency_id = - #{hospitalAgencyId}, - - hospital_agency_name = - #{hospitalAgencyName}, - - campus_agency_id = - #{campusAgencyId}, - - campus_agency_name = - #{campusAgencyName}, - - department_id = - #{departmentId}, - - department_name = - #{departmentName}, - - ward_id = - #{wardId}, - - ward_name = - #{wardName}, - - responsible_nurse = - #{responsibleNurse}, - - patient_visit_record_id = - #{patientVisitRecordId}, - - visit_serial_number = - #{visitSerialNumber}, - - - admission_time = #{admissionTime}, - - - discharge_time = #{dischargeTime}, - - - patient_pre_hospitalization_id = #{patientPreHospitalizationId}, - - appointment_treatment_group = - #{appointmentTreatmentGroup}, - - registration_no = - #{registrationNo}, - - registration_date = - #{registrationDate}, - - appointment_date = - #{appointmentDate}, - - in_hospital_number = - #{inHospitalNumber}, - - visit_date = - #{visitDate}, - - discharge_method = - #{dischargeMethod}, - - patient_source = - #{patientSource}, - - surgical_name = - #{surgicalName}, - - del_flag = - #{delFlag}, - - create_by = - #{createBy}, - - create_time = - #{createTime}, - - update_by = - #{updateBy}, - - update_time = - #{updateTime}, - - - where id = #{id} - + + update patient_info + + + resident_id = #{residentId}, + + + patient_name = #{patientName}, + + + patient_phone = #{patientPhone}, + + + family_member_phone = #{familyMemberPhone}, + + + birth_date = #{birthDate}, + + + card_no = #{cardNo}, + + + sex = #{sex}, + + + address = #{address}, + + + patient_type = #{patientType}, + + sign_status = + #{signStatus}, + + sign_patient_record_id = #{signPatientRecordId}, + + service_status = #{serviceStatus}, + + sign_time = + #{signTime}, + + visit_method = + #{visitMethod}, + + attending_physician_id = + #{attendingPhysicianId}, + + attending_physician_name = + #{attendingPhysicianName}, + + main_diagnosis = + #{mainDiagnosis}, + + hospital_agency_id = + #{hospitalAgencyId}, + + hospital_agency_name = + #{hospitalAgencyName}, + + campus_agency_id = + #{campusAgencyId}, + + campus_agency_name = + #{campusAgencyName}, + + department_id = + #{departmentId}, + + department_name = + #{departmentName}, + + ward_id = + #{wardId}, + + ward_name = + #{wardName}, + + responsible_nurse = + #{responsibleNurse}, + + patient_visit_record_id = + #{patientVisitRecordId}, + + visit_serial_number = + #{visitSerialNumber}, + + + admission_time = #{admissionTime}, + + + discharge_time = #{dischargeTime}, + + + patient_pre_hospitalization_id = #{patientPreHospitalizationId}, + + appointment_treatment_group = + #{appointmentTreatmentGroup}, + + registration_no = + #{registrationNo}, + + registration_date = + #{registrationDate}, + + appointment_date = + #{appointmentDate}, + + in_hospital_number = + #{inHospitalNumber}, + + visit_date = + #{visitDate}, + + discharge_method = + #{dischargeMethod}, + + patient_source = + #{patientSource}, + + surgical_name = + #{surgicalName}, + + del_flag = + #{delFlag}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + - - update patient_info - set resident_id = #{residentId}, - patient_name = #{patientName}, - patient_phone = #{patientPhone}, - family_member_phone = #{familyMemberPhone}, - birth_date = #{birthDate}, - card_no = #{cardNo}, - sex = #{sex}, - address = #{address}, - patient_type = #{patientType}, - sign_status = #{signStatus}, - sign_patient_record_id = #{signPatientRecordId}, - service_status = #{serviceStatus}, - sign_time = #{signTime}, - visit_method = #{visitMethod}, - attending_physician_id = #{attendingPhysicianId}, - attending_physician_name = #{attendingPhysicianName}, - main_diagnosis = #{mainDiagnosis}, - hospital_agency_id = #{hospitalAgencyId}, - hospital_agency_name = #{hospitalAgencyName}, - campus_agency_id = #{campusAgencyId}, - campus_agency_name = #{campusAgencyName}, - department_id = #{departmentId}, - department_name = #{departmentName}, - ward_id = #{wardId}, - ward_name = #{wardName}, - responsible_nurse = #{responsibleNurse}, - patient_visit_record_id = #{patientVisitRecordId}, - visit_serial_number = #{visitSerialNumber}, - admission_time = #{admissionTime}, - discharge_time = #{dischargeTime}, - patient_pre_hospitalization_id = #{patientPreHospitalizationId}, - appointment_treatment_group = #{appointmentTreatmentGroup}, - registration_no = #{registrationNo}, - registration_date = #{registrationDate}, - appointment_date = #{appointmentDate}, - in_hospital_number = #{inHospitalNumber}, - visit_date = #{visitDate}, - discharge_method = #{dischargeMethod}, - patient_source = #{patientSource}, - surgical_name = #{surgicalName}, - del_flag = #{delFlag}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime} - where id = #{id} - + + update patient_info + set resident_id = #{residentId}, + patient_name = #{patientName}, + patient_phone = #{patientPhone}, + family_member_phone = #{familyMemberPhone}, + birth_date = #{birthDate}, + card_no = #{cardNo}, + sex = #{sex}, + address = #{address}, + patient_type = #{patientType}, + sign_status = #{signStatus}, + sign_patient_record_id = #{signPatientRecordId}, + service_status = #{serviceStatus}, + sign_time = #{signTime}, + visit_method = #{visitMethod}, + attending_physician_id = #{attendingPhysicianId}, + attending_physician_name = #{attendingPhysicianName}, + main_diagnosis = #{mainDiagnosis}, + hospital_agency_id = #{hospitalAgencyId}, + hospital_agency_name = #{hospitalAgencyName}, + campus_agency_id = #{campusAgencyId}, + campus_agency_name = #{campusAgencyName}, + department_id = #{departmentId}, + department_name = #{departmentName}, + ward_id = #{wardId}, + ward_name = #{wardName}, + responsible_nurse = #{responsibleNurse}, + patient_visit_record_id = #{patientVisitRecordId}, + visit_serial_number = #{visitSerialNumber}, + admission_time = #{admissionTime}, + discharge_time = #{dischargeTime}, + patient_pre_hospitalization_id = #{patientPreHospitalizationId}, + appointment_treatment_group = #{appointmentTreatmentGroup}, + registration_no = #{registrationNo}, + registration_date = #{registrationDate}, + appointment_date = #{appointmentDate}, + in_hospital_number = #{inHospitalNumber}, + visit_date = #{visitDate}, + discharge_method = #{dischargeMethod}, + patient_source = #{patientSource}, + surgical_name = #{surgicalName}, + del_flag = #{delFlag}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime} + where id = #{id} + - update patient_info set del_flag = 1 - where id = #{id} - + update patient_info + set del_flag = 1 + where id = #{id} + update patient_info set del_flag = 1 where id in @@ -694,19 +737,19 @@ - + - select count(1) from patient_info where del_flag = 0 and (service_status = 'SERVICE_CENTER' or service_status = 'SERVICE_END') - select count(1) from patient_info where del_flag = 0 diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml index fdb8cbec..3521e4ce 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroute/SignPatientManageRouteMapper.xml @@ -345,9 +345,9 @@ LEFT JOIN patient_visit_record pvr ON pi.patient_visit_record_id = pvr.id pi.del_flag = 0 + and spmrn.phone_push_sign = 1 AND spmrn.route_check_status = 'AGREE' AND spmrn.task_node_type in ('PHONE_OUTBOUND','QUESTIONNAIRE_SCALE') - AND spmrn.phone_dial_method = 'COMMON' AND pi.patient_name LIKE concat('%', #{patientName}, '%') diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml index a1da8194..2c4362aa 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientmanageroutenode/SignPatientManageRouteNodeMapper.xml @@ -943,7 +943,7 @@ select count(1) from sign_patient_manage_route_node where del_flag = 0 - and phone_push_sign = 0 + and phone_push_sign = 1 and create_time >= #{firstDay} and create_time <= #{now} @@ -963,4 +963,19 @@ OR official_push_sign =#{appletPushSign}) + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/signpatientrecord/SignPatientRecordMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/signpatientrecord/SignPatientRecordMapper.xml index 50147636..d3f55192 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/signpatientrecord/SignPatientRecordMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/signpatientrecord/SignPatientRecordMapper.xml @@ -523,4 +523,29 @@ select id, patient_id, intentional_source ,intentional_time, billing_doctor_id, billing_doctor_name from sign_patient_record where id = #{id} + + From dfbfce1964294caa6be7be7ac9d3f1c522cefd1e Mon Sep 17 00:00:00 2001 From: zhuangyuanke Date: Wed, 14 Aug 2024 08:20:16 +0800 Subject: [PATCH 3/3] 11 --- .../mapper/manage/patientinfo/PatientInfoMapper.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml index 81197792..34d669b6 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml @@ -765,10 +765,10 @@ where del_flag = 0 - and create_time >= #{firstDay} + and DATE(create_time) >= #{firstDay} - and create_time <= #{now} + and DATE(create_time) <= #{now} @@ -779,10 +779,10 @@ where del_flag = 0 - and sign_time >= #{firstDay} + and DATE(sign_time) >= #{firstDay} - and sign_time <= #{now} + and DATE(sign_time) <= #{now} @@ -799,4 +799,4 @@ where del_flag = 0 and service_status = 'SERVICE_CENTER' - \ No newline at end of file +