DeviceSetupMethodService.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package com.huaxu.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.fasterxml.jackson.core.JsonParser;
  4. import com.fasterxml.jackson.databind.JsonNode;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import com.fasterxml.jackson.databind.node.ObjectNode;
  7. import com.huaxu.dao.DeviceSetupMethodMapper;
  8. import com.huaxu.dto.SetupMethod;
  9. import com.huaxu.entity.DeviceEntity;
  10. import com.huaxu.entity.DeviceSetupMethodEntity;
  11. import com.huaxu.entity.DeviceSetupRecordEntity;
  12. import com.huaxu.model.LoginUser;
  13. import com.huaxu.util.UserUtil;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.stereotype.Service;
  17. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  18. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  19. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  20. import javax.annotation.Resource;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.io.IOException;
  23. import java.util.Date;
  24. import java.util.Map;
  25. import java.util.List;
  26. import java.util.Arrays;
  27. /**
  28. * 参数设置指令Service接口
  29. *
  30. * @author: WYY
  31. * @date 2021-05-10 14:39
  32. */
  33. @Service
  34. public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMapper, DeviceSetupMethodEntity> {
  35. @Resource
  36. private DeviceSetupMethodMapper deviceSetupMethodMapper;
  37. @Autowired
  38. private DeviceSetupRecordService deviceSetupRecordService;
  39. @Autowired
  40. private DeviceService deviceService;
  41. @Value("${send.setsetup.url}")
  42. private String setSetupUrl;
  43. /**
  44. * 查列表
  45. */
  46. public List<DeviceSetupMethodEntity> findList(DeviceSetupMethodEntity deviceSetupMethodEntity) {
  47. return deviceSetupMethodMapper.findList(deviceSetupMethodEntity);
  48. }
  49. /**
  50. * 批量删除
  51. */
  52. @Transactional(rollbackFor = Exception.class)
  53. public boolean delDeviceSetupMethodByIds(Long[] ids) {
  54. return this.removeByIds(Arrays.asList(ids));
  55. }
  56. /**
  57. * 单个删除
  58. */
  59. public boolean delDeviceSetupMethodById(Long id) {
  60. return this.removeById(id);
  61. }
  62. /**
  63. * 保存
  64. */
  65. public boolean addDeviceSetupMethod(DeviceSetupMethodEntity deviceSetupMethod) {
  66. if (this.save(deviceSetupMethod)) {
  67. return true;
  68. }
  69. return false;
  70. }
  71. /**
  72. * 修改根居ID
  73. */
  74. public boolean updateDeviceSetupMethodById(DeviceSetupMethodEntity deviceSetupMethod) {
  75. if (this.updateById(deviceSetupMethod)) {
  76. return true;
  77. }
  78. return false;
  79. }
  80. /**
  81. * 根居ID获取对象
  82. */
  83. public DeviceSetupMethodEntity findDeviceSetupMethodById(Long id) {
  84. return deviceSetupMethodMapper.findDeviceSetupMethodById(id);
  85. }
  86. /**
  87. * 添加设备指令
  88. *
  89. * @param type
  90. * @param deviceId
  91. * @param attributeId
  92. * @param parms
  93. * @return
  94. */
  95. public boolean setSetupForDevice(Integer type, Long sceneId,Long deviceId, Long attributeId, String parms) {
  96. LoginUser currentUser = UserUtil.getCurrentUser();
  97. String methodParms="";
  98. //查询设备
  99. DeviceEntity deviceEntity = deviceService.selectById(deviceId);
  100. if (deviceEntity == null)
  101. return false;
  102. //查询操作方法
  103. DeviceSetupMethodEntity info = new DeviceSetupMethodEntity();
  104. info.setType(type);
  105. info.setDeviceId(deviceId);
  106. info.setAttributeId(attributeId);
  107. List<DeviceSetupMethodEntity> deviceSetupMethodEntities = deviceSetupMethodMapper.findList(info);
  108. //查询到操作方法后执行操作
  109. if (deviceSetupMethodEntities.size() > 0) {
  110. String method = deviceSetupMethodEntities.get(0).getMethod();
  111. methodParms = deviceSetupMethodEntities.get(0).getParams();
  112. SetupMethod setupMethod = new SetupMethod();
  113. setupMethod.setMethod(method);
  114. setupMethod.setUnitIdentifier(deviceEntity.getDeviceCode());
  115. setupMethod.setReceiveTime(new Date());
  116. //封装指令
  117. String[] parm = parms.split(",");
  118. ObjectMapper mapper = new ObjectMapper();
  119. for (String item : parm) {
  120. methodParms = methodParms.replaceFirst("%", item);
  121. }
  122. JsonNode node = null;
  123. try {
  124. node = mapper.readTree(methodParms);
  125. } catch (IOException e) {
  126. return false;
  127. }
  128. setupMethod.setParams(node);
  129. System.out.println("指令:"+setSetupUrl);
  130. //添加操作记录
  131. DeviceSetupRecordEntity deviceSetupRecordEntity = new DeviceSetupRecordEntity();
  132. deviceSetupRecordEntity.setType(type);
  133. deviceSetupRecordEntity.setAttributeId(attributeId);
  134. deviceSetupRecordEntity.setDeviceId(deviceId);
  135. deviceSetupRecordEntity.setCreateBy(currentUser.getUsername());
  136. deviceSetupRecordEntity.setUpdateBy(currentUser.getUsername());
  137. deviceSetupRecordEntity.setStatus(1);
  138. deviceSetupRecordEntity.setDateCreate(new Date());
  139. deviceSetupRecordEntity.setDateUpdate(new Date());
  140. deviceSetupRecordEntity.setSceneId(sceneId);
  141. deviceSetupRecordEntity.setParams(methodParms);
  142. deviceSetupRecordEntity.setTenantId(currentUser.getTenantId());
  143. deviceSetupRecordEntity.setSetupMethodId(deviceSetupMethodEntities.get(0).getId());
  144. deviceSetupRecordEntity.setState(1);
  145. deviceSetupRecordService.addDeviceSetupRecord(deviceSetupRecordEntity);
  146. }
  147. return true;
  148. }
  149. }