<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.biz.ElderlyContractMapper">

    <!--
        一般情况下，尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景，例如说多表关联查询，才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身，更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见：https://www.iocoder.cn/MyBatis/x-plugins/
     -->
    <select id="findPage" resultType="cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO">
        select ec.*,ei.in_status_type from elderly_contract ec left join elderly_info ei on ei.id = ec.elder_id
        left join system_tenant st on st.id = ec.tenant_id
        <where>
            <if test="params.elderName != null and params.elderName != ''">
                and ei.elder_name like concat('%',#{params.elderName} ,'%')
            </if>
            <if test="params.type != null and params.type != ''">
                and ec.status = #{params.type}
            </if>
            <if test="params.inStatusType != null">
                and ei.in_status_type = #{params.inStatusType}
            </if>
            <if test="params.orgType != null">
                and ei.org_type = #{params.orgType}
            </if>
            <if test="params.tenantIds != null">
                and ei.tenant_id in
                <foreach item="id" collection="params.tenantIds" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
        </where>
    </select>

    <select id="selectMessageList" resultType="cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO">
        SELECT
            ec.elder_id,
            ec.elder_name,
            ec.expire_time
        FROM
            elderly_contract ec
                INNER JOIN elderly_info ei ON ec.elder_id = ei.id
        WHERE
            ei.in_status = 1
          AND ec.STATUS = 1
        GROUP BY
            ec.elder_id,
            ec.elder_name,
            ec.expire_time
    </select>

    <select id="selectInProgressByElderIds" resultType="cn.iocoder.yudao.module.system.dal.dataobject.biz.ElderlyContractDO">
        SELECT ec.*
        FROM elderly_contract ec
        WHERE ec.status = 1
          AND ec.elder_id IN
            <foreach item="id" collection="elderIds" open="(" separator="," close=")">
                #{id}
            </foreach>
        ORDER BY ec.elder_id ASC, ec.created_time DESC, ec.id DESC
    </select>

    <update id="batchUpdateStatusToNotStarted">
        UPDATE elderly_contract
        SET status = 2
        WHERE status = 1
          AND tenant_id = #{tenantId}
          AND DATE(begin_time) &gt; DATE(#{nowDate})
    </update>

    <update id="batchUpdateStatusToExpired">
        UPDATE elderly_contract
        SET status = 0
        WHERE status = 1
          AND tenant_id = #{tenantId}
          AND DATE(expire_time) &lt; DATE(#{nowDate})
    </update>

</mapper>
