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

504 lines
23 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using FineUIPro;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
namespace BLL
{
/// <summary>
/// 人员信息
/// </summary>
public static class PersonInOutService
{
public static Model.SGGLDB db = Funs.DB;
/// <summary>
/// 记录数
/// </summary>
public static int count
{
get;
set;
}
/// <summary>
/// 定义变量
/// </summary>
private static IQueryable<Model.SitePerson_PersonInOut> getDataLists = from x in db.SitePerson_PersonInOut
select x;
/// <summary>
/// 获取分页列表
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="name"></param>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="Grid1"></param>
/// <returns></returns>
public static IEnumerable getListData(string projectId, string unitId, string name, string inOutWay, DateTime? startDate, DateTime? endDate, Grid Grid1)
{
IQueryable<Model.SitePerson_PersonInOut> getDataList = getDataLists.Where(x => x.ProjectId == projectId && (inOutWay == "0" || x.InOutWay == inOutWay));
if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null)
{
getDataList = getDataList.Where(e => e.UnitId == unitId);
}
if (!string.IsNullOrEmpty(name))
{
getDataList = getDataList.Where(e => e.PersonName.Contains(name));
}
if (startDate.HasValue)
{
getDataList = getDataList.Where(e => e.ChangeTime >= startDate);
}
if (endDate.HasValue)
{
getDataList = getDataList.Where(e => e.ChangeTime <= endDate);
}
count = getDataList.Count();
if (count == 0)
{
return null;
}
getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
return from x in getDataList
select new
{
x.PersonInOutId,
x.ProjectId,
x.UnitId,
x.PostType,
x.WorkPostId,
x.PersonId,
x.IsIn,
IsInName = (x.IsIn ==true ? "进门" : "出门"),
x.ChangeTime,
x.UnitName,
x.WorkPostName,
x.WorkAreaId,
x.WorkAreaName,
x.PersonName,
x.IdentityCard,
x.InOutWay,
x.OldID,
x.Address,
x.Remark,
x.InCount,
x.OutCount,
x.TotalCount,
};
}
/// <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);
}
#region
/// <summary>
/// 人员出入场
/// </summary>
/// <param name="projectId"></param>w
/// <param name="idCard"></param>
/// <param name="isIn"></param>
/// <param name="changeTime"></param>
public static void AddPersonInOut(Model.SitePerson_PersonInOut personInOut)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.SitePerson_PersonInOut newPersonInOut = new Model.SitePerson_PersonInOut
{
PersonInOutId = SQLHelper.GetNewID(),
IsIn = personInOut.IsIn ?? true,
ChangeTime = personInOut.ChangeTime,
InOutWay = personInOut.InOutWay ?? Const.InOutWay_Other,
WorkAreaId = personInOut.WorkAreaId,
WorkAreaName = personInOut.WorkAreaName,
OldID = personInOut.OldID,
Address=personInOut.Address,
Remark = personInOut.Remark,
};
Model.SitePerson_Person getPerson = new Model.SitePerson_Person();
if (!string.IsNullOrEmpty(personInOut.PersonId))
{
getPerson = PersonService.GetPersonById(personInOut.PersonId);
}
if (getPerson == null || string.IsNullOrEmpty(getPerson.PersonId))
{
getPerson = PersonService.GetPersonByIdentityCard(personInOut.ProjectId, personInOut.IdentityCard);
}
if (getPerson != null && !string.IsNullOrEmpty(getPerson.PersonId))
{
newPersonInOut.ProjectId = getPerson.ProjectId;
newPersonInOut.PersonId = getPerson.PersonId;
newPersonInOut.PersonName = getPerson.PersonName;
newPersonInOut.IdentityCard = getPerson.IdentityCard;
newPersonInOut.UnitId = getPerson.UnitId;
newPersonInOut.UnitName = UnitService.GetUnitNameByUnitId(getPerson.UnitId);
newPersonInOut.WorkPostId = getPerson.WorkPostId;
if (!string.IsNullOrEmpty(getPerson.WorkPostId))
{
var getWorkPost = WorkPostService.GetWorkPostById(getPerson.WorkPostId);
if (getWorkPost != null)
{
newPersonInOut.WorkPostName = getWorkPost.WorkPostName;
newPersonInOut.PostType = getWorkPost.PostType;
}
}
if (string.IsNullOrEmpty(newPersonInOut.WorkAreaName) && !string.IsNullOrEmpty(newPersonInOut.WorkAreaId))
{
newPersonInOut.WorkAreaName = UnitWorkService.GetUnitWorkName(newPersonInOut.WorkAreaId);
}
db.SitePerson_PersonInOut.InsertOnSubmit(newPersonInOut);
db.SubmitChanges();
//// 人员考勤上下班
DoorServerService.InsertEmployInOutRecord(newPersonInOut);
//// 插入当日记录表
/// 监理 业主 不进入
var getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId);
if (getPUnit.IsSynchro == true && (!getPerson.OutTime.HasValue || getPerson.OutTime > DateTime.Now))
{
PersonInOutService.InsertPersonInOutNowNow(newPersonInOut);
}
}
}
}
public static void AddPersonInOut(List<Model.SitePerson_PersonInOut> personInOuts)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
db.SitePerson_PersonInOut.InsertAllOnSubmit(personInOuts);
db.SubmitChanges();
//// 人员考勤上下班
DoorServerService.InsertEmployInOutRecord(personInOuts);
//// 插入当日记录表
/// 监理 业主 不进入
///
foreach (var newPersonInOut in personInOuts)
{
var getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId);
if (getPUnit.IsSynchro == true)
{
PersonInOutService.InsertPersonInOutNowNow(newPersonInOut);
}
}
}
}
#endregion
#region
/// <summary>
/// 插入当日出入记录表
/// </summary>
/// <param name="PersonInOut"></param>
public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOut PersonInOut)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
string proCode = ProjectService.GetContractNoByProjectId(PersonInOut.ProjectId);
var getRealNameP = db.RealName_Project.FirstOrDefault(x => x.ProCode == proCode);
if (getRealNameP != null && PersonInOut.ChangeTime.HasValue)
{
var getNow = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == PersonInOut.PersonInOutId);
if (getNow == null)
{
int hour = PersonInOut.ChangeTime.Value.Hour;
bool isIn = PersonInOut.IsIn ?? true;
DateTime date = PersonInOut.ChangeTime.Value;
var getMorning = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonId == PersonInOut.PersonId
&& ((x.ChangeTime.Value.Hour < 12 && hour < 12) || (x.ChangeTime.Value.Hour >= 12 && hour >= 12))
&& x.ChangeTime >= date.Date && x.ChangeTime.Value < date.Date.AddDays(1)
&& ((x.IsIn == true && x.ChangeTime < date) || (x.IsIn == false && x.ChangeTime > date)));
if (getMorning == null)
{
Model.RealName_PersonInOutNow newR = new Model.RealName_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 = proCode,
Name = PersonInOut.PersonName,
IdcardType = "SHENFEN_ZHENGJIAN",
IdcardNumber = PersonInOut.IdentityCard,
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();
}
}
}
#endregion
/// <summary>
/// 插入当日出入记录表
/// </summary>
/// <param name="PersonInOut"></param>
public static void InsertPersonInOutNowNow(Model.SitePerson_PersonInOutNow PersonInOut)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
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 getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId);
if (getPUnit.IsSynchro == true)
{
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();
}
}
}
}
}
#region
/// <summary>
/// 更新人员出入记录
/// </summary>
/// <param name="person">人员实体</param>
public static void UpdatePersonInfo(Model.SitePerson_PersonInOut personInOut)
{
Model.SGGLDB db = Funs.DB;
var getPersonInOut = db.SitePerson_PersonInOut.FirstOrDefault(x => x.PersonInOutId == personInOut.PersonInOutId);
if (getPersonInOut != null)
{
getPersonInOut.IsIn = personInOut.IsIn ?? true;
getPersonInOut.ChangeTime = personInOut.ChangeTime;
getPersonInOut.InOutWay = personInOut.InOutWay ?? Const.InOutWay_Other;
getPersonInOut.WorkAreaId = personInOut.WorkAreaId;
getPersonInOut.WorkAreaName = personInOut.WorkAreaName;
getPersonInOut.OldID = personInOut.OldID;
getPersonInOut.Address = personInOut.Address;
getPersonInOut.Remark = personInOut.Remark;
Model.SitePerson_Person getPerson = new Model.SitePerson_Person();
if (!string.IsNullOrEmpty(personInOut.PersonId))
{
getPerson = PersonService.GetPersonById(personInOut.PersonId);
}
if (getPerson == null)
{
getPerson = PersonService.GetPersonByIdentityCard(personInOut.ProjectId, personInOut.IdentityCard);
}
if (getPerson != null)
{
getPersonInOut.ProjectId = getPerson.ProjectId;
getPersonInOut.PersonId = getPerson.PersonId;
getPersonInOut.PersonName = getPerson.PersonName;
getPersonInOut.IdentityCard = getPerson.IdentityCard;
getPersonInOut.UnitId = getPerson.UnitId;
getPersonInOut.UnitName = UnitService.GetUnitNameByUnitId(getPerson.UnitId);
getPersonInOut.WorkPostId = getPerson.WorkPostId;
if (!string.IsNullOrEmpty(getPerson.WorkPostId))
{
var getWorkPost = WorkPostService.GetWorkPostById(getPerson.WorkPostId);
if (getWorkPost != null)
{
getPersonInOut.WorkPostName = getWorkPost.WorkPostName;
getPersonInOut.PostType = getWorkPost.PostType;
}
}
if (string.IsNullOrEmpty(getPersonInOut.WorkAreaName) && !string.IsNullOrEmpty(getPersonInOut.WorkAreaId))
{
getPersonInOut.WorkAreaName = UnitWorkService.GetUnitWorkName(getPersonInOut.WorkAreaId);
}
if (string.IsNullOrEmpty(getPersonInOut.WorkAreaId) && !string.IsNullOrEmpty(getPersonInOut.WorkAreaName))
{
getPersonInOut.WorkAreaId = UnitWorkService.getWorkAreaIdByWorkAreaName(getPersonInOut.ProjectId, getPersonInOut.WorkAreaName);
}
db.SubmitChanges();
}
}
}
#endregion
/// <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();
}
}
/// <summary>
/// 根据人员主键删除一个人员出入场记录
/// </summary>
/// <param name="personId"></param>
public static void DeletePersonInOutById(string id)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var realName = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == id);
if (realName != null)
{
db.RealName_PersonInOutNow.DeleteOnSubmit(realName);
db.SubmitChanges();
}
var personInOutNow = db.SitePerson_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == id);
if (personInOutNow != null)
{
db.SitePerson_PersonInOutNow.DeleteOnSubmit(personInOutNow);
db.SubmitChanges();
}
var personInOut = db.SitePerson_PersonInOut.FirstOrDefault(x => x.PersonInOutId == id);
if (personInOut != null)
{
db.SitePerson_PersonInOut.DeleteOnSubmit(personInOut);
db.SubmitChanges();
}
}
}
/// <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();
}
}
}
/// <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;
}
}
}