DeviceInfoService.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package com.zswl.dataservice.service.mqtt;
  2. import com.zswl.dataservice.dao.iot.IotTemplateDao;
  3. import com.zswl.dataservice.dao.mqtt.DeviceInfoDao;
  4. import com.zswl.dataservice.dao.mqtt.ProjectInfoDao;
  5. import com.zswl.dataservice.dataConfig.ResultMessage;
  6. import com.zswl.dataservice.domain.iot.IotTemplate;
  7. import com.zswl.dataservice.domain.mqtt.DeviceInfo;
  8. import com.zswl.dataservice.domain.mqtt.ProjectInfo;
  9. import com.zswl.dataservice.model.iot.IotMainModel;
  10. import com.zswl.dataservice.model.mqtt.DeviceInfoAddParam;
  11. import com.zswl.dataservice.model.mqtt.DeviceInfoModel;
  12. import com.zswl.dataservice.model.mqtt.DeviceInfoSearchParam;
  13. import com.zswl.dataservice.model.mqtt.DeviceInfoUpdateRemark;
  14. import com.zswl.dataservice.service.iot.IotServiceImpl;
  15. import com.zswl.dataservice.utils.bean.BeanUtils;
  16. import com.zswl.dataservice.utils.mqtt.type.LogsLevel;
  17. import com.zswl.dataservice.utils.page.PageEntityUtil;
  18. import com.zswl.dataservice.utils.result.ResultContent;
  19. import org.apache.commons.lang3.ObjectUtils;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.data.domain.Page;
  23. import org.springframework.data.domain.Pageable;
  24. import org.springframework.stereotype.Service;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. /**
  28. * @author TRX
  29. * @date 2024/5/14
  30. */
  31. @Service
  32. public class DeviceInfoService {
  33. @Autowired
  34. DeviceInfoDao deviceInfoDao;
  35. @Autowired
  36. OperationLogsService operationLogsService;
  37. @Autowired
  38. IotTemplateDao iotTemplateDao;
  39. @Autowired
  40. IotServiceImpl iotService;
  41. @Autowired
  42. ProjectInfoDao projectInfoDao;
  43. @Autowired
  44. ProjectInfoService projectInfoService;
  45. /**
  46. * 添加设备
  47. *
  48. * @param param
  49. * @return
  50. */
  51. public ResultContent<DeviceInfo> addDeviceInfo(DeviceInfoAddParam param) {
  52. DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(param.getDeviceId());
  53. if (ObjectUtils.isNotEmpty(deviceInfo)) {
  54. return ResultContent.buildFail(String.format("设备ID已存在:%s", param.getDeviceId()));
  55. }
  56. deviceInfo = new DeviceInfo();
  57. BeanUtils.copyProperties(param, deviceInfo);
  58. ProjectInfo projectInfo = null;
  59. if (StringUtils.isNotEmpty(param.getProjectInfoOid())) {
  60. projectInfo = projectInfoDao.findTopByCode(param.getProjectInfoOid());
  61. }
  62. deviceInfo.setProjectInfo(projectInfo);
  63. IotTemplate iotTemplate = null;
  64. if (StringUtils.isNotEmpty(param.getIotTemplateId())) {
  65. iotTemplate = iotTemplateDao.findTopById(param.getIotTemplateId());
  66. }
  67. deviceInfo.setIotTemplate(iotTemplate);
  68. deviceInfoDao.save(deviceInfo);
  69. operationLogsService.addLogs(String.format("添加了设备;%s", deviceInfo.getDeviceName()), LogsLevel.Middle, deviceInfo);
  70. return ResultContent.buildSuccess(deviceInfo);
  71. }
  72. /**
  73. * 初始设备
  74. *
  75. * @param param
  76. * @return
  77. */
  78. public ResultContent<DeviceInfo> initDeviceInfo(DeviceInfoAddParam param) {
  79. DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(param.getDeviceId());
  80. if (ObjectUtils.isEmpty(deviceInfo)) {
  81. ResultContent<DeviceInfo> resultContent = addDeviceInfo(param);
  82. deviceInfo = resultContent.getContent();
  83. operationLogsService.addLogs(String.format("添加了设备;%s", deviceInfo.getDeviceName()), LogsLevel.Middle, deviceInfo);
  84. }
  85. return ResultContent.buildSuccess(deviceInfo);
  86. }
  87. /**
  88. * 设备列表
  89. *
  90. * @param pageable
  91. * @param param
  92. * @return
  93. */
  94. public ResultContent<Page<DeviceInfoModel>> pageDevice(Pageable pageable, DeviceInfoSearchParam param) {
  95. Page<DeviceInfo> page = deviceInfoDao.page(pageable, param);
  96. return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toModel));
  97. }
  98. /**
  99. * @return
  100. */
  101. public ResultContent updateRemark(DeviceInfoUpdateRemark param) {
  102. DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
  103. if (ObjectUtils.isEmpty(deviceInfo)) {
  104. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
  105. }
  106. deviceInfo.setRemark(param.getRemark());
  107. deviceInfoDao.save(deviceInfo);
  108. return ResultContent.buildSuccess();
  109. }
  110. /**
  111. * 编辑设备关联的模版
  112. *
  113. * @param param
  114. * @return
  115. */
  116. public ResultContent updateIopTemplate(DeviceInfoUpdateRemark param) {
  117. DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
  118. if (ObjectUtils.isEmpty(deviceInfo)) {
  119. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
  120. }
  121. IotTemplate iotTemplate = iotTemplateDao.findTopById(param.getIotTemplateId());
  122. if (ObjectUtils.isEmpty(iotTemplate)) {
  123. return ResultContent.buildFail(String.format("模版ID不存在:", param.getId()));
  124. }
  125. deviceInfo.setIotTemplate(iotTemplate);
  126. deviceInfoDao.save(deviceInfo);
  127. return ResultContent.buildSuccess();
  128. }
  129. /**
  130. * 编辑设备关联的模版
  131. *
  132. * @param param
  133. * @return
  134. */
  135. public ResultContent updateIsReportLogs(DeviceInfoUpdateRemark param) {
  136. DeviceInfo deviceInfo = deviceInfoDao.findTopById(param.getId());
  137. if (ObjectUtils.isEmpty(deviceInfo)) {
  138. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
  139. }
  140. deviceInfo.setIsReportLogs(param.getIsReportLogs());
  141. deviceInfoDao.save(deviceInfo);
  142. return ResultContent.buildSuccess();
  143. }
  144. /**
  145. * 测试设备的连接时间
  146. *
  147. * @param id
  148. * @return
  149. */
  150. public ResultContent<Long> testDevice(String id) {
  151. Long time = 0L;
  152. return ResultContent.buildSuccess(time);
  153. }
  154. /**
  155. * 得到设备关联的物模型定义
  156. *
  157. * @param id
  158. * @return
  159. */
  160. public ResultContent<List<IotMainModel>> getDeviceIotMain(String id) {
  161. DeviceInfo deviceInfo = deviceInfoDao.findTopById(id);
  162. if (ObjectUtils.isEmpty(deviceInfo)) {
  163. return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
  164. }
  165. List<IotMainModel> models = new ArrayList<>();
  166. if (deviceInfo.getIotTemplate() != null) {
  167. ResultContent<List<IotMainModel>> resultContent = iotService.getTemplateIotMainList(deviceInfo.getIotTemplate().getId());
  168. models = resultContent.getContent();
  169. }
  170. return ResultContent.buildSuccess(models);
  171. }
  172. /**
  173. * 删除设备
  174. *
  175. * @param deviceId
  176. * @return
  177. */
  178. public ResultContent deleteDeviceInfo(String deviceId) {
  179. DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(deviceId);
  180. if (ObjectUtils.isEmpty(deviceInfo)) {
  181. return ResultContent.buildFail(String.format("设备ID不存在:%s", deviceId));
  182. }
  183. deviceInfoDao.delete(deviceInfo);
  184. operationLogsService.addLogs(String.format("删除了设备;%s", deviceInfo.getDeviceName()), LogsLevel.High, deviceInfo);
  185. return ResultContent.buildSuccess();
  186. }
  187. public ResultContent<DeviceInfoModel> getDeviceById(String id) {
  188. DeviceInfoModel model = null;
  189. DeviceInfo deviceInfo = deviceInfoDao.findTopById(id);
  190. if (ObjectUtils.isNotEmpty(deviceInfo)) {
  191. model = toModel(deviceInfo);
  192. }
  193. return ResultContent.buildSuccess(model);
  194. }
  195. public DeviceInfoModel toModel(DeviceInfo deviceInfo) {
  196. DeviceInfoModel deviceInfoModel = new DeviceInfoModel();
  197. if (ObjectUtils.isNotEmpty(deviceInfo)) {
  198. BeanUtils.copyProperties(deviceInfo, deviceInfoModel);
  199. deviceInfoModel.setIotTemplate(iotService.toModel(deviceInfo.getIotTemplate()));
  200. deviceInfoModel.setProjectInfo(projectInfoService.toModel(deviceInfo.getProjectInfo()));
  201. }
  202. return deviceInfoModel;
  203. }
  204. }