NetworkTrafficRecord.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace LYFZ.CloudServerData.DAL
  6. {
  7. public class NetworkTrafficRecord
  8. {
  9. public NetworkTrafficRecord()
  10. {
  11. }
  12. /// <summary>
  13. /// 流量数据传输类型
  14. /// </summary>
  15. public enum FlowDataType
  16. {
  17. /// <summary>
  18. /// 任何类型
  19. /// </summary>
  20. Any,
  21. /// <summary>
  22. /// 云服务器管理流量
  23. /// </summary>
  24. CloudManagement,
  25. /// <summary>
  26. /// 云服务器登录流量
  27. /// </summary>
  28. CloudLogIn,
  29. /// <summary>
  30. /// 普通消息传输
  31. /// </summary>
  32. Message,
  33. /// <summary>
  34. /// SQL数据传输
  35. /// </summary>
  36. SQLData,
  37. /// <summary>
  38. /// 文件传输
  39. /// </summary>
  40. File,
  41. /// <summary>
  42. /// WEBAPP接口数据传输
  43. /// </summary>
  44. WEBAPP,
  45. }
  46. /// <summary>
  47. /// 插入流量统计记录
  48. /// </summary>
  49. /// <param name="dbConnectionString">数据库连接串对象</param>
  50. /// <param name="_EnterpriseID">企业ID</param>
  51. /// <param name="_FlowType">流量类型 0 为输出流量(客户端下载) 1 为输入流量(客户端上传)</param>
  52. /// <param name="_DataType">数据类型 </param>
  53. /// <param name="_DataLength"></param>
  54. /// <param name="multiple">流量倍数</param>
  55. /// <returns></returns>
  56. public static bool AddNetworkTrafficRecord(string dbConnectionString, string _EnterpriseID, int _FlowType, FlowDataType _DataType, long _DataLength, int multiple)
  57. {
  58. try
  59. {
  60. if (multiple <= 0)
  61. {
  62. multiple = 1;
  63. }
  64. double myDataLength = _DataLength / 1024.00 / 1024.00;
  65. double UserFlowDataLength=myDataLength*multiple;
  66. string sql = "INSERT INTO [dbo].[tb_NetworkTrafficRecord]([ID],[EnterpriseID],[FlowType],[DataType],[FlowDataLength],[DateTime],[UserFlowDataLength])"
  67. + "VALUES(" + LYFZ.WinAPI.CustomPublicMethod.GenerateId() + ",'" + _EnterpriseID + "'," + _FlowType + ",'" + _DataType.ToString() + "'," + myDataLength + ",getdate()," + UserFlowDataLength + ")";
  68. LYFZ.Helper.SQLHelper.ExecuteSql(sql, dbConnectionString);
  69. return true;
  70. }
  71. catch
  72. {
  73. return false;
  74. }
  75. }
  76. /// <summary>
  77. /// 插入流量统计记录
  78. /// </summary>
  79. /// <param name="dbConn">数据库连接串对象</param>
  80. /// <param name="_EnterpriseID">企业ID</param>
  81. /// <param name="_FlowType">流量类型 0 为输出流量(客户端下载) 1 为输入流量(客户端上传)</param>
  82. /// <param name="_DataType">数据类型 </param>
  83. /// <param name="_DataLength"></param>
  84. /// <param name="multiple">流量倍数</param>
  85. /// <returns></returns>
  86. public static bool AddNetworkTrafficRecordThreadPool(LYFZ.CloudServerData.Model.DBConnection dbConn, string _EnterpriseID, int _FlowType, FlowDataType _DataType, long _DataLength, int multiple)
  87. {
  88. try
  89. {
  90. if (String.IsNullOrEmpty(_EnterpriseID))
  91. {
  92. _EnterpriseID = "LYFZ_Null";
  93. }
  94. var parameter = new {
  95. EnterpriseID = _EnterpriseID,
  96. FlowType=_FlowType,
  97. DataType=(int)_DataType,
  98. DataLength=_DataLength,
  99. dbconn = dbConn.GetDBConnectionString(),
  100. multiple = multiple
  101. };
  102. System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(WaitThreadFunc), Newtonsoft.Json.JsonConvert.SerializeObject(parameter));
  103. return true;
  104. }
  105. catch {
  106. return false;
  107. }
  108. }
  109. public static void WaitThreadFunc(object obj)
  110. {
  111. dynamic parameter = Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString());
  112. AddNetworkTrafficRecord(parameter.dbconn.ToString(), parameter.EnterpriseID.ToString(), Convert.ToInt32(parameter.FlowType), (FlowDataType)Convert.ToInt32(parameter.DataType), Convert.ToInt64(parameter.DataLength), Convert.ToInt32(parameter.multiple));
  113. }
  114. /// <summary>
  115. /// 合并统计流量记录
  116. /// </summary>
  117. /// <param name="dbConn"></param>
  118. /// <returns></returns>
  119. public static int SumNetworkTrafficRecord(LYFZ.CloudServerData.Model.DBConnection dbConn)
  120. {
  121. System.Data.SqlClient.SqlParameter[] parameters = {
  122. new System.Data.SqlClient.SqlParameter("@ReturnI", System.Data.SqlDbType.Int)
  123. };
  124. parameters[0].Direction = System.Data.ParameterDirection.Output;
  125. LYFZ.Helper.SQLHelper.RunProcedure("PROCE_SumNetworkTrafficRecord", parameters, "SumNetworkTrafficRecord_ds", 240, dbConn.GetDBConnectionString());
  126. return Convert.ToInt32(parameters[0].Value);
  127. }
  128. /// <summary>
  129. /// 获取统计数据
  130. /// </summary>
  131. /// <param name="dbConn">数据库连接</param>
  132. /// <param name="yaerStart">查询年 开始</param>
  133. /// <param name="monthStart">查询月 开始</param>
  134. /// <param name="yaerEnd">查询年 结束</param>
  135. /// <param name="monthEnd">查询月 结束</param>
  136. /// <param name="EnterpriseID">企业ID 可以为空</param>
  137. /// <returns></returns>
  138. public static System.Data.DataTable GetSumNetworkTrafficRecord(LYFZ.CloudServerData.Model.DBConnection dbConn,int yaerStart, int monthStart, int yaerEnd, int monthEnd, string EnterpriseID)
  139. {
  140. 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);
  141. if (!String.IsNullOrEmpty(EnterpriseID))
  142. {
  143. sql += String.Format(" and [EnterpriseID]='{0}' group by EnterpriseID,flowtype,datatype,DateYear,DateMonth",EnterpriseID);
  144. }
  145. else {
  146. sql += String.Format(" group by flowtype,datatype,DateYear,DateMonth");
  147. }
  148. return LYFZ.Helper.SQLHelper.Query(sql,dbConn.GetDBConnectionString()).Tables[0];
  149. }
  150. }
  151. }