Selaa lähdekoodia

设备维护: 报警主机 代码提交

jingyuanchao 11 kuukautta sitten
vanhempi
commit
ceb425253b

+ 8 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleController.java

@@ -89,7 +89,14 @@ public class IotAlarmRuleController {
     @ApiOperation(value = "获取机构下所有主机信息")
     @GetMapping(value = "/getConnectHostOrg/{orgId}")
     public AjaxResult getConnectHostOrg(@PathVariable Long orgId) {
-        List<Pair<String, String>> data = iotAlarmRuleService.getConnectHostOrg(orgId);
+        List<Pair<String, String>> data = iotAlarmRuleService.getConnectHostOrg(orgId,true);
+        return AjaxResult.success(data);
+    }
+
+    @ApiOperation(value = "获取当前机构的主机信息")
+    @GetMapping(value = "/getCurOrgConnectHost/{orgId}")
+    public AjaxResult getCurOrgConnectHost(@PathVariable Long orgId) {
+        List<Pair<String, String>> data = iotAlarmRuleService.getConnectHostOrg(orgId,false);
         return AjaxResult.success(data);
     }
 }

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

@@ -51,11 +51,22 @@ public class IotDeviceInfoController {
         return AjaxResult.success(deviceInfoService.editDvrHostDevice(req));
     }
 
+    @ApiOperation("监控主机详情")
+    @GetMapping({"/dvrHostDeviceInfo/{id}"})
+    AjaxResult addDvrHostDevice(@PathVariable Long id) {
+        return AjaxResult.success(deviceInfoService.dvrHostDeviceInfo(id));
+    }
+
     @ApiOperation("新增/编辑报警主机")
     @PostMapping({"/editAlarmHostDevice"})
     AjaxResult editAlarmHostDevice(@RequestBody EditAlarmHostDeviceDto req) {
         return AjaxResult.success(deviceInfoService.editAlarmHostDevice(req));
     }
 
+    @ApiOperation("报警主机详情")
+    @GetMapping({"/alarmHostDeviceInfo/{id}"})
+    AjaxResult alarmHostDeviceInfo(@PathVariable Long id) {
+        return AjaxResult.success(deviceInfoService.alarmHostDeviceInfo(id));
+    }
 
 }

+ 110 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/deviceInfo/AlarmHostDeviceInfoVo.java

@@ -0,0 +1,110 @@
+package com.xunmei.iot.dto.deviceInfo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(description = "设备信息")
+public class AlarmHostDeviceInfoVo {
+
+    @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 deviceProduct;
+
+    @ApiModelProperty(value = "服务器IP")
+    private String serverIp;
+
+    @ApiModelProperty(value = "服务器端口")
+    private Integer serverPort;
+
+    @ApiModelProperty(value = "用户名")
+    private String userName;
+
+    @ApiModelProperty(value = "密码")
+    private String password;
+
+    @ApiModelProperty(value = "监听地址")
+    private String listenAddress;
+
+    @ApiModelProperty(value = "监听端口")
+    private Integer listenPort;
+
+    @ApiModelProperty(value = "设备MAC地址")
+    private String deviceMac;
+
+    @ApiModelProperty(value = "设备用户编码")
+    private String deviceUserCode;
+
+    @ApiModelProperty(value = "物联网地址")
+    private String iotAddress;
+
+    @ApiModelProperty(value = "型号")
+    private String models;
+
+    @ApiModelProperty(value = "主机设备类型")
+    private String hostDeviceType;
+
+    @ApiModelProperty(value = "启用状态")
+    private Integer enable;
+
+    @ApiModelProperty(value = "子系统数量")
+    private Integer subSystemNums;
+
+    @ApiModelProperty(value = "传感器数量")
+    private Integer inputSensorNums;
+
+    @ApiModelProperty(value = "子系统列表")
+    private List<SubSystemInfoVo> subSystemList;
+
+    @ApiModelProperty(value = "输入传感器列表")
+    private List<InputSensorInfoVo> inputSensorList;
+
+    @Data
+    @ApiModel(description = "子系统信息")
+    public static class SubSystemInfoVo {
+        @ApiModelProperty(value = "子系统索引")
+        private String subSystemIndex;
+
+        @ApiModelProperty(value = "子系统名称")
+        private String subSystemName;
+
+        @ApiModelProperty(value = "启用状态")
+        private Integer enable;
+    }
+
+    @Data
+    @ApiModel(description = "输入传感器信息")
+    public static class InputSensorInfoVo {
+        @ApiModelProperty(value = "输入传感器索引")
+        private Integer inputSensorIndex;
+
+        @ApiModelProperty(value = "输入传感器名称")
+        private String inputSensorName;
+
+        @ApiModelProperty(value = "模块地址")
+        private String moduleAddress;
+
+        @ApiModelProperty(value = "子系统索引")
+        private String subSystemIndex;
+
+        @ApiModelProperty(value = "传感器类型")
+        private String sensorType;
+
+        @ApiModelProperty(value = "启用状态")
+        private Integer enable;
+    }
+}

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

