TreatmentUserMapper.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package org.dromara.web.mapper;
  2. import org.apache.ibatis.annotations.Select;
  3. import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  4. import org.dromara.web.domain.TreatmentUser;
  5. import org.dromara.web.domain.vo.TreatmentUserVo;
  6. import org.dromara.web.domain.vo.indexData.PatientOverviewVo;
  7. import org.springframework.stereotype.Repository;
  8. /**
  9. * 【请填写功能名称】Mapper接口
  10. *
  11. * @author Lion Li
  12. * @date 2025-06-24
  13. */
  14. @Repository
  15. public interface TreatmentUserMapper extends BaseMapperPlus<TreatmentUser, TreatmentUserVo> {
  16. @Select("SELECT COUNT(DISTINCT sp.id) AS total, " +
  17. " COUNT(DISTINCT CASE WHEN latest_rec.type = '1' AND latest_rec.medical_type != '2' THEN sp.id END) AS outpatient, " +
  18. " COUNT(DISTINCT CASE WHEN latest_rec.type = '0' AND latest_rec.medical_type != '2' AND latest_rec.discharge_date IS NULL THEN sp.id END) AS inpatient " +
  19. "FROM sys_patient sp " +
  20. "LEFT JOIN ( " +
  21. " SELECT pmr1.* " +
  22. " FROM patient_medical_record pmr1 " +
  23. " INNER JOIN ( " +
  24. " SELECT treat_num, MAX(create_time) as max_create_time " +
  25. " FROM patient_medical_record " +
  26. " WHERE del_flag = '0' " +
  27. " GROUP BY treat_num " +
  28. " ) pmr2 ON pmr1.treat_num = pmr2.treat_num AND pmr1.create_time = pmr2.max_create_time " +
  29. " WHERE pmr1.del_flag = '0' " +
  30. ") latest_rec ON sp.treat_num = latest_rec.treat_num " +
  31. "WHERE sp.del_flag = '0'")
  32. PatientOverviewVo selectCount();
  33. }