From 8db8992061f4433287eaedc24995165f85f25312 Mon Sep 17 00:00:00 2001 From: fei550 <1420031550@qq.com> Date: Mon, 17 Mar 2025 18:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/CNCEC_SUBQHSE_WUHUAN/v17/.wsuo | Bin 201728 -> 204800 bytes .../v17/DocumentLayout.backup.json | 12 +- SGGL/FineUIPro.Web/common/mainProject2.aspx | 8 +- .../FineUIPro.Web/common/mainProject2.aspx.cs | 154 +++++++++++++----- SGGL/FineUIPro.Web/common/main_new.aspx.cs | 32 ++-- SGGL/Model/APIItem/HSSE/LicenseItem.cs | 8 + 6 files changed, 154 insertions(+), 60 deletions(-) diff --git a/.vs/CNCEC_SUBQHSE_WUHUAN/v17/.wsuo b/.vs/CNCEC_SUBQHSE_WUHUAN/v17/.wsuo index 64fed9207064bb651e2b528192d911c643b85b1b..65891f1185961b30b0275c5818c93cabb3cfa168 100644 GIT binary patch delta 4523 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
-
<%=getWrokCount0() %>/<%=getALLWrokCount0() %>
+
<%=WrokCount0 %>/<%=AllWrokCount0 %>
-
<%=getWrokCount1() %>/<%=getALLWrokCount1() %>
+
<%=WrokCount1 %>/<%=AllWrokCount1 %>
-
<%=getWrokCount2() %>/<%=getALLWrokCount2() %>
+
<%=WrokCount2 %>/<%=AllWrokCount2 %>
-
<%=getWrokCount3() %>/<%=getALLWrokCount3() %>
+
<%=WrokCount3 %>/<%=AllWrokCount3 %>
diff --git a/SGGL/FineUIPro.Web/common/mainProject2.aspx.cs b/SGGL/FineUIPro.Web/common/mainProject2.aspx.cs index 00b5d7d4..a22ff052 100644 --- a/SGGL/FineUIPro.Web/common/mainProject2.aspx.cs +++ b/SGGL/FineUIPro.Web/common/mainProject2.aspx.cs @@ -6,6 +6,7 @@ using Model; using Newtonsoft.Json; using NPOI.Util; using System; +using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; @@ -116,7 +117,7 @@ namespace FineUIPro.Web.common //风险预警 getHazard(), - + getWork(), //工程概况 getProjectInfo(), @@ -655,67 +656,131 @@ namespace FineUIPro.Web.common #endregion 风险预警 #region 作业许可 - - protected int getAllCount() + protected int AllWrokCount0; + protected int AllWrokCount1; + protected int AllWrokCount2; + protected int AllWrokCount3; + protected int WrokCount0; + protected int WrokCount1; + protected int WrokCount2; + protected int WrokCount3; + protected async Task getWork() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId).ToList().Count; + + var AllWrokCount0 = getALLWrokCount0(); + var AllWrokCount1 = getALLWrokCount1(); + var AllWrokCount2 = getALLWrokCount2(); + var AllWrokCount3 = getALLWrokCount3(); + var WrokCount0 = getWrokCount0(); + var WrokCount1 = getWrokCount1(); + var WrokCount2 = getWrokCount2(); + var WrokCount3 = getWrokCount3(); + await Task.WhenAll( AllWrokCount0, AllWrokCount1, AllWrokCount2, AllWrokCount3, WrokCount0, WrokCount1, WrokCount2, WrokCount3); + this.AllWrokCount0 = await AllWrokCount0; + this.AllWrokCount1 = await AllWrokCount1; + this.AllWrokCount2 = await AllWrokCount2; + this.AllWrokCount3 = await AllWrokCount3; + this.WrokCount0 = await WrokCount0; + this.WrokCount1 = await WrokCount1; + this.WrokCount2 = await WrokCount2; + this.WrokCount3 = await WrokCount3; + + } + protected IQueryable GetLicenseQuery() + { + 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" ? "已取消" : "" + }; + return query; + } + protected async Task getAllCount() + { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId).ToList().Count; return result; } + - protected int getALLWrokCount0() - { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count; + protected async Task getALLWrokCount0() + { + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count; return result; + }); } - protected int getALLWrokCount1() + protected async Task getALLWrokCount1() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count; + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count; return result; + }); } - protected int getALLWrokCount2() + protected async Task getALLWrokCount2() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count; + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count; return result; + }); } - protected int getALLWrokCount3() + protected async Task getALLWrokCount3() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId - && x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证").ToList().Count; + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId + && x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证").ToList().Count; return result; + }); } - protected int getTodayCount() + protected async Task getTodayCount() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.WorkStatesStr == "作业中").ToList().Count; + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.WorkStatesStr == "作业中").ToList().Count; return result; } /// /// 动火作业许可证 /// /// - protected int getWrokCount0() + protected async Task getWrokCount0() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; + }); } - protected int getWrokCount1() + protected async Task getWrokCount1() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; + }); } - protected int getWrokCount2() + protected async Task getWrokCount2() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; + return await Task.Run(() => { + var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; return result; + }); } - protected int getWrokCount3() + protected async Task getWrokCount3() { - var result = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId - && x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count; + 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 作业许可 @@ -1211,21 +1276,32 @@ namespace FineUIPro.Web.common returnHtml += "
" + item.LicenseManagerCode + "-" + shortUnitname + "-" + item.WorkAreaName + "-" + gfx + "-" + item.LicenseTypeName + "
"; }*/ - - var result = from x in Funs.DB.View_License_LicenseManager - join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into g - from z in g.DefaultIfEmpty() - where x.ProjectId == ProjectId - select new - { - x.LicenseManagerCode, - x.WorkAreaName, - x.LicenseTypeName, - GfxType = x.IsHighRisk == true ? "风险作业" : "非高风险", - ShortUnitName = z != null ? z.ShortUnitName : "", // 空值防护 - }; + 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 + }) + .AsEnumerable() // 后续操作在内存中进行 + .Select(x => new + { + x.LicenseManagerCode, + x.WorkAreaName, + x.LicenseTypeName, + GfxType = x.IsHighRisk == true ? "风险作业" : "非高风险", + ShortUnitName = x.ShortUnitName ?? "" + }).ToList(); var sb = new StringBuilder(); - foreach (var item in result.ToList()) + foreach (var item in result) { sb.AppendFormat("
{0}-{1}-{2}-{3}-{4}
", item.LicenseManagerCode, diff --git a/SGGL/FineUIPro.Web/common/main_new.aspx.cs b/SGGL/FineUIPro.Web/common/main_new.aspx.cs index 548dfe4c..9291f8f8 100644 --- a/SGGL/FineUIPro.Web/common/main_new.aspx.cs +++ b/SGGL/FineUIPro.Web/common/main_new.aspx.cs @@ -426,15 +426,21 @@ namespace FineUIPro.Web.common join y in db.Sys_Const on x.AccidentTypeId equals y.ConstValue where y.ConstText.Contains("未遂") select x; - foreach (var province in provinces) + var allProvinceProjectList = (from x in allProjects + join y in provinceDic on x.Province equals y.ProvinceCode + where provinces.Contains(y.CnShortName ) + select new { x,y.CnShortName}).ToList(); + var allProvinces= allProvinceProjectList.Select(x =>x.CnShortName ).Distinct().ToList(); + foreach (var province in allProvinces) { int accidentNum = 0; DateTime date = DateTime.Now; decimal money1 = 0, money2 = 0; - var projects = from x in allProjects - join y in provinceDic on x.Province equals y.ProvinceCode - where y.CnShortName == province - select x; + /* var projects = from x in allProjects + join y in provinceDic on x.Province equals y.ProvinceCode + where y.CnShortName == province + select x;*/ + var projects = allProvinceProjectList.Where(x => x.CnShortName == province); listdata.Add(projects.Count()); decimal progress = 0; if (projects.Any()) @@ -443,22 +449,22 @@ namespace FineUIPro.Web.common foreach (var item in projects) { //未遂事故 - var accidentListProject1 = accidentList1.Where(x => x.ProjectId == item.ProjectId); - var accidentListProject2 = accidentList2.Where(x => x.ProjectId == item.ProjectId); + var accidentListProject1 = accidentList1.Where(x => x.ProjectId == item.x.ProjectId); + var accidentListProject2 = accidentList2.Where(x => x.ProjectId == item.x.ProjectId); accidentNum = accidentListProject1.Count() + accidentListProject2.Count(); //时间 - if (item.StartDate != null && item.StartDate < date) + if (item.x.StartDate != null && item.x.StartDate < date) { - date = Convert.ToDateTime(item.StartDate); + date = Convert.ToDateTime(item.x.StartDate); } //合同额 - if (item.ConstructionMoney != null) + if (item.x.ConstructionMoney != null) { - money1 += item.ConstructionMoney.Value; + money1 += item.x.ConstructionMoney.Value; } - if (item.Progress != null) + if (item.x.Progress != null) { - progress = item.Progress.Value; + progress = item.x.Progress.Value; } } jd.Add("进度:" + progress.ToString("0.##") + "%"); diff --git a/SGGL/Model/APIItem/HSSE/LicenseItem.cs b/SGGL/Model/APIItem/HSSE/LicenseItem.cs index e520c709..3a45d871 100644 --- a/SGGL/Model/APIItem/HSSE/LicenseItem.cs +++ b/SGGL/Model/APIItem/HSSE/LicenseItem.cs @@ -68,4 +68,12 @@ namespace Model set; } } + + public class LicenseDto + { + public string ProjectId { get; set; } + public string WorkStates { get; set; } + public string LicenseTypeName { get; set; } + public string WorkStatesStr { get; set; } + } }