123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace LYFZ.CloudServerData.DAL
- {
- public class NetworkTrafficRecord
- {
- public NetworkTrafficRecord()
- {
- }
- /// <summary>
- /// 流量数据传输类型
- /// </summary>
- public enum FlowDataType
- {
- /// <summary>
- /// 任何类型
- /// </summary>
- Any,
- /// <summary>
- /// 云服务器管理流量
- /// </summary>
- CloudManagement,
- /// <summary>
- /// 云服务器登录流量
- /// </summary>
- CloudLogIn,
- /// <summary>
- /// 普通消息传输
- /// </summary>
- Message,
- /// <summary>
- /// SQL数据传输
- /// </summary>
- SQLData,
- /// <summary>
- /// 文件传输
- /// </summary>
- File,
- /// <summary>
- /// WEBAPP接口数据传输
- /// </summary>
- WEBAPP,
- }
- /// <summary>
- /// 插入流量统计记录
- /// </summary>
- /// <param name="dbConnectionString">数据库连接串对象</param>
- /// <param name="_EnterpriseID">企业ID</param>
- /// <param name="_FlowType">流量类型 0 为输出流量(客户端下载) 1 为输入流量(客户端上传)</param>
- /// <param name="_DataType">数据类型 </param>
- /// <param name="_DataLength"></param>
- /// <param name="multiple">流量倍数</param>
- /// <returns></returns>
- public static bool AddNetworkTrafficRecord(string dbConnectionString, string _EnterpriseID, int _FlowType, FlowDataType _DataType, long _DataLength, int multiple)
- {
- try
- {
- if (multiple <= 0)
- {
- multiple = 1;
- }
- double myDataLength = _DataLength / 1024.00 / 1024.00;
- double UserFlowDataLength=myDataLength*multiple;
- string sql = "INSERT INTO [dbo].[tb_NetworkTrafficRecord]([ID],[EnterpriseID],[FlowType],[DataType],[FlowDataLength],[DateTime],[UserFlowDataLength])"
- + "VALUES(" + LYFZ.WinAPI.CustomPublicMethod.GenerateId() + ",'" + _EnterpriseID + "'," + _FlowType + ",'" + _DataType.ToString() + "'," + myDataLength + ",getdate()," + UserFlowDataLength + ")";
- LYFZ.Helper.SQLHelper.ExecuteSql(sql, dbConnectionString);
- return true;
- }
- catch
- {
- return false;
- }
- }
- /// <summary>
- /// 插入流量统计记录
- /// </summary>
- /// <param name="dbConn">数据库连接串对象</param>
- /// <param name="_EnterpriseID">企业ID</param>
- /// <param name="_FlowType">流量类型 0 为输出流量(客户端下载) 1 为输入流量(客户端上传)</param>
- /// <param name="_DataType">数据类型 </param>
- /// <param name="_DataLength"></param>
- /// <param name="multiple">流量倍数</param>
- /// <returns></returns>
- public static bool AddNetworkTrafficRecordThreadPool(LYFZ.CloudServerData.Model.DBConnection dbConn, string _EnterpriseID, int _FlowType, FlowDataType _DataType, long _DataLength, int multiple)
- {
- try
- {
- if (String.IsNullOrEmpty(_EnterpriseID))
- {
- _EnterpriseID = "LYFZ_Null";
- }
- var parameter = new {
- EnterpriseID = _EnterpriseID,
- FlowType=_FlowType,
- DataType=(int)_DataType,
- DataLength=_DataLength,
- dbconn = dbConn.GetDBConnectionString(),
- multiple = multiple
- };
- System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(WaitThreadFunc), Newtonsoft.Json.JsonConvert.SerializeObject(parameter));
- return true;
- }
- catch {
- return false;
- }
- }
- public static void WaitThreadFunc(object obj)
- {
- dynamic parameter = Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString());
- AddNetworkTrafficRecord(parameter.dbconn.ToString(), parameter.EnterpriseID.ToString(), Convert.ToInt32(parameter.FlowType), (FlowDataType)Convert.ToInt32(parameter.DataType), Convert.ToInt64(parameter.DataLength), Convert.ToInt32(parameter.multiple));
- }
- /// <summary>
- /// 合并统计流量记录
- /// </summary>
- /// <param name="dbConn"></param>
- /// <returns></returns>
- public static int SumNetworkTrafficRecord(LYFZ.CloudServerData.Model.DBConnection dbConn)
- {
- System.Data.SqlClient.SqlParameter[] parameters = {
- new System.Data.SqlClient.SqlParameter("@ReturnI", System.Data.SqlDbType.Int)
- };
- parameters[0].Direction = System.Data.ParameterDirection.Output;
- LYFZ.Helper.SQLHelper.RunProcedure("PROCE_SumNetworkTrafficRecord", parameters, "SumNetworkTrafficRecord_ds", 240, dbConn.GetDBConnectionString());
- return Convert.ToInt32(parameters[0].Value);
- }
- /// <summary>
- /// 获取统计数据
- /// </summary>
- /// <param name="dbConn">数据库连接</param>
- /// <param name="yaerStart">查询年 开始</param>
- /// <param name="monthStart">查询月 开始</param>
- /// <param name="yaerEnd">查询年 结束</param>
- /// <param name="monthEnd">查询月 结束</param>
- /// <param name="EnterpriseID">企业ID 可以为空</param>
- /// <returns></returns>
- public static System.Data.DataTable GetSumNetworkTrafficRecord(LYFZ.CloudServerData.Model.DBConnection dbConn,int yaerStart, int monthStart, int yaerEnd, int monthEnd, string EnterpriseID)
- {
- string sql = String.Format("select flowtype,datatype,sum(FlowDataLength) as FlowDataLength,sum(UserFlowDataLength) as UserFlowDataLength,DateYear,DateMonth from [dbo].[tb_NetworkTrafficRecord] where DateYear>={0} and DateYear<={1} and DateMonth>={2} and DateMonth<={3}", yaerStart, yaerEnd, monthStart, monthEnd);
- if (!String.IsNullOrEmpty(EnterpriseID))
- {
- sql += String.Format(" and [EnterpriseID]='{0}' group by EnterpriseID,flowtype,datatype,DateYear,DateMonth",EnterpriseID);
- }
- else {
- sql += String.Format(" group by flowtype,datatype,DateYear,DateMonth");
- }
- return LYFZ.Helper.SQLHelper.Query(sql,dbConn.GetDBConnectionString()).Tables[0];
- }
- }
- }
|