Преглед на файлове

1.上班数据指令下发代码提交

jingyuanchao преди 1 година
родител
ревизия
7c93c0e15a

+ 9 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteHostService.java

@@ -3,6 +3,7 @@ package com.xunmei.system.api;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
+import com.xunmei.common.core.domain.work.dto.WorkDayDto;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.Eto.BreakerControlEto;
 import com.xunmei.system.api.Eto.SubSystemControlEto;
@@ -38,4 +39,12 @@ public interface RemoteHostService {
 
     @PostMapping("/breakerControlByDeviceId")
     AjaxResult breakerControlByDeviceId(@RequestBody BreakerControlEto eto);
+
+    /**
+     * 通知主机执行上下班操作
+     * @param eto
+     * @return
+     */
+    @PostMapping("/startWork")
+    AjaxResult startWork(@RequestBody WorkDayDto eto);
 }

+ 6 - 6
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteHostFallbackFactory.java

@@ -1,22 +1,17 @@
 package com.xunmei.system.api.factory;
 
-import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
+import com.xunmei.common.core.domain.work.dto.WorkDayDto;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.Eto.BreakerControlEto;
 import com.xunmei.system.api.Eto.SubSystemControlEto;
-import com.xunmei.system.api.RemoteConfigService;
 import com.xunmei.system.api.RemoteHostService;
-import com.xunmei.system.api.domain.SysConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.List;
-
 @Component
 public class RemoteHostFallbackFactory implements FallbackFactory<RemoteHostService> {
     private static final Logger log = LoggerFactory.getLogger(RemoteHostFallbackFactory.class);
@@ -63,6 +58,11 @@ public class RemoteHostFallbackFactory implements FallbackFactory<RemoteHostServ
             public AjaxResult breakerControlByDeviceId(BreakerControlEto eto) {
                 return null;
             }
+
+            @Override
+            public AjaxResult startWork(WorkDayDto eto) {
+                return null;
+            }
         };
     }
 }

+ 2 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/work/dto/WorkDayDto.java

@@ -20,4 +20,6 @@ public class WorkDayDto {
     @ApiModelProperty(value = "是否强制,0 等待正确结果,1 强制结束")
     private Integer compulsion;
 
+    @ApiModelProperty(value = "组织id")
+    private Long orgId;
 }

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

@@ -2,10 +2,12 @@ package com.xunmei.host.iot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
+import com.xunmei.common.core.domain.work.dto.WorkDayDto;
 import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
 import com.xunmei.host.websocket.dto.DeviceStatusInfo;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 
+import java.io.IOException;
 import java.util.List;
 
 public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
@@ -80,4 +82,6 @@ public interface IIotDeviceInfoService extends IService<IotDeviceInfo> {
     void deviceStatusChange(List<DeviceStatusInfo> statusInfos, IotServerInfo serverInfo);
 
     void delData(String iotCode);
+
+    void startWork(WorkDayDto eto) throws IOException;
 }

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

@@ -2,6 +2,7 @@ package com.xunmei.host.iot.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -11,6 +12,7 @@ import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.common.core.domain.iot.domain.IotServerInfo;
+import com.xunmei.common.core.domain.work.dto.WorkDayDto;
 import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
 import com.xunmei.common.core.enums.iot.DefenceAreaType;
 import com.xunmei.common.core.utils.JacksonUtils;
@@ -30,7 +32,10 @@ import com.xunmei.host.websocket.dto.dvs.SubDeviceInfo;
 import com.xunmei.host.websocket.enums.DeviceCacheEnum;
 import com.xunmei.host.websocket.enums.DeviceNetStatusEnum;
 import com.xunmei.host.websocket.enums.ProductEnums;
+import com.xunmei.host.websocket.enums.TopicTypeEnums;
 import com.xunmei.host.websocket.service.RouterService;
+import com.xunmei.host.websocket.utils.IotServerUtils;
+import com.xunmei.host.websocket.utils.WebSocketUtils;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 import com.xunmei.system.api.domain.iot.IotDeviceInfoExtend;
 import com.xunmei.system.api.util.LogUtils;
