DeviceRegisterServiceImpl.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. package com.xy.service;
  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.collections.list.JArrayList;
  7. import com.xy.collections.list.JList;
  8. import com.xy.collections.map.JMap;
  9. import com.xy.dto.DeviceQualityDto;
  10. import com.xy.dto.DeviceRegisterDto;
  11. import com.xy.dto.MqttAclDto;
  12. import com.xy.entity.*;
  13. import com.xy.mapper.*;
  14. import com.xy.utils.*;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.stereotype.Service;
  19. import org.springframework.transaction.annotation.Transactional;
  20. import org.springframework.validation.annotation.Validated;
  21. import org.springframework.web.bind.annotation.PostMapping;
  22. import org.springframework.web.bind.annotation.RequestBody;
  23. import java.time.LocalDateTime;
  24. import java.util.Arrays;
  25. import java.util.List;
  26. import static com.xy.utils.PlusBeans.*;
  27. /**
  28. * <p>
  29. * 设备-注册登记 服务实现类
  30. * </p>
  31. *
  32. * @author lijin
  33. * @since 2022-12-29
  34. */
  35. @Service
  36. @Api(tags = "设备-注册登记")
  37. @AllArgsConstructor
  38. public class DeviceRegisterServiceImpl extends ServiceImpl<DeviceRegisterMapper, DeviceRegister> implements DeviceRegisterService {
  39. private DeviceCreateIdsMapper deviceCreateIdsMapper;
  40. private DeviceInfoMapper deviceInfoMapper;
  41. private DeviceSysinfoMapper deviceSysinfoMapper;
  42. private DeviceStatusMapper deviceStatusMapper;
  43. private DeviceQualityServiceImpl deviceQualityService;
  44. private MqttAclServiceImpl mqttAclService;
  45. @PostMapping("save")
  46. @ApiOperation("添加")
  47. @Transactional(rollbackFor = Exception.class)
  48. public R save(@RequestBody @Validated DeviceRegisterDto.Save save) {
  49. //重复校验
  50. DeviceRegister deviceRegister = copy(DeviceRegister.class, save);
  51. DeviceCreateIds deviceCreateIds = deviceCreateIdsMapper.selectById(deviceRegister.getDeviceId());
  52. if (deviceCreateIds == null) {
  53. return R.fail("设备不存在");
  54. }
  55. if (deviceCreateIds.getBindState()) {
  56. return R.fail("设备已被绑定");
  57. }
  58. deviceRegister.setDeviceType(deviceCreateIds.getDeviceType())
  59. .setCreateUser(AuthorizeUtils.getLoginId(Long.class))
  60. .setCreateTime(LocalDateTime.now());
  61. //操作注册序号
  62. String property = LambdaUtils.getProperty(DeviceRegister::getRegisterNum);
  63. QueryWrapper<DeviceRegister> queryWrapper = new QueryWrapper<DeviceRegister>()
  64. .select(String.format("max(%s) as %s", StringTools.humpToLine(property), property))
  65. .eq(StringTools.humpToLine(LambdaUtils.getProperty(DeviceRegister::getCreateUser)), AuthorizeUtils.getLoginId(Long.class));
  66. DeviceRegister one = getOne(queryWrapper);
  67. Integer registerNum = one == null || one.getRegisterNum() == null ? 0 : one.getRegisterNum();
  68. deviceRegister.setRegisterNum(registerNum + 1);
  69. //修改设备-机器ID号生成为已绑定
  70. deviceCreateIdsMapper.updateById(new DeviceCreateIds().setDeviceId(deviceRegister.getDeviceId()).setBindState(true).setBindTime(deviceRegister.getCreateTime()));
  71. //新增设备-注册登记
  72. save(deviceRegister);
  73. //新增设备信息
  74. deviceInfoMapper.insert(new DeviceInfo()
  75. .setDeviceId(deviceRegister.getDeviceId())
  76. .setDeviceType(deviceRegister.getDeviceType())
  77. .setMercDeviceCode(deviceRegister.getAssetNo())
  78. .setCreateTime(deviceRegister.getCreateTime())
  79. );
  80. //新增设备-系统信息
  81. deviceSysinfoMapper.insert(new DeviceSysinfo()
  82. .setDeviceId(deviceRegister.getDeviceId())
  83. .setDeviceSn(deviceRegister.getDeviceSn())
  84. .setCreateTime(deviceRegister.getCreateTime())
  85. );
  86. //新增设备-状态
  87. deviceStatusMapper.insert(new DeviceStatus().setDeviceId(deviceRegister.getDeviceId()));
  88. //新增设备-质检
  89. deviceQualityService.save(Arrays.asList(new DeviceQualityDto.Save().setDeviceId(deviceRegister.getDeviceId())));
  90. //新增mqtt信息
  91. String deviceId = deviceRegister.getDeviceId().toString();
  92. mqttAclService.save(new MqttAclDto.Save().setClientid(deviceId).setUsername(deviceId));
  93. return R.ok();
  94. }
  95. @PostMapping("page")
  96. @ApiOperation("分页查询")
  97. public R<PageBean<DeviceRegisterDto.Vo>> page(@RequestBody DeviceRegisterDto.Page page) {
  98. PageBean pageBean = page.getPage();
  99. LambdaQueryWrapper<DeviceRegister> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, DeviceRegister.class)
  100. .ge(DeviceRegister::getCreateTime, page.getBeginCreateTime())
  101. .le(DeviceRegister::getCreateTime, page.getEndCreateTime())
  102. .build()
  103. .orderByDesc(!Emptys.check(pageBean.getOrders()), DeviceRegister::getCreateTime);
  104. IPage<DeviceRegister> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
  105. PageBean<DeviceRegisterDto.Vo> voPageBean = toPageBean(DeviceRegisterDto.Vo.class, iPage);
  106. List<DeviceRegisterDto.Vo> deviceRegisters = voPageBean.getRecords();
  107. if (deviceRegisters.size() > 0) {
  108. JList<Long> deviceIds = new JArrayList<>(deviceRegisters).getProperty(DeviceRegisterDto.Vo::getDeviceId);
  109. List<DeviceQualityDto.Vo> vos = deviceQualityService.list(new DeviceQualityDto.SelectList().setDeviceIds(deviceIds)
  110. .setShowStatus(true)
  111. ).getData();
  112. JMap<Long, DeviceQualityDto.Vo> map = new JArrayList<>(vos).toMap(DeviceQualityDto.Vo::getDeviceId).cover();
  113. for (DeviceRegisterDto.Vo deviceRegister : deviceRegisters) {
  114. DeviceQualityDto.Vo vo = map.get(deviceRegister.getDeviceId());
  115. if (vo != null) {
  116. deviceRegister.setFactoryState(vo.getFactoryState()).setQualityState(vo.getQualityState());
  117. }
  118. }
  119. }
  120. return R.ok(voPageBean);
  121. }
  122. @PostMapping("obj")
  123. @ApiOperation("对象查询")
  124. public R<DeviceRegisterDto.Vo> obj(@RequestBody DeviceRegisterDto.Vo vo) {
  125. LambdaQueryWrapper<DeviceRegister> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(vo, DeviceRegister.class).build();
  126. List<DeviceRegister> list = list(lambdaQueryWrapper);
  127. if (!Emptys.check(list)) {
  128. return R.ok();
  129. }
  130. DeviceRegisterDto.Vo deviceRegister = copy(DeviceRegisterDto.Vo.class, list.get(0));
  131. DeviceQualityDto.Vo deviceQuality = deviceQualityService.obj(new DeviceQualityDto.Obj()
  132. .setDeviceId(deviceRegister.getDeviceId())
  133. .setShowStatus(true)
  134. ).getData();
  135. if (deviceQuality != null) {
  136. deviceRegister.setFactoryState(deviceQuality.getFactoryState()).setQualityState(deviceQuality.getQualityState());
  137. }
  138. return R.ok(deviceRegister);
  139. }
  140. @PostMapping("list")
  141. @ApiOperation("集合查询")
  142. public R<List<DeviceRegisterDto.Vo>> list(@RequestBody DeviceRegisterDto.SelectList selectList) {
  143. LambdaQueryWrapper<DeviceRegister> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, DeviceRegister.class)
  144. .in(DeviceRegister::getDeviceId, selectList.getDeviceIds())
  145. .in(DeviceRegister::getDeviceSn, selectList.getDeviceSns())
  146. .in(DeviceRegister::getDeviceType, selectList.getDeviceTypes())
  147. .in(DeviceRegister::getDevicePc, selectList.getDevicePcs())
  148. .in(DeviceRegister::getAssetNo, selectList.getAssetNos())
  149. .build();
  150. List<DeviceRegister> list = list(lambdaQueryWrapper);
  151. return R.ok(copy(DeviceRegisterDto.Vo.class, list));
  152. }
  153. }