首页优化

This commit is contained in:
2025-03-18 11:56:52 +08:00
parent 8db8992061
commit 5fa3744594
2 changed files with 127 additions and 73 deletions
+76 -37
View File
@@ -16,49 +16,56 @@ namespace BLL
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<Model.PageDataPersonInOutItem> getSiteInOutList = new List<Model.PageDataPersonInOutItem>();
var getDayAll = from x in db.SitePerson_PersonInOutNow
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.Base_WorkPost on y.WorkPostId equals z.WorkPostId
where x.ProjectId == projectId
&& x.ChangeTime.Value.Year == dateValue.Year
&& x.ChangeTime.Value.Month == dateValue.Month
&& x.ChangeTime.Value.Day == dateValue.Day
select new { x.PersonId, x.ChangeTime, x.IsIn, z.PostType };
if (getDayAll.Any())
{
var getInMaxs = from x in getDayAll
group x by x.PersonId into g
select new Model.PageDataPersonInOutItem
{
PersonId = g.First().PersonId,
ChangeTime = g.Max(x => x.ChangeTime),
IsIn = g.First().IsIn,
PostType = g.First().PostType
};
if (getInMaxs.Any())
var startDate = dateValue.Date;
var endDate = startDate.AddDays(1);
var query =
from x in db.SitePerson_PersonInOutNow
where x.ChangeTime >= startDate && x.ChangeTime < endDate && x.ProjectId == projectId
group x by new { x.PersonId, x.ProjectId } into g
select new
{
g.Key.PersonId,
g.Key.ProjectId,
MaxChangeTime = g.Max(x => x.ChangeTime)
};
var finalQuery =
from record in query
join detail in db.SitePerson_PersonInOutNow
on new { record.PersonId, record.ProjectId, record.MaxChangeTime }
equals new { detail.PersonId, detail.ProjectId, MaxChangeTime = detail.ChangeTime }
join y in db.SitePerson_Person on record.PersonId equals y.PersonId
join z in db.Base_WorkPost on y.WorkPostId equals z.WorkPostId
where detail.IsIn == true
select new Model.PageDataPersonInOutItem
{
getSiteInOutList = getInMaxs.Where(x => x.IsIn == true).ToList();
}
}
return getSiteInOutList;
PersonId = record.PersonId,
ProjectId = record.ProjectId,
ChangeTime = record.MaxChangeTime,
IsIn = true,
PostType = z.PostType
};
return finalQuery.ToList();
}
}
public static List<Model.PageDataPersonInOutItem> getPersonNum(List<string> projectIds, DateTime dateValue)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
{
var startDate = dateValue.Date;
var endDate = startDate.AddDays(1);
List<Model.PageDataPersonInOutItem> getSiteInOutList = new List<Model.PageDataPersonInOutItem>();
/* List<Model.PageDataPersonInOutItem> getSiteInOutList = new List<Model.PageDataPersonInOutItem>();
var getDayAll = from x in db.SitePerson_PersonInOutNow
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.Base_WorkPost on y.WorkPostId equals z.WorkPostId
where projectIds.Contains(x.ProjectId)
&& x.ChangeTime >= startDate &&
where x.ChangeTime >= startDate &&
x.ChangeTime < endDate
select new { x.PersonId, x.ChangeTime, x.IsIn, z.PostType,x.ProjectId };
if (projectIds.Any())
{
getDayAll= getDayAll.Where(x => projectIds.Contains(x.ProjectId));
}
if (getDayAll.Any())
{
var getInMaxs = from x in getDayAll
@@ -71,12 +78,43 @@ namespace BLL
IsIn = g.First().IsIn,
PostType = g.First().PostType
};
if (getInMaxs.Any())
getSiteInOutList = getInMaxs.Where(x => x.IsIn == true).ToList();
}*/
var query =
from x in db.SitePerson_PersonInOutNow
where x.ChangeTime >= startDate && x.ChangeTime < endDate
group x by new { x.PersonId, x.ProjectId } into g
select new
{
getSiteInOutList = getInMaxs.Where(x => x.IsIn == true).ToList();
}
}
return getSiteInOutList;
g.Key.PersonId,
g.Key.ProjectId,
MaxChangeTime = g.Max(x => x.ChangeTime)
};
if (projectIds.Any())
{
query = query.Where(x => projectIds.Contains(x.ProjectId));
}
var finalQuery =
from record in query
join detail in db.SitePerson_PersonInOutNow
on new { record.PersonId, record.ProjectId, record.MaxChangeTime }
equals new { detail.PersonId, detail.ProjectId, MaxChangeTime = detail.ChangeTime }
join y in db.SitePerson_Person on record.PersonId equals y.PersonId
join z in db.Base_WorkPost on y.WorkPostId equals z.WorkPostId
where detail.IsIn == true
select new Model.PageDataPersonInOutItem
{
PersonId= record.PersonId,
ProjectId = record.ProjectId,
ChangeTime = record.MaxChangeTime,
IsIn = true,
PostType = z.PostType
};
return finalQuery.ToList();
}
}
@@ -210,16 +248,17 @@ namespace BLL
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
DateTime dt1 = dateValue.Date;
DateTime dt2= dateValue.Date.AddDays(1);
List<Model.PageDataPersonInOutItem> getSiteInOutList = new List<Model.PageDataPersonInOutItem>();
var getDayAll = from x in db.SitePerson_PersonInOutNow
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.Base_WorkPost on y.WorkPostId equals z.WorkPostId
where x.ChangeTime.Value.Year == dateValue.Year && x.ChangeTime.Value.Month == dateValue.Month
&& x.ChangeTime.Value.Day == dateValue.Day && pids.Contains(x.ProjectId)
where pids.Contains(x.ProjectId) && x.ChangeTime<= dt2 && x.ChangeTime>= dt1
select new { x.PersonId, x.ChangeTime, x.IsIn, z.PostType };
if (getDayAll.Any())
{
var getInMaxs = from x in getDayAll
var getInMaxs = from x in getDayAll.ToList()
group x by x.PersonId into g
select new Model.PageDataPersonInOutItem
{