Quellcode durchsuchen

报警主机接收增量代码提交

jingyuanchao vor 11 Monaten
Ursprung
Commit
6d7f7849c0

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/iot/IotDeviceInfo.java

@@ -42,6 +42,6 @@ public class IotDeviceInfo extends BaseEntity {
     @ApiModelProperty("0:启用,1:禁用")
     private Integer enable;
 
-    @ApiModelProperty(value = "同步状态",notes = "0:未同步,1:下发中,2:下发成功,3:下发失败")
+    @ApiModelProperty(value = "同步状态",notes = "0:未同步,1:同步中,2:同步成功,3:同步失败")
     private Integer syncStatus;
 }

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/iot/IotDeviceInfoExtend.java

@@ -52,7 +52,7 @@ public class IotDeviceInfoExtend extends BaseEntity {
     @ApiModelProperty(value = "设备mac地址")
     private String deviceMac;
 
-    @ApiModelProperty(value = "主机操作码")
+    @ApiModelProperty(value = "用户代码/主机操作码")
     private String deviceUserCode;
 
     @ApiModelProperty(value = "控制地址")

+ 3 - 4
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/DeviceSyncStatus.java

@@ -11,11 +11,10 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum DeviceSyncStatus {
 
-    //0:未同步,1:下发中,2:下发成功,3:下发失败
     NOT_SYNC(0, "未同步"),
-    SYNCING(1, "下发中"),
-    SYNC_SUCCESS(2, "下发成功"),
-    SYNC_FAIL(3, "下发失败");
+    SYNCING(1, "同步中"),
+    SYNC_SUCCESS(2, "同步成功"),
+    SYNC_FAIL(3, "同步失败");
     private Integer code;
     private String desc;
 

+ 1 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/IIotDeviceInfoService.java

@@ -79,7 +79,7 @@ public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
     void deleteAlarmHostAndDvsByToken(String token);
     List<IotDeviceInfo> selectAllDeviceByDeviceType(List<BaseDeviceTypeEnum> deviceType);
 
-    IotDeviceInfo selectByTokenProductAndDeviceCode(String token, String productName, String deviceType);
+    IotDeviceInfo selectByTokenProductAndDeviceCode(String token, String productName, String deviceCode);
 
     void deviceStatusChange(List<DeviceStatusInfo> statusInfos, IotServerInfo serverInfo);
 

+ 197 - 6
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -30,7 +30,6 @@ import com.xunmei.host.iot.service.IIotDeviceInfoExtendService;
 import com.xunmei.host.iot.service.IIotDeviceInfoService;
 import com.xunmei.host.iot.service.IotDeviceStatusService;
 import com.xunmei.host.iot.service.SysDeviceService;
-import com.xunmei.host.north.service.IotWebsocketMsgService;
 import com.xunmei.host.protection.service.IotAlarmDefenceAreaService;
 import com.xunmei.host.protection.service.IotAlarmSubsystemService;
 import com.xunmei.host.server.service.IotServerInfoService;
@@ -39,6 +38,7 @@ import com.xunmei.host.websocket.constant.WebSocketConstants;
 import com.xunmei.host.websocket.dto.DeviceStatusInfo;
 import com.xunmei.host.websocket.dto.WebsocketExecuteReq;
 import com.xunmei.host.websocket.dto.WebsocketResult;
+import com.xunmei.host.websocket.dto.alarmHost.AlarmHostIncrementVo;
 import com.xunmei.host.websocket.dto.dvs.DevicePushResult;
 import com.xunmei.host.websocket.dto.dvs.DvsBaseInfo;
 import com.xunmei.host.websocket.dto.dvs.SubDeviceInfo;
@@ -63,7 +63,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
 import java.io.IOException;
 import java.time.Duration;
 import java.time.LocalDateTime;
@@ -86,9 +85,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     private IotAlarmDefenceAreaService iotAlarmDefenceAreaService;
     @Autowired
     private IotAlarmSubsystemService iotAlarmSubsystemService;
-    @Resource
-    @Lazy
-    private IotWebsocketMsgService websocketMsgService;
+
     @Autowired
     private SysDeviceService sysDeviceService;
     @Lazy
@@ -422,11 +419,205 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     }
 
     private void handleAlarmHostIncrement(String data, IotServerInfo serverInfo) {
+        AlarmHostIncrementVo baseDataInfo = JSON.parseObject(data, AlarmHostIncrementVo.class);
+        IotDeviceInfo deviceInfo = selectByTokenProductAndDeviceCode(serverInfo.getIotCode(), baseDataInfo.getProduct(), baseDataInfo.getName());
+        if (ObjectUtil.isNull(deviceInfo)) {
+            deviceInfo = handleAlarmHostAddHost(baseDataInfo, serverInfo);
+        } else {
+            handleAlarmHostUpdateHost(baseDataInfo, deviceInfo);
+        }
+        //处理报警主机扩展信息
+        IotDeviceInfoExtend extend = iIotDeviceInfoExtendService.selectByProductDeviceNameAndToken(serverInfo.getIotCode(), BaseDeviceTypeEnum.AlarmHost.getCode(), baseDataInfo.getName());
+        if (extend == null) {
+            handleAlarmHostAddExtend(baseDataInfo, deviceInfo);
+        } else {
+            handleAlarmHostUpdateExtend(baseDataInfo, deviceInfo, extend);
+        }
+
+        final List<AlarmHostIncrementVo.InputData> inputData = baseDataInfo.getInputData();
+        //子系统
+        iotAlarmSubsystemService.deleteByIotTokenAndAlarmHostCode(serverInfo.getIotCode(), deviceInfo.getDeviceCode());
+        final List<IotAlarmSubsystem> subSystemList = iotAlarmSubsystemService.findSubSystem(serverInfo.getIotCode(), deviceInfo.getDeviceCode());
+        for (AlarmHostIncrementVo.SubSystemData subSystemDatum : baseDataInfo.getSubSystemData()) {
+            final Optional<IotAlarmSubsystem> optional = subSystemList.stream().filter(r -> ObjectUtil.equal(r.getCode(), subSystemDatum.getSubSystemId())).findAny();
+            IotAlarmSubsystem subsystem;
+            if (!optional.isPresent()) {
+                subsystem = handleAlarmHostAddSubSystem(subSystemDatum, deviceInfo);
+            } else {
+                subsystem = handleAlarmHostUpdateSubSystem(subSystemDatum, optional.get());
+            }
+            //传感器
+            if (ObjectUtil.isEmpty(inputData)) {
+                continue;
+            }
+            final List<AlarmHostIncrementVo.InputData> dataList = inputData.stream().filter(r -> ObjectUtil.equal(r.getSubSystemId(), subSystemDatum.getSubSystemId())).collect(Collectors.toList());
+            final List<IotAlarmDefenceArea> defenceArea = iotAlarmDefenceAreaService.findDefenceArea(deviceInfo.getIotToken(), deviceInfo.getDeviceCode(), subSystemDatum.getSubSystemId());
+
+            if (ObjectUtil.isEmpty(dataList)) {
+                continue;
+            }
+            for (AlarmHostIncrementVo.InputData input : dataList) {
+                final Optional<IotAlarmDefenceArea> areaOptional = defenceArea.stream().filter(r -> ObjectUtil.equal(r.getDefenceAreaIndex(), input.getInputIndex())).findAny();
+                if (!areaOptional.isPresent()) {
+                    handleAlarmHostAddSensor(input, subsystem);
+                } else {
+                    handleAlarmHostUpdateSensor(input, areaOptional.get());
+                }
+            }
+        }
+    }
+
+    private IotAlarmDefenceArea handleAlarmHostUpdateSensor(AlarmHostIncrementVo.InputData input, IotAlarmDefenceArea info) {
+        info.setDeleted(0);
+        info.setEnable(input.getStatus());
+        info.setDefenceAreaName(input.getInputName());
+        info.setDefenceAreaIndex(input.getInputIndex());
+        info.setSensorType(input.getSensorType());
+        info.setSensorTypeName(input.getSensorTypeName());
+        info.setModuleAddress(input.getModuleAddress());
+        //alarm:报警,bypass:旁路,normal:正常,activity:活动,unKnown:未知
+        info.setUpdateTime(LocalDateTime.now());
+        info.setUpdateBy("system");
+        iotAlarmDefenceAreaService.updateById(info);
+        return info;
+    }
+
+
+    private IotAlarmDefenceArea handleAlarmHostAddSensor(AlarmHostIncrementVo.InputData input, IotAlarmSubsystem subsystem) {
+        IotAlarmDefenceArea info = new IotAlarmDefenceArea();
+        info.setId(IdWorker.getId(info));
+        info.setEnable(input.getStatus());
+        info.setAlarmHostCode(subsystem.getAlarmHostCode());
+        info.setSubSystemCode(String.valueOf(subsystem.getCode()));
+        info.setDefenceAreaName(input.getInputName());
+        info.setDefenceAreaIndex(input.getInputIndex());
+        info.setSensorType(input.getSensorType());
+        info.setSensorTypeName(input.getSensorTypeName());
+        info.setModuleAddress(input.getModuleAddress());
+        //alarm:报警,bypass:旁路,normal:正常,activity:活动,unKnown:未知
+        info.setState("unKnown");
+        info.setStateText("未知");
+        info.setIotToken(subsystem.getIotToken());
+        info.setOrgId(subsystem.getOrgId());
+        info.setOrgName(subsystem.getOrgName());
+        info.setOrgPath(subsystem.getOrgPath());
+        info.setUpdateTime(LocalDateTime.now());
+        info.setCreateBy("system");
+        info.setUpdateBy("system");
+        info.setCreateTime(LocalDateTime.now());
+        info.setDeleted(0);
+        iotAlarmDefenceAreaService.save(info);
+        return info;
+    }
+
+    private IotAlarmSubsystem handleAlarmHostUpdateSubSystem(AlarmHostIncrementVo.SubSystemData subSystemInfo, IotAlarmSubsystem info) {
+        info.setName(subSystemInfo.getSubSystemName());
+        info.setDeleted(0);
+        info.setEnable(subSystemInfo.getStatus());
+        info.setUpdateTime(LocalDateTime.now());
+        info.setUpdateBy("system");
+        //设备来源:0:设备登记;1:iot推送
+        info.setSource(1);
+        iotAlarmSubsystemService.updateById(info);
+        return info;
+    }
 
+    private IotAlarmSubsystem handleAlarmHostAddSubSystem(AlarmHostIncrementVo.SubSystemData subSystemInfo, IotDeviceInfo deviceInfo) {
+        IotAlarmSubsystem info = new IotAlarmSubsystem();
+        info.setId(IdWorker.getId(info));
+        info.setCode(String.valueOf(subSystemInfo.getSubSystemId()));
+        info.setName(subSystemInfo.getSubSystemName());
+        info.setStatus(2);//布防状态,0:撤防,1:布防,2:未知(未登记过或离线)
+        info.setOrgId(deviceInfo.getOrgId());
+        info.setOrgName(deviceInfo.getOrgName());
+        info.setOrgPath(deviceInfo.getOrgPath());
+        info.setAlarmHostCode(deviceInfo.getDeviceCode());
+        info.setDeleted(0);
+        info.setEnable(subSystemInfo.getStatus());
+        //是否关联登记簿,0否1是
+        info.setInBook(0);
+        info.setIotToken(deviceInfo.getIotToken());
+        info.setCreateTime(LocalDateTime.now());
+        info.setUpdateTime(LocalDateTime.now());
+        info.setCreateBy("system");
+        info.setUpdateBy("system");
+        //设备来源:0:设备登记;1:iot推送
+        info.setSource(1);
+        iotAlarmSubsystemService.save(info);
+        return info;
+    }
 
+    private void handleAlarmHostUpdateHost(AlarmHostIncrementVo baseInfo, IotDeviceInfo alarmHost) {
+        alarmHost.setDeviceType(BaseDeviceTypeEnum.AlarmHost.getCode());
+        alarmHost.setDeviceProduct(baseInfo.getProduct());
+        alarmHost.setDeviceModel(baseInfo.getModel());
+        alarmHost.setDeviceCode(baseInfo.getName());
+        alarmHost.setDeviceName(baseInfo.getDisplayName());
+        alarmHost.setDeleted(0);
+        alarmHost.setEnable(baseInfo.getStatus());
+        alarmHost.setSyncStatus(DeviceSyncStatus.SYNC_SUCCESS.getCode());
+        updateById(alarmHost);
+    }
 
+    private IotDeviceInfo handleAlarmHostAddHost(AlarmHostIncrementVo baseInfo, IotServerInfo serverInfo) {
+        final IotDeviceInfo alarmHost = new IotDeviceInfo();
+        alarmHost.setId(IdWorker.getId());
+        alarmHost.setDeviceType(BaseDeviceTypeEnum.AlarmHost.getCode());
+        alarmHost.setDeviceProduct(baseInfo.getProduct());
+        alarmHost.setDeviceModel(baseInfo.getModel());
+        alarmHost.setDeviceCode(baseInfo.getName());
+        alarmHost.setDeviceName(baseInfo.getDisplayName());
+        alarmHost.setIotToken(serverInfo.getIotCode());
+        alarmHost.setOrgId(serverInfo.getOrgId());
+        alarmHost.setOrgName(serverInfo.getOrgName());
+        alarmHost.setOrgPath(serverInfo.getOrgPath());
+        alarmHost.setNetStatus(DeviceNetStatusEnum.UNKNOWN.getValue());
+        alarmHost.setDeleted(0);
+        alarmHost.setEnable(baseInfo.getStatus());
+        alarmHost.setSyncStatus(DeviceSyncStatus.SYNC_SUCCESS.getCode());
+        save(alarmHost);
+        return alarmHost;
+    }
 
+    private void handleAlarmHostAddExtend(AlarmHostIncrementVo baseInfo, IotDeviceInfo alarmHost) {
+        IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
+        extend.setId(IdWorker.getId());
+        extend.setDeviceId(alarmHost.getId());
+        extend.setPort(baseInfo.getDevicePort());
+        extend.setPassword(baseInfo.getDevicePassword());
+        extend.setUserName(baseInfo.getDeviceAccount());
+        extend.setNetAddress(baseInfo.getDeviceAddress());
+        extend.setIotToken(alarmHost.getIotToken());
+        extend.setListenAddress(baseInfo.getListenAddress());
+        extend.setListenPort(baseInfo.getListenPort());
+        extend.setDeviceMac(baseInfo.getDeviceMacAddress());
+        extend.setDeviceUserCode(baseInfo.getDeviceUserCode());
+        extend.setIotAddress(baseInfo.getIotAddress());
+        extend.setHostDeviceType(baseInfo.getDeviceType());
+        extend.setDeleted(0);
+        extend.setCreateBy("system");
+        extend.setCreateTime(new Date());
+        extend.setUpdateBy("system");
+        extend.setUpdateTime(new Date());
+        iIotDeviceInfoExtendService.save(extend);
+    }
 
+    private void handleAlarmHostUpdateExtend(AlarmHostIncrementVo baseInfo, IotDeviceInfo alarmHost, IotDeviceInfoExtend extend) {
+        extend.setPort(baseInfo.getDevicePort());
+        extend.setPassword(baseInfo.getDevicePassword());
+        extend.setUserName(baseInfo.getDeviceAccount());
+        extend.setNetAddress(baseInfo.getDeviceAddress());
+        extend.setIotToken(alarmHost.getIotToken());
+        extend.setListenAddress(baseInfo.getListenAddress());
+        extend.setListenPort(baseInfo.getListenPort());
+        extend.setDeviceMac(baseInfo.getDeviceMacAddress());
+        extend.setDeviceUserCode(baseInfo.getDeviceUserCode());
+        extend.setIotAddress(baseInfo.getIotAddress());
+        extend.setHostDeviceType(baseInfo.getDeviceType());
+        extend.setDeleted(0);
+        extend.setUpdateBy("system");
+        extend.setUpdateTime(new Date());
+        iIotDeviceInfoExtendService.updateById(extend);
     }
 
     private void handleDvsIncrement(String data, IotServerInfo serverInfo) {
@@ -1078,7 +1269,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         jsonObject.put("deviceUserCode", extend.getDeviceUserCode());
         jsonObject.put("controlAddress", extend.getIotAddress());
         jsonObject.put("status", deviceInfo.getEnable());
-        final List<IotAlarmSubsystem> subSystem = iotAlarmSubsystemService.findSubSystem(deviceInfo.getDeviceCode());
+        final List<IotAlarmSubsystem> subSystem = iotAlarmSubsystemService.findSubSystem(deviceInfo.getIotToken(), deviceInfo.getDeviceCode());
         final List<JSONObject> list = subSystem.stream().map(r -> {
             final JSONObject object = new JSONObject();
             //object.put("id", r.getId());

+ 1 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/protection/service/IotAlarmDefenceAreaService.java

@@ -20,6 +20,7 @@ public interface IotAlarmDefenceAreaService extends IService<IotAlarmDefenceArea
     List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode,Long orgId);
 
     List<IotAlarmDefenceArea> findDefenceArea(String iotCode,String alarmHostCode);
+    List<IotAlarmDefenceArea> findDefenceArea(String iotCode,String alarmHostCode,String subSystemId);
 
     IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx, String orgGuid);
 

+ 2 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/protection/service/IotAlarmSubsystemService.java

@@ -28,6 +28,7 @@ public interface IotAlarmSubsystemService extends IService<IotAlarmSubsystem> {
     ReceiveErrorDto saveData(ProtectionEditDto protectionEditDto, String msgId);
 
     void deleteByIotToken(String token);
+    void deleteByIotTokenAndAlarmHostCode(String token,String alarmHostCode);
 
     IotAlarmSubsystem getByDeviceNameAndSubSystemId(String iotToken,String deviceName,String subSystemId);
 
@@ -36,6 +37,6 @@ public interface IotAlarmSubsystemService extends IService<IotAlarmSubsystem> {
     void updateSubSystemInfos(List<IotAlarmSubsystem> list);
 
     IotAlarmSubsystem findSubSystem(Long orgId, String productName, String deviceName, Integer deviceId);
-    List<IotAlarmSubsystem> findSubSystem(String alarmHost);
+    List<IotAlarmSubsystem> findSubSystem(String iotCode,String alarmHost);
 
 }

+ 10 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/protection/service/impl/IotAlarmDefenceAreaServiceImpl.java

@@ -83,6 +83,16 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
     }
 
     @Override
+    public List<IotAlarmDefenceArea> findDefenceArea(String iotCode, String alarmHostCode, String subSystemId) {
+        return lambdaQuery()
+                .eq(IotAlarmDefenceArea::getIotToken, iotCode)
+                .eq(IotAlarmDefenceArea::getAlarmHostCode, alarmHostCode)
+                .eq(IotAlarmDefenceArea::getSubSystemCode, subSystemId)
+                .eq(IotAlarmDefenceArea::getDeleted, 0)
+                .list();
+    }
+
+    @Override
     public IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx, String orgGuid) {
         return lambdaQuery()
                 .eq(IotAlarmDefenceArea::getOrganizationGuid, orgGuid)

+ 13 - 2
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/protection/service/impl/IotAlarmSubSystemServiceImpl.java

@@ -242,8 +242,17 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
     }
 
     @Override
+    public void deleteByIotTokenAndAlarmHostCode(String token, String alarmHostCode) {
+        UpdateWrapper<IotAlarmSubsystem> uw = new UpdateWrapper<>();
+        uw.lambda().eq(IotAlarmSubsystem::getIotToken, token);
+        uw.lambda().eq(IotAlarmSubsystem::getAlarmHostCode, alarmHostCode);
+        uw.lambda().set(IotAlarmSubsystem::getDeleted, 1);
+        update(uw);
+    }
+
+    @Override
     public IotAlarmSubsystem getByDeviceNameAndSubSystemId(String iotToken, String deviceName, String subSystemId) {
-        return  iotAlarmSubsystemMapper.getByDeviceNameAndSubSystemId(iotToken, deviceName, String.valueOf(subSystemId));
+        return iotAlarmSubsystemMapper.getByDeviceNameAndSubSystemId(iotToken, deviceName, String.valueOf(subSystemId));
     }
 
     @Override
@@ -274,9 +283,11 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
     }
 
     @Override
