using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using PT.BLL;
using PT.Common;
using PT.Model;
using PT.Web.Mvc.App_Start;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace PT.Web.Mvc.Controllers
{
[LoginAuthorizationFilter]
public class IPListController : BaseController<IPList, IPList>
{
IPListBll bll = new IPListBll();
private SessionHelper sessionHelper;
public IActionResult Index()
{
return View();
}
public IActionResult Edit()
{
return View();
}
public IActionResult IsExistMacAddress(IPList t)
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
bool b = bll.IsExistMacAddress(t);
result.data = b;
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
/// <summary>
/// 视图 多表联查 查询表未删除数据 按条件查询 (根据业务重写)
/// </summary>
/// <returns></returns>
public IActionResult QueryableNotDeletedVWhere(IPListV v)
{
LayuiDataResult<IPListV> dataResult = new LayuiDataResult<IPListV>()
{
code = 0,
msg = "成功",
count = 0,
data = new List<IPListV>()
};
try
{
List<IPListV> list = baseBll.QueryableNotDeletedV(v);
dataResult.count = list.Count;
dataResult.data = list;
}
catch (Exception ex)
{
dataResult.code = -1;
dataResult.msg = ex.Message;
}
var res = new JsonResult(dataResult);
return res;
}
/// <summary>
/// 视图 多表联查 分页查询 查询表未删除数据 按条件查询 (根据业务重写)
/// </summary>
/// <param name="where"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
public IActionResult QueryablePageList(IPListV where, int page, int limit)
{
LayuiDataResult<IPListV> dataResult = new LayuiDataResult<IPListV>()
{
code = 0,
msg = "成功",
count = 0,
data = new List<IPListV>()
};
try
{
int totalCount = 0;
List<IPListV> list = baseBll.QueryablePageList(where, page, limit, out totalCount);
dataResult.count = totalCount;
dataResult.data = list;
//string s = "{\"Floor\":\"" + where.Floor + "\",\"IP\":\"" + where.IP + "\",\"UserName\":\"" + where.UserName + "\",\"AssgnName\":\"" + where.AssgnName + "\"" +
// ",\"IPAddress\":\"" + where.IPAddress + "\",\"MacAddress\":\"" + where.MacAddress + "\",\"NodeName\":\"" + where.NodeName + "\"}";
string s = "{\"Floor\":\"" + where.Floor + "\",\"IP\":\"" + where.IP + "\",\"SearchType\":\"" + where.SearchType + "\",\"SearchVal\":\"" + where.SearchVal + "\"}";
AddSystemLog(new SystemLog() { OperateType = "query", OperateModule = "SearchIP", OperateFunction = "查询", OperatePage = "查询分配IP信息:IPList/Index", OperateBefore = "查询条件:" + s, OperateAfter = "" });
}
catch (Exception ex)
{
dataResult.code = -1;
dataResult.msg = ex.Message;
}
var res = new JsonResult(dataResult);
return res;
}
public override IActionResult InsertableIgnoreColumns(IPList t)
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
if (bll.IsExist(t))
{
result.code = -2;
result.msg = "IP已存在!";
}
else
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
t.CreatBy = user.Id + "|" + user.UserID + "|" + user.UserName;
t.CreatDate = DateTime.Now;
result.data = bll.InsertableIgnoreColumns(t);
AddSystemLog(new SystemLog() { OperateType = "add", OperateModule = "SearchIP", OperateFunction = "新增IP信息", OperatePage = "新增IP信息:IPList/Edit", OperateBefore = "", OperateAfter = t.ToJson() });
}
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
public override IActionResult UpdateableIgnoreColumns(IPList t)
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
t.Assgn = user.Id + "|" + user.UserID + "|" + user.UserName;
t.ModifyBy = user.Id + "|" + user.UserID + "|" + user.UserName;
t.ModifyDate = DateTime.Now;
result.data = baseBll.UpdateableIgnoreColumns(t);
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
public override IActionResult UpdateableIgnoreColumnsWhere(IPList t)
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
if (bll.IsExistMacAddress(t))
{
result.code = -2;
result.msg = "同Floor之内MacAddress不能重复!";
return new JsonResult(result);
}
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
t.Assgn = user.Id + "|" + user.UserID + "|" + user.UserName;
t.ModifyBy = user.Id + "|" + user.UserID + "|" + user.UserName;
t.ModifyDate = DateTime.Now;
t.Date = DateTime.Now;
IPList tt;
string _OperateBefore = "", _OperateAfter = "";
if (t.Id > 0)
{
tt = baseBll.QueryableInSingle(t.Id.ToString());
_OperateBefore = tt.ToJson();
}
else
{
tt = bll.QueryableSingle(new IPList() { IP = t.IP });
_OperateBefore = tt.ToJson();
}
result.data = bll.UpdateableIgnoreColumnsWhere(t);
if (t.Id > 0)
{
tt = baseBll.QueryableInSingle(t.Id.ToString());
_OperateAfter = tt.ToJson();
}
else
{
tt = bll.QueryableSingle(new IPList() { IP = t.IP });
_OperateAfter = tt.ToJson();
}
AddSystemLog(new SystemLog() { OperateType = "modify", OperateModule = "SearchIP", OperateFunction = "分配IP信息", OperatePage = "分配IP信息:IPList/Edit", OperateBefore = _OperateBefore, OperateAfter = _OperateAfter });
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
/// <summary>
/// 获取未删除的可用IP
/// </summary>
/// <returns></returns>
public IActionResult QueryableNotDeletedAvailableIP(string IPSegment)
{
LayuiDataResult<IPList> dataResult = new LayuiDataResult<IPList>()
{
code = 0,
msg = "成功",
count = 0,
data = new List<IPList>()
};
try
{
List<IPList> list = bll.QueryableNotDeletedAvailableIP(IPSegment);
//foreach (var item in list)
//{
// item.IP = item.IP.Substring(item.IP.LastIndexOf("."));
//}
dataResult.count = list.Count;
dataResult.data = list;
}
catch (Exception ex)
{
dataResult.code = -1;
dataResult.msg = ex.Message;
}
var res = new JsonResult(dataResult);
return res;
}
/// <summary>
/// 清除IP绑定数据只保留IP
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public IActionResult UpdateClearIP(IPList t)
{
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
t.Assgn = "";
t.ModifyBy = user.Id + "|" + user.UserID + "|" + user.UserName;
t.ModifyDate = DateTime.Now;
t.Date = null;
IPList tt = baseBll.QueryableInSingle(t.Id.ToString());
result.data = bll.UpdateClearIP(t);
AddSystemLog(new SystemLog() { OperateType = "delete", OperateModule = "SearchIP", OperateFunction = "删除已分配IP信息", OperatePage = "删除已分配IP信息:IPList/Index", OperateBefore = tt.ToJson(), OperateAfter = "" });
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
/// <summary>
/// 导入ip数据
/// </summary>
/// <param name="FilePath"></param>
/// <returns></returns>
public IActionResult ExcelToTable(string FilePath)
{
//FilePath = @"D:\Work\SourceCode\ADCIPMANNEW\ProjectTemplate\PT.Web.Mvc\FileManage\IPList\20230606\ff7e2767-08ad-4c7d-a544-7c78a9836a90.xlsx";
ResponseResult result = new ResponseResult()
{
code = 0,
msg = "成功",
data = 0
};
try
{
sessionHelper = new SessionHelper(HttpContext.Session);
UserList user = sessionHelper.GetUserInfoString();
DataTable dataTable = ExcelHelper.ExcelToTable(@FilePath);
string s = dataTable.ToJson();
List<IPList> ts = s.ToList<IPList>();
//查询已存在数据的mac
List<IPList> ts2 = bll.QueryableByIPMac(ts.Select(x => x.IP).ToArray(), ts.Select(x => x.MacAddress).ToArray());
string repeatMacAddress = "", repeatMacAddress2 = "";
List<string> MacAddressArr = new List<string>();
string errorIP = "";
foreach (IPList item in ts)
{
string ip = item.IP;
string mac = item.MacAddress;
//当前IP数据
IPList t = ts2.Find(x => x.IP == ip);
//当前mac数据 会有多个
List<IPList> ts3 = ts2.Where(x => x.MacAddress == mac).ToList();
if (t != null)
{
//导入表格中与数据库中发生重复
if (ts3.Where(x => x.Floor == t.Floor).Any())
{
if (repeatMacAddress2.IndexOf(mac) < 0)
{
repeatMacAddress2 += mac + ",";
}
}
}
if (MacAddressArr.Exists(x => x == mac))
{
//导入表格内的重复
if (repeatMacAddress.IndexOf(mac) < 0)
{
repeatMacAddress += mac + ",";
}
}
MacAddressArr.Add(mac);
if (string.IsNullOrWhiteSpace(mac) || mac.Length != 12)
{
errorIP += ip + "|";
//校验成功
}
else if (!Regex.IsMatch(mac, "^[0-9A-Fa-f]+$"))
{
errorIP += ip + "|";
//校验成功
}
}
if (!string.IsNullOrWhiteSpace(errorIP))
{
result.code = -2;
result.msg = "mac地址不符合规范";
result.data = errorIP;
return new JsonResult(result);
}
if (!string.IsNullOrWhiteSpace(repeatMacAddress))
{
result.code = -3;
result.msg = "表格中mac地址重复";
result.data = repeatMacAddress;
return new JsonResult(result);
}
if (!string.IsNullOrWhiteSpace(repeatMacAddress2))
{
result.code = -4;
result.msg = "数据库中已存在mac地址重复";
result.data = repeatMacAddress2;
return new JsonResult(result);
}
ts[0].Assgn = user.Id + "|" + user.UserID + "|" + user.UserName;
ts[0].ModifyBy = user.Id + "|" + user.UserID + "|" + user.UserName;
result.data = bll.ImportUpdate(ts);
AddSystemLog(new SystemLog() { OperateType = "import", OperateModule = "SearchIP", OperateFunction = "导入", OperatePage = "导入分配IP信息:IPList/Index", OperateBefore = "", OperateAfter = "" });
}
catch (Exception ex)
{
result.code = -1;
result.msg = ex.Message;
}
var res = new JsonResult(result);
return res;
}
}
}