package cn.iocoder.yudao.module.system.api.bpm;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.api.bpm.vo.*;

import java.time.LocalDate;

/**
 * @Author: jinyd
 * @CreateTime: 2024/8/7  10:00
 * @Description: Bpm事件 API 接口
 * @Version: 4.0
 */
public interface BpmElderlyApi {

    /**
     * 入住接口
     * @param elderId
     */
    void generateAdmissionAssessment(Long elderId, Long startTenantId);


    Long addElder(ElderlyInfoReqVO elderlyInfo);

    void update(ElderlyInfoReqVO elderlyInfo);

    ElderlyInfoReqVO getElderlyInfo(Long id);

    ElderlyInfoReqVO getElderlyInfoByRetreatId(Long id);

    Long addElderlyRetreatRecord(ElderlyRetreatRecordRespVO elderlyRetreatRecord);

    void updateElderlyRetreatRecord(ElderlyRetreatRecordRespVO elderlyRetreatRecord);


    PageResult<ElderlyCheckinInfoRespVO> getCheckinRecordPage(ElderlyCheckinRecordPageReqVO pageReqVO);
    /**
     * 获得长者退住申请记录分页
     *
     * @param pageReqVO 分页查询
     * @return 长者退住申请记录分页
     */
    PageResult<ElderlyRetreatRecordRespVO> getRetreatRecordPage(ElderlyRetreatRecordPageReqApiVO pageReqVO);


    void deleteElderlyRetreatRecord(Long id);

    void releaseBed(Long retreatRecordId);

    void delectRetreatRecordByElderId(Long elderId, Integer orgType, Long tenantId);

    Long generateApplyAccommodationData(Long elderId, Long startTenantId);


    String selectUnprocessedBills(Long elderlyId, LocalDate costDeadlineDate);

    Boolean checkElderExist(String idCard);
}
