From 002e6ca05c3f55ab74cdb124dcbcd9d6edeaae81 Mon Sep 17 00:00:00 2001 From: wanglei <3085637232@qq.com> Date: Mon, 8 Dec 2025 17:03:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A2=9E=E5=88=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=8A=9F=E8=83=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../members/wanglei-weekly-summary-10.md | 10 ++-- .../controller/web/DeviceController.java | 48 +++++++++++++++++++ .../campus/water/service/DeviceService.java | 22 +++++++++ 3 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/campus/water/controller/web/DeviceController.java diff --git a/doc/process/weekly/week-11/members/wanglei-weekly-summary-10.md b/doc/process/weekly/week-11/members/wanglei-weekly-summary-10.md index f627115..49da25e 100644 --- a/doc/process/weekly/week-11/members/wanglei-weekly-summary-10.md +++ b/doc/process/weekly/week-11/members/wanglei-weekly-summary-10.md @@ -10,11 +10,11 @@ ## 本周任务计划安排 -| 序号 | 计划内容 | 协作人 | 情况说明 | -| --- | ---------- | --- | --------------------------------------------------------------------------------------------------- | -| 1 | 开发工单管理接口 | 个人 | 已实现完整的工单管理接口,包括:抢单接口(grabOrder);拒单接口(rejectOrder);提交维修结果接口(submitRepairResult);获取可抢工单列表接口 ;获取我的工单接口 | -| 2 | 开发扫码用水接口 | 个人 | 已实现扫码用水全流程接口:扫码获取终端信息接口;扫码用水记录接口;自动更新终端使用统计数据 | -| 3 | 开发水质信息查询接口 | 个人 | 已实现水质信息查询接口:根据设备ID返回最新TDS值(原水、纯水、矿化水);返回水质等级、滤芯寿命、设备状态等完整信息 | +| 序号 | 总结内容 | 是否完成 | 情况说明 | +| --- | ---------- | ------------------------------ | --------------------------------------------------------------------------------------------------- | +| 1 | 开发工单管理接口 | 完成 | 已实现完整的工单管理接口,包括:抢单接口(grabOrder);拒单接口(rejectOrder);提交维修结果接口(submitRepairResult);获取可抢工单列表接口 ;获取我的工单接口 | +| 2 | 开发扫码用水接口 | 完成 | 已实现扫码用水全流程接口:扫码获取终端信息接口;扫码用水记录接口;自动更新终端使用统计数据 | +| 3 | 开发水质信息查询接口 | 完成 | 已实现水质信息查询接口:根据设备ID返回最新TDS值(原水、纯水、矿化水);返回水质等级、滤芯寿命、设备状态等完整信息 | ## 对团队工作的建议 diff --git a/src/main/java/com/campus/water/controller/web/DeviceController.java b/src/main/java/com/campus/water/controller/web/DeviceController.java new file mode 100644 index 0000000..861971d --- /dev/null +++ b/src/main/java/com/campus/water/controller/web/DeviceController.java @@ -0,0 +1,48 @@ +package com.campus.water.controller.web; + +import com.campus.water.entity.Device; +import com.campus.water.service.DeviceService; +import com.campus.water.util.ResultVO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/web/device") +@RequiredArgsConstructor +@Tag(name = "设备管理接口", description = "Web管理端设备新增与删除接口") +public class DeviceController { + + private final DeviceService deviceService; + + /** + * 新增设备 + */ + @PostMapping("/add") + @Operation(summary = "新增设备", description = "添加新设备信息,包括设备ID、名称、类型等") + public ResponseEntity> addDevice(@Valid @RequestBody Device device) { + try { + Device newDevice = deviceService.addDevice(device); + return ResponseEntity.ok(ResultVO.success(newDevice, "设备新增成功")); + } catch (Exception e) { + return ResponseEntity.ok(ResultVO.error(500, "设备新增失败: " + e.getMessage())); + } + } + + /** + * 删除设备 + */ + @DeleteMapping("/delete/{deviceId}") + @Operation(summary = "删除设备", description = "根据设备ID删除指定设备(需先解除终端绑定)") + public ResponseEntity> deleteDevice(@PathVariable String deviceId) { + try { + deviceService.deleteDevice(deviceId); + return ResponseEntity.ok(ResultVO.success(true, "设备删除成功")); + } catch (Exception e) { + return ResponseEntity.ok(ResultVO.error(500, "设备删除失败: " + e.getMessage())); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/campus/water/service/DeviceService.java b/src/main/java/com/campus/water/service/DeviceService.java index ee558ae..e823af1 100644 --- a/src/main/java/com/campus/water/service/DeviceService.java +++ b/src/main/java/com/campus/water/service/DeviceService.java @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** * 设备管理服务类 @@ -143,4 +144,25 @@ public class DeviceService { public long countByStatus(DeviceStatus status) { return deviceRepository.findByStatus(status).size(); } + /** + * 删除设备(需先校验是否已解绑终端) + */ + @Transactional + public void deleteDevice(String deviceId) { + // 1. 校验设备是否存在 + Device device = getDeviceById(deviceId); + + // 2. 检查设备是否已绑定终端 + List boundTerminals = terminalMappingRepository.findByDeviceId(deviceId); + if (!boundTerminals.isEmpty()) { + // 收集已绑定的终端ID,便于前端提示 + String terminalIds = boundTerminals.stream() + .map(DeviceTerminalMapping::getTerminalId) + .collect(Collectors.joining(",")); + throw new RuntimeException("设备已绑定终端,无法删除(终端ID:" + terminalIds + ")"); + } + + // 3. 执行删除操作 + deviceRepository.delete(device); + } } \ No newline at end of file -- 2.34.1