package com.xinelu.manage.mapper.nursestation;


import com.xinelu.manage.domain.nursestation.NurseStation;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.domain.nursestationlabel.NurseStationLabel;
import com.xinelu.manage.domain.nursetype.NurseType;
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.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 护理站信息Mapper接口
 *
 * @author ljh
 * @date 2022-09-02
 */
public interface NurseStationMapper {
    /**
     * 查询护理站信息
     *
     * @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 nurseStationCode   护理站编码
     * @param nurseStationName   护理站名称
     * @return 列表信息
     */
    List<NurseStationByUserVO> selectNurseStationListByIds(@Param("nurseStationIdList") List<String> nurseStationIdList,
                                                           @Param("nurseStationCode") String nurseStationCode,
                                                           @Param("nurseStationName") String nurseStationName);

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

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

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

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

    /**
     * 修改护理站图片路径
     *
     * @param nurseStationCode  护理站编号
     * @param stationPictureUrl 护理站头像图片地址
     * @return int
     **/
    int updateNurseStationByHead(@Param("nurseStationCode") String nurseStationCode, @Param("stationPictureUrl") String stationPictureUrl);

    /**
     * 修改护理站简介图片路径
     *
     * @param nurseStationCode           护理站编号
     * @param stationIntroducePictureUrl 护理站图片路径
     * @return int
     **/
    int updateNurseStationIntroduceByHead(@Param("nurseStationCode") String nurseStationCode, @Param("stationIntroducePictureUrl") String stationIntroducePictureUrl);


    /**
     * 修改护理站项目头像图片
     *
     * @param nurseItemCode  护理项目编号
     * @param itemPictureUrl 护理项目图片地址
     * @return int
     **/
    int updateNurseStationItemByHead(@Param("nurseItemCode") String nurseItemCode, @Param("itemPictureUrl") String itemPictureUrl);


    /**
     * 根据护理项目编号查询护理站信息
     *
     * @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 nurseStationIdList 护理站信息
     * @return 护理站信息集合
     */
    List<NurseStation> selectNurseStationListByNames(@Param("nurseStationIdList") List<String> nurseStationIdList);

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

    /**
     * 查询护理站名称是否重复
     *
     * @param areaCode         所属区域编码
     * @param nurseStationName 护理站名称
     * @return int
     **/
    int getNurseStationName(@Param("areaCode") String areaCode, @Param("nurseStationName") String nurseStationName);

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


    /**
     * 根据护理站id删除护理站标签信息
     *
     * @param ids 需要删除的数据主键集合
     * @return int 结果
     **/
    int deleteNurseStationLabelByIds(Long[] ids);


    /**
     * 根据护理站id查询护理站标签信息
     *
     * @param ids 护理站id
     * @return int  id
     **/
    int selectNurseStationLabelByIds(Long[] ids);


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


    /**
     * 查询护理站标签信息
     *
     * @param nurseStationId 护理站信息主键
     * @return 护理站标签信息
     */
    List<NurseStationLabel> selectStationLabelByStationId(Long nurseStationId);

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

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

    /**
     * 查询所有的护理站列表信息
     *
     * @param nurseStationNames 护理站名称集合
     * @return 列表集合信息
     */
    List<NurseStationImportDTO> getAllNurseStationInfo(@Param("nurseStationNameList") List<String> nurseStationNames);

    /**
     * 根据护理站id查询护理站信息是否存在
     *
     * @param idList 护理站id
     * @return 护理站个数
     */
    int getNurseStationCount(@Param("idList") List<Long> idList);

    /**
     * 根据id查询护理站表信息
     *
     * @param stationId 护理站id
     * @return 护理站信息
     */
    NurseStation getNurseStationById(Long stationId);

    /**
     * 修改机构二维码地址信息
     *
     * @param stationId            机构id
     * @param stationWeChatCodeUrl 机构二维码地址
     * @return 数量
     */
    int updateStationWeChatCodeUrl(@Param("stationId") Long stationId, @Param("stationWeChatCodeUrl") String stationWeChatCodeUrl);
}
