fuliqi
2024-08-16 2a12d6d43b6f7abc0ef594ee9b992f34ee00b7a1
python接口
4个文件已修改
3个文件已添加
111 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/PyOsdParam.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/feign/PythonClient.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/PythonTask.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/application-dev.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/application-prod.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/PyOsdParam.java
New file
@@ -0,0 +1,15 @@
package com.ycl.platform.domain.param.UY;
import lombok.Data;
import java.util.List;
@Data
public class PyOsdParam {
    /**
     * 国标码
     */
    private List<String> deviceNoList;
    private String Date;
}
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
@@ -180,7 +180,7 @@
        List<YwPoint> commandImages = pointMapper.selectByTag(null, null, Boolean.TRUE);
        return CollectionUtils.isEmpty(commandImages) ? new ArrayList<>() : commandImages.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList());
    }
    //返回重点指挥图像集合
    //返回monitor
    public List<String> getMonitorFromMongo() {
        // 获取Calendar实例,默认使用当前时区和语言环境
        Calendar calendar = Calendar.getInstance();
ycl-server/src/main/java/com/ycl/factory/IndexCalculationFactory.java
@@ -40,7 +40,7 @@
        calculators.put(CalculationStrategyConstants.Face_DirectConsistent, new FaceConsistentCalculation());
        //一机一档注册率、档案考核比
        calculators.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,new MonitorRegistrationCalculation())
        calculators.put(CalculationStrategyConstants.Video_MonitorRegis_ArchiveRate,new MonitorRegistrationCalculation());
        //一机一档合格率
        calculators.put(CalculationStrategyConstants.Video_MonitorQualify, new MonitorQualifyCalculation());
        //视频点位在线率
ycl-server/src/main/java/com/ycl/feign/PythonClient.java
New file
@@ -0,0 +1,21 @@
package com.ycl.feign;
import com.alibaba.fastjson2.JSONObject;
import com.ycl.platform.domain.param.UY.PyOsdParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@Component
@FeignClient(name = "PythonClient", url = "${request.pythonDomain}")
public interface PythonClient {
    /**
     * OSD标注
     *
     * @return 查询摄像机OSD标注
     */
    @PostMapping("/")
    JSONObject pythonOsd(@RequestBody PyOsdParam param);
}
ycl-server/src/main/java/com/ycl/task/PythonTask.java
New file
@@ -0,0 +1,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数据同步");
        }
    }
}
ycl-server/src/main/resources/application-dev.yml
@@ -130,6 +130,7 @@
  retry: 4 # 最大重试次数
  youYunDomain: http://51.92.65.56 # 优云地址
  haiKangDomain: 51.92.65.48 # 海康地址
  pythonDomain: 11 # python脚本地址
youYun:
  tenantId: e10adc3949ba59abbe56e057f20f88dd
ycl-server/src/main/resources/application-prod.yml
@@ -130,6 +130,7 @@
  retry: 4 # 最大重试次数
  youYunDomain: http://51.92.65.56 # 优云地址
  haiKangDomain: 51.92.65.48 # 海康地址
  pythonDomain: 11 # python脚本地址
youYun:
  tenantId: e10adc3949ba59abbe56e057f20f88dd