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

622 lines
31 KiB
C#
Raw Permalink 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 Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
/// <summary>
/// 人员信息
/// </summary>
public static class PersonInOutService
{
/// <summary>
/// 记录数
/// </summary>
public static int count
{
get;
set;
}
/// <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 idCard, string inOutWay, DateTime? startDate, DateTime? endDate, Grid Grid1)
{
IQueryable<Model.SitePerson_PersonInOut> getDataList = from x in Funs.DB.SitePerson_PersonInOut select x;
getDataList = getDataList.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 (!string.IsNullOrEmpty(idCard))
{
getDataList = getDataList.Where(e => e.IdentityCard.Contains(idCard));
}
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 db1 = 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.IdentityCard))
{
getPerson = SitePerson_PersonService.GetSitePersonByProjectIdIdentityCard(personInOut.ProjectId, personInOut.IdentityCard);
}
if (getPerson == null || string.IsNullOrEmpty(getPerson.PersonId))
{
getPerson = SitePerson_PersonService.GetSitePersonByProjectIdPersonId(personInOut.ProjectId, personInOut.PersonId);
}
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);
}
db1.SitePerson_PersonInOut.InsertOnSubmit(newPersonInOut);
db1.SubmitChanges();
if (!getPerson.OutTime.HasValue || getPerson.OutTime > DateTime.Now)
{
//// 插入当日记录表
PersonInOutService.InsertPersonInOutNowNow(newPersonInOut);
}
}
}
}
public static void AddPersonInOut(List<Model.SitePerson_PersonInOut> personInOutList)
{
using (Model.SGGLDB db1 = new Model.SGGLDB(Funs.ConnString))
{
List<string> personIds = new List<string>();
List<SitePerson_PersonInOut> newPersonInOutList = new List<SitePerson_PersonInOut>();
List<SitePerson_PersonInOut> needInsertPersonInOutList = new List<SitePerson_PersonInOut>();
foreach (var personInOut in personInOutList)
{
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,
IdentityCard = personInOut.IdentityCard,
OldID = personInOut.OldID,
Address = personInOut.Address,
Remark = personInOut.Remark,
};
if (!string.IsNullOrEmpty(personInOut.PersonId))
{
personIds.Add(personInOut.PersonId);
}
if (!string.IsNullOrEmpty(personInOut.IdentityCard))
{
personIds.Add(personInOut.IdentityCard);
}
newPersonInOutList.Add(newPersonInOut);
}
List<Model.SitePerson_Person> person_Peoples = new List<Model.SitePerson_Person>();
person_Peoples.AddRange(db1.SitePerson_Person.Where(x => x.ProjectId == personInOutList[0].ProjectId && personIds.Contains(x.PersonId)).ToList());
person_Peoples.AddRange(db1.SitePerson_Person.Where(x => x.ProjectId == personInOutList[0].ProjectId && personIds.Contains(x.IdentityCard)).ToList());
foreach (var newPersonInOut in newPersonInOutList)
{
Model.SitePerson_Person getPerson = new Model.SitePerson_Person();
getPerson = person_Peoples.FirstOrDefault(x => x.PersonId == newPersonInOut.PersonId || x.IdentityCard == newPersonInOut.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);
}
}
if (getPerson!=null && (!getPerson.OutTime.HasValue || getPerson.OutTime > DateTime.Now))
{
//// 插入当日记录表
needInsertPersonInOutList.Add(newPersonInOut);
}
}
db1.SitePerson_PersonInOut.InsertAllOnSubmit(newPersonInOutList);
db1.SubmitChanges();
if (needInsertPersonInOutList.Count>0)
{
//// 插入当日记录表
PersonInOutService.InsertPersonInOutNowNow(needInsertPersonInOutList);
}
}
}
#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))
{
Model.SitePerson_PersonInOutNow newPersonInOut = new Model.SitePerson_PersonInOutNow
{
PersonInOutId = PersonInOut.PersonInOutId,
ProjectId = PersonInOut.ProjectId,
UnitId = PersonInOut.UnitId,
UnitName = PersonInOut.UnitName,
PersonId = PersonInOut.PersonId,
PersonName = PersonInOut.PersonName,
IsIn = PersonInOut.IsIn,
ChangeTime = PersonInOut.ChangeTime,
WorkPostId = PersonInOut.WorkPostId,
WorkPostName = PersonInOut.WorkPostName,
PostType = PersonInOut.PostType,
Name = PersonInOut.PersonName,
IdentityCard = PersonInOut.IdentityCard,
IdcardNumber = PersonInOut.IdentityCard,
CheckType = "ZHENGCHANG_KAOQINLEIBIE",
CheckWay = "FACE_FANGSHI",
InOutWay = PersonInOut.InOutWay,
Address = PersonInOut.Address,
Remark = PersonInOut.Remark,
};
db.SitePerson_PersonInOutNow.InsertOnSubmit(newPersonInOut);
db.SubmitChanges();
/// 监理 业主 不进入
var getPUnit = db.Project_ProjectUnit.FirstOrDefault(x => x.ProjectId == newPersonInOut.ProjectId && x.UnitId == newPersonInOut.UnitId);
if (getPUnit.UnitType != Const.ProjectUnitType_3 && getPUnit.UnitType != Const.ProjectUnitType_4 && getPUnit.IsSynchro == true)
{
string proCode = ProjectService.GetContractNoByProjectId(newPersonInOut.ProjectId);
var getRealNameP = db.RealName_Project.FirstOrDefault(x => x.ProCode == proCode);
if (getRealNameP != null && newPersonInOut.ChangeTime.HasValue)
{
var getNow = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == newPersonInOut.PersonInOutId);
if (getNow == null)
{
int hour = newPersonInOut.ChangeTime.Value.Hour;
bool isIn = newPersonInOut.IsIn ?? true;
DateTime date = newPersonInOut.ChangeTime.Value;
var getMorning = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonId == newPersonInOut.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 = newPersonInOut.PersonInOutId,
ProjectId = newPersonInOut.ProjectId,
UnitId = newPersonInOut.UnitId,
PersonId = newPersonInOut.PersonId,
IsIn = newPersonInOut.IsIn,
ChangeTime = newPersonInOut.ChangeTime,
WorkPostId = newPersonInOut.WorkPostId,
PostType = newPersonInOut.PostType,
ProCode = proCode,
Name = newPersonInOut.PersonName,
IdcardType = "SHENFEN_ZHENGJIAN",
IdcardNumber = newPersonInOut.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();
}
}
}
public static void InsertPersonInOutNowNow(List<Model.SitePerson_PersonInOut> PersonInOuts)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<string> unitIds = new List<string>();
List<SitePerson_PersonInOutNow> newPersonInOutList = new List<SitePerson_PersonInOutNow>();
foreach (var PersonInOut in PersonInOuts)
{
Model.SitePerson_PersonInOutNow newPersonInOut = new Model.SitePerson_PersonInOutNow
{
PersonInOutId = PersonInOut.PersonInOutId,
ProjectId = PersonInOut.ProjectId,
UnitId = PersonInOut.UnitId,
UnitName = PersonInOut.UnitName,
PersonId = PersonInOut.PersonId,
PersonName = PersonInOut.PersonName,
IsIn = PersonInOut.IsIn,
ChangeTime = PersonInOut.ChangeTime,
WorkPostId = PersonInOut.WorkPostId,
WorkPostName = PersonInOut.WorkPostName,
PostType = PersonInOut.PostType,
Name = PersonInOut.PersonName,
IdentityCard = PersonInOut.IdentityCard,
IdcardNumber = PersonInOut.IdentityCard,
CheckType = "ZHENGCHANG_KAOQINLEIBIE",
CheckWay = "FACE_FANGSHI",
InOutWay = PersonInOut.InOutWay,
Address = PersonInOut.Address,
Remark = PersonInOut.Remark,
};
unitIds.Add(PersonInOut.UnitId);
newPersonInOutList.Add(newPersonInOut);
}
db.SitePerson_PersonInOutNow.InsertAllOnSubmit(newPersonInOutList);
db.SubmitChanges();
string proCode = ProjectService.GetContractNoByProjectId(PersonInOuts[0].ProjectId);
var getRealNameP = db.RealName_Project.FirstOrDefault(x => x.ProCode == proCode);
/// 监理 业主 不进入
var getPUnitS = db.Project_ProjectUnit.Where(x => x.ProjectId == PersonInOuts[0].ProjectId && unitIds.Contains(x.UnitId)).ToList();
foreach (var newPersonInOut in newPersonInOutList)
{
var getPUnit = getPUnitS.FirstOrDefault(x => x.UnitId == newPersonInOut.UnitId);
if (getPUnit!=null&&getPUnit.UnitType != Const.ProjectUnitType_3 && getPUnit.UnitType != Const.ProjectUnitType_4 && getPUnit.IsSynchro == true)
{
if (getRealNameP != null && newPersonInOut.ChangeTime.HasValue)
{
var getNow = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonInOutId == newPersonInOut.PersonInOutId);
if (getNow == null)
{
int hour = newPersonInOut.ChangeTime.Value.Hour;
bool isIn = newPersonInOut.IsIn ?? true;
DateTime date = newPersonInOut.ChangeTime.Value;
var getMorning = db.RealName_PersonInOutNow.FirstOrDefault(x => x.PersonId == newPersonInOut.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 = newPersonInOut.PersonInOutId,
ProjectId = newPersonInOut.ProjectId,
UnitId = newPersonInOut.UnitId,
PersonId = newPersonInOut.PersonId,
IsIn = newPersonInOut.IsIn,
ChangeTime = newPersonInOut.ChangeTime,
WorkPostId = newPersonInOut.WorkPostId,
PostType = newPersonInOut.PostType,
ProCode = proCode,
Name = newPersonInOut.PersonName,
IdcardType = "SHENFEN_ZHENGJIAN",
IdcardNumber = newPersonInOut.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 <= PersonInOuts[0].ChangeTime.Value.AddHours(-48)
select x;
if (getLastList.Count() > 0)
{
db.SitePerson_PersonInOutNow.DeleteAllOnSubmit(getLastList);
db.SubmitChanges();
}
}
}
#endregion
#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 = SitePerson_PersonService.GetSitePersonByProjectIdPersonId(personInOut.ProjectId, personInOut.PersonId);
}
if (getPerson == null)
{
getPerson = SitePerson_PersonService.GetSitePersonByProjectIdIdentityCard(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, DateTime? startTime, DateTime? endTime, string projectId)
{
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,
};
if (witem == BLL.Const.WorkPost_Welder)
{
newWItem.EngineeringQuantity = (from x in db.HJGL_WeldJoint
join y in db.HJGL_WeldingDaily
on x.WeldingDailyId equals y.WeldingDailyId
where x.ProjectId == projectId && y.UnitId == uitem && y.WeldingDate >= startTime && y.WeldingDate <= endTime
select x.Size ?? 0).ToList().Sum();
}
reports.Add(newWItem);
}
}
return reports;
}
}
}