From fbcbe6c975554786683c38798ce8527d27993543 Mon Sep 17 00:00:00 2001 From: jiazx0107@163.com <jiazx0107@163.com> Date: 星期六, 20 一月 2024 17:49:59 +0800 Subject: [PATCH] 测试调整筒仓的逻辑 --- src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java | 232 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 123 insertions(+), 109 deletions(-) diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java index b2bbc4b..aeb01f0 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java @@ -1,23 +1,27 @@ package com.fzzy.gateway.hx2023.service; -import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson.JSONObject; +import com.fzzy.api.data.DepotType; import com.fzzy.api.data.GatewayDeviceType; import com.fzzy.api.data.PushProtocol; import com.fzzy.api.utils.DateUtil; import com.fzzy.api.utils.NumberUtil; +import com.fzzy.api.utils.RedisConst; +import com.fzzy.api.utils.RedisUtil; import com.fzzy.async.fzzy40.Fzzy40CommonService; import com.fzzy.async.fzzy40.entity.Fz40Grain; +import com.fzzy.data.ConfigData; import com.fzzy.gateway.GatewayUtils; import com.fzzy.gateway.api.GatewayDeviceTestService; import com.fzzy.gateway.data.BaseReqData; import com.fzzy.gateway.data.BaseResp; +import com.fzzy.gateway.data.GrainCableData; import com.fzzy.gateway.data.WeatherWebDto; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.gateway.hx2023.ScConstant; import com.fzzy.gateway.hx2023.data.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang3.RandomUtils; import org.springframework.stereotype.Component; @@ -34,6 +38,11 @@ @Resource private DeviceReportServiceImpl deviceReportService; + @Resource + private ConfigData configData; + @Resource + private RedisUtil redisUtil; + @Override public String getProtocol() { return PushProtocol.GATEWAY_SC_2023.getCode(); @@ -44,14 +53,120 @@ GatewayDevice device = reqData.getDevice(); - if (StringUtils.isEmpty(device.getCableCir())) { + if (DepotType.TYPE_02.getCode().equals(device.getDepotType())) { + return getGrainTest2(reqData, device); + } else if (DepotType.TYPE_04.getCode().equals(device.getDepotType())) { + return getGrainTest2(reqData, device); + } else if (DepotType.TYPE_03.getCode().equals(device.getDepotType())) { + return getGrainTest3(reqData, device); + } else { return getGrainTest1(reqData, device); } + } + + private BaseResp getGrainTest2(BaseReqData reqData, GatewayDevice device) { BaseResp resp = new BaseResp(); resp.setCode(500); - resp.setMsg("娌℃湁鍖归厤鍒拌鍒�"); + resp.setMsg("绛掍粨娴嬭瘯鏆傛湭瀹炵幇"); return resp; + } + + private BaseResp getGrainTest3(BaseReqData reqData, GatewayDevice device) { + BaseResp resp = new BaseResp(); + + GrainCableData cableData = GatewayUtils.getCableData(device); + int cableZ = cableData.getCableZ(); + int cableY = cableData.getCableY(); + int sumNum = cableData.getSumNum(); + + + WeatherWebDto weather = WeatherWebDto.contextMap.get("default"); + double tMIn = 10, tMax = 15; + if (null != weather) { + double tOut = Double.valueOf(weather.getTem()); + tMIn = tOut - 5; + tMax = tOut; + } + if (tMIn < 10) tMIn = 10; + if (tMIn > 20) tMIn = 20; + if (tMax < 15) tMax = 15; + if (tMax > 25) tMax = 25; + + //鏁版嵁灏佽 + GrainData grain = new GrainData(); + grain.setMessageId(ScConstant.getMessageId()); + grain.setDeviceId(device.getDeviceId()); + grain.setTimestamp(System.currentTimeMillis() + ""); + grain.setMessageType("REPORT_PROPERTY"); + + ClientHeaders headers = new ClientHeaders(); + headers.setDeviceName(device.getDeviceName()); + headers.setProductId(device.getProductId()); + headers.setOrgId(device.getOrgId()); + headers.setMsgId(reqData.getMessageId()); + grain.setHeaders(headers); + + GrainOutPut outPut = new GrainOutPut(); + + 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++) { + + 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); + outPut.setAvgTemperature(NumberUtil.keepPrecision((tMax + tMIn) / 2, 1) + ""); + outPut.setMinTemperature(tMax + ""); + outPut.setMaxTemperature(tMIn + ""); + + + JSONObject properties = new JSONObject(); + properties.put("data", outPut); + properties.put("timestamp", grain.getTimestamp()); + + String height = this.getCacheHeight(device); + if (StringUtils.isEmpty(height)) height = "1.0"; + properties.put("liquidHeight", height); + + + grain.setProperties(properties); + + //灏佽濂界殑鏁版嵁 + log.info("---娌圭綈浠撲俊鎭皝瑁呭畬鎴�----寮�濮嬫墽琛屾帹閫�"); + + + return new BaseResp(JSONObject.toJSONString(grain)); + } + + /** + * 浠嶳EDIS涓幏鍙栨恫浣嶉珮搴︿俊鎭� + * + * @param device + * @return + */ + private String getCacheHeight(GatewayDevice device) { + //缁欏叾浠栬蒋浣跨敤 + String key = RedisConst.KEY_DEPOT_HEIGHT + ":" + configData.getCompanyId() + "_" + device.getDepotIdSys(); + return (String) redisUtil.get(key); } @Override @@ -80,111 +195,9 @@ //鑾峰彇绗竴鏉℃暟鎹墽琛屾帹閫� Fz40Grain lastData = listGrain.get(0); - - return deviceReportService.grainData2GatewayApiInfo(lastData,device); + log.info(lastData.toString()); + return deviceReportService.grainData2GatewayApiInfo(lastData, device); } - -// /** -// * 灏嗙伯鎯呮暟鎹浆鎹负鎺ㄩ�侀渶瑕佺殑鏁版嵁鏍煎紡 -// * -// * @param grainData -// * @return -// */ -// 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(grainData.getTempAve() + ""); -// result.setMinTemperature(grainData.getTempMin() + ""); -// result.setMaxTemperature(grainData.getTempMax() + ""); -// result.setCollectTime(DateFormatUtils.format(grainData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); -// -// //灞�-琛�-鍒� -// String[] attrCable = grainData.getCable().split("-"); -// if (StringUtils.isNotEmpty(grainData.getCableCir())) { -// return lastData2PushData2(grainData, device); -// } -// -// //灞傝鍒� -// int cableZ = Integer.valueOf(attrCable[0]); -// int cableY = Integer.valueOf(attrCable[1]); -// int cableX = Integer.valueOf(attrCable[2]); -// -// //娓╁害闆嗗悎 -// 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]; -// -// -// //濡傛灉鏄紓甯稿��,鎵ц璋冩暣鏁版嵁 TODO -// if (Double.valueOf(curTemp) < -99.9) { -// -// curTemp = grainData.getTempAve() + ""; -// -// } 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(grainData.getHumidityIn() + ""); -// grainTH.setTemperature(grainData.getTempIn() + ""); -// grainTH.setAirHumidity(grainData.getHumidityOut() + ""); -// grainTH.setAirTemperature(grainData.getTempOut() + ""); -// -// List<KafkaGrainTH> temperatureAndhumidity = new ArrayList<>(); -// temperatureAndhumidity.add(grainTH); -// -// trhInfo.put("temperatureAndhumidity", temperatureAndhumidity); -// //trhInfo.put("temperatureAndhumidity",grainTH); -// -// JSONObject params = new JSONObject(); -// params.put("TRHInfo", trhInfo); -// -// result.setParams(params); -// -// return result; -// } - - @Override public BaseResp testWeight(BaseReqData reqData) { @@ -205,8 +218,9 @@ weightInfo.setNetWeight(reqData.getWeight()); weightInfo.setNetWeight(reqData.getWeight()); weightInfo.setWeightUnit("KG"); + JSONObject jsonObject = new JSONObject(); - jsonObject.put("weightInfo", JSONObject.toJSONString(weightInfo)); + jsonObject.put("weightInfo", weightInfo); packet.setProperties(jsonObject); -- Gitblit v1.9.3