From 96f7af2f3bf9a36dd48e0e6bf4f8a8ca1e31ed7d Mon Sep 17 00:00:00 2001
From: vince <757871790@qq.com>
Date: 星期三, 08 十一月 2023 17:49:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'orgin/igds-api-gateway' into igds-api-gateway

---
 src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 107 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java
index 424ff4b..729570c 100644
--- a/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java
+++ b/src/main/java/com/fzzy/gateway/hx2023/service/HxGatewaySyncGrainImpl.java
@@ -1,11 +1,21 @@
 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.hx2023.data.KafaGrainData;
-import com.fzzy.gateway.hx2023.data.SyncReqData;
+import com.fzzy.gateway.data.BaseResp;
+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.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 缃戝叧涓庣伯鎯呭垎鏈洪�氳鍜岃В鏋�
@@ -18,11 +28,105 @@
 
     @Override
     public String getGrainProtocol() {
-        return null;
+        return GatewayDeviceProtocol.DEVICE_TEST.getCode();
     }
 
     @Override
     public KafaGrainData syncGrain(SyncReqData reqData) {
+
+
         return null;
     }
+
+
+    @Override
+    public BaseResp syncGrain2(SyncReqData 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;
+    }
+
+    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 - 2;
+            tMax = tOut + 3;
+        }
+
+
+        //鏁版嵁灏佽
+        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++) {
+            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);
+
+
+        BaseResp resp = new BaseResp();
+        resp.setData(JSONObject.toJSONString(grain));
+
+        return resp;
+    }
 }
+

--
Gitblit v1.9.3