This commit is contained in:
2025-03-24 14:21:22 +08:00
45 changed files with 5751 additions and 1519 deletions
+107 -32
View File
@@ -16,34 +16,108 @@ 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.Count() > 0)
{
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.Count() > 0)
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>();
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 >= 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
group x by new {x.PersonId,x.ProjectId} into g
select new Model.PageDataPersonInOutItem
{
PersonId = g.First().PersonId,
ProjectId = g.First().ProjectId,
ChangeTime = g.Max(x => x.ChangeTime),
IsIn = g.First().IsIn,
PostType = g.First().PostType
};
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
{
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();
}
}
#endregion
#region
@@ -150,7 +224,7 @@ namespace BLL
where 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.Count() > 0)
if (getDayAll.Any())
{
var getInMaxs = from x in getDayAll
group x by x.PersonId into g
@@ -161,7 +235,7 @@ namespace BLL
IsIn = g.First().IsIn,
PostType = g.First().PostType
};
if (getInMaxs.Count() > 0)
if (getInMaxs.Any())
{
getSiteInOutList = getInMaxs.Where(x => x.IsIn == true).ToList();
}
@@ -174,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.Count() > 0)
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
{
@@ -192,7 +267,7 @@ namespace BLL
IsIn = g.First().IsIn,
PostType = g.First().PostType
};
if (getInMaxs.Count() > 0)
if (getInMaxs.Any())
{
getSiteInOutList = getInMaxs.Where(x => x.IsIn == true).ToList();
}
+3
View File
@@ -1114,6 +1114,9 @@
<PackageReference Include="System.Numerics.Vectors">
<Version>4.5.0</Version>
</PackageReference>
<PackageReference Include="System.Runtime.Caching">
<Version>6.0.0</Version>
</PackageReference>
<PackageReference Include="System.Runtime.CompilerServices.Unsafe">
<Version>4.5.3</Version>
</PackageReference>
+1
View File
@@ -10,6 +10,7 @@ namespace BLL
/// 时间书签(用于筛选数据范围)修改日期 2024-10-19 18:55:14 由2023改成2020
/// </summary>
public static DateTime DtmarkTime = DateTime.Parse("2020-01-01");
public static int CacheMinutes = 10;
#region
/// <summary>
/// 系统管理员ID
+4 -4
View File
@@ -113,7 +113,7 @@ namespace BLL
{
foreach (var item in acceptanceItems)
{
tbodyStr.Append($"<tr><td>{index}</td><td>本人负责</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays : "")}</td></tr>");
tbodyStr.Append($"<tr><td>{index}</td><td>本人负责</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "")}</td></tr>");
index++;
}
}
@@ -123,7 +123,7 @@ namespace BLL
{
foreach (var item in userItems)
{
tbodyStr.Append($"<tr><td>{index}</td><td>本人发起</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays : "")}</td></tr>");
tbodyStr.Append($"<tr><td>{index}</td><td>本人发起</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "")}</td></tr>");
index++;
}
}
@@ -133,7 +133,7 @@ namespace BLL
{
foreach (var item in receiveItems)
{
tbodyStr.Append($"<tr><td>{index}</td><td>本人跟踪</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays : "")}</td></tr>");
tbodyStr.Append($"<tr><td>{index}</td><td>本人跟踪</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "")}</td></tr>");
index++;
}
}
@@ -143,7 +143,7 @@ namespace BLL
{
foreach (var item in csUserItems)
{
tbodyStr.Append($"<tr><td>{index}</td><td>抄送本人</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays : "")}</td></tr>");
tbodyStr.Append($"<tr><td>{index}</td><td>抄送本人</td><td>{item.UnitName}</td><td>{item.Detail}</td><td>{item.GJSXTypeName}</td><td>{item.UserName}</td><td>{item.User_AcceptanceUserName}</td><td>{item.CompleteDate.ToShortDateString()}</td><td>{(item.DateDiffDays > 0 ? item.DateDiffDays.ToString() : "")}</td></tr>");
index++;
}
}
+37 -14
View File
@@ -1,10 +1,11 @@
namespace BLL
{
using Model;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using Model;
using System;
using Newtonsoft.Json;
using System.Runtime.Caching;
public static class ProjectService
{
@@ -256,22 +257,44 @@
/// <returns></returns>
public static List<Model.Base_Project> GetAllProjectDropDownList(string[] pids = null)
{
if (pids == null)
string cacheKey = "allProjects";
var memoryCache = MemoryCache.Default;
if (memoryCache.Get(cacheKey) != null)
{
var list = (from x in Funs.DB.Base_Project
orderby x.ProjectCode descending
select x).ToList();
return list;
var result = (List<Model.Base_Project>)memoryCache.Get(cacheKey);
if (pids == null)
{
return result;
}
else
{
result = result.Where(e => pids.Contains(e.ProjectId)).ToList();
return result;
}
}
else
{
var list = (from x in Funs.DB.Base_Project
where pids.Contains(x.ProjectId)
orderby x.ProjectCode descending
select x).ToList();
return list;
}
var list = (from x in Funs.DB.Base_Project
where x.ProjectState == Const.ProjectState_1 || x.ProjectState == null
orderby x.ProjectCode descending
select x).ToList();
var policy = new CacheItemPolicy
{
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(Const.CacheMinutes),
};
memoryCache.Set(cacheKey, list, policy);
if (pids == null)
{
return list;
}
else
{
var result = list.Where(e => pids.Contains(e.ProjectId)).ToList();
return result;
}
}
}
+96
View File
@@ -67,5 +67,101 @@ namespace BLL
select x.Action_By).Distinct().OrderBy(x => x).ToList();
return list;
}
/// <summary>
/// 责任人pic下拉框
/// </summary>
/// <param name="projectId">项目id</param>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitPICDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
dropName.DataValueField = "string";
dropName.DataTextField = "string";
dropName.DataSource = GetPICDropDownList(projectId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 获取责任人pic下拉选项
/// </summary>
/// <param name="projectId">项目id</param>
/// <returns></returns>
public static List<string> GetPICDropDownList(string projectId)
{
var list = (from x in Funs.DB.Transfer_PunchlistFrom
where x.ProjectId == projectId
select x.PIC).Distinct().OrderBy(x => x).ToList();
return list;
}
/// <summary>
/// 责任人-五环/PIC-WUH下拉框
/// </summary>
/// <param name="projectId">项目id</param>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitWUHPICDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
dropName.DataValueField = "string";
dropName.DataTextField = "string";
dropName.DataSource = GetWUHPICDropDownList(projectId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 获取责任人-五环/PIC-WUH下拉选项
/// </summary>
/// <param name="projectId">项目id</param>
/// <returns></returns>
public static List<string> GetWUHPICDropDownList(string projectId)
{
var list = (from x in Funs.DB.Transfer_PunchlistFrom
where x.ProjectId == projectId
select x.PIC_WUH).Distinct().OrderBy(x => x).ToList();
return list;
}
/// <summary>
/// disc下拉框
/// </summary>
/// <param name="projectId">项目id</param>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitDiscDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
{
dropName.DataValueField = "string";
dropName.DataTextField = "string";
dropName.DataSource = GetDiscDropDownList(projectId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 获取disc下拉选项
/// </summary>
/// <param name="projectId">项目id</param>
/// <returns></returns>
public static List<string> GetDiscDropDownList(string projectId)
{
var list = (from x in Funs.DB.Transfer_PunchlistFrom
where x.ProjectId == projectId
select x.Disc).Distinct().OrderBy(x => x).ToList();
return list;
}
}
}