فهرست منبع

Merge branch 'V0.0.6-iot' of http://10.87.21.221:8000/jzyd_yyds/soc into V0.0.6-iot

zhulu 1 سال پیش
والد
کامیت
b86a30821e
17فایلهای تغییر یافته به همراه175 افزوده شده و 203 حذف شده
  1. 1 1
      project_data/sql/0.0.6-iot/soc/soc.sql
  2. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteFileService.java
  3. 1 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteFileFallbackFactory.java
  4. 1 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java
  5. 19 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/ThreadPoolConfig.java
  6. 3 2
      soc-modules/soc-modules-file/src/main/java/com/xunmei/file/controller/SysFileController.java
  7. 1 1
      soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/ISysFileService.java
  8. 21 4
      soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/LocalSysFileServiceImpl.java
  9. 22 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisController.java
  10. 21 21
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/DataController.java
  11. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IotAlarmDefenceAreaService.java
  12. 6 2
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java
  13. 54 126
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java
  14. 1 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceServiceImpl.java
  15. 2 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java
  16. 18 35
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDaysCheckServiceImpl.java
  17. 2 6
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
project_data/sql/0.0.6-iot/soc/soc.sql


+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteFileService.java

@@ -97,5 +97,5 @@ public interface RemoteFileService {
     void deletedZipFile();
 
     @PostMapping(value = "/file/readFile")
-    Response readFile(@RequestBody Map<String, String> data);
+    byte[] readFile(@RequestBody Map<String, String> data);
 }

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteFileFallbackFactory.java

@@ -93,7 +93,7 @@ public class RemoteFileFallbackFactory implements FallbackFactory<RemoteFileServ
             }
 
             @Override
-            public Response readFile(Map<String, String> data) {
+            public byte[] readFile(Map<String, String> data) {
                 throw new RuntimeException("读取文件超时,请稍后重试!");
             }
         };

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java

@@ -42,7 +42,7 @@ public class IotAlarmSubsystem implements Serializable {
     @TableField("name")
     private String name;
 
-    @ApiModelProperty(value = "布防状态,0:撤防,1:布防")
+    @ApiModelProperty(value = "布防状态,0:撤防,1:布防,2:未知")
     @TableField("status")
     private Integer status;
 

+ 19 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/ThreadPoolConfig.java

@@ -17,6 +17,7 @@ public class ThreadPoolConfig implements AsyncConfigurer {
      * 项目共用线程池
      */
     public static final String SOC_EXECUTOR = "socExecutor";
+    public static final String MEDIATOR_EXECUTOR = "mediatorExecutor";
 
 
     @Override
@@ -41,4 +42,22 @@ public class ThreadPoolConfig implements AsyncConfigurer {
         executor.initialize();
         return executor;
     }
+
+    @Bean(MEDIATOR_EXECUTOR)
+    @Primary
+    public ThreadPoolTaskExecutor mediatorExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //优雅停机
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        executor.setCorePoolSize(10);
+        executor.setMaxPoolSize(10);
+        executor.setQueueCapacity(200);
+        executor.setThreadNamePrefix("soc-executor-");
+        //拒绝策略,由投递者执行
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        //装饰器,用于异步线程内捕获异常
+        executor.setThreadFactory(new SocThreadFactory(executor));
+        executor.initialize();
+        return executor;
+    }
 }

+ 3 - 2
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/controller/SysFileController.java

@@ -220,7 +220,8 @@ public class SysFileController {
     }
 
     @PostMapping(value = "/readFile")
-    void readFile(@RequestBody Map<String, String> data, HttpServletResponse response) throws IOException {
-        sysFileService.readFile(data.get("path"), response);
+    byte[] readFile(@RequestBody Map<String, String> data) throws IOException {
+        byte[] r = sysFileService.readFile(data.get("path"));
+        return r;
     }
 }

+ 1 - 1
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/ISysFileService.java

@@ -78,5 +78,5 @@ public interface ISysFileService
 
     String generateOutInPdf(Map<String, Object> data)throws Exception;
 
-    void readFile(String path,HttpServletResponse response) throws IOException;
+    byte[] readFile(String path) throws IOException;
 }

+ 21 - 4
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/LocalSysFileServiceImpl.java

@@ -3,6 +3,8 @@ package com.xunmei.file.service;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ByteUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -33,6 +35,7 @@ import com.xunmei.system.api.domain.SafeCheckTaskRegisterBookVo;
 import com.xunmei.system.api.vo.SysOrgVO;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.text.StringEscapeUtils;
 import org.apache.tools.zip.ZipEntry;
