package com.fzzy.igds.io.notify; import com.fzzy.igds.constant.GrainFrequence; import com.fzzy.igds.constant.OrderRespEnum; import com.fzzy.igds.domain.Depot; import com.fzzy.igds.domain.DepotConf; import com.fzzy.igds.domain.Grain; import com.fzzy.igds.domain.WeatherInfo; import com.fzzy.igds.io.order.ExeOrderService; import com.fzzy.igds.request.ExeBaseRequest; import com.fzzy.igds.service.GrainService; import com.fzzy.igds.service.WeatherService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; @Slf4j @Component public class NotifyGrainInvokerImpl extends NotifyWebParent implements NotifyGrainInvoker { @Resource private GrainService grainService; @Resource private ExeOrderService exeRequestService; @Resource private WeatherService weatherService; @Override public String analysisSuccess(Grain grain, DepotConf depotConf, Depot depot, boolean isNotifyWeb, ExeBaseRequest exeRequest) { grain = addWeatherInfo(grain); try { // 如果是一日多次 if (null == depotConf) { grainService.saveOrUpdateGrain(grain, null); } else { if (depotConf.getGrainFreq().equals( GrainFrequence.FREQ_01.getCode())) { grainService.saveOrUpdateGrain(grain, null); } else { grainService.saveOrUpdateGrain(grain, null); } } String notifyMsg = depot.getName() + " 粮情采集并解析成功,批次号=" + grain.getBatchId(); //完成 exeRequest.setExeMsg(notifyMsg); exeRequestService.completeCache(exeRequest, false); notifyWeb(depotConf.getCompanyId(), OrderRespEnum.MSG_SUCCESS, "grain", notifyMsg); log.info(depot.getName() + "粮情解析成功:" + grain.getBatchId()); } catch (Exception e) { String notifyMsg = depot.getName() + "-保存失败,请勿2分钟内重复采集"; //完成 exeRequest.setErrorMsg(notifyMsg); exeRequestService.completeCache(exeRequest, false); notifyWeb(depotConf.getCompanyId(), OrderRespEnum.MSG_ERROR, "grain", notifyMsg); log.error(depot.getName() + "粮情解析保存失败:" + e); } return null; } @Override public String analysisSuccess(Grain grain, Depot depot) { grain = addWeatherInfo(grain); try { grainService.saveOrUpdateGrain(grain,null); String notifyMsg = depot.getName() + " 收到推送粮情信息并解析成功,批次号=" + grain.getBatchId(); notifyWeb(grain.getCompanyId(), OrderRespEnum.MSG_SUCCESS, "grain", notifyMsg); } catch (Exception e) { String notifyMsg = depot.getName() + "-保存失败,请勿2分钟内重复采集"; this.notifyWeb(grain.getCompanyId(), OrderRespEnum.MSG_ERROR, "grain", notifyMsg); log.error("粮情解析保存失败:" + e); return notifyMsg; } return null; } @Override public String analysisSuccess(Grain grain, Depot depot, ExeBaseRequest exeRequest) { grain = addWeatherInfo(grain); try { grainService.saveOrUpdateGrain(grain,null); String notifyMsg = exeRequest.getDepotName() + " 粮情采集并解析成功,批次号=" + grain.getBatchId(); //完成 exeRequest.setExeMsg(notifyMsg); exeRequestService.completeCache(exeRequest, false); } catch (Exception e) { String notifyMsg = exeRequest.getDepotName() + "-保存失败,请勿2分钟内重复采集"; //完成 exeRequest.setErrorMsg(notifyMsg); exeRequestService.completeCache(exeRequest, false); return notifyMsg; } return null; } @Override public String analysisSuccess(Grain grain, Depot depot, ExeBaseRequest exeRequest, DepotConf depotConf) { grain = addWeatherInfo(grain); try { grainService.saveOrUpdateGrain(grain,null); String notifyMsg = exeRequest.getDepotName() + " 粮情采集并解析成功,批次号=" + grain.getBatchId(); //完成 exeRequest.setExeMsg(notifyMsg); exeRequestService.completeCache(exeRequest, false); notifyWeb(depotConf.getCompanyId(), OrderRespEnum.MSG_SUCCESS, "grain", notifyMsg); log.info(depot.getName() + "粮情解析成功:" + grain.getBatchId()); } catch (Exception e) { String notifyMsg = exeRequest.getDepotName() + "-保存失败,请勿2分钟内重复采集"; //完成 exeRequest.setErrorMsg(notifyMsg); exeRequestService.completeCache(exeRequest, false); notifyWeb(depotConf.getCompanyId(), OrderRespEnum.MSG_ERROR, "grain", notifyMsg); log.error(depot.getName() + "粮情解析保存失败:" + e); return notifyMsg; } return null; } // 从缓存中获取当前的外温度外部湿度 private Grain addWeatherInfo(Grain grain) { if(grain.getHumidityOut() != null && grain.getTempOut() != null){ return grain; } WeatherInfo weatherInfo = weatherService.getCacheWeather(grain.getCompanyId()); Double tOut = -100.0, hOut = -100.0; if (null != weatherInfo) { if (weatherInfo.getTemp().indexOf("℃") > 0) { weatherInfo.setTemp(weatherInfo.getTemp().replace("℃", "")); } if (weatherInfo.getHumidity().indexOf("%") > 0) { weatherInfo.setHumidity(weatherInfo.getHumidity().replace("%", "")); } tOut = Double.valueOf(weatherInfo.getTemp()); hOut = Double.valueOf(weatherInfo.getHumidity()); grain.setWeather(weatherInfo.getWeather()); } if(grain.getHumidityOut() == null || grain.getHumidityOut() == 0.0){ grain.setHumidityOut(hOut); } if(grain.getTempOut() == null || grain.getTempOut() == 0.0){ grain.setTempOut(tOut); } return grain; } }