package com.emr.dao.approve;

import com.emr.entity.approve.Emr_Apply_Approve;
import com.emr.vo.ApplyStateVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface Emr_Apply_ApproveMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Emr_Apply_Approve record);

    int insertSelective(Emr_Apply_Approve record);

    Emr_Apply_Approve selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Emr_Apply_Approve record);

    int updateByPrimaryKey(Emr_Apply_Approve record);
    /**
     * 根据用户获取审批通过且未过期的patientId集合,type=1借阅申请，type=2下载申请
     * */
    List<Emr_Apply_Approve> selectPatientIdsByUser(@Param("userName")String userName,@Param("patientId")String patientId,@Param("type")int type);
    /**
     * 根据用户确认提交且未过期的patientId集合
     * */
    List<Emr_Apply_Approve> selectPatientIdsByUserAndApplyStatus(@Param("userName")String userName,@Param("patientId")String patientId,@Param("applyType")String applyType);
    /**
     * 根据用户获取保存未提交的patientId集合
     * */
    List<Emr_Apply_Approve> selectNotSumbitPatientIdsByUser(@Param("userName")String userName,@Param("patientId")String patientId,@Param("type")Short type);
    /**
     * 根据用户获取全部
     * */
    List<Emr_Apply_Approve> selectAllApproveByCreater(@Param("applyers") String applyers, @Param("record") Emr_Apply_Approve record, @Param("startTime1")String startTime1, @Param("endTime1")String endTime1,@Param("startTime2")String startTime2, @Param("endTime2")String endTime2);

    /**
     * 根据用户获取全部
     * */
    List<Emr_Apply_Approve> selectAllApprove(@Param("userIds") String userIds, @Param("record") Emr_Apply_Approve record, @Param("startTime1")String startTime1, @Param("endTime1")String endTime1,@Param("startTime2")String startTime2, @Param("endTime2")String endTime2);
    /**
     * 根据id查询包括患者姓名的申请对象
     * */
    List<Emr_Apply_Approve> selectApproveById(@Param("creater")String creater,@Param("id")Integer id);
    /**
     * 根据id集合查询
     * */
    List<Emr_Apply_Approve> selectAllByIds(@Param("checks")String checks);
    /**
     * 批量添加
     * */
     int SimpleInsert(List<Emr_Apply_Approve> list);
    /**
     * 查询是否有权限，（查看或下载权限）未过期且审核通过的记录
     * */
     int selectIsPowerByUser(@Param("userName")String userName,@Param("patientId")String patientId,
                             @Param("applyType")Integer applyType);

     /**
      * 批量更新
      * */
     int SimpleUpdate(@Param("record")Emr_Apply_Approve record,@Param("idsStr")String idsStr);

    /**
     * 查询审批通过的记录
     * @return
     */
     List<Emr_Apply_Approve> selectCountByApproveState();

    /**
     * 查询未审批的记录
     * @return
     */
     List<Emr_Apply_Approve> selectCountByApproveStateIsNull();

    /**
     * 查询接口借阅申请
     * @param userName
     * @param patientId
     * @return
     */
     Emr_Apply_Approve selectByApplyerAndPatientId(@Param("userName")String userName,@Param("patientId")String patientId);

    List<String>expireTime(@Param("currentTime") String currentTime,@Param("effeDays") int effeDays);

    /**
     * @description: 根据住院号修改归还状态
     * @author linjj
     * @date: 2023/12/27 17:14
     */
    int UpdateReturnState(@Param("id") String id, @Param("returnName")String returnName, @Param("returnTime")String returnTime,
                          @Param("returnNameString")String returnNameString);
    /**
     * @description: 查询是否有需要归还病历
     * @author linjj
     * @date: 2023/12/28 16:11
     */
    List<ApplyStateVo> getReturnState(@Param("inpNo") String inpNo, @Param("visitId") String visitId, @Param("userName")String userName);
    /**
     * @description: 快速借阅查收是否存在
     * @params:
     * @return:
     * @author linjj
     * @date: 2023/12/29 10:20
     */
    List<Emr_Apply_Approve> getApproverState(@Param("inpNo") String inpNo, @Param("visitId") String visitId, @Param("userName")String userName);
}