yxh
7 天以前 68ff33beff11310e830b0615b5a81f83fad0f683
jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devrent/DevRentMapper.java
@@ -6,10 +6,8 @@
import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX;
import cn.lihu.jh.module.ecg.dal.dataobject.devrent.DevRentDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.*;
import cn.lihu.jh.module.ecg.controller.admin.devrent.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
 * 装机拆机 Mapper
@@ -21,6 +19,7 @@
    default PageResult<DevRentDO> selectPage(DevRentPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<DevRentDO>()
                .gtIfPresent(DevRentDO::getState, reqVO.getState())
                .eqIfPresent(DevRentDO::getDevId, reqVO.getDevId())
                .eqIfPresent(DevRentDO::getPatId, reqVO.getPatId())
                .likeIfPresent(DevRentDO::getPatName, reqVO.getPatName())
@@ -34,6 +33,86 @@
                .orderByDesc(DevRentDO::getId));
    }
    DevRentDO getLatestRent(DevRentSearchReqVO reqVO );
    @Select("<script> " +
            "SELECT * FROM lihu.dev_rent " +
            "<where> " +
            "  <if test='stateList != null'> " +
            "    and state in ( " +
            "      <foreach collection='stateList' separator=',' item='state'> " +
            "        #{state} " +
            "      </foreach> ) " +
            "  </if> " +
            "  <if test=\"devId != null and devId != ''\"> " +
            "    and dev_id = #{devId} " +
            "  </if> " +
            "  <if test=\"patId != null and patId != ''\"> " +
            "    and pat_id = #{patId} " +
            "  </if> " +
            "  <if test=\"checkType != null \"> " +
            "    and check_type = #{checkType} " +
            "  </if> " +
            "</where> " +
            "order by create_time desc " +
            "limit 1 " +
            "</script>")
    @Results({
            @Result(property = "patDetails", column = "pat_details", typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    })
    DevRentDO getRentByState(DevRentSearchReqVO reqVO );
    @Select("select * from lihu.dev_rent where state=#{state} and pat_id=#{patId} and check_type=#{checkType} and to_days(create_time)=to_days(now())")
    List<DevRentDO> selectByPatAndChecktypeAndState(@Param("patId") String patId, @Param("checkType") Integer checkType, @Param("state") Integer state);
    /**
     * 该患者 + 检查项目、**今日**、状态在给定集合里的**最近一条**检查单。
     *
     * <p>两处用途:
     * <ol>
     *   <li>【撤销回滚】撤销「检查完成」时,把 60(常规检查完成) 的单找出来回滚成 0(待检查);</li>
     *   <li>【完成兜底】再次完成时若找不到「待检查(0)」的单,用最近一条 60/50 的单兜底复用,
     *       避免直接报「请先预约确认」。</li>
     * </ol>
     */
    @Select("<script>" +
            "select * from lihu.dev_rent where pat_id=#{patId} and check_type=#{checkType} " +
            "  and to_days(create_time)=to_days(now()) and state in ( " +
            "   <foreach collection='stateList' separator=',' item='state'>#{state}</foreach> ) " +
            " order by id desc limit 1" +
            "</script>")
    @Results({
            @Result(property = "patDetails", column = "pat_details", typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    })
    DevRentDO selectLatestByPatCheckTypeStates(@Param("patId") String patId, @Param("checkType") Integer checkType,
                                               @Param("stateList") List<Integer> stateList);
    @Select("<script>" +
            "SELECT paid FROM lihu.dev_rent " +
            "where id in (" +
            " <foreach collection='rentIdList' separator=',' item='rentId'>" +
            "  #{rentId} " +
            " </foreach> )" +
            "</script>")
    List<Integer> getPaidInfo(@Param("rentIdList")List<Long> rentIdList);
    @Update("update lihu.dev_rent set paid = #{paid} where id = #{rentId};")
    Integer setPaid(@Param("rentId") Long rentId, @Param("paid") Integer paid);
    /**
     * 【需求1】按 id 批量取「id + apply_no」。
     * <p>
     * 用途:作业记录列表页回填患者信息时需要 `job_record.rentId → dev_rent.applyNo`。
     * 原先用 {@code selectById} 逐条取(N 次查询),本方法改为一次 IN 查询。
     * <p>
     * 刻意**只取两列**而非 `SELECT *`:dev_rent 含 `pat_details` 等 JSON 大字段,
     * 回填只需 applyNo,没必要把整个 DO 拉回来。
     *
     * @param rentIdList 租赁 id 列表(调用方需保证非空,MySQL 的 IN () 会语法错误)
     */
    @Select("<script>" +
            "SELECT id, apply_no FROM lihu.dev_rent WHERE id IN (" +
            " <foreach collection='rentIdList' separator=',' item='rentId'>" +
            "  #{rentId} " +
            " </foreach> )" +
            "</script>")
    List<DevRentDO> getApplyNoByIdList(@Param("rentIdList") List<Long> rentIdList);
}