CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/DoorServer/DoorServerService.cs

229 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
/// <summary>
/// 考勤
/// </summary>
public static class DoorServerService
{
public static Model.SGGLDB db = Funs.DB;
/// <summary>
/// 根据主键获取事故类型
/// </summary>
/// <param name="accidentTypeId"></param>
/// <returns></returns>
public static Model.T_d_EmployInOutRecord GetEmployInOutRecordById(string id)
{
return Funs.DB.T_d_EmployInOutRecord.FirstOrDefault(e => e.NewID == id);
}
#region
/// <summary>
/// 根据出入记录 写入考勤记录
/// </summary>
public static void InsertEmployInOutRecord(Model.t_d_facerecordItem drecord,Model.SitePerson_Person getPerson)
{
if (drecord.DateTimeRecord.HasValue)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.T_d_EmployInOutRecord newInOutRecord = new Model.T_d_EmployInOutRecord
{
NewID = SQLHelper.GetNewID(),
ProjectId = drecord.ProjectId,
InstallationName = ProjectService.GetProjectNameByProjectId(drecord.ProjectId),
RecordDate = drecord.DateTimeRecord.Value.Date,
IDCardNo = drecord.IDCardNo,
};
////获取人员
if (getPerson != null)
{
newInOutRecord.UnitId = getPerson.UnitId;
newInOutRecord.UnitName = UnitService.GetUnitNameByUnitId(getPerson.UnitId);
newInOutRecord.DepartmentID = getPerson.TeamGroupId;
newInOutRecord.DepartName = TeamGroupService.GetTeamGroupNameByTeamGroupId(getPerson.TeamGroupId);
newInOutRecord.EmployNO = getPerson.CardNo;
newInOutRecord.EmployName = getPerson.PersonName;
newInOutRecord.Nation = getPerson.Nation;
newInOutRecord.NationName = BasicDataService.GetDictNameByDictCode(getPerson.Nation);
newInOutRecord.PostId = getPerson.WorkPostId;
newInOutRecord.PostName = WorkPostService.getWorkPostNameById(getPerson.WorkPostId);
}
else
{
newInOutRecord.EmployName = drecord.EmployName;
newInOutRecord.UnitId = null;
newInOutRecord.PostId = null;
}
#region
///上午上班 8
DateTime TWorkIn1 = drecord.DateTimeRecord.Value.Date.AddHours(8);
///上午下班 1230
DateTime TOffDuty1 = drecord.DateTimeRecord.Value.Date.AddHours(12).AddMinutes(30);
///下午上班 130
DateTime TWorkIn2 = drecord.DateTimeRecord.Value.Date.AddHours(13).AddMinutes(30);
///下午下班 7
DateTime TOffDuty2 = drecord.DateTimeRecord.Value.Date.AddHours(19);
if (drecord.InOrOut == "进门")
{
///上午上班
if (drecord.DateTimeRecord < TOffDuty1)
{
newInOutRecord.WorkIn1 = drecord.DateTimeRecord;
}
else if (drecord.DateTimeRecord < TOffDuty2)
{
newInOutRecord.WorkIn2 = drecord.DateTimeRecord;
}
else
{
newInOutRecord.WorkIn3 = drecord.DateTimeRecord;
}
}
else
{
///上午下班
if (drecord.DateTimeRecord < TWorkIn2)
{
newInOutRecord.OffDuty1 = drecord.DateTimeRecord;
}
else if (drecord.DateTimeRecord < TOffDuty2.AddHours(1))
{
newInOutRecord.OffDuty2 = drecord.DateTimeRecord;
}
else
{
newInOutRecord.OffDuty3 = drecord.DateTimeRecord;
}
}
#endregion
bool isInsert = false;
var getInOutRecord = db.T_d_EmployInOutRecord.FirstOrDefault(x => x.ProjectId == drecord.ProjectId && x.IDCardNo == drecord.IDCardNo && x.RecordDate == drecord.DateTimeRecord.Value.Date);
if (getInOutRecord == null)
{
isInsert = true;
}
if (isInsert)
{
newInOutRecord.ManHours = 4;
newInOutRecord.ManOverHours = 0;
db.T_d_EmployInOutRecord.InsertOnSubmit(newInOutRecord);
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 && getInOutRecord.OffDuty1> getInOutRecord.WorkIn1)
{
m1 = Convert.ToInt32((getInOutRecord.OffDuty1 - getInOutRecord.WorkIn1).Value.TotalMinutes);
if (m1 < 0)
{
m1 = 0;
}
}
}
int m2 = 0;
if (getInOutRecord.WorkIn2.HasValue || getInOutRecord.OffDuty2.HasValue)
{
m2 = 240;
if (getInOutRecord.WorkIn2.HasValue && getInOutRecord.OffDuty2.HasValue && getInOutRecord.OffDuty2 > getInOutRecord.WorkIn2)
{
m2 = Convert.ToInt32((getInOutRecord.OffDuty2 - getInOutRecord.WorkIn2).Value.TotalMinutes);
if (m2 < 0)
{
m2 =0;
}
}
}
int m3 = 0;
if (getInOutRecord.WorkIn3.HasValue || getInOutRecord.OffDuty3.HasValue)
{
m3 = 240;
if (getInOutRecord.WorkIn3.HasValue && getInOutRecord.OffDuty3.HasValue && getInOutRecord.OffDuty3 > getInOutRecord.WorkIn3)
{
m3 = Convert.ToInt32((getInOutRecord.OffDuty3 - getInOutRecord.WorkIn3).Value.TotalMinutes);
if (m3 < 0)
{
m3 =0;
}
}
}
#endregion
getInOutRecord.ManHours = Convert.ToInt32(Math.Ceiling((m1 + m2 + m3) * 1.0 / 60));
getInOutRecord.ManOverHours = Convert.ToInt32(Math.Ceiling(m3 * 1.0 / 60));
db.SubmitChanges();
}
}
}
}
#endregion
#region
/// <summary>
/// 获取单位信息
/// </summary>
/// <returns></returns>
public static Model.T_d_department GetSupDep(string projectId, int? departmentID, int ParentID)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getDep =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
}
}