jiazx0107@163.com
2023-09-18 4dc585d5bf2fd0a01602aba0d9fa25adbaf4a7fb
igds-basic/src/main/java/com/ld/igds/timer/WeatherTimerService.java
ÎļþÃû´Ó igds-basic/src/main/java/com/ld/igds/timer/WeatherScheduled.java ÐÞ¸Ä
@@ -24,9 +24,9 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -46,7 +46,7 @@
 */
@Slf4j
@Component
public class WeatherScheduled {
public class WeatherTimerService {
    @Resource(name = NotifyWeatherService.BEAN_ID)
    private NotifyWeatherService notifyService;
@@ -74,8 +74,7 @@
    /**
     * å®šæ—¶èŽ·å–æ°”è±¡ä¿¡æ¯ï¼Œè¯·æ³¨æ„ï¼Œç”±äºŽæ°”è±¡æ”¯æŒå¤–ç½‘å’Œè‡ªå®šä¹‰æ°”è±¡ç«™ï¼Œç³»ç»Ÿé»˜è®¤åªæ‰§è¡Œå…¶ä¸­ä¸€ç§æ–¹å¼
     */
    @Scheduled(cron = "0 0/30 * * * ?")
    public void scheduled() {
    public void doExe() {
        log.info("===========================系统定时获获取气象信息======================");
@@ -179,9 +178,9 @@
    private void getWeatherByRkV30(Date date, WeatherConf conf) {
        //若用户、密码、IP地址有一为空则返回
        if(StringUtils.isEmpty(conf.getAccount())
        if (StringUtils.isEmpty(conf.getAccount())
                || StringUtils.isEmpty(conf.getPassword())
                || StringUtils.isEmpty(conf.getIp())){
                || StringUtils.isEmpty(conf.getIp())) {
            return;
        }
@@ -199,15 +198,15 @@
        String body = ans.getBody();
        log.debug("-----当前建大仁科平台获取气象信息-----,返回数据={}", body);
        RkResult response = JSONObject.parseObject(body, RkResult.class);
        if(StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())){
        if (StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())) {
            log.error("当前建大仁科平台获取气象信息失败......");
            return;
        }
        List<JSONObject> result = JSON.parseArray(JSONObject.toJSONString(response.getData()), JSONObject.class);
        JSONArray lists = (JSONArray)result.get(0).get("dataItem");
        JSONArray lists = (JSONArray) result.get(0).get("dataItem");
        List<RkDto> list = JSON.parseArray(JSONObject.toJSONString(lists), RkDto.class);
        if(null == list || list.isEmpty()){
        if (null == list || list.isEmpty()) {
            return;
        }
        WeatherInfo info = new WeatherInfo();
@@ -221,55 +220,55 @@
        //根据地址判断选项
        for (RkDto rkDto : list) {
            //温湿度
            if("11".equals(rkDto.getNodeId())){
            if ("11".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //温度
                    if("1".equals(rkData.getRegisterId())){
                    if ("1".equals(rkData.getRegisterId())) {
                        info.setTemp(rkData.getData());
                    }
                    //湿度
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setHumidity(rkData.getData());
                    }
                }
            }
            //风力风速
            if("1".equals(rkDto.getNodeId())){
            if ("1".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //风力
                    if("1".equals(rkData.getRegisterId())){
                    if ("1".equals(rkData.getRegisterId())) {
                        info.setWindSpeed(rkData.getData() + "级");
                    }
                    //风速
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setWindMeter(rkData.getData());
                    }
                }
            }
            //风向
            if("2".equals(rkDto.getNodeId())){
            if ("2".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //风向
                    if("1".equals(rkData.getRegisterId())){
                    if ("1".equals(rkData.getRegisterId())) {
                        info.setWindDirection(rkData.getData());
                    }
                }
            }
            //大气压
            if("14".equals(rkDto.getNodeId())){
            if ("14".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
                    //大气压
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setPressure(rkData.getData());
                    }
                }
            }
            //雨量
            if("21".equals(rkDto.getNodeId())){
            if ("21".equals(rkDto.getNodeId())) {
                dataList = rkDto.getRegisterItem();
                for (RkData rkData : dataList) {
//                    //瞬时雨量
@@ -277,33 +276,33 @@
//                        info.setRainfall(rkData.getData());
//                    }
                    //当前雨量
                    if("2".equals(rkData.getRegisterId())){
                    if ("2".equals(rkData.getRegisterId())) {
                        info.setRainfall(rkData.getData());
                    }
                }
            }
            //有无雨雪
            if("16".equals(rkDto.getNodeId())){
            if ("16".equals(rkDto.getNodeId())) {
                weatherList = rkDto.getRegisterItem();
            }
        }
        for (RkData rkData : weatherList) {
            //天气
            if("1".equals(rkData.getRegisterId())){
            if ("1".equals(rkData.getRegisterId())) {
                info.setWeather(rkData.getData());
                //有雨雪时判断当前雨量
                if("有雨雪".equals(rkData.getData())){
                if ("有雨雪".equals(rkData.getData())) {
                    Double rainfall = Double.valueOf(info.getRainfall());
                    if(rainfall <= 10){
                    if (rainfall <= 10) {
                        info.setWeather("小雨");
                    }
                    if(rainfall > 10 && rainfall <= 25){
                    if (rainfall > 10 && rainfall <= 25) {
                        info.setWeather("中雨");
                    }
                    if(rainfall > 25 && rainfall <= 50){
                    if (rainfall > 25 && rainfall <= 50) {
                        info.setWeather("大雨");
                    }
                    if(rainfall > 50){
                    if (rainfall > 50) {
                        info.setWeather("暴雨");
                    }
                }
@@ -316,6 +315,7 @@
    /**
     * èŽ·å–èº«ä»½è®¤è¯çš„æŽˆæƒaccessToken
     *
     * @param conf
     * @return
     */
@@ -334,7 +334,7 @@
            }
            log.info("获取的身份认证信息={}", response);
            if(StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())){
            if (StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())) {
                log.error("当前建大仁科平台获取身份认证信息失败......");
                return null;
            }
@@ -345,9 +345,10 @@
            token = (String) result.get("token");
            //将token存入缓存,
            redisUtil.set(key, token, 2*60*60);
            redisUtil.set(key, token, 2 * 60 * 60);
        }
        return token;
    }
}