liujie
2026-05-12 560be817c1342d4da523760ba38433c4c0f52983
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.xiaopeng.map.service;
 
 
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.operation.PointAddDto;
import com.xiaopeng.api.dto.operation.PointMapQuery;
import com.xiaopeng.api.dto.operation.PointUpdateDto;
import com.xiaopeng.api.dto.order.HistoryEndPointsDto;
import com.xiaopeng.api.dto.order.HistoryStartPointsDto;
import com.xiaopeng.api.model.operation.XpPoint;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo;
import com.xiaopeng.api.vo.order.XpHistoryStartPointsVo;
import com.xiaopeng.api.vo.order.XpPointsSearchVo;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.map.dto.NearestDto;
import com.xiaopeng.map.dto.StationDetailQueryDto;
import com.xiaopeng.map.query.PointByNameQuery;
import com.xiaopeng.api.query.operation.FenceAndStationVo;
import com.xiaopeng.map.vo.NearestVo;
import com.xiaopeng.map.vo.OrderDistanceVo;
import com.xiaopeng.map.vo.StationDetailVo;
import org.springframework.transaction.annotation.Transactional;
 
import javax.validation.Valid;
import java.time.LocalTime;
import java.util.List;
import java.util.Set;
 
/**
 * <p>
 * 点位管理 服务类
 * </p>
 *
 * @author liu
 * @author WuGuanFengYue
 * @since 2026-02-03
 */
public interface XpPointService extends IService<XpPoint> {
 
    void validateAdd(PointAddDto dto);
 
    void validateUpdate(PointUpdateDto dto);
 
    /**
     * 新增点位并根据规则生成点位编号
     */
    XpPoint addPointWithGeneratedNumber(@Valid PointAddDto pointAddDto);
 
 
    @Transactional
    void setStationSortNo(Long stationId, Integer stationSortNo);
 
    String getPointNumber(Long electronicAreaId);
 
    /**
     * 校验点位名称唯一
     */
    void validatePointNameUnique(String pointName, Long excludeId);
 
    /**
     * 获取附近上车站点
     */
    NearestVo nearest(@Valid NearestDto dto);
 
    /**
     * 根据场站查询场站详情及所属点位。
     * 仅返回当前时段、当前运营状态下可展示的场站与子点位数据。
     */
    StationDetailVo queryStationDetail(@Valid StationDetailQueryDto dto, String uid);
 
 
    List<XpPoint> pointMap(PointMapQuery query);
 
    List<FenceAndStationVo> findListFenceAndStation(String cityCode);
 
    List<XpPoint> findList(PointListQuery query);
 
    List<XpPoint> listAll(PointListQuery query);
 
 
    /**
     * 获取历史上车站点
     * @param historyStartPointsDto
     * @return
     */
    List<XpHistoryStartPointsVo> getHistoryStartPoints(HistoryStartPointsDto historyStartPointsDto);
 
 
    /**
     * 获取历史上车站点
     * @param historyEndPointsDto
     * @return
     */
    List<XpHistoryEndPointsVo> getHistoryEndPoints(HistoryEndPointsDto historyEndPointsDto);
 
 
    /**
     * 根据名称获取点位列表
     * @param query
     * @return
     */
    XpPointsSearchVo queryPointByName(@Valid PointByNameQuery query);
 
 
    /**
     * 获取可下单距离
     * @return
     */
    OrderDistanceVo getOrderDistance();
 
 
    List<XpPoint> pageList(PageInfo<XpPoint> pageInfo, PointPageListListQuery query);
 
    PageInfo<XpPoint> pageList(PointPageListListQuery query);
 
    Set<Long> getCollectStationIds(String uid);
 
    List<XpPoint> listByStationId(Long stationId);
 
    @Transactional(rollbackFor = Exception.class)
    void clearStationInfoByStationId(Long stationId);
 
    @Transactional(rollbackFor = Exception.class)
    void statusStopByStationId(Long stationId, Boolean pointStop);
 
    @Transactional(rollbackFor = Exception.class)
    void statusEnableByStationId(Long stationId);
 
    @Transactional(rollbackFor = Exception.class)
    void pointDeleteByStationId(Long stationId, Boolean pointDelete);
 
 
    void setStatusFailure(List<Long> electronicAreaIds);
}