<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>海康9800视频</title>
<script type="text/javascript" src="/Scripts/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="../Scripts/preview.js"></script>
<%--<script type="text/javascript" src="../Scripts/playback.js"></script>--%>
<%-- <link href="/UILib/zTree/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet" />--%>
<script src="/UILib/zTree/jquery.ztree.core-3.5.min.js" type="text/javascript"></script>
<script src="/UILib/zTree/jquery.ztree.excheck-3.5.min.js" type="text/javascript"></script>
<style type="text/css">
/*html, body {
width: 100%;
height: 2000px;
overflow: auto;
}*/
.ztree {
padding-top: 40px;
}
/*.ico.m-gun, ul.ztree li span.m-gun_ico_docu {
background-position: -195px -3px;
width: 18px;
}*/
ul.ztree li a.disabledNode .m-gun-1_ico_docu {
background-position: -123px -123px;
}
.control-container {
width: 253px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<link href="http://<%=strPlatformAddr %>/vms/baseui/themes/default/css/all.css" rel="stylesheet" />
<link href="http://<%=strPlatformAddr %>/vms/web/assets/default/css/monitor.css" type="text/css" rel="stylesheet" />
<div style="width: 100%;">
<%--min-width:930px;padding-top:5px;--%>
<div runat="server" id="divTree" class="treeview" style="width: 160px; float: left; height: 500px; overflow-y: auto;">
<ul id="treeDemo" class="ztree"></ul>
</div>
<div id="divVD" style="float: right; width: 770px; height: 500px;"></div>
<div style="clear: both;"></div>
</div>
<input type="hidden" id="hd_tgt" runat="server" />
<input type="hidden" id="hd_xmlPre" runat="server" />
<input type="hidden" id="hd_PointJson" runat="server" />
<%--
<input type="hidden" id="hd_playback" runat="server" />
<div style="width:100%;height:25px;" style="display:none;">
<input type="button" value="播放" onclick="play()" style="display:none;"/>
<input type="button" value="回看" onclick="playBack()" style="display:none;"/>
<div class="control-container" style="display:none;">
<a class="toggle-switch tipS" href="#" title="隐藏 操作面板" original-title="隐藏 操作面板"></a>
<div id="controlContent" class="control-content tab-grey ui-tabs ui-widget ui-widget-content ui-corner-all">
<ul class="tabs ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" role="tablist">
<li class="ui-state-default ui-corner-top ui-tabs-active ui-state-active" role="tab" tabindex="0" aria-controls="ptzController" aria-labelledby="ui-id-1" aria-selected="true"><a href="#ptzController" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-1">云镜控制</a></li>
<li class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="videoParameter" aria-labelledby="ui-id-2" aria-selected="false"><a href="#videoParameter" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-2">视频参数</a></li>
</ul>
<div class="tab-content">
<div id="ptzController" class="control-panel ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-1" role="tabpanel" aria-expanded="true" aria-hidden="false" style="display: block;">
<div class="control-mask"></div>
<div id="controller" class="controller">
<div class="speed">
<span id="speedVolume" class="volume ui-slider ui-slider-vertical ui-widget ui-widget-content ui-corner-all"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="height: 50%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="bottom: 50%;"></a></span><span class="ico"></span>
</div>
<div id="rocker" class="rocker">
<div class="diagonal">
<ul>
<li class="nw ptz-operation" data-op="25"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="ne ptz-operation" data-op="26"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="sw ptz-operation" data-op="27"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="se ptz-operation" data-op="28"><a href="#"><span class="ico"></span><i></i></a></li>
</ul>
</div>
<div class="quartet">
<ul>
<li class="n ptz-operation" data-op="21"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="w ptz-operation" data-op="23"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="c"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="e ptz-operation" data-op="24"><a href="#"><span class="ico"></span><i></i></a></li>
<li class="s ptz-operation" data-op="22"><a href="#"><span class="ico"></span><i></i></a></li>
</ul>
</div>
</div>
<div class="scope">
<ul>
<li class="focal-out ptz-operation" data-op="12"><a class="narrowFocal tipS" href="#" title="焦距缩小"><span class="ico"></span><i></i></a></li>
<li class="focal-in ptz-operation" data-op="11"><a class="tipS" href="#" title="焦距放大"><span class="ico"></span><i></i></a></li>
<li class="lens-out ptz-operation" data-op="13"><a class="tipS" href="#" title="焦点前移"><span class="ico"></span><i></i></a></li>
<li class="lens-in ptz-operation" data-op="14"><a class="tipS" href="#" title="焦点后移"><span class="ico"></span><i></i></a></li>
<li class="aperture-out ptz-operation" data-op="16"><a class="tipS" href="#" title="光圈缩小"><span class="ico"></span><i></i></a></li>
<li class="aperture-in ptz-operation" data-op="15"><a class="tipS" href="#" title="光圈放大"><span class="ico"></span><i></i></a></li>
</ul>
</div>
<div class="tool">
<ul>
<li class="act-lockptz ptz-btn-operation-lock" data-op="8"><a class="tipS" href="#" title="锁定"><span class="ico"></span><i></i></a></li>
<li class="act-zoom3d ptz-btn-operation-3d" data-op="9"><a class="tipS" href="#" title="3D放大"><span class="ico"></span><i></i></a></li>
<li class="act-light ptz-btn-operation-light" data-op="2"><a class="tipS" href="#" title="灯光"><span class="ico"></span><i></i></a></li>
<li class="act-brush ptz-btn-operation-brush" data-op="3"><a class="tipS" href="#" title="雨刷"><span class="ico"></span><i></i></a></li>
<li class="act-patrol ptz-btn-operation-auto" data-op="29"><a class="tipS" href="#" title="自动扫描"><span class="ico"></span><i></i></a></li>
</ul>
</div>
</div>
<div class="setting">
<div>
<div class="combobox">
<!-- <input id="call-preset-input" type="text" class="point-number tipS placeholder" placeholder="输入编号或名称"> -->
<input id="call-preset-input" type="text" class="point-number" style="color: gray" value="输入编号或名称">
<div class="btn-group dropup">
<a class="dropdown-toggle" href="#" data-toggle="dropdown"><span class="caret"></span></a>
<ul class="dropdown-menu preset-container-name">
</ul>
</div>
</div>
<a id="btn-call-preset" class="buttonS bDefault tipS" href="#" title="调用"><span class="ico act-apply"></span><i></i></a><a id="btn-open-preset-dialog" class="buttonS bDefault tipS" href="#" data-trigger="controler.setPoint" title="设置"><span>设置</span><i></i></a>
</div>
</div>
</div>
<div id="videoParameter" class="control-panel ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-2" role="tabpanel" aria-expanded="false" aria-hidden="true" style="display: none;">
<div class="control-mask"></div>
<div class="video-param">
<dl>
<dt><span>亮度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="bright" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
<dd>
<div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="bright"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
</dd>
</dl>
<dl>
<dt><span>对比度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="light" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
<dd>
<div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="light"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
</dd>
</dl>
<dl>
<dt><span>色度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="tone" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
<dd>
<div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="tone"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
</dd>
</dl>
<dl>
<dt><span>饱和度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="saturation" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
<dd>
<div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="saturation"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
</dd>
</dl>
<div class="form-actions"><a class="buttonW bDefault" data-trigger="reset" href="#"><span class="ico i-reset"></span><span>默认参数</span></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="divVDBC" style="width:868px;height:600px;display:none;" ></div>
--%>
</form>
</body>
<script type="text/javascript">
var setting = {
data: {
simpleData: {
enable: true
}
},
callback: {
onClick: onClick
}
};
$(document).ready(function () {
var zu = $("#hd_PointJson").val();
var ujson = JSON.parse(zu);
var ztObj = $("#treeDemo");
$.fn.zTree.init(ztObj, setting, ujson);
$(".m-gun-1_ico_docu", ztObj).addClass("ico").parent("a").addClass("disabledNode");
$(".m-gun_ico_docu", ztObj).addClass("ico");
});
function onClick(e, treeId, treeNode) {
if (!treeNode.isParent) {
//if (treeNode.iconSkin == "m-gun")//在线
setPlays(treeNode.id);
}
}
</script>
<script type="text/javascript">
function installPlug() {
if (confirm('您还没有安装浏览该视频的插件!是否进行安装?'))
location.href = "http://<%=strPlatformAddr %>/download/WebCtrl_V4.2.3.exe";
}
var txt;
function tokenCallEvent(reqID, isa) {
var dd = $("#hd_tgt").val();
$.ajax({
type: 'POST',
async: true,
url: "VideoMultiHK9800.aspx/getVmsTokenAction",
contentType: 'application/json',
data: "{'tgt':'" + dd + "'}",
dataType: "json",
success: function (data) {
var txt = previewOcxObj.setToken(reqID, data.d);
}
});
}
function tokenKeep() {
var dd = $("#hd_tgt").val();
$.ajax({
type: 'POST',
async: true,
url: "VideoMultiHK9800.aspx/getVmsTokenAction",
contentType: 'application/json',
data: "{'tgt':'" + dd + "'}",
dataType: "json",
success: function (data) {
//alert(data.d);
}
});
}
//获取url参数
function RequestFrom(key) {
var locString = location.search;
var reg = new RegExp("(\\?|\\&)" + key + "=([^\\&]*)(\\&?)", "i").exec(locString);
if (reg != null) {
return RegExp.$2;
}
else {
return "";
}
}
$(function () {
if (navigator.userAgent.indexOf('MSIE') >= 0 || !!window.ActiveXObject || "ActiveXObject" in window) {
try {
var obj = new ActiveXObject("PLATFORMPLAYBACK.PlatformPlaybackCtrl.1");//PLATFORMPREVIEW.PlatformPreviewCtrl.1
//alert("已经注册");
}
catch (e) {
installPlug();
return;
}
} else {
$("#divVD").html("暂时仅支持IE浏览器");
}
//设置窗口宽度
initWH();
//初始化视频窗口
PreviewOCX({
divId: "divVD"
});
//设置窗口布局 layout_2X2
var vWL = RequestFrom("WL");
vWL = vWL && vWL != "" ? vWL : 2;
setWindowsLayout(vWL);
setInterval("tokenKeep()", 27000);
})
function initWH() {
var $vd = $("#divVD");
var $dt = $("#divTree");
$vd.width($(window).width() - $dt.width() - 17);
var hg = window.document.body.clientHeight - 4;
$vd.height(hg);
$dt.height(hg);
}
function play() {
tXml = $("#hd_xmlPre").val();
//●﹏● ╯﹏╰
previewOcxObj.callback[PREVIEW_EVENT_TOKEN] = tokenCallEvent;
var indexWin = previewOcxObj.getSelectWindow();
txt = previewOcxObj.startPreview(indexWin, tXml);
}
function setPlays(iCode) {
var dd = $("#hd_tgt").val();
$.ajax({
type: 'POST',
async: true,
url: "VideoMultiHK9800.aspx/getPreviewOcxOptions",
contentType: 'application/json',
data: "{'tgt':'" + dd + "','iCode':'" + iCode + "'}",
dataType: "json",
success: function (data) {
if (data != "") {
$("#hd_xmlPre").val(data.d);
play();
}
}
});
}
//function playBack() {
// $("#divVDBC").show();
// PlaybackOCX({
// divId: "divVDBC"
// });
// var bcXml = $("#hd_playback").val();
// callbackOcxObj.setPlayback("2016-06-06T 00:00:00Z", "2016-06-07T 00:00:00Z", bcXml);
//}
//云台控制
//function test() {
// var cmdId = '43010000001310000020';
// var pXml = '<?xml version="1.0" encoding="utf-8"?>';
// pXml += '<PtzControl>';
// pXml += '<Action>0</Action>';// <!—开始或停止(开始为0/停止为1) -->
// pXml += '<Priority>50</Priority>';//<!—优先级(如果没有该项,则默认为50)-->
// pXml += '<Speed>5</Speed>';// <!-- 速度(如果没有该项,则默认为5)-->
// pXml += '<Preset Index =1 DwellTime=50 Speed=5 />';//<!—预置点编号,停留时间和运行速度-->
// pXml += '</PtzControl>';
// txt = previewOcxObj.ptzControl(cmdId, pXml);
//}
//var tXml = '<?xml version="1.0" encoding="utf-8"?>'
//tXml += '<Preview>'
//tXml += '<CamIndexCode>43010000001310000020</CamIndexCode> '// <!-- 监控点编号-->
//tXml += '<DevIndexCode>43010000001130000009</DevIndexCode>'// <!-- 设备编号-->
//tXml += '<UserName>admin</UserName> '// <!—设备登录用户密码-->
//tXml += '<PassWord>AIkEBdZsuRw=</PassWord>'//密码 56636d85ccabdf64e839a2af0ae4e393e98d9b26d65bb4a12f02fa5bc9f0cc04
//tXml += '<UserLevel>50</UserLevel>'// <!-- 用户级别-->
//tXml += '<CamName>海康摄像头(录像机)</CamName>'// <!-- 监控点名称-->
//tXml += '<DevType>0</DevType>'// <!-- 厂商类型海康大华等-->
//tXml += '<ChannelNo>35</ChannelNo>'// <!-- 监控点序号-->
//tXml += '<LinkType>1</LinkType>'// <!—1 tcp 2 udp-->
//tXml += '<DecodeTag></DecodeTag > '//<!—级联的解码类型-->
//tXml += '<ProSeries>1</ProSeries >'// <!—产品系列-->
//tXml += '<StreamType>0</StreamType>'// <!—0 主码流 1 子码流-->
//tXml += '<NetZone cnid="1" pnid="1"/>'// <!-- 网域ID 客户端网域ID,设备网域ID -->
//tXml += '<CascCode></CascCode >'//<!—级联标识 ,非空为级联监控点-->
//tXml += '<StreamSvr>'
//tXml += '<Svr type="3" ip="113.240.239.245" port="7302" />'// <!--type:服务类型定义与平台统一 vag(3),vtdu(41),vtm(4) ip服务的IP,port服务的port rtspPort="7302"-->
//tXml += '<Svr type="4" ip="113.240.239.245" port="557" />'
//tXml += '</StreamSvr>'
//tXml += '<IntellInfo>'
//tXml += '<IndexCode></IndexCode>'// <!-- 智能通道编号-->
//tXml += '<ChannelNo></ChannelNo>'// <!-- 智能通道号 -->
//tXml += '<Domaind></Domaind>'// <!-- 智能设备网域ID -->
//tXml += '<UserName></UserName>'// <!-- 智能设备用户密码-->
//tXml += '<PassWord></PassWord>'
//tXml += '</IntellInfo>'
//tXml += '<FishEyeInfo>'
//tXml += '<InstallType></InstallType>'// <!-- 安装方式-->'
//tXml += '<VideoDevType></VideoDevType>'// <!-- 机型标清网络半球-->
//tXml += '</FishEyeInfo>'
//tXml += '</Preview>'
//tXml = '<?xml version="1.0" encoding="utf-8"?>'
//tXml += '<Preview>'
//tXml += '<StreamSvr>'
//tXml += '<Svr type="3" ip="10.0.3.17" port="7302" rtspPort="7302" />'
//tXml += '<Svr type="4" ip="10.0.3.17" port="557" />'
//tXml += '</StreamSvr>'
//tXml += '<CamIndexCode>43010000001310000020</CamIndexCode>'
//tXml += '<DevIndexCode>43010000001130000009</DevIndexCode>'
//tXml += '<LinkType>1</LinkType>'
//tXml += '<StreamType>0</StreamType>'
//tXml += '<CamName>海康摄像头(录像机)</CamName>'
//tXml += '<UserName>admin</UserName>'
//tXml += '<PassWord>AIkEBdZsuRw=</PassWord>'
//tXml += '<UserLevel>50</UserLevel>'
//tXml += '<DevType>0</DevType>'
//tXml += '<Manufacturer>0</Manufacturer>'
//tXml += '<ProSeries>1</ProSeries>'
//tXml += '<ChannelNo>35</ChannelNo>'
//tXml += '<SubStream>MAIN</SubStream>'
//tXml += '<NetZone cnid="2" pnid="1" />'
//tXml += '<TreatyType>SDK</TreatyType>'
//tXml += '</Preview>'
////全局设置
//var goXml = '<?xml version="1.0" encoding="utf-8"?><global><snap picture="jpeg" save="d:/snap"/><clip packSize="256" save="d:/cut"/><performance decode="5"/></global>'
//txt = previewOcxObj.setGlobalParam(goXml);
////权限设置
//var RoleXml = '<?xml version="1.0" encoding="utf-8"?>'
//RoleXml += '<Privileges>'
//RoleXml += '< Privilege type="0" />' // <!--type是按钮类型 只填入需要显示的按钮,顺序按照XML解析顺序 -->
//RoleXml += '< Privilege type="1" />'
//RoleXml += '< Privilege type="2" />'
//RoleXml += '< Privilege type="3" />'
//RoleXml += '< Privilege type="4" />'
//RoleXml += '< Privilege type="5" />'
//RoleXml += '< Privilege type="6" />'
//RoleXml += '< Privilege type="7" />'
//RoleXml += '< Privilege type="8" />'
//RoleXml += '< Privilege type="9" />'
//RoleXml += '< Privilege type="10" />'
//RoleXml += '< Privilege type="11" />'
//RoleXml += '< Privilege type="12" />'
//RoleXml += '< Privilege type="13" />'
//RoleXml += '< Privilege type="22" />'
//RoleXml += '</ Privileges >'
//txt = previewOcxObj.setOperAuth(RoleXml);
</script>
</html>
using LHSoft.LHP.Common;
using LHSoft.LHP.DAL.BaseData;
using LHSoft.LHP.MainWeb.HK9800Service;
using LHSoft.LHP.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace LHSoft.LHP.MainWeb.Video.Pages
{
public partial class VideoMultiHK9800 : Page //BasePage //
{
/// <summary>
/// 组织机构类型代码
/// </summary>
const int orgCode = 1000;
/// <summary>
/// 监控点类型代码
/// </summary>
const int monitorPoints = 10000;
private string StrTgt { get; set; }
/// <summary>
/// 服务地址
/// </summary>
protected static string strIp { get; set; }//"10.0.3.17" 113.240.239.245
/// <summary>
/// 端口
/// </summary>
public static int? AccessPort { get; set; }
/// <summary>
/// 帐号
/// </summary>
protected static string strAccounts { get; set; }//admin
/// <summary>
/// 密码
/// </summary>
protected static string strPwd { get; set; }//"Lhsoft9114"
/// <summary>
/// 视频平台地址
/// </summary>
protected static string strPlatformAddr { get; set; }
/// <summary>
/// 接口对象
/// </summary>
private static VmsSdkWebServicePortTypeClient vmsSdkWebService;
protected static VmsSdkWebServicePortTypeClient VmsSdkWebService
{
get
{
if (vmsSdkWebService == null)
{
vmsSdkWebService = new VmsSdkWebServicePortTypeClient();
}
return vmsSdkWebService;
}
set
{
vmsSdkWebService = value;
}
}
/// <summary>
/// 获取Token
/// </summary>
private string strToken
{
get
{
string xmltoken = VmsSdkWebService.applyToken(StrTgt);
{
return !string.IsNullOrEmpty(xmltoken) ? ServiceResult.Token(xmltoken) : "";
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!InitLoginVideo())
{
Response.Write("未获取到视频服务信息!");
Response.End();
}
StrTgt = Login();
if (string.IsNullOrEmpty(StrTgt))
{
Response.Write("登录失败!");
Response.End();
}
hd_tgt.Value = StrTgt;
bindTree();
//获取监控点编号
//string cameraIndexCode = new VmsSdkWebServicePortTypeClient().getResourceByOrgCode(strToken, 0, "1000", ""); //getResourceByCodes getResourceByPage
//回看 0 中心存储录像,57 存放于本地
//xmltoken = new VmsSdkWebServicePortTypeClient().applyToken(sr.Rows[0]["tgt"]);
//strToken = ServiceResult.Token(xmltoken);
//string strSaveType = "0";
//hd_playback.Value = new VmsSdkWebServicePortTypeClient().getPlaybackOcxOptions(strToken, cameraIndexCode, strIp, "2016-06-06T 00:00:00Z", "2016-06-07T 00:00:00Z", strSaveType);
//}
}
/// <summary>
/// 绑定树 传入MN号则取单站点视频,否则取所有站点视频
/// </summary>
private void bindTree()
{
if (!string.IsNullOrEmpty(strToken))
{
List<udtTreeTemp> pList = new List<udtTreeTemp>();
//资源
ServiceResult SourceSr = null;
int count = 0;
string strMN = "";
if (Request["MN"] == null)
{
strMN = GetMN;
}
else
{
strMN = Request["MN"].ToString();
}
if (!string.IsNullOrEmpty(strMN))
{
#region 加载全部站点
if (strMN == "ALL")
{
string strResource = GetResourceByPage(orgCode, ref SourceSr);
count = SourceSr.Rows.Count;
for (int i = 0; i < count; i++)//构建监控点资源树的组织资源
{
udtTreeTemp d = new udtTreeTemp();
d.id = SourceSr.Rows[i]["i_id"];
d.name = SourceSr.Rows[i]["c_org_name"];
d.pId = SourceSr.Rows[i]["i_parent_id"] == "null" || SourceSr.Rows[i]["i_parent_id"] == "c_0" ? "" : SourceSr.Rows[i]["i_parent_id"];
d.iCode = SourceSr.Rows[i]["c_index_code"];
d.open = true;
d.iconSkin = getIcoSkin(SourceSr.Rows[i]["c_path"]);
pList.Add(d);
}
//获取叶子结点
List<udtTreeTemp> pListChild = new List<udtTreeTemp>();
foreach (var item in pList)
{
if (!pList.Exists(t => t.pId == item.id))
{
/*因服务器端根据城市读取4个以上视频点位会报错问题,所以使用WebService读取*/
HKServer9800.VmsSdkWebService web = new HKServer9800.VmsSdkWebService();
string cameraInfo = web.getResourceByOrgCode(strToken, monitorPoints, true, item.iCode, "");
//string cameraInfo = VmsSdkWebService.getResourceByOrgCode(strToken, monitorPoints, item.iCode, "");
SourceSr = ServiceResult.Parse(cameraInfo);
count = SourceSr.Rows.Count;
for (int i = 0; i < count; i++)
{
udtTreeTemp d = new udtTreeTemp();
d.id = SourceSr.Rows[i]["c_index_code"];
d.name = SourceSr.Rows[i]["c_name"];
d.pId = item.id;
d.open = true;
d.iconSkin = SourceSr.Rows[i]["i_is_online"] == "1" ? "m-gun" : "m-gun-1";
pListChild.Add(d);
}
}
}
pList.AddRange(pListChild);
divTree.Style.Add(HtmlTextWriterStyle.Width, "270px");
}
#endregion
#region 加载单站点
else
{
List<T_MNVideoInfo> listVideoMNInfo = new DAL.BaseData.T_MNVideoDAL().GetByFilter(string.Format("PlatformID='hik9800' AND MN='{0}'", strMN));
if (listVideoMNInfo != null && listVideoMNInfo.Count > 0)
{
string strMNName = "";
if (Request["mnname"] != null)
{
strMNName = Server.UrlDecode(Request["mnname"].ToString());
}
else
{
strMNName = GetMN_Name;
}
udtTreeTemp d = new udtTreeTemp();
d.id = strMN;
d.name = strMNName;
d.pId = "";
d.iCode = "";
d.open = true;
d.iconSkin = getIcoSkin("3");
pList.Add(d);
var listDevIds = listVideoMNInfo.Select(t => t.DevId).ToList();
/*因服务器端读取4个以上视频点位会报错问题,所以分页,按次3条读取*/
var PageIndex = 0;
var PageTotal = Math.Ceiling((double)listDevIds.Count / 3);
string cameraInfo = "";
for (; PageIndex < PageTotal; PageIndex++)
{
string[] strDevIds = listDevIds.Skip(3 * PageIndex).Take(3).ToArray();
cameraInfo = VmsSdkWebService.getResourceByCodes(strToken, monitorPoints, strDevIds);// new string[] { item.DevId }
SourceSr = ServiceResult.Parse(cameraInfo);
count = SourceSr.Rows.Count;
for (int i = 0; i < count; i++)
{
udtTreeTemp dd = new udtTreeTemp();
dd.id = SourceSr.Rows[i]["c_index_code"];
//先取base数据库中设置名称
var tempVInfo = listVideoMNInfo.Find(f => f.DevId == dd.id);
dd.name = tempVInfo != null && !string.IsNullOrEmpty(tempVInfo.VDName) ? tempVInfo.VDName : SourceSr.Rows[i]["c_name"];
dd.pId = strMN;
dd.open = true;
dd.iconSkin = SourceSr.Rows[i]["i_is_online"] == "1" ? "m-gun" : "m-gun-1";
pList.Add(dd);
}
}
}
//divTree.Style.Add(HtmlTextWriterStyle.Width, "200px");
}
#endregion
hd_PointJson.Value = JsonHelper.GetJson<List<udtTreeTemp>>(pList);
}
}
}
/// <summary>
/// 初始化视频登录信息
/// </summary>
/// <returns></returns>
private static bool InitLoginVideo()
{
List<T_VideoPlatformInfo> vPlatform = new T_VideoPlatformDAL().GetByID("hik9800");
if (vPlatform == null || vPlatform.Count < 1)
{
return false;
}
strIp = vPlatform[0].AccessIP; //"113.240.239.245"
strAccounts = vPlatform[0].CagUser;
strPwd = vPlatform[0].CagPass;
strPlatformAddr = strIp;
if (vPlatform[0].AccessPort.HasValue)
{
AccessPort = vPlatform[0].AccessPort.Value;
strPlatformAddr += ":" + vPlatform[0].AccessPort.Value;
}
return true;
}
/// <summary>
/// 登录服务获取唯一标识
/// </summary>
/// <returns></returns>
private string Login()
{
string xml = VmsSdkWebService.sdkLogin(strAccounts, SHA256Encrypt(strPwd), strIp, "", "");
ServiceResult sr = ServiceResult.Parse(xml);
if (sr.ResultCode != 0 || sr.Rows[0]["tgt"].Length == 0)
{
return "";
}
return sr.Rows[0]["tgt"];
}
/// <summary>
/// 获取Token
/// </summary>
/// <param name="tgt"></param>
/// <returns></returns>
private static string getToken(string tgt)
{
string xmltoken = VmsSdkWebService.applyToken(tgt);
return !string.IsNullOrEmpty(xmltoken) ? ServiceResult.Token(xmltoken) : "";
}
/// <summary>
/// 验证Token
/// </summary>
/// <param name="tgt"></param>
/// <returns></returns>
[System.Web.Services.WebMethod]
public static string getVmsTokenAction(string tgt)
{
return getToken(tgt);
}
/// <summary>
/// 获取预览xml
/// </summary>
/// <param name="tgt"></param>
/// <param name="iCode"></param>
/// <returns></returns>
[System.Web.Services.WebMethod]
public static string getPreviewOcxOptions(string tgt, string iCode)
{
//获取视频预览xml
string strToken = getToken(tgt);
if (!string.IsNullOrEmpty(strToken))
return VmsSdkWebService.getPreviewOcxOptions(getToken(tgt), iCode, strIp);
else
return "";
}
/// <summary>
/// 密码加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string SHA256Encrypt(string str)
{
byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
System.Security.Cryptography.SHA256 Sha256 = new System.Security.Cryptography.SHA256Managed();
byte[] by = Sha256.ComputeHash(SHA256Data);
return BitConverter.ToString(by).Replace("-", "").ToLower();
}
const int _StartPage = 1;
const int _PageSize = 10;
/// <summary>
/// 分页获取组织资源,并将组织资源信息保存在sr中
/// </summary>
/// <param name="token"></param>
/// <param name="command"></param>
/// <param name="sr"></param>
/// <returns></returns>
public string GetResourceByPage(int command, ref ServiceResult sr)//string token,
{
int startpage = _StartPage;
string result = VmsSdkWebService.getResourceByPage(strToken, command, startpage, _PageSize, "", "", 1);
StringBuilder sb = new StringBuilder();
sb.Append(string.Format("第{0}页", startpage));
sb.Append("\r\n");
sb.Append(result);
sb.Append("\r\n");
sr = ServiceResult.Parse(result);
while (sr.ResultCode == 0 && sr.Total > sr.Rows.Count)
{
result = VmsSdkWebService.getResourceByPage(strToken, command, ++startpage, _PageSize, "", "", 1);
if (string.IsNullOrEmpty(result))
{
break;
}
ServiceResult tmp = ServiceResult.Parse(result);
if (tmp.Rows.Count < 1)
{
break;
}
sr.Rows.AddRange(tmp.Rows);
sb.Append(string.Format("第{0}页", startpage));
sb.Append("\r\n");
sb.Append(result);
sb.Append("\r\n");
}
return sb.ToString();
}
/// <summary>
/// 获取图标
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
private string getIcoSkin(string str)
{
int ik = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length;
switch (ik)
{
case 1: str = "province"; break;
case 2: str = "city"; break;
case 3: str = "town"; break;
default: str = "town"; break;
}
return str;
}
/// <summary>
/// 获取当前MN号
/// </summary>
public string GetMN
{
get
{
return Request.Cookies["checkedNode"] == null ? "" : Request.Cookies["checkedNode"].Value;
}
}
/// <summary>
/// 获取站点名称
/// </summary>
public string GetMN_Name
{
get
{
return Request.Cookies["checkedNodeName"] == null ? "" : Server.UrlDecode(Request.Cookies["checkedNodeName"].Value);
}
}
}
//public class udtTreeTemp
//{
// public string id { get; set; }
// public string pId { get; set; }
// public string name { get; set; }
// public bool open { get; set; }
// public string iconSkin { get; set; }
// public string iCode { get; set; }
//}
}