-    public List<IotAlarmSubsystem> findSubSystem(String alarmHost) {
+    public List<IotAlarmSubsystem> findSubSystem(String iotCode, String alarmHost) {
         final LambdaQueryWrapper<IotAlarmSubsystem> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IotAlarmSubsystem::getIotToken, iotCode);
         wrapper.eq(IotAlarmSubsystem::getAlarmHostCode, alarmHost);
+        wrapper.eq(IotAlarmSubsystem::getDeleted, 0);
         return list(wrapper);
     }
 

+ 3 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/server/mapper/IotServerProductMapper.java

@@ -2,6 +2,7 @@ package com.xunmei.host.server.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.iot.domain.IotServerProduct;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +14,6 @@ import com.xunmei.common.core.domain.iot.domain.IotServerProduct;
  */
 public interface IotServerProductMapper extends BaseMapper<IotServerProduct> {
 
+
+    IotServerProduct findByName(@Param("name") String name);
 }

+ 123 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/dto/alarmHost/AlarmHostIncrementVo.java

@@ -0,0 +1,123 @@
+package com.xunmei.host.websocket.dto.alarmHost;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.AllArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AlarmHostIncrementVo {
+
+    @TableId(value = "id")
+    private Integer id;
+
+    @ApiModelProperty(value = "唯一名称")
+    private String name;
+
+    @ApiModelProperty(value = "展示名称")
+    private String displayName;
+
+    @ApiModelProperty(value = "产品")
+    private String product;
+
+    @ApiModelProperty(value = "型号")
+    private String model;
+
+    @ApiModelProperty(value = "ip")
+    private String deviceAddress;
+
+    @ApiModelProperty(value = "端口")
+    private Integer devicePort;
+
+    @ApiModelProperty(value = "监听ip")
+    private String listenAddress;
+
+    @ApiModelProperty(value = "监听端口")
+    private Integer listenPort;
+
+    @ApiModelProperty(value = "mac")
+    private String deviceMacAddress;
+
+    @ApiModelProperty(value = "用户名")
+    private String deviceAccount;
+
+    @ApiModelProperty(value = "密码")
+    private String devicePassword;
+
+    @ApiModelProperty(value = "用户操作码")
+    private String deviceUserCode;
+
+    @ApiModelProperty(value = "主机类型")
+    private String deviceType;
+
+    @ApiModelProperty(value = "iot地址")
+    private String iotAddress;
+
+    @ApiModelProperty(value = "guid")
+    private String guid;
+
+    @ApiModelProperty(value = "控制地址")
+    private String controlAddress;
+
+    @ApiModelProperty(value = "主机操作码")
+    private String hostControlCode;
+
+    @JsonProperty("status")
+    private int status;
+
+    @JsonProperty("subSystemData")
+    private List<SubSystemData> subSystemData;
+
+    @JsonProperty("inputData")
+    private List<InputData> inputData;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class InputData {
+
+        @JsonProperty("inputIndex")
+        private Integer inputIndex;
+
+        @JsonProperty("inputName")
+        private String inputName;
+
+        @JsonProperty("moduleAddress")
+        private String moduleAddress;
+
+        @JsonProperty("moduleTypeName")
+        private String moduleTypeName;
+
+        @JsonProperty("sensorType")
+        private String sensorType;
+
+        @JsonProperty("sensorTypeName")
+        private String sensorTypeName;
+
+        @JsonProperty("status")
+        private Integer status;
+
+        @JsonProperty("subSystemId")
+        private String subSystemId;
+    }
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class SubSystemData {
+        @JsonProperty("status")
+        private Integer status;
+
+        @JsonProperty("subSystemId")
+        private String subSystemId;
+
+        @JsonProperty("subSystemName")
+        private String subSystemName;
+    }
+}

+ 8 - 0
soc-modules/soc-modules-host/src/main/resources/mapper/IotServerProductMapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.host.server.mapper.IotServerProductMapper">
+
+    <select id="findByName" resultType="com.xunmei.common.core.domain.iot.domain.IotServerProduct">
+        select * from iot_server_product where name = #{name} limit 1
+    </select>
+</mapper>