CNCEC_SUBQHSE_WUHUAN/SGGL/WebAPI/Controllers/DoorServerController.cs

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
}
}