longz
2026-04-27 25df88d0ab9d7444ed1d162b9efa1259ac2f6f66
backend/src/main/resources/mapper/AppointmentOrderMapper.xml
@@ -114,6 +114,15 @@
        WHERE o.del_flag = 0
          AND o.status = 'APPROVED'
          AND o.visited_user_id = #{visitedUserId}
        <if test="futureOnly">
            AND (
                CASE
                    WHEN o.visit_time_mode = 'SINGLE' AND o.visit_time_slot = 'PM'
                        THEN TIMESTAMP(o.visit_start_date, '12:00:00')
                    ELSE TIMESTAMP(o.visit_end_date, '23:59:59')
                END
            ) &gt; NOW()
        </if>
        <if test="visitDate != null">
            AND o.visit_start_date IS NOT NULL
            AND o.visit_end_date IS NOT NULL
@@ -148,6 +157,7 @@
              AND bvr.reason_code = o.visit_reason_code
        WHERE o.del_flag = 0
          AND o.submitter_id = #{submitterId}
          AND o.submitter_visible_flag = 1
        <if test="status != null and status != ''">
            <choose>
                <when test="status == 'PENDING_VISIT'">
@@ -189,4 +199,34 @@
        ORDER BY o.create_time DESC, o.id DESC
    </select>
    <select id="selectMiniVisibleOrderById" resultType="com.sinata.appointment.entity.AppointmentOrder">
        SELECT o.*
        FROM appointment_order o
        WHERE o.del_flag = 0
          AND o.id = #{id}
          AND o.submitter_id = #{submitterId}
          AND o.submitter_visible_flag = 1
        LIMIT 1
    </select>
    <select id="listDashboardTrend" resultType="com.sinata.appointment.dto.DashboardTrendPointVo">
        SELECT DATE(o.create_time) AS statDate,
               COUNT(*) AS appointmentCount,
               0 AS inProgressCount,
               SUM(CASE WHEN o.status = 'REJECTED' THEN 1 ELSE 0 END) AS rejectedCount,
               SUM(CASE WHEN o.status = 'CANCELLED' THEN 1 ELSE 0 END) AS cancelledCount
        FROM appointment_order o
        WHERE o.del_flag = 0
          AND o.create_time <![CDATA[>=]]> CONCAT(#{startDate}, ' 00:00:00')
          AND o.create_time <![CDATA[<]]> DATE_ADD(CONCAT(#{endDate}, ' 00:00:00'), INTERVAL 1 DAY)
        <if test="deptIds != null and deptIds.size() > 0">
            AND o.visited_dept_id IN
            <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
                #{deptId}
            </foreach>
        </if>
        GROUP BY DATE(o.create_time)
        ORDER BY DATE(o.create_time)
    </select>
</mapper>