DeviceRegisterServiceImpl.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.xy.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.xy.config.XyMqttConfig;
  7. import com.xy.dto.DeviceRegisterDto;
  8. import com.xy.entity.*;
  9. import com.xy.mapper.*;
  10. import com.xy.service.DeviceRegisterService;
  11. import com.xy.utils.*;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiOperation;
  14. import lombok.AllArgsConstructor;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.transaction.annotation.Transactional;
  17. import org.springframework.validation.annotation.Validated;
  18. import org.springframework.web.bind.annotation.PostMapping;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import java.time.LocalDateTime;
  21. import java.util.List;
  22. import static com.xy.utils.PlusBeans.*;
  23. /**
  24. * <p>
  25. * 设备-注册登记 服务实现类
  26. * </p>
  27. *
  28. * @author lijin
  29. * @since 2022-12-29
  30. */
  31. @Service
  32. @Api(tags = "设备-注册登记")
  33. @AllArgsConstructor
  34. public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper, DeviceRegister> implements DeviceRegisterService {
  35. private DeviceCreateIdsMapper deviceCreateIdsMapper;
  36. private DeviceInfoMapper deviceInfoMapper;
  37. private DeviceSysinfoMapper deviceSysinfoMapper;
  38. private DeviceStatusMapper deviceStatusMapper;
  39. private MqttAclMapper mqttAclMapper;
  40. private XyMqttConfig xyMqttConfig;
  41. @PostMapping("save")
  42. @ApiOperation("添加")
  43. @Transactional(rollbackFor = Exception.class)
  44. public R save(@RequestBody @Validated DeviceRegisterDto.Save save) {
  45. //重复校验
  46. DeviceRegister deviceRegister = copy(DeviceRegister.class, save);
  47. DeviceCreateIds deviceCreateIds = deviceCreateIdsMapper.selectById(deviceRegister.getDeviceId());
  48. if (deviceCreateIds == null) {
  49. return R.fail("设备不存在");
  50. }
  51. if (deviceCreateIds.getBindState()) {
  52. return R.fail("设备已被绑定");
  53. }
  54. deviceRegister.setDeviceType(deviceCreateIds.getDeviceType())
  55. .setCreateUser(AuthorizeUtils.getLoginId(Long.class))
  56. .setCreateTime(LocalDateTime.now());
  57. //操作注册序号
  58. String property = LambdaUtils.getProperty(DeviceRegister::getRegisterNum);
  59. QueryWrapper<DeviceRegister> queryWrapper = new QueryWrapper<DeviceRegister>()
  60. .select(String.format("max(%s) as %s", StringTools.humpToLine(property), property))
  61. .eq(StringTools.humpToLine(LambdaUtils.getProperty(DeviceRegister::getCreateUser)), AuthorizeUtils.getLoginId(Long.class));
  62. DeviceRegister one = getOne(queryWrapper);
  63. Integer registerNum = one == null || one.getRegisterNum() == null ? 0 : one.getRegisterNum();
  64. deviceRegister.setRegisterNum(registerNum + 1);
  65. //修改设备-机器ID号生成为已绑定
  66. deviceCreateIdsMapper.updateById(new DeviceCreateIds().setDeviceId(deviceRegister.getDeviceId()).setBindState(true).setBindTime(deviceRegister.getCreateTime()));
  67. //新增设备-注册登记
  68. save(deviceRegister);
  69. //新增设备信息
  70. deviceInfoMapper.insert(new DeviceInfo()
  71. .setDeviceId(deviceRegister.getDeviceId())
  72. .setDeviceType(deviceRegister.getDeviceType())
  73. .setMercDeviceCode(deviceRegister.getAssetNo())
  74. .setCreateTime(deviceRegister.getCreateTime())
  75. );
  76. //新增设备-系统信息
  77. deviceSysinfoMapper.insert(new DeviceSysinfo()
  78. .setDeviceId(deviceRegister.getDeviceId())
  79. .setDeviceSn(deviceRegister.getDeviceSn())
  80. .setCreateTime(deviceRegister.getCreateTime())
  81. );
  82. //新增设备-状态
  83. deviceStatusMapper.insert(new DeviceStatus().setDeviceId(deviceRegister.getDeviceId()));
  84. //新增mqtt信息
  85. String deviceId = deviceRegister.getDeviceId().toString();
  86. mqttAclMapper.insert(new MqttAcl()
  87. .setIpaddress(xyMqttConfig.getUrl())
  88. .setUsername(deviceId)
  89. .setClientid(deviceId)
  90. .setTopic(deviceId + "-CMD")
  91. );
  92. return R.ok();
  93. }
  94. @PostMapping("page")
  95. @ApiOperation("分页查询")
  96. public R<PageBean<DeviceRegisterDto.Vo>> page(@RequestBody DeviceRegisterDto.Page page) {
  97. PageBean pageBean = page.getPage();
  98. LambdaQueryWrapper<DeviceRegister> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceRegister.class)
  99. .ge(DeviceRegister::getCreateTime, page.getBeginCreateTime())
  100. .le(DeviceRegister::getCreateTime, page.getEndCreateTime())
  101. .build()
  102. .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceRegister::getCreateTime);
  103. AuthUtils.authByData(lambdaQueryWrapper, DeviceRegister::getCreateUser);
  104. IPage<DeviceRegister> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  105. return R.ok(toPageBean(DeviceRegisterDto.Vo.class, iPage));
  106. }
  107. @PostMapping("obj")
  108. @ApiOperation("对象查询")
  109. public R<DeviceRegisterDto.Vo> obj(@RequestBody DeviceRegisterDto.Vo vo) {
  110. LambdaQueryWrapper<DeviceRegister> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, DeviceRegister.class).build();
  111. List<DeviceRegister> list = list(lambdaQueryWrapper);
  112. if (!Emptys.check(list)) {
  113. return R.ok();
  114. }
  115. return R.ok(copy(DeviceRegisterDto.Vo.class, list.get(0)));
  116. }
  117. }