package cn.iocoder.yudao.module.system.service.biz;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.biz.vo.excel.*;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyCheckInRecordDO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyInfoDO;
import cn.iocoder.yudao.module.system.dal.dataobject.biz.MbtiRecordBO;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;


/**
 * 长者信息
 *
 */
public interface ElderlyInfoService {

    PageResult<ElderlyInfoDO> findPage(ElderlyInfoPageReqVO pageVO);

    PageResult<ElderlyCheckInRecordDO> elderlyCheckInRecordPage(ElderlyInfoPageReqVO pageVO);

    void addElder(ElderlyInfoDO elderlyInfo);

    List<ElderlyInfoDO> findAllList(Integer orgType);

    void update(ElderlyInfoDO elderlyInfo);

    void delete(Long id);

    ElderlyInfoDO findDetailById(Long id);

    void generateAdmissionAssessment(Long elderId);

    List<ElderlyInfoDO> getElderListByBuild(Long buildId, Long floorId, Long roomId, Long[] tenantIds);

    BpmCheckInRecordRespVO findBpmRecord(Long elderId);

    Map<String,Object> importElder(List<ElderlyImportExcelVO> dataList);

    ElderlyInfoDO selectByIdTenantIgnore(Long elderlyId);


    List<ElderlyInfoDO> queryUngroupedElderlyList(Integer orgType, Long tenantId);

    Map<String, Object> selectExportElderData(ElderlyInfoPageReqVO pageVO);

    CheckInRecordDetailRespVO getCheckInDetail(Long checkInRecordId);

    ElderlyHomeRespVO getElderlyInfoHomeData(ElderlyInfoHomeDataReqVO reqVO);

    ElderlyHomeRespVO getHomeDataElderlyPortrait(ElderlyInfoHomeDataReqVO reqVO);

    ElderlyHomeRespVO getHomeDataCheckInAnalysis(ElderlyInfoHomeDataReqVO reqVO);

    ElderlyVitalSignsStatisticsMainRespVO getElderlyVitalSigns(ElderlyVitalSignsMainPageReqVO reqVO);

    PageResult<ElderlyVitalSignsStatisticsTodayRespVO> getElderlyVitalSignsToday(ElderlyVitalSignsMainPageReqVO reqVO);

    void addElderlyAtHome(ElderlyInfoSaveReqVO reqVO);

    void updateElderlyAtHome(ElderlyInfoDO elderlyInfoDO);

    void enableOrDisabled(Long elderId, Integer status);

    void deleteElderlyAtHome(List<Long> ids);

    ElderlyInfoDO getElderlyAtHome(Long elderId);

    Map<String, Object> importKingdeeElderlyExcel(List<KingdeeElderlyExcelVO> list);

    /**
     * 根据金蝶客户Excel：客户名称匹配长者姓名，使用客户编码更新长者 kingdeeCustomerNumber
     */
    Map<String, Object> importKingdeeCustomerExcel(Long tenantId, List<KingdeeCustomerExcelVO> list);

    Map<String, Object> importElderFile(List<ElderlyFileImportExcelVO> dataList);

    Boolean saveResult(MbtiRecordBO reqVO);

    PageResult<MbtiRecordBO> findMbtiPage(MbtiRecordPageReqVO pageVO);

    List<GroupTenantRespVO> getGroupTenant(Long groupId);

    ElderlyHomeRespVO getTenantHomeData(ElderlyInfoHomeDataReqVO reqVO);

    String getMonitorUrl(Long tenantId);

    ElderlyWeeklyOperationSummaryRespVO getWeeklyOperationSummary(Long tenantId);

    InstitutionDashboardRespVO getInstitutionDashboard();

    void deleteElderlyAndRelatedData(Long id);

    String importCheckIn(List<ElderlyCheckInImportVO> list);
    String importDeposit(List<ElderlyDepositImportVO> list);
    String miniGetElderInfo(String elderName,Long tenantId);
}

