liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
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
package com.xiaopeng.map.service;
 
 
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.dto.operation.ElectronicFenceAddDto;
import com.xiaopeng.api.dto.operation.ElectronicFenceUpdateDto;
import com.xiaopeng.api.model.operation.XpElectronicFence;
import com.xiaopeng.api.query.operation.ElectronicPageListQuery;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.web.page.PageInfo;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.data.mongodb.core.geo.GeoJsonPolygon;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
 
/**
 * <p>
 * 电子围栏 服务类
 * </p>
 *
 * @author liu
 * @since 2026-02-03
 */
public interface XpElectronicFenceService extends IService<XpElectronicFence> {
    PageInfo<XpElectronicFence> pageList(ElectronicPageListQuery query);
 
    R addElectronic(ElectronicFenceAddDto dto);
 
    R editElectronic(ElectronicFenceUpdateDto dto);
 
    GeoJsonPolygon convertToGeoJsonPolygon(String fencePointsStr);
 
    /**
     * 校验围栏名称唯一
     */
    void validateElectronicNameUnique(String electronicName, Long excludeId);
 
    /**
     * 查询启用的电子围栏列表
     * @return
     */
    List<XpElectronicFence> getAvailableList();
 
    /**
     * 获取不分页的围栏列表
     * @return
     */
    List<XpElectronicFence> getList(ElectronicPageListQuery query);
 
    @Transactional
    @ShardingSphereTransactionType(TransactionType.BASE)
    void enableFence(Long electronicId);
 
    /**
     * 将围栏置为已停用,并同步禁用围栏区域
     * @param electronicId 围栏ID
     */
    void expireFence(Long electronicId);
}