SceneUtils.java 1.66 KB
package com.viontech.fanxing.task.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.viontech.fanxing.task.model.Scene;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * .
 *
 * @author 谢明辉
 * @date 2021/10/25
 */

public enum SceneUtils {
    /** 实例 */
    INSTANCE;

    /**
     * 合并 source 的 config 和 roi 到 target
     */
    public void mergeScene(JSONObject source, JSONObject target) {
        if (source.containsKey("rois")) {
            JSONArray rois = source.getJSONArray("rois");
            target.put("rois", rois);
        }
        if (source.containsKey("config")) {
            JSONObject config = source.getJSONObject("config");
            target.put("config", config);
        }
        if (source.containsKey("calibration")) {
            JSONObject calibration = source.getJSONObject("calibration");
            target.put("calibration", calibration);
        }
    }

    /**
     * 对scene的信息进行校验
     */
    public boolean checkScenes(String sceneStr) {
        List<Scene> scenes = JSON.parseArray(sceneStr, Scene.class);
        Set<String> unidSet = new HashSet<>();
        Set<String> positionSet = new HashSet<>();
        // scene_unid 和 position_num 不能重复
        for (Scene item : scenes) {
            if (unidSet.contains(item.getScene_unid()) || positionSet.contains(item.getPosition_num())) {
                return false;
            } else {
                unidSet.add(item.getScene_unid());
                positionSet.add(item.getPosition_num());
            }
        }

        return true;
    }
}