瀏覽代碼

北向通道处理代码修改提交

jingyuanchao 1 年之前
父節點
當前提交
8792b381fc

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

@@ -1,6 +1,7 @@
 package com.xunmei.mediator.api.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
@@ -44,8 +45,7 @@ import java.util.stream.Collectors;
  */
 @Service
 public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, IotDvrChannel> implements IIotDvrChannelService {
-    @Resource
-    private IMediatorCategoryService categoryService;
+
     @Resource
     private RemoteOrgService orgService;
     @Resource
@@ -74,8 +74,6 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         if (ObjectUtil.isEmpty(deviceDtoList)) {
             return ReceiveErrorDto.error("通道数据为空");
         }
-        MediatorCategory category = categoryService.findCategoryByCodeAndParentId("18", -1L);
-
         DeviceDto deviceDto;
         List<NorthError> errors = new ArrayList<>();
         List<IotDvrChannel> list = new ArrayList<>();
@@ -152,7 +150,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
                 continue;
             }
 
-            IotDvrChannel device = getChannelDevice(deviceDto, category);
+            IotDvrChannel device = getChannelDevice(deviceDto);
 
             list.add(device);
 
@@ -167,7 +165,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         return ReceiveErrorDto.success();
     }
 
-    private IotDvrChannel getChannelDevice(DeviceDto deviceDto, MediatorCategory category) {
+    private IotDvrChannel getChannelDevice(DeviceDto deviceDto) {
         IotDvrChannel device = new IotDvrChannel();
         IotDvrChannel old = this.findChannel(deviceDto.getEquipmentCode(), deviceDto.getChannelCode(), deviceDto.getOrg().getId());
         if (old != null) {
@@ -222,18 +220,8 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
             if (list.size() == 0) {
                 return;
             }
-            /**
-             * 获取要逻辑删除的主机code和orgId
-             */
-            Set<EquipmentOrgVo> eos = new HashSet<>();
-            eos.addAll(list);
 
-            List<EquipmentOrgVo> eosList = new ArrayList<>();
-            eosList.addAll(eos);
-            /**
-             * 获取要进行批量处理的通道信息
-             * 并通过主机code,通道id,机构id进行去重
-             */
+            //获取要进行批量处理的通道信息,并通过主机code,通道id,机构id进行去重
             List<IotDvrChannel> devis = devices.stream().collect(Collectors.collectingAndThen(
                     Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getChannelCode() + ";" + o.getHostCode() + ";" + o.getOrgId()))), ArrayList::new));
 
@@ -242,36 +230,18 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
              * 第一步 逻辑删除对应 主机的 通道数据
              * 第二步 批量更新数据
              */
-            this.batchUpdateDel(eosList);
-
-            /**
-             * 自己写批量插入,更新方法,保证效率
-             */
-            //批量更新列表
-            List<IotDvrChannel> upList = new ArrayList<>();
+            final List<EquipmentOrgVo> collect = list.stream().distinct().collect(Collectors.toList());
+            this.batchUpdateDel(collect);
             //批量插入列表
-            List<IotDvrChannel> inList = new ArrayList<>();
-            if (devis.size() > 0) {
-                for (IotDvrChannel dev : devis) {
-                    if (ObjectUtil.isNotEmpty(dev.getId())) {
-                        upList.add(dev);
-                    } else {
-                        inList.add(dev);
-                    }
-                }
-            }
-
-            if (upList.size() > 0) {
-                this.batchUpdateDevice(upList);
-            }
-
-            if (inList.size() > 0) {
-                this.batchInsertDevice(inList);
-            }
+            final List<IotDvrChannel> inList = devis.stream().filter(d -> ObjectUtil.isEmpty(d.getId())).collect(Collectors.toList());
+            //批量更新列表
+            final List<IotDvrChannel> upList = devis.stream().filter(d -> ObjectUtil.isNotEmpty(d.getId())).collect(Collectors.toList());
+            this.batchUpdateDevice(upList);
+            this.batchInsertDevice(inList);
 
         } catch (Exception e) {
             e.printStackTrace();
-            LogUtils.BASE_INFO_CHANNEL.error("【北向定时任务:{} 执行异常】【异常原因:{}】", "通道信息-DataDealJobService", e);
+            LogUtils.BASE_INFO_CHANNEL.error("【北向定时任务:{} 执行异常】【异常原因:{}】", "通道信息-DataDealJobService", e.getMessage());
             throw new RuntimeException(e.getMessage());
         }
     }
@@ -279,18 +249,30 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchUpdateDel(List<EquipmentOrgVo> eosList) {
-        baseMapper.batchUpdateDel(eosList);
+        for (EquipmentOrgVo equipmentOrgVo : eosList) {
+            LambdaUpdateWrapper<IotDvrChannel> wrapper = new LambdaUpdateWrapper<IotDvrChannel>();
+            wrapper.eq(IotDvrChannel::getHostCode, equipmentOrgVo.getEquipmentCode());
+            wrapper.set(IotDvrChannel::getOrgId, equipmentOrgVo.getOrgId());
+            wrapper.set(IotDvrChannel::getDeleted, 1);
+            update(wrapper);
+        }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchUpdateDevice(List<IotDvrChannel> upList) {
+        if (ObjectUtil.isEmpty(upList)) {
+            return;
+        }
         updateBatchById(upList);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void batchInsertDevice(List<IotDvrChannel> inList) {
+        if (ObjectUtil.isEmpty(inList)) {
+            return;
+        }
         saveBatch(inList);
     }
 }