package com.xinelu.manage.service.nursestation;


import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.nursestation.NurseStation;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.dto.nursestation.NurseStationDTO;
import com.xinelu.manage.dto.nursestation.NurseStationImportDTO;
import com.xinelu.manage.vo.nursestation.NurseStationAndAreaVO;
import com.xinelu.manage.vo.nursestation.NurseStationByUserVO;
import com.xinelu.manage.vo.nursestation.NurseStationSysUserVO;
import com.xinelu.manage.vo.nursestation.NurseStationVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 护理站信息Service接口
 *
 * @author ljh
 * @date 2022-09-02
 */
public interface INurseStationService {
    /**
     * 查询护理站信息
     *
     * @param id 护理站信息主键
     * @return 护理站信息
     */
    NurseStationAndAreaVO selectNurseStationById(Long id);

    /**
     * 查询护理站信息列表
     *
     * @param nurseStation 护理站信息
     * @return 护理站信息集合
     */
    List<NurseStationVO> selectNurseStationList(NurseStationVO nurseStation);

    /**
     * 查询所有护理站列列表信息
     *
     * @param nurseStation 查询参数
     * @return 护理站列表信息
     */
    List<NurseStationByUserVO> selectNurseStationListByUser(NurseStation nurseStation);

    /**
     * 查询用户绑定的护理站列表信息
     *
     * @param nurseStationIdList 护理站id集合
     * @param nurseStation       查询条件信息
     * @return 护理站列表信息
     */
    List<NurseStationByUserVO> selectNurseStationListByIds(List<String> nurseStationIdList, NurseStation nurseStation);

    /**
     * 新增护理站信息
     *
     * @param nurseStation 护理站信息
     * @return 结果
     */
    AjaxResult insertNurseStation(NurseStationDTO nurseStation);

    /**
     * 修改护理站信息
     *
     * @param nurseStation 护理站信息
     * @return 结果
     */
    AjaxResult updateNurseStation(NurseStationDTO nurseStation);

    /**
     * 批量删除护理站信息
     *
     * @param ids 需要删除的护理站信息主键集合
     * @return 结果
     */
    AjaxResult deleteNurseStationByIds(Long[] ids);

    /**
     * 删除护理站信息信息
     *
     * @param id 护理站信息主键
     * @return 结果
     */
    int deleteNurseStationById(Long id);

    /**
     * 根据护理项目编号查询护理站信息
     *
     * @param nurseItemCode 护理项目编号
     * @return com.xinyilu.base.domain.nursestationitem.NurseStationItem
     **/
    NurseStationItem getNurseItemCode(String nurseItemCode);

    /**
     * 根据护理站编号查询所有信息
     *
     * @param nurseStationCode 护理站编号
     * @return com.xinyilu.base.domain.nursestation.NurseStation
     **/
    NurseStation getNurseStationCode(String nurseStationCode);

    /**
     * 头像图片接口
     *
     * @param multipartFile 文件
     * @return com.xinyilu.common.core.domain.AjaxResult
     **/
    AjaxResult updateNurseStationHeads(MultipartFile multipartFile, String type) throws Exception;

    /**
     * 护理站信息导入
     *
     * @param nurseStation 护理站信息
     * @return int
     **/
    AjaxResult insertNurseStationImportList(List<NurseStationImportDTO> nurseStation);

    /**
     * 获取字典中的护理类型编码
     *
     * @param nurseStation 护理站字典信息
     * @return com.xinyilu.base.vo.nursestation.NurseStationVO
     **/
    List<NurseStationVO> getSysDictNurseTypeCode(NurseStationVO nurseStation);

    /**
     * 根据护理站类型编码查询护理站类型名称
     *
     * @param nurseTypeCode 护理站类型编码
     * @return java.util.List<com.xinyilu.base.domain.nursetype.NurseType>
     **/
    AjaxResult getNurseStationType(String nurseTypeCode);

    /**
     * 根据用户id查询护理站
     *
     * @param sysUser 用户信息
     * @return java.util.List<com.xinyilu.base.domain.nursestation.NurseStation>
     **/
    AjaxResult getNurseStationByUserId(NurseStationSysUserVO sysUser);

    /**
     * 根据护理站id查询护理站信息是否存在
     *
     * @param idList 护理站信息主键
     * @return 护理站信息
     */
    int getNurseStationById(List<Long> idList);

    /**
     * 护理站生成二维码
     *
     * @param nurseStationId 护理站id
     * @return 邀请码图片地址
     */
    AjaxResult nurseStationCode(Long nurseStationId);
}
