123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package com.usky.service.mqtt;
- import com.usky.config.webScoket.WsSessionManager;
- import com.usky.dao.impl.BaseDaoImpl;
- import com.usky.entity.mqtt.TbDeviceAlarmsDTO;
- import com.usky.entity.mqtt.TbDeviceInfoDTO;
- import com.usky.utils.RedisUtil;
- import com.usky.utils.TimeUtil;
- import net.sf.json.JSONArray;
- import net.sf.json.JSONObject;
- import org.hibernate.Session;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.socket.TextMessage;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- /**
- * @author laowo
- * @version v1.0
- * @date 2021/8/10 15:12
- * @description TODO
- **/
- @Service
- @Transactional
- public class MqttServiceImpl extends BaseDaoImpl implements MqttService {
- @Autowired
- private RedisUtil redisUtil;
- @Override
- public void infoSava(JSONObject data) {
- //获取设备列表
- JSONArray devs = (JSONArray) data.get("devs");
- for (int i = 0; i < devs.size(); i++) {
- //获取属性列表
- JSONObject device = (JSONObject) devs.get(i);
- Object timeStamp = device.get("timeStamp");
- String time = TimeUtil.getTime(timeStamp.toString());
- device.put("timeStamp",time);
- device.put("type", "INFO");
- redisUtil.set((String) device.get("devId"), device.toString());
- JSONArray dp = (JSONArray) device.get("dp");
- for (int j = 0; j < dp.size(); j++) {
- TbDeviceInfoDTO deviceInfoDTO = new TbDeviceInfoDTO();
- //设备属性信息
- JSONObject devDp = (JSONObject) dp.get(j);
- deviceInfoDTO.setDevId((String) device.get("devId"));
- deviceInfoDTO.setDevcieModel((String) device.get("deviceModel"));
- deviceInfoDTO.setDeviceName((String) device.get("deviceName"));
- deviceInfoDTO.setDevceType(String.valueOf(device.get("deviceType")));
- deviceInfoDTO.setTimeStamp(device.get("timeStamp").toString());
- deviceInfoDTO.setProperty((String) devDp.get("property"));
- deviceInfoDTO.setSerial((String) devDp.get("serial"));
- deviceInfoDTO.setValue(devDp.get("value").toString());
- deviceInfoDTO.setCreateTime(TimeUtil.getTime());
- //设备实时状体存续
- Session session = getSession();
- session.save(deviceInfoDTO);
- session.flush();
- session.clear();
- }
- }
- }
- @Override
- public void alarmSendAndSava(JSONObject data) {
- //获取设备列表
- JSONArray devs = (JSONArray) data.get("alarms");
- for (int i = 0; i < devs.size(); i++) {
- //获取属性列表
- JSONObject device = (JSONObject) devs.get(i);
- device.put("type", "ALARM");
- JSONArray dp = (JSONArray) device.get("dp");
- redisUtil.set((String) device.get("devId"), device.toString());
- Object timeStamp = device.get("timeStamp");
- String time = TimeUtil.getTime(timeStamp.toString());
- device.put("timeStamp",time);
- WsSessionManager.sendMessageToAll(new TextMessage(device.toString()));
- for (int j = 0; j < dp.size(); j++) {
- TbDeviceAlarmsDTO deviceAlarmsDTO = new TbDeviceAlarmsDTO();
- //设备属性信息
- JSONObject devDp = (JSONObject) dp.get(j);
- deviceAlarmsDTO.setDevId((String) device.get("devId"));
- deviceAlarmsDTO.setDevcieModel((String) device.get("devcieModel"));
- deviceAlarmsDTO.setDeviceName((String) device.get("deviceName"));
- deviceAlarmsDTO.setDeviceType(String.valueOf(device.get("deviceType")));
- deviceAlarmsDTO.setTimeStamp(device.get("timeStamp").toString());
- deviceAlarmsDTO.setProperty((String) devDp.get("property"));
- deviceAlarmsDTO.setSerial(String.valueOf(devDp.get("serial")));
- deviceAlarmsDTO.setValue(String.valueOf(devDp.get("value")));
- deviceAlarmsDTO.setStatus((Integer) devDp.get("status"));
- deviceAlarmsDTO.setCreateTime(TimeUtil.getTime());
- //告警存储
- Session session = getSession();
- //webSocket告警推送
- session.save(deviceAlarmsDTO);
- session.flush();
- session.clear();
- }
- }
- }
- }
|