2021-04-30 10:28:37 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace BLL
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 人员信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static class PersonInOutService
|
|
|
|
|
{
|
|
|
|
|
public static Model.SGGLDB db = Funs.DB;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据主键获取人员出入场信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="PersonInOutId"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Model.SitePerson_PersonInOut GetPersonInOutById(string PersonInOutId)
|
|
|
|
|
{
|
|
|
|
|
return Funs.DB.SitePerson_PersonInOut.FirstOrDefault(e => e.PersonInOutId == PersonInOutId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据人员id 出入时间取记录
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="personId">人员id</param>
|
|
|
|
|
/// <param name="time">出入场时间</param>
|
|
|
|
|
/// <param name="isIn">出/入 true-入;false-出</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Model.SitePerson_PersonInOut GetPersonInOutByTimePersonId(string personId, DateTime ChangeTime, bool isIn)
|
|
|
|
|
{
|
|
|
|
|
return Funs.DB.SitePerson_PersonInOut.FirstOrDefault(x => x.PersonId == personId && x.ChangeTime == ChangeTime && x.IsIn == isIn);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///// <summary>
|
|
|
|
|
///// 增加人员出入场信息
|
|
|
|
|
///// </summary>
|
|
|
|
|
///// <param name="PersonInOut">人员实体</param>
|
|
|
|
|
//public static void AddPersonInOut(Model.SitePerson_PersonInOut PersonInOut)
|
|
|
|
|
//{
|
|
|
|
|
// Model.SGGLDB db = Funs.DB;
|
|
|
|
|
// string postType = null;
|
|
|
|
|
// string workpostId = null;
|
|
|
|
|
// var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == PersonInOut.PersonId);
|
|
|
|
|
// if (getPerson != null)
|
|
|
|
|
// {
|
|
|
|
|
// workpostId = getPerson.WorkPostId;
|
|
|
|
|
// var getWokPost = db.Base_WorkPost.FirstOrDefault(x => x.PostType == getPerson.WorkPostId);
|
|
|
|
|
// if (getWokPost != null)
|
|
|
|
|
// {
|
|
|
|
|
// postType = getWokPost.PostType;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// Model.SitePerson_PersonInOut newPersonInOut = new Model.SitePerson_PersonInOut
|
|
|
|
|
// {
|
|
|
|
|
// PersonInOutId = SQLHelper.GetNewID(typeof(Model.SitePerson_PersonInOut)),
|
|
|
|
|
// ProjectId = PersonInOut.ProjectId,
|
|
|
|
|
// UnitId = PersonInOut.UnitId,
|
|
|
|
|
// PersonId = PersonInOut.PersonId,
|
|
|
|
|
// IsIn = PersonInOut.IsIn,
|
|
|
|
|
// ChangeTime = PersonInOut.ChangeTime,
|
|
|
|
|
// WorkPostId = workpostId,
|
|
|
|
|
// PostType = postType,
|
|
|
|
|
// };
|
|
|
|
|
|
|
|
|
|
// db.SitePerson_PersonInOut.InsertOnSubmit(newPersonInOut);
|
|
|
|
|
// db.SubmitChanges();
|
|
|
|
|
// //// 插入当日记录表
|
|
|
|
|
// InsertPersonInOutNowNow(newPersonInOut);
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 插入当日出入记录表
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="PersonInOut"></param>
|
|
|
|
|
public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOutNow PersonInOut)
|
|
|
|
|
{
|
|
|
|
|
Model.SGGLDB db = Funs.DB;
|
|
|
|
|
var getNow = db.SitePerson_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == PersonInOut.PersonInOutId);
|
|
|
|
|
if (getNow == null)
|
|
|
|
|
{
|
|
|
|
|
Model.SitePerson_PersonInOutNow newPersonInOut = new Model.SitePerson_PersonInOutNow
|
|
|
|
|
{
|
|
|
|
|
PersonInOutId = PersonInOut.PersonInOutId,
|
|
|
|
|
ProjectId = PersonInOut.ProjectId,
|
|
|
|
|
UnitId = PersonInOut.UnitId,
|
|
|
|
|
PersonId = PersonInOut.PersonId,
|
|
|
|
|
IsIn = PersonInOut.IsIn,
|
|
|
|
|
ChangeTime = PersonInOut.ChangeTime,
|
|
|
|
|
WorkPostId = PersonInOut.WorkPostId,
|
|
|
|
|
PostType = PersonInOut.PostType,
|
|
|
|
|
ProCode = PersonInOut.ProCode,
|
|
|
|
|
Name = PersonInOut.Name,
|
|
|
|
|
IdcardType = PersonInOut.IdcardType ?? "SHENFEN_ZHENGJIAN",
|
|
|
|
|
IdcardNumber = PersonInOut.IdcardNumber,
|
|
|
|
|
CheckType = "ZHENGCHANG_KAOQINLEIBIE",
|
|
|
|
|
CheckWay = "FACE_FANGSHI",
|
|
|
|
|
};
|
|
|
|
|
db.SitePerson_PersonInOutNow.InsertOnSubmit(newPersonInOut);
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
|
|
|
|
|
var getRealNameP = db.RealName_Project.FirstOrDefault(x => x.ProCode == newPersonInOut.ProCode);
|
|
|
|
|
if (getRealNameP != null)
|
|
|
|
|
{
|
|
|
|
|
Model.RealName_PersonInOutNow newR = new Model.RealName_PersonInOutNow
|
|
|
|
|
{
|
|
|
|
|
PersonInOutId = newPersonInOut.PersonInOutId,
|
|
|
|
|
ProjectId = newPersonInOut.ProjectId,
|
|
|
|
|
UnitId = newPersonInOut.UnitId,
|
|
|
|
|
PersonId = newPersonInOut.PersonId,
|
|
|
|
|
IsIn = newPersonInOut.IsIn,
|
|
|
|
|
ChangeTime = newPersonInOut.ChangeTime,
|
|
|
|
|
WorkPostId = newPersonInOut.WorkPostId,
|
|
|
|
|
PostType = newPersonInOut.PostType,
|
|
|
|
|
ProCode = newPersonInOut.ProCode,
|
|
|
|
|
Name = newPersonInOut.Name,
|
|
|
|
|
IdcardType = newPersonInOut.IdcardType ?? "SHENFEN_ZHENGJIAN",
|
|
|
|
|
IdcardNumber = newPersonInOut.IdcardNumber,
|
|
|
|
|
CheckType = "ZHENGCHANG_KAOQINLEIBIE",
|
|
|
|
|
CheckWay = "FACE_FANGSHI",
|
|
|
|
|
};
|
|
|
|
|
db.RealName_PersonInOutNow.InsertOnSubmit(newR);
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var getLastList = from x in db.SitePerson_PersonInOutNow
|
|
|
|
|
where x.ChangeTime <= PersonInOut.ChangeTime.Value.AddHours(-48)
|
|
|
|
|
select x;
|
|
|
|
|
if (getLastList.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
db.SitePerson_PersonInOutNow.DeleteAllOnSubmit(getLastList);
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据人员主键删除一个人员出入场记录
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="personId"></param>
|
|
|
|
|
public static void DeletePersonInOutByPersonId(string personId)
|
|
|
|
|
{
|
|
|
|
|
Model.SGGLDB db = Funs.DB;
|
|
|
|
|
var personInOut = from x in db.SitePerson_PersonInOut where x.PersonId == personId select x;
|
|
|
|
|
if (personInOut.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
db.SitePerson_PersonInOut.DeleteAllOnSubmit(personInOut);
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
}
|
|
|
|
|
var rpersonInOut = from x in db.RealName_PersonInOutNow where x.PersonId == personId select x;
|
|
|
|
|
if (rpersonInOut.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
db.RealName_PersonInOutNow.DeleteAllOnSubmit(rpersonInOut);
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-08-26 16:55:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 身份证号码发生变化时 修改实名制出入记录
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="personId"></param>
|
|
|
|
|
public static void UpdateRealNameInOut(string personId, string oldCardNo, string newIdCardNo)
|
|
|
|
|
{
|
|
|
|
|
Model.SGGLDB db = Funs.DB;
|
|
|
|
|
var personInOuts = from x in db.RealName_PersonInOutNow
|
|
|
|
|
where x.PersonId == personId && x.IdcardNumber == oldCardNo
|
|
|
|
|
select x;
|
|
|
|
|
if (personInOuts.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in personInOuts)
|
|
|
|
|
{
|
|
|
|
|
item.IdcardNumber = newIdCardNo;
|
|
|
|
|
db.SubmitChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-30 10:28:37 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取出入记录人工时
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static List<Model.WorkPostStatisticItem> getWorkPostStatistic(List<Model.SitePerson_PersonInOut> getAllPersonInOutList)
|
|
|
|
|
{
|
|
|
|
|
Model.SGGLDB db = Funs.DB;
|
|
|
|
|
List<Model.WorkPostStatisticItem> reports = new List<Model.WorkPostStatisticItem>();
|
|
|
|
|
|
|
|
|
|
var getUnitIdList = getAllPersonInOutList.Select(x => x.UnitId).Distinct();
|
|
|
|
|
foreach (var uitem in getUnitIdList)
|
|
|
|
|
{
|
|
|
|
|
var getU = getAllPersonInOutList.Where(x => x.UnitId == uitem);
|
|
|
|
|
var getWorkPostIdList = getU.Select(x => x.WorkPostId).Distinct();
|
|
|
|
|
foreach (var witem in getWorkPostIdList)
|
|
|
|
|
{
|
|
|
|
|
var getW = getU.Where(x => x.WorkPostId == witem);
|
|
|
|
|
Model.WorkPostStatisticItem newWItem = new Model.WorkPostStatisticItem
|
|
|
|
|
{
|
|
|
|
|
ID = SQLHelper.GetNewID(),
|
|
|
|
|
UnitId = uitem,
|
|
|
|
|
UnitName = UnitService.GetUnitNameByUnitId(uitem),
|
|
|
|
|
WorkPostId = witem,
|
|
|
|
|
WorkPostName = WorkPostService.getWorkPostNameById(witem),
|
|
|
|
|
PersonCount = getW.Select(x => x.PersonId).Distinct().Count(),
|
|
|
|
|
UnitWorkPostID = uitem + "|" + witem,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
reports.Add(newWItem);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return reports;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|