@@ -941,7 +944,7 @@ public class LocalSysFileServiceImpl implements ISysFileService {
     }
 
     @Override
-    public void readFile(String path, HttpServletResponse response) throws IOException {
+    public byte[] readFile(String path) throws IOException {
         if (ObjectUtil.isEmpty(path)) {
             throw new RuntimeException("文件地址无效");
         }
@@ -953,15 +956,29 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         conn.setRequestMethod("GET");
         conn.setConnectTimeout(5 * 1000);
         InputStream stream = conn.getInputStream();
+//        FileUtil.del("d:\\1111.jpg");
+//FileUtil.writeFromStream(stream,"d:\\1111.jpg");
+
+        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
         try (BufferedInputStream bis = new BufferedInputStream(stream)) {
             // 设置响应类型
-            response.setContentType("image/*");
-            response.setHeader("Content-Length", String.valueOf(stream.available()));
+//            response.setContentType("image/*");
+//            response.setHeader("Content-Length", String.valueOf(stream.available()));
             // 将文件流发送给前端
             byte[] buffer = new byte[1024];
             int bytesRead;
             while ((bytesRead = bis.read(buffer)) != -1) {
-                response.getOutputStream().write(buffer, 0, bytesRead);
+                outStream.write(buffer, 0, bytesRead);
+            }
+
+            byte[] r = outStream.toByteArray();
+            if (r[0] == 10) {
+                byte[] r1 = new byte[r.length - 1];
+
+                ArrayUtil.copy(r, 1, r1, 0, r1.length);
+                return r1;
+            } else {
+                return r;
             }
         }
     }

+ 22 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/VideoDiagnosisController.java

@@ -10,11 +10,18 @@ import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisIntegrityVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
+import com.xunmei.system.api.RemoteFileService;
+import feign.Response;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
 import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * 录像诊断
@@ -29,6 +36,9 @@ public class VideoDiagnosisController {
     @Autowired
     private VideoDiagnosisService videoDiagnosisService;
 
+    @Resource
+    private RemoteFileService fileService;
+
     @PostMapping("/web/page")
     public TableDataInfo<VideoDiagnosisWebPageVo> webPage(@RequestBody VideoDiagnosisWebPageDto pageDto) {
         TableDataInfo<VideoDiagnosisWebPageVo> page = this.videoDiagnosisService.getPageData(pageDto);
@@ -61,6 +71,18 @@ public class VideoDiagnosisController {
         return AjaxResult.success(count);
     }
 
+    @ApiOperation("有异常的硬盘数量")
+    @GetMapping({"/img"})
+    void getImg(String path, HttpServletResponse response) throws IOException {
+        Map<String, String> param = new HashMap<>();
+        param.put("path", path);
+        byte[] result = fileService.readFile(param);
+        OutputStream bufferedOutputStream = response.getOutputStream();
+        bufferedOutputStream.write(result,0,result.length);
+        response.setContentType("image/*");
+        bufferedOutputStream.flush();
+        bufferedOutputStream.close();
+    }
 //    @PostMapping("/app/detail/{hostCode}/{channelCode}")
 //    public TableDataInfo<VideoDiagnosisAppPageVo> appInfo(@PathVariable("hostCode") String hostCode, @PathVariable("channelCode") String channelCode) {
 //        TableDataInfo<VideoDiagnosisAppPageVo> page = this.videoDiagnosisService.getAppPageData(pageDto);

+ 21 - 21
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/DataController.java

@@ -178,25 +178,25 @@ public class DataController {
     @Resource
     private RemoteFileService fileService;
 
-    @ApiOperation("传感器通用设备信息同步")
-    @GetMapping({"/api/test"})
-    public void test(@RequestBody Map<String, String> data, HttpServletResponse response) throws IOException {
-        Response result = fileService.readFile(data);
-        Response.Body body = result.body();
-        InputStream inputStream = body.asInputStream();
-        System.out.println(inputStream.available());
-        BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
-        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
-        int length = 0;
-        byte[] temp = new byte[1024 * 10];
-        while ((length = bufferedInputStream.read(temp)) != -1) {
-            bufferedOutputStream.write(temp, 0, length);
-        }
-        bufferedOutputStream.flush();
-        bufferedOutputStream.close();
-        bufferedInputStream.close();
-        inputStream.close();
-
-
-    }
+//    @ApiOperation("传感器通用设备信息同步")
+//    @GetMapping({"/api/test"})
+//    public void test(@RequestBody Map<String, String> data, HttpServletResponse response) throws IOException {
+//        Response result = fileService.readFile(data);
+//        Response.Body body = result.body();
+//        InputStream inputStream = body.asInputStream();
+//        System.out.println(inputStream.available());
+//        BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
+//        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
+//        int length = 0;
+//        byte[] temp = new byte[1024 * 10];
+//        while ((length = bufferedInputStream.read(temp)) != -1) {
+//            bufferedOutputStream.write(temp, 0, length);
+//        }
+//        bufferedOutputStream.flush();
+//        bufferedOutputStream.close();
+//        bufferedInputStream.close();
+//        inputStream.close();
+//
+//
+//    }
 }

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IotAlarmDefenceAreaService.java

@@ -18,7 +18,7 @@ import java.util.List;
  */
 public interface IotAlarmDefenceAreaService extends IService<IotAlarmDefenceArea> {
 
-    List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode);
+    List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode,Long orgId);
 
     IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx, String orgGuid);
 

+ 6 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java

@@ -65,8 +65,12 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
     IIotDefenceAreaDataService defenceAreaDataService;
 
     @Override
-    public List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode) {
-        return lambdaQuery().eq(IotAlarmDefenceArea::getSubSystemCode, defenceAreaCode).eq(IotAlarmDefenceArea::getDeleted, 0).list();
+    public List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode,Long orgId) {
+        return lambdaQuery()
+                .eq(IotAlarmDefenceArea::getOrgId, orgId)
+                .eq(IotAlarmDefenceArea::getSubSystemCode, defenceAreaCode)
+                .eq(IotAlarmDefenceArea::getDeleted, 0)
+                .list();
     }
 
     @Override