@@ -5,10 +5,12 @@ 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.vo.deviceInfo.DeviceDetailInfoVo;
+import com.xunmei.iot.vo.deviceInfo.DvrHostDeviceInfoVo;
 import com.xunmei.iot.vo.deviceInfo.IotDeviceInfoPageVo;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 
@@ -38,4 +40,7 @@ public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
 
     Integer editAlarmHostDevice(EditAlarmHostDeviceDto req);
 
+    DvrHostDeviceInfoVo dvrHostDeviceInfo(Long id);
+
+    AlarmHostDeviceInfoVo alarmHostDeviceInfo(Long id);
 }

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

@@ -48,7 +48,7 @@ public interface IotAlarmRuleService extends IService<IotAlarmRule> {
 
     void deleteAlarmRule(Long ruleId);
 
-    List<Pair<String, String>> getConnectHostOrg(Long orgId);
+    List<Pair<String, String>> getConnectHostOrg(Long orgId,boolean checkSub);
 
     void syncAlarmRule(Long id);
 }

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

@@ -13,4 +13,6 @@ public interface IotDeviceInfoExtendService extends IService<IotDeviceInfoExtend
 
     void updateByDeviceId(Long deviceId, EditDvrHostDeviceDto req);
     void updateAlarmHostExtendByDeviceId(Long deviceId, EditAlarmHostDeviceDto req);
+
+    IotDeviceInfoExtend findByDeviceId(Long deviceId);
 }

+ 12 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotDeviceInfoExtendServiceImpl.java

@@ -4,6 +4,7 @@ package com.xunmei.iot.service;
 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.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
 import com.xunmei.iot.mapper.IotDeviceInfoExtendMapper;
@@ -17,7 +18,7 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
     @Override
     public void updateByDeviceId(Long deviceId, EditDvrHostDeviceDto req) {
         LambdaQueryWrapper<IotDeviceInfoExtend> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(IotDeviceInfoExtend::getDeviceId,deviceId);
+        wrapper.eq(IotDeviceInfoExtend::getDeviceId, deviceId);
         remove(wrapper);
 
         IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
@@ -35,7 +36,7 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
     @Override
     public void updateAlarmHostExtendByDeviceId(Long deviceId, EditAlarmHostDeviceDto req) {
         LambdaQueryWrapper<IotDeviceInfoExtend> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(IotDeviceInfoExtend::getDeviceId,deviceId);
+        wrapper.eq(IotDeviceInfoExtend::getDeviceId, deviceId);
         remove(wrapper);
 
         IotDeviceInfoExtend extend = new IotDeviceInfoExtend();
@@ -55,4 +56,13 @@ public class IotDeviceInfoExtendServiceImpl extends ServiceImpl<IotDeviceInfoExt
         extend.setHostDeviceType(req.getHostDeviceType());
         save(extend);
     }
+
+    @Override
+    public IotDeviceInfoExtend findByDeviceId(Long deviceId) {
+        LambdaQueryWrapper<IotDeviceInfoExtend> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IotDeviceInfoExtend::getDeviceId, deviceId);
+        wrapper.last(Constants.LIMIT1);
+        return getOne(wrapper);
+    }
 }
