fuliqi
2024-08-07 f0b9fe73049ff873a6da7127c60fd3e4f5b6f212
ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -3,10 +3,13 @@
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;
@@ -18,6 +21,7 @@
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.*;
@@ -37,40 +41,63 @@
    @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());