Files
wjh/src/main/java/com/example/service/DoctorPatientService.java
2026-05-24 00:24:56 +08:00

121 lines
3.8 KiB
Java

package com.example.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.common.Result;
import com.example.entity.Doctor;
import com.example.entity.DoctorPatient;
import com.example.entity.Patient;
import com.example.mapper.DoctorMapper;
import com.example.mapper.DoctorPatientMapper;
import com.example.mapper.PatientMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class DoctorPatientService {
@Resource
private DoctorPatientMapper doctorPatientMapper;
@Resource
private DoctorMapper doctorMapper;
@Resource
private PatientMapper patientMapper;
/**
* 新增医生患者关系
* @param doctorPatient 关系信息
*/
public void add(DoctorPatient doctorPatient) {
// 检查医生ID是否存在
Doctor doctor = doctorMapper.selectById(doctorPatient.getDoctorId());
if (ObjectUtil.isEmpty(doctor)) {
throw new RuntimeException("医生不存在");
}
// 检查患者ID是否存在
Patient patient = patientMapper.selectById(doctorPatient.getPatientId());
if (ObjectUtil.isEmpty(patient)) {
throw new RuntimeException("患者不存在");
}
// 检查关系是否已存在
LambdaQueryWrapper<DoctorPatient> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DoctorPatient::getDoctorId, doctorPatient.getDoctorId())
.eq(DoctorPatient::getPatientId, doctorPatient.getPatientId())
.eq(DoctorPatient::getStatus, "正常");
if (doctorPatientMapper.selectCount(queryWrapper) > 0) {
throw new RuntimeException("医生和患者关系已存在");
}
// 设置默认值
doctorPatient.setRelationshipStart(new Date());
doctorPatient.setStatus("正常");
doctorPatient.setCreateTime(new Date());
doctorPatientMapper.insert(doctorPatient);
}
/**
* 更新医生患者关系
* @param doctorPatient 关系信息
*/
public void update(DoctorPatient doctorPatient) {
DoctorPatient dbDoctorPatient = doctorPatientMapper.selectById(doctorPatient.getId());
if (ObjectUtil.isEmpty(dbDoctorPatient)) {
throw new RuntimeException("关系不存在");
}
doctorPatientMapper.updateById(doctorPatient);
}
/**
* 删除医生患者关系
* @param id 关系ID
*/
public void delete(Integer id) {
doctorPatientMapper.deleteById(id);
}
/**
* 结束医生患者关系
* @param id 关系ID
*/
public void endRelationship(Integer id) {
DoctorPatient doctorPatient = doctorPatientMapper.selectById(id);
if (ObjectUtil.isEmpty(doctorPatient)) {
throw new RuntimeException("关系不存在");
}
doctorPatient.setStatus("已结束");
doctorPatientMapper.updateById(doctorPatient);
}
/**
* 根据医生ID查询患者
* @param doctorId 医生ID
* @param name 患者姓名(可选)
* @return 患者列表
*/
public List<DoctorPatient> selectByDoctorId(Integer doctorId, String name) {
return doctorPatientMapper.selectByDoctorId(doctorId, name);
}
/**
* 根据患者ID查询医生
* @param patientId 患者ID
* @param name 医生姓名(可选)
* @return 医生列表
*/
public List<DoctorPatient> selectByPatientId(Integer patientId, String name) {
return doctorPatientMapper.selectByPatientId(patientId, name);
}
}