| 
									
										
										
										
											2025-07-02 11:15:49 +08:00
										 |  |  |  | using Aspose.Words.Lists; | 
					
						
							|  |  |  |  | using EmitMapper; | 
					
						
							|  |  |  |  | using FineUIPro; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | using Model; | 
					
						
							|  |  |  |  | using Newtonsoft.Json; | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  | using NPOI.SS.Formula.Functions; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Linq; | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  | using System.Threading.Tasks; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace BLL | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     public static class HJGLData_HJGLService | 
					
						
							|  |  |  |  |     { | 
					
						
							| 
									
										
										
										
											2025-06-23 21:31:12 +08:00
										 |  |  |  |         //public static SGGLDB db = Funs.DB; | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         public static List<string> BeUnderConstructionList = ProjectService.GetProjectWorkList().Where(x => (x.ProjectAttribute == "GONGCHENG" || x.ProjectAttribute == null)).Select(x => x.ProjectId).ToList(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         #region 获取列表 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 记录数 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static int count { get; set; } | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static List<HJGLData_HJGL> GetHJGLData_HJGLByModle(HJGLData_HJGL table) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var db = Funs.DB; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             var q = from x in db.HJGLData_HJGL | 
					
						
							|  |  |  |  |                     where | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |                         (string.IsNullOrEmpty(table.Id) || x.Id.Contains(table.Id)) && | 
					
						
							|  |  |  |  |                         (string.IsNullOrEmpty(table.UnitId) || x.UnitId.Contains(table.UnitId)) && | 
					
						
							|  |  |  |  |                         (string.IsNullOrEmpty(table.CollCropCode) || x.CollCropCode.Contains(table.CollCropCode)) && | 
					
						
							|  |  |  |  |                         (string.IsNullOrEmpty(table.UnitName) || x.UnitName.Contains(table.UnitName)) | 
					
						
							| 
									
										
										
										
											2023-05-09 19:56:06 +08:00
										 |  |  |  |                     orderby x.ReportDate descending | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |                     select x | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |                 ; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             return q.ToList(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// 获取分页列表 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <param name="PageIndex">页码</param> | 
					
						
							|  |  |  |  |         /// <param name="PageSize">每页数量</param> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static IEnumerable getListData(HJGLData_HJGL table, Grid Grid1) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							|  |  |  |  |             var q = GetHJGLData_HJGLByModle(table); | 
					
						
							|  |  |  |  |             count = q.Count(); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             if (count == 0) return null; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             // q = SortConditionHelper.SortingAndPaging(q, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize); | 
					
						
							|  |  |  |  |             return from x in q | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |                    select new | 
					
						
							|  |  |  |  |                    { | 
					
						
							|  |  |  |  |                        x.Id, | 
					
						
							|  |  |  |  |                        x.UnitId, | 
					
						
							|  |  |  |  |                        x.CollCropCode, | 
					
						
							|  |  |  |  |                        x.UnitName, | 
					
						
							|  |  |  |  |                        x.ReportDate, | 
					
						
							|  |  |  |  |                        x.WelderNum, | 
					
						
							|  |  |  |  |                        x.TotalDineNum, | 
					
						
							|  |  |  |  |                        x.CompleteDineNum, | 
					
						
							|  |  |  |  |                        x.TotalFilmNum, | 
					
						
							|  |  |  |  |                        x.OKFilmNum, | 
					
						
							|  |  |  |  |                        x.State, | 
					
						
							|  |  |  |  |                        x.CreateDate, | 
					
						
							|  |  |  |  |                        x.CreateMan | 
					
						
							|  |  |  |  |                    }; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         #endregion 获取列表 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static void AddHJGLData_HJGL(HJGLData_HJGL newtable) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |                 var table = new HJGLData_HJGL | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     Id = newtable.Id, | 
					
						
							|  |  |  |  |                     UnitId = newtable.UnitId, | 
					
						
							|  |  |  |  |                     CollCropCode = newtable.CollCropCode, | 
					
						
							|  |  |  |  |                     UnitName = newtable.UnitName, | 
					
						
							|  |  |  |  |                     ReportDate = newtable.ReportDate, | 
					
						
							|  |  |  |  |                     WelderNum = newtable.WelderNum, | 
					
						
							|  |  |  |  |                     TotalDineNum = newtable.TotalDineNum, | 
					
						
							|  |  |  |  |                     CompleteDineNum = newtable.CompleteDineNum, | 
					
						
							|  |  |  |  |                     TotalFilmNum = newtable.TotalFilmNum, | 
					
						
							|  |  |  |  |                     OKFilmNum = newtable.OKFilmNum, | 
					
						
							|  |  |  |  |                     State = newtable.State, | 
					
						
							|  |  |  |  |                     CreateDate = newtable.CreateDate, | 
					
						
							|  |  |  |  |                     CreateMan = newtable.CreateMan | 
					
						
							|  |  |  |  |                 }; | 
					
						
							|  |  |  |  |                 db.HJGLData_HJGL.InsertOnSubmit(table); | 
					
						
							|  |  |  |  |                 db.SubmitChanges(); | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public static void DeleteHJGLData_HJGLById(string Id) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |                 var table = db.HJGLData_HJGL.FirstOrDefault(x => x.Id == Id); | 
					
						
							|  |  |  |  |                 if (table != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     db.HJGLData_HJGL.DeleteOnSubmit(table); | 
					
						
							|  |  |  |  |                     db.SubmitChanges(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static HJGLData_HJGL GetHJGLData_HJGLById(string Id) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var db = Funs.DB; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             return db.HJGLData_HJGL.FirstOrDefault(x => x.Id == Id); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static HJGLData GetItemById(string Id) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var item = new HJGLDataItem(); | 
					
						
							|  |  |  |  |             var data = new HJGLData(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             var data_HJGL = GetHJGLData_HJGLById(Id); | 
					
						
							|  |  |  |  |             if (data_HJGL != null) | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |                 var data_HJGL_detail = HJGLData_DefectService.GetHJGLData_DefectByDate(data_HJGL.ReportDate); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |                 item.CollCropCode = data_HJGL.CollCropCode; | 
					
						
							|  |  |  |  |                 item.CompleteDineNum = data_HJGL.CompleteDineNum; | 
					
						
							|  |  |  |  |                 item.Id = data_HJGL.Id; | 
					
						
							|  |  |  |  |                 item.OKFilmNum = data_HJGL.OKFilmNum; | 
					
						
							|  |  |  |  |                 item.ReportDate = data_HJGL.ReportDate.Value.ToShortDateString(); | 
					
						
							|  |  |  |  |                 item.TotalDineNum = data_HJGL.TotalDineNum; | 
					
						
							|  |  |  |  |                 item.TotalFilmNum = data_HJGL.TotalFilmNum; | 
					
						
							|  |  |  |  |                 item.UnitId = data_HJGL.UnitId; | 
					
						
							|  |  |  |  |                 item.WelderNum = data_HJGL.WelderNum; | 
					
						
							|  |  |  |  |                 var list = new List<HJGLDataDefectItems>(); | 
					
						
							|  |  |  |  |                 if (data_HJGL_detail != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     foreach (var detail in data_HJGL_detail) | 
					
						
							|  |  |  |  |                     { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |                         var hjglDataDefectItem = new HJGLDataDefectItems(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |                         hjglDataDefectItem.DefectNum = detail.DefectNum; | 
					
						
							|  |  |  |  |                         hjglDataDefectItem.DefectName = detail.DefectName; | 
					
						
							|  |  |  |  |                         hjglDataDefectItem.Id = detail.Id; | 
					
						
							|  |  |  |  |                         list.Add(hjglDataDefectItem); | 
					
						
							|  |  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |                     item.HJGLDataDefectItems = list; | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             var hJGLDataItems = new List<HJGLDataItem>(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             hJGLDataItems.Add(item); | 
					
						
							|  |  |  |  |             data.HJGLDataItems = hJGLDataItems; | 
					
						
							|  |  |  |  |             return data; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         public static async Task<HJGLData> GetTodayHJGLData_HJGLAsync() | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         { | 
					
						
							|  |  |  |  |             var data = new HJGLData(); | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             /*  var q = GetTodayData(); | 
					
						
							|  |  |  |  |               if (q != null && q.State == Const.CNCEC_State_S) | 
					
						
							|  |  |  |  |                   data = StatisticalData(); | 
					
						
							|  |  |  |  |               else | 
					
						
							|  |  |  |  |                   data = StatisticalData();*/ | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             var modelTask = StatisticalDataAsync(); | 
					
						
							|  |  |  |  |             var model = await modelTask; | 
					
						
							|  |  |  |  |             data = model; | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |             return data; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static HJGLData_HJGL GetTodayData() | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							|  |  |  |  |             var q = (from x in Funs.DB.HJGLData_HJGL | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |                      where x.ReportDate < DateTime.Now.AddDays(1).Date && x.ReportDate >= DateTime.Now.Date | 
					
						
							|  |  |  |  |                      select x).FirstOrDefault(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             return q; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |         public static HJGLData_HJGL GetSubUnitHjglDataByDate(string Unitid, DateTime? reportdate) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var result = new Model.HJGLData_HJGL(); | 
					
						
							|  |  |  |  |             if (reportdate == null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 return result; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             var projectlist = BLL.ProjectService.GetProjectWorkList(Unitid); | 
					
						
							|  |  |  |  |             var baseUnit = UnitService.GetUnitByUnitId(Unitid); | 
					
						
							|  |  |  |  |             var ProjectData = (from x in Funs.DB.Project_HJGLData_HJGL | 
					
						
							|  |  |  |  |                                where x.ReportDate == reportdate && projectlist.Select(e => e.ProjectId).Contains(x.ProjectId) | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |                                select x).ToList(); | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |             result = new HJGLData_HJGL | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 UnitId = Unitid, | 
					
						
							|  |  |  |  |                 CollCropCode = baseUnit.CollCropCode, | 
					
						
							|  |  |  |  |                 UnitName = baseUnit.UnitName, | 
					
						
							|  |  |  |  |                 ReportDate = DateTime.Now.Date, | 
					
						
							|  |  |  |  |                 WelderNum = ProjectData.Sum(x => x.WelderNum), | 
					
						
							|  |  |  |  |                 TotalDineNum = ProjectData.Sum(x => x.TotalDineNum), | 
					
						
							|  |  |  |  |                 CompleteDineNum = ProjectData.Sum(x => x.CompleteDineNum), | 
					
						
							|  |  |  |  |                 TotalFilmNum = ProjectData.Sum(x => x.TotalFilmNum), | 
					
						
							|  |  |  |  |                 OKFilmNum = ProjectData.Sum(x => x.OKFilmNum), | 
					
						
							|  |  |  |  |                 CreateMan = Const.sysglyId, | 
					
						
							|  |  |  |  |                 CreateDate = DateTime.Now | 
					
						
							|  |  |  |  |             }; | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             return result; | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         public static void UpdateTodyData_State() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var q = GetTodayData(); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             if (q != null) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             { | 
					
						
							|  |  |  |  |                 q.State = Const.CNCEC_State_1; | 
					
						
							|  |  |  |  |                 UpdateHJGLData_HJGL(q); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         public static bool IsReportByDate(DateTime dateTime) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var result = false; | 
					
						
							|  |  |  |  |             var q = (from x in Funs.DB.HJGLData_HJGL | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |                      where x.ReportDate >= dateTime.Date && x.ReportDate < dateTime.Date.AddDays(1).Date | 
					
						
							|  |  |  |  |                      select x).ToList(); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             if (q != null && q.Count > 0) result = true; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             return result; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 判断当天是否已上报 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static bool IsReportByToday() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var result = false; | 
					
						
							|  |  |  |  |             var q = (from x in Funs.DB.HJGLData_HJGL | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |                      where x.ReportDate < DateTime.Now.AddDays(1).Date && x.ReportDate >= DateTime.Now.Date | 
					
						
							|  |  |  |  |                      select x).ToList(); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             if (q.Count > 0) result = true; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             return result; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static ReturnData PushCncec(string Id) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var baseurl = "/api/HJGLData/SaveHJGLData"; | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             var item = GetItemById(Id); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var str = JsonConvert.SerializeObject(item); | 
					
						
							|  |  |  |  |             var responeData = ServerService.PushCNCEC(str, baseurl); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             return responeData; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         public static HJGLData StatisticalData() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var data = new HJGLData(); | 
					
						
							|  |  |  |  |             var thisUnitId = string.Empty; | 
					
						
							|  |  |  |  |             var thisUnit = CommonService.GetIsThisUnit(); | 
					
						
							|  |  |  |  |             if (thisUnit != null) thisUnitId = thisUnit.UnitId; | 
					
						
							|  |  |  |  |             var baseUnit = UnitService.GetUnitByUnitId(thisUnitId); | 
					
						
							|  |  |  |  |             var ProjectData = (from x in Funs.DB.Project_HJGLData_HJGL | 
					
						
							|  |  |  |  |                                where x.ReportDate < DateTime.Now.AddDays(1).Date && x.ReportDate >= DateTime.Now.Date | 
					
						
							|  |  |  |  |                                select x).ToList(); | 
					
						
							|  |  |  |  |             Project_HJGLData_HJGLService.StatisticalAllProjectData(); | 
					
						
							|  |  |  |  |             Project_HJGLData_DefectService.StatisticalAllProjectData(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             var table = new HJGLData_HJGL | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 UnitId = thisUnitId, | 
					
						
							|  |  |  |  |                 CollCropCode = baseUnit.CollCropCode, | 
					
						
							|  |  |  |  |                 UnitName = baseUnit.UnitName, | 
					
						
							|  |  |  |  |                 ReportDate = DateTime.Now.Date, | 
					
						
							|  |  |  |  |                 WelderNum = ProjectData.Sum(x => x.WelderNum), | 
					
						
							|  |  |  |  |                 TotalDineNum = ProjectData.Sum(x => x.TotalDineNum), | 
					
						
							|  |  |  |  |                 CompleteDineNum = ProjectData.Sum(x => x.CompleteDineNum), | 
					
						
							|  |  |  |  |                 TotalFilmNum = ProjectData.Sum(x => x.TotalFilmNum), | 
					
						
							|  |  |  |  |                 OKFilmNum = ProjectData.Sum(x => x.OKFilmNum), | 
					
						
							|  |  |  |  |                 CreateMan = Const.sysglyId, | 
					
						
							|  |  |  |  |                 CreateDate = DateTime.Now | 
					
						
							|  |  |  |  |             }; | 
					
						
							|  |  |  |  |             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 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<HJGLDataItem>(); | 
					
						
							|  |  |  |  |             hJGLDataItems.Add(item); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             data.HJGLDataItems = hJGLDataItems; | 
					
						
							|  |  |  |  |             return data; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         public static async Task<HJGLData> StatisticalDataAsync() | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var data = new HJGLData(); | 
					
						
							|  |  |  |  |             var thisUnitId = string.Empty; | 
					
						
							|  |  |  |  |             var thisUnit = CommonService.GetIsThisUnit(); | 
					
						
							|  |  |  |  |             if (thisUnit != null) thisUnitId = thisUnit.UnitId; | 
					
						
							|  |  |  |  |             var baseUnit = UnitService.GetUnitByUnitId(thisUnitId); | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-02 11:15:49 +08:00
										 |  |  |  |             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<HJGLData_HJGL, HJGLDataItem>(); | 
					
						
							|  |  |  |  |             var item = mapper.Map(table); | 
					
						
							|  |  |  |  |             // 手动处理特殊字段 | 
					
						
							|  |  |  |  |             item.ReportDate = table.ReportDate.Value.ToShortDateString(); | 
					
						
							|  |  |  |  |             item.HJGLDataDefectItems = Project_HJGLData_DefectService.getTodayProject_HJGLData_Defect(); | 
					
						
							|  |  |  |  |             var hJGLDataItems = new List<HJGLDataItem>(); | 
					
						
							|  |  |  |  |             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<HJGLDataItem>(); | 
					
						
							|  |  |  |  |             //hJGLDataItems.Add(item); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //data.HJGLDataItems = hJGLDataItems; | 
					
						
							|  |  |  |  |             //return data; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public static async Task<HJGLData> StatisticalDataAsyncold() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var data = new HJGLData(); | 
					
						
							|  |  |  |  |             var thisUnitId = string.Empty; | 
					
						
							|  |  |  |  |             var thisUnit = CommonService.GetIsThisUnit(); | 
					
						
							|  |  |  |  |             if (thisUnit != null) thisUnitId = thisUnit.UnitId; | 
					
						
							|  |  |  |  |             var baseUnit = UnitService.GetUnitByUnitId(thisUnitId); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |             Project_HJGLData_HJGLService.StatisticalAllProjectData(); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             Project_HJGLData_DefectService.StatisticalAllProjectData(); | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             // 并行执行异步方法 | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |             var projectHJGLDataListTask = HJGLData_HJGLService.GetProjectHJGLDataAsync(); //获取焊接检查信息 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             //// 并行执行异步方法 | 
					
						
							|  |  |  |  |             //var welderNumTask = HJGLData_HJGLService.GetWelderNumAsync(); //获取焊工总数 | 
					
						
							|  |  |  |  |             //var dineInfoListTask = HJGLData_HJGLService.GetDineInfoAsync(); //获达因数信息 | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |             var chCheckItemListTask = HJGLData_HJGLService.GetCHCheckItemAsync(); //获取焊接检查信息 | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             // 等待所有异步方法执行完成 | 
					
						
							|  |  |  |  |             await Task.WhenAll( | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                 projectHJGLDataListTask, | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |                 //welderNumTask, | 
					
						
							|  |  |  |  |                 //dineInfoListTask, | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                 chCheckItemListTask | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             ); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             // 统一获取异步方法的返回值 | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |             var projectHJGLDataList = await projectHJGLDataListTask; | 
					
						
							|  |  |  |  |             //var welderNum = await welderNumTask; | 
					
						
							|  |  |  |  |             //var dineInfoList = await dineInfoListTask; | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |             var chCheckItemList = await chCheckItemListTask; | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var table = new HJGLData_HJGL | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             { | 
					
						
							|  |  |  |  |                 UnitId = thisUnitId, | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |                 CollCropCode = baseUnit.CollCropCode, | 
					
						
							|  |  |  |  |                 UnitName = baseUnit.UnitName, | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |                 ReportDate = DateTime.Now.Date, | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |                 WelderNum = projectHJGLDataList.Sum(x => x.WelderNum), | 
					
						
							|  |  |  |  |                 TotalDineNum = projectHJGLDataList.Sum(x => x.TotalDineNum), | 
					
						
							|  |  |  |  |                 CompleteDineNum = projectHJGLDataList.Sum(x => x.CompleteDineNum), | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                 //TotalFilmNum = projectHJGLDataList.Sum(x => x.TotalFilmNum), | 
					
						
							|  |  |  |  |                 //OKFilmNum = projectHJGLDataList.Sum(x => x.OKFilmNum), | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |                 //WelderNum = welderNum.Count(), | 
					
						
							|  |  |  |  |                 //TotalDineNum = Convert.ToInt32(dineInfoList.Sum(x => x.Size)), | 
					
						
							|  |  |  |  |                 //CompleteDineNum = Convert.ToInt32(dineInfoList.Sum(x => x.DoneDin)), | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                 TotalFilmNum = Convert.ToInt32(chCheckItemList.Sum(x => x.CHT_TotalFilm)), | 
					
						
							|  |  |  |  |                 OKFilmNum = Convert.ToInt32(chCheckItemList.Sum(x => x.CHT_PassFilm)), | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |                 CreateMan = Const.sysglyId, | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |                 CreateDate = DateTime.Now | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             }; | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  |             //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); | 
					
						
							|  |  |  |  |             //} | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             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); | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |             var item = new HJGLDataItem(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             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(); | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |             var hJGLDataItems = new List<HJGLDataItem>(); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             hJGLDataItems.Add(item); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             data.HJGLDataItems = hJGLDataItems; | 
					
						
							|  |  |  |  |             return data; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-10 11:40:02 +08:00
										 |  |  |  |         public static void UpdateHJGLData_HJGL(HJGLData_HJGL newtable) | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2024-12-24 19:04:32 +08:00
										 |  |  |  |                 var table = db.HJGLData_HJGL.FirstOrDefault(x => x.Id == newtable.Id); | 
					
						
							|  |  |  |  |                 if (table != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     table.Id = newtable.Id; | 
					
						
							|  |  |  |  |                     table.UnitId = newtable.UnitId; | 
					
						
							|  |  |  |  |                     table.CollCropCode = newtable.CollCropCode; | 
					
						
							|  |  |  |  |                     table.UnitName = newtable.UnitName; | 
					
						
							|  |  |  |  |                     table.ReportDate = newtable.ReportDate; | 
					
						
							|  |  |  |  |                     table.WelderNum = newtable.WelderNum; | 
					
						
							|  |  |  |  |                     table.TotalDineNum = newtable.TotalDineNum; | 
					
						
							|  |  |  |  |                     table.CompleteDineNum = newtable.CompleteDineNum; | 
					
						
							|  |  |  |  |                     table.TotalFilmNum = newtable.TotalFilmNum; | 
					
						
							|  |  |  |  |                     table.OKFilmNum = newtable.OKFilmNum; | 
					
						
							|  |  |  |  |                     table.State = newtable.State; | 
					
						
							|  |  |  |  |                     table.CreateMan = newtable.CreateMan; | 
					
						
							|  |  |  |  |                     table.CreateDate = newtable.CreateDate; | 
					
						
							|  |  |  |  |                     db.SubmitChanges(); | 
					
						
							|  |  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取焊工总数 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<WelderOutput> GetWelderNum() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var result = (from x in Funs.DB.BS_Welder | 
					
						
							|  |  |  |  |                           where BeUnderConstructionList.Contains(x.ProjectId) && x.WED_IfOnGuard == true | 
					
						
							|  |  |  |  |                           select new Model.WelderOutput() | 
					
						
							|  |  |  |  |                           { | 
					
						
							|  |  |  |  |                               ProjectId = x.ProjectId, | 
					
						
							|  |  |  |  |                               UnitId = x.WED_Unit, | 
					
						
							|  |  |  |  |                               WEDCode = x.WED_Code, | 
					
						
							| 
									
										
										
										
											2025-07-02 16:12:26 +08:00
										 |  |  |  |                               WEDWorkCode = x.WED_WorkCode, | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |                               WEDName = x.WED_Name | 
					
						
							|  |  |  |  |                               //UnitName = UnitService.getUnitNamesUnitIds(x.UnitIds), | 
					
						
							| 
									
										
										
										
											2025-07-02 16:12:26 +08:00
										 |  |  |  |                           }) | 
					
						
							|  |  |  |  |                           .GroupBy(p => p.WEDWorkCode) | 
					
						
							|  |  |  |  |                          .Select(g => g.First()) | 
					
						
							|  |  |  |  |                          .ToList(); | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             return result; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取焊工总数(异步) | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static async Task<List<WelderOutput>> GetWelderNumAsync() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return await Task.Run(GetWelderNum); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取总达因数和完成达因数 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							| 
									
										
										
										
											2025-07-02 11:15:49 +08:00
										 |  |  |  |         public static List<WeldDineOutput> GetDineInfo() | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-07-02 11:15:49 +08:00
										 |  |  |  |             var result = new List<WeldDineOutput>(); | 
					
						
							|  |  |  |  |             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 | 
					
						
							|  |  |  |  |                 }); | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |             return result; | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-07-02 11:15:49 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取总达因数和完成达因数 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static async Task<List<WeldDineOutput>> GetDineInfoAsync() | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         { | 
					
						
							|  |  |  |  |             return await Task.Run(GetDineInfo); | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取焊接检查信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<CHCheckItemOutput> GetCHCheckItem() | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  |             List<CHCheckItemOutput> list = new List<CHCheckItemOutput>(); | 
					
						
							|  |  |  |  |             var ndtLists = (from x in Funs.DB.ProcessControl_NondestructiveTest_New where BeUnderConstructionList.Contains(x.ProjectId) select x).ToList(); | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |             if (ndtLists.Count() > 0) | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  |                 //取每个项目、单位、专业最新的一条数据 | 
					
						
							|  |  |  |  |                 var datalist = ndtLists.GroupBy(r => new { r.ProjectId, r.UnitId, r.ProfessionalName }).Select(g => g.OrderByDescending(r => r.CreateDate).First()).ToList(); | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                 foreach (var project in BeUnderConstructionList) | 
					
						
							|  |  |  |  |                 { | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  |                     decimal a = 0, b = 0; | 
					
						
							|  |  |  |  |                     var projectDataList = datalist.Where(x => x.ProjectId == project); | 
					
						
							|  |  |  |  |                     foreach (var item in projectDataList) | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                     { | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  |                         if (item.TotalQuantity.HasValue) | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                         { | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  |                             a += Math.Floor(item.TotalQuantity.Value * Funs.GetNewDecimalOrZero(item.TotalRate) / 100); | 
					
						
							|  |  |  |  |                             b += item.TotalQuantity.Value; | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                         } | 
					
						
							|  |  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  |                     list.Add(new CHCheckItemOutput | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         Id = project, | 
					
						
							|  |  |  |  |                         ProjectId = project, | 
					
						
							|  |  |  |  |                         //UnitId = y.UnitId, | 
					
						
							|  |  |  |  |                         CHT_TotalFilm = (int)Math.Round(b), | 
					
						
							|  |  |  |  |                         CHT_PassFilm = (int)Math.Round(a) | 
					
						
							|  |  |  |  |                     }); | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |                 } | 
					
						
							|  |  |  |  |             } | 
					
						
							| 
									
										
										
										
											2025-07-01 17:13:29 +08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-06-27 10:37:04 +08:00
										 |  |  |  |             return list; | 
					
						
							| 
									
										
										
										
											2025-06-04 23:40:57 +08:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取焊接检查信息(异步) | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static async Task<List<CHCheckItemOutput>> GetCHCheckItemAsync() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return await Task.Run(GetCHCheckItem); | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2025-06-26 14:16:26 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取项目焊接信息 | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static List<Project_HJGLData_HJGL> GetProjectHJGLData() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             var result = (from x in Funs.DB.Project_HJGLData_HJGL | 
					
						
							|  |  |  |  |                           where BeUnderConstructionList.Contains(x.ProjectId) && x.ReportDate < DateTime.Now.AddDays(1).Date && x.ReportDate >= DateTime.Now.Date | 
					
						
							|  |  |  |  |                           select x).ToList(); | 
					
						
							|  |  |  |  |             return result; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         /// <summary> | 
					
						
							|  |  |  |  |         /// 获取项目焊接信息(异步) | 
					
						
							|  |  |  |  |         /// </summary> | 
					
						
							|  |  |  |  |         /// <returns></returns> | 
					
						
							|  |  |  |  |         public static async Task<List<Project_HJGLData_HJGL>> GetProjectHJGLDataAsync() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             return await Task.Run(GetProjectHJGLData); | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-12-26 14:34:56 +08:00
										 |  |  |  |     } | 
					
						
							|  |  |  |  | } |