CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/HSSE/SitePerson/PersonInOutService.cs

179 lines
8.0 KiB
C#
Raw Normal View History

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);
}
2021-04-30 10:28:37 +08:00
/// <summary>
/// 插入当日出入记录表
/// </summary>
/// <param name="PersonInOut"></param>
public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOutNow PersonInOut)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
2021-04-30 10:28:37 +08:00
{
var getNow = db.SitePerson_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == PersonInOut.PersonInOutId);
if (getNow == null)
2021-04-30 10:28:37 +08:00
{
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 getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId);
if (getPUnit.IsSynchro == true)
2021-04-30 10:28:37 +08:00
{
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",
};
2022-09-28 21:21:59 +08:00
db.RealName_PersonInOutNow.InsertOnSubmit(newR);
db.SubmitChanges();
}
}
2021-04-30 10:28:37 +08:00
}
}
}
/// <summary>
/// 根据人员主键删除一个人员出入场记录
/// </summary>
/// <param name="personId"></param>
public static void DeletePersonInOutByPersonId(string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
2021-04-30 10:28:37 +08:00
{
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-04-30 10:28:37 +08:00
}
}
2021-08-26 16:55:27 +08:00
/// <summary>
/// 身份证号码发生变化时 修改实名制出入记录
/// </summary>
/// <param name="personId"></param>
public static void UpdateRealNameInOut(string personId, string oldCardNo, string newIdCardNo)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var personInOuts = from x in db.RealName_PersonInOutNow
2021-08-26 16:55:27 +08:00
where x.PersonId == personId && x.IdcardNumber == oldCardNo
select x;
if (personInOuts.Count() > 0)
2021-08-26 16:55:27 +08:00
{
foreach (var item in personInOuts)
{
item.IdcardNumber = newIdCardNo;
db.SubmitChanges();
}
2021-08-26 16:55:27 +08:00
}
}
}
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;
}
}
}