| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- package com.nb.bus.controller;
- import cn.dev33.satoken.SaManager;
- import cn.dev33.satoken.annotation.SaCheckPermission;
- import cn.dev33.satoken.stp.StpLogic;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.core.text.CharSequenceUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.mapper.Mapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.nb.bus.controller.vo.DeviceBindVo;
- import com.nb.bus.entity.BusDeviceEntity;
- import com.nb.bus.enums.DeviceAlarmEnum;
- import com.nb.bus.service.LocalBusDeviceService;
- import com.nb.bus.service.dto.DeviceQuery;
- import com.nb.bus.service.dto.DeviceResult;
- import com.nb.common.annotation.Log;
- import com.nb.common.crud.BaseService;
- import com.nb.common.crud.controller.BaseSaveController;
- import com.nb.common.exception.CustomException;
- import com.nb.common.result.R;
- import io.swagger.annotations.*;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.web.bind.annotation.*;
- import java.util.List;
- /**
- * @author lifang
- * @version 1.0.0
- * @ClassName BusHospitalController.java
- * @Description
- * @createTime 2022年03月19日 09:28:00
- * @accendant 龙三郎
- */
- @Slf4j
- @RestController
- @AllArgsConstructor
- @RequestMapping("/bus/device/info")
- @Api(tags = "设备管理",description = "统一权限前缀(device:info),device:info:add")
- public class BusDeviceController implements
- BaseSaveController<BusDeviceEntity, String> {
- private final LocalBusDeviceService deviceService;
- @Log(title = "设备换绑")
- @PostMapping("/shift/bind")
- @SaCheckPermission("device:info:shift")
- @ApiOperation(value = "设备换绑",notes = "权限【device:info:shift】")
- public R shift(@RequestBody DeviceBindVo vo){
- if(StrUtil.isEmpty(vo.getBindTenantId())|| CollectionUtil.isEmpty(vo.getDeviceIds())){
- throw new CustomException("选择的医院、设备不能为空");
- }
- deviceService.shift(vo.getDeviceIds(),vo.getBindTenantId());
- return R.success(DeviceAlarmEnum.values());
- }
- @PostMapping("/query/page")
- @SaCheckPermission("device:info:query")
- @ApiOperation(value = "设备管理分页查询",notes = "权限【device:info:query】")
- public R<IPage<DeviceResult>> pageQuery(@RequestBody DeviceQuery query){
- return R.success(deviceService.pageQuery(query.getPage(),query));
- }
- @GetMapping("/view")
- @ApiOperation(value = "根据ID查询")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id",value = "主键id",required = true)
- })
- public R<DeviceResult> getById(@RequestParam("id") String id) {
- queryAuth();
- String key=String.valueOf(id);
- if(CharSequenceUtil.isNullOrUndefined(key)){
- return R.fail("查询结果不存在");
- }
- return R.success(deviceService.view(key));
- }
- /**
- * 权限控制前缀
- * @return
- */
- @Override
- public String getPermissionPrefix() {
- return "device:info";
- }
- @Override
- public StpLogic getStpLogin() {
- return SaManager.getStpLogic("");
- }
- @Override
- public BaseService<? extends Mapper<BusDeviceEntity>, BusDeviceEntity, String> getService() {
- return deviceService;
- }
- /**
- * @author 龙三郎
- * 新增设备,只有超级管理员才有此权限,如果该设备在系统中存在,则更新,如果设备在系统中不存在,在阿里云平台存在,则从阿里云获取后插入。
- * @param payload
- * @return
- */
- @Override
- @SaCheckPermission("device:info:add")
- @PostMapping("/add")
- @ApiOperation(value = "新增单个数据,并返回新增后的数据. 权限【device:info:add】")
- public R<BusDeviceEntity> add(@RequestBody BusDeviceEntity payload) {
- log.info("添加设备");
- // 设备id不能为空
- if (StrUtil.isEmpty(payload.getDeviceId())){
- throw new CustomException("设备ID不能为空");
- }
- // 根据deviceId从阿里云获取设备信息。
- BusDeviceEntity device = deviceService.addDevice(payload.getDeviceId());
- if (ObjectUtil.isNull(device)){
- return R.fail("设备添加失败");
- }
- return R.success(device);
- }
- /**
- * @author 龙三郎
- * 从阿里云同步系统所有的设备,只有超级管理员才有此权限。将阿里云所有的设备同步到系统。
- * @return
- */
- @Log(title = "从阿里云同步设备")
- @ApiOperation(value = "从阿里云同步设备",notes = "从阿里云平台获取设备并更新,权限【device:info:poll】")
- @SaCheckPermission("device:info:poll")
- @PutMapping("/sync-device")
- public R<Boolean> syncDevice() {
- log.info("从阿里云同步设备");
- try {
- deviceService.syncDeviceFromIot();
- }catch (Exception e){
- log.error("同步设备失败,【{}】",e);
- return R.success(false);
- }
- return R.success(true);
- }
- // /**
- // * @author 龙三郎
- // * 从阿里云同步系统所有的设备,只有超级管理员才有此权限。将阿里云所有的设备同步到系统。
- // * @return
- // */
- // @ApiOperation(value = "从阿里云同步设备1",notes = "从阿里云平台获取设备并更新,权限【device:info:poll】")
- // @SaCheckPermission("device:info:poll")
- // @PutMapping("/sync-device1")
- // public R syncDevice1() {
- // int i = deviceService.syncAllDevice();
- // if (i > 0){
- // return R.success(i,"同步成功");
- // }else {
- // return R.fail("同步失败");
- // }
- // }
- @PostMapping("/remove")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id",value = "主键id",required = true)
- })
- @SaCheckPermission("device:info:delete")
- @ApiOperation(value = "根据ID删除")
- public R delete(@RequestParam("id") String id) {
- if(CharSequenceUtil.isNullOrUndefined(String.valueOf(id))){
- return R.success();
- }
- return R.success(deviceService.removeIotById(id));
- }
- /**
- * @author 龙三郎
- * 从阿里云更新系统中存在的设备,如果设备在系统中不存在,则不更新。
- * @return
- */
- @Log(title = "从阿里云更新本地设备")
- @SaCheckPermission("device:info:poll")
- @ApiOperation(value = "从阿里云更新本地设备",notes = "从阿里云平台获取设备并更新,参数为设备id列表,格式如['123456','456123'],参数可为空。权限【device:info:poll】")
- @PutMapping("/sync-device/batch")
- public R syncDevice(@RequestBody List<String> ids) {
- log.info("从阿里云更新本地设备");
- int i = deviceService.syncDevice(ids);
- if (i > 0){
- return R.success(i,"同步成功");
- }else {
- return R.fail("同步失败");
- }
- }
- }
|