Quellcode durchsuchen

设备维护: 对讲主机 门禁主机 代码提交

jingyuanchao vor 11 Monaten
Ursprung
Commit
a662207235

+ 24 - 10
project_data/sql/1.0.11/soc.sql

@@ -84,15 +84,25 @@ BEGIN
                 ADD COLUMN `enable` int(11) NULL DEFAULT 0 COMMENT '0:启用,1:禁用' AFTER `update_by`;
         end if;
 
-    IF NOT EXISTS(SELECT *
-                  FROM information_schema.columns
-                  WHERE table_schema = DATABASE()
-                    AND table_name = 'iot_device_info'
-                    AND column_name = 'sync_status') THEN
-        ALTER TABLE `iot_device_info`
-            ADD COLUMN `sync_status` int(0) NULL DEFAULT 0 COMMENT '下发状态;0未下发,1下发中,2下发成功,3下发失败' AFTER `enable`;
-        update iot_device_info set sync_status = 2;
-    end if;
+
+        IF NOT EXISTS(SELECT *
+                      FROM information_schema.columns
+                      WHERE table_schema = DATABASE()
+                        AND table_name = 'iot_device_info'
+                        AND column_name = 'device_brand') THEN
+            ALTER TABLE `iot_device_info`
+                ADD COLUMN `device_brand` bigint NULL COMMENT '品牌' AFTER `device_product`;
+        end if;
+
+        IF NOT EXISTS(SELECT *
+                      FROM information_schema.columns
+                      WHERE table_schema = DATABASE()
+                        AND table_name = 'iot_device_info'
+                        AND column_name = 'sync_status') THEN
+            ALTER TABLE `iot_device_info`
+                ADD COLUMN `sync_status` int(0) NULL DEFAULT 0 COMMENT '下发状态;0未下发,1下发中,2下发成功,3下发失败' AFTER `enable`;
+            update iot_device_info set sync_status = 2;
+        end if;
 
 
         IF NOT EXISTS(SELECT *
@@ -218,4 +228,8 @@ CREATE TABLE `iot_device_diagnose_threshold_ch` (
   `dvs` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  COMMENT 'dvs的设备编码',
   `channel` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci  COMMENT '摄像机的编码',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='摄像机诊断阈值绑定关系表';
+) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='摄像机诊断阈值绑定关系表';
+
+delete from iot_server_product where id in ('0a3fa02d-c677-4f8a-a053-4e30e592df7e','20fa2a1a-a069-4975-8d64-091a39539e02');
+INSERT INTO `iot_server_product`(`id`, `name`, `display_name`, `enabled`, `categories`, `models`) VALUES ('0a3fa02d-c677-4f8a-a053-4e30e592df7e', 'TALK_HOST', '对讲主机', 1, '[\r\n  \"Host_Talk\"\r\n]', '[\r\n  \"Normal\"\r\n]');
+INSERT INTO `iot_server_product`(`id`, `name`, `display_name`, `enabled`, `categories`, `models`) VALUES ('20fa2a1a-a069-4975-8d64-091a39539e02', 'DOOR_HOST', '门禁主机', 1, '[\r\n  \"Host_Door\"\r\n]', '[\r\n  \"Normal\"\r\n]');

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

@@ -17,8 +17,10 @@ public class IotDeviceInfo extends BaseEntity {
     private Long id;
     @ApiModelProperty("设备类型")
     private String deviceType;
-    @ApiModelProperty("设备品")
+    @ApiModelProperty("设备品")
     private String deviceProduct;
+    @ApiModelProperty("设备品牌")
+    private Long deviceBrand;
     @ApiModelProperty("设备型号")
     private String deviceModel;
     @ApiModelProperty("设备编码")

+ 2 - 8
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/north/controller/HostController.java

@@ -7,8 +7,7 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.host.alarm.service.IotAlarmRuleService;
 import com.xunmei.host.iot.service.IIotDeviceInfoService;
 import com.xunmei.host.protection.service.IIotAlarmHostService;
-import com.xunmei.host.video.service.IVideoIntegrityCheckService;
-import com.xunmei.host.video.service.IotDvrHardDiskDetectionService;
+import com.xunmei.host.server.service.IotServerInfoService;
 import com.xunmei.host.websocket.service.WebsocketService;
 import com.xunmei.system.api.Eto.SubSystemControlEto;
 import io.swagger.annotations.ApiOperation;
@@ -26,13 +25,8 @@ import java.io.IOException;
 
 @RestController
 public class HostController {
-
-    @Resource
-    private IotDvrHardDiskDetectionService diskDetectionService;
-
     @Resource
-    IVideoIntegrityCheckService videoIntegrityCheckService;
-
+    IotServerInfoService serverInfoService;
     @Resource
     WebsocketService websocketService;
 

+ 21 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotDeviceInfoController.java

@@ -4,9 +4,11 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
+import com.xunmei.iot.dto.deviceInfo.EditNetHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.IotDeviceInfoPageDto;
 import com.xunmei.iot.service.IIotDeviceInfoService;
 import com.xunmei.iot.vo.deviceInfo.IotDeviceInfoPageVo;
+import com.xunmei.system.api.RemoteHostService;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 
@@ -19,6 +21,8 @@ public class IotDeviceInfoController {
 
     @Resource
     private IIotDeviceInfoService deviceInfoService;
+    @Resource
+    private RemoteHostService remoteHostService;
 
     @ApiOperation("iot设备列表")
     @GetMapping({"/page"})
@@ -69,4 +73,21 @@ public class IotDeviceInfoController {
         return AjaxResult.success(deviceInfoService.alarmHostDeviceInfo(id));
     }
 
+    @ApiOperation("新增/编辑 对讲主机/门禁主机")
+    @PostMapping({"/editNetHostDevice"})
+    AjaxResult editNetHostDevice(@RequestBody EditNetHostDeviceDto req) {
+        return AjaxResult.success(deviceInfoService.editNetHostDevice(req));
+    }
+
+    @ApiOperation("对讲主机/门禁主机详情")
+    @GetMapping({"/netHostDeviceInfo/{id}"})
+    AjaxResult netHostDeviceInfo(@PathVariable Long id) {
+        return AjaxResult.success(deviceInfoService.netHostDeviceInfo(id));
+    }
+
+    @ApiOperation("从主机拉取基础设备")
+    @GetMapping({"/baseDeviceGet"})
+    AjaxResult baseDeviceGet() {
+        return AjaxResult.success(remoteHostService.getDevices());
+    }
 }

+ 38 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/deviceInfo/EditNetHostDeviceDto.java

@@ -0,0 +1,38 @@
+package com.xunmei.iot.dto.deviceInfo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(description = "设备信息")
+public class EditNetHostDeviceDto {
+
+    @ApiModelProperty(value = "设备ID")
+    private Long id;
+
+    @ApiModelProperty(value = "组织ID")
+    private Long orgId;
+
+    @ApiModelProperty(value = "物联网编码")
+    private String iotCode;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备产品")
+    private String deviceType;
+
+    @ApiModelProperty(value = "设备品牌")
+    private Long deviceBrand;
+
+    @ApiModelProperty(value = "服务器IP")
+    private String serverIp;
+
+
+    @ApiModelProperty(value = "启用状态")
+    private Integer enable;
+
+
+
+}

+ 6 - 4
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IIotDeviceInfoService.java

@@ -5,13 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotServerProduct;
 import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.iot.dto.deviceInfo.AlarmHostDeviceInfoVo;
-import com.xunmei.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
-import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
-import com.xunmei.iot.dto.deviceInfo.IotDeviceInfoPageDto;
+import com.xunmei.iot.dto.deviceInfo.*;
 import com.xunmei.iot.vo.deviceInfo.DeviceDetailInfoVo;
 import com.xunmei.iot.vo.deviceInfo.DvrHostDeviceInfoVo;
 import com.xunmei.iot.vo.deviceInfo.IotDeviceInfoPageVo;
+import com.xunmei.iot.vo.deviceInfo.NetHostDeviceInfoVo;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 
 import java.io.Serializable;
@@ -43,4 +41,8 @@ public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
     DvrHostDeviceInfoVo dvrHostDeviceInfo(Long id);
 
     AlarmHostDeviceInfoVo alarmHostDeviceInfo(Long id);
+
+    Integer editNetHostDevice(EditNetHostDeviceDto req);
+
+    NetHostDeviceInfoVo netHostDeviceInfo(Long id);
 }

+ 5 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDeviceInfoExtendService.java

@@ -3,6 +3,7 @@ package com.xunmei.iot.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
+import com.xunmei.iot.dto.deviceInfo.EditNetHostDeviceDto;
 import com.xunmei.system.api.domain.iot.IotDeviceInfoExtend;
 
 /**
@@ -15,4 +16,8 @@ public interface IotDeviceInfoExtendService extends IService<IotDeviceInfoExtend
     void updateAlarmHostExtendByDeviceId(Long deviceId, EditAlarmHostDeviceDto req);
 
     IotDeviceInfoExtend findByDeviceId(Long deviceId);
+
+    boolean removeByDeviceId(Long deviceId);
+
+    void updateNetHostExtendByDeviceId(Long deviceId, EditNetHostDeviceDto req);
 }

+ 37 - 7
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDeviceInfoExtendServiceImpl.java

@@ -5,22 +5,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.Constants;
+import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
+import com.xunmei.iot.dto.deviceInfo.EditNetHostDeviceDto;
 import com.xunmei.iot.mapper.IotDeviceInfoExtendMapper;
 import com.xunmei.system.api.domain.iot.IotDeviceInfoExtend;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 @Service
 public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExtendMapper, IotDeviceInfoExtend> implements IotDeviceInfoExtendService {
 
 
     @Override
     public void updateByDeviceId(Long deviceId, EditDvrHostDeviceDto req) {
-        LambdaQueryWrapper<IotDeviceInfoExtend> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(IotDeviceInfoExtend::getDeviceId, deviceId);
-        remove(wrapper);
-
+        removeByDeviceId(deviceId);
         IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
         extend.setId(IdWorker.getId());
         extend.setDeviceId(deviceId);
@@ -30,15 +31,17 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
         extend.setPort(Integer.parseInt(req.getServerPort()));
         extend.setDeleted(0);
         extend.setIotToken(req.getIotCode());
+        extend.setCreateTime(new Date());
+        extend.setUpdateTime(new Date());
+        extend.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
+        extend.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         save(extend);
     }
 
     @Override
     public void updateAlarmHostExtendByDeviceId(Long deviceId, EditAlarmHostDeviceDto req) {
-        LambdaQueryWrapper<IotDeviceInfoExtend> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(IotDeviceInfoExtend::getDeviceId, deviceId);
-        remove(wrapper);
 
+        removeByDeviceId(deviceId);
         IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
         extend.setId(IdWorker.getId());
         extend.setDeviceId(deviceId);
@@ -54,6 +57,10 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
         extend.setDeviceUserCode(req.getDeviceUserCode());
         extend.setIotAddress(req.getIotAddress());
         extend.setHostDeviceType(req.getHostDeviceType());
+        extend.setCreateTime(new Date());
+        extend.setUpdateTime(new Date());
+        extend.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
+        extend.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         save(extend);
     }
 
@@ -64,5 +71,28 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
         wrapper.last(Constants.LIMIT1);
         return getOne(wrapper);
     }
+
+    @Override
+    public boolean removeByDeviceId(Long deviceId) {
+        LambdaQueryWrapper<IotDeviceInfoExtend> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IotDeviceInfoExtend::getDeviceId, deviceId);
+        return remove(wrapper);
+    }
+
+    @Override
+    public void updateNetHostExtendByDeviceId(Long deviceId, EditNetHostDeviceDto req) {
+        removeByDeviceId(deviceId);
+        IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
+        extend.setId(IdWorker.getId());
+        extend.setDeviceId(deviceId);
+        extend.setNetAddress(req.getServerIp());
+        extend.setDeleted(0);
+        extend.setIotToken(req.getIotCode());
+        extend.setCreateTime(new Date());
+        extend.setUpdateTime(new Date());
+        extend.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
+        extend.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
+        save(extend);
+    }
 }
 

+ 78 - 13
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.iot.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
@@ -19,10 +20,7 @@ import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.iot.dto.deviceInfo.AlarmHostDeviceInfoVo;
-import com.xunmei.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
-import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
-import com.xunmei.iot.dto.deviceInfo.IotDeviceInfoPageDto;
+import com.xunmei.iot.dto.deviceInfo.*;
 import com.xunmei.iot.mapper.IotAlarmDefenceAreaMapper;
 import com.xunmei.iot.mapper.IotAlarmSubsystemMapper;
 import com.xunmei.iot.mapper.IotDeviceInfoMapper;
@@ -32,6 +30,7 @@ import com.xunmei.iot.service.IotDeviceInfoExtendService;
 import com.xunmei.iot.vo.deviceInfo.DeviceDetailInfoVo;
 import com.xunmei.iot.vo.deviceInfo.DvrHostDeviceInfoVo;
 import com.xunmei.iot.vo.deviceInfo.IotDeviceInfoPageVo;
+import com.xunmei.iot.vo.deviceInfo.NetHostDeviceInfoVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
@@ -41,6 +40,7 @@ import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.Serializable;
@@ -158,8 +158,10 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
                     case Dvs:
                         return "PT_" + DateUtils.parseDateToStr("yyyyMMddHHmmssSSS", new Date());
                     case AlarmHost:
+                    case Host_Talk:
+                    case Host_Door:
                         //DaHuaAlarmHost1729673859287
-                        return jsb.getString("deviceProduct") + System.currentTimeMillis();
+                        return jsb.getString("deviceProduct") + "_" + System.currentTimeMillis();
                 }
 
             }
@@ -193,6 +195,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Integer editDvrHostDevice(EditDvrHostDeviceDto req) {
         Long deviceId = req.getId();
         SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
@@ -247,7 +250,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         resp.setModels(deviceInfo.getDeviceModel());
         resp.setIotCode(deviceInfo.getIotToken());
         IotDeviceInfoExtend extend = extendService.findByDeviceId(id);
-        BeanUtils.copyProperties(extend, resp,"id");
+        BeanUtils.copyProperties(extend, resp, "id");
         resp.setUserName(extend.getUserName());
         resp.setPassword(extend.getPassword());
         resp.setServerIp(extend.getNetAddress());
@@ -256,13 +259,13 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         final LambdaQueryWrapper<IotAlarmSubsystem> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(IotAlarmSubsystem::getAlarmHostCode, deviceInfo.getDeviceCode());
         wrapper.eq(IotAlarmSubsystem::getDeleted, 0);
-        wrapper.select(IotAlarmSubsystem::getEnable,IotAlarmSubsystem::getCode, IotAlarmSubsystem::getName);
+        wrapper.select(IotAlarmSubsystem::getEnable, IotAlarmSubsystem::getCode, IotAlarmSubsystem::getName);
         final List<IotAlarmSubsystem> subSystems = subsystemMapper.selectList(wrapper);
-        if (CollUtil.isEmpty(subSystems)){
+        if (CollUtil.isEmpty(subSystems)) {
             return resp;
         }
         resp.setSubSystemNums(subSystems.size());
-        resp.setSubSystemList(subSystems.stream().map(r->{
+        resp.setSubSystemList(subSystems.stream().map(r -> {
             final AlarmHostDeviceInfoVo.SubSystemInfoVo vo = new AlarmHostDeviceInfoVo.SubSystemInfoVo();
             vo.setSubSystemIndex(r.getCode());
             vo.setSubSystemName(r.getName());
@@ -274,11 +277,11 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         defenceWrapper.eq(IotAlarmDefenceArea::getAlarmHostCode, deviceInfo.getDeviceCode());
         defenceWrapper.eq(IotAlarmDefenceArea::getDeleted, 0);
         final List<IotAlarmDefenceArea> defenceAreaList = defenceAreaMapper.selectList(defenceWrapper);
-        if (CollUtil.isEmpty(defenceAreaList)){
+        if (CollUtil.isEmpty(defenceAreaList)) {
             return resp;
         }
         resp.setInputSensorNums(defenceAreaList.size());
-        resp.setInputSensorList(defenceAreaList.stream().map(r->{
+        resp.setInputSensorList(defenceAreaList.stream().map(r -> {
             final AlarmHostDeviceInfoVo.InputSensorInfoVo vo = new AlarmHostDeviceInfoVo.InputSensorInfoVo();
             vo.setInputSensorIndex(r.getDefenceAreaIndex());
             vo.setInputSensorName(r.getDefenceAreaName());
@@ -293,6 +296,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Integer editAlarmHostDevice(EditAlarmHostDeviceDto req) {
         Long deviceId = req.getId();
         SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
@@ -302,11 +306,11 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
             return 1;
         }
 
-        updateAddAlarmHostDevice(req, sysOrg);
+        updateAddAlarmHostDevice(req);
         return 1;
     }
 
-    private void updateAddAlarmHostDevice(EditAlarmHostDeviceDto req, SysOrg sysOrg) {
+    private void updateAddAlarmHostDevice(EditAlarmHostDeviceDto req) {
         SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
         IotDeviceInfo deviceInfo = getById(req.getId());
 
@@ -476,4 +480,65 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
             }
         }
     }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Integer editNetHostDevice(EditNetHostDeviceDto req) {
+        final SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
+        final SysOrg sysOrg = orgService.selectSysOrgById(req.getOrgId(), SecurityConstants.INNER);
+        IotDeviceInfo deviceInfo;
+        if (req.getId() == null) {
+            deviceInfo = new IotDeviceInfo();
+            deviceInfo.setCreateTime(new Date());
+            deviceInfo.setCreateBy(sysUser.getId().toString());
+        }else {
+            deviceInfo = getById(req.getId());
+        }
+        BeanUtil.copyProperties(req, deviceInfo);
+        deviceInfo.setIotToken(req.getIotCode());
+        final BaseDeviceTypeEnum typeEnum = BaseDeviceTypeEnum.getEnumByCode(req.getDeviceType());
+        JSONObject JSB = new JSONObject();
+        switch (typeEnum) {
+            case Host_Talk:
+                deviceInfo.setDeviceProduct("TALK_HOST");
+                JSB.put("deviceProduct", deviceInfo.getDeviceProduct());
+                deviceInfo.setDeviceCode(generalDeviceCode(BaseDeviceTypeEnum.Host_Talk, JSB));
+
+                break;
+            case Host_Door:
+                deviceInfo.setDeviceProduct("DOOR_HOST");
+                JSB.put("deviceProduct", deviceInfo.getDeviceProduct());
+                deviceInfo.setDeviceCode(generalDeviceCode(BaseDeviceTypeEnum.Host_Door, JSB));
+                break;
+            default:
+                break;
+        }
+
+        deviceInfo.setUpdateTime(new Date());
+        deviceInfo.setUpdateBy(sysUser.getId().toString());
+        deviceInfo.setOrgId(sysOrg.getId());
+        deviceInfo.setOrgName(sysOrg.getShortName());
+        deviceInfo.setOrgPath(sysOrg.getPath());
+        deviceInfo.setDeleted(0);
+        saveOrUpdate(deviceInfo);
+        extendService.updateNetHostExtendByDeviceId(deviceInfo.getId(), req);
+        return 1;
+    }
+
+    @Override
+    public NetHostDeviceInfoVo netHostDeviceInfo(Long id) {
+
+        final IotDeviceInfo deviceInfo = getById(id);
+        if (deviceInfo == null) {
+            throw new RuntimeException("设备不存在");
+        }
+        NetHostDeviceInfoVo resp=new NetHostDeviceInfoVo();
+        final IotDeviceInfoExtend extend = extendService.findByDeviceId(id);
+        BeanUtil.copyProperties(deviceInfo, resp);
+        resp.setIotCode(deviceInfo.getIotToken());
+        resp.setDeviceBrand(deviceInfo.getDeviceBrand());
+        resp.setServerIp(extend.getNetAddress());
+        return resp;
+    }
 }

+ 38 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/deviceInfo/NetHostDeviceInfoVo.java

@@ -0,0 +1,38 @@
+package com.xunmei.iot.vo.deviceInfo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(description = "设备信息")
+public class NetHostDeviceInfoVo {
+
+    @ApiModelProperty(value = "设备ID")
+    private Long id;
+
+    @ApiModelProperty(value = "组织ID")
+    private Long orgId;
+
+    @ApiModelProperty(value = "物联网编码")
+    private String iotCode;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备产品")
+    private String deviceType;
+
+    @ApiModelProperty(value = "设备品牌")
+    private Long deviceBrand;
+
+    @ApiModelProperty(value = "服务器IP")
+    private String serverIp;
+
+
+    @ApiModelProperty(value = "启用状态")
+    private Integer enable;
+
+
+
+}

+ 7 - 12
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysMultiLayerDictionaryController.java

@@ -4,31 +4,20 @@ package com.xunmei.system.controller;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.xunmei.common.core.domain.device.domain.SysMultiLayerDictionary;
 import com.xunmei.common.core.domain.device.vo.DictionaryTreeVo;
-import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.common.log.annotation.Log;
-import com.xunmei.common.log.enums.BusinessType;
-import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.dto.SysMultiLayerDictionaryDto;
 import com.xunmei.system.service.ISysMultiLayerDictionaryService;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.function.BiConsumer;
 import java.util.stream.Collectors;
 
 /**
@@ -150,5 +139,11 @@ public class SysMultiLayerDictionaryController {
         return sysMultiLayerDictionaryService.selectTableList(para);
 
     }
+
+    @ApiOperation("根据type获取字典")
+    @GetMapping("/list/{type}")
+    private AjaxResult getDictTableList(@PathVariable("type") String type) {
+         return AjaxResult.success(sysMultiLayerDictionaryService.selectListByType(type));
+    }
 }
 

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysMultiLayerDictionaryService.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.service;
 
+import cn.hutool.core.lang.Pair;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.device.domain.SysMultiLayerDictionary;
 import com.xunmei.common.core.domain.device.vo.DictionaryTreeVo;
@@ -27,4 +28,5 @@ public interface ISysMultiLayerDictionaryService extends IService<SysMultiLayerD
 
     TableDataInfo<SysMultiLayerDictionary> selectTableList(SysMultiLayerDictionaryDto para);
 
+    List<Pair<Long,String>> selectListByType(String type);
 }

+ 12 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysMultiLayerDictionaryServiceImpl.java

@@ -1,7 +1,7 @@
 package com.xunmei.system.service.impl;
 
+import cn.hutool.core.lang.Pair;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.domain.device.domain.SysMultiLayerDictionary;
@@ -9,9 +9,7 @@ import com.xunmei.common.core.domain.device.vo.DictionaryTreeVo;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.dto.SysMultiLayerDictionaryDto;
-import com.xunmei.system.mapper.ISysAreaMapper;
 import com.xunmei.system.mapper.SysMultiLayerDictionaryMapper;
 import com.xunmei.system.service.ISysMultiLayerDictionaryService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +17,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -104,4 +103,14 @@ public class SysMultiLayerDictionaryServiceImpl extends ServiceImpl<SysMultiLaye
         sysMultiLayerDictionaryMapper.selectPage(page, wrapper);
         return TableDataInfo.build(page);
     }
+
+    @Override
+    public List<Pair<Long, String>> selectListByType(String type) {
+        LambdaQueryWrapper<SysMultiLayerDictionary> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysMultiLayerDictionary::getDeleted, 0);
+        wrapper.eq(SysMultiLayerDictionary::getLevel, 1);
+        wrapper.eq(SysMultiLayerDictionary::getType, type);
+        final List<SysMultiLayerDictionary> dictionaryList = baseMapper.selectList(wrapper);
+        return dictionaryList.stream().map(item -> Pair.of(item.getId(), item.getName())).collect(Collectors.toList());
+    }
 }