WEB端解绑设备

This commit is contained in:
2025-07-17 16:20:22 +08:00
parent cc776300ec
commit 7b1615ce4d
4 changed files with 56 additions and 31 deletions

View File

@ -17,8 +17,8 @@ public class TestSMSController {
public void testSend() { public void testSend() {
// 在创建完SmsBlend实例后再未手动调用注销的情况下框架会持有该实例可以直接通过指定configId来获取想要的配置如果你想使用 // 在创建完SmsBlend实例后再未手动调用注销的情况下框架会持有该实例可以直接通过指定configId来获取想要的配置如果你想使用
// 负载均衡形式获取实例只要使用getSmsBlend的无参重载方法即可如果你仅有一个配置也可以使用该方法 // 负载均衡形式获取实例只要使用getSmsBlend的无参重载方法即可如果你仅有一个配置也可以使用该方法
SmsBlend smsBlend = SmsFactory.getSmsBlend("alibaba"); SmsBlend smsBlend = SmsFactory.getSmsBlend("config1");
SmsResponse smsResponse = smsBlend.sendMessage("18656573389", "123"); SmsResponse smsResponse = smsBlend.sendMessage("18656573389", "1234");
} }
} }

View File

@ -4,11 +4,13 @@ package com.fuyuanshen.equipment.controller;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuyuanshen.common.core.constant.ResponseMessageConstants; import com.fuyuanshen.common.core.constant.ResponseMessageConstants;
import com.fuyuanshen.common.core.domain.R;
import com.fuyuanshen.common.core.domain.ResponseVO; import com.fuyuanshen.common.core.domain.ResponseVO;
import com.fuyuanshen.common.core.domain.model.LoginUser; import com.fuyuanshen.common.core.domain.model.LoginUser;
import com.fuyuanshen.common.core.utils.file.FileUtil; import com.fuyuanshen.common.core.utils.file.FileUtil;
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
import com.fuyuanshen.common.satoken.utils.LoginHelper; import com.fuyuanshen.common.satoken.utils.LoginHelper;
import com.fuyuanshen.common.web.core.BaseController;
import com.fuyuanshen.customer.mapper.CustomerMapper; import com.fuyuanshen.customer.mapper.CustomerMapper;
import com.fuyuanshen.equipment.domain.Device; import com.fuyuanshen.equipment.domain.Device;
import com.fuyuanshen.equipment.domain.dto.DeviceExcelImportDTO; import com.fuyuanshen.equipment.domain.dto.DeviceExcelImportDTO;
@ -49,7 +51,7 @@ import java.util.List;
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/api/device") @RequestMapping("/api/device")
public class DeviceController { public class DeviceController extends BaseController {
private final ISysOssService ossService; private final ISysOssService ossService;
private final DeviceService deviceService; private final DeviceService deviceService;
@ -72,106 +74,106 @@ public class DeviceController {
// @Log("新增设备") // @Log("新增设备")
@Operation(summary = "新增设备") @Operation(summary = "新增设备")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public ResponseVO<Object> addDevice(@Validated @ModelAttribute DeviceForm deviceForm) { public R<Void> addDevice(@Validated @ModelAttribute DeviceForm deviceForm) {
try { try {
deviceService.addDevice(deviceForm); deviceService.addDevice(deviceForm);
} catch (Exception e) { } catch (Exception e) {
log.error("addDevice error: " + e.getMessage()); log.error("addDevice error: " + e.getMessage());
return ResponseVO.fail(e.getMessage()); return R.fail(e.getMessage());
} }
return ResponseVO.success(null); return R.ok();
} }
// @Log("修改设备") // @Log("修改设备")
@Operation(summary = "修改设备") @Operation(summary = "修改设备")
@PutMapping(value = "/update") @PutMapping(value = "/update")
public ResponseVO<Object> updateDevice(@Validated @ModelAttribute DeviceForm deviceForm) { public R<Void> updateDevice(@Validated @ModelAttribute DeviceForm deviceForm) {
try { try {
deviceService.update(deviceForm); deviceService.update(deviceForm);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("updateDevice error: " + e.getMessage()); log.error("updateDevice error: " + e.getMessage());
return ResponseVO.fail("出错了"); return R.fail(e.getMessage());
} }
return ResponseVO.success(null); return R.ok();
} }
@Operation(summary = "设备详情") @Operation(summary = "设备详情")
@GetMapping(value = "/detail/{id}") @GetMapping(value = "/detail/{id}")
public ResponseVO<Object> getDevice(@PathVariable Long id) { public R<Device> getDevice(@PathVariable Long id) {
Device device = deviceService.getById(id); Device device = deviceService.getById(id);
return ResponseVO.success(device); return R.ok(device);
} }
// @Log("删除设备") // @Log("删除设备")
@Operation(summary = "删除设备") @Operation(summary = "删除设备")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public ResponseVO<Object> deleteDevice(@Parameter(name = "传ID数组[]") @RequestBody List<Long> ids) { public R<Void> deleteDevice(@Parameter(name = "传ID数组[]") @RequestBody List<Long> ids) {
deviceService.deleteAll(ids); deviceService.deleteAll(ids);
return ResponseVO.success(ResponseMessageConstants.DELETE_SUCCESS); return R.ok();
} }
@Operation(summary = "设备定位") @Operation(summary = "设备定位")
@GetMapping(value = "/locateDevice") @GetMapping(value = "/locateDevice")
public ResponseVO<Object> locateDevice(DeviceQueryCriteria criteria) throws IOException { public R<List<Device>> locateDevice(DeviceQueryCriteria criteria) throws IOException {
List<Device> devices = deviceService.queryAllDevices(criteria); List<Device> devices = deviceService.queryAllDevices(criteria);
return ResponseVO.success(devices); return R.ok(devices);
} }
// @Log("分配客户") // @Log("分配客户")
@Operation(summary = "分配客户") @Operation(summary = "分配客户")
@PutMapping(value = "/assignCustomer") @PutMapping(value = "/assignCustomer")
public ResponseVO<Object> assignCustomer(@Validated @RequestBody CustomerVo customerVo) { public R<Void> assignCustomer(@Validated @RequestBody CustomerVo customerVo) {
deviceService.assignCustomer(customerVo); deviceService.assignCustomer(customerVo);
return ResponseVO.success(null); return R.ok();
} }
// @Log("撤回设备") // @Log("撤回设备")
@Operation(summary = "撤回分配设备") @Operation(summary = "撤回分配设备")
@PostMapping(value = "/withdraw") @PostMapping(value = "/withdraw")
public ResponseVO<Object> withdrawDevice(@RequestBody List<Long> ids) { public R<Void> withdrawDevice(@RequestBody List<Long> ids) {
try { try {
deviceService.withdrawDevice(ids); deviceService.withdrawDevice(ids);
} catch (Exception e) { } catch (Exception e) {
log.error("updateDevice error: " + e.getMessage()); log.error("updateDevice error: " + e.getMessage());
return ResponseVO.fail("出错了"); return R.fail(e.getMessage());
} }
return ResponseVO.success(null); return R.ok();
} }
/** /**
* @param deviceForm * @param id
* @return * @return
* @ModelAttribute 主要用于将请求参数绑定到 Java 对象上,它会从 HTTP 请求的查询参数Query Parameters * @ModelAttribute 主要用于将请求参数绑定到 Java 对象上,它会从 HTTP 请求的查询参数Query Parameters
* 或表单数据Form Data中提取值并自动填充到指定的对象属性中。 * 或表单数据Form Data中提取值并自动填充到指定的对象属性中。
*/ */
// @Log("解绑设备") // @Log("解绑设备")
@Operation(summary = "解绑设备") @Operation(summary = "WEB端解绑设备")
@PostMapping(value = "/unbind") @GetMapping(value = "/unbind")
public ResponseVO<Object> unbindDevice(@Validated @ModelAttribute DeviceForm deviceForm) { public R<Void> unbindDevice(@Validated Long id) {
deviceService.unbindDevice(deviceForm); return toAjax(deviceService.webUnBindDevice(id));
return ResponseVO.success("解绑成功!!!");
} }
@Operation(summary = "导出数据设备") @Operation(summary = "导出数据设备")
@GetMapping(value = "/download") @GetMapping(value = "/download")
public void exportDevice(HttpServletResponse response, DeviceQueryCriteria criteria) throws IOException { public R<Void> exportDevice(HttpServletResponse response, DeviceQueryCriteria criteria) throws IOException {
List<Device> devices = deviceService.queryAll(criteria); List<Device> devices = deviceService.queryAll(criteria);
exportService.export(devices, response); exportService.export(devices, response);
return R.ok();
} }
@Operation(summary = "导入设备数据") @Operation(summary = "导入设备数据")
@PostMapping(value = "/import", consumes = "multipart/form-data") @PostMapping(value = "/import", consumes = "multipart/form-data")
public ResponseVO<ImportResult> importData(@Parameter(name = "文件", required = true) @RequestPart("file") MultipartFile file) throws BadRequestException { public R<ImportResult> importData(@Parameter(name = "文件", required = true) @RequestPart("file") MultipartFile file) throws BadRequestException {
String suffix = FileUtil.getExtensionName(file.getOriginalFilename()); String suffix = FileUtil.getExtensionName(file.getOriginalFilename());
if (!("xlsx".equalsIgnoreCase(suffix))) { if (!("xlsx".equalsIgnoreCase(suffix))) {
@ -195,13 +197,13 @@ public class DeviceController {
// 设置响应消息 // 设置响应消息
String message = String.format("成功导入 %d 条数据,失败 %d 条", result.getSuccessCount(), result.getFailureCount()); String message = String.format("成功导入 %d 条数据,失败 %d 条", result.getSuccessCount(), result.getFailureCount());
// 返回带有正确泛型的响应 // 返回带有正确泛型的响应
return ResponseVO.<ImportResult>success(message, result); return R.ok(message, result);
} catch (Exception e) { } catch (Exception e) {
log.error("导入设备数据出错: {}", e.getMessage(), e); log.error("导入设备数据出错: {}", e.getMessage(), e);
// 在异常情况下,设置默认结果 // 在异常情况下,设置默认结果
String errorMessage = String.format("导入失败: %s。成功 %d 条,失败 %d 条", e.getMessage(), result.getSuccessCount(), result.getFailureCount()); String errorMessage = String.format("导入失败: %s。成功 %d 条,失败 %d 条", e.getMessage(), result.getSuccessCount(), result.getFailureCount());
// 使用新方法确保类型正确 // 使用新方法确保类型正确
return ResponseVO.<ImportResult>fail(errorMessage, result); return R.fail(errorMessage, result);
} }
} }

View File

@ -98,4 +98,12 @@ public interface DeviceService extends IService<Device> {
* @return * @return
*/ */
Boolean queryDevice(String mac); Boolean queryDevice(String mac);
/**
* WEB端解绑设备
*
* @param id
* @return
*/
int webUnBindDevice(Long id);
} }

View File

@ -44,7 +44,6 @@ import com.fuyuanshen.system.domain.vo.SysOssVo;
import com.fuyuanshen.system.service.ISysOssService; import com.fuyuanshen.system.service.ISysOssService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -577,6 +576,22 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
} }
/**
* WEB端解绑设备
*
* @param id
* @return
*/
@Override
public int webUnBindDevice(Long id) {
DeviceAssignments deviceAssignment = deviceAssignmentsMapper.selectById(id);
if (deviceAssignment == null) {
throw new RuntimeException("请先将设备入库!!!");
}
return unBindDevice(deviceAssignment.getDeviceId());
}
/** /**
* 查询设备MAC号 * 查询设备MAC号
* *