| | |
| | | |
| | | import com.alibaba.druid.support.json.JSONUtils; |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.entity.YwPoint; |
| | | import com.ycl.platform.domain.result.UY.OneMachineFileResult; |
| | | import com.ycl.platform.domain.vo.TMonitorVO; |
| | | import com.ycl.platform.service.ITMonitorService; |
| | | import com.ycl.platform.service.YwPointService; |
| | | import com.ycl.system.entity.SysDictData; |
| | | import com.ycl.system.service.ISysDictDataService; |
| | | import com.ycl.utils.DateUtils; |
| | |
| | | import org.springframework.data.mongodb.core.query.Query; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.*; |
| | |
| | | @Autowired |
| | | private ISysDictDataService dictDataService; |
| | | @Autowired |
| | | private YwPointService ywPointService; |
| | | @Autowired |
| | | private RedisTemplate redisTemplate; |
| | | //同步mongodb一机一档到数据库 |
| | | public void synchronize() { |
| | | Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); |
| | | List<OneMachineFileResult> oneMachineFileResults = mongoTemplate.find(query, OneMachineFileResult.class); |
| | | //数据库monitor表数据 |
| | | List<String> serialNumberInBase = monitorService.selectTMonitorList(null).stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList()); |
| | | //准备插入数据库的数据 |
| | | List<TMonitor> monitorList = new ArrayList<>(); |
| | | //新的数据,原数据库中不存在的数据 |
| | | Set<TMonitor> newMonitorList = new HashSet<>(); |
| | | |
| | | //点位数据 |
| | | Map<String, YwPoint> pointMap = ywPointService.list(new QueryWrapper<YwPoint>()).stream().collect(Collectors.toMap(YwPoint::getSerialNumber, Function.identity())); |
| | | //TODO:插入点位表 |
| | | //TODO:解析区域、补充deptId |
| | | List<SysDictData> areaCodeList = new ArrayList<>(); |
| | | //TODO:解析重点点位 |
| | | //重点点位集合字典(解析SXJCJQY字段) |
| | | SysDictData sysDictData = new SysDictData(); |
| | | sysDictData.setDictType("platform_important_site"); |
| | | List<SysDictData> DictDataList = dictDataService.selectDictDataList(sysDictData); |
| | | List<String> importantSite = DictDataList.stream().map(SysDictData::getDictValue).collect(Collectors.toList()); |
| | | |
| | | for (OneMachineFileResult result : oneMachineFileResults) { |
| | | TMonitor monitor = setMonitor(result); |
| | | TMonitor monitor = getMonitor(result); |
| | | YwPoint point = getPoint(result,pointMap,importantSite); |
| | | monitorList.add(monitor); |
| | | //比对筛选出新的数据 |
| | | if(!CollectionUtils.isEmpty(serialNumberInBase) && !serialNumberInBase.contains(result.getSBBM())){ |
| | | newMonitorList.add(monitor); |
| | | } |
| | | } |
| | | //插入数据库 |
| | | if(!CollectionUtils.isEmpty(monitorList)){ |
| | | monitorService.deleteTMonitorById(null); |
| | | monitorService.saveBatch(monitorList); |
| | | } |
| | | //新的数据放入Redis中等待考核指标任务使用 |
| | | redisTemplate.opsForValue().set(RedisConstant.New_Monitor_Set, JSONArray.toJSONString(newMonitorList)); |
| | | |
| | | |
| | | } |
| | | |
| | | private TMonitor setMonitor(OneMachineFileResult result) { |
| | | private YwPoint getPoint(OneMachineFileResult result, Map<String, YwPoint> pointMap,List<String> importantSite) { |
| | | YwPoint ywPoint = new YwPoint(); |
| | | if(pointMap.containsKey(result.getSBBM())){ |
| | | ywPoint = pointMap.get(result.getSBBM()); |
| | | } |
| | | //比对是否是重点点位 |
| | | if(importantSite.contains(result.getSBBM())){ |
| | | |
| | | } |
| | | |
| | | return ywPoint; |
| | | } |
| | | |
| | | private TMonitor getMonitor(OneMachineFileResult result) { |
| | | TMonitor monitor = new TMonitor(); |
| | | monitor.setSerialNumber(result.getSBBM()); |
| | | monitor.setName(result.getSBMC()); |