From cb7be09dc82cdc3deed507a7ae3685e81f46e814 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 28 二月 2026 20:43:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java |  126 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 126 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
index 054581a..1a6c63a 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpElectronicFenceController.java
@@ -44,10 +44,136 @@
 @RequestMapping("/api/v1/electronicFence")
 public class XpElectronicFenceController {
 
+
+
     @Resource
     private IXpElectronicFenceService xpElectronicFenceService;
 
+    @Resource
+    private IXpElectronicFenceAreaService xpElectronicFenceAreaService;
 
+    @Resource
+    private XpRegionService regionService;
+    /**
+     * 查询省市管理
+     */
+    @ApiOperation(value = "查询省市区",response = XpRegion.class)
+    @GetMapping(value = "/getRegion")
+    public R<List<List<XpRegion>>> geXpRegion() {
+        return R.ok(regionService.getXpRegion());
+    }
+    @ApiOperation(value = "电子围栏管理列表", response = XpElectronicFence.class)
+    @PostMapping("/pageList")
+    public R<PageInfo<XpElectronicFence>> pageList(@RequestBody ElectronicPageListQuery query) {
+        PageInfo<XpElectronicFence> pageList = xpElectronicFenceService.pageList(query);
+        return R.ok(pageList);
+    }
+    /**
+     * 电子围栏列表接口
+     *
+     * @return 电子围栏列表
+     */
+    @ApiOperation(value = "电子围栏列表接口", tags = {"运维APP-车辆管理"})
+    @GetMapping("/api/v1/electronicFence/list")
+    public R<List<XpElectronicFence>> vehicleMap() {
+        List<XpElectronicFence> list = xpElectronicFenceService.list();
+        return R.ok(list);
+    }
+    /**
+     * 新增电子围栏
+     */
+    @PostMapping("/add")
+    @ApiOperation(value = "新增电子围栏")
+//    @Transactional
+//    @ShardingSphereTransactionType(TransactionType.BASE)
+    public R add(@Validated @RequestBody ElectronicFenceAddDto dto) {
+        return xpElectronicFenceService.addElectronic(dto);
+    }
+
+
+
+    /**
+     * 修改状态
+     */
+    @PostMapping("/updateStatus")
+    @ResponseBody
+    @ApiOperation(value = "修改状态")
+//    @Transactional
+//    @ShardingSphereTransactionType(TransactionType.BASE)
+    public R updateStatus(@RequestBody ElectronicFenceAreaUpdateStatusDto dto) {
+        XpElectronicFenceArea electronicFenceArea = xpElectronicFenceAreaService.getById(dto.getId());
+        if (electronicFenceArea == null) {
+            throw new ServiceException(
+                    "围栏构成不存在,请刷新重试",
+                    I18nKeyConstant.FENCE_STRUCTURE_NOT_EXIST
+            );
+        }
+        xpElectronicFenceAreaService.updateById(electronicFenceArea);
+        return R.ok();
+    }
+
+    /**
+     * 电子围栏详情
+     */
+    @PostMapping("/queryById")
+    @ApiOperation(value = "电子围栏详情")
+    public R<ElectronicFenceDetailVo> queryById(@RequestParam("id")Long id) {
+        ElectronicFenceDetailVo res = new ElectronicFenceDetailVo();
+        XpElectronicFence electronicFence = xpElectronicFenceService.getById(id);
+        if (electronicFence == null) {
+            throw new ServiceException(
+                    "电子围栏不存在,请刷新重试",
+                    I18nKeyConstant.FENCE_NOT_EXIST
+            );
+        }
+        BeanUtils.copyProperties(electronicFence, res);
+        List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getElectronicId, id)
+                .list();
+        res.setElectronicFenceAreas(electronicFenceAreaList);
+        return R.ok(res);
+    }
+
+    /**
+     * 编辑电子围栏
+     */
+    @PostMapping("/edit")
+    @ApiOperation(value = "编辑电子围栏")
+//    @Transactional
+//    @ShardingSphereTransactionType(TransactionType.BASE)
+    public R edit(@Validated @RequestBody ElectronicFenceUpdateDto dto) {
+        return xpElectronicFenceService.editElectronic(dto);
+    }
+
+    /**
+     * 复制电子围栏
+     */
+    @PostMapping("/copy")
+    @ApiOperation(value = "复制电子围栏")
+//    @Transactional
+//    @ShardingSphereTransactionType(TransactionType.BASE)
+    public R<Long> copy(@RequestParam("id") Integer id) {
+        XpElectronicFence electronicFence = xpElectronicFenceService.getById(id);
+        if (electronicFence.getStatus()==2){
+            throw new ServiceException(
+                    "当前电子围栏状态为启用中,不可复制",
+                    I18nKeyConstant.FENCE_STATUS_CANNOT_COPIED
+            );
+        }
+        electronicFence.setElectronicName("副本_"+electronicFence.getElectronicName());
+        electronicFence.setId(null);
+        electronicFence.setStatus(0);
+        xpElectronicFenceService.save(electronicFence);
+        List<XpElectronicFenceArea> electronicFenceAreaList = xpElectronicFenceAreaService.lambdaQuery().eq(XpElectronicFenceArea::getElectronicId, id)
+                .list();
+        for (XpElectronicFenceArea area : electronicFenceAreaList) {
+            area.setId(null);
+            area.setElectronicId(electronicFence.getId());
+            area.setAreaStatus(2);
+            area.setAreaName("副本_"+area.getAreaName());
+        }
+        xpElectronicFenceAreaService.saveBatch(electronicFenceAreaList);
+        return R.ok(electronicFence.getId());
+    }
 
     /**
      * 根据ID列表批量查询电子围栏

--
Gitblit v1.7.1