using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using PT.BLL;
using PT.Common;
using PT.Model;
using PT.Web.Mvc.App_Start;
namespace PT.Web.Mvc.Controllers
{
[LoginAuthorizationFilter]
public class DataMigrateController : Controller
{
IPListBll iPListBll = new IPListBll();
SegmentListBll segmentListBll = new SegmentListBll();
PurposeListBll purposeListBll = new PurposeListBll();
private SessionHelper sessionHelper;
public IActionResult Index()
{
return View();
}
/// <summary>
/// IP旧数据迁移
/// </summary>
/// <returns></returns>
public IActionResult IPListDataMigrate()
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
DataTable dataTable = ExcelHelper.ExcelToTable(@"D:\Work\项目资料\ESL IP Address Managment System\正式库0602\IP_USAGE.xlsx");
List<IPList> ts = new List<IPList>();
IPList t = null;
foreach (DataRow item in dataTable.Rows)
{
string vlan = item["vlan"].ToString();
string ip = item["ip"].ToString();
string PURID = item["PURID"].ToString();
string device = item["device"].ToString();
string macaddress = item["macaddress"].ToString();
string nodename = item["nodename"].ToString();
string location = item["location"].ToString();
string username = item["username"].ToString();
string maintby = item["maintby"].ToString();
string maintdate = item["maintdate"].ToString();
string expdate = item["expdate"].ToString();
t = new IPList();
t.IP = vlan + "." + ip;
t.MacAddress = macaddress;
t.NodeName = nodename;
t.Location = unicode2String(location);
t.UserName = unicode2String(username);
t.PurposeId = PURID;
t.Device = unicode2String(device);
t.Assgn = maintby;
t.Date = DateTime.Now;
if (maintdate.Length == 8)
{
maintdate = maintdate.Insert(4, "-").Insert(7, "-");
t.Date = Convert.ToDateTime(maintdate);
}
if (expdate.Length == 8)
{
expdate = expdate.Insert(4, "-").Insert(7, "-");
t.Expired = Convert.ToDateTime(expdate);
}
ts.Add(t);
}
string s = dataTable.ToJson();
ts[0].ModifyBy = user.Id + "|" + user.UserID + "|" + user.UserName;
result.data = iPListBll.ImportUpdate(ts);
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
/// <summary>
/// IPSegmentList数据迁移
/// </summary>
/// <returns></returns>
public IActionResult SegmentListDataMigrate()
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
DataTable dataTable = ExcelHelper.ExcelToTable(@"D:\Work\项目资料\ESL IP Address Managment System\正式库0602\IP_SEGMENT.xlsx");
List<SegmentList> ts = new List<SegmentList>();
SegmentList t = null;
int s = 0, f = 0;
foreach (DataRow item in dataTable.Rows)
{
string vlan = item["vlan"].ToString();
string floor = item["floor"].ToString();
string ipmax = item["ipmax"].ToString();
string ipmin = item["ipmin"].ToString();
string remark = item["remark"].ToString();
string maintby = item["maintby"].ToString();
t = new SegmentList();
t.Floor = floor;
t.IPSegment = vlan;
t.Available = ipmin + " - " + ipmax;
t.Start = Convert.ToInt32(ipmin);
t.End = Convert.ToInt32(ipmax);
t.Remark = remark;
t.CreatBy = maintby;
t.CreatDate = DateTime.Now;
ts.Add(t);
if (segmentListBll.IsExist(t))
{
f += 1;
}
else
{
int n = iPListBll.GenerateIP(t.IPSegment, t.Start, t.End, t.Floor, t.CreatBy);
segmentListBll.InsertableIgnoreColumns(t);
s += 1;
}
}
result.data = "s:" + s + ",f:" + f;
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
public IActionResult PurposeListDataMigrate()
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
DataTable dataTable = ExcelHelper.ExcelToTable(@"D:\Work\项目资料\ESL IP Address Managment System\正式库0602\IP_PURPOSE.xlsx");
List<PurposeList> ts = new List<PurposeList>();
PurposeList t = null;
int s = 0, f = 0;
foreach (DataRow item in dataTable.Rows)
{
string PURID = item["PURID"].ToString();
string PURNAME = item["PURNAME"].ToString();
string PURCOLOR = item["PURCOLOR"].ToString();
string maintby = item["maintby"].ToString();
t = new PurposeList();
t.PID = PURID;
t.Name = PURNAME;
t.Color = PURCOLOR;
t.CreatBy = maintby;
t.CreatDate = DateTime.Now;
ts.Add(t);
if (purposeListBll.IsExist(t))
{
f += 1;
}
else
{
purposeListBll.InsertableIgnoreColumns(t);
s += 1;
}
}
result.data = "s:" + s + ",f:" + f;
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
public static String unicode2String(String unicode)
{
StringBuilder str = new StringBuilder();
if (unicode.IndexOf("&#") < 0)
{
return unicode;
}
string s = unicode.Substring(0, unicode.IndexOf("&#"));
string e = unicode.Substring(unicode.LastIndexOf("&#") + 8);
str.Append(s);
unicode = unicode.Substring(unicode.IndexOf("&#"));
unicode = unicode.Substring(0, unicode.LastIndexOf("&#") + 7);
Regex myRegex = new Regex("^[0-9]*$");
if (unicode.StartsWith("&#x"))
{
String[] hex = unicode.Replace("&#x", "").Split(";");
for (int i = 0; i < hex.Length; i++)
{
if (!string.IsNullOrWhiteSpace(hex[i]))
{
int data = Convert.ToInt32(hex[i]);
str.Append((char)data);
}
}
}
else if (unicode.StartsWith("&#"))
{
String[] hex = unicode.Replace("&#", "").Split(";");
for (int i = 0; i < hex.Length; i++)
{
if (!string.IsNullOrWhiteSpace(hex[i]) && myRegex.IsMatch(hex[i]))
{
int data = Convert.ToInt32(hex[i]);// (, 10);
str.Append((char)data);
}
}
}
str.Append(e);
return str.ToString();
}
}
}