1、项目级看板补充月计划完成情况和周计划完成情况

This commit is contained in:
2025-03-25 18:58:30 +08:00
parent 074fc70d96
commit f91524d293
11 changed files with 1837 additions and 1277 deletions
+255 -103
View File
@@ -107,6 +107,8 @@ namespace FineUIPro.Web.common
var treeTask = GetTreeAsync();
var personTask = GetPersonAsync();
var weekJdtjTask = GetWeekJDAsync();
var monthJdtjTask = GetMonthJDAsync();
var otherTasks = new List<Task>
{
BindSafetyStatisticsAsync(), // 安全统计模块
@@ -150,6 +152,9 @@ namespace FineUIPro.Web.common
Tree = await treeTask;
Person = await personTask;
WeekJdtjHtml = await weekJdtjTask;
MonthJdtjHtml = await monthJdtjTask;
}
}
@@ -466,9 +471,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetCompletedNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
return result;
});
}
@@ -478,9 +484,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetConstructionNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetConstructionNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetConstructionNum(ProjectId);
return result;
});
}
@@ -489,15 +496,16 @@ namespace FineUIPro.Web.common
/// </summary>
protected async Task<int> getEarlyWarningCounts()
{
return await Task.Run(() => {
int allCount = 0;
var getPersonQualitys = from x in Funs.DB.QualityAudit_PersonQuality
join y in Funs.DB.SitePerson_Person on x.PersonId equals y.PersonId
where x.LimitDate.HasValue && x.LimitDate < DateTime.Now && y.ProjectId == ProjectId
select x;
//// 预警人数
allCount = getPersonQualitys.Count();
return allCount;
return await Task.Run(() =>
{
int allCount = 0;
var getPersonQualitys = from x in Funs.DB.QualityAudit_PersonQuality
join y in Funs.DB.SitePerson_Person on x.PersonId equals y.PersonId
where x.LimitDate.HasValue && x.LimitDate < DateTime.Now && y.ProjectId == ProjectId
select x;
//// 预警人数
allCount = getPersonQualitys.Count();
return allCount;
});
}
@@ -507,9 +515,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetFinishedNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
return result;
});
}
@@ -519,17 +528,18 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetJxyjNum()
{
return await Task.Run(() => {
int result = 0;
//机具报验的到期提醒和过期提醒记录数加一起
////机具报验的到期提醒
//var num1 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && DateTime.Now < x.NextTestDate && x.ProjectId == ProjectId
// && ((DateTime)x.NextTestDate).AddDays(-15) < DateTime.Now).Count();
//过期提醒记录数
var num2 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && x.NextTestDate < DateTime.Now && x.ProjectId == ProjectId).Count();
//result = num1 + num2;
result = num2;
return result;
return await Task.Run(() =>
{
int result = 0;
//机具报验的到期提醒和过期提醒记录数加一起
////机具报验的到期提醒数
//var num1 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && DateTime.Now < x.NextTestDate && x.ProjectId == ProjectId
// && ((DateTime)x.NextTestDate).AddDays(-15) < DateTime.Now).Count();
//过期提醒记录数
var num2 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && x.NextTestDate < DateTime.Now && x.ProjectId == ProjectId).Count();
//result = num1 + num2;
result = num2;
return result;
});
}
@@ -539,9 +549,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetSuperCompletedNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
return result;
});
}
@@ -551,9 +562,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetSuperConstructionNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetSuperConstructionNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperConstructionNum(ProjectId);
return result;
});
}
@@ -563,9 +575,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetSuperFinishedNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
return result;
});
}
@@ -575,9 +588,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetSuperTrainPersonNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetSuperTrainPersonNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperTrainPersonNum(ProjectId);
return result;
});
}
@@ -587,9 +601,10 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> GetTrainPersonNum()
{
return await Task.Run(() => {
var result = Project_HSSEData_HSSEService.GetTrainPersonNum(ProjectId);
return result;
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetTrainPersonNum(ProjectId);
return result;
});
}
@@ -663,7 +678,7 @@ namespace FineUIPro.Web.common
protected int WrokCount0;
protected int WrokCount1;
protected int WrokCount2;
protected int WrokCount3;
protected int WrokCount3;
protected async Task getWork()
{
@@ -675,7 +690,7 @@ namespace FineUIPro.Web.common
var WrokCount1 = getWrokCount1();
var WrokCount2 = getWrokCount2();
var WrokCount3 = getWrokCount3();
await Task.WhenAll( AllWrokCount0, AllWrokCount1, AllWrokCount2, AllWrokCount3, WrokCount0, WrokCount1, WrokCount2, WrokCount3);
await Task.WhenAll(AllWrokCount0, AllWrokCount1, AllWrokCount2, AllWrokCount3, WrokCount0, WrokCount1, WrokCount2, WrokCount3);
this.AllWrokCount0 = await AllWrokCount0;
this.AllWrokCount1 = await AllWrokCount1;
this.AllWrokCount2 = await AllWrokCount2;
@@ -690,18 +705,18 @@ namespace FineUIPro.Web.common
{
var query = from lm in Funs.DB.License_LicenseManager
join lt in Funs.DB.Base_LicenseType on lm.LicenseTypeId equals lt.LicenseTypeId into ltJoin
from licenseType in ltJoin.DefaultIfEmpty()
select new LicenseDto
{
ProjectId= lm.ProjectId,
LicenseTypeName = licenseType.LicenseTypeName ?? "",
WorkStatesStr = lm.WorkStates == "1" ? "待开工" :
lm.WorkStates == "2" ? "作业中" :
lm.WorkStates == "3" ? "已关闭" :
lm.WorkStates == "-1" ? "已取消" : ""
};
join lt in Funs.DB.Base_LicenseType on lm.LicenseTypeId equals lt.LicenseTypeId into ltJoin
from licenseType in ltJoin.DefaultIfEmpty()
select new LicenseDto
{
ProjectId = lm.ProjectId,
LicenseTypeName = licenseType.LicenseTypeName ?? "",
WorkStatesStr = lm.WorkStates == "1" ? "待开工" :
lm.WorkStates == "2" ? "作业中" :
lm.WorkStates == "3" ? "已关闭" :
lm.WorkStates == "-1" ? "已取消" : ""
};
return query;
}
protected async Task<int> getAllCount()
@@ -709,38 +724,42 @@ namespace FineUIPro.Web.common
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId).ToList().Count;
return result;
}
protected async Task<int> getALLWrokCount0()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count;
return result;
});
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getALLWrokCount1()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getALLWrokCount2()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getALLWrokCount3()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId
&& x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId
&& x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证").ToList().Count;
return result;
});
}
@@ -755,31 +774,35 @@ namespace FineUIPro.Web.common
/// <returns></returns>
protected async Task<int> getWrokCount0()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
protected async Task<int> getWrokCount1()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
protected async Task<int> getWrokCount2()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
protected async Task<int> getWrokCount3()
{
return await Task.Run(() => {
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId
&& x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId
&& x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
#endregion
@@ -1118,6 +1141,7 @@ namespace FineUIPro.Web.common
}
});
}
protected async Task<string> GetTreeAsync()
{
return await Task.Run(() =>
@@ -1159,6 +1183,134 @@ namespace FineUIPro.Web.common
#endregion 线
#region
protected string WeekJdtjHtml;
//protected string WeekJdtjHead = "<div class=\"th-p\" >序号</div><div class=\"th-p\" >单位</div><div class=\"th-p\"><p>上周完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
protected string WeekJdtjHead = "<div class=\"th-p\" >单位</div><div class=\"th-p\"><p>上周完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
protected string MonthJdtjHtml;
//protected string MonthJdtjHead = "<div class=\"th-p\">序号</div><div class=\"th-p\">单位</div><div class=\"th-p\"><p>上月完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
protected string MonthJdtjHead = "<div class=\"th-p\">单位</div><div class=\"th-p\"><p>上月完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
/// <summary>
/// 周进度完成情况
/// </summary>
/// <returns></returns>
protected async Task<string> GetWeekJDAsync()
{
return await Task.Run(() =>
{
string weekGridHtml = string.Empty;
//获取当前时间所在周信息
var lastWeek = WeekPlanService.GetLastWeekPlan(this.CurrUser.LoginProjectId);
////根据当前时间获取上一个周计划信息
//var lastWeekItem = WeekItemService.GetWeekItemByDateNow(this.CurrUser.LoginProjectId);
if (lastWeek != null)
{
Model.SGGLDB db = Funs.DB;
//1、获取本项目周进度计划中所有责任单位Id
var units = (from x in db.JDGL_WeekPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.EndDate <= lastWeek.EndDate
orderby x.UnitId
select new { x.UnitId, y.UnitName }).Distinct().ToList();
//2、获取当前项目指定周所有计划
var allWeekPlans = (from x in db.JDGL_WeekPlan
where x.ProjectId == this.CurrUser.LoginProjectId && x.WeekNo == lastWeek.WeekNo
orderby x.UnitId
select x).ToList();
//3、获取当前项目所有周计划
var allPlans = (from x in db.JDGL_WeekPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.EndDate <= lastWeek.EndDate
orderby x.UnitId
select x).ToList();
StringBuilder sb = new StringBuilder();
int index = 1;
foreach (var unit in units)
{
double weekPlanNum = allWeekPlans.Where(x => x.UnitId == unit.UnitId).Count();
double weekPlanOkNum = allWeekPlans.Where(x => x.UnitId == unit.UnitId && x.IsOK == true).Count();
double weekRate = weekPlanNum > 0 ? Math.Round((weekPlanOkNum / weekPlanNum) * 100, 2) : 0;
double allWeekPlanNum = allPlans.Where(x => x.UnitId == unit.UnitId).Count();
double allWeekPlanOkNum = allPlans.Where(x => x.UnitId == unit.UnitId && x.IsOK == true).Count();
double allWeekRate = allWeekPlanNum > 0 ? Math.Round((allWeekPlanOkNum / allWeekPlanNum) * 100, 2) : 0;
sb.Append("<div class=\"row\">");
//sb.Append($"<div class=\"tr\" >{index}</div>");
sb.Append($"<div class=\"tr\" >{unit.UnitName}</div>");
sb.Append($"<div class=\"tr\" ><p><span>{weekPlanNum}</span><span>{weekPlanOkNum}</span><span>{weekRate}%</span></p></div>");
sb.Append($"<div class=\"tr\" ><p><span>{allWeekPlanNum}</span><span>{allWeekPlanOkNum}</span><span>{allWeekRate}%</span></p></div>");
sb.Append("</div>");
index++;
}
weekGridHtml = sb.ToString();
}
return weekGridHtml;
});
}
/// <summary>
/// 月进度完成情况
/// </summary>
/// <returns></returns>
protected async Task<string> GetMonthJDAsync()
{
return await Task.Run(() =>
{
string monthGridHtml = string.Empty;
//统计月份信息
DateTime months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-01");
if (DateTime.Now.Day < 26)
{
months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.AddMonths(-1).Month.ToString() + "-01");
}
Model.SGGLDB db = Funs.DB;
//1、获取本项目月进度计划中所有责任单位Id
var units = (from x in db.JDGL_MonthPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months
orderby x.UnitId
select new { x.UnitId, y.UnitName }).Distinct().ToList();
//2、获取当前项目指定月所有计划
var allMonthPlans = (from x in db.JDGL_MonthPlan
where x.ProjectId == this.CurrUser.LoginProjectId && x.Months == months
orderby x.UnitId
select x).ToList();
//3、获取当前项目所有月计划
var allPlans = (from x in db.JDGL_MonthPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months
orderby x.UnitId
select x).ToList();
StringBuilder sb = new StringBuilder();
int index = 1;
foreach (var unit in units)
{
double monthPlanNum = allMonthPlans.Where(x => x.UnitId == unit.UnitId).Count();
double monthPlanOkNum = allMonthPlans.Where(x => x.UnitId == unit.UnitId && x.RealDate != null).Count();
double monthRate = monthPlanNum > 0 ? Math.Round((monthPlanOkNum / monthPlanNum) * 100, 2) : 0;
double allMonthPlanNum = allPlans.Where(x => x.UnitId == unit.UnitId).Count();
double allMonthPlanOkNum = allPlans.Where(x => x.UnitId == unit.UnitId && x.RealDate != null).Count();
double allMonthRate = allMonthPlanNum > 0 ? Math.Round((allMonthPlanOkNum / allMonthPlanNum) * 100, 2) : 0;
sb.Append("<div class=\"row\">");
//sb.Append($"<div class=\"tr\" >{index}</div>");
sb.Append($"<div class=\"tr\" >{unit.UnitName}</div>");
sb.Append($"<div class=\"tr\" ><p><span>{monthPlanNum}</span><span>{monthPlanOkNum}</span><span>{monthRate}%</span></p></div>");
sb.Append($"<div class=\"tr\" ><p><span>{allMonthPlanNum}</span><span>{allMonthPlanOkNum}</span><span>{allMonthRate}%</span></p></div>");
sb.Append("</div>");
index++;
}
monthGridHtml = sb.ToString();
return monthGridHtml;
});
}
#endregion
#region
protected string Person
@@ -1277,20 +1429,20 @@ namespace FineUIPro.Web.common
+ "</div>";
}*/
var result = (from x in Funs.DB.License_LicenseManager
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into units
from unit in units.DefaultIfEmpty()
join z in Funs.DB.WBS_UnitWork on x.WorkAreaId equals z.UnitWorkId into areas
from area in areas.DefaultIfEmpty()
join w in Funs.DB.Base_LicenseType on x.LicenseTypeId equals w.LicenseTypeId
where x.ProjectId == ProjectId
select new
{
x.LicenseManagerCode,
WorkAreaName=area.UnitWorkName,
w.LicenseTypeName,
x.IsHighRisk,
unit.ShortUnitName
})
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into units
from unit in units.DefaultIfEmpty()
join z in Funs.DB.WBS_UnitWork on x.WorkAreaId equals z.UnitWorkId into areas
from area in areas.DefaultIfEmpty()
join w in Funs.DB.Base_LicenseType on x.LicenseTypeId equals w.LicenseTypeId
where x.ProjectId == ProjectId
select new
{
x.LicenseManagerCode,
WorkAreaName = area.UnitWorkName,
w.LicenseTypeName,
x.IsHighRisk,
unit.ShortUnitName
})
.AsEnumerable() // 后续操作在内存中进行
.Select(x => new
{
@@ -1299,7 +1451,7 @@ namespace FineUIPro.Web.common
x.LicenseTypeName,
GfxType = x.IsHighRisk == true ? "风险作业" : "非高风险",
ShortUnitName = x.ShortUnitName ?? ""
}).ToList();
}).ToList();
var sb = new StringBuilder();
foreach (var item in result)
{
@@ -1507,7 +1659,7 @@ namespace FineUIPro.Web.common
//总计
//计划值
//累计计划值
//累计实际值
//累计实际值
private async Task getCNEN()
{