wjli
2024-04-12 e8f0b3422d307c686b3a81269f9e9e4fb34a846e
xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/util/MQTT.java
@@ -2,8 +2,11 @@
import cn.exrick.xboot.your.entity.Alarm;
import cn.exrick.xboot.your.entity.Car;
import cn.exrick.xboot.your.entity.EventLog;
import cn.exrick.xboot.your.service.IAlarmService;
import cn.exrick.xboot.your.service.ICarService;
import cn.exrick.xboot.your.service.IEventLogService;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
@@ -13,12 +16,20 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component
public class MQTT {
    @Autowired
    private IAlarmService iAlarmService;
    @Autowired
    private ICarService iCarService;
    @Autowired
    private HaiKangPost haiKangPost;
    @Autowired
    private IEventLogService iEventLogService;
    public static void main(String[] args) {
        MQTT mqtt = new MQTT();
@@ -26,7 +37,8 @@
    }
    public void event(String clientid,String userName,String passWord){
        String HOST = "tcp://111.63.178.115:1883";
        String HOST = "tcp://10.10.101.1:1883";
        //String HOST = "tcp://111.63.178.115:1883";
        String TOPIC = "artemis/event_msa_alarm/5201154049/admin";
        int qos = 1;
//            String clientid = "28156526";
@@ -50,11 +62,22 @@
            // 设置回调函数
            client.setCallback(new MqttCallback() {
                public void connectionLost(Throwable cause) {
                    System.out.println("connectionLost");
                    //System.out.println("connectionLost");
                    String topicInfo = haiKangPost.getTopicInfo();
                    //System.out.println("重连-订阅信息:"+topicInfo);
                    JSONObject jsonObject = JSONUtil.parseObj(topicInfo);
                    if(jsonObject.get("data")!=null){
                        String data = jsonObject.get("data").toString();
                        JSONObject jsonObject2 = JSONUtil.parseObj(data);
                        String clientId = jsonObject2.get("clientId").toString();
                        String userName = jsonObject2.get("userName").toString();
                        String password = jsonObject2.get("password").toString();
                        event(clientId,userName,password);
                    }
                }
                public void deliveryComplete(IMqttDeliveryToken token) {
                    System.out.println("deliveryComplete---------"+ token.isComplete());
                    //System.out.println("deliveryComplete---------"+ token.isComplete());
                }
@@ -77,16 +100,17 @@
                                    JSONObject jsonObject1 = JSONUtil.parseObj(s1);
                                    String data = jsonObject1.get("data").toString();
                                    JSONObject jsonObject2 = JSONUtil.parseObj(data);
                                    System.out.println(jsonObject2.get("alarmId"));//报警id
                                    System.out.println(jsonObject2.get("vehicleIndexCode"));//车辆code
                                    System.out.println(jsonObject2.get("eventType"));//报警类型
                                    //未系安全带:132376
                                    //抽烟:132375
                                    //接打电话:132374
                                    //疲劳驾驶:132371
                                    String eventType = jsonObject2.get("eventType").toString();
                                    String vehicleIndexCode = jsonObject2.get("vehicleIndexCode").toString();
                                    String alarmId = jsonObject2.get("alarmId").toString();
                                    String alarmTime = jsonObject2.get("alarmTime").toString();
                                    QueryWrapper<Car> wrapper = new QueryWrapper<Car>();
                                    wrapper.eq("code",vehicleIndexCode);
                                    Car car = iCarService.getOne(wrapper);
                                    if(car==null){
                                        return;
                                    }
                                    Alarm alarm = new Alarm();
                                    if(eventType.equals("132371")){
@@ -101,14 +125,24 @@
                                    }else if(eventType.equals("132375")){
                                        alarm.setType(4);
                                        alarm.setValue("抽烟");
                                    }else if(eventType.equals("132405")){
                                        alarm.setType(7);
                                        alarm.setValue("超速");
                                    }else{
                                        return;
                                    }
                                    QueryWrapper<Car> wrapper = new QueryWrapper<Car>();
                                    wrapper.eq("code",vehicleIndexCode);
                                    Car car = iCarService.getOne(wrapper);
                                    if(car==null){
                                    Date date1 = new Date();
                                    long time = date1.getTime()-2*60*1000;
                                    Date date = new Date(time);
                                    String format1 = DateUtil.format(date,"yyyy-MM-dd HH:mm:ss");
                                    String format2 = DateUtil.format(date1,"yyyy-MM-dd HH:mm:ss");
                                    QueryWrapper<Alarm> awrapper = new QueryWrapper<>();
                                    awrapper.between("create_time",format1,format2);
                                    awrapper.eq("car_no",car.getCarNo());
                                    awrapper.eq("type",alarm.getType());
                                    List<Alarm> list = iAlarmService.list(awrapper);
                                    if(list.size()>0){
                                        return;
                                    }
@@ -117,8 +151,14 @@
                                    alarm.setCarNo(car.getCarNo());
                                    alarm.setCarUserId(car.getUserId());
                                    alarm.setFollowUserId(car.getFollowUserId());
                                    alarm.setAlarmTime(alarmTime);
                                    iAlarmService.saveOrUpdate(alarm);
                                    EventLog eventLog = new EventLog();
                                    eventLog.setType(alarm.getType());
                                    eventLog.setRefId(alarmId);
                                    eventLog.setCarNo(car.getCarNo());
                                    iEventLogService.saveOrUpdate(eventLog);
                                }
                            }
                        }