ソースを参照

feat:新增获取设备锁状态的接口

lwb 2 ヶ月 前
コミット
33db2572e0

+ 58 - 0
snowy-common/src/main/java/vip/xiaonuo/common/util/CloudApiService.java

@@ -0,0 +1,58 @@
+package vip.xiaonuo.common.util;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Slf4j
+public class CloudApiService {
+
+
+    private static String xTokenHeader="x-access-token";
+    private static String loginUrl = "https://cloudapi.369clouds.com/api/login";
+    private static String sensorUrl = "https://cloudapi.369clouds.com/api/admin/getsensordata?mac={}";
+    private static String loginInfo="{\n" +
+            "  \"userName\": \"wdkyzx\",\n" +
+            "  \"password\": \"8888899999\"\n" +
+            "}";
+
+    public static List<Boolean> getCloudSensorData(List<String> codes){
+        //1.登录
+        String post = HttpUtil.post(loginUrl, loginInfo);
+        log.info("登录 url={} \nparam={} \nresult={}",loginUrl,loginInfo,post);
+        JSONObject loginJsonObject = JSONUtil.parseObj(post);
+        String token = Optional.ofNullable(loginJsonObject.getByPath("data.token")).orElse("").toString();
+        // 断言异常
+        Assert.notBlank(token,"369cloud登录失败");
+        //2.获取数据
+        List<Boolean> datas = new ArrayList<>(codes.size());
+        if(StrUtil.isNotBlank(token)){
+            for (String code : codes) {
+                String data = HttpUtil.createGet(StrUtil.format(sensorUrl, code)).header(xTokenHeader,token).execute().body();
+                log.info("获取设备数据 url={} \n param={} \nresult={}",sensorUrl,code,data);
+                JSONObject sensorJsonObject = JSONUtil.parseObj(data);
+                Map dataMap = sensorJsonObject.getByPath("data.items",Map.class);
+                //2=开 0=关
+                datas.add(MapUtil.getInt(dataMap,"LockState",0)==2);
+            }
+
+        }
+        return datas;
+    }
+
+//    public static void main(String[] args) {
+//        System.out.println(getCloudSensorData(ListUtil.of("29107790")));
+//    }
+
+}

+ 7 - 0
snowy-plugin/snowy-plugin-coldchain/src/main/java/vip/xiaonuo/coldchain/modular/monitordevice/controller/MonitorDeviceController.java

@@ -35,6 +35,7 @@ import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
 import vip.xiaonuo.coldchain.modular.monitordevicetype.entity.CountEntity;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.common.util.CloudApiService;
 
 import java.util.List;
 
@@ -215,4 +216,10 @@ public class MonitorDeviceController {
         monitorDeviceService.export(response);
     }
 
+    @Operation(summary = "导出冷链设备对应清单")
+    @GetMapping("/coldchain/monitordevice/getLock")
+    public CommonResult<List<Boolean>> getLock(List<String> codes){
+        return CommonResult.data(CloudApiService.getCloudSensorData(codes));
+    }
+
 }