fuliqi
2024-08-16 20aa19580857e61bbfec6a21971d3a2b22fb120b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.ycl.task;
 
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.PythonClient;
import com.ycl.feign.UYClient;
import com.ycl.platform.domain.param.UY.*;
import com.ycl.platform.domain.result.UY.*;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.platform.service.IYwThresholdService;
import com.ycl.utils.DateUtils;
import constant.ApiConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * python对接任务
 * 拿去osd标注、标注时间数据
 */
@Slf4j
@Component("pythonTask")
public class PythonTask {
    @Autowired
    private MongoTemplate mongoTemplate;
    @Autowired
    private PythonClient pythonClient;
 
    public void pythonOsdTask(){
        log.info("开始执行pythonOsd数据同步");
        PyOsdParam pyOsdParam = new PyOsdParam();
        pyOsdParam.setDate(DateUtils.getDate());
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
        if(!CollectionUtils.isEmpty(oneMachineFileResults)) {
            List<String> deviceIdList = oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList());
            pyOsdParam.setDeviceNoList(deviceIdList);
            //查询osd标注和时间信息
            JSONObject jsonObject = pythonClient.pythonOsd(pyOsdParam);
            if (jsonObject != null) {
                if (ApiConstants.UYSuccessCode.equals(jsonObject.getInteger("code"))) {
                    List<PyOsdResult> records = jsonObject.getList("data", PyOsdResult.class);
                    if (!CollectionUtils.isEmpty(records)) {
                        //如果今天存在之前的数据先删除
                        Query pyQuery = new Query(Criteria
                                .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
                        DeleteResult result = mongoTemplate.remove(pyQuery, PyOsdResult.class);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
                    }
                } else {
                    log.error("pythonOsd数据为空{}", jsonObject);
                }
            }
            log.info("结束执行pythonOsd数据同步");
        }
    }
}