package com.tievd.jyz.handler; import com.alibaba.fastjson.JSON; import com.tievd.jyz.cache.AlgorithmCache; import com.tievd.jyz.cache.DeviceCache; import com.tievd.jyz.entity.Device; import com.tievd.jyz.entity.PatrolConfig; import com.tievd.jyz.entity.SysAlgorithmItem; import com.tievd.jyz.mqtt.dto.MqttParamDTO; import com.tievd.jyz.service.IPatrolConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.sql.Time; /** * 事件接收处理类 * @author timi */ @Slf4j @Component public class PatrolConfigHandler { @Autowired IPatrolConfigService patrolConfigService; public void configPatrol(MqttParamDTO param){ PatrolConfig patrolConfig = JSON.toJavaObject(param.getData(), PatrolConfig.class); String deviceSn = param.getSn(); Device device = DeviceCache.getDeviceBySn(deviceSn); //1&00:00-23:59@2&00:00-23:59@3&00:00-23:59@4&00:00-23:59@5&00:00-23:59@6&00:00-23:59@0&00:00-23:59 //时间段格式如上,当前设计每天时间段一致,故只取第一天时间进行合并 String timePeriod = patrolConfig.getTimePeriod(); Time start = null; Time end = null; try { timePeriod = timePeriod.substring(timePeriod.indexOf("1&") + 2, timePeriod.indexOf("@2&")); String[] periods = timePeriod.split("\\|"); //合并时间段 for (String period : periods) { String[] time = period.split("-"); if (time.length < 2) continue; Time s = Time.valueOf(time[0] + ":00"); Time e = Time.valueOf(time[1] + ":00"); if (start == null || start.after(s)) start = s; if (end == null || end.before(e)) end = e; } if (start == null || end == null){ log.info("巡查时间段数据异常"); return; } } catch (Exception e) { log.info("======> 巡查配置时间段转换失败:{}", timePeriod); return; } patrolConfig.setTimeStart(start); patrolConfig.setTimeEnd(end); SysAlgorithmItem alg = AlgorithmCache.getAlgorithmMap(patrolConfig.getAlgorithmCode()); patrolConfig.setAlgorithmName(alg.getAlgorithmName()).setOrgCode(device.getOrgCode()).generateId(); patrolConfigService.saveOrUpdate(patrolConfig); } }