BusDeviceController.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package com.coffee.bus.controller;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  6. import com.baomidou.mybatisplus.core.mapper.Mapper;
  7. import com.coffee.bus.controller.vo.DeviceBindVo;
  8. import com.coffee.bus.entity.BusDeviceEntity;
  9. import com.coffee.bus.entity.BusHospitalEntity;
  10. import com.coffee.bus.enums.DeviceAlarmEnum;
  11. import com.coffee.bus.exception.BusinessException;
  12. import com.coffee.bus.exception.ErrorStatus;
  13. import com.coffee.bus.registry.device.DeviceRegistry;
  14. import com.coffee.bus.service.LocalBusDeviceService;
  15. import com.coffee.common.crud.BaseService;
  16. import com.coffee.common.crud.controller.BaseCrudController;
  17. import com.coffee.common.exception.CustomException;
  18. import com.coffee.common.result.R;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import lombok.AllArgsConstructor;
  22. import lombok.extern.slf4j.Slf4j;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.validation.constraints.NotNull;
  25. import java.util.List;
  26. import java.util.Objects;
  27. /**
  28. * @author lifang
  29. * @version 1.0.0
  30. * @ClassName BusHospitalController.java
  31. * @Description TODO
  32. * @createTime 2022年03月19日 09:28:00
  33. * @accendant 龙三郎
  34. */
  35. @Slf4j
  36. @RestController
  37. @AllArgsConstructor
  38. @RequestMapping("/bus/device/info")
  39. @Api(tags = "设备管理",description = "统一权限前缀(device:info),device:info:add")
  40. public class BusDeviceController extends BaseCrudController<BusDeviceEntity, String> {
  41. private final LocalBusDeviceService deviceService;
  42. private final DeviceRegistry deviceRegistry;
  43. @PostMapping("/shift/bind")
  44. @ApiOperation(value = "设备换绑",notes = "权限【device:info:shift】")
  45. public R shift(@RequestBody DeviceBindVo vo){
  46. if(StrUtil.isEmpty(vo.getBindTenantId())|| CollectionUtil.isEmpty(vo.getDeviceIds())){
  47. throw new CustomException("选择的医院、设备不能为空");
  48. }
  49. List<String> deviceIds = vo.getDeviceIds();
  50. deviceService.update(new UpdateWrapper<BusDeviceEntity>().lambda()
  51. .in(BusDeviceEntity::getDeviceId,deviceIds)
  52. .set(BusDeviceEntity::getTenantId,vo.getBindTenantId()));
  53. deviceIds.stream()
  54. .map(deviceRegistry::getOperator)
  55. .forEach(deviceOperator -> deviceOperator.setTenantId(vo.getBindTenantId()));
  56. return R.success(DeviceAlarmEnum.values());
  57. }
  58. @PostMapping("/undo/bind")
  59. @ApiOperation(value = "设备解绑",notes = "即自动将该设备绑定到默认医院上,权限【device:info:undo】")
  60. public R undo(@RequestBody DeviceBindVo vo){
  61. if( CollectionUtil.isEmpty(vo.getDeviceIds())){
  62. throw new CustomException("选择的设备不能为空");
  63. }
  64. List<String> deviceIds = vo.getDeviceIds();
  65. deviceService.update(new UpdateWrapper<BusDeviceEntity>().lambda()
  66. .in(BusDeviceEntity::getDeviceId,deviceIds)
  67. .set(BusDeviceEntity::getTenantId,"1"));
  68. deviceIds.stream()
  69. .map(deviceRegistry::getOperator)
  70. .forEach(deviceOperator -> deviceOperator.setTenantId("1"));
  71. return R.success(DeviceAlarmEnum.values());
  72. }
  73. /**
  74. * 权限控制前缀
  75. * @return
  76. */
  77. @Override
  78. public String getPermissionPrefix() {
  79. return "device:info";
  80. }
  81. @Override
  82. public BaseService<? extends Mapper<BusDeviceEntity>, BusDeviceEntity, String> getService() {
  83. return deviceService;
  84. }
  85. /**
  86. * @author 龙三郎
  87. * @param payload
  88. * @return
  89. */
  90. @Override
  91. @PostMapping("/add")
  92. @ApiOperation(value = "新增单个数据,并返回新增后的数据.")
  93. public R<BusDeviceEntity> add(BusDeviceEntity payload) {
  94. log.info("添加设备");
  95. // 设备id不能为空
  96. if (StrUtil.isEmpty(payload.getDeviceId())){
  97. throw new BusinessException(ErrorStatus.DEVICEID_IS_EMPTY);
  98. }
  99. // 根据deviceId从阿里云获取设备信息。
  100. BusDeviceEntity device = deviceService.add(payload.getDeviceId());
  101. if (ObjectUtil.isNull(device)){
  102. return R.fail("设备添加失败");
  103. }
  104. return R.success(device);
  105. }
  106. /**
  107. * @author 龙三郎
  108. * 从阿里云同步系统所有的设备
  109. * @return
  110. */
  111. @ApiOperation(value = "从阿里云同步设备",notes = "从阿里云平台获取设备并更新")
  112. @PutMapping("/sync-device")
  113. public R syncDevice() {
  114. int i = deviceService.syncDevice();
  115. if (i > 0){
  116. return R.success(i,"同步成功");
  117. }else {
  118. return R.fail("同步失败");
  119. }
  120. }
  121. }