package org.example.service;

import org.example.entity.HospitalWard;
import org.example.mapper.HospitalWardMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class HospitalWardService {
    
    @Autowired
    private HospitalWardMapper hospitalWardMapper;
    
    /**
     * 获取所有病区列表
     * @return 病区列表
     */
    public List<HospitalWard> findAll() {
        return hospitalWardMapper.findAll();
    }
    
    /**
     * 根据病区代码获取病区信息
     * @param code 病区代码
     * @return 病区信息
     */
    public HospitalWard findByCode(String code) {
        return hospitalWardMapper.findByCode(code);
    }
    
    /**
     * 检查除了指定代码外，是否还存在其他相同的代码
     * @param code 病区代码
     * @param excludeCode 要排除的代码
     * @return 是否存在
     */
    public boolean existsByCodeExcluding(String code, String excludeCode) {
        List<HospitalWard> wards = hospitalWardMapper.findByCodeExcluding(code, excludeCode);
        return wards != null && !wards.isEmpty();
    }
    
    /**
     * 根据病区名称模糊查询病区列表
     * @param name 病区名称
     * @return 病区列表
     */
    public List<HospitalWard> findByNameContaining(String name) {
        return hospitalWardMapper.findByNameContaining(name);
    }
    
    /**
     * 根据关联科室模糊查询病区列表
     * @param glkeshi 关联科室
     * @return 病区列表
     */
    public List<HospitalWard> findByGlkeshiContaining(String glkeshi) {
        return hospitalWardMapper.findByGlkeshiContaining(glkeshi);
    }
    
    /**
     * 根据启用状态查询病区列表
     * @param enabled 是否启用
     * @return 病区列表
     */
    public List<HospitalWard> findByEnabled(Boolean enabled) {
        return hospitalWardMapper.findByEnabled(enabled);
    }
    
    /**
     * 添加新病区
     * @param ward 病区信息
     */
    public void addWard(HospitalWard ward) {
        hospitalWardMapper.insert(ward);
    }
    
    /**
     * 更新病区信息
     * @param originCode 原始病区代码
     * @param ward 病区信息
     */
    public void updateWard(String originCode, HospitalWard ward) {
        hospitalWardMapper.update(ward, originCode);
    }
    
    /**
     * 删除病区
     * @param code 病区代码
     */
    public void deleteWard(String code) {
        hospitalWardMapper.deleteByCode(code);
    }
}