| | |
| | | package com.fzzy.gateway.hx2023.service; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.fzzy.api.data.GatewayDeviceProtocol; |
| | | import com.fzzy.api.utils.NumberUtil; |
| | | import com.fzzy.gateway.api.GatewaySyncGranService; |
| | | import com.fzzy.gateway.data.BaseResp; |
| | | import com.fzzy.gateway.data.WeatherWebDto; |
| | | import com.fzzy.gateway.data.BaseReqData; |
| | | import com.fzzy.gateway.entity.GatewayDevice; |
| | | import com.fzzy.gateway.hx2023.ScConstant; |
| | | import com.fzzy.gateway.hx2023.data.*; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang.StringUtils; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 网关与粮情分机通讯和解析 |
| | |
| | | return GatewayDeviceProtocol.DEVICE_TEST.getCode(); |
| | | } |
| | | |
| | | @Override |
| | | public KafaGrainData syncGrain(SyncReqData reqData) { |
| | | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public BaseResp syncGrain2(SyncReqData reqData) { |
| | | public BaseResp syncGrain(BaseReqData reqData) { |
| | | |
| | | GatewayDevice device = reqData.getDevice(); |
| | | |
| | | |
| | | if (StringUtils.isEmpty(device.getCableCir())) { |
| | | return getGrainTest1(reqData, device); |
| | | } |
| | | |
| | | |
| | | BaseResp resp = new BaseResp(); |
| | | resp.setCode(500); |
| | | resp.setMsg("没有匹配到规则"); |
| | | return resp; |
| | | return new BaseResp(); |
| | | } |
| | | |
| | | private BaseResp getGrainTest1(SyncReqData reqData, GatewayDevice device) { |
| | | |
| | | String[] cableRule = device.getCableRule().split("-"); |
| | | |
| | | int cableZ = Integer.valueOf(cableRule[0]); |
| | | int cableY = Integer.valueOf(cableRule[1]); |
| | | int cableX = Integer.valueOf(cableRule[2]); |
| | | int sumNum = cableZ * cableY * cableX; |
| | | |
| | | |
| | | WeatherWebDto weather = WeatherWebDto.contextMap.get("default"); |
| | | double tMIn = 20, tMax = 25; |
| | | if (null != weather) { |
| | | double tOut = Double.valueOf(weather.getTem()); |
| | | tMIn = tOut - 4; |
| | | if(tMIn < 4)tMIn = 5; |
| | | tMax = tOut + 0; |
| | | if(tMax< 15)tMax = 15; |
| | | } |
| | | |
| | | |
| | | //数据封装 |
| | | GrainData grain = new GrainData(); |
| | | grain.setMessageId(ScConstant.getMessageId()); |
| | | grain.setDeviceId(device.getDeviceId()); |
| | | grain.setTimestamp(System.currentTimeMillis() + ""); |
| | | |
| | | ClientHeaders headers = new ClientHeaders(); |
| | | headers.setDeviceName(device.getDeviceName()); |
| | | headers.setProductId(device.getProductId()); |
| | | headers.setOrgId(device.getOrgId()); |
| | | headers.setMsgId(ScConstant.getMessageId()); |
| | | grain.setHeaders(headers); |
| | | |
| | | GrainOutPut outPut = new GrainOutPut(); |
| | | |
| | | outPut.setAvgTemperature(NumberUtil.keepPrecision((tMax + tMIn) / 2, 1) + ""); |
| | | outPut.setMinTemperature(tMax + ""); |
| | | outPut.setMaxTemperature(tMIn + ""); |
| | | |
| | | |
| | | List<GrainTemp> temperature = new ArrayList<>(); |
| | | //根号 |
| | | int cableNum = 1, position = 0; |
| | | |
| | | double curTemp = tMIn; |
| | | double randomNumber = tMIn; |
| | | int x = 0, y = 0, z = 0; |
| | | for (int i = 0; i < sumNum; i++) { |
| | | if((i) % Integer.valueOf(cableRule[0]) == 0){ |
| | | randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | |
| | | } else if ((i) % Integer.valueOf(cableRule[0]) == 1) { |
| | | randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | |
| | | }else if ((i) % Integer.valueOf(cableRule[0]) == 2) { |
| | | randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | |
| | | }else if ((i) % Integer.valueOf(cableRule[0]) == 3) { |
| | | randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | |
| | | }else if ((i) % Integer.valueOf(cableRule[0]) == 4) { |
| | | randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | |
| | | }else { |
| | | randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | |
| | | } |
| | | // randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | | curTemp = NumberUtil.keepPrecision(randomNumber, 1); |
| | | position = i; |
| | | z = i % cableZ + 1; |
| | | x = i / (cableZ * cableY); |
| | | y = x * (cableZ * cableY); |
| | | y = (i - y) / cableZ; |
| | | |
| | | //根号 |
| | | cableNum = (i / cableZ) + 1; |
| | | |
| | | temperature.add(new GrainTemp(cableNum + "", z + "", curTemp + "", position + "")); |
| | | } |
| | | |
| | | outPut.setTemperature(temperature); |
| | | |
| | | grain.setOutPut(outPut); |
| | | |
| | | //气象信息 |
| | | GrainWeather weatherStation = new GrainWeather(); |
| | | weatherStation.setMessageId(ScConstant.getMessageId()); |
| | | weatherStation.setId(device.getDeviceId()); |
| | | weatherStation.setAirPressure(weather.getPressure()); |
| | | weatherStation.setHumidity(weather.getHumidity()); |
| | | weatherStation.setPm(weather.getAir_pm25()); |
| | | weatherStation.setRadiation("0"); |
| | | weatherStation.setRainfallAmount(weather.getWea()); |
| | | weatherStation.setTemperature(weather.getTem()); |
| | | weatherStation.setWindDirection(weather.getWin()); |
| | | weatherStation.setWindPower(weather.getWin_meter()); |
| | | weatherStation.setWindSpeed(weather.getWin_speed()); |
| | | grain.setWeatherStation(weatherStation); |
| | | |
| | | BaseResp resp = new BaseResp(); |
| | | resp.setData(JSONObject.toJSONString(grain)); |
| | | |
| | | return resp; |
| | | } |
| | | } |
| | | |