using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BLL { /// /// 事故类型 /// public static class DoorServerService { public static Model.SGGLDB db = Funs.DB; /// /// 根据主键获取事故类型 /// /// /// public static Model.T_d_EmployInOutRecord GetEmployInOutRecordById(string id) { return Funs.DB.T_d_EmployInOutRecord.FirstOrDefault(e => e.NewID == id); } #region 根据出入记录 写入考勤记录 /// /// 根据出入记录 写入考勤记录 /// public static void InsertEmployInOutRecord(Model.SitePerson_PersonInOut newInOut) { if (newInOut.ChangeTime.HasValue) { Model.T_d_EmployInOutRecord newInOutRecord = new Model.T_d_EmployInOutRecord { NewID = SQLHelper.GetNewID(), ProjectId = newInOut.ProjectId, InstallationName = ProjectService.GetProjectNameByProjectId(newInOut.ProjectId), RecordDate = newInOut.ChangeTime.Value.Date, IDCardNo = newInOut.IdentityCard, }; ////获取人员 newInOutRecord.UnitId = newInOut.UnitId; newInOutRecord.UnitName = newInOut.UnitName; newInOutRecord.EmployNO = newInOut.IdentityCard; newInOutRecord.EmployName = newInOut.PersonName; newInOutRecord.PostId = newInOut.WorkPostId; newInOutRecord.PostName = newInOut.WorkPostName; #region 上下班时间 ///上午上班 8 DateTime TWorkIn1 = newInOut.ChangeTime.Value.Date.AddHours(8); ///上午下班 12:30 DateTime TOffDuty1 = newInOut.ChangeTime.Value.Date.AddHours(12).AddMinutes(30); ///下午上班 1:30 DateTime TWorkIn2 = newInOut.ChangeTime.Value.Date.AddHours(13).AddMinutes(30); ///下午下班 7 DateTime TOffDuty2 = newInOut.ChangeTime.Value.Date.AddHours(19); if (newInOut.IsIn == true) { ///上午上班 if ( newInOut.ChangeTime < TOffDuty1) { newInOutRecord.WorkIn1 = newInOut.ChangeTime; } else if ( newInOut.ChangeTime < TOffDuty2) { newInOutRecord.WorkIn2 = newInOut.ChangeTime; } else { newInOutRecord.WorkIn3 = newInOut.ChangeTime; } } else { ///上午下班 if ( newInOut.ChangeTime < TWorkIn2) { newInOutRecord.OffDuty1 = newInOut.ChangeTime; } else if ( newInOut.ChangeTime < TOffDuty2.AddHours(1)) { newInOutRecord.OffDuty2 = newInOut.ChangeTime; } else { newInOutRecord.OffDuty3 = newInOut.ChangeTime; } } #endregion bool isInsert = false; var getInOutRecord = Funs.DB.T_d_EmployInOutRecord.FirstOrDefault(x => x.ProjectId == newInOut.ProjectId && x.IDCardNo == newInOut.IdentityCard && x.RecordDate == newInOut.ChangeTime.Value.Date); if (getInOutRecord == null) { isInsert = true; } if (isInsert) { newInOutRecord.ManHours = 4; newInOutRecord.ManOverHours = 0; Funs.DB.T_d_EmployInOutRecord.InsertOnSubmit(newInOutRecord); Funs.DB.SubmitChanges(); } else { #region 计算人工时 if (newInOutRecord.WorkIn1.HasValue && (!getInOutRecord.WorkIn1.HasValue || getInOutRecord.WorkIn1 > newInOutRecord.WorkIn1)) { getInOutRecord.WorkIn1 = newInOutRecord.WorkIn1; } if (newInOutRecord.WorkIn2.HasValue && (!getInOutRecord.WorkIn2.HasValue || getInOutRecord.WorkIn2 > newInOutRecord.WorkIn2)) { getInOutRecord.WorkIn2 = newInOutRecord.WorkIn2; } if (newInOutRecord.WorkIn3.HasValue && (!getInOutRecord.WorkIn3.HasValue || getInOutRecord.WorkIn3 > newInOutRecord.WorkIn3)) { getInOutRecord.WorkIn3 = newInOutRecord.WorkIn3; } if (newInOutRecord.OffDuty1.HasValue && (!getInOutRecord.OffDuty1.HasValue || getInOutRecord.OffDuty1 < newInOutRecord.OffDuty1)) { getInOutRecord.OffDuty1 = newInOutRecord.OffDuty1; } if (newInOutRecord.OffDuty2.HasValue && (!getInOutRecord.OffDuty2.HasValue || getInOutRecord.OffDuty2 < newInOutRecord.OffDuty2)) { getInOutRecord.OffDuty2 = newInOutRecord.OffDuty2; } if (newInOutRecord.OffDuty3.HasValue && (!getInOutRecord.OffDuty3.HasValue || getInOutRecord.OffDuty3 < newInOutRecord.OffDuty3)) { getInOutRecord.OffDuty3 = newInOutRecord.OffDuty3; } int m1 = 0; if (getInOutRecord.WorkIn1.HasValue || getInOutRecord.OffDuty1.HasValue) { m1 = 240; if (getInOutRecord.WorkIn1.HasValue && getInOutRecord.OffDuty1.HasValue) { m1 = Convert.ToInt32((getInOutRecord.OffDuty1 - getInOutRecord.WorkIn1).Value.TotalMinutes); } } int m2 = 0; if (getInOutRecord.WorkIn2.HasValue || getInOutRecord.OffDuty2.HasValue) { m2 = 240; if (getInOutRecord.WorkIn2.HasValue && getInOutRecord.OffDuty2.HasValue) { m2 = Convert.ToInt32((getInOutRecord.OffDuty2 - getInOutRecord.WorkIn2).Value.TotalMinutes); } } int m3 = 0; if (getInOutRecord.WorkIn3.HasValue || getInOutRecord.OffDuty3.HasValue) { m3 = 240; if (getInOutRecord.WorkIn3.HasValue && getInOutRecord.OffDuty3.HasValue) { m3 = Convert.ToInt32((getInOutRecord.OffDuty3 - getInOutRecord.WorkIn3).Value.TotalMinutes); } } #endregion getInOutRecord.ManHours = Convert.ToInt32(Math.Ceiling((m1 + m2 + m3) * 1.0 / 60)); getInOutRecord.ManOverHours = Convert.ToInt32(Math.Ceiling(m3 * 1.0 / 60)); Funs.DB.SubmitChanges(); } } } #endregion #region 获取单位信息 /// /// 获取单位信息 /// /// public static Model.T_d_department GetSupDep(string projectId, int? departmentID, int ParentID) { var getDep = Funs.DB.T_d_department.FirstOrDefault(x => x.ProjectId == projectId && x.DepartmentID == departmentID); if (getDep != null) { if (getDep.ParentID == ParentID) { return getDep; } else { return GetSupDep(projectId, getDep.ParentID, ParentID); } } else { return null; } } #endregion } }