+

+ 2 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleServiceImpl.java

@@ -256,9 +256,9 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
     }
 
     @Override
-    public List<Pair<String, String>> getConnectHostOrg(Long orgId) {
+    public List<Pair<String, String>> getConnectHostOrg(Long orgId,boolean checkSub) {
         final SysOrg sysOrg = orgService.selectSysOrgById(orgId, SecurityConstants.INNER);
-        final List<IotServerInfo> connectOrg = serverInfoService.selectConnectOrg(true, orgId, sysOrg.getPath());
+        final List<IotServerInfo> connectOrg = serverInfoService.selectConnectOrg(checkSub, orgId, sysOrg.getPath());
         if (CollectionUtils.isEmpty(connectOrg)) {
             return new ArrayList<>();
         }

+ 81 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -19,6 +19,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;
@@ -29,13 +30,16 @@ import com.xunmei.iot.mapper.IotServerProductMapper;
 import com.xunmei.iot.service.IIotDeviceInfoService;
 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.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
+import com.xunmei.system.api.domain.iot.IotDeviceInfoExtend;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -170,6 +174,25 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     }
 
     @Override
+    public DvrHostDeviceInfoVo dvrHostDeviceInfo(Long id) {
+        final IotDeviceInfo deviceInfo = getById(id);
+        if (deviceInfo == null) {
+            throw new RuntimeException("设备不存在");
+        }
+        DvrHostDeviceInfoVo resp = new DvrHostDeviceInfoVo();
+        BeanUtils.copyProperties(deviceInfo, resp);
+        resp.setIotCode(deviceInfo.getIotToken());
+        IotDeviceInfoExtend extend = extendService.findByDeviceId(id);
+        resp.setModels(deviceInfo.getDeviceModel());
+        resp.setUserName(extend.getUserName());
+        resp.setPassword(extend.getPassword());
+        resp.setServerIp(extend.getNetAddress());
+        resp.setServerPort(extend.getPort().toString());
+
+        return resp;
+    }
+
+    @Override
     public Integer editDvrHostDevice(EditDvrHostDeviceDto req) {
         Long deviceId = req.getId();
         SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
@@ -214,6 +237,62 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     }
 
     @Override
+    public AlarmHostDeviceInfoVo alarmHostDeviceInfo(Long id) {
+        final IotDeviceInfo deviceInfo = getById(id);
+        if (deviceInfo == null) {
+            throw new RuntimeException("设备不存在");
+        }
+        AlarmHostDeviceInfoVo resp = new AlarmHostDeviceInfoVo();
+        BeanUtils.copyProperties(deviceInfo, resp);
+        resp.setModels(deviceInfo.getDeviceModel());
+        resp.setIotCode(deviceInfo.getIotToken());
+        IotDeviceInfoExtend extend = extendService.findByDeviceId(id);
+        BeanUtils.copyProperties(extend, resp,"id");
+        resp.setUserName(extend.getUserName());
+        resp.setPassword(extend.getPassword());
+        resp.setServerIp(extend.getNetAddress());
+        resp.setServerPort(extend.getPort());
+
+        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);
+        final List<IotAlarmSubsystem> subSystems = subsystemMapper.selectList(wrapper);
+        if (CollUtil.isEmpty(subSystems)){
+            return resp;
+        }
+        resp.setSubSystemNums(subSystems.size());
+        resp.setSubSystemList(subSystems.stream().map(r->{
+            final AlarmHostDeviceInfoVo.SubSystemInfoVo vo = new AlarmHostDeviceInfoVo.SubSystemInfoVo();
+            vo.setSubSystemIndex(r.getCode());
+            vo.setSubSystemName(r.getName());
+            vo.setEnable(r.getEnable());
+            return vo;
+        }).collect(Collectors.toList()));
+
+        final LambdaQueryWrapper<IotAlarmDefenceArea> defenceWrapper = new LambdaQueryWrapper<>();
+        defenceWrapper.eq(IotAlarmDefenceArea::getAlarmHostCode, deviceInfo.getDeviceCode());
+        defenceWrapper.eq(IotAlarmDefenceArea::getDeleted, 0);
+        final List<IotAlarmDefenceArea> defenceAreaList = defenceAreaMapper.selectList(defenceWrapper);
+        if (CollUtil.isEmpty(defenceAreaList)){
+            return resp;
+        }
+        resp.setInputSensorNums(defenceAreaList.size());
+        resp.setInputSensorList(defenceAreaList.stream().map(r->{
+            final AlarmHostDeviceInfoVo.InputSensorInfoVo vo = new AlarmHostDeviceInfoVo.InputSensorInfoVo();
+            vo.setInputSensorIndex(r.getDefenceAreaIndex());
+            vo.setInputSensorName(r.getDefenceAreaName());
+            vo.setModuleAddress(r.getModuleAddress());
+            vo.setSubSystemIndex(r.getSubSystemCode());
+            vo.setSensorType(r.getSensorType());
+            vo.setEnable(r.getEnable());
+            return vo;
+        }).collect(Collectors.toList()));
+
+        return resp;
+    }
+
+    @Override
     public Integer editAlarmHostDevice(EditAlarmHostDeviceDto req) {
         Long deviceId = req.getId();
         SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
@@ -341,11 +420,11 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList = req.getSubSystemList();
 
         if (CollUtil.isNotEmpty(subSystemList)) {
-            createSubsystems(deviceInfo, subSystemList, req.getInputSensorList(),sysOrg);
+            createSubsystems(deviceInfo, subSystemList, req.getInputSensorList(), sysOrg);
         }
     }
 
