| 
					
				 | 
			
			
				@@ -102,10 +102,9 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private void saveBreaker(List<BreakerDeviceDto> list, List<SysOrgVO> orgList, String msgId) throws IllegalAccessException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //对回路信息按机构进行分组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Map<String,List<BreakerDeviceDto>> listMap = breakerDeviceDtoLists.stream().collect(Collectors.groupingBy(r -> r.getOrgCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<IotBreaker> breakers = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<IotBreaker> insertBreakersList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<IotBreaker> listAll = breakerMapper.selectList(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<IotBreaker> breakers1 = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<IotBreaker> updateBreakersList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<NorthError> errors = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         NorthError error = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (BreakerDeviceDto dto : list) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -125,20 +124,26 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             IotBreaker breaker = this.buildBreaker(dto, org); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (listAll.stream().anyMatch(r -> r.getUniqueCode().equals(breaker.getUniqueCode()))) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                breakers1.add(breaker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Optional<IotBreaker> breakerOptional = listAll.stream().filter(r -> r.getUniqueCode().equals(breaker.getUniqueCode())).findAny(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (breakerOptional.isPresent()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                IotBreaker iotBreaker = breakerOptional.get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iotBreaker.setUpdateTime(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BeanUtils.copyProperties(breaker, iotBreaker, "id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                updateBreakersList.add(iotBreaker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                breakers.add(breaker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breaker.setCreateTime(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breaker.setUpdateTime(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                insertBreakersList.add(breaker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         northErrorService.saveErrorData(errors); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             breakerMapper.updateAllDel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (ObjectUtil.isNotEmpty(breakers)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                breakerMapper.batchInsert(breakers); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ObjectUtil.isNotEmpty(insertBreakersList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breakerMapper.batchInsert(insertBreakersList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (ObjectUtil.isNotEmpty(breakers1)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                breakerMapper.batchUpdate(breakers1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ObjectUtil.isNotEmpty(updateBreakersList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breakerMapper.batchUpdate(updateBreakersList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } catch (Exception e) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -176,43 +181,51 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ReceiveErrorDto saveBreakerData(BreakerDeviceDataDto request, String msgId) throws IllegalAccessException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String uniqueCode = IotBreaker.getUniqueCode(request.getOrgCode(), request.getHostCode(), request.getDeviceCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!RedisCheckRepeatDataUtil.checkData(uniqueCode, request.getStatus() + "", -1)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //保存拦截数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.saveBreakerDataLog(request, msgId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return ReceiveErrorDto.success("数据已接受,短时间内收到相同的回路数据,处理结果忽略:拒绝处理该数据"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //验证参数是否齐全 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ReceiveErrorDto dto = checkBreakerDataInfo(request,cacheList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (dto.getSuccess()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //处理数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Map<String, Object> map = this.buildBreakerAndData(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dto = (ReceiveErrorDto) map.get("errorDto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (dto.getSuccess()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                IotBreakerDevice breakerDevice = (IotBreakerDevice) map.get("breakerDevice"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                IotBreakerDeviceData breakerDeviceData = (IotBreakerDeviceData) map.get("breakerDeviceData"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                IotBreaker breaker = (IotBreaker) map.get("breaker"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                IotBreakerData breakerData = (IotBreakerData) map.get("breakerData"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                IotPowerOffAlarm powerOffAlarm = (IotPowerOffAlarm) map.get("powerOffAlarm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    baseMapper.updateById(breakerDevice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    breakerDeviceDataMapper.insert(breakerDeviceData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(breaker!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        breakerMapper.updateById(breaker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(breakerData!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        breakerDataMapper.insert(breakerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        breakerDataLogMapper.insertDataLog(breakerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if(powerOffAlarm!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        powerOffAlarmService.saveOrUpdate(powerOffAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        //如果是通电,则将他之前的所有断电记录的恢复时间设置为当前记录的恢复时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(powerOffAlarm.getRecoveryTime()!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            powerOffAlarmMapper.saveOrUpdateOtherPower(powerOffAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ReceiveErrorDto dto = checkBreakerDataInfo(request, cacheList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!dto.getSuccess()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return dto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //处理数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<String, Object> map = this.buildBreakerAndData(request); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dto = (ReceiveErrorDto) map.get("errorDto"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!dto.getSuccess()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return dto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IotBreakerDevice breakerDevice = (IotBreakerDevice) map.get("breakerDevice"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IotBreakerDeviceData breakerDeviceData = (IotBreakerDeviceData) map.get("breakerDeviceData"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IotBreaker breaker = (IotBreaker) map.get("breaker"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IotBreakerData breakerData = (IotBreakerData) map.get("breakerData"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        IotPowerOffAlarm powerOffAlarm = (IotPowerOffAlarm) map.get("powerOffAlarm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }catch (Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    LogUtils.BASE_INFO_BREAKER_DEVICE_DATA.error("保存回路数据失败:{}", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new RuntimeException (e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            baseMapper.updateById(breakerDevice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            breakerDeviceDataMapper.insert(breakerDeviceData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (breaker != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breakerMapper.updateById(breaker); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (breakerData != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breakerDataMapper.insert(breakerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                breakerDataLogMapper.insertDataLog(breakerData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (powerOffAlarm != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                powerOffAlarmService.saveOrUpdate(powerOffAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //如果是通电,则将他之前的所有断电记录的恢复时间设置为当前记录的恢复时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (powerOffAlarm.getRecoveryTime() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    powerOffAlarmMapper.saveOrUpdateOtherPower(powerOffAlarm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LogUtils.BASE_INFO_BREAKER_DEVICE_DATA.error("保存回路数据失败:{}", e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RuntimeException(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return dto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -245,7 +258,10 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, Object> map = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ReceiveErrorDto errorDto = new ReceiveErrorDto(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         QueryWrapper<IotBreakerDevice> qbreaker = new QueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        qbreaker.lambda().eq(IotBreakerDevice::getDeviceUniqueCode, IotBreakerDevice.getUniqueCode(request.getOrgCode(), request.getHostCode(), request.getDeviceCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        qbreaker.lambda().eq(IotBreakerDevice::getDeviceUniqueCode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                IotBreakerDevice.getUniqueCode(request.getOrgCode(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        request.getHostCode(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        request.getDeviceCode())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         qbreaker.lambda().eq(IotBreakerDevice::getDeleted, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         IotBreakerDevice breakerDevice = baseMapper.selectOne(qbreaker); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -405,8 +421,8 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Optional<IotBreakerDevice> deviceOptional = breakerDeviceAllOlds.stream().filter(r -> r.getDeviceUniqueCode().equals(breakerDeviceNew.getDeviceUniqueCode())).findAny(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (deviceOptional.isPresent()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 IotBreakerDevice breakerDeviceOld = deviceOptional.get(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                BeanUtils.copyProperties(breakerDeviceNew, breakerDeviceOld); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 breakerDeviceNew.setUpdateTime(LocalDateTime.now()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                BeanUtils.copyProperties(breakerDeviceNew, breakerDeviceOld, "id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 breakerDeviceOlds.add(breakerDeviceOld); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 breakerDeviceNew.setId(IdWorker.getId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -449,7 +465,9 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .orgPath(org.getPath()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .deviceUniqueCode(IotBreakerDevice.getUniqueCode(org.getCode(), req.getHostCode(), req.getDeviceCode())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .breakerName(breakerName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .status(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .deleted(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .createTime(LocalDateTime.now()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .breakerUniqueCode(breakerUniqueCode).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -472,6 +490,18 @@ public class IotBreakerDeviceServiceImpl extends ServiceImpl<IotBreakerDeviceMap 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             deviceCode = dto.getDeviceCode().substring(0, dto.getDeviceCode().length() - 4) + "1001"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String uniqueCode = IotBreaker.getUniqueCode(org.getCode(), dto.getHostCode(), index); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return IotBreaker.builder().name(name).orgId(org.getId()).orgName(org.getName()).orgPath(org.getPath()).id(IdWorker.getId()).uniqueCode(uniqueCode).deleted(0).deviceCode(deviceCode).type(type).build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return IotBreaker.builder(). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                name(name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orgId(org.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orgName(org.getName()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orgPath(org.getPath()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .id(IdWorker.getId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .uniqueCode(uniqueCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .deleted(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .status(2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .breakerName(name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .deviceCode(deviceCode) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .type(type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .build(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |