493 lines
22 KiB
C#
493 lines
22 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using BLL;
|
|
using WebAPI.Filter;
|
|
|
|
namespace WebAPI.Controllers
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class DoorServerController : ApiController
|
|
{
|
|
#region 获取部门、人员、出入记录最大ID
|
|
/// <summary>
|
|
/// 获取部门、人员、出入记录最大ID
|
|
/// </summary>
|
|
/// <param name="projectId"></param>
|
|
/// <param name="queryValue">查询条件</param>
|
|
/// <returns></returns>
|
|
public string getMaxID(string projectId, string queryValue = null)
|
|
{
|
|
int DepartmentID = 0, ID = 0;
|
|
long EmployID = 0, ValidEventID = 0;
|
|
var getD = Funs.DB.T_d_department.Where(x => x.ProjectId == projectId).Select(x => x.DepartmentID);
|
|
if (getD.Count() > 0)
|
|
{
|
|
DepartmentID = getD.Max();
|
|
}
|
|
var getE = Funs.DB.T_d_employinfo.Where(x => x.ProjectId == projectId).Select(x => x.EmployID);
|
|
if (getE.Count() > 0)
|
|
{
|
|
EmployID = getE.Max();
|
|
}
|
|
if (!string.IsNullOrEmpty(queryValue))
|
|
{
|
|
var getI = Funs.DB.T_d_facerecord.Where(x => x.ProjectId == projectId && x.RoleID == queryValue).Select(x => x.ID);
|
|
if (getI.Count() > 0)
|
|
{
|
|
ID = getI.Max();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var getI = Funs.DB.T_d_facerecord.Where(x => x.ProjectId == projectId).Select(x => x.ID);
|
|
if (getI.Count() > 0)
|
|
{
|
|
ID = getI.Max();
|
|
}
|
|
}
|
|
var getV = Funs.DB.T_d_validcardevent.Where(x => x.ProjectId == projectId).Select(x => x.ValidEventID);
|
|
if (getV.Count() > 0)
|
|
{
|
|
ValidEventID = getV.Max();
|
|
}
|
|
return ("$" + DepartmentID.ToString() + "$" + EmployID.ToString() + "$" + ID.ToString() + "$" + ValidEventID.ToString() + "$");
|
|
}
|
|
#endregion
|
|
|
|
#region 保存部门信息
|
|
/// <summary>
|
|
/// 保存部门信息
|
|
/// </summary>
|
|
/// <param name="department">部门信息</param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public Model.ResponeData SaveDepartment([FromBody] Model.t_d_departmentItem department)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
|
{
|
|
if (department != null)
|
|
{
|
|
var getDep = db.T_d_department.FirstOrDefault(x => x.DepartmentID == department.DepartmentID && x.ProjectId == department.ProjectId);
|
|
if (getDep == null)
|
|
{
|
|
Model.T_d_department newDep = new Model.T_d_department()
|
|
{
|
|
NewID = SQLHelper.GetNewID(),
|
|
ProjectId = department.ProjectId,
|
|
DepartmentID = department.DepartmentID,
|
|
DepartmentName = department.DepartmentName,
|
|
ParentID = department.ParentID,
|
|
IsDel = department.IsDel,
|
|
IsDown = department.IsDown,
|
|
ParentDepartmentName = department.ParentDepartmentName,
|
|
IsEnable = department.IsEnable,
|
|
};
|
|
db.T_d_department.InsertOnSubmit(newDep);
|
|
db.SubmitChanges();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
responeData.code = 2;
|
|
responeData.message = "信息有误!";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
|
|
return responeData;
|
|
}
|
|
#endregion
|
|
|
|
#region 保存人员信息
|
|
/// <summary>
|
|
/// 保存人员信息
|
|
/// </summary>
|
|
/// <param name="employinfo">人员信息</param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public Model.ResponeData SaveEmployinfo([FromBody] Model.t_d_employinfoItem employinfo)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
|
{
|
|
if (employinfo != null)
|
|
{
|
|
var getEm = db.T_d_employinfo.FirstOrDefault(x => x.EmployID == employinfo.EmployID && x.ProjectId == employinfo.ProjectId);
|
|
if (getEm == null)
|
|
{
|
|
Model.T_d_employinfo newEmploy = new Model.T_d_employinfo()
|
|
{
|
|
NewID = SQLHelper.GetNewID(),
|
|
ProjectId = employinfo.ProjectId,
|
|
EmployID = employinfo.EmployID,
|
|
WxEmployID = employinfo.WxEmployID,
|
|
EmployNO = employinfo.EmployNO,
|
|
EmployName = employinfo.EmployName,
|
|
CardNO = employinfo.CardNO,
|
|
GroupID = employinfo.GroupID,
|
|
IsAttend = employinfo.IsAttend,
|
|
IsDoor = employinfo.IsDoor,
|
|
BeginDateTime = employinfo.BeginDateTime,
|
|
EndDateTime = employinfo.EndDateTime,
|
|
InPassWord = employinfo.InPassWord,
|
|
DepartmentName = employinfo.DepartmentName,
|
|
Mailbox = employinfo.Mailbox,
|
|
Mobilephone = employinfo.Mobilephone,
|
|
WeiXinNO = employinfo.WeiXinNO,
|
|
PostName = employinfo.PostName,
|
|
Gender = employinfo.Gender,
|
|
IsDown = employinfo.IsDown,
|
|
IsWxDown = employinfo.IsWxDown,
|
|
IDCardNo = employinfo.IDCardNo,
|
|
PlayCardNumber = employinfo.PlayCardNumber,
|
|
PlayCardSum = employinfo.PlayCardSum,
|
|
UpdataCloud = employinfo.UpdataCloud,
|
|
Birthday = employinfo.Birthday,
|
|
Police = employinfo.Police,
|
|
Nation = employinfo.Nation,
|
|
Address = employinfo.Address,
|
|
UpdateState = employinfo.UpdateState,
|
|
UpdateDateTime = employinfo.UpdateDateTime,
|
|
IsSubmarineBack = employinfo.IsSubmarineBack,
|
|
OnSiteState = employinfo.OnSiteState,
|
|
TimeNumber = employinfo.TimeNumber,
|
|
CardTimeRecord = employinfo.CardTimeRecord,
|
|
ReservedFieldsOne = employinfo.ReservedFieldsOne,
|
|
ReservedFieldsTwo = employinfo.ReservedFieldsTwo,
|
|
ReservedFieldsThree = employinfo.ReservedFieldsThree,
|
|
ReservedFieldsFour = employinfo.ReservedFieldsFour,
|
|
ReservedFieldsFive = employinfo.ReservedFieldsFive,
|
|
};
|
|
|
|
#region 获取部门
|
|
var getDep = Funs.DB.T_d_department.FirstOrDefault(x => x.ProjectId == newEmploy.ProjectId && x.DepartmentID == newEmploy.GroupID);
|
|
if (getDep != null)
|
|
{
|
|
if (getDep.ParentID == 0)
|
|
{
|
|
newEmploy.InstallationId = getDep.DepartmentID;
|
|
}
|
|
else
|
|
{
|
|
var getDep0 = BLL.DoorServerService.GetSupDep(newEmploy.ProjectId, getDep.ParentID, 0);
|
|
if (getDep0 != null)
|
|
{
|
|
newEmploy.UnitId = newEmploy.GroupID;
|
|
newEmploy.InstallationId = getDep0.DepartmentID;
|
|
var getUnit = BLL.DoorServerService.GetSupDep(newEmploy.ProjectId, getDep.DepartmentID, newEmploy.InstallationId ?? 0);
|
|
if (getUnit != null)
|
|
{
|
|
newEmploy.UnitId = getUnit.DepartmentID;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
db.T_d_employinfo.InsertOnSubmit(newEmploy);
|
|
db.SubmitChanges();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
responeData.code = 2;
|
|
responeData.message = "信息有误!";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
|
|
return responeData;
|
|
}
|
|
#endregion
|
|
|
|
#region 保存人脸识别出入记录信息
|
|
/// <summary>
|
|
/// 保存出入记录信息
|
|
/// </summary>
|
|
/// <param name="facerecord">出入记录信息</param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public Model.ResponeData SaveFacerecord([FromBody] Model.t_d_facerecordItem facerecord)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
|
{
|
|
if (facerecord != null)
|
|
{
|
|
string projectId = facerecord.ProjectId;
|
|
string personName = facerecord.EmployName;
|
|
var getPersonByIdCard = db.SitePerson_Person.Where(x => x.IdentityCard == facerecord.EmployNO).OrderByDescending(x => x.InTime).FirstOrDefault();
|
|
if (getPersonByIdCard != null)
|
|
{
|
|
personName = getPersonByIdCard.PersonName;
|
|
projectId = getPersonByIdCard.ProjectId;
|
|
}
|
|
|
|
var getFacerecord = db.T_d_facerecord.FirstOrDefault(x => x.ID == facerecord.ID && x.ProjectId == projectId && x.RoleID == facerecord.RoleID);
|
|
if (getFacerecord == null)
|
|
{
|
|
Model.T_d_facerecord newFacerecord = new Model.T_d_facerecord()
|
|
{
|
|
NewID = SQLHelper.GetNewID(),
|
|
ProjectId = projectId,
|
|
ID = facerecord.ID,
|
|
EmployName =personName,
|
|
DepartmentID = facerecord.DepartmentID,
|
|
DepartName = facerecord.DepartName,
|
|
AreaID = facerecord.AreaID,
|
|
AreaName = facerecord.AreaName,
|
|
EmployNO = facerecord.EmployNO,
|
|
CardID = facerecord.CardID,
|
|
RoleID = facerecord.RoleID,
|
|
DateTimeRecord = facerecord.DateTimeRecord,
|
|
RecordDes = facerecord.RecordDes,
|
|
FaceIP = facerecord.FaceIP,
|
|
InOrOut = facerecord.InOrOut,
|
|
Des1 = facerecord.Des1,
|
|
Des2 = facerecord.Des2,
|
|
Des3 = facerecord.Des3,
|
|
Des4 = facerecord.Des4,
|
|
};
|
|
|
|
db.T_d_facerecord.InsertOnSubmit(newFacerecord);
|
|
db.SubmitChanges();
|
|
///// 根据出入记录 写入考勤记录
|
|
facerecord.IDCardNo = facerecord.EmployNO;
|
|
DoorServerService.InsertEmployInOutRecord(facerecord);
|
|
if (facerecord.DateTimeRecord.HasValue)
|
|
{
|
|
int isIn = 0;
|
|
if (facerecord.InOrOut == "进门")
|
|
{
|
|
isIn = 1;
|
|
}
|
|
APIPersonService.getPersonInOut(projectId, facerecord.EmployNO, isIn, facerecord.DateTimeRecord.Value);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
responeData.code = 2;
|
|
responeData.message = "信息有误!";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
|
|
return responeData;
|
|
}
|
|
#endregion
|
|
|
|
#region 保存刷卡出入记录信息
|
|
/// <summary>
|
|
/// 保存出入记录信息
|
|
/// </summary>
|
|
/// <param name="validcardevent">出入记录信息</param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public Model.ResponeData SaveValidcardevent([FromBody] Model.t_d_validcardeventItem validcardevent)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
|
|
{
|
|
if (validcardevent != null)
|
|
{
|
|
var getValidcardevent = db.T_d_facerecord.FirstOrDefault(x => x.ID == validcardevent.ValidEventID && x.ProjectId == validcardevent.ProjectId);
|
|
if (getValidcardevent == null)
|
|
{
|
|
Model.T_d_validcardevent newValidcardevent = new Model.T_d_validcardevent()
|
|
{
|
|
NewID = SQLHelper.GetNewID(),
|
|
ProjectId = validcardevent.ProjectId,
|
|
ValidEventID = validcardevent.ValidEventID,
|
|
RecordDateTime = validcardevent.RecordDateTime,
|
|
CardNO = validcardevent.CardNO,
|
|
ConsumerID = validcardevent.ConsumerID,
|
|
InOrOut = validcardevent.InOrOut,
|
|
ControllerID = validcardevent.ControllerID,
|
|
ReaderNO = validcardevent.ReaderNO,
|
|
RecordFlashLoc = validcardevent.RecordFlashLoc,
|
|
RecordAll = validcardevent.RecordAll,
|
|
JPGPath = validcardevent.JPGPath,
|
|
IsDown = validcardevent.IsDown,
|
|
EquipmentSN = validcardevent.EquipmentSN,
|
|
ConsumerNO = validcardevent.ConsumerNO,
|
|
EmployNO = validcardevent.EmployNO,
|
|
EmployName = validcardevent.EmployName,
|
|
CardType = validcardevent.CardType,
|
|
Card = validcardevent.Card,
|
|
DepartmentID = validcardevent.DepartmentID,
|
|
DepartmentName = validcardevent.DepartmentName,
|
|
ControllerSN = validcardevent.ControllerSN,
|
|
DoorID = validcardevent.DoorID,
|
|
DoorName = validcardevent.DoorName,
|
|
ReaderName = validcardevent.ReaderName,
|
|
AreaID = validcardevent.AreaID,
|
|
AreaName = validcardevent.AreaName,
|
|
WorkType = validcardevent.WorkType,
|
|
Positions = validcardevent.Positions,
|
|
IDCardNo = validcardevent.IDCardNo,
|
|
};
|
|
|
|
db.T_d_validcardevent.InsertOnSubmit(newValidcardevent);
|
|
db.SubmitChanges();
|
|
///// 根据出入记录 写入考勤记录
|
|
Model.t_d_facerecordItem newFacerecord = new Model.t_d_facerecordItem
|
|
{
|
|
ProjectId = validcardevent.ProjectId,
|
|
ID = validcardevent.ValidEventID,
|
|
EmployName = validcardevent.EmployName,
|
|
DepartmentID = validcardevent.DepartmentID,
|
|
DepartName = validcardevent.DepartmentName,
|
|
AreaID = validcardevent.AreaID,
|
|
AreaName = validcardevent.AreaName,
|
|
EmployNO = validcardevent.IDCardNo,
|
|
IDCardNo = validcardevent.IDCardNo,
|
|
DateTimeRecord = validcardevent.RecordDateTime,
|
|
InOrOut = validcardevent.InOrOut == 1 ? "进门" : "出门",
|
|
};
|
|
DoorServerService.InsertEmployInOutRecord(newFacerecord);
|
|
if (validcardevent.RecordDateTime.HasValue)
|
|
{
|
|
int isIn = 0;
|
|
if (validcardevent.InOrOut == 1)
|
|
{
|
|
isIn = 1;
|
|
}
|
|
APIPersonService.getPersonInOut(validcardevent.ProjectId, validcardevent.IDCardNo, isIn, validcardevent.RecordDateTime.Value);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
responeData.code = 2;
|
|
responeData.message = "信息有误!";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
|
|
return responeData;
|
|
}
|
|
#endregion
|
|
|
|
#region 保存出入记录信息
|
|
/// <summary>
|
|
/// 保存出入记录信息
|
|
/// </summary>
|
|
/// <param name="facerecord">出入记录信息</param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public Model.ResponeData SaveEmployInOutRecord([FromBody] Model.t_d_facerecordItem facerecord)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
if (facerecord != null)
|
|
{
|
|
///// 根据出入记录 写入考勤记录
|
|
facerecord.IDCardNo = facerecord.EmployNO;
|
|
DoorServerService.InsertEmployInOutRecord(facerecord);
|
|
}
|
|
else
|
|
{
|
|
responeData.code = 2;
|
|
responeData.message = "信息有误!";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
|
|
return responeData;
|
|
}
|
|
#endregion
|
|
|
|
#region 获取门禁人员考勤统计
|
|
/// <summary>
|
|
/// 获取人员信息出入场记录
|
|
/// </summary>
|
|
/// <param name="projectId"></param>
|
|
/// <param name="startDate"></param>
|
|
/// <param name="endDate"></param>
|
|
/// <returns></returns>
|
|
public Model.ResponeData getInOutstatistics(string projectId, DateTime startDate, DateTime endDate)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
string unitId = null;
|
|
string postId = null;
|
|
responeData.data = Funs.DB.spInOutManHoursReport(projectId, unitId, postId, startDate, endDate).ToList();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
return responeData;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="projectId"></param>
|
|
/// <param name="unitId"></param>
|
|
/// <param name="startDate"></param>
|
|
/// <param name="endDate"></param>
|
|
/// <returns></returns>
|
|
public Model.ResponeData getUnitSumInOutstatistics(string projectId, string unitId, DateTime startDate, DateTime endDate)
|
|
{
|
|
var responeData = new Model.ResponeData();
|
|
try
|
|
{
|
|
string postId = null;
|
|
var getData = Funs.DB.spInOutManHoursReport(projectId, unitId, postId, startDate, endDate).ToList();
|
|
responeData.data = getData.Sum(x => x.ManCountSum);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
responeData.code = 0;
|
|
responeData.message = ex.Message;
|
|
}
|
|
return responeData;
|
|
}
|
|
#endregion
|
|
}
|
|
}
|