200 lines
7.0 KiB
C#
200 lines
7.0 KiB
C#
using Epost.Common;
|
||
using Epost.DAL;
|
||
using Epost.Model;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Data;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Xml;
|
||
|
||
namespace Epost.BLL
|
||
{
|
||
public class HistoryXmlBLL
|
||
{
|
||
DB db = new DB();
|
||
|
||
HistoryDataDAL dal = new HistoryDataDAL();
|
||
#region 创建xml(历史数据在页面加载的时候有)
|
||
public bool DataXML(List<string> table, int days)
|
||
{
|
||
for (int i = 0; i < table.Count() - 1; i++)
|
||
{
|
||
for (int j = table.Count() - 1; j > i; j--)
|
||
{
|
||
if (table[j].Equals(table[i]))
|
||
{
|
||
table.RemoveAt(j);
|
||
}
|
||
}
|
||
}
|
||
//保存数据到xml格式中
|
||
string datatime = DateTime.Now.ToString();
|
||
//主目录
|
||
//string sql_xml = System.IO.Directory.GetCurrentDirectory() + "\\" + "delete" + ".xml";
|
||
//sql_xml = @"E:\DSL_DPS - 副本\delete.xml";
|
||
//【改变】
|
||
string sql_xml = System.AppDomain.CurrentDomain.BaseDirectory + "\\Log\\delete.xml";
|
||
//string sql_xml = @db.path_dexml;
|
||
//public static string sqlcon = ConfigurationManager.ConnectionStrings["path"].ToString();
|
||
XmlDocument xmldoc = new XmlDocument();
|
||
XmlNode node = xmldoc.CreateXmlDeclaration("1.0", "utf-8", "");
|
||
xmldoc.AppendChild(node);
|
||
|
||
if (!File.Exists(sql_xml))
|
||
{
|
||
//根节点
|
||
XmlElement root = xmldoc.CreateElement("Delete");
|
||
xmldoc.AppendChild(root);
|
||
|
||
//一级属性
|
||
for (int i = 0; i < table.Count; i++)
|
||
{
|
||
//子节点
|
||
XmlElement delete = xmldoc.CreateElement("delete");
|
||
root.AppendChild(delete);
|
||
XmlAttribute name = xmldoc.CreateAttribute("name");
|
||
delete.Attributes.Append(name);
|
||
XmlAttribute day = xmldoc.CreateAttribute("days");
|
||
delete.Attributes.Append(day);
|
||
name.Value = table[i];//表名
|
||
day.Value = Convert.ToString(days);//时间名
|
||
delete.InnerText = datatime;//当前时间
|
||
}
|
||
xmldoc.Save(sql_xml);
|
||
}
|
||
else
|
||
{
|
||
xmldoc.Load(sql_xml);
|
||
XmlNode orderid2 = xmldoc.SelectSingleNode("Delete");
|
||
//获取属性
|
||
var list = orderid2.ChildNodes;
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
for (int j = 0; j < table.Count; j++)
|
||
{
|
||
|
||
if (list[i].Attributes["name"].Value == table[j])
|
||
{
|
||
list[i].Attributes["days"].Value = Convert.ToString(days);
|
||
list[i].InnerText = datatime;
|
||
table.RemoveAt(j);
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
for (int j = 0; j < table.Count; j++)
|
||
{
|
||
XmlNode root = xmldoc.SelectSingleNode("Delete");
|
||
XmlElement delete = xmldoc.CreateElement("delete");
|
||
root.AppendChild(delete);
|
||
XmlAttribute name = xmldoc.CreateAttribute("name");
|
||
delete.Attributes.Append(name);
|
||
XmlAttribute day = xmldoc.CreateAttribute("days");
|
||
delete.Attributes.Append(day);
|
||
name.Value = table[j];//表名
|
||
day.Value = Convert.ToString(days);//时间名
|
||
delete.InnerText = datatime;//当前时间
|
||
|
||
|
||
}
|
||
|
||
|
||
xmldoc.Save(sql_xml);
|
||
|
||
|
||
}
|
||
bool t = true;
|
||
return t;
|
||
}
|
||
#endregion
|
||
|
||
#region 加载xml文件(数据库历史数据)
|
||
public bool Load()
|
||
{
|
||
//加载xml数据,是否有
|
||
string datatime = DateTime.Now.ToString();
|
||
//【改变】
|
||
string day_xml = System.AppDomain.CurrentDomain.BaseDirectory + "\\Log\\delete.xml";
|
||
//string day_xml = @db.path_dexml;
|
||
//string s = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
|
||
|
||
XmlDocument xmldoc = new XmlDocument();
|
||
try
|
||
{
|
||
xmldoc.Load(day_xml);
|
||
//查询xml文件中时间和天数和今天的对比,如果大于这执行删除语句
|
||
XmlNode orderid2 = xmldoc.SelectSingleNode("Delete");
|
||
for (int i = 0; i < orderid2.ChildNodes.Count; i++)
|
||
{
|
||
//循环每一个节点
|
||
string name = orderid2.ChildNodes[i].Attributes["name"].Value;//表名
|
||
string day = orderid2.ChildNodes[i].Attributes["days"].Value;//时间
|
||
string innerday = orderid2.ChildNodes[i].InnerText;//改的时间
|
||
DateTime dt1 = Convert.ToDateTime(innerday);
|
||
dt1 = dt1.AddDays(Convert.ToInt32(day));
|
||
DateTime dt2 = Convert.ToDateTime(datatime);
|
||
if (dt1.CompareTo(dt2) >= 0)
|
||
{
|
||
|
||
}
|
||
else if (dt1.CompareTo(dt2) < 0)
|
||
{
|
||
//执行删除任务的操作
|
||
DeleteTable(name);//执行删除任务
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
LogHelper.WriteLogInfo("加载xml文件(数据库历史数据)异常:" + ex.ToString());
|
||
|
||
}
|
||
return true;
|
||
}
|
||
#endregion
|
||
|
||
#region 删除表中的信息
|
||
public bool DeleteTable(string table)
|
||
{
|
||
bool t = dal.DeleteTable(table);
|
||
if (t == true)
|
||
{
|
||
//记录日志
|
||
ErrorLogBLL logBLL = new ErrorLogBLL();
|
||
ErrorLogModel error_model = new ErrorLogModel();
|
||
error_model.Type = "3";
|
||
error_model.Remark = "删除表中信息:日志目录: delete from " + table;
|
||
logBLL.InsertErrorLog(error_model);
|
||
}
|
||
return t;
|
||
}
|
||
#endregion
|
||
|
||
#region 删除保留时间(删除数据库中的数据的保留时间)
|
||
public bool SaveTime(string table, string date, string time)
|
||
{
|
||
bool t = dal.SaveTime(table, date);
|
||
return t;
|
||
}
|
||
#endregion
|
||
|
||
#region 查看历史数据(显示表名)
|
||
public IList<HistoryDataModel> HistoryData()
|
||
{
|
||
DataTable dt = dal.HistoryData();
|
||
IList<HistoryDataModel> HistoryData = ModelConvertHelper<HistoryDataModel>.ConvertToModel(dt);
|
||
return HistoryData;
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
}
|