Эх сурвалжийг харах

fix(policy-fee): 修正销售总价查询逻辑和分组规则

- 调整查询顺序以先从第三方站点信息表开始关联
- 优化子查询以获取对应设备价格策略的唯一记录
- 修正连接条件,确保关联的记录均未被删除
- 修改分组依据为 tppi.start_time,去除 period_flag
- 保持结果按照 tppi.start_time 升序排序
SheepHy 10 цаг өмнө
parent
commit
43c5a76796

+ 14 - 6
src/main/resources/mapper/business/PolicyFeeMapper.xml

@@ -57,10 +57,18 @@
                 ),
                 4
             ) AS sale_total_price
-        FROM third_party_policy_info tppi
-        INNER JOIN third_party_equipment_price_policy tpepp ON tppi.price_policy_id = tpepp.id AND tpepp.is_deleted = 0
-        INNER JOIN third_party_connector_info tpci ON tpepp.connector_id = tpci.connector_id AND tpci.is_deleted = 0
-        INNER JOIN third_party_station_info tpsi ON tpci.station_id = tpsi.station_id AND tpsi.is_deleted = 0
+        FROM third_party_station_info tpsi
+        INNER JOIN third_party_connector_info tpci ON tpci.station_id = tpsi.station_id AND tpci.is_deleted = 0
+        INNER JOIN third_party_equipment_price_policy tpepp ON tpepp.connector_id = tpci.connector_id AND tpepp.is_deleted = 0
+            AND tpepp.id = (
+                SELECT tpepp2.id
+                FROM third_party_connector_info tpci2
+                INNER JOIN third_party_equipment_price_policy tpepp2 ON tpepp2.connector_id = tpci2.connector_id AND tpepp2.is_deleted = 0
+                INNER JOIN third_party_policy_info tppi2 ON tppi2.price_policy_id = tpepp2.id AND tppi2.is_deleted = 0
+                WHERE tpci2.station_id = tpsi.station_id AND tpci2.is_deleted = 0
+                LIMIT 1
+            )
+        INNER JOIN third_party_policy_info tppi ON tppi.price_policy_id = tpepp.id AND tppi.is_deleted = 0
         LEFT JOIN c_policy_fee pf ON pf.station_info_id = tpsi.id
             AND pf.start_time = tppi.start_time
             AND pf.is_deleted = 0
@@ -72,8 +80,8 @@
                 AND pf.third_party_id = #{thirdPartyId}
             </if>
         WHERE tpsi.id = #{stationId}
-            AND tppi.is_deleted = 0
-        GROUP BY tppi.start_time, tppi.period_flag
+            AND tpsi.is_deleted = 0
+        GROUP BY tppi.start_time
         ORDER BY tppi.start_time ASC
     </select>