优化结算区间费用查询 SQL 条件
- 将时间比较逻辑从 BETWEEN改为 >= 和 <= 操作符 - 使用 DATE() 函数提取日期进行比较,确保时间比较的准确性 - 简化跨区间租赁条件,提高 SQL 可读性
This commit is contained in:
parent
9662ab772d
commit
a6c49841f1
|
|
@ -1197,33 +1197,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<!-- 已结算协议:租赁期间与查询区间有交集 -->
|
||||
(bai.is_slt = 1 AND (
|
||||
<!-- 情况1:领料时间在查询区间内 -->
|
||||
(sai.start_time IS NOT NULL AND sai.start_time BETWEEN #{startDate} AND #{endDate})
|
||||
(sai.start_time IS NOT NULL AND DATE(sai.start_time) >= #{startDate} AND DATE(sai.start_time) <= #{endDate})
|
||||
OR
|
||||
<!-- 情况2:退料时间在查询区间内 -->
|
||||
(sai.end_time IS NOT NULL AND sai.end_time BETWEEN #{startDate} AND #{endDate})
|
||||
(sai.end_time IS NOT NULL AND DATE(sai.end_time) >= #{startDate} AND DATE(sai.end_time) <= #{endDate})
|
||||
OR
|
||||
<!-- 情况3:结算时间在查询区间内 -->
|
||||
(sai.slt_time IS NOT NULL AND sai.slt_time BETWEEN #{startDate} AND #{endDate})
|
||||
(sai.slt_time IS NOT NULL AND DATE(sai.slt_time) >= #{startDate} AND DATE(sai.slt_time) <= #{endDate})
|
||||
OR
|
||||
<!-- 情况4:跨区间租赁(领料在区间前,退料/结算在区间后) -->
|
||||
(sai.start_time IS NOT NULL AND sai.start_time < #{startDate} AND
|
||||
((sai.end_time IS NOT NULL AND sai.end_time > #{endDate}) OR
|
||||
(sai.slt_time IS NOT NULL AND sai.slt_time > #{endDate})))
|
||||
(sai.start_time IS NOT NULL AND DATE(sai.start_time) < #{startDate} AND
|
||||
((sai.end_time IS NOT NULL AND DATE(sai.end_time) > #{endDate}) OR (sai.slt_time IS NOT NULL AND DATE(sai.slt_time) > #{endDate})))
|
||||
))
|
||||
OR
|
||||
<!-- 未结算协议:租赁期间与查询区间有交集 -->
|
||||
((bai.is_slt = 0 OR bai.is_slt IS NULL) AND (
|
||||
<!-- 情况1:领料时间在查询区间内 -->
|
||||
(sai.start_time IS NOT NULL AND sai.start_time BETWEEN #{startDate} AND #{endDate})
|
||||
(sai.start_time IS NOT NULL AND DATE(sai.start_time) >= #{startDate} AND DATE(sai.start_time) <= #{endDate})
|
||||
OR
|
||||
<!-- 情况2:退料时间在查询区间内 -->
|
||||
(sai.end_time IS NOT NULL AND sai.end_time BETWEEN #{startDate} AND #{endDate})
|
||||
(sai.end_time IS NOT NULL AND DATE(sai.end_time) >= #{startDate} AND DATE(sai.end_time) <= #{endDate})
|
||||
OR
|
||||
<!-- 情况3:跨区间租赁(领料在区间前,退料在区间后或未退料) -->
|
||||
(sai.start_time IS NOT NULL AND sai.start_time < #{startDate} AND (sai.end_time IS NULL OR sai.end_time > #{endDate}))
|
||||
(sai.start_time IS NOT NULL AND DATE(sai.start_time) < #{startDate} AND (sai.end_time IS NULL OR DATE(sai.end_time) > #{endDate}))
|
||||
OR
|
||||
<!-- 情况4:设备状态为在用(未退料)且领料时间不晚于查询结束时间 -->
|
||||
(sai.status = '0' AND sai.start_time IS NOT NULL AND sai.start_time <= #{endDate})
|
||||
(sai.status = '0' AND sai.start_time IS NOT NULL AND DATE(sai.start_time) <= #{endDate})
|
||||
))
|
||||
)
|
||||
</where>
|
||||
|
|
|
|||
Loading…
Reference in New Issue