<?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="com.casic.missiles.mapper.meter.MeterFileMapper">

    <select id="selectMaxFileNo" resultType="java.lang.Long">
        SELECT IFNULL(max(RIGHT(file_no, 12)), 0) from meter_file
    </select>

    <update id="updateEffectiveStatusByTime">
        UPDATE meter_file
        SET effective_status =
        CASE
            WHEN DATE_FORMAT(NOW(), '%Y-%m-%d') &lt; DATE_FORMAT(effectiveTime, '%Y-%m-%d') THEN 2
            WHEN DATE_FORMAT(NOW(), '%Y-%m-%d') &gt;= DATE_FORMAT(effectiveTime, '%Y-%m-%d') THEN 1
            ELSE effective_status
        END
        WHERE effective_status &lt;&gt; 3
    </update>

    <select id="selectApprovalList" resultType="com.casic.missiles.dto.meter.FileApprovalListResponse">
        SELECT id, file_no, file_name, file_code, file_type, publish_time, publisher, effective_time, effective_status,
        create_user, minio_file_name, remark, approval_status, create_time
        FROM meter_file
        WHERE is_del = 0
        <if test="request.approvalStatus != null and request.approvalStatus !=''">
            and approval_status = #{request.approvalStatus}
        </if>
        <if test="request.fileNo != null and request.fileNo !=''">
            and file_no like concat('%',#{request.fileNo},'%')
        </if>
        <if test="request.fileName != null and request.fileName !=''">
            and file_name like concat('%',#{request.fileName},'%')
        </if>
        <if test="request.fileCode != null and request.fileCode !=''">
            and file_code like concat('%',#{request.fileCode},'%')
        </if>
        <if test="request.fileType != null and request.fileType !=''">
            and file_type = #{request.fileType}
        </if>
        <if test="request.createUser != null and request.createUser !=''">
            and create_user like concat('%',#{request.createUser},'%')
        </if>
        <if test="request.createTime != null and request.createTime !=''">
            and create_time &lt;= #{request.createTime}
        </if>
        <if test="request.createUserId != null and request.createUserId !=''">
            and create_user_id = #{request.createUserId}
        </if>
    </select>

    <select id="selectDraftListForApproval" resultType="com.casic.missiles.model.meter.MeterFile">
        SELECT *
        FROM meter_file
        WHERE is_del = 0
        AND approval_status = #{request.approvalStatus}
        AND create_user_id = #{request.createUserId}
        <if test="request.fileNo != null and request.fileNo !=''">
            and file_no like concat('%',#{request.fileNo},'%')
        </if>
        <if test="request.fileName != null and request.fileName !=''">
            and file_name like concat('%',#{request.fileName},'%')
        </if>
        <if test="request.fileCode != null and request.fileCode !=''">
            and file_code like concat('%',#{request.fileCode},'%')
        </if>
        <if test="request.fileType != null and request.fileType !=''">
            and file_type = #{request.fileType}
        </if>
        <if test="request.createUser != null and request.createUser !=''">
            and create_user like concat('%',#{request.createUser},'%')
        </if>
        <if test="request.createStartTime != null and request.createStartTime !=''">
            and create_time &gt;= #{request.createStartTime}
        </if>
        <if test="request.createEndTime != null and request.createEndTime !=''">
            and create_time &lt;= #{request.createEndTime}
        </if>
        ORDER BY create_time DESC
    </select>

    <select id="selectBatchForApproval" resultType="com.casic.missiles.model.meter.MeterFile">
        SELECT *
        FROM meter_file
        WHERE is_del = 0
        <if test="request.fileNo != null and request.fileNo !=''">
            and file_no like concat('%',#{request.fileNo},'%')
        </if>
        <if test="request.fileName != null and request.fileName !=''">
            and file_name like concat('%',#{request.fileName},'%')
        </if>
        <if test="request.fileCode != null and request.fileCode !=''">
            and file_code like concat('%',#{request.fileCode},'%')
        </if>
        <if test="request.fileType != null and request.fileType !=''">
            and file_type = #{request.fileType}
        </if>
        <if test="request.createUser != null and request.createUser !=''">
            and create_user like concat('%',#{request.createUser},'%')
        </if>
        <if test="request.createStartTime != null and request.createStartTime !=''">
            and create_time &gt;= #{request.createStartTime}
        </if>
        <if test="request.createEndTime != null and request.createEndTime !=''">
            and create_time &lt;= #{request.createEndTime}
        </if>
        and id in
        <foreach collection="businessKey" item="id" index="index" open="(" close=")" separator=",">
            #{id}
        </foreach>
        ORDER BY create_time DESC
    </select>

</mapper>
