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(); } } } }