| | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | @Slf4j |
| | | @Component |
| | |
| | | } |
| | | |
| | | private BaseResp pushByV40(BaseReqData reqData, Date start, Date end) { |
| | | |
| | | |
| | | GatewayDevice device = reqData.getDevice(); |
| | | String depotIdSys = device.getDepotIdSys(); |
| | | |
| | |
| | | |
| | | List<Fz40Grain> listGrain = fzzy40CommonService.listGrain(depotIdSys, start, end); |
| | | if (null == listGrain || listGrain.isEmpty()) { |
| | | log.error("---------设备---{}--未同步到粮情信息,请确认当前条件下是否有数据", device.getDeviceName()); |
| | | log.error("---------设备-{}-系统仓库编码-{}-未同步到粮情信息,请确认当前条件下是否有数据", device.getDeviceName(), device.getDepotIdSys()); |
| | | return new BaseResp(BaseResp.CODE_50, "未同步到粮情信息,请确认当前条件下是否有数据"); |
| | | } |
| | | |
| | | //获取最后一条粮情作为当前数据 |
| | | Fz40Grain lastData = listGrain.get(listGrain.size() - 1); |
| | | //获取第一条数据执行推送 |
| | | Fz40Grain lastData = listGrain.get(0); |
| | | KafaGrainData pushData = this.lastData2PushData(lastData, device); |
| | | |
| | | return new BaseResp(JSONObject.toJSONString(pushData)); |
| | |
| | | /** |
| | | * 将粮情数据转换为推送需要的数据格式 |
| | | * |
| | | * @param lastData |
| | | * @param grainData |
| | | * @return |
| | | */ |
| | | private KafaGrainData lastData2PushData(Fz40Grain lastData, GatewayDevice device) { |
| | | private KafaGrainData lastData2PushData(Fz40Grain grainData, GatewayDevice device) { |
| | | KafaGrainData result = new KafaGrainData(); |
| | | |
| | | result.setMessageId(ScConstant.getMessageId()); |
| | | result.setMessgeId(result.getMessageId()); |
| | | result.setDeviceID(device.getDeviceId()); |
| | | result.setAvgTemperature(lastData.getTempAve() + ""); |
| | | result.setMinTemperature(lastData.getTempMin() + ""); |
| | | result.setMaxTemperature(lastData.getTempMax() + ""); |
| | | result.setCollectTime(DateFormatUtils.format(lastData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); |
| | | result.setAvgTemperature(grainData.getTempAve() + ""); |
| | | result.setMinTemperature(grainData.getTempMin() + ""); |
| | | result.setMaxTemperature(grainData.getTempMax() + ""); |
| | | result.setCollectTime(DateFormatUtils.format(grainData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); |
| | | |
| | | //层-行-列 |
| | | String[] attrCable = lastData.getCable().split("-"); |
| | | |
| | | |
| | | if (StringUtils.isNotEmpty(lastData.getCableCir())) { |
| | | return lastData2PushData2(lastData, device); |
| | | String[] attrCable = grainData.getCable().split("-"); |
| | | if (StringUtils.isNotEmpty(grainData.getCableCir())) { |
| | | return lastData2PushData2(grainData, device); |
| | | } |
| | | |
| | | //层行列 |
| | |
| | | int cableX = Integer.valueOf(attrCable[2]); |
| | | |
| | | //温度集合 |
| | | String[] attr = lastData.getPoints().split(","); |
| | | String[] attr = grainData.getPoints().split(","); |
| | | |
| | | //根号 |
| | | int cableNum = 1, position = 0; |
| | | |
| | | String curTemp; |
| | | List<KafkaGrainDataDetail1> temperature = new ArrayList<>(); |
| | | |
| | | int x = 0, y = 0, z = 0; |
| | | for (int i = 0; i < attr.length; i++) { |
| | | |
| | | position = i; |
| | | |
| | | z = i % cableZ + 1; |
| | | x = i / (cableZ * cableY); |
| | | y = x * (cableZ * cableY); |
| | | y = (i - y) / cableZ; |
| | | |
| | | // 倒转X轴 |
| | | x = cableX - 1 - x; |
| | | |
| | | //根号 |
| | | cableNum = (i / cableZ) + 1; |
| | | |
| | | curTemp = attr[i]; |
| | | |
| | | |
| | | //判断最大 |
| | | if (curTemp.equals(result.getMaxTemperature())) { |
| | | result.setMaxX(x + ""); |
| | | result.setMaxY(y + ""); |
| | | result.setMaxZ(position + ""); |
| | | } |
| | | //如果是异常值,执行调整数据 TODO |
| | | if (Double.valueOf(curTemp) < -99.9) { |
| | | |
| | | curTemp = grainData.getTempAve() + ""; |
| | | |
| | | //判断最小 |
| | | if (curTemp.equals(result.getMinTemperature())) { |
| | | result.setMinX(x + ""); |
| | | result.setMinY(y + ""); |
| | | result.setMinZ(position + ""); |
| | | } else { |
| | | //判断最大 |
| | | if (curTemp.equals(result.getMaxTemperature())) { |
| | | result.setMaxX(x + ""); |
| | | result.setMaxY(y + ""); |
| | | result.setMaxZ(position + ""); |
| | | } |
| | | //判断最小 |
| | | if (curTemp.equals(result.getMinTemperature())) { |
| | | result.setMinX(x + ""); |
| | | result.setMinY(y + ""); |
| | | result.setMinZ(position + ""); |
| | | } |
| | | } |
| | | |
| | | temperature.add(new KafkaGrainDataDetail1(cableNum + "", z + "", curTemp, position + "", x + "", y + "")); |
| | | } |
| | | |
| | | //粮温信息 |
| | | |
| | | JSONObject trhInfo = new JSONObject(); |
| | | // TRHInfo trhInfo = new TRHInfo(); |
| | | trhInfo.put("temperature", temperature); |
| | |
| | | |
| | | //仓温度信息 |
| | | KafkaGrainTH grainTH = new KafkaGrainTH(); |
| | | grainTH.setHumidity(lastData.getHumidityIn() + ""); |
| | | grainTH.setTemperature(lastData.getTempIn() + ""); |
| | | grainTH.setAirHumidity(lastData.getHumidityOut() + ""); |
| | | grainTH.setAirTemperature(lastData.getTempOut() + ""); |
| | | grainTH.setHumidity(grainData.getHumidityIn() + ""); |
| | | grainTH.setTemperature(grainData.getTempIn() + ""); |
| | | grainTH.setAirHumidity(grainData.getHumidityOut() + ""); |
| | | grainTH.setAirTemperature(grainData.getTempOut() + ""); |
| | | |
| | | List<KafkaGrainTH> temperatureAndhumidity = new ArrayList<>(); |
| | | temperatureAndhumidity.add(grainTH); |
| | |
| | | for (int i = 0; i < sumNum; i++) { |
| | | log.info("i=:" + i); |
| | | if (i % cableZ == 0) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn, tMax+1.5); |
| | | randomNumber = RandomUtils.nextDouble(tMIn, tMax + 1.5); |
| | | log.info("第1层温度:" + randomNumber); |
| | | } else if (i % cableZ == 1) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn-1, tMax-0); |
| | | } else if (i % cableZ == 1) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn - 1, tMax - 0); |
| | | log.info("第2层温度:" + randomNumber); |
| | | } else if (i % cableZ == 2) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn-2, tMax-1.5); |
| | | } else if (i % cableZ == 2) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn - 2, tMax - 1.5); |
| | | log.info("第3层温度:" + randomNumber); |
| | | } else if (i % cableZ == 3) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn-3, tMax-3); |
| | | } else if (i % cableZ == 3) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn - 3, tMax - 3); |
| | | log.info("第4层温度:" + randomNumber); |
| | | } else if (i % cableZ == 4) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn-4, tMax-4.5); |
| | | } else if (i % cableZ == 4) { |
| | | randomNumber = RandomUtils.nextDouble(tMIn - 4, tMax - 4.5); |
| | | log.info("第5层温度:" + randomNumber); |
| | | } |
| | | // randomNumber = Math.random() * (tMax - tMIn + 1) + tMIn; |
| | |
| | | outPut.setTemperature(temperature); |
| | | List<GrainTH> ths = new ArrayList<>(); |
| | | |
| | | ths.add(new GrainTH(weather.getTem()!=null?weather.getTem()+"":"",weather.getHumidity()!=null?weather.getHumidity()+"":"","1")); |
| | | ths.add(new GrainTH(weather.getTem() != null ? weather.getTem() + "" : "", weather.getHumidity() != null ? weather.getHumidity() + "" : "", "1")); |
| | | outPut.setTemperatureAndhumidity(ths); |
| | | |
| | | grain.setOutput(JSONObject.toJSONString(outPut)); |