LocalBusClinicService.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.coffee.bus.service;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.coffee.bus.controller.vo.ClinicStatsVo;
  7. import com.coffee.bus.entity.BusClinicEntity;
  8. import com.coffee.bus.entity.BusPatientEntity;
  9. import com.coffee.bus.mapper.BusClinicMapper;
  10. import com.coffee.bus.registry.patient.PatientRegistry;
  11. import com.coffee.bus.service.dto.ClinicResult;
  12. import com.coffee.bus.service.dto.ClinicStatsQueryResult;
  13. import com.coffee.bus.service.dto.ClinicStatsReturnResult;
  14. import com.coffee.common.crud.BaseService;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.context.annotation.Lazy;
  18. import org.springframework.scheduling.annotation.Async;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import java.util.*;
  22. /**
  23. * @author lifang
  24. * @version 1.0.0
  25. * @ClassName LocalBusHospitalService.java
  26. * @Description TODO
  27. * @createTime 2022年03月19日 09:27:00
  28. */
  29. @Service
  30. @Slf4j
  31. public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClinicEntity,String> {
  32. @Autowired
  33. @Lazy
  34. private LocalBusPatientService patientService;
  35. @Autowired
  36. @Lazy
  37. private PatientRegistry patientRegistry;
  38. @Override
  39. public void validateBeforeSave(BusClinicEntity entity) {
  40. }
  41. @Override
  42. public void validateBeforeUpdate(BusClinicEntity entity) {
  43. }
  44. @Override
  45. public void validateBeforeDelete(String id) {
  46. }
  47. @Override
  48. public boolean save(BusClinicEntity entity) {
  49. return super.save(entity);
  50. }
  51. /**
  52. * 结束当前医院病号的临床数据
  53. * @param clinicId 临床id
  54. */
  55. @Transactional(rollbackFor = Exception.class)
  56. public void finish(String clinicId, String tenantId) {
  57. this.finish(Collections.singletonList(clinicId),new Date(),tenantId);
  58. }
  59. /**
  60. * 结束当前医院病号的临床数据
  61. * @param clinicIds 临床id
  62. * @param finishTime 临床结束时间
  63. */
  64. @Transactional(rollbackFor = Exception.class)
  65. public void finish(List<String> clinicIds,Date finishTime, String tenantId) {
  66. this.update(new UpdateWrapper<BusClinicEntity>().lambda()
  67. .in(BusClinicEntity::getId,clinicIds)
  68. .set(BusClinicEntity::getFinished,true)
  69. .set(BusClinicEntity::getEndTime,finishTime));
  70. //更新病人缓存
  71. this.listByIds(clinicIds).stream()
  72. .map(BusClinicEntity::getPatientCode)
  73. .map(code->patientRegistry.getOperator(tenantId,code))
  74. .forEach(operator->operator.setFinished(true));
  75. }
  76. /**
  77. * 找到该病号最近的一场手术
  78. * @param hospitalId
  79. * @param patientCode
  80. */
  81. public BusClinicEntity recentClinicByPatientCode(String hospitalId, String patientCode) {
  82. return this.baseMapper.recentClinic(hospitalId,patientCode);
  83. }
  84. /**
  85. * 从his同步病人数据-异步
  86. * @param hospitalId
  87. * @param patientCode
  88. */
  89. @Async
  90. public void asyncFromHis(String hospitalId, String patientCode) {
  91. }
  92. public ClinicStatsReturnResult stats(ClinicStatsVo statsVo) {
  93. return ClinicStatsReturnResult.of(this.baseMapper.stats(statsVo));
  94. }
  95. public IPage<ClinicResult> pageQuery(Page<ClinicResult> page){
  96. return this.baseMapper.pageQuery(page);
  97. }
  98. }