-    private void createSubsystems(IotDeviceInfo deviceInfo, List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList, List<EditAlarmHostDeviceDto.InputSensorDto> sensorList,SysOrg sysOrg) {
+    private void createSubsystems(IotDeviceInfo deviceInfo, List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList, List<EditAlarmHostDeviceDto.InputSensorDto> sensorList, SysOrg sysOrg) {
         SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
 
         for (EditAlarmHostDeviceDto.SubSystemDto systemDto : subSystemList) {

+ 53 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/deviceInfo/DvrHostDeviceInfoVo.java

@@ -0,0 +1,53 @@
+package com.xunmei.iot.vo.deviceInfo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author jingyuanchao
+ * @date 2024/11/18 13:57
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class DvrHostDeviceInfoVo {
+
+    @ApiModelProperty(value = "设备id")
+    private Long id;
+
+    @ApiModelProperty(value = "机构id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "主机iotCode")
+    private String iotCode;
+
+    @ApiModelProperty(value = "设备名称")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备产品")
+    private String deviceProduct;
+
+    @ApiModelProperty(value = "主机ip")
+    private String serverIp;
+
+    @ApiModelProperty(value = "主机端口")
+    private String serverPort;
+
+    @ApiModelProperty(value = "设备用户名")
+    private String userName;
+
+    @ApiModelProperty(value = "设备密码")
+    private String password;
+
+    @ApiModelProperty(value = "设备型号")
+    private String models;
+
+    @ApiModelProperty(value = "是否启用",notes = "0:未启用 1:启用")
+    private Integer enable;
+
+
+
+
+}

+ 1 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/deviceInfo/IotDeviceInfoPageVo.java

@@ -10,6 +10,7 @@ public class IotDeviceInfoPageVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private long id;
+    private long orgId;
 
     @ApiModelProperty(value = "地区")
     private String firstOrgName;