软测单独项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

228 lines
8.3 KiB

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
namespace HardWareInteface.Common
{
public class SHZQueueTask
{
public class dataInfo
{
public string data { get; set; }
public string docPath { get; set; }
}
const string PICPATH = "shzxfzd";
const string LOGPATH = "shzxfzd";
private static FangYar.BLL.TBL_PERSONACCESS bll = new FangYar.BLL.TBL_PERSONACCESS();
public static ConcurrentQueue<dataInfo> infoQueue = new ConcurrentQueue<dataInfo>();
private static CancellationTokenSource m_DealToken = new CancellationTokenSource();
private static Task m_DealTask = Task.Factory.StartNew(DealInfoList, m_DealToken.Token);
private static int i = 0;
public static void infoQueueFun(string data, string PICPATH)
{
try
{
infoQueue.Enqueue(new dataInfo { data = data, docPath = PICPATH }); //添加
}
catch (Exception e)
{
WriteLog(e.Message, LOGPATH);
}
WriteLog("队列长度:" + infoQueue.Count.ToString(), LOGPATH);
}
private static void DealInfoList()
{
while (!m_DealToken.IsCancellationRequested)
{
dataInfo dataInfo = null;
if (infoQueue.TryDequeue(out dataInfo))
{
try
{
DealInfo(dataInfo);
}
catch (Exception ex)
{
WriteLog(ex.Source + ex.StackTrace + ex.Message + "DealInfoList_Error", dataInfo.docPath);
}
}
else
{
Thread.Sleep(100);
}
}
}
private static void DealInfo(dataInfo dataInfo)
{
bool flag = false;
try
{
WriteLog("JSON字符串转换前输出:" + dataInfo.data, dataInfo.docPath);
JObject jsonStr = JsonConvert.DeserializeObject<JObject>(dataInfo.data);
flag = true;
}
catch (Exception e)
{
flag = false;
}
if (flag)
{
FangYar.Model.SB_DATA rz_data = JsonConvert.DeserializeObject<FangYar.Model.SB_DATA>(dataInfo.data);
if (rz_data.personType == "0")
{
WriteLog("false:EmployeeTypeStr为0,验证无效!", dataInfo.docPath);
}
else
{
string avatar = rz_data.path.Replace("\u003d", "=");
byte[] avatar_byte = Convert.FromBase64String(avatar);
string ImagePath = GetFilePath(avatar_byte, dataInfo.docPath);
rz_data.path = ImagePath;
string isadd = bll.HikASCData_Add(rz_data);
WriteLog("结果:" + isadd + "_" + rz_data.name + "_" + rz_data.time, dataInfo.docPath);
}
}
else
{
WriteLog("\r\n 数据有误: 字符串不是json格式", dataInfo.docPath);
}
}
//private static void DealInfo(string data)
//{
// bool flag = false;
// try
// {
// WriteLog("JSON字符串转换前输出:" + data);
// JObject jsonStr = JsonConvert.DeserializeObject<JObject>(data);
// flag = true;
// }
// catch (Exception e)
// {
// flag = false;
// }
// if (flag)
// {
// FangYar.Model.SB_DATA rz_data = JsonConvert.DeserializeObject<FangYar.Model.SB_DATA>(data);
// if (rz_data.personType == "0")
// {
// WriteLog("false:EmployeeTypeStr为0,验证无效!");
// }
// else
// {
// string avatar = rz_data.path.Replace("\u003d", "=");
// byte[] avatar_byte = Convert.FromBase64String(avatar);
// string ImagePath = GetFilePath(avatar_byte);
// rz_data.path = ImagePath;
// string isadd = bll.HikASCData_Add(rz_data);
// WriteLog("结果:" +isadd+"_"+ rz_data.name+"_"+ rz_data.time);
// }
// }
// else
// {
// WriteLog("\r\n 数据有误: 字符串不是json格式");
// }
//}
/// <summary>
/// base转图片保存到服务器
/// </summary>
/// <param name="msg"></param>
private static string GetFilePath(byte[] bytes, string picPath)
{
string fileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString();//年月
string ImageFilePath = "/Attachment" + "/Person/hik/" + picPath + "/" + DateTime.Now.Year.ToString() + "/" + DateTime.Now.Month.ToString();
//图片保存地址
string imgSavePath = System.Configuration.ConfigurationManager.AppSettings["imgSavePath"] + "";
if (HttpContext.Current != null) //web应用程序 单线程
{
if (System.IO.Directory.Exists(HttpContext.Current.Server.MapPath(ImageFilePath)) == false)//如果不存在就创建文件夹
{
System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath(ImageFilePath));
}
}
else //非web程序引用 多线程
{
//ImageFilePath = ImageFilePath.Replace("/", "\\");
string filePath = imgSavePath + ImageFilePath;
if (System.IO.Directory.Exists(filePath) == false)//如果不存在就创建文件夹
{
System.IO.Directory.CreateDirectory(filePath);
}
}
string ImagePath;
string str = System.DateTime.Now.ToString("yyyyHHddHHmmssfff") + Guid.NewGuid().ToString();
ImagePath = imgSavePath + ImageFilePath + "/" + str;//定义图片名称
File.WriteAllBytes(ImagePath + ".png", bytes); //保存图片到服务器,然后获取路径
return ImageFilePath + "/" + str + ".png";//获取保存后的路径
}
static ReaderWriterLockSlim LogWriteLock = new ReaderWriterLockSlim();
private static void WriteLog(string msg, string docPath)
{
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = msg, msgType = FangYar.Common.EnumLogMsgTypeEnum.Error, path = "HIKperson\\" + docPath });
//try
//{
// LogWriteLock.EnterWriteLock();
// string path = AppDomain.CurrentDomain.BaseDirectory + "log\\HIKperson\\"+ docPath + "\\";
// string filename = DateTime.Now.ToString("yyyyMMdd") + ".txt";
// if (Directory.Exists(path) == false)//如果不存在就创建文件夹
// {
// Directory.CreateDirectory(path);
// }
// FileInfo file = new FileInfo(path + filename);
// if (!file.Exists)
// {
// try
// {
// FileStream fs;
// fs = File.Create(path + filename);
// fs.Close();
// }
// catch
// {
// }
// }
// using (FileStream fs = new FileStream(path + filename, FileMode.Append, FileAccess.Write))
// {
// using (StreamWriter sw = new StreamWriter(fs))
// {
// sw.WriteLine("时间:" + DateTime.Now.ToString() + " 信息:" + msg);
// }
// }
//}
//catch (Exception e)
//{
//}
//finally
//{
// LogWriteLock.ExitWriteLock();
//}
}
}
}