@@ -40,6 +45,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.IOException;
 import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -276,7 +282,7 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 
     @Override
     public void delData(String iotCode) {
-        if (ObjectUtil.isEmpty(iotCode)){
+        if (ObjectUtil.isEmpty(iotCode)) {
             return;
         }
         deleteDeviceByToken(iotCode);
@@ -751,4 +757,17 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         }
     }
 
+
+    @Override
+    public void startWork(WorkDayDto eto) throws IOException {
+
+        final IotServerInfo serverInfo = iotServerInfoService.selectByOrgId(eto.getOrgId());
+        final String iotCode = serverInfo.getIotCode();
+        final String topic = TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(), ProductEnums.DETECTION_HOST.getProductName()[0], ProductEnums.DETECTION_HOST.getProductName()[1]);
+        final JSONObject object = new JSONObject();
+        object.put("dataType", eto.getDataType());
+        final WebsocketResult result = IotServerUtils.invokeHostServer(topic, new JSONObject(), WebSocketConstants.DO_WORK, object);
+        WebSocketUtils.sendMessage(iotCode, JacksonUtils.toJSONString(result));
+
+    }
 }

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

@@ -3,6 +3,7 @@ package com.xunmei.host.north.controller;
 
 import com.xunmei.common.core.domain.host.remote.DiskInfoGetReq;
 import com.xunmei.common.core.domain.host.remote.VideoIntegrityGetReq;
+import com.xunmei.common.core.domain.work.dto.WorkDayDto;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.host.iot.service.IIotDeviceInfoService;
 import com.xunmei.host.protection.service.IIotAlarmHostService;
@@ -115,4 +116,11 @@ public class HostController {
         deviceInfoService.delData(iotCode);
         return AjaxResult.success();
     }
+
+    @PostMapping("/startWork")
+    AjaxResult startWork(@RequestBody WorkDayDto eto) throws IOException {
+
+        deviceInfoService.startWork(eto);
+        return AjaxResult.success();
+    }
 }

+ 2 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/server/service/IotServerInfoService.java

@@ -24,6 +24,8 @@ public interface IotServerInfoService extends IService<IotServerInfo> {
 
     IotServerInfo selectByToken(String token);
 
+    IotServerInfo selectByOrgId(Long orgId);
+
     SysOrg selectOrgByToken(String token);
 
     void updateConnectTimeByToken(String token, Date date);

+ 16 - 7
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/server/service/impl/IotServerInfoServiceImpl.java

@@ -38,10 +38,10 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
         queryWrapper.last(Constants.LIMIT1);
         IotServerInfo serverInfo = baseMapper.selectOne(queryWrapper);
         if (serverInfo == null) {
-            LogUtils.SOCKET_DAILY_HEALTH.error("未能根据registerCode查询到对应的token,registerCode:{}",registerCode);
+            LogUtils.SOCKET_DAILY_HEALTH.error("未能根据registerCode查询到对应的token,registerCode:{}", registerCode);
             return null;
         }
-        if (ObjectUtil.isEmpty(serverInfo.getIotCode())){
+        if (ObjectUtil.isEmpty(serverInfo.getIotCode())) {
             LogUtils.WEBSOCKET_MSG.info("iotCode为空,生成iotCode");
             serverInfo.setIotCode(UUID.randomUUID().toString());
         }
@@ -55,7 +55,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateByToken(IotServerInfo iotServerInfo) {
-        if (iotServerInfo==null){
+        if (iotServerInfo == null) {
             throw new RuntimeException("iot 链接信息不存在!");
         }
         updateById(iotServerInfo);
@@ -64,8 +64,8 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
     @Override
     public IotServerInfo selectByToken(String token) {
         QueryWrapper<IotServerInfo> qw = new QueryWrapper<>();
-        qw.lambda().eq(IotServerInfo::getIotCode,token);
-        qw.lambda().eq(IotServerInfo::getEnable,0);
+        qw.lambda().eq(IotServerInfo::getIotCode, token);
+        qw.lambda().eq(IotServerInfo::getEnable, 0);
         return baseMapper.selectOne(qw);
     }
 
@@ -75,7 +75,7 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
 
         SysOrg sysOrg = baseMapper.selectOrgByToken(token);
 
-        if (sysOrg==null){
+        if (sysOrg == null) {
             throw new RuntimeException("iot唯一编码关联的机构信息不存在!");
         }
         return sysOrg;
@@ -83,6 +83,15 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
 
     @Override
     public void updateConnectTimeByToken(String token, Date date) {
-        baseMapper.updateConnectTimeByToken(token,date);
+        baseMapper.updateConnectTimeByToken(token, date);
+    }
+
+    @Override
+    public IotServerInfo selectByOrgId(Long orgId) {
+        final LambdaQueryWrapper<IotServerInfo> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IotServerInfo::getOrgId, orgId);
+        //wrapper.eq(IotServerInfo::getIotStatus, 1);
+        wrapper.last(Constants.LIMIT1);
+        return baseMapper.selectOne(wrapper);
     }
 }

+ 5 - 0
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/websocket/constant/WebSocketConstants.java

@@ -93,6 +93,11 @@ public interface WebSocketConstants {
     String GET_DEVICES_SERVICES = "getDevices";
 
     /**
+     * 通知主机执行上下班操作
+     */
+    String DO_WORK = "doWork";
+
+    /**
      * 获取监控主机下通道、硬盘和监控主机扩展信息
      */
     String GET_DVS_DEVICE_INFOS = "getDvsDeviceInfos";

+ 6 - 1
soc-modules/soc-modules-host/src/main/java/com/xunmei/host/work/service/impl/IotDayWorkOperationServiceImpl.java

@@ -57,8 +57,11 @@ public class IotDayWorkOperationServiceImpl extends ServiceImpl<IotDayWorkOperat
         WorkOperationReq dayWorkOperation = JSON.parseObject(data.toString(), WorkOperationReq.class);
         IotDayWorkOperation operation = findByHostDataIdAndIotCode(dayWorkOperation.getWorkId(), dayWorkOperation.getId(), serverInfo.getIotCode());
         if (operation != null) {
-            BeanUtils.copyProperties(dayWorkOperation, operation);
+            BeanUtils.copyProperties(dayWorkOperation, operation,"id");
             operation.setForceEndTime(dayWorkOperation.getDataEndTime());
+            operation.setOrgId(serverInfo.getOrgId());
+            operation.setOperationType(dayWorkOperation.getOperationType());
+            operation.setOrgName(serverInfo.getOrgName());
             updateById(operation);
         } else {
             operation = new IotDayWorkOperation();
@@ -68,6 +71,8 @@ public class IotDayWorkOperationServiceImpl extends ServiceImpl<IotDayWorkOperat
             operation.setHostDataOperationId(dayWorkOperation.getId());
             operation.setIotCode(serverInfo.getIotCode());
             operation.setId(IdWorker.getId());
+            operation.setOrgId(serverInfo.getOrgId());
+            operation.setOrgName(serverInfo.getOrgName());
             save(operation);
         }
         return null;

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

@@ -193,8 +193,8 @@ public class IotServerInfoServiceImpl extends ServiceImpl<IotServerInfoMapper, I
 
     @Override
     public Integer comparePass(OperationPassDto operationPassDto) {
-        //final Long orgId = SecurityUtils.getLoginUser().getSysUser().getOrgId();
-        final Long orgId =4358025846522215L;
+        final Long orgId = SecurityUtils.getLoginUser().getSysUser().getOrgId();
+        //final Long orgId =4358025846522215L;
         final LambdaQueryWrapper<IotServerInfo> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(IotServerInfo::getOrgId, orgId);
         wrapper.last(Constants.LIMIT1);