ソースを参照

add:
阿里云多数据源订阅

18339543638 1 年間 前
コミット
74a42d8737

+ 2 - 1
nb-service-api/web-service-api/src/main/java/com/nb/web/api/enums/HospitalLogEnum.java

@@ -22,7 +22,8 @@ public enum HospitalLogEnum  implements IEnum<Integer> {
     ALI_STATUS(2,"阿里云-设备上下线"),
     ALI_LIFECYCLE(3,"阿里云-设备生命周期"),
     ALI_DATA_UPLOAD(4,"阿里云-设备数据上传"),
-    ALI_DEL(5,"阿里云-设备删除"),;
+    ALI_DEL(5,"阿里云-设备删除"),
+    IOT_INTERFACE(6,"IOT-接口传输");
 
     private Integer value;
     @Getter

+ 97 - 0
nb-service/iot-service/src/main/java/com/nb/aliyun/controller/IotController.java

@@ -0,0 +1,97 @@
+package com.nb.aliyun.controller;
+
+
+import cn.dev33.satoken.annotation.SaIgnore;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.nb.core.exception.CustomException;
+import com.nb.core.result.R;
+import com.nb.core.utils.ExceptionUtil;
+import com.nb.web.api.entity.BusDeviceEntity;
+import com.nb.web.api.entity.BusHospitalLogEntity;
+import com.nb.web.api.entity.common.BusDeviceRunningEntity;
+import com.nb.web.api.enums.DeviceStatusEnum2;
+import com.nb.web.api.enums.HospitalLogEnum;
+import com.nb.web.api.feign.IDeviceClient;
+import com.nb.web.api.feign.IHospitalLogClient;
+import com.nb.web.api.feign.IIotMsgHandler;
+import io.netty.channel.DefaultEventLoopGroup;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.concurrent.ExecutorService;
+
+/**
+ * @ClassName : IotController
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年10月17日
+ */
+@RestController
+@RequestMapping("/iot")
+@Api(description="iot数据处理")
+@AllArgsConstructor
+public class IotController {
+
+    private final IIotMsgHandler iotMsgHandler;
+    private final IHospitalLogClient hospitalLogService;
+    private final IDeviceClient deviceService;
+    private final ExecutorService executorService=new DefaultEventLoopGroup();
+    /**
+     * 数据保存
+     */
+    @PostMapping("/data/save")
+    @SaIgnore
+    public R assignMenu(@RequestBody BusDeviceRunningEntity source) {
+        if(StrUtil.isBlank(source.getDeviceId())){
+            throw new CustomException("[deviceId]设备id不能为空");
+        }
+        if(StrUtil.isBlank(source.getClassification())){
+            throw new CustomException("[classification]分类标识号不能为空");
+        }
+        if(ObjectUtil.isNull(source.getDataNumber())){
+            throw new CustomException("[dataNumber]数据编号不能为空");
+        }
+        if(ObjectUtil.isNull(source.getType())){
+            throw new CustomException("[type]设备类型不能为空");
+        }
+        if(ObjectUtil.isNull(source.getRunState())){
+            throw new CustomException("[runState]设备运行状态不能为空");
+        }
+        source.setTest(false);
+        executorService.execute(()->{
+            BusDeviceEntity device = new BusDeviceEntity();
+            device.setStatus(DeviceStatusEnum2.ONLINE);
+            device.setDeviceId(source.getDeviceId());
+            device.setStatus(DeviceStatusEnum2.ONLINE);
+            device.setEnable(true);
+            deviceService.saveDevice(device);
+            BusHospitalLogEntity hospitalLog = new BusHospitalLogEntity();
+            hospitalLog.setIdentityCode(source.getDeviceId());
+            hospitalLog.setInput(JSONUtil.toJsonStr(source));
+            hospitalLog.setType(HospitalLogEnum.IOT_INTERFACE);
+            hospitalLog.setTenantId(device.getTenantId());
+            long startTime = System.currentTimeMillis();
+            try {
+                BusDeviceRunningEntity sync = iotMsgHandler.sync(source, source.getDeviceId());
+                hospitalLog.setResult(JSONUtil.toJsonStr(sync));
+                hospitalLog.setSuccess(true);
+            }catch (Exception e) {
+                hospitalLog.setSuccess(false);
+                hospitalLog.setMessage(ExceptionUtil.getExceptionMsg(e));
+            }
+            long entTime = System.currentTimeMillis();
+            hospitalLog.setUseTime(entTime - startTime);
+            hospitalLog.setId(IdWorker.getIdStr());
+            hospitalLogService.save(hospitalLog);
+        });
+        return R.success();
+    }
+}

+ 30 - 0
nb-service/iot-service/src/main/java/com/nb/aliyun/doc/IotDocConfig.java

@@ -0,0 +1,30 @@
+package com.nb.aliyun.doc;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName SwaggerDocConfig.java
+ * @Description
+ * @createTime 2022年08月01日 22:01:00
+ */
+@Component
+public class IotDocConfig {
+
+    @Bean
+    public Docket iotDoc(){
+        return new Docket(DocumentationType.SWAGGER_2)
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.nb.aliyun.controller"))
+                .paths(PathSelectors.any())
+                .build()
+                .groupName("Iot数据传输");
+    }
+
+}