tijian_tieying/web/dccdc/Controllers/AccessController.cs
2025-02-20 12:14:39 +08:00

158 lines
5.8 KiB
C#

using dccdc.BLL;
using dccdc.Models;
using NetSDKCS;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
namespace dccdc.Controllers
{
public class AccessController : Controller
{
// GET: Access
public ActionResult AccessContrlResult()
{
ViewBag.list = new List<string>();
List<AccessModel> al = new List<AccessModel>();
var AccessBll = new BLL.AccessBll();
al = AccessBll.GetAllList();
return View(al);
}
public ActionResult OpeningRecordResult(string doorid)
{
ViewBag.doorid = doorid;
return View();
}
public string Openingrecord(int doorid)
{
List<OpeningrecordModel> al = new BLL.OpeningrecordBll().getId(doorid);
List <AccessModel> sb = new BLL.AccessBll().GetId(doorid.ToString());
string sbmc=" ";
string ygid;
foreach (var k in sb)
{
sbmc= k.sbmc;
}
foreach (var a in al)
{
a.sbmc = sbmc;
ygid = a.ygid.ToString();
a.ygmc = new ERPUserBll().GetUsername(ygid);
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { code = 0, msg = "success", al.Count, data = al });
}
public ActionResult AccessForm(String id)
{
ViewBag.list = new List<string>();
List<AccessModel> al = new List<AccessModel>();
var AccessBll = new BLL.AccessBll();
if (id == "undefined" || id == null)
{
//al = AccessBll.GetId(id);
AccessModel accessModel = new AccessModel();
accessModel.kmlx = 1;
accessModel.ewmkf = 0;
al.Add(accessModel);
return View(al);
}
al = AccessBll.GetId(id);
return View(al);
}
public ActionResult UpdateAccess(AccessModel model)
{
AccessBll accessBll = new AccessBll();
var f = false;
if (model.id == 0)
{
model.tjsj = DateTime.Now;
f = accessBll.save(model);
}
else
{
f = accessBll.Update(model);
}
return Json(f ? new { State = 1, Message = "操作成功!" } : new { State = 0, Message = "操作失败!" });
}
public object DeleteAccess(string id)
{
var AccessBll = new BLL.AccessBll();
return AccessBll.DeleteAccess(id);
}
public string lskm(string doorid)
{
var AccessBll = new BLL.AccessBll();
var acc = AccessBll.GetId(doorid);
if (acc.Count <= 0)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "查找门禁设备失败!" });
}
NETClient.Init(null, IntPtr.Zero, null);
IntPtr loginID = IntPtr.Zero;
ushort port = 0;
try
{
port = Convert.ToUInt16(acc[0].dkh);
}
catch
{
//MessageBox.Show("Port error(端口错误)");
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "门禁设备端口号错误,请联系管理员设置!" });
//return "";
}
NET_DEVICEINFO_Ex deviceInfo = new NET_DEVICEINFO_Ex();
loginID = NETClient.Login(acc[0].sbip, port, acc[0].yhm, acc[0].mm, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref deviceInfo);
if (loginID == IntPtr.Zero)
{
//MessageBox.Show(NETClient.GetLastError());
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = NETClient.GetLastError() });
}
NET_CTRL_ACCESS_OPEN openInfo = new NET_CTRL_ACCESS_OPEN();
openInfo.dwSize = (uint)Marshal.SizeOf(typeof(NET_CTRL_ACCESS_OPEN));
openInfo.nChannelID = 0;
openInfo.szTargetID = IntPtr.Zero;
openInfo.emOpenDoorType = EM_OPEN_DOOR_TYPE.REMOTE;
IntPtr inPtr = IntPtr.Zero;
try
{
inPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(NET_CTRL_ACCESS_OPEN)));
Marshal.StructureToPtr(openInfo, inPtr, true);
bool ret = NETClient.ControlDevice(loginID, EM_CtrlType.ACCESS_OPEN, inPtr, 10000);
if (!ret)
{
//MessageBox.Show("Open door failed(开门失败)");
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "开门失败" });
}
}
finally
{
Marshal.FreeHGlobal(inPtr);
}
NETClient.Logout(loginID);
loginID = IntPtr.Zero;
try {
OpeningrecordBll openingrecordBll = new BLL.OpeningrecordBll();
OpeningrecordModel openModel = new OpeningrecordModel();
openModel.sbid = Convert.ToInt32(doorid);
openModel.kmlx = 1;
var user = Session["loginUser"] as Models.ERPUser;
openModel.ygid = user.ID;
openingrecordBll.save(openModel);
}
catch(Exception ex)
{
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 1, Message = "开门成功!保存开门记录失败:"+ex.Message });
}
return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 1, Message = "开门成功!" });
}
}
}