using com.hnshituo.core.webapp.vo;
using Common;
using MeterPlugInLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace CarMonitor
{
///
/// 基础数据获取
///
public class BaseDbCls
{
Log lg = Log.GetInstance();
///
/// 将基础数据全部载入缓存中
///
///
public bool setBaseDb()
{
#region 初始化一次缓存类
PbCacheMonitor.monitor = new MeterWorkMonitor();
PbCacheMonitor.Load();
#endregion
#region 读取音频文件名称
List ls = new List();
DirectoryInfo folder = new DirectoryInfo(PbCacheMonitor.path + "\\Sound");
foreach (FileInfo file in folder.GetFiles("*.wav"))
{
ls.Add(file.Name.Replace(".wav", ""));
}
PbCacheMonitor.voiceInfo = ls;
#endregion
#region 所有摄像头配置信息
MeterBaseVideoinfoService mbvs = new MeterBaseVideoinfoService();
RESTfulResult> rm = mbvs.doQueryWf(new MeterBaseVideoinfo { });
if (rm.Succeed && rm.Data != null && rm.Data.Count > 0)
{
PbCacheMonitor.ltVideoInfo = rm.Data;
}
else
{
lg.WriteLog(1, "未找到摄像头配置信息MeterBaseVideoinfo");
return false;
}
#endregion
#region 所有计量点数据
MeterBaseSpotInfoService service = new MeterBaseSpotInfoService();
RESTfulResult> rms = service.doQueryWf(new MeterBaseSpotInfo { validFlag = "1" });
if (rms.Succeed && rms.Data != null && rms.Data.Count > 0)
{
PbCacheMonitor.sportInfos = rms.Data;
}
else
{
lg.WriteLog(1, "MeterBaseSpotInfo");
return false;
}
#endregion
#region 秤体量程配置
MeterBaseScaleRangeService rangeService = new MeterBaseScaleRangeService();
RESTfulResult> rmR = rangeService.doQueryWf(new MeterBaseScaleRange { });
if (rmR.Succeed && rmR.Data != null && rmR.Data.Count > 0)
{
PbCacheMonitor.ltRange = rmR.Data;
}
else
{
lg.WriteLog(1, "未找到秤体量程配置信息MeterBaseScaleRange");
return false;
}
#endregion
return true;
}
public bool getDb()
{
#region 实时获取监控信息
MeterWorkMonitorService monitorService = new MeterWorkMonitorService();
RESTfulResult> rmMonitor = monitorService.doQueryAllWf(new MeterWorkMonitor { validFlag = "1" });
if (rmMonitor.Succeed)
{
PbCacheMonitor.ltWorkMonitor = rmMonitor.Data;
return true;
}
else
{
lg.WriteLog(4, "未找到秤体量程配置信息MeterBaseScaleRange");
return false;
}
#endregion
}
public bool getSpot()
{
#region 获取摄像头数据用于截图
if (PbCacheMonitor.ltVideoInfo != null && PbCacheMonitor.ltVideoInfo.Count > 0)
{
PbCacheMonitor.videoInfo = PbCacheMonitor.ltVideoInfo.Where(s => s.pointid == PbCacheMonitor.sportInfo.baseSpotNo).FirstOrDefault();
List videoChild = new List();
Type postType = PbCacheMonitor.videoInfo.GetType();
PropertyInfo[] postTypeInfos = postType.GetProperties(); //返回为当前 Type 的所有公共属性,PropertyInfo[] PropertyInfo 的所有公共属性的 Type 对象数组
foreach (PropertyInfo p in postTypeInfos)
{
if (p.Name.Contains("position"))
{
string str = (string)p.GetValue(PbCacheMonitor.videoInfo, null);
if (str != "" && str != null)
{
videoChild.Add(
new MeterBaseVideoChild
{
pointid = PbCacheMonitor.videoInfo.pointid,
p_ip = str,
p_rate = "0",//************解码率直接给定了,这里没取配置值*************
vdo_port = PbCacheMonitor.videoInfo.vdoPort,
vdo_pwd = PbCacheMonitor.videoInfo.vdoPwd,
vdo_user = PbCacheMonitor.videoInfo.vdoUser
}
);
}
}
}
PbCacheMonitor.videoChild = videoChild;
}
#endregion
return true;
}
}
}