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/DeviceReportServiceImpl.java | 369 +++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 264 insertions(+), 105 deletions(-) diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java index e7af6a7..c163ba9 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/DeviceReportServiceImpl.java @@ -1,8 +1,8 @@ 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.PushProtocol; -import com.fzzy.api.utils.NumberUtil; import com.fzzy.async.fzzy40.entity.Fz40Grain; import com.fzzy.data.ConfigData; import com.fzzy.gateway.GatewayUtils; @@ -15,7 +15,6 @@ import com.fzzy.gateway.hx2023.data.*; import com.fzzy.gateway.hx2023.kafka.KafkaDeviceReportService; import com.fzzy.mqtt.MqttGatewayService; -import jdk.nashorn.internal.runtime.regexp.joni.Config; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateFormatUtils; @@ -92,7 +91,7 @@ weightInfo.setNetWeight(reqData.getWeight()); weightInfo.setWeightUnit("KG"); JSONObject jsonObject = new JSONObject(); - jsonObject.put("weightInfo", JSONObject.toJSONString(weightInfo)); + jsonObject.put("weightInfo", weightInfo); packet.setProperties(jsonObject); @@ -170,6 +169,21 @@ BaseResp resp = new BaseResp(); + GrainCableData cableData = GatewayUtils.getCableData(device); + + if (null == device.getDepotType()) device.setDepotType(DepotType.TYPE_01.getCode()); + + //琛ㄧず绛掍粨 + if (DepotType.TYPE_02.getCode().equals(device.getDepotType()) || DepotType.TYPE_04.getCode().equals(device.getDepotType())) { + return grainData2GatewayApiInfo2(grainData, device, cableData); + } + + //琛ㄧず涓虹瓛浠撳寘鎷补缃愪粨 + if (DepotType.TYPE_03.getCode().equals(device.getDepotType())) { + return grainData2GatewayApiInfo3(grainData, device, cableData); + } + + KafaGrainData result = new KafaGrainData(); result.setMessageId(ScConstant.getMessageId()); @@ -179,13 +193,6 @@ result.setMinTemperature(grainData.getTempMin() + ""); result.setMaxTemperature(grainData.getTempMax() + ""); result.setCollectTime(DateFormatUtils.format(grainData.getReceiveDate(), "yyyy-MM-dd HH:mm:ss")); - - - GrainCableData cableData = GatewayUtils.getCableData(device); - - if(cableData.isCir()){ - return grainData2GatewayApiInfo2(grainData, device,cableData); - } //灞傝鍒� int cableZ = cableData.getCableZ(); @@ -254,7 +261,7 @@ temperatureAndhumidity.add(grainTH); trhInfo.put("temperatureAndhumidity", temperatureAndhumidity); - //trhInfo.put("temperatureAndhumidity",grainTH); + JSONObject params = new JSONObject(); params.put("TRHInfo", trhInfo); @@ -262,113 +269,265 @@ result.setParams(params); - //resp.setObj(result); - resp.setData(JSONObject.toJSONString(result)); return resp; } - private BaseResp grainData2GatewayApiInfo2(Fz40Grain grainData, GatewayDevice device,GrainCableData cableData) { + /** + * 绛掍粨 + * + * @param grainData + * @param device + * @param cableData + * @return + */ + private BaseResp grainData2GatewayApiInfo2(Fz40Grain grainData, GatewayDevice device, GrainCableData cableData) { BaseResp resp = new BaseResp(); -// int cableZ = cableData.getCableZ(); -// int cableY = cableData.getCableY(); -// int cableX = cableData.getCableX(); -// -// int sumNum = cableData.getSumNum(); -// -// //鏁版嵁灏佽 -// 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(); -// -// -// double max = com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MAX_TEMP, min = com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MIN_TEMP, sumT = 0.0; -// -// List<GrainTemp> temperature = new ArrayList<>(); -// //鏍瑰彿 -// int cableNum = 1, position = 0; -// -// double curTemp; -// int x = 0, y = 0, z = 0; -// for (int i = 0; i < sumNum; i++) { -// curTemp = temps.get(i); -// 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 + "")); -// -// //姹傛渶澶ф渶灏忓�� -// if (curTemp < -900) { -// sumNum--; -// } else { -// sumT += curTemp; -// if (curTemp > max) { -// max = curTemp; -// } -// if (curTemp < min) { -// min = curTemp; -// } -// } -// } -// -// if (sumNum == 0) { -// sumNum = 1; -// log.warn("---褰撳墠绮儏閲囬泦寮傚父--"); -// } -// //杩囨护姣旇緝鐢ㄧ殑鏈�澶ф渶灏忓�� -// if (max == com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MAX_TEMP) { -// max = 0.0; -// } -// if (min == com.fzzy.protocol.bhzn.v0.cmd.ReMessageBuilder.MIN_TEMP) { -// min = 0.0; -// } -// -// outPut.setTemperature(temperature); -// outPut.setAvgTemperature(NumberUtil.keepPrecision((sumT / sumNum), 1) + ""); -// outPut.setMinTemperature(min + ""); -// outPut.setMaxTemperature(min + ""); -// -// -// com.alibaba.fastjson.JSONObject properties = new com.alibaba.fastjson.JSONObject(); -// properties.put("data", com.alibaba.fastjson.JSONObject.toJSONString(outPut)); -// properties.put("timestamp", grain.getTimestamp()); -// -// String height = this.getCacheHeight(device); -// if (org.apache.commons.lang3.StringUtils.isEmpty(height)) height = "0.0"; -// properties.put("liquidHeight", height); -// -// grain.setProperties(properties.toJSONString()); -// -// //灏佽濂界殑鏁版嵁 -// log.info("---娴呭渾浠撳皝瑁呭畬鎴�----寮�濮嬫墽琛屾帹閫�"); + 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")); + + //灞傝鍒� + int cableZ = cableData.getCableZ(); + + //娓╁害闆嗗悎 + String[] attr = grainData.getPoints().split(","); + + //鏍瑰彿 + int cableNum = 1, position = 0; + String curTemp; + List<KafkaGrainDataDetail1> temperature = new ArrayList<>(); + JSONObject totalCircle = new JSONObject(); + totalCircle.put("totalCircle", cableData.getTotalCircle() + ""); + totalCircle.put("smallCircle", cableData.getSmallCircle()); + String totalCircleStr = totalCircle.toJSONString(); + int x = 0, y = 0, z = 0, circle = 1; + for (int i = 0; i < attr.length; i++) { + position = i; + z = i % cableZ + 1; + //鏍瑰彿 + cableNum = (i / cableZ) + 1; + curTemp = attr[i]; + + circle = this.getCirCle(position, cableNum, cableData); + + y = 1; + //濡傛灉鏄紓甯稿��,鎵ц璋冩暣鏁版嵁 TODO + if (Double.valueOf(curTemp) < -99.9) { - resp.setCode(BaseResp.CODE_500); - resp.setMsg("绛掍粨瑙f瀽鏆傛湭瀹炵幇"); + curTemp = grainData.getTempAve() + ""; + + } else { + //鍒ゆ柇鏈�澶� + if (curTemp.equals(result.getMaxTemperature())) { + result.setMaxX(cableNum + ""); + result.setMaxY(y + ""); + result.setMaxZ(position + ""); + } + //鍒ゆ柇鏈�灏� + if (curTemp.equals(result.getMinTemperature())) { + result.setMinX(cableNum + ""); + result.setMinY(y + ""); + result.setMinZ(position + ""); + } + } + + temperature.add(new KafkaGrainDataDetail1(cableNum + "", z + "", curTemp, position + "", null, null, circle + "", totalCircleStr)); + } + + //绮俯淇℃伅 + JSONObject trhInfo = new JSONObject(); + 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); + + JSONObject params = new JSONObject(); + params.put("TRHInfo", trhInfo); + + result.setParams(params); + + + resp.setData(JSONObject.toJSONString(result)); + return resp; + } + + /** + * 鑾峰彇褰撶偣鎵�鍦ㄥ湀 + * + * @param cableNum + * @param cableData + * @return + */ + private int getCirCle(int position, int cableNum, GrainCableData cableData) { + + int num1 = 1, num2 = 2; + String[] attCable = cableData.getCableRule().split("-"); + + if (cableData.getTotalCircle() == 1) return 1; + + if (cableData.getTotalCircle() == 2) { + num1 = Integer.valueOf(attCable[0]); + + if (cableNum <= num1) return 1; + + return 2; + } + + if (cableData.getTotalCircle() == 3) { + num1 = Integer.valueOf(attCable[0]); + num2 = num1 + Integer.valueOf(attCable[1]); + if (cableNum <= num1) return 1; + + if (cableNum <= num2) return 2; + + return 3; + } + + if (cableData.getTotalCircle() == 4) { + num1 = Integer.valueOf(attCable[0]); + num2 = num1 + Integer.valueOf(attCable[1]); + if (cableNum <= num1) return 1; + + if (cableNum <= num2) return 2; + + num2 = num1 + Integer.valueOf(attCable[1]) + Integer.valueOf(attCable[2]); + + if (cableNum <= num2) return 3; + + return 4; + } + + return 1; + } + + + /** + * 娌圭綈浠撶殑澶勭悊 + * <p> + * 2024骞�1鏈�20鏃� 鏆傛椂鐢ㄧ殑骞虫埧浠撴姤鏂� + * + * @param grainData + * @param device + * @param cableData + * @return + */ + private BaseResp grainData2GatewayApiInfo3(Fz40Grain grainData, GatewayDevice device, GrainCableData cableData) { + + BaseResp resp = new BaseResp(); + + + 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")); + + //灞傝鍒� + int cableZ = cableData.getCableZ(); + int cableY = cableData.getCableY(); + int cableX = cableData.getCableX(); + + //娓╁害闆嗗悎 + 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); + + + JSONObject params = new JSONObject(); + params.put("TRHInfo", trhInfo); + + result.setParams(params); + + + resp.setData(JSONObject.toJSONString(result)); + return resp; } -- Gitblit v1.9.3