puzhibing
2026-04-24 fdf8c19224d67e94a4404388359db4b4ee348a5d
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
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.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> {
 
    /**
     * 新增点位并根据规则生成点位编号
     */
    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);
 
 
    /**
     * 判断点位是否时间段内
     * @param now
     * @return
     */
    boolean getInTime(LocalTime now,  Integer effectivePeriod, String effectiveTimePeriod);
    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();
 
 
    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);
}