MqttServiceImpl.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package com.usky.service.mqtt;
  2. import com.usky.config.webScoket.WsSessionManager;
  3. import com.usky.dao.impl.BaseDaoImpl;
  4. import com.usky.entity.mqtt.TbDeviceAlarmsDTO;
  5. import com.usky.entity.mqtt.TbDeviceInfoDTO;
  6. import com.usky.utils.RedisUtil;
  7. import com.usky.utils.TimeUtil;
  8. import net.sf.json.JSONArray;
  9. import net.sf.json.JSONObject;
  10. import org.hibernate.Session;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import org.springframework.web.socket.TextMessage;
  15. import java.text.SimpleDateFormat;
  16. import java.util.Date;
  17. /**
  18. * @author laowo
  19. * @version v1.0
  20. * @date 2021/8/10 15:12
  21. * @description TODO
  22. **/
  23. @Service
  24. @Transactional
  25. public class MqttServiceImpl extends BaseDaoImpl implements MqttService {
  26. @Autowired
  27. private RedisUtil redisUtil;
  28. @Override
  29. public void infoSava(JSONObject data) {
  30. //获取设备列表
  31. JSONArray devs = (JSONArray) data.get("devs");
  32. for (int i = 0; i < devs.size(); i++) {
  33. //获取属性列表
  34. JSONObject device = (JSONObject) devs.get(i);
  35. Object timeStamp = device.get("timeStamp");
  36. String time = TimeUtil.getTime(timeStamp.toString());
  37. device.put("timeStamp",time);
  38. device.put("type", "INFO");
  39. redisUtil.set((String) device.get("devId"), device.toString());
  40. JSONArray dp = (JSONArray) device.get("dp");
  41. for (int j = 0; j < dp.size(); j++) {
  42. TbDeviceInfoDTO deviceInfoDTO = new TbDeviceInfoDTO();
  43. //设备属性信息
  44. JSONObject devDp = (JSONObject) dp.get(j);
  45. deviceInfoDTO.setDevId((String) device.get("devId"));
  46. deviceInfoDTO.setDevcieModel((String) device.get("deviceModel"));
  47. deviceInfoDTO.setDeviceName((String) device.get("deviceName"));
  48. deviceInfoDTO.setDevceType(String.valueOf(device.get("deviceType")));
  49. deviceInfoDTO.setTimeStamp(device.get("timeStamp").toString());
  50. deviceInfoDTO.setProperty((String) devDp.get("property"));
  51. deviceInfoDTO.setSerial((String) devDp.get("serial"));
  52. deviceInfoDTO.setValue(devDp.get("value").toString());
  53. deviceInfoDTO.setCreateTime(TimeUtil.getTime());
  54. //设备实时状体存续
  55. Session session = getSession();
  56. session.save(deviceInfoDTO);
  57. session.flush();
  58. session.clear();
  59. }
  60. }
  61. }
  62. @Override
  63. public void alarmSendAndSava(JSONObject data) {
  64. //获取设备列表
  65. JSONArray devs = (JSONArray) data.get("alarms");
  66. for (int i = 0; i < devs.size(); i++) {
  67. //获取属性列表
  68. JSONObject device = (JSONObject) devs.get(i);
  69. device.put("type", "ALARM");
  70. JSONArray dp = (JSONArray) device.get("dp");
  71. redisUtil.set((String) device.get("devId"), device.toString());
  72. Object timeStamp = device.get("timeStamp");
  73. String time = TimeUtil.getTime(timeStamp.toString());
  74. device.put("timeStamp",time);
  75. WsSessionManager.sendMessageToAll(new TextMessage(device.toString()));
  76. for (int j = 0; j < dp.size(); j++) {
  77. TbDeviceAlarmsDTO deviceAlarmsDTO = new TbDeviceAlarmsDTO();
  78. //设备属性信息
  79. JSONObject devDp = (JSONObject) dp.get(j);
  80. deviceAlarmsDTO.setDevId((String) device.get("devId"));
  81. deviceAlarmsDTO.setDevcieModel((String) device.get("devcieModel"));
  82. deviceAlarmsDTO.setDeviceName((String) device.get("deviceName"));
  83. deviceAlarmsDTO.setDeviceType(String.valueOf(device.get("deviceType")));
  84. deviceAlarmsDTO.setTimeStamp(device.get("timeStamp").toString());
  85. deviceAlarmsDTO.setProperty((String) devDp.get("property"));
  86. deviceAlarmsDTO.setSerial(String.valueOf(devDp.get("serial")));
  87. deviceAlarmsDTO.setValue(String.valueOf(devDp.get("value")));
  88. deviceAlarmsDTO.setStatus((Integer) devDp.get("status"));
  89. deviceAlarmsDTO.setCreateTime(TimeUtil.getTime());
  90. //告警存储
  91. Session session = getSession();
  92. //webSocket告警推送
  93. session.save(deviceAlarmsDTO);
  94. session.flush();
  95. session.clear();
  96. }
  97. }
  98. }
  99. }