+ 54 - 126
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java

@@ -15,6 +15,7 @@ import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystemLog;
 import com.xunmei.common.core.domain.iot.domain.IotDevice;
 import com.xunmei.common.core.domain.mediator.domain.MediatorCategory;
 import com.xunmei.common.core.enums.CategoryDataEnum;
+import com.xunmei.common.core.thread.ThreadPoolConfig;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.redis.utils.RedisUtils;
@@ -22,6 +23,7 @@ import com.xunmei.mediator.api.mapper.IotAlarmDefenceAreaMapper;
 import com.xunmei.mediator.api.mapper.IotAlarmSubsystemMapper;
 import com.xunmei.mediator.api.mapper.ProtectionLogMapper;
 import com.xunmei.mediator.api.service.*;
+import com.xunmei.mediator.util.CheckDataUtil;
 import com.xunmei.mediator.util.RedisCheckRepeatDataUtil;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
@@ -38,13 +40,18 @@ import com.xunmei.system.api.vo.SysOrgVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 
@@ -73,16 +80,18 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
     private IotAlarmDefenceAreaService defenceAreService;
     @Resource
     private NorthErrorService northErrorService;
-    @Resource
-    IotAlarmDefenceAreaMapper defenceAreaMapper;
-    @Resource
-    private IotAlarmSubsystemMapper subsystemMapper;
+    @Autowired
+    @Qualifier(ThreadPoolConfig.MEDIATOR_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
 
     @Override
     public IotAlarmSubsystem findByCodeAndOrgId(String defenceAreaCode, Long orgId) {
         return lambdaQuery()
+                .eq(IotAlarmSubsystem::getDeleted, 0)
                 .eq(IotAlarmSubsystem::getCode, defenceAreaCode)
-                .eq(IotAlarmSubsystem::getOrgId, orgId).last(Constants.LIMIT1).one()
+                .eq(IotAlarmSubsystem::getOrgId, orgId)
+                .last(Constants.LIMIT1)
+                .one()
                 ;
     }
 
@@ -129,8 +138,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
 
         SysOrg org = orgService.findByCode(organizationGuid, SecurityConstants.INNER);
         if (org == null) {
-            NorthError error = new NorthError(msgId, "/status/defencearea"
-                    , protectionEditDto, "orgGUID:" + organizationGuid + "不正确");
+            NorthError error = new NorthError(msgId, "/status/defencearea", protectionEditDto, "orgGUID:" + organizationGuid + "不正确");
             northErrorService.saveError(error);
             return result;
         }
@@ -143,24 +151,23 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             result.setErrorMsg("参数非法:updateTime不正确");
             return result;
         }
-
-
-        IotAlarmSubsystem protection = new IotAlarmSubsystem();
-        protection.setCode(protectionEditDto.getDefenceareaCode());
-
-        IotAlarmSubsystem old = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
-        if (old != null) {
-            if (old.getUpdateTime().isAfter(updateTime)) {
-                result.setSuccess(true);
-                result.setErrorMsg("历史更新时间大于当前消息,无需更新!");
-                return result;
-            }
-            protection = old;
-        } else {
-            protection.setId(IdWorker.getId());
-            protection.setCreateTime(LocalDateTime.now());
+        IotDevice device = iotDeviceService.findByHostCode(protectionEditDto.getAlarmHostCode(), org.getId());
+        if (device == null) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:没有找到报警主机");
+            return result;
+        }
+        IotAlarmSubsystem protection = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
+        if (protection == null) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:没有找到子系统");
+            return result;
+        }
+        if (protection.getUpdateTime().isAfter(updateTime)) {
+            result.setSuccess(true);
+            result.setErrorMsg("历史更新时间大于当前消息,无需更新!");
+            return result;
         }
-
         protection.setName(protectionEditDto.getDefenceareaName());
         protection.setUpdateTime(updateTime);
         protection.setStatusUpdateTime(LocalDateTime.now());
@@ -179,55 +186,15 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
                 result.setErrorMsg("参数非法:defenceStatus不正确");
                 return result;
         }
-        IotDevice device = iotDeviceService.findByHostCode(protectionEditDto.getAlarmHostCode(), org.getId());
-        if (device == null) {
-            result.setSuccess(false);
-            result.setErrorMsg("参数非法:没有找到报警主机");
-            return result;
-        }
-        IotAlarmSubsystem po = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
-        if (po == null) {
-            result.setSuccess(false);
-            result.setErrorMsg("参数非法:没有找到子系统");
-            return result;
-        } else {
-            if (!po.getAlarmHostCode().equals(protectionEditDto.getAlarmHostCode())) {
-                result.setSuccess(false);
-                result.setErrorMsg("参数非法:该报警主机没有此子系统");
-                return result;
-            }
-        }
         protection.setOrgId(org.getId());
         protection.setOrgName(org.getShortName());
         protection.setOrgPath(org.getPath());
         protection.setAlarmHostCode(protectionEditDto.getAlarmHostCode());
         protection.setStatusUpdatorId(null);
         protection.setStatusUpdatorName(null);
-        this.saveOrUpdate(protection);
+        this.updateById(protection);
         this.northStatisticsSyncService.saveOrUpdateBusinessCountByDateAndDataType(DateUtil.today(), DataType.protectionStatusCount.getIndex(), 1L);
         this.saveProtectionLog(protection);
-        //this.writeValue(device, protection);
-
-/*
-        //动环告警处理
-        List<MediatorAlarmRuleSource> alarmRuleSourceList = alarmRuleSourceService.selectByCode(protection.getCode(), protection.getOrgId());
-        if (ObjectUtil.isNotEmpty(alarmRuleSourceList)) {
-            for (MediatorAlarmRuleSource alarmRuleSource : alarmRuleSourceList) {
-                final List<MediatorAlarmRuleExpress> appAlarmRuleExpressList = alarmRuleExpressService.selectRuleExpressByRuleIdAndType(alarmRuleSource.getRuleId(), alarmRuleSource.getSourceType());
-                if (ObjectUtil.isEmpty(appAlarmRuleExpressList)) {
-                    continue;
-                }
-                for (MediatorAlarmRuleExpress alarmRuleExpress : appAlarmRuleExpressList) {
-                    Integer timeTemplateId = alarmRuleExpress.getTimeTemplateId();
-                    //全时段
-                    if (timeTemplateId != null && 0 == alarmRuleExpress.getIsUseWorkTemplate()) {
-                        dealAlarmDataByAllTimeTemplate(alarmRuleExpress, protection);
-                    } else {
-                        dealAlarmDataByWorkTimeTemplate(alarmRuleExpress, protection, alarmRuleSource);
-                    }
-                }
-            }
-        }*/
         return result;
     }
 
@@ -242,38 +209,12 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         protectionLogMapper.insert(protectionLog);
     }
 
-   /* public void writeValue(final IotDevice device, final IotAlarmSubsystem protection) {
-        Map data = null;
-
-        try {
-            data = JSON.parseObject(String.valueOf(protection), Map.class);
-        } catch (Exception var5) {
-            log.error("转换对象异常:{}", var5);
-        }
-
-        String key = this.toKey(device.getOrgId(), Integer.parseInt(device.getDeviceType()));
-        this.redisTemplate.boundHashOps(key).put(device.getId(), data);
-        log.info("[ {} ][ {} ][ {} ] 数据 ==> [ {} ]", new Object[]{device.getOrgId(), device.getDeviceType(), device.getId(), data});
-    }*/
-
-    private String toKey(final Long orgId, Integer deviceType) {
-        return "device_" + orgId + "_" + deviceType + "_data_map";
-    }
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ReceiveErrorDto defenceAreaList(DataPageDto<DefenceAreaDto> request, String msgId) {
-        String packageGuid = request.getPackageGuid();
-        if (StringUtils.isEmpty(packageGuid)) {
-            return ReceiveErrorDto.error("packageGuid参数非法");
-        }
-        Long totalPage = request.getTotalPage();
-        if (totalPage == null) {
-            return ReceiveErrorDto.error("totalPage参数非法");
-        }
-
-        if (CollectionUtils.isEmpty(request.getData())) {
-            return ReceiveErrorDto.error("报警主机子系统及防区信息为空");
+        final ReceiveErrorDto errorDto = CheckDataUtil.checkObjFieldIsNull(request);
+        if (!errorDto.getSuccess()) {
+            return errorDto;
         }
         final List<DefenceAreaDto> defenceareaList = RedisCheckRepeatDataUtil.isCompleted(request, DefenceAreaDto.class);
         LogUtils.BASE_INFO_DEFENCEAREA.info("判断是否获取全部报警主机子系统及防区信息分页数据:{}", defenceareaList.size() > 0);
@@ -282,25 +223,20 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         }
         LogUtils.BASE_INFO_DEFENCEAREA.info("获取全部的报警主机子系统及防区信息,开始数据处理界面!");
         this.northStatisticsSyncService.saveOrUpdateBaseCountByDataType(DataType.protectionCount.getIndex(), defenceareaList.size(), false);
-        new Thread(() -> {
+        CompletableFuture.runAsync(() -> {
             this.saveAndUpdate(defenceareaList, msgId);
-        }).start();
+        }, threadPoolTaskExecutor);
         return ReceiveErrorDto.success();
     }
 
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
     public void saveAndUpdate(List<DefenceAreaDto> defenceareaList, String msgId) {
-        if (CollectionUtils.isEmpty(defenceareaList)) {
-            ReceiveErrorDto.error("报警主机子系统及防区信息为空");
-            return;
-        }
         //查询报警主机主机设备列表
         List<IotDevice> devices = iotDeviceService.findByCategory(CategoryDataEnum.ALARM_HOST_DEVICE.getId());
         checkParam(defenceareaList, msgId, devices);
     }
 
     private void checkParam(List<DefenceAreaDto> defenceareaList, String msgId, List<IotDevice> devices) {
-        //获取category列表
-        List<MediatorCategory> categorys = categoryService.list();
         final List<SysOrgVO> orgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
         List<NorthError> errors = new ArrayList<>();
         List<IotAlarmDefenceArea> sensorList = new ArrayList<>();
@@ -371,17 +307,14 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
                 if (StringUtils.isEmpty(sensorDto.getSensorTypeName())) {
                     error = new NorthError(msgId, "/api/data/defenceareaList", dto, "参数非法:未传SensorTypeName");
                     errors.add(error);
-                    continue;
-                }
-                List<MediatorCategory> categorysa = categorys.stream().filter(r -> r.getName().equals(sensorDto.getSensorTypeName())).collect(Collectors.toList());//categoryDao.getOne(qw);
-                if (categorysa.size() == 0) {
-                    error = new NorthError(msgId, "/api/data/defenceareaList", dto, "参数非法:没有找到设备类型,默认归到其他类型中");
-                    errors.add(error);
                 }
             }
-            // }
-            List<IotDevice> devicesa = devices.stream().filter(r -> r.getEquipmentCode().equals(dto.getAlarmHostCode()) && r.getOrgId().equals(org.getId())).collect(Collectors.toList());
-            if (devicesa.size() == 0) {
+            final Optional<IotDevice> iotDeviceOptional = devices.stream()
+                    .filter(r -> r.getEquipmentCode().equals(dto.getAlarmHostCode()))
+                    .filter(r -> r.getOrgId().equals(org.getId()))
+                    .filter(r -> r.getDeleted() == 0)
+                    .findAny();
+            if (!iotDeviceOptional.isPresent()) {
                 error = new NorthError(msgId, "/api/data/defenceareaList", dto, "参数非法:没有找到报警主机");
                 errors.add(error);
                 continue;
@@ -410,25 +343,22 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         this.northStatisticsSyncService.saveOrUpdateBaseCountByDataType(DataType.protectionCount.getIndex(), defenceareaList.size(), true);
     }
 
-    private void updateAllDelete(List<Long> orgIdLIst){
-        LambdaUpdateWrapper<IotAlarmSubsystem> updateWrapper=new LambdaUpdateWrapper<IotAlarmSubsystem>();
-        updateWrapper.in(IotAlarmSubsystem::getOrgId,orgIdLIst);
-        updateWrapper.set(IotAlarmSubsystem::getDeleted,1);
+    private void updateAllDelete(List<Long> orgIdLIst) {
+        LambdaUpdateWrapper<IotAlarmSubsystem> updateWrapper = new LambdaUpdateWrapper<IotAlarmSubsystem>();
+        updateWrapper.in(IotAlarmSubsystem::getOrgId, orgIdLIst);
+        updateWrapper.set(IotAlarmSubsystem::getDeleted, 1);
         this.update(updateWrapper);
 
-        LambdaUpdateWrapper<IotAlarmDefenceArea> defenceAreaLambdaUpdateWrapper=new LambdaUpdateWrapper<IotAlarmDefenceArea>();
-        defenceAreaLambdaUpdateWrapper.in(IotAlarmDefenceArea::getOrgId,orgIdLIst);
-        defenceAreaLambdaUpdateWrapper.set(IotAlarmDefenceArea::getDeleted,1);
+        LambdaUpdateWrapper<IotAlarmDefenceArea> defenceAreaLambdaUpdateWrapper = new LambdaUpdateWrapper<IotAlarmDefenceArea>();
+        defenceAreaLambdaUpdateWrapper.in(IotAlarmDefenceArea::getOrgId, orgIdLIst);
+        defenceAreaLambdaUpdateWrapper.set(IotAlarmDefenceArea::getDeleted, 1);
         defenceAreService.update(defenceAreaLambdaUpdateWrapper);
     }
 
     public Map<String, Object> protectionBuild(DefenceAreaDto dto, SysOrgVO org) {
         Map<String, Object> map = new HashMap<>();
-        IotAlarmSubsystem protection = null;
-        IotAlarmSubsystem old = this.findByCodeAndOrgId(dto.getDefenceareaCode(), org.getId());
-        if (old != null) {
-            protection = old;
-        } else {
+        IotAlarmSubsystem protection = this.findByCodeAndOrgId(dto.getDefenceareaCode(), org.getId());
+        if (protection == null) {
             protection = new IotAlarmSubsystem();
             protection.setId(IDHelper.id());
             protection.setCreateTime(LocalDateTime.now());
@@ -445,12 +375,11 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         protection.setOrgPath(org.getPath());
         map.put("protection", protection);
         saveProtectionLog(protection);
-
         if (ObjectUtil.isEmpty(dto.getSensorArray())) {
             return map;
         }
         List<IotAlarmDefenceArea> list = new ArrayList<>();
-        List<IotAlarmDefenceArea> sensorList = defenceAreService.findBySubSystemCode(dto.getDefenceareaCode());
+        List<IotAlarmDefenceArea> sensorList = defenceAreService.findBySubSystemCode(dto.getDefenceareaCode(), org.getId());
         for (SensorDto sensorDto : dto.getSensorArray()) {
             IotAlarmDefenceArea sensor = new IotAlarmDefenceArea();
             sensor.setAlarmHostCode(dto.getAlarmHostCode());
@@ -462,7 +391,6 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             sensor.setOrganizationGuid(dto.getOrganizationGuid());
             sensor.setDefenceAreaIndex(sensorDto.getInputIndex());
             sensor.setDefenceAreaName(sensorDto.getInputName());
-            //sensor.setModuleAddress(sensorDto.getModuleAddress());
             sensor.setSensorType(sensorDto.getSensorType());
             sensor.setSensorTypeName(sensorDto.getSensorTypeName());
             sensor.setDeleted(0);

+ 1 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceServiceImpl.java

@@ -56,6 +56,7 @@ public class IotDeviceServiceImpl extends ServiceImpl<IotDeviceMapper, IotDevice
         return lambdaQuery()
                 .eq(IotDevice::getOrgId, orgId)
                 .eq(IotDevice::getEquipmentCode, equipmentCode)
+                .eq(IotDevice::getDeleted, 0)
                 .last(Constants.LIMIT1)
                 .one();
     }

+ 2 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java

@@ -61,9 +61,10 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
     @Override
     public IotDvrChannel findChannel(String channelCode, String equipmentCode, Long orgId) {
         return lambdaQuery()
-                .eq(IotDvrChannel::getHostCode, equipmentCode)
                 .eq(IotDvrChannel::getOrgId, orgId)
+                .eq(IotDvrChannel::getHostCode, equipmentCode)
                 .eq(IotDvrChannel::getChannelCode, channelCode)
+                .eq(IotDvrChannel::getDeleted, 0)
                 .last(Constants.LIMIT1)
                 .one();
     }

+ 18 - 35
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDaysCheckServiceImpl.java

@@ -87,34 +87,34 @@ public class VideoDaysCheckServiceImpl extends ServiceImpl<VideoDaysCheckMapper,
         String organizationGuid = videoDaysCheckDto.getOrganizationGuid();
         SysOrg org = orgService.findByCode(organizationGuid, SecurityConstants.INNER);
         if (org == null) {
-            NorthError error = new NorthError(msgId,"/video/daysInfo"
-                    , videoDaysCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确");
-            northErrorService.saveError(error);
-            return ReceiveErrorDto.success();
+            northErrorService.saveError(new NorthError(msgId, "/video/daysInfo", videoDaysCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确"));
+            return ReceiveErrorDto.error("参数非法:organizationGuid:" + organizationGuid + "不正确");
         }
-        MediatorVideoDaysCheck videoDaysCheck = new MediatorVideoDaysCheck();
-
-        //获取监控主机
         IotDevice hostDevice = iIotDeviceService.findByHostCode(videoDaysCheckDto.getEquipmentCode(), org.getId());
-        if (hostDevice != null) {
-            videoDaysCheck.setEquipmentName(hostDevice.getEquipmentName());
+        if (ObjectUtil.isNull(hostDevice)) {
+            northErrorService.saveError(new NorthError(msgId, "/video/daysInfo", videoDaysCheckDto, "主机不存在!"));
+            return ReceiveErrorDto.error("主机不存在!");
         }
-
-        MediatorVideoDaysCheck old = this.findByOrgIdAndEquipmentCodeAndChannelCode(org.getId(), videoDaysCheckDto.getEquipmentCode(), videoDaysCheckDto.getChannelCode());
-        if (old != null) {
-            videoDaysCheck = old;
+        final IotDvrChannel channel = dvrChannelService.findChannel(videoDaysCheckDto.getChannelCode(), videoDaysCheckDto.getEquipmentCode(), org.getId());
+        if (ObjectUtil.isNull(channel)) {
+            northErrorService.saveError(new NorthError(msgId, "/video/daysInfo", videoDaysCheckDto, "通道/设备不存在!"));
+            return ReceiveErrorDto.error("通道/设备不存在!");
         }
-        if (old == null) {
+        MediatorVideoDaysCheck videoDaysCheck = this.findByOrgIdAndEquipmentCodeAndChannelCode(org.getId(), videoDaysCheckDto.getEquipmentCode(), videoDaysCheckDto.getChannelCode());
+        if (videoDaysCheck == null) {
+            videoDaysCheck = new MediatorVideoDaysCheck();
             videoDaysCheck.setCreateTime(new Date());
         }
+        //获取监控主机
+        videoDaysCheck.setEquipmentName(hostDevice.getEquipmentName());
+        videoDaysCheck.setEquipmentCode(videoDaysCheckDto.getEquipmentCode());
         videoDaysCheck.setUpdateTime(new Date());
         videoDaysCheck.setChannelCode(videoDaysCheckDto.getChannelCode());
         videoDaysCheck.setChannelName(videoDaysCheckDto.getChannelName());
-        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getCheckDate())){
+        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getCheckDate())) {
             videoDaysCheck.setCheckDate(JSON.toJSONString(videoDaysCheckDto.getCheckDate()));
         }
-        videoDaysCheck.setEquipmentCode(videoDaysCheckDto.getEquipmentCode());
-        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getLoseDate())){
+        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getLoseDate())) {
             videoDaysCheck.setLoseDate(JSON.toJSONString(videoDaysCheckDto.getLoseDate()));
         }
         videoDaysCheck.setPlanDays(videoDaysCheckDto.getPlanDays());
@@ -122,32 +122,15 @@ public class VideoDaysCheckServiceImpl extends ServiceImpl<VideoDaysCheckMapper,
         videoDaysCheck.setOrgId(org.getId());
         videoDaysCheck.setOrgName(org.getShortName());
         videoDaysCheck.setOrgPath(org.getPath());
-        if(ObjectUtil.isNotEmpty(videoDaysCheckDto.getEarliestVideoTime())){
+        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getEarliestVideoTime())) {
             videoDaysCheck.setEarliestVideoTime(LocalDateTime.parse(videoDaysCheckDto.getEarliestVideoTime(), DateTimeFormatter.ISO_DATE_TIME));
         }
         videoDaysCheck.setStatus(0);
         if (ObjectUtil.isAllNotEmpty(videoDaysCheck.getCheckDate(), videoDaysCheck.getLoseDate()) && !"null".equals(videoDaysCheck.getLoseDate()) && !"null".equals(videoDaysCheck.getCheckDate()) && !"[]".equals(videoDaysCheck.getLoseDate()) && !"[]".equals(videoDaysCheck.getCheckDate())) {
             final Map map = JSON.parseObject(videoDaysCheck.getCheckDate(), Map.class);
             final List list = JSON.parseObject(videoDaysCheck.getLoseDate(), List.class);
-            /*final String dateStr = (String) map.get("sd");
-            final DateTime offsetDay1 = DateUtil.offsetDay(DateUtil.parse(dateStr), 1);
-            final DateTime offsetDay2 = DateUtil.offsetDay(DateUtil.parse(dateStr), 2);
-            final String dateStr1 = DateUtil.format(offsetDay1, "yyyy-MM-dd");
-            final String dateStr2 = DateUtil.format(offsetDay2, "yyyy-MM-dd");*/
-
-            //2023/1/17 v1.9.4版本需求,判断从三天改成一天
-            //videoDaysCheck.setStatus(list.contains(dateStr1) && list.contains(dateStr2) && list.contains(map.get("sd")) ? 1 : 0);
             videoDaysCheck.setStatus(list.contains(map.get("sd")) ? 1 : 0);
         }
-
-
-        final IotDvrChannel channel = dvrChannelService.findChannel(videoDaysCheckDto.getChannelCode(), videoDaysCheckDto.getEquipmentCode(), org.getId());
-        if (ObjectUtil.isNull(channel)) {
-            NorthError error = new NorthError(msgId,"/video/daysInfo"
-                    , videoDaysCheckDto, "通道/设备不存在!");
-            northErrorService.saveError(error);
-            return ReceiveErrorDto.success();
-        }
         this.saveOrUpdate(videoDaysCheck);
         saveLog(videoDaysCheck);
         return ReceiveErrorDto.success();

+ 2 - 6
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -84,16 +84,12 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         String organizationGuid = videoIntegrityCheckDto.getOrganizationGuid();
         SysOrg org = orgService.findByCode(organizationGuid, SecurityConstants.INNER);
         if (org == null) {
-            NorthError error = new NorthError(msgId, "/video/complete"
-                    , videoIntegrityCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确");
-            northErrorService.saveError(error);
+            northErrorService.saveError(new NorthError(msgId, "/video/complete", videoIntegrityCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确"));
             return ReceiveErrorDto.success();
         }
         final IotDvrChannel channel = dvrChannelService.findChannel(videoIntegrityCheckDto.getChannelCode(), videoIntegrityCheckDto.getEquipmentCode(), org.getId());
         if (ObjectUtil.isNull(channel)) {
-            NorthError error = new NorthError(msgId, "/video/complete"
-                    , videoIntegrityCheckDto, "通道/设备不存在");
-            northErrorService.saveError(error);
+            northErrorService.saveError(new NorthError(msgId, "/video/complete", videoIntegrityCheckDto, "通道/设备不存在"));
             return ReceiveErrorDto.success();
         }
 

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است