From 52dec49b5e414184c4dde7b77c6d952c3f6d557b Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Wed, 2 Jul 2025 11:15:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=84=8A=E6=8E=A5=E8=BE=BE=E5=9B=A0=E6=95=B0?= =?UTF-8?q?=E3=80=81=E5=AE=8C=E6=88=90=E8=BE=BE=E5=9B=A0=E6=95=B0=E6=B1=87?= =?UTF-8?q?=E6=80=BB=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BLL/ZHGL/DataSync/HJGLData_HJGLService.cs | 222 ++++++++++++++++-- .../Project_HJGLData_DefectService.cs | 3 +- .../Project_HJGLData_HJGLService.cs | 29 --- SGGL/FineUIPro.Web/common/main_new1.aspx | 6 +- SGGL/FineUIPro.Web/common/main_new1.aspx.cs | 74 ++++++ 5 files changed, 277 insertions(+), 57 deletions(-) diff --git a/SGGL/BLL/ZHGL/DataSync/HJGLData_HJGLService.cs b/SGGL/BLL/ZHGL/DataSync/HJGLData_HJGLService.cs index 71747f51..32e913ce 100644 --- a/SGGL/BLL/ZHGL/DataSync/HJGLData_HJGLService.cs +++ b/SGGL/BLL/ZHGL/DataSync/HJGLData_HJGLService.cs @@ -1,4 +1,6 @@ -using FineUIPro; +using Aspose.Words.Lists; +using EmitMapper; +using FineUIPro; using Model; using Newtonsoft.Json; using NPOI.SS.Formula.Functions; @@ -319,6 +321,144 @@ namespace BLL if (thisUnit != null) thisUnitId = thisUnit.UnitId; var baseUnit = UnitService.GetUnitByUnitId(thisUnitId); + Project_HJGLData_DefectService.StatisticalAllProjectData(); + + //// 并行执行异步方法 + var welderNumTask = HJGLData_HJGLService.GetWelderNumAsync(); //获取焊工总数 + var dineInfoListTask = HJGLData_HJGLService.GetDineInfoAsync(); //获达因数信息 + var chCheckItemListTask = HJGLData_HJGLService.GetCHCheckItemAsync(); //获取焊接检查信息 + + // 等待所有异步方法执行完成 + await Task.WhenAll( + welderNumTask, + dineInfoListTask, + chCheckItemListTask + ); + + // 统一获取异步方法的返回值 + var welderNum = await welderNumTask; + var dineInfoList = await dineInfoListTask; + var chCheckItemList = await chCheckItemListTask; + + + var table = new HJGLData_HJGL + { + UnitId = thisUnitId, + CollCropCode = baseUnit.CollCropCode, + UnitName = baseUnit.UnitName, + ReportDate = DateTime.Now.Date, + WelderNum = welderNum.Count(), + TotalDineNum = Convert.ToInt32(dineInfoList.Sum(x => x.Size)), + CompleteDineNum = Convert.ToInt32(dineInfoList.Sum(x => x.DoneDin)), + TotalFilmNum = Convert.ToInt32(chCheckItemList.Sum(x => x.CHT_TotalFilm)), + OKFilmNum = Convert.ToInt32(chCheckItemList.Sum(x => x.CHT_PassFilm)), + CreateMan = Const.sysglyId, + CreateDate = DateTime.Now + }; + Project_HJGLData_HJGLService.DeleteProject_HJGLData_HJGLByDate(DateTime.Now.Date); + // 预先对 dineInfoList 和 chCheckItemList 按 ProjectId 进行分组 + var dineInfoDict = dineInfoList + .Where(x => BeUnderConstructionList.Contains(x.ProjectId)) + .GroupBy(x => x.ProjectId) + .ToDictionary(g => g.Key, g => new + { + TotalDineNum = g.Sum(x => x.Size), + CompleteDineNum = g.Sum(x => x.DoneDin) + }); + + var chCheckItemDict = chCheckItemList + .Where(x => BeUnderConstructionList.Contains(x.ProjectId)) + .GroupBy(x => x.ProjectId) + .ToDictionary(g => g.Key, g => new + { + TotalFilmNum = g.Sum(x => x.CHT_TotalFilm), + OKFilmNum = g.Sum(x => x.CHT_PassFilm) + }); + + foreach (var projectid in BeUnderConstructionList) + { + // 获取焊工数量 + int welderCount = welderNum.Count(x => x.ProjectId == projectid); + + // 获取达因信息 + var dineInfo = dineInfoDict.TryGetValue(projectid, out var dineData) + ? dineData + : new { TotalDineNum = (double?)0, CompleteDineNum = (double?)0 }; + + // 获取拍片信息 + var chCheckItem = chCheckItemDict.TryGetValue(projectid, out var checkData) + ? checkData + : new { TotalFilmNum = (int?)0, OKFilmNum = (int?)0 }; + + var projectCqmsData = new Project_HJGLData_HJGL() + { + Id = SQLHelper.GetNewID(), + ProjectId = projectid, + UnitId = thisUnitId, + CollCropCode = baseUnit.CollCropCode, + UnitName = baseUnit.UnitName, + ReportDate = DateTime.Now.Date, + WelderNum = welderCount, + TotalDineNum = Convert.ToInt32(dineInfo.TotalDineNum), + CompleteDineNum = Convert.ToInt32(dineInfo.CompleteDineNum), + TotalFilmNum = chCheckItem.TotalFilmNum, + OKFilmNum = chCheckItem.OKFilmNum, + }; + + Project_HJGLData_HJGLService.AddProject_HJGLData_HJGL(projectCqmsData); + } + + + if (IsReportByToday()) + { + table.Id = GetTodayData().Id; + table.State = Const.CNCEC_State_1; + UpdateHJGLData_HJGL(table); + } + else + { + table.Id = SQLHelper.GetNewID(); + table.State = Const.CNCEC_State_0; + + AddHJGLData_HJGL(table); + } + var mapper = ObjectMapperManager.DefaultInstance.GetMapper(); + var item = mapper.Map(table); + // 手动处理特殊字段 + item.ReportDate = table.ReportDate.Value.ToShortDateString(); + item.HJGLDataDefectItems = Project_HJGLData_DefectService.getTodayProject_HJGLData_Defect(); + var hJGLDataItems = new List(); + hJGLDataItems.Add(item); + + data.HJGLDataItems = hJGLDataItems; + return data; + + //var item = new HJGLDataItem(); + //item.CollCropCode = table.CollCropCode; + //item.CompleteDineNum = table.CompleteDineNum; + //item.Id = table.Id; + //item.OKFilmNum = table.OKFilmNum; + //item.ReportDate = table.ReportDate.Value.ToShortDateString(); + //item.TotalDineNum = table.TotalDineNum; + //item.TotalFilmNum = table.TotalFilmNum; + //item.UnitId = table.UnitId; + //item.WelderNum = table.WelderNum; + //item.HJGLDataDefectItems = Project_HJGLData_DefectService.getTodayProject_HJGLData_Defect(); + //var hJGLDataItems = new List(); + //hJGLDataItems.Add(item); + + //data.HJGLDataItems = hJGLDataItems; + //return data; + } + + public static async Task StatisticalDataAsyncold() + { + var data = new HJGLData(); + var thisUnitId = string.Empty; + var thisUnit = CommonService.GetIsThisUnit(); + if (thisUnit != null) thisUnitId = thisUnit.UnitId; + var baseUnit = UnitService.GetUnitByUnitId(thisUnitId); + Project_HJGLData_HJGLService.StatisticalAllProjectData(); Project_HJGLData_DefectService.StatisticalAllProjectData(); // 并行执行异步方法 @@ -507,20 +647,65 @@ namespace BLL /// 获取总达因数和完成达因数 /// /// - public static IEnumerable GetDineInfo() + public static List GetDineInfo() { - var result = (from x in Funs.DB.HJGL_FL_TotalQuantity - where BeUnderConstructionList.Contains(x.ProjectId) - group x by x.ProjectId into g - select new Model.WeldDineOutput() - { - ProjectId = g.Key, - Size = g.Sum(x => Convert.ToDouble(x.TotalWeldQuantity)), - DoneDin = g.Sum(x => Convert.ToDouble(x.TotalCompleted)) - }); + var result = new List(); + var getD1 = from x in Funs.DB.HJGL_FL_TotalQuantity + where BeUnderConstructionList.Contains(x.ProjectId) + select x; + var projectIds = getD1.Select(x => x.ProjectId).Distinct(); + foreach (var pro in projectIds) + { + double pTotalWeldQuantity = 0; + double pTotalCompleted = 0; + var proD1 = getD1.Where(x => x.ProjectId == pro); + foreach (var item in getD1) + { + var dAll = !string.IsNullOrWhiteSpace(item.TotalWeldQuantity) ? Convert.ToDouble(item.TotalWeldQuantity) : 0; + var dCompleted = !string.IsNullOrWhiteSpace(item.TotalCompleted) ? Convert.ToDouble(item.TotalCompleted) : 0; + pTotalWeldQuantity += dAll; + pTotalCompleted += dCompleted; + } + result.Add(new WeldDineOutput + { + ProjectId = pro, + Size = pTotalWeldQuantity, + DoneDin = pTotalCompleted + }); + } + + var differenceProjectIds = BeUnderConstructionList.Except(projectIds).ToList(); + foreach (var pro in differenceProjectIds) + { + double pTotalWeldQuantity = 0; + double pTotalCompleted = 0; + + var getD2 = (from x in Funs.DB.HJGL_FL_Data + where x.ProjectId == pro + orderby x.CompileDate descending + select x).FirstOrDefault(); + if (getD2 != null) + { + pTotalWeldQuantity = !string.IsNullOrWhiteSpace(getD2.TotalWeldQuantity) ? Convert.ToDouble(getD2.TotalWeldQuantity) : 0; + pTotalCompleted = !string.IsNullOrWhiteSpace(getD2.TotalCompleted) ? Convert.ToDouble(getD2.TotalCompleted) : 0; + } + + result.Add(new WeldDineOutput + { + ProjectId = pro, + Size = pTotalWeldQuantity, + DoneDin = pTotalCompleted + }); + } + return result; } - public static async Task> GetDineInfoAsync() + + /// + /// 获取总达因数和完成达因数 + /// + /// + public static async Task> GetDineInfoAsync() { return await Task.Run(GetDineInfo); } @@ -531,19 +716,6 @@ namespace BLL /// public static List GetCHCheckItem() { - //var result = (from x in Funs.DB.CH_CheckItem - // join y in Funs.DB.CH_Check on x.CHT_CheckID equals y.CHT_CheckID - // where BeUnderConstructionList.Contains(y.ProjectId) - // select new Model.CHCheckItemOutput() - // { - // Id = x.CHT_CheckItemID, - // ProjectId = y.ProjectId, - // UnitId = y.UnitId, - // CHT_TotalFilm = x.CHT_TotalFilm, - // CHT_PassFilm = x.CHT_PassFilm - // //UnitName = UnitService.getUnitNamesUnitIds(x.UnitIds), - // }).ToList(); - List list = new List(); var ndtLists = (from x in Funs.DB.ProcessControl_NondestructiveTest_New where BeUnderConstructionList.Contains(x.ProjectId) select x).ToList(); diff --git a/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_DefectService.cs b/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_DefectService.cs index 1ed462bf..bd4e7ba4 100644 --- a/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_DefectService.cs +++ b/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_DefectService.cs @@ -259,7 +259,8 @@ namespace BLL { var db = Funs.DB; - var projectids = ProjectService.GetProjectWorkList().Select(x => x.ProjectId).ToList(); + var projectids = HJGLData_HJGLService.BeUnderConstructionList; + //var projectids = ProjectService.GetProjectWorkList().Select(x => x.ProjectId).ToList(); var thisUnitId = string.Empty; var thisUnit = CommonService.GetIsThisUnit(); if (thisUnit != null) thisUnitId = thisUnit.UnitId; diff --git a/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_HJGLService.cs b/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_HJGLService.cs index a20ce277..a6cd814b 100644 --- a/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_HJGLService.cs +++ b/SGGL/BLL/ZHGL/DataSync/ProjectDataSync/Project_HJGLData_HJGLService.cs @@ -411,21 +411,6 @@ namespace BLL /// public static int GetTotalFilmNum(string projectid) { - //int result = Convert.ToInt32((from x in Funs.DB.CH_CheckItem - // join y in Funs.DB.CH_Check on x.CHT_CheckID equals y.CHT_CheckID - // where y.ProjectId == projectid - // select x.CHT_TotalFilm).ToList().Sum()); - - //int result = 0; - //var getD2 = (from x in Funs.DB.HJGL_FL_Data - // where x.ProjectId == projectid - // orderby x.CompileDate descending - // select x).FirstOrDefault(); - //if (getD2 != null) - //{ - // result = Funs.GetNewIntOrZero(getD2.OneTimeFilmAmount.Split('.')[0]); - //} - int result = Convert.ToInt32((from x in Funs.DB.ProcessControl_NondestructiveTest_New where x.ProjectId == projectid && x.ProfessionalName == "工艺管道" orderby x.CreateDate descending @@ -439,20 +424,6 @@ namespace BLL /// public static int GetOKFilmNum(string projectid) { - //int result = Convert.ToInt32((from x in Funs.DB.CH_CheckItem - // join y in Funs.DB.CH_Check on x.CHT_CheckID equals y.CHT_CheckID - // where - // select x.CHT_PassFilm).ToList().Sum()); - //int result = 0; - //var getD2 = (from x in Funs.DB.HJGL_FL_Data - // where x.ProjectId == projectid - // orderby x.CompileDate descending - // select x).FirstOrDefault(); - //if (getD2 != null) - //{ - // result = Funs.GetNewIntOrZero(getD2.OneTimeFilmQualifiedAmount.Split('.')[0]); - //} - int result = 0; var ndt = (from x in db.ProcessControl_NondestructiveTest_New where x.ProjectId == projectid && x.ProfessionalName == "工艺管道" orderby x.CreateDate descending select x).FirstOrDefault(); if (ndt != null) diff --git a/SGGL/FineUIPro.Web/common/main_new1.aspx b/SGGL/FineUIPro.Web/common/main_new1.aspx index 519b869b..977a1fa4 100644 --- a/SGGL/FineUIPro.Web/common/main_new1.aspx +++ b/SGGL/FineUIPro.Web/common/main_new1.aspx @@ -163,11 +163,13 @@
-
<%=GetTotalDineNum() %>
+ <%--
<%=GetTotalDineNum() %>
--%> +
<%=WeldDine.Size %>
-
<%=GetCompleteDineNum() %>
+ <%--
<%=GetCompleteDineNum() %>
--%> +
<%=WeldDine.DoneDin %>
diff --git a/SGGL/FineUIPro.Web/common/main_new1.aspx.cs b/SGGL/FineUIPro.Web/common/main_new1.aspx.cs index 151d6125..fac9d8dc 100644 --- a/SGGL/FineUIPro.Web/common/main_new1.aspx.cs +++ b/SGGL/FineUIPro.Web/common/main_new1.aspx.cs @@ -1,6 +1,7 @@ using BLL; using FineUIPro.Web.BaseInfo; using FineUIPro.Web.DataShow; +using Model; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -68,6 +69,9 @@ namespace FineUIPro.Web.common getCNEN(); + //焊接达因数 + GetWeldDineOutput(); + //焊接数据 double result = 0; Model.SGGLDB db = Funs.DB; @@ -554,6 +558,76 @@ namespace FineUIPro.Web.common return result; } } + + protected WeldDineOutput WeldDine = new WeldDineOutput(); + /// + /// 获取总达因数和完成达因数 + /// + /// + public WeldDineOutput GetWeldDineOutput() + { + var projectIds = new List(); + if (pids == null) + { + //加载所有在建项目的数据 + projectIds = Funs.DB.Base_Project.Where(x => x.ProjectState == "1").Select(x => x.ProjectId).ToList(); + } + else + { + projectIds = new List(pids); + } + + var result = new List(); + var getD1 = from x in Funs.DB.HJGL_FL_TotalQuantity + where projectIds.Contains(x.ProjectId) + select x; + var proIds = getD1.Select(x => x.ProjectId).Distinct(); + foreach (var pro in proIds) + { + double pTotalWeldQuantity = 0; + double pTotalCompleted = 0; + var proD1 = getD1.Where(x => x.ProjectId == pro); + foreach (var item in getD1) + { + var dAll = !string.IsNullOrWhiteSpace(item.TotalWeldQuantity) ? Convert.ToDouble(item.TotalWeldQuantity) : 0; + var dCompleted = !string.IsNullOrWhiteSpace(item.TotalCompleted) ? Convert.ToDouble(item.TotalCompleted) : 0; + pTotalWeldQuantity += dAll; + pTotalCompleted += dCompleted; + } + result.Add(new WeldDineOutput + { + ProjectId = pro, + Size = pTotalWeldQuantity, + DoneDin = pTotalCompleted + }); + } + + var differenceProjectIds = projectIds.Except(proIds).ToList(); + foreach (var pro in differenceProjectIds) + { + double pTotalWeldQuantity = 0; + double pTotalCompleted = 0; + var getD2 = (from x in Funs.DB.HJGL_FL_Data + where x.ProjectId == pro + orderby x.CompileDate descending + select x).FirstOrDefault(); + if (getD2 != null) + { + pTotalWeldQuantity = !string.IsNullOrWhiteSpace(getD2.TotalWeldQuantity) ? Convert.ToDouble(getD2.TotalWeldQuantity) : 0; + pTotalCompleted = !string.IsNullOrWhiteSpace(getD2.TotalCompleted) ? Convert.ToDouble(getD2.TotalCompleted) : 0; + } + result.Add(new WeldDineOutput + { + ProjectId = pro, + Size = pTotalWeldQuantity, + DoneDin = pTotalCompleted + }); + } + WeldDine.Size = Convert.ToInt32(result.Sum(x => x.Size)); + WeldDine.DoneDin = Convert.ToInt32(result.Sum(x => x.DoneDin)); + return WeldDine; + } + /// /// 获取总达因数 ///