映射表保存,链路绑定设备代码优化

This commit is contained in:
huguanghan 2025-01-17 15:14:24 +08:00
parent 4f88a6a793
commit e7baf3f6f2

View File

@ -1,8 +1,8 @@
package com.das.modules.node.service.impl; package com.das.modules.node.service.impl;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.das.common.config.SessionUtil; import com.das.common.config.SessionUtil;
import com.das.common.constant.MeasType; import com.das.common.constant.MeasType;
@ -13,7 +13,6 @@ import com.das.modules.auth.entity.SysOrg;
import com.das.modules.auth.mapper.SysOrgMapper; import com.das.modules.auth.mapper.SysOrgMapper;
import com.das.modules.equipment.domain.vo.SysIotModelFieldVo; import com.das.modules.equipment.domain.vo.SysIotModelFieldVo;
import com.das.modules.equipment.domain.vo.SysIotModelServiceVo; import com.das.modules.equipment.domain.vo.SysIotModelServiceVo;
import com.das.modules.equipment.entity.SysIotModelField;
import com.das.modules.equipment.mapper.SysEquipmentMapper; import com.das.modules.equipment.mapper.SysEquipmentMapper;
import com.das.modules.equipment.mapper.SysIotModelFieldMapper; import com.das.modules.equipment.mapper.SysIotModelFieldMapper;
import com.das.modules.equipment.mapper.SysIotModelServiceMapper; import com.das.modules.equipment.mapper.SysIotModelServiceMapper;
@ -52,6 +51,7 @@ import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -60,6 +60,8 @@ import java.util.stream.Collectors;
public class SysNodeServiceImpl implements SysNodeService { public class SysNodeServiceImpl implements SysNodeService {
private static final ObjectMapper JSON_MAPPER = new ObjectMapper(); private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
public static final int COMMIT_COUNT = 10000;
@Autowired @Autowired
private SysNodeMapper sysNodeMapper; private SysNodeMapper sysNodeMapper;
@ -327,8 +329,9 @@ public class SysNodeServiceImpl implements SysNodeService {
if(mappingVoMap.containsKey(key)){ if(mappingVoMap.containsKey(key)){
SysTabMappingVo item = mappingVoMap.get(key); SysTabMappingVo item = mappingVoMap.get(key);
PassedMappingIds.add(item.getId()); PassedMappingIds.add(item.getId());
SysTabMappingVo sysTabMappingVo = mappingVoMap.get(key);
SysTabMapping mapping = sysImptabmappingMapper.selectById(item.getId()); SysTabMapping mapping = new SysTabMapping();
BeanCopyUtils.copy(sysTabMappingVo,mapping);
mapping.setMeasPointName(iotModelVo.getAttributeName()); mapping.setMeasPointName(iotModelVo.getAttributeName());
mapping.setHighSpeed(iotModelVo.getHighSpeed()); mapping.setHighSpeed(iotModelVo.getHighSpeed());
mapping.setPorder(order); mapping.setPorder(order);
@ -369,8 +372,10 @@ public class SysNodeServiceImpl implements SysNodeService {
if(mappingVoMap.containsKey(key)){ if(mappingVoMap.containsKey(key)){
SysTabMappingVo item = mappingVoMap.get(key); SysTabMappingVo item = mappingVoMap.get(key);
PassedMappingIds.add(item.getId()); PassedMappingIds.add(item.getId());
//根据key拿到配置
SysTabMapping mapping = sysImptabmappingMapper.selectById(item.getId()); SysTabMappingVo sysTabMappingVo = mappingVoMap.get(key);
SysTabMapping mapping = new SysTabMapping();
BeanCopyUtils.copy(sysTabMappingVo,mapping);
mapping.setMeasPointName(iotServiceVo.getServiceName()); mapping.setMeasPointName(iotServiceVo.getServiceName());
mapping.setPorder(order); mapping.setPorder(order);
order++; order++;
@ -394,18 +399,29 @@ public class SysNodeServiceImpl implements SysNodeService {
} }
//批量更新 //批量更新
if (!CollectionUtils.isEmpty(addList)) { if (!CollectionUtils.isEmpty(addList)) {
sysImptabmappingMapper.insertOrUpdateBatch(addList); ListUtil.page(addList,COMMIT_COUNT, item -> {
sysImptabmappingMapper.insertOrUpdateBatch(item);
});
} }
if (!CollectionUtils.isEmpty(updateList)) { if (!CollectionUtils.isEmpty(updateList)) {
sysImptabmappingMapper.insertOrUpdateBatch(updateList); ListUtil.page(updateList,COMMIT_COUNT, item -> {
sysImptabmappingMapper.insertOrUpdateBatch(item);
});
} }
//删除为匹配的历史配置 //删除为匹配的历史配置
List<Long> deleteList = new ArrayList<>();
for(SysTabMappingVo item : mappingVoMap.values()){ for(SysTabMappingVo item : mappingVoMap.values()){
if(!PassedMappingIds.contains(item.getId())){ if(!PassedMappingIds.contains(item.getId())){
sysImptabmappingMapper.deleteById(item.getId()); deleteList.add(item.getId());
} }
} }
if (!CollectionUtils.isEmpty(deleteList)){
ListUtil.page(deleteList,COMMIT_COUNT, item -> {
sysImptabmappingMapper.deleteBatchIds(item);
});
}
} }
/** /**
@ -414,8 +430,10 @@ public class SysNodeServiceImpl implements SysNodeService {
*/ */
@Override @Override
public void saveMappingList(List<SysTabMappingVo> impList) { public void saveMappingList(List<SysTabMappingVo> impList) {
List<SysTabMappingVo> mappingInfoListByLinkId = sysImptabmappingMapper.getMappingInfoListByLinkId(impList.get(0).getLinkId());
Map<Long, SysTabMappingVo> mappingVoMap = mappingInfoListByLinkId.stream().collect(Collectors.toMap(SysTabMappingVo::getId, Function.identity(), (value1, value2) -> value1));
if (impList.get(0).getProtocol() == 9 || impList.get(0).getProtocol() == 17){ if (impList.get(0).getProtocol() == 9 || impList.get(0).getProtocol() == 17){
Map<Long, Integer> collect = sysImptabmappingMapper.getMappingInfoListByLinkId(impList.get(0).getLinkId()).stream().collect(Collectors.toMap(SysTabMappingVo::getId, SysTabMappingVo::getMeasPointType, (value1, value2) -> value1)); Map<Long, Integer> collect = mappingInfoListByLinkId.stream().collect(Collectors.toMap(SysTabMappingVo::getId, SysTabMappingVo::getMeasPointType, (value1, value2) -> value1));
List<SysTabMappingVo> analogList = impList.stream().filter(item -> collect.get(item.getId()) == 138).collect(Collectors.toList()); List<SysTabMappingVo> analogList = impList.stream().filter(item -> collect.get(item.getId()) == 138).collect(Collectors.toList());
List<SysTabMappingVo> accumulator = impList.stream().filter(item -> collect.get(item.getId()) == 139).collect(Collectors.toList()); List<SysTabMappingVo> accumulator = impList.stream().filter(item -> collect.get(item.getId()) == 139).collect(Collectors.toList());
List<SysTabMappingVo> discrete = impList.stream().filter(item -> collect.get(item.getId()) == 140).collect(Collectors.toList()); List<SysTabMappingVo> discrete = impList.stream().filter(item -> collect.get(item.getId()) == 140).collect(Collectors.toList());
@ -431,14 +449,19 @@ public class SysNodeServiceImpl implements SysNodeService {
List<SysTabMapping> list = new ArrayList<>(); List<SysTabMapping> list = new ArrayList<>();
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY); SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
for (SysTabMappingVo imp : impList) { for (SysTabMappingVo imp : impList) {
SysTabMapping rec = sysImptabmappingMapper.selectById(imp.getId()); //根据key拿到配置
rec.setUpdatedTime(new Date()); SysTabMappingVo sysTabMappingVo = mappingVoMap.get(imp.getId());
rec.setUpdatedBy(sysUserVo.getAccount()); SysTabMapping mapping = new SysTabMapping();
rec.setParams(imp.getParams()); BeanCopyUtils.copy(sysTabMappingVo,mapping);
list.add(rec); mapping.setUpdatedTime(new Date());
mapping.setUpdatedBy(sysUserVo.getAccount());
mapping.setParams(imp.getParams());
list.add(mapping);
} }
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
sysImptabmappingMapper.insertOrUpdateBatch(list); ListUtil.page(list,COMMIT_COUNT, item -> {
sysImptabmappingMapper.insertOrUpdateBatch(item);
});
} }
} }
} catch (Exception e) { } catch (Exception e) {