192 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | ||
| using System.Collections.Generic;
 | ||
| using System.Linq;
 | ||
| 
 | ||
| namespace BLL
 | ||
| {
 | ||
|     public class SitePerson_DayReportService
 | ||
|     {
 | ||
|         /// <summary>
 | ||
|         /// 获取工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="dayReportId">工作日报Id</param>
 | ||
|         /// <returns></returns>
 | ||
|         public static Model.SitePerson_DayReport GetDayReportByDayReportId(string dayReportId)
 | ||
|         {
 | ||
|             return Funs.DB.SitePerson_DayReport.FirstOrDefault(x => x.DayReportId == dayReportId);
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 增加工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="dayReport">工作日报实体</param>
 | ||
|         public static void AddDayReport(Model.SitePerson_DayReport dayReport)
 | ||
|         {
 | ||
|             Model.SGGLDB db = Funs.DB;
 | ||
|             Model.SitePerson_DayReport newDayReport = new Model.SitePerson_DayReport
 | ||
|             {
 | ||
|                 DayReportId = dayReport.DayReportId,
 | ||
|                 ProjectId = dayReport.ProjectId,
 | ||
|                 CompileMan = dayReport.CompileMan,
 | ||
|                 CompileDate = dayReport.CompileDate,
 | ||
|                 States = dayReport.States
 | ||
|             };
 | ||
|             db.SitePerson_DayReport.InsertOnSubmit(newDayReport);
 | ||
|             db.SubmitChanges();
 | ||
| 
 | ||
|             ////增加一条编码记录
 | ||
|             BLL.CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(BLL.Const.DayReportMenuId, dayReport.ProjectId, null, dayReport.DayReportId, dayReport.CompileDate);
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 修改工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="dayReport">工作日报实体</param>
 | ||
|         public static void UpdateDayReport(Model.SitePerson_DayReport dayReport)
 | ||
|         {
 | ||
|             Model.SGGLDB db = Funs.DB;
 | ||
|             Model.SitePerson_DayReport newDayReport = db.SitePerson_DayReport.First(e => e.DayReportId == dayReport.DayReportId);
 | ||
|             newDayReport.ProjectId = dayReport.ProjectId;
 | ||
|             newDayReport.CompileMan = dayReport.CompileMan;
 | ||
|             newDayReport.CompileDate = dayReport.CompileDate;
 | ||
|             newDayReport.States = dayReport.States;
 | ||
| 
 | ||
|             db.SubmitChanges();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 根据工作日报主键删除一个工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="dayReportId">工作日报主键</param>
 | ||
|         public static void DeleteDayReportByDayReportId(string dayReportId)
 | ||
|         {
 | ||
|             Model.SGGLDB db = Funs.DB;
 | ||
|             Model.SitePerson_DayReport dayReport = db.SitePerson_DayReport.FirstOrDefault(e => e.DayReportId == dayReportId);
 | ||
|             if (dayReport != null)
 | ||
|             {
 | ||
|                 ///删除编码表记录
 | ||
|                 BLL.CodeRecordsService.DeleteCodeRecordsByDataId(dayReportId);
 | ||
|                 BLL.CommonService.DeleteFlowOperateByID(dayReportId);
 | ||
|                 db.SitePerson_DayReport.DeleteOnSubmit(dayReport);
 | ||
|                 db.SubmitChanges();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 判断人工月报是否存在
 | ||
|         /// </summary>
 | ||
|         /// <param name="monthDate"></param>
 | ||
|         /// <param name="projectId"></param>
 | ||
|         /// <returns>true 存在;false:不存在</returns>
 | ||
|         public static bool IsExistDayReport(DateTime compileDate, string projectId)
 | ||
|         {
 | ||
|             var q = from x in Funs.DB.SitePerson_DayReport
 | ||
|                     where x.CompileDate == compileDate && x.ProjectId == projectId
 | ||
|                     select x;
 | ||
|             if (q.Count() > 0)
 | ||
|             {
 | ||
|                 return true;
 | ||
|             }
 | ||
|             else
 | ||
|             {
 | ||
|                 return false;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 根据时间获取工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="startTime">开始时间</param>
 | ||
|         /// <param name="endTime">结束时间</param>
 | ||
|         /// <returns>工作日报信息</returns>
 | ||
|         public static List<Model.SitePerson_DayReport> GetDayReportsByCompileDate(DateTime startTime, DateTime endTime, string projectId)
 | ||
|         {
 | ||
|             return (from x in Funs.DB.SitePerson_DayReport where x.CompileDate >= startTime && x.CompileDate < endTime && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x).ToList();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 根据时间获取工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="startTime">开始时间</param>
 | ||
|         /// <param name="endTime">结束时间</param>
 | ||
|         /// <returns>工作日报信息</returns>
 | ||
|         public static List<Model.SitePerson_DayReport> GetDayReportsByCompileDate2(DateTime startTime, string projectId)
 | ||
|         {
 | ||
|             return (from x in Funs.DB.SitePerson_DayReport where x.CompileDate >= startTime && x.ProjectId == projectId && x.States == BLL.Const.State_2 select x).ToList();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 获取工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="startTime">开始时间</param>
 | ||
|         /// <param name="endTime">结束时间</param>
 | ||
|         /// <returns>工作日报信息</returns>
 | ||
|         public static List<Model.SitePerson_DayReport> GetDayReports(string projectId)
 | ||
|         {
 | ||
|             return (from x in Funs.DB.SitePerson_DayReport where x.ProjectId == projectId && x.States == BLL.Const.State_2 select x).ToList();
 | ||
|         }
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         /// 根据时间获取工作日报信息
 | ||
|         /// </summary>
 | ||
|         /// <param name="startTime">开始时间</param>
 | ||
|         /// <param name="endTime">结束时间</param>
 | ||
|         /// <returns>工作日报信息</returns>
 | ||
|         public static List<Model.SitePerson_DayReport> GetDayReportsByCompileDateAndUnitId(DateTime startTime, DateTime endTime, string projectId, string unitId)
 | ||
|         {
 | ||
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | ||
|             {
 | ||
|                 return (from x in db.SitePerson_DayReport
 | ||
|                         join y in db.SitePerson_DayReportDetail
 | ||
|                         on x.DayReportId equals y.DayReportId
 | ||
|                         where x.CompileDate >= startTime && x.CompileDate < endTime && x.ProjectId == projectId && x.States == BLL.Const.State_2
 | ||
|                         && y.UnitId == unitId
 | ||
|                         select x).Distinct().ToList();
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
| 
 | ||
|         /// <summary>
 | ||
|         ///  获取出入记录人工时
 | ||
|         /// </summary>
 | ||
|         /// <returns></returns>
 | ||
|         public static List<Model.SitePerson_DayReport> getDayReports(string projectId, DateTime? sDate)
 | ||
|         {
 | ||
|             Model.SGGLDB db = Funs.DB;
 | ||
|             List<Model.SitePerson_DayReport> reports = new List<Model.SitePerson_DayReport>();
 | ||
|             var getAllPersonInOutList = from x in db.SitePerson_PersonInOutNumber
 | ||
|                                         where x.ProjectId == projectId 
 | ||
|                                         select x;
 | ||
|             if (getAllPersonInOutList.Count() > 0)
 | ||
|             {
 | ||
|                 var getInOutDates = getAllPersonInOutList.Select(x => x.InOutDate);
 | ||
|                 if (sDate.HasValue)
 | ||
|                 {
 | ||
|                     getInOutDates = getInOutDates.Where(x => x.Year == sDate.Value.Year && x.Month == sDate.Value.Month && x.Day == sDate.Value.Day);
 | ||
|                 }
 | ||
| 
 | ||
|                 foreach (var item in getInOutDates)
 | ||
|                 {
 | ||
|                     var getNow = getAllPersonInOutList.FirstOrDefault(x => x.InOutDate.Year == item.Year && x.InOutDate.Month == item.Month && x.InOutDate.Day == item.Day);
 | ||
|                     if (getNow != null)
 | ||
|                     {
 | ||
|                         Model.SitePerson_DayReport reportItem = new Model.SitePerson_DayReport
 | ||
|                         {
 | ||
|                             DayReportId = SQLHelper.GetNewID(),
 | ||
|                             ProjectId = projectId,
 | ||
|                             CompileDate = item,
 | ||
|                             TotalPersonWorkTime = getNow.WorkHours,
 | ||
|                         };
 | ||
| 
 | ||
|                         var getMax = getAllPersonInOutList.Where(x => x.InOutDate < item).Max(x => x.WorkHours) ?? 0;
 | ||
|                         reportItem.DayWorkTime = (getNow.WorkHours ?? 0) - getMax;
 | ||
|                         reports.Add(reportItem);
 | ||
|                     }
 | ||
| 
 | ||
|                 }
 | ||
|             }
 | ||
|             return reports;
 | ||
|         }
 | ||
|     }
 | ||
| }
 |