package com.xinelu.familydoctor.applet.service;

import com.xinelu.familydoctor.applet.pojo.body.ApprovalBody;
import com.xinelu.familydoctor.applet.pojo.body.ResidentServiceApplyBody;
import com.xinelu.familydoctor.applet.pojo.query.ApplyQuery;
import com.xinelu.familydoctor.applet.pojo.vo.ResidentServiceApplyVo;
import com.xinelu.familydoctor.applet.pojo.vo.ScreeningProjectVo;

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

/*
 * @Author mengkuiliang
 * @Description 居民服务申请Service
 * @Date 2023-10-07 007 11:37
 * @Param
 * @return
 **/
public interface IResidentServiceAppletService {

    /**
     * 新增签约预约
     * @author lixinying
     * @param body:
     * @return Integer
     * @date 2022/11/21 9:38
     */
    void insert(ResidentServiceApplyBody body);
    /**
     * 取消
     * @author lixinying
     * @param bookingNo:
     * @return Integer
     * @date 2022/11/21 10:10
     */
    Integer delete(String bookingNo);
    /**
     * fd查找
     * @author lixinying
     * @param query:
     * @return List<FdSignBookingVo>
     * @date 2022/11/21 16:02
     */
    List<ResidentServiceApplyVo> findList(ApplyQuery query);

    /**
     * 修改审批
     * @author lixinying
     * @param body:
     * @return Integer
     * @date 2022/11/21 17:07
     */
    Integer updateFd(ApprovalBody body);

    /**
     * @Author mengkuiliang
     * @Description 查询签约申请记录
     * @Date 2022-11-22 10:56
     * @Param
     * @return
     **/
    ResidentServiceApplyVo getServiceBookingByIdentity(String identity);

    /**
     * @Author mengkuiliang
     * @Description 签约申请详情
     * @Date 2022-11-23 10:05
     * @Param [bookingNo]
     * @return java.lang.Object
     **/
    ResidentServiceApplyVo detail(String bookingNo);

    /**
     * @Author mengkuiliang
     * @Description 取消签约申请
     * @Date 2022-11-23 14:42
     * @Param [bookingNo]
     * @return void
     **/
    void cancel(String bookingNo);

    /**
     * @Author mengkuiliang
     * @Description 是否已申请签约
     * @Date 2022-11-30 9:48
     * @Param [identity]
     * @return java.lang.String
     **/
    Map<String, Object> checkServiceApply(String identity, String region);

    /**
     * @Author mengkuiliang
     * @Description 更新履约完成时间
     * @Date 2022-11-29 14:21
     * @Param [body]
     * @return void
     **/
    void updateComplete(String bookingNo);

    /**
     * @Author mengkuiliang
     * @Description 获取个性服务包和筛查项目
     * @Date 2023-10-09 009 10:54
     * @Param [identity]
     * @return java.lang.Object
     **/
    List<ScreeningProjectVo> getForm(String identity, String projectName, String region);

    /**
     * @Author mengkuiliang
     * @Description 服务记录列表
     * @Date 2023-10-13 013 13:41
     * @Param [query]
     * @return java.util.List<?>
     **/
    List<ResidentServiceApplyVo> record(ApplyQuery query);
}
