czt
2026-01-06 9072fdbdd4fdafcf529829df93327b1e1256f794
调整流媒体接口,增加流媒体节点查看功能
已修改10个文件
已添加2个文件
405 ■■■■■ 文件已修改
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyNode.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaNode.view.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyDto.java
@@ -24,6 +24,9 @@
    private String url;
    private Long expiresIn;
    /*--------------获取直播地址使用-------------*/
    /*--------------获取监控列表使用-------------*/
    private List<YdQlyCamera> device;
    /*--------------获取监控节点列表使用-------------*/
    private List<YdQlyNode> node;
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/data/ydqly/YdQlyNode.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.fzzy.igds.camera.data.ydqly;
import lombok.Data;
import java.io.Serializable;
/**
 * @Description
 * @Author CZT
 * @Date 2026/1/4 16:54
 */
@Data
public class YdQlyNode implements Serializable {
    private String nodeId;    //节点编码
    private String nodeName;  //节点名称
    private Integer hasChild; //是否有子节点
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/camera/impl/ApiPlayYdQlyService.java
@@ -5,6 +5,7 @@
import com.fzzy.igds.camera.data.*;
import com.fzzy.igds.camera.data.ydqly.YdQlyCamera;
import com.fzzy.igds.camera.data.ydqly.YdQlyDto;
import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
import com.fzzy.igds.camera.data.ydqly.YdQlyResp;
import com.fzzy.igds.constant.CameraPlayType;
import com.fzzy.igds.constant.Constant;
@@ -41,7 +42,6 @@
     */
    private static final String URL_ACCESS_TOKEN = "https://open.qly.cmviot.cn/v3/open/api/token";
    private static final String URL_PLAY_LIVE = "https://open.qly.cmviot.cn/v3/open/api/websdk/live";
    private static final String URL_CAMERA_LIST = "https://open.qly.cmviot.cn/v3/open/api/node/tree";
    @Resource
@@ -79,6 +79,12 @@
        //接口获取播放地址
        YdQlyResp resp = getPlayUrl(cameraMedia, apiCameraDto.getCameraId());
        if("11503".equals(resp.getResultCode()) || "11504".equals(resp.getResultCode())){
            delAccessToken();
            resp = getPlayUrl(cameraMedia, apiCameraDto.getCameraId());
        }
        if(!"000000".equals(resp.getResultCode())){
            return new ApiCameraResp(ApiCameraResp.CODE_ERROR, resp.getResultMsg());
        }
@@ -101,17 +107,24 @@
        //查询库区流媒体配置,获取库区节点
        CameraMedia cameraMedia = cameraMediaService.getByDeptId(apiCameraDto.getDeptId(), apiCameraDto.getCompanyId());
        if(null == cameraMedia || StringUtils.isEmpty(cameraMedia.getYdStoreId())){
            log.error("获取摄像头信息失败,库区节点未配置!");
            log.error("同步失败,库区节点未配置,请到库区配置->流媒体配置!");
            return null;
        }
        String str = getCameraList(cameraMedia);
        if(null== str){
            log.error("获取摄像头信息失败,库区节点未配置!");
        //接口获取播放地址
        YdQlyResp resp = getCameraList(cameraMedia);
        if("11503".equals(resp.getResultCode()) || "11504".equals(resp.getResultCode())){
            delAccessToken();
            resp = getCameraList(cameraMedia);
        }
        if(!"000000".equals(resp.getResultCode())){
            return null;
        }
        YdQlyDto ydQlyDto = JSONObject.parseObject(str, YdQlyDto.class);
        YdQlyDto ydQlyDto = JSONObject.parseObject(resp.getData(), YdQlyDto.class);
        if(null== ydQlyDto || null == ydQlyDto.getDevice()){
            log.error("获取摄像头信息失败,库区节点未配置!");
@@ -135,6 +148,14 @@
        return listCamera;
    }
    /**
     * æ¸…除token
     */
    private void delAccessToken() {
        //请清除token
        String key = RedisConst.buildKey(ContextUtil.getCompanyId(), Constant.KEY_ACCESS_TOKEN_YD_QLY);
        redisCache.deleteObject(key);
    }
    /**
     * èŽ·å–accessToken
@@ -247,7 +268,7 @@
            String jsonString = JSONObject.toJSONString(herderParams);
            // 4. RSA签名
            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
            byte[] keyBytes = Base64.getDecoder().decode(cameraMedia.getYdRsa());
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
@@ -275,7 +296,7 @@
     * @param cameraMedia
     * @return
     */
    private String getCameraList(CameraMedia cameraMedia) {
    private YdQlyResp getCameraList(CameraMedia cameraMedia) {
        try {
            String timestamp = String.valueOf(System.currentTimeMillis());
@@ -302,7 +323,7 @@
            String jsonString = JSONObject.toJSONString(herderParams);
            // 4. RSA签名
            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
            byte[] keyBytes = Base64.getDecoder().decode(cameraMedia.getYdRsa());
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
@@ -318,43 +339,27 @@
            String response = HttpUtils.doPost(URL_CAMERA_LIST, herderParams, requestBodyStr);
            YdQlyResp ydQlyResp = JSONObject.parseObject(response, YdQlyResp.class);
            if(!"000000".equals(ydQlyResp.getResultCode())){
                return null;
            }
            return ydQlyResp.getData();
            return ydQlyResp;
        } catch (Exception e) {
            return null;
        }
    }
    private static final String TOKEN = "eyJhbGciOiJIUzI1NiJ9.eyJwcm9mZXNzaW9uIjoxLCJhcHBpZCI6ImUwYTFhNDIwZjU1YTRmOWRiYTBkNjM4MmRmNTlkYjY2Iiwib3BlcmF0b3JUeXBlIjoxLCJvcGVyYXRvciI6ImUwYTFhNDIwZjU1YTRmOWRiYTBkNjM4MmRmNTlkYjY2IiwianRpIjoiMjE4Nzk0MzMzMTE4NDM1NzM4NyIsImlhdCI6MTc2NzYxMDM3Mywic3ViIjoiZTBhMWE0MjBmNTVhNGY5ZGJhMGQ2MzgyZGY1OWRiNjYiLCJleHAiOjE3NjgyMTUxNzN9.Tot-yYsNLbY9YH2AYgV_Fggb7PCNrUR0PDi0Ear1s5w";
    private static final String APP_ID = "e0a1a420f55a4f9dba0d6382df59db66";
    private static final String SECRET = "OuLsvFL9nqxeeltu";
    private static final String URL = "https://open.qly.cmviot.cn/v3/open/api/token";
    private static final String URL_PLAY = "https://open.qly.cmviot.cn/v3/open/api/websdk/live";
    private static final String URL_LIST = "https://open.qly.cmviot.cn/v3/open/api/node/tree";
    private static final String PRIVATE_KEY = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAI7iA0WASV8pekjHVcsYV3ycZR2/+XK7O6BZpybAw/cauEzHRKsrDknErFxdNFca1OlVbPljBOfXjIrhS1CpAWez3Ff2+XaAaFE3fFer9LTxQ5GMXJSIAGQ4ntq/7y57ucwdVjL9+4B4WT8Yfea1DLa/fv+I0Gm7haVQj75JVYhBAgMBAAECgYAfvBs16JRjSncaiwuHHFTyHFppDSZ+UQ+hQchaVx4vWAPvKaMa0WlPARu3OAxT/GWlnY+ipFeGlt1kSz3LIH5rERYd5sNPOFmK7Nzih1VK6r/y1XobM4cLqLrP2UW2c3V36A77xz1xpaa9CP5l6gFjYAdZ1vnGS7HyjolWvzjUAQJBAMB6OTwrHcxOUJiLRJSK697LMIziBi1p5cR4NdSoQjQ4/enUqzAalwi6ZODuGSYai5VKhH9xkxFASWMT8waTOxECQQC+CbWK4Igx8Uh5qPpBIiFuA6ReAuFoRDMvKlzPUi8FGFkvF/CDx5IUFvYUd7FFX4l6Wtu5vf+VF3OydmzFr5oxAkB96Xa3nZ0IodKnd7ONWLOkM1e3UcSowLXGKL1OOCPW9dFkvfKerUZQN172pctd2c+mAfFbTXjfuCZJ4isBCh+BAkA8+ZiKaujIPYbnolRJuc3IItsGXx47+kYCCDGnQ9NaaymSdrfxUIOKdqOWhaEXhUPzQlvmCRSMne29gUn9VA7BAkBLvhtfSuANFSDt942GAY0Q25bJBM01yrRjtTEVCnGDxztexksPKaWGnJxk0Zk0xp4PkJCZvVuxFZ1Dw7F9yg6X";
    public static void main(String[] args) {
//        String accessToken = getAccessTokenTest();
//        System.out.println("accessToken: " + accessToken);
//        String playUrl = getPlayUrlTest();
//        System.out.println("playUrl: " + playUrl);
        String cameraList = getCameraListTest();
        System.out.println("cameraList: " + cameraList);
    }
    private static String getCameraListTest() {
    /**
     * èŽ·å–ç›‘æŽ§æ‰€åœ¨èŠ‚ç‚¹ç¼–ç 
     * @param cameraMedia
     * @return
     */
    public List<YdQlyNode> getNodeId(CameraMedia cameraMedia) {
        try {
            String timestamp = String.valueOf(System.currentTimeMillis());
            JSONObject requestBody = new JSONObject();
            requestBody.put("queryType", 0);
            requestBody.put("nodeId", "1346024619493187584");
            if(StringUtils.isNotBlank(cameraMedia.getYdStoreId())){
                requestBody.put("nodeId", cameraMedia.getYdStoreId());
            }
            String requestBodyStr = requestBody.toString();
@@ -362,16 +367,17 @@
            String md5 = DigestUtils.md5Hex(String.valueOf(requestBody));
            // 3. æž„建签名字符串
            Map signParams = new LinkedHashMap();
            signParams.put("appid", APP_ID);
            signParams.put("md5", md5);
            signParams.put("timestamp", timestamp);
            signParams.put("token", TOKEN);
            signParams.put("version", "1.0.0");
            String jsonString = JSONObject.toJSONString(signParams);
            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
            herderParams.put("appid", cameraMedia.getYdAppKey());
            herderParams.put("md5", md5);
            herderParams.put("timestamp", timestamp);
            herderParams.put("token", getAccessToken(cameraMedia));
            herderParams.put("version", "1.0.0");
            String jsonString = JSONObject.toJSONString(herderParams);
            // 4. RSA签名
            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
            byte[] keyBytes = Base64.getDecoder().decode(cameraMedia.getYdRsa());
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
@@ -380,128 +386,44 @@
            signature.update(jsonString.getBytes("UTF-8"));
            String signatureString = Base64.getEncoder().encodeToString(signature.sign());
            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
            herderParams.put("content-type", "application/json");
            herderParams.put("appid", APP_ID);
            herderParams.put("md5", md5);
            herderParams.put("timestamp", timestamp);
            herderParams.put("token", TOKEN);
            herderParams.put("version", "1.0.0");
            herderParams.put("signature", signatureString);
            herderParams.put("content-type", "application/json");
            // 5. å‘送请求
            String response = HttpUtils.doPost(URL_LIST, herderParams, requestBodyStr);
            String response = HttpUtils.doPost(URL_CAMERA_LIST, herderParams, requestBodyStr);
            return response;
            YdQlyResp resp = JSONObject.parseObject(response, YdQlyResp.class);
            if(!"000000".equals(resp.getResultCode())){
                return null;
            }
            YdQlyDto ydQlyDto = JSONObject.parseObject(resp.getData(), YdQlyDto.class);
            if(null == ydQlyDto || null == ydQlyDto.getNode() || ydQlyDto.getNode().isEmpty()){
                return null;
            }
            return ydQlyDto.getNode();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    private static String getPlayUrlTest() {
        try {
    /**
     * èŽ·å–æ‰€æœ‰èŠ‚ç‚¹
     * @param cameraMedia
     */
    public void getAllNodeId(CameraMedia cameraMedia) {
            String timestamp = String.valueOf(System.currentTimeMillis());
            JSONObject requestBody = new JSONObject();
            requestBody.put("deviceId", "gb_26236371771319266195");
            String requestBodyStr = requestBody.toString();
            // 2. è®¡ç®—请求体MD5
            String md5 = DigestUtils.md5Hex(String.valueOf(requestBody));
            // 3. æž„建签名字符串
            Map signParams = new LinkedHashMap();
            signParams.put("appid", APP_ID);
            signParams.put("md5", md5);
            signParams.put("timestamp", timestamp);
            signParams.put("token", TOKEN);
            signParams.put("version", "1.0.0");
            String jsonString = JSONObject.toJSONString(signParams);
            // 4. RSA签名
            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
            Signature signature = Signature.getInstance("SHA1WithRSA");
            signature.initSign(priKey);
            signature.update(jsonString.getBytes("UTF-8"));
            String signatureString = Base64.getEncoder().encodeToString(signature.sign());
            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
            herderParams.put("content-type", "application/json");
            herderParams.put("appid", APP_ID);
            herderParams.put("md5", md5);
            herderParams.put("timestamp", timestamp);
            herderParams.put("token", TOKEN);
            herderParams.put("version", "1.0.0");
            herderParams.put("signature", signatureString);
            // 5. å‘送请求
            String response = HttpUtils.doPost(URL_PLAY, herderParams, requestBodyStr);
            return response;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        List<YdQlyNode> nodeList = this.getNodeId(cameraMedia);
        if(null != nodeList && !nodeList.isEmpty()){
            for (YdQlyNode node : nodeList) {
                if(node.getHasChild() == 1){
                    cameraMedia.setYdStoreId(node.getNodeId());
                    this.getAllNodeId(cameraMedia);
                }else {
                    ContextUtil.nodeList.add(node);
        }
    }
    private static String getAccessTokenTest() {
        try {
            String timestamp = String.valueOf(System.currentTimeMillis());
            String sig =  Hex.encodeHexString(MessageDigest.getInstance("MD5").digest(StringUtils.getBytes(APP_ID+SECRET,"UTF-8")));
            JSONObject requestBody = new JSONObject();
            requestBody.put("operatorType", 1);
            requestBody.put("sig", sig);
            String requestBodyStr = requestBody.toString();
            // 2. è®¡ç®—请求体MD5
            String md5 = DigestUtils.md5Hex(String.valueOf(requestBody));
            // 3. æž„建签名字符串
            Map signParams = new LinkedHashMap();
            signParams.put("appid", APP_ID);
            signParams.put("md5", md5);
            signParams.put("timestamp", timestamp);
            signParams.put("version", "1.0.0");
            String jsonString = JSONObject.toJSONString(signParams);
            // 4. RSA签名
            byte[] keyBytes = Base64.getDecoder().decode(PRIVATE_KEY);
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
            PrivateKey priKey = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
            Signature signature = Signature.getInstance("SHA1WithRSA");
            signature.initSign(priKey);
            signature.update(jsonString.getBytes("UTF-8"));
            String signatureString = Base64.getEncoder().encodeToString(signature.sign());
            LinkedHashMap<String, String> herderParams = new LinkedHashMap<>();
            herderParams.put("content-type", "application/json");
            herderParams.put("appid", APP_ID);
            herderParams.put("md5", md5);
            herderParams.put("timestamp", timestamp);
            herderParams.put("version", "1.0.0");
            herderParams.put("signature", signatureString);
            // 5. å‘送请求
            String response = HttpUtils.doPost(URL, herderParams, requestBodyStr);
            return response;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/CameraMediaService.java
@@ -1,13 +1,17 @@
package com.fzzy.igds.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
import com.fzzy.igds.camera.data.ydqly.YdQlyResp;
import com.fzzy.igds.camera.impl.ApiPlayYdQlyService;
import com.fzzy.igds.domain.CameraMedia;
import com.fzzy.igds.mapper.CameraMediaMapper;
import com.fzzy.igds.utils.ContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -20,9 +24,14 @@
@Service
public class CameraMediaService {
    private static final String APP_ID = "e0a1a420f55a4f9dba0d6382df59db66";
    private static final String SECRET = "OuLsvFL9nqxeeltu";
    private static final String RSA = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAI7iA0WASV8pekjHVcsYV3ycZR2/+XK7O6BZpybAw/cauEzHRKsrDknErFxdNFca1OlVbPljBOfXjIrhS1CpAWez3Ff2+XaAaFE3fFer9LTxQ5GMXJSIAGQ4ntq/7y57ucwdVjL9+4B4WT8Yfea1DLa/fv+I0Gm7haVQj75JVYhBAgMBAAECgYAfvBs16JRjSncaiwuHHFTyHFppDSZ+UQ+hQchaVx4vWAPvKaMa0WlPARu3OAxT/GWlnY+ipFeGlt1kSz3LIH5rERYd5sNPOFmK7Nzih1VK6r/y1XobM4cLqLrP2UW2c3V36A77xz1xpaa9CP5l6gFjYAdZ1vnGS7HyjolWvzjUAQJBAMB6OTwrHcxOUJiLRJSK697LMIziBi1p5cR4NdSoQjQ4/enUqzAalwi6ZODuGSYai5VKhH9xkxFASWMT8waTOxECQQC+CbWK4Igx8Uh5qPpBIiFuA6ReAuFoRDMvKlzPUi8FGFkvF/CDx5IUFvYUd7FFX4l6Wtu5vf+VF3OydmzFr5oxAkB96Xa3nZ0IodKnd7ONWLOkM1e3UcSowLXGKL1OOCPW9dFkvfKerUZQN172pctd2c+mAfFbTXjfuCZJ4isBCh+BAkA8+ZiKaujIPYbnolRJuc3IItsGXx47+kYCCDGnQ9NaaymSdrfxUIOKdqOWhaEXhUPzQlvmCRSMne29gUn9VA7BAkBLvhtfSuANFSDt942GAY0Q25bJBM01yrRjtTEVCnGDxztexksPKaWGnJxk0Zk0xp4PkJCZvVuxFZ1Dw7F9yg6X";
    @Resource
    private CameraMediaMapper mapper;
    @Resource
    private ApiPlayYdQlyService ydQlyService;
    /**
@@ -73,6 +82,16 @@
            data.setCreateBy(ContextUtil.getLoginUserName());
            data.setCreateTime(new Date());
            if(StringUtils.isBlank(data.getYdAppKey())){
                data.setYdAppKey(APP_ID);
            }
            if(StringUtils.isBlank(data.getYdAppSecret())){
                data.setYdAppSecret(SECRET);
            }
            if(StringUtils.isBlank(data.getYdRsa())){
                data.setYdRsa(RSA);
            }
            mapper.insert(data);
        } else {
            mapper.updateById(data);
@@ -88,4 +107,19 @@
        if (StringUtils.isEmpty(data.getId())) return null;
        return mapper.deleteById(data.getId()) > 0 ? null : "删除失败";
    }
    /**
     *
     * @return
     */
    public List<YdQlyNode> listYdQlyNode() {
        CameraMedia cameraMedia = new CameraMedia();
        cameraMedia.setYdAppKey(APP_ID);
        cameraMedia.setYdAppSecret(SECRET);
        cameraMedia.setYdRsa(RSA);
        ContextUtil.nodeList = new ArrayList<>();
        ydQlyService.getAllNodeId(cameraMedia);
        return ContextUtil.nodeList;
    }
}
fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/ContextUtil.java
@@ -1,5 +1,6 @@
package com.fzzy.igds.utils;
import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
import com.ruoyi.common.config.FrameworkConfig;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.ShiroUtils;
@@ -31,6 +32,10 @@
     */
    public static Map<String, String> contextSnCompanyIdMap = new HashMap<>();
    /**
     * æµåª’体节点使用
     */
    public static List<YdQlyNode> nodeList = null;
    /**
     * ç”Ÿæˆé¡ºåºID:年月日时分秒毫秒(17位) + åºåˆ—号(4位) = 21位
fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMedia.view.xml
@@ -170,6 +170,13 @@
    </DataType>
  </Model>
  <View layout="padding:10">
    <ClientEvent name="onReady">
&#xD;
//节点查看&#xD;
showNode = function(){&#xD;
    view.get(&quot;#iFrameNode&quot;).set(&quot;path&quot;, &quot;/com.fzzy.igds.CameraMediaNode.d&quot;);&#xD;
    view.get(&quot;#dialogNode&quot;).show();&#xD;
};&#xD;</ClientEvent>
    <Property name="packages">font-awesome,css-common</Property>
    <Property name="cache">
      <Property name="mode">clientSide</Property>
@@ -226,6 +233,13 @@
          <Property name="exClassName">btn3</Property>
          <Property name="iconClass">fa fa-minus-circle</Property>
          <Property name="width">80</Property>
        </ToolBarButton>
        <ToolBarButton>
          <ClientEvent name="onClick">showNode();</ClientEvent>
          <Property name="caption">查看流媒体节点</Property>
          <Property name="exClassName">btn3</Property>
          <Property name="iconClass">fa fa-plus-square</Property>
          <Property name="width">150</Property>
        </ToolBarButton>
        <Separator/>
      </ToolBar>
@@ -605,6 +619,19 @@
      </Children>
      <Tools/>
    </Dialog>
    <Dialog id="dialogNode">
      <Property name="width">55%</Property>
      <Property name="height">80%</Property>
      <Property name="iconClass">fa fa-tasks</Property>
      <Property name="caption">流媒体节点</Property>
      <Buttons/>
      <Children>
        <IFrame id="iFrameNode">
          <Property name="width">100%</Property>
        </IFrame>
      </Children>
      <Tools/>
    </Dialog>
    <AjaxAction id="ajaxDel">
      <Property name="service">cameraMediaPR#delData</Property>
      <Property name="confirmMessage">确定要删除吗?</Property>
fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaNode.view.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
  <Arguments/>
  <Context/>
  <Model>
    <DataType name="dtNode">
      <Property name="creationType">com.fzzy.igds.camera.data.ydqly.YdQlyNode</Property>
      <PropertyDef name="nodeId">
        <Property></Property>
        <Property name="label">节点编码</Property>
      </PropertyDef>
      <PropertyDef name="nodeName">
        <Property></Property>
        <Property name="label">节点名称</Property>
      </PropertyDef>
    </DataType>
  </Model>
  <View layout="padding:10">
    <Property name="packages">font-awesome,css-common</Property>
    <Property name="cache">
      <Property name="mode">clientSide</Property>
    </Property>
    <DataSet id="dsNode">
      <Property name="parameter"></Property>
      <Property name="dataType">[dtNode]</Property>
      <Property name="dataProvider">cameraMediaPR#listYdQlyNode</Property>
    </DataSet>
    <Container>
      <Property name="exClassName">c-data</Property>
      <Property name="contentOverflow">hidden</Property>
      <DataGrid id="dataGridMain" layoutConstraint="padding:8">
        <ClientEvent name="onDataRowClick">view.get(&quot;#dataGridMain&quot;).set(&quot;selection&quot;,arg.data);</ClientEvent>
        <Property name="dataSet">dsNode</Property>
        <Property name="readOnly">true</Property>
        <Property name="selectionMode">singleRow</Property>
        <RowNumColumn/>
        <DataColumn>
          <Property name="property">nodeId</Property>
          <Property name="name">nodeId</Property>
          <Property name="align">center</Property>
        </DataColumn>
        <DataColumn name="nodeName">
          <Property name="property">nodeName</Property>
          <Property name="align">center</Property>
        </DataColumn>
      </DataGrid>
    </Container>
  </View>
</ViewConfig>
fzzy-igdss-view/src/main/java/com/fzzy/igds/CameraMediaPR.java
@@ -3,6 +3,7 @@
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.fzzy.igds.camera.data.ydqly.YdQlyNode;
import com.fzzy.igds.domain.CameraMedia;
import com.fzzy.igds.service.CameraMediaService;
import com.ruoyi.common.utils.StringUtils;
@@ -63,4 +64,14 @@
        return service.delData(newData);
    }
    /**
     * secCameraMediaPR#listYdQlyNode æŽ¥å£æŸ¥è¯¢æ‰€æœ‰èŠ‚ç‚¹
     *
     */
    @DataProvider
    public List<YdQlyNode> listYdQlyNode() {
        return service.listYdQlyNode();
    }
}
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCamera.view.xml
@@ -580,7 +580,7 @@
    <Container>
      <Property name="className">c-param</Property>
      <AutoForm>
        <Property name="cols">*,*,*,*,90,90</Property>
        <Property name="cols">*,*,*,*,90,90,120</Property>
        <Property name="dataSet">dsParam</Property>
        <Property name="labelAlign">right</Property>
        <Property name="labelWidth">100</Property>
@@ -617,6 +617,15 @@
          <Property name="exClassName">btn-q2</Property>
          <Property name="iconClass">fa fa-refresh</Property>
        </Button>
        <Button>
          <ClientEvent name="onClick">
            var url = &quot;/com.fzzy.igds.ConfByDept.d&quot;;&#xD;
            window.$openTab(&quot;库区配置&quot;, url);
          </ClientEvent>
          <Property name="caption">库区配置</Property>
          <Property name="exClassName">btn-q1</Property>
          <Property name="iconClass">fa fa-plus-square</Property>
        </Button>
      </AutoForm>
    </Container>
    <Container>
fzzy-igdss-web/src/main/java/com/fzzy/security/SecurityController.java
@@ -54,10 +54,16 @@
    @RequestMapping("/video-dept")
    public String videoDept(@RequestParam(value = "type", required = false) String type,
                            @RequestParam(value = "deptId", required = false) String deptId,
                            @RequestParam(value = "lan", required = false) String lan,
                            ModelMap view) {
        if (StringUtils.isBlank(type)) {
            type = "2";
        }
        if (StringUtils.isBlank(lan)) {
            //内网播放
            lan = "1";
        }
        SysUser user = ContextUtil.getLoginUser();
@@ -74,6 +80,7 @@
        SysDept sysDept = commonManager.getDeptById(deptId);
        view.put("dept", sysDept);
        view.put("type", type);
        view.put("lan", lan);
        //判断是否显示库区选择弹窗
        String showDeptList = "Y";
fzzy-igdss-web/src/main/resources/static/security/video-list-dept.js
@@ -58,6 +58,12 @@
        });
    });
    //赋值内外网播放
    if (lan) {
        $("#playLan").val(lan)
        playTag = lan;
    }
    //初始化渲染播放列表
    renderList();
});
fzzy-igdss-web/src/main/resources/templates/security/video-list-dept.html
@@ -469,6 +469,7 @@
<script th:inline="javascript">
    var listCamera = [[${listCamera}]];
    var type = [[${type}]];
    var lan = [[${lan}]];
</script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/ajax/libs/layui/layui.js}"></script>