|
|
@@ -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();
|
|
|
}
|
|
|
}
|