package com.xinelu.applet.mapper.nearbynursingstation;

import com.xinelu.applet.dto.nursestation.NurseStationAppletDTO;
import com.xinelu.applet.vo.goodinfo.GoodInfoAndItemVO;
import com.xinelu.applet.vo.nearbynursingstation.*;
import com.xinelu.applet.vo.nurseclassifyinfo.NurseClassifyInfoList;
import com.xinelu.applet.vo.specialdisease.StationClassifyInfoVO;
import com.xinelu.manage.domain.nurseclassifyinfo.NurseClassifyInfo;
import com.xinelu.manage.domain.nursestationlabel.NurseStationLabel;
import com.xinelu.manage.domain.nursestationperson.NurseStationPerson;
import com.xinelu.manage.domain.nursetype.NurseType;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 护理站信息Mapper接口
 *
 * @author ljh
 * @date 2022-09-02
 */
public interface NearbyNursingStationMapper {


    /**
     * 首页咨询信息列表集合
     *
     * @param informationCategoryType 资讯类型
     * @return java.util.List<com.xinyilu.nurseapplet.domain.nearbynursingstation.InformationCategoryVO>
     **/
    List<InformationCategoryVO> getInformationCategoryList(String informationCategoryType);

    /**
     * 首页海报查询
     *
     * @param poserInfo 海报信息
     * @return java.util.List<com.xinyilu.base.domain.poserInfo.PoserInfo>
     **/
    List<PoserInfoHomeVO> getHomePagePoserInfoList(PoserInfoHomeVO poserInfo);


    /**
     * 获取附近护理站详细信息对象集合
     *
     * @param dto 搜索参数
     * @return java.util.List<com.xinyilu.nurseapplet.domain.nearbynursingstation.NearbyNursingStationVO>
     **/
    List<NursingStationAndClassifyVO> selectNursingStationIntroductionList(@Param("dto") NurseStationAppletDTO dto);

    /**
     * 获取附近本护理站详细信息项目对象集合
     *
     * @param nurseStationId 护理站id
     * @return java.util.List<com.xinyilu.nurseapplet.domain.nearbynursingstation.NearbyNursingStationItem>
     **/
    List<NearbyNursingStationItem> getNurseItemList(Long nurseStationId);

    /**
     * 获取附近本护理站人员信息集合
     *
     * @param nurseStationId 护理站id
     * @return java.util.List<com.xinyilu.base.domain.nursestationperson.NurseStationPerson>
     **/
    List<NurseStationPerson> getNursePersonList(Long nurseStationId);

    /**
     * 获取附近本护理站人员标签信息集合
     *
     * @param nurseStationIdList 护理站id集合
     * @return java.util.List<com.xinyilu.base.domain.nursestationlabel.NurseStationLabel>
     **/
    List<NurseStationLabel> getNurseStationLabelByList(@Param("nurseStationIdList") List<Long> nurseStationIdList);

    /**
     * 查询护理类型信息列表
     *
     * @return 护理类型信息集合
     */
    List<NurseType> selectNurseTypeList();

    /**
     * 获取附近护理站和护理站标签信息集合
     *
     * @param nurseStationId 护理站id
     * @return java.util.List<com.xinyilu.nurseapplet.domain.nearbynursingstation.NearbyNursingStationVO>
     **/
    NearbyNursingStationVO selectNursingStationIntroductionListTwo(@Param("nurseStationId") Long nurseStationId);

    /**
     * 获取附近本护理站产品信息项目对象集合
     *
     * @param nurseStationId 护理站id
     * @return java.util.List<GoodInfoAndItemVO>
     **/
    List<GoodInfoAndItemVO> getNurseGoodsList(Long nurseStationId);

    /**
     * 获取附近本护理站产品信息项目对象集合
     *
     * @param nurseStationId      护理站id
     * @param nurseClassifyInfoId 护理项目所属分类id
     * @param shelfStatus         上架状态
     * @return java.util.List<GoodInfoAndItemVO>
     **/
    List<GoodInfoAndItemVO> getNurseStationItemList(@Param("nurseStationId") Long nurseStationId, @Param("nurseClassifyInfoId") Long nurseClassifyInfoId, @Param("shelfStatus") String shelfStatus);

    /**
     * 查询护理项目分类信息列表
     *
     * @param nurseClassifyInfo 护理机构和护理项目分类信息
     * @return 护理机构和护理项目分类信息集合
     */
    List<NurseClassifyInfoList> getNurseClassifyList(NurseClassifyInfoList nurseClassifyInfo);


    /**
     * 获取护理站信息对象列表集合
     *
     * @param nearbyNursingStationVO 护理站信息对象列表集合
     * @return java.util.List<com.xinyilu.nurseapplet.domain.nearbynursingstation.NearbyNursingStationVO>
     **/
    List<NearbyNursingStationVO> getNursingStationIntroductionList(NearbyNursingStationVO nearbyNursingStationVO);

    /**
     * 获取附近本护理站项目分类信息集合
     *
     * @param nurseStationIdList 护理站id集合
     * @return java.util.List<com.xinyilu.base.domain.nursestationlabel.NurseStationLabel>
     **/
    List<NurseStationClassifyVO> getNurseStationClassifyByList(@Param("nurseStationIdList") List<Long> nurseStationIdList);

    /**
     * 根据护理分类所属类型查询
     *
     * @param classifyType 分类所属类型
     * @return List<NurseClassifyInfo>
     */
    List<NurseClassifyInfo> selectNurseClassifyByClassifyType(String classifyType);

    /**
     * 根据护理站id查询对应得护理项目分类集合信息
     *
     * @param nurseStationIdList 护理站id集合
     * @return 分类信息集合
     */
    List<StationClassifyInfoVO> getStationClassifyInfoList(@Param("nurseStationIdList") List<Long> nurseStationIdList);
}