package com.fs.his.service.impl;

import java.util.List;
import com.fs.common.utils.DateUtils;
import com.fs.his.param.FsPatientListDParam;
import com.fs.his.vo.FsPatientListDVO;
import com.fs.his.vo.FsPatientVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fs.his.mapper.FsPatientMapper;
import com.fs.his.domain.FsPatient;
import com.fs.his.service.IFsPatientService;

import static com.fs.his.utils.PhoneUtil.encryptPhone;

/**
 * 病人Service业务层处理
 *
 * @author fs
 * @date 2023-06-07
 */
@Service
public class FsPatientServiceImpl implements IFsPatientService
{
    @Autowired
    private FsPatientMapper fsPatientMapper;

    /**
     * 查询病人
     *
     * @param patientId 病人主键
     * @return 病人
     */
    @Override
    public FsPatient selectFsPatientByPatientId(Long patientId)
    {
        return fsPatientMapper.selectFsPatientByPatientId(patientId);
    }

    /**
     * 查询病人列表
     *
     * @param fsPatient 病人
     * @return 病人
     */
    @Override
    public List<FsPatient> selectFsPatientList(FsPatient fsPatient)
    {
        return fsPatientMapper.selectFsPatientList(fsPatient);
    }

    /**
     * 新增病人
     *
     * @param fsPatient 病人
     * @return 结果
     */
    @Override
    public int insertFsPatient(FsPatient fsPatient)
    {
        fsPatient.setCreateTime(DateUtils.getNowDate());
        fsPatient.setMobile(encryptPhone(fsPatient.getMobile()));
        return fsPatientMapper.insertFsPatient(fsPatient);
    }

    /**
     * 修改病人
     *
     * @param fsPatient 病人
     * @return 结果
     */
    @Override
    public int updateFsPatient(FsPatient fsPatient)
    {
        fsPatient.setUpdateTime(DateUtils.getNowDate());
        if (fsPatient.getMobile()!=null&&fsPatient.getMobile().length()==11&&fsPatient.getMobile().matches("\\d+")){
            fsPatient.setMobile(encryptPhone(fsPatient.getMobile()));
        }else {
            fsPatient.setMobile(null);
        }
        return fsPatientMapper.updateFsPatient(fsPatient);
    }

    /**
     * 批量删除病人
     *
     * @param patientIds 需要删除的病人主键
     * @return 结果
     */
    @Override
    public int deleteFsPatientByPatientIds(Long[] patientIds)
    {
        for (Long patientId : patientIds) {
            fsPatientMapper.updataFsPatientByPatientId(patientId);
        }
        return patientIds.length;
    }

    /**
     * 删除病人信息
     *
     * @param patientId 病人主键
     * @return 结果
     */
    @Override
    public int deleteFsPatientByPatientId(Long patientId)
    {

        return fsPatientMapper.updataFsPatientByPatientId(patientId);
    }

    @Override
    public List<FsPatientVO> selectFsPatientListVO(FsPatientVO fsPatient) {
        return fsPatientMapper.selectFsPatientListVO(fsPatient);
    }


    public int selectFsPatientCountByUserId(long userId) {
        return fsPatientMapper.selectFsPatientCountByUserId(userId);
    }

    @Override
    public List<FsPatientVO> selectFsPatientByUserId(Long userId) {
        return fsPatientMapper.selectFsPatientListByUserId(userId);
    }

    @Override
    public List<FsPatientListDVO> selectFsPatientListDVO(FsPatientListDParam param) {
        return fsPatientMapper.selectFsPatientListDVO(param);
    }

    @Override
    public Boolean isEntityNull(FsPatientVO fsPatient) {
        return null;
    }

    @Override
    public Long selectFsPatientListVOCount(FsPatientVO fsPatient) {
        return fsPatientMapper.selectFsPatientListVOCount(fsPatient);
    }
}
