using FineUIPro; using Microsoft.Office.Interop.Excel; using Microsoft.SqlServer.Dts.Runtime; using System; using System.Collections; using System.Linq; using System.Web.Security; namespace BLL { public static class SitePerson_PersonItemService { public static Model.SGGLDB db = Funs.DB; #region 获取列表数据 /// /// 记录数 /// public static int count { get; set; } /// /// 定义变量 /// private static IQueryable getDataLists = from x in db.SitePerson_PersonItem select x; /// /// 获取分页列表 /// /// /// /// /// /// /// /// /// /// public static IEnumerable getListData(string projectId, string unitId, string personId, string name, string idCard, DateTime? startDate, DateTime? endDate, Grid Grid1) { IQueryable getDataList = getDataLists.Where(e => e.PersonId == personId); if (!string.IsNullOrEmpty(projectId) && projectId != Const._Null) { getDataList = getDataList.Where(e => e.UnitId == unitId); } if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null) { getDataList = getDataList.Where(e => e.UnitId == unitId); } //if (!string.IsNullOrEmpty(personId)) //{ // getDataList = getDataList.Where(e => e.PersonId == personId); //} if (!string.IsNullOrEmpty(name)) { getDataList = getDataList.Where(e => e.PersonName.Contains(name)); } if (!string.IsNullOrEmpty(idCard)) { getDataList = getDataList.Where(e => e.IdentityCard.Contains(idCard)); } if (startDate.HasValue) { getDataList = getDataList.Where(e => e.InTime >= startDate); } if (endDate.HasValue) { getDataList = getDataList.Where(e => e.InTime <= endDate); } count = getDataList.Count(); if (count == 0) { return null; } getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize); return from x in getDataList select new { x.PersonItemId, x.PersonId, x.PersonName, x.IdentityCard, x.ProjectId, x.ProjectName, x.UnitId, x.UnitName, x.WorkPostId, x.WorkPostName, x.TeamGroupId, x.TeamGroupName, x.RoleId, x.RoleName, x.InTime, x.OutTime, x.OutResult, }; } #endregion /// /// 根据ID获取人员出入信息 /// /// /// public static Model.SitePerson_PersonItem getDataById(string id) { return Funs.DB.SitePerson_PersonItem.FirstOrDefault(x => x.PersonItemId == id); } /// /// 设置人员进出场 /// /// public static void SetPersonItemInOut(Model.SitePerson_Person sitePerson) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPersons = db.Person_Persons.FirstOrDefault(x => x.IdentityCard == sitePerson.IdentityCard); if (getPersons != null) { getPersons.CurrentProjectId = null; getPersons.CurrentProjectRoleId = null; getPersons.CurrentProjectWorkPostId = null; db.SubmitChanges(); ////在岗 if (sitePerson.States == Const.ProjectPersonStates_1 ) { Model.SitePerson_PersonItem newPersonItem = new Model.SitePerson_PersonItem { PersonItemId = SQLHelper.GetNewID(), PersonId = sitePerson.PersonId, PersonName = sitePerson.PersonName, IdentityCard = sitePerson.IdentityCard, ProjectId = sitePerson.ProjectId, UnitId = sitePerson.UnitId, WorkPostId = sitePerson.WorkPostId, TeamGroupId = sitePerson.TeamGroupId, RoleId = sitePerson.RoleIds, InTime = sitePerson.InTime, }; AddPersonItem(newPersonItem); if (!getPersons.MultiProject.HasValue || getPersons.MultiProject == false) { var getOtherPersons = db.SitePerson_Person.Where(x => x.IdentityCard == sitePerson.IdentityCard && x.ProjectId != sitePerson.ProjectId && x.States == Const.ProjectPersonStates_1); if (getOtherPersons.Count() > 0) { foreach (var item in getOtherPersons) { item.OutTime = DateTime.Now; item.States = Const.ProjectPersonStates_2; item.OutResult = item.OutResult; db.SubmitChanges(); } } } getPersons.CurrentProjectId = sitePerson.ProjectId; getPersons.CurrentProjectRoleId = sitePerson.RoleIds; getPersons.CurrentProjectWorkPostId = sitePerson.WorkPostId; db.SubmitChanges(); } else if (sitePerson.States == Const.ProjectPersonStates_2) ///离岗 { OutPersonItem(sitePerson.PersonId, sitePerson.ProjectId, sitePerson.OutTime); } else if (sitePerson.States == Const.ProjectPersonStates_R) ///打回 { OutPersonItem(sitePerson.PersonId, sitePerson.ProjectId, DateTime.Now); } } } } #region 增加 人员进场 /// /// 增加 人员进场 /// /// 实体 public static void AddPersonItem(Model.SitePerson_PersonItem newitem) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = Person_PersonsService.GetPerson_PersonsById(newitem.PersonId); if (getPerson != null) { newitem.PersonName = getPerson.PersonName; newitem.IdentityCard = getPerson.IdentityCard; if (!getPerson.MultiProject.HasValue || getPerson.MultiProject == false) { var getdate = newitem.InTime.HasValue ? newitem.InTime.Value.AddDays(-1) : DateTime.Now; ///未离场项目 先离场 OutPersonItem(newitem.PersonId, null, getdate); } var getPersonItem = db.SitePerson_PersonItem.FirstOrDefault(x => x.PersonId == getPerson.PersonId && x.ProjectId == newitem.ProjectId && x.InTime <= newitem.InTime && (x.OutTime > newitem.InTime || !x.OutTime.HasValue)); if (getPersonItem != null) { getPersonItem.OutTime = null; db.SubmitChanges(); } else { Model.SitePerson_PersonItem newPersonItem = new Model.SitePerson_PersonItem { PersonItemId = newitem.PersonItemId, PersonId = newitem.PersonId, PersonName = newitem.PersonName, IdentityCard = newitem.IdentityCard, InTime = newitem.InTime, // OutTime = newitem.OutTime, // OutResult = newitem.OutResult, }; if (!string.IsNullOrEmpty(newitem.ProjectId)) { newPersonItem.ProjectId = newitem.ProjectId; newPersonItem.ProjectName = ProjectService.GetProjectNameByProjectId(newitem.ProjectId); } else { newPersonItem.ProjectId = null; newPersonItem.ProjectName = newitem.ProjectName; } if (!string.IsNullOrEmpty(newitem.UnitId)) { newPersonItem.UnitId = newitem.UnitId; newPersonItem.UnitName = UnitService.GetUnitNameByUnitId(newitem.UnitId); } else { newPersonItem.UnitId = null; newPersonItem.UnitName = newitem.UnitName; } if (!string.IsNullOrEmpty(newitem.WorkPostId)) { newPersonItem.WorkPostId = newitem.WorkPostId; newPersonItem.WorkPostName = WorkPostService.getWorkPostNameById(newitem.WorkPostId); } else { newPersonItem.WorkPostId = null; newPersonItem.WorkPostName = newitem.WorkPostName; } if (!string.IsNullOrEmpty(newitem.TeamGroupId)) { newPersonItem.TeamGroupId = newitem.TeamGroupId; newPersonItem.TeamGroupName = TeamGroupService.GetTeamGroupNameByTeamGroupId(newitem.TeamGroupId); } else { newPersonItem.TeamGroupId = null; newPersonItem.TeamGroupName = newitem.TeamGroupName; } if (!string.IsNullOrEmpty(newitem.RoleId)) { newPersonItem.RoleId = newitem.RoleId; newPersonItem.RoleName = RoleService.getRoleNamesRoleIds(newitem.RoleId); } else { newPersonItem.RoleId = null; newPersonItem.RoleName = newitem.RoleName; } db.SitePerson_PersonItem.InsertOnSubmit(newPersonItem); db.SubmitChanges(); } } } } #endregion #region 更新 人员进场信息 /// /// 更新 人员进场信息 /// /// 实体 public static void UpdatePersonItem(Model.SitePerson_PersonItem newitem) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPerson = Person_PersonsService.GetPerson_PersonsById(newitem.PersonId); if (getPerson != null) { newitem.PersonName = getPerson.PersonName; newitem.IdentityCard = getPerson.IdentityCard; } var getItem = db.SitePerson_PersonItem.FirstOrDefault(x => x.PersonItemId == newitem.PersonItemId); if (getItem != null) { getItem.PersonName = newitem.PersonName; getItem.IdentityCard = newitem.IdentityCard; getItem.ProjectId = newitem.ProjectId; getItem.ProjectName = ProjectService.GetProjectNameByProjectId(newitem.ProjectId); getItem.InTime = newitem.InTime; getItem.OutTime = newitem.OutTime; getItem.OutResult = newitem.OutResult; if (!string.IsNullOrEmpty(newitem.ProjectId)) { getItem.ProjectId = newitem.ProjectId; getItem.ProjectName = ProjectService.GetProjectNameByProjectId(newitem.ProjectId); } else { getItem.ProjectId = null; getItem.ProjectName = newitem.ProjectName; } if (!string.IsNullOrEmpty(newitem.UnitId)) { getItem.UnitId = newitem.UnitId; getItem.UnitName = UnitService.GetUnitNameByUnitId(newitem.UnitId); } else { getItem.UnitId = null; getItem.UnitName = newitem.UnitName; } if (!string.IsNullOrEmpty(newitem.WorkPostId)) { getItem.WorkPostId = newitem.WorkPostId; getItem.WorkPostName = WorkPostService.getWorkPostNameById(newitem.WorkPostId); } else { getItem.WorkPostId = null; getItem.WorkPostName = newitem.WorkPostName; } if (!string.IsNullOrEmpty(newitem.TeamGroupId)) { getItem.TeamGroupId = newitem.TeamGroupId; getItem.TeamGroupName = TeamGroupService.GetTeamGroupNameByTeamGroupId(newitem.TeamGroupId); } else { getItem.TeamGroupId = null; getItem.TeamGroupName = newitem.TeamGroupName; } if (!string.IsNullOrEmpty(newitem.RoleId)) { getItem.RoleId = newitem.RoleId; getItem.RoleName = RoleService.getRoleNamesRoleIds(newitem.RoleId); } else { getItem.RoleId = null; getItem.RoleName = newitem.RoleName; } } db.SubmitChanges(); } } #endregion #region 人员离场 /// /// 人员离场 /// /// /// public static void OutPersonItem(string personId, string projectId, DateTime? outTime) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { var getPersonItemNoOut = from x in db.SitePerson_PersonItem where x.PersonId == personId && !x.OutTime.HasValue select x; if (!string.IsNullOrEmpty(projectId)) { getPersonItemNoOut = getPersonItemNoOut.Where(x => x.ProjectId == projectId); } if (getPersonItemNoOut.Count() > 0) { foreach (var item in getPersonItemNoOut) { item.OutTime = outTime ?? DateTime.Now; item.OutResult = item.OutResult; db.SubmitChanges(); } } } } #endregion #region 根据Id删除一个明细信息 /// /// 根据Id删除一个明细信息 /// /// public static void DeletePersonItem(string personItemId) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { Model.SitePerson_PersonItem PersonItem = db.SitePerson_PersonItem.FirstOrDefault(e => e.PersonItemId == personItemId); if (PersonItem != null) { db.SitePerson_PersonItem.DeleteOnSubmit(PersonItem); db.SubmitChanges(); } } } #endregion } }