From 25df88d0ab9d7444ed1d162b9efa1259ac2f6f66 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 27 四月 2026 10:13:53 +0800
Subject: [PATCH] 小程序对接finish

---
 backend/src/main/resources/mapper/AppointmentOrderMapper.xml |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/backend/src/main/resources/mapper/AppointmentOrderMapper.xml b/backend/src/main/resources/mapper/AppointmentOrderMapper.xml
index 4cb7f84..a7fa458 100644
--- a/backend/src/main/resources/mapper/AppointmentOrderMapper.xml
+++ b/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>

--
Gitblit v1.7.1