Newer
Older
sink / src / main / java / org / flume / alarm / resp / TempPressureResponse.java
zhout on 2 Mar 2022 5 KB first commit
package org.flume.alarm.resp;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.flume.alarm.AlarmEnumDTO.NoiseAlarmEnum;
import org.flume.alarm.AlarmEnumDTO.TemperaturePressAlarmEnum;
import org.flume.alarm.base.AbstractResponse;
import org.flume.alarm.base.DeviceTypeEnum;
import org.flume.alarm.core.util.StringUtils;
import org.flume.alarm.manager.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * Created by lenovo on 2018/1/9.
 */
public class TempPressureResponse extends AbstractResponse {

    private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
    private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"};

    @Override
    public void process(String content) {
        ClassPathXmlApplicationContext ac = this.getAc();
        TemperatureManager temperatureManager = ac.getBean(TemperatureManager.class);
        PressManager pressManager = ac.getBean(PressManager.class);
//        AlarmRuleManager alarmRuleManager = ac.getBean(AlarmRuleManager.class);
        AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class);
        DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class);
        ImeiManager imeiManager = ac.getBean(ImeiManager.class);
        JSONObject json = JSONObject.fromObject(content);
        String devCode = json.get("devCode").toString();
        logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------");
        JSONObject jsonObject = (JSONObject) json.get("mBody");
        if (mType[0].equals(json.get("mType"))||mType[3].equals(json.get("mType"))) {//存储上报数据
            String cell = jsonObject.get("cell").toString();
            JSONArray jsonArray = (JSONArray) jsonObject.get("datas");
            for (int i = 0; i < jsonArray.size(); i++) {
                try {
                    String temperature = null!=((JSONObject) jsonArray.get(i)).get("temperature")?
                            ((JSONObject) jsonArray.get(i)).get("temperature").toString():"";
                    String pressure = null!=((JSONObject) jsonArray.get(i)).get("pressure")?
                            ((JSONObject) jsonArray.get(i)).get("pressure").toString():"";
                    String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
                    temperatureManager.saveData(devCode, upTime, temperature, cell);//存采集数据
                    pressManager.saveData(devCode, upTime, pressure, cell);//存采集数据
//                    String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Noise.toString());//获取报警阈值
//                    if (StringUtils.isNotBlank(thresh) &&
//                            Float.valueOf(val) > Float.valueOf(thresh)) {
//                        alarmRecordManager.saveData(devCode, DeviceTypeEnum.Noise.toString(), val,
//                                String.valueOf(NoiseAlarmEnum.OVER_THRESH.getIndex()));
//                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
                }
            }
        } else if (mType[1].equals(json.get("mType"))) {//存储报警事件
            JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
            for (int i = 0; i < jsonArray.size(); i++) {
                try {
                    alarmRecordManager.saveData(devCode, DeviceTypeEnum.TempPressure.toString(), "",
                            String.valueOf(TemperaturePressAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()),"1");
                } catch (IOException e) {
                    e.printStackTrace();
                    logger.error("--------ERROR:设备编号:" + devCode + ",存储报警数据:" + jsonArray.get(i).toString() + "失败-------");
                }
            }
        }else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态
            try {
                if (DeviceTypeEnum.TempPressure.name().equals(json.get("devType"))) {
                    if ("TempPressureConfigSuccess".equals(jsonObject.get("bType"))) {
                        deviceConfigManager.updateStatus(devCode);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------");
            }
        }else if (mType[4].equals(json.get("mType"))) {//三码存储
            try {
                String imei = jsonObject.get("imei").toString();
                String iccid = jsonObject.get("iccid").toString();
                imeiManager.saveData(devCode,imei,iccid);
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------");
            }
        }
    }
}