SGGL_SHJ/SGGL/BLL/API/APIPersonService.cs

1298 lines
67 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 Microsoft.SqlServer.Dts.Runtime;
using Model;
using NPOI.SS.Formula.PTG;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web.Security;
namespace BLL
{
public static class APIPersonService
{
#region
/// <summary>
/// 获取项目现场人员登录信息
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public static Model.UserItem PersonLogOn(Model.UserItem userInfo)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getUser = from x in db.SitePerson_Person
join y in db.Person_Persons on x.IdentityCard equals y.IdentityCard
where (y.Telephone == userInfo.Account || x.PersonName == userInfo.Account)
&& (y.Password == Funs.EncryptionPassword(userInfo.Password)
|| (x.IdentityCard != null && x.IdentityCard.Substring(x.IdentityCard.Length - 4) == userInfo.Password))
&& x.States == Const.ProjectPersonStates_1
select new Model.UserItem
{
PersonId = x.PersonId,
UserCode = x.CardNo,
Password = y.Password,
PersonName = x.PersonName,
UnitId = x.UnitId,
LoginProjectId = x.ProjectId,
IdentityCard = x.IdentityCard,
Account = y.Telephone,
UnitName = db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName,
LoginProjectName = db.Base_Project.First(u => u.ProjectId == x.ProjectId).ProjectName,
Telephone = y.Telephone,
WorkPostId = x.WorkPostId,
WorkPostName = db.Base_WorkPost.First(w => w.WorkPostId == x.WorkPostId).WorkPostName,
UserType = "3",
};
return getUser.FirstOrDefault();
}
}
#endregion
#region personId获取人员信息 -
/// <summary>
/// 根据personId获取人员信息
/// </summary>
/// <param name="sitePersonId"></param>
/// <returns></returns>
public static Model.PersonItem getPersonBySitePersonId(string sitePersonId, string projectId, string idcard)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.PersonItem person = new Model.PersonItem();
var getProjectPerson = db.SitePerson_Person.FirstOrDefault(x => x.SitePersonId == sitePersonId || (x.ProjectId == projectId && x.IdentityCard == idcard));
if (getProjectPerson != null)
{
person.SitePersonId = getProjectPerson.SitePersonId;
person.PersonId = getProjectPerson.PersonId;
person.States = getProjectPerson.States;
person.CardNo = getProjectPerson.CardNo;
person.PersonName = getProjectPerson.PersonName;
person.IdentityCard = getProjectPerson.IdentityCard;
idcard = getProjectPerson.IdentityCard;
person.ProjectId = getProjectPerson.ProjectId;
var getProject = db.Base_Project.FirstOrDefault(x => x.ProjectId == getProjectPerson.ProjectId);
if (getProject != null)
{
person.ProjectCode = getProject.ProjectCode;
person.ProjectName = getProject.ProjectName;
}
person.UnitId = getProjectPerson.UnitId;
var gettUnit = db.Base_Unit.FirstOrDefault(x => x.UnitId == getProjectPerson.UnitId);
if (gettUnit != null)
{
person.UnitCode = gettUnit.UnitCode;
person.UnitName = gettUnit.UnitName;
}
person.WorkAreaId = getProjectPerson.WorkAreaId;
var getWorkArea = db.WBS_UnitWork.FirstOrDefault(e => e.UnitWorkId == getProjectPerson.WorkAreaId);
if (getWorkArea != null)
{
person.WorkAreaName = getWorkArea.UnitWorkName;
}
person.TeamGroupId = getProjectPerson.TeamGroupId;
var getTeam = db.ProjectData_TeamGroup.FirstOrDefault(e => e.TeamGroupId == getProjectPerson.TeamGroupId);
if (getTeam != null)
{
person.TeamGroupName = getTeam.TeamGroupName;
}
person.WorkPostId = getProjectPerson.WorkPostId;
var getWorkPost = db.Base_WorkPost.FirstOrDefault(x => x.WorkPostId == getProjectPerson.WorkPostId);
if (getWorkPost != null)
{
person.WorkPostName = getWorkPost.WorkPostName;
}
person.InTime = string.Format("{0:yyyy-MM-dd}", getProjectPerson.InTime);
person.OutTime = string.Format("{0:yyyy-MM-dd}", getProjectPerson.OutTime);
person.OutResult = getProjectPerson.OutResult;
person.AuditorId = getProjectPerson.AuditorId;
var getAuPerson = db.Person_Persons.FirstOrDefault(z => z.PersonId == getProjectPerson.AuditorId);
if (getAuPerson != null)
{
person.AuditorName = getAuPerson.PersonName;
}
else
{
var getAs = Person_PersonsService.GetUserListByProjectIdUnitIdRoleId(getProjectPerson.ProjectId, Const.UnitId_SEDIN, BLL.Const.HSSEManager + "," + BLL.Const.HSSEAssistantManager);
if (getAs.Count() > 0)
{
var getA = getAs.FirstOrDefault();
if (getA != null)
{
person.AuditorId = getA.PersonId;
person.AuditorName = getA.PersonName;
}
}
}
person.AuditorDate = string.Format("{0:yyyy-MM-dd}", getProjectPerson.AuditorDate);
person.AttachUrl2 = APIUpLoadFileService.getFileUrl(getProjectPerson.PersonId + "#2", null);
person.AttachUrl3 = APIUpLoadFileService.getFileUrl(getProjectPerson.PersonId + "#3", null);
person.AttachUrl4 = getAttachUrl4(getProjectPerson.PersonId);
//person.AttachUrl5 = APIUpLoadFileService.getFileUrl(personId + "#5", null);
}
var getPerson = db.Person_Persons.FirstOrDefault(x => x.IdentityCard == idcard);
if (getPerson != null)
{
person.PersonId = getPerson.PersonId;
person.PersonName = getPerson.PersonName;
person.IdentityCard = getPerson.IdentityCard;
person.Sex = getPerson.Sex;
person.SexName = getPerson.Sex == "1" ? "男" : "女";
person.Address = getPerson.Address;
person.Telephone = getPerson.Telephone;
person.PhotoUrl = getPerson.PhotoUrl;
person.IsForeign = getPerson.IsForeign.HasValue ? getPerson.IsForeign : false;
person.PersonType = getPerson.PersonType;
person.PersonTypeName = DropListService.getPersonTypeNameByValue(getPerson.PersonType);
person.AttachUrl1 = getPerson.IDCardUrl == null ? APIUpLoadFileService.getFileUrl(getProjectPerson.PersonId + "#1", null) : getPerson.IDCardUrl.Replace('\\', '/');
person.AttachUrl5 = getPerson.IDCardBackUrl == null ? APIUpLoadFileService.getFileUrl(getProjectPerson.PersonId + "#5", null) : getPerson.IDCardBackUrl.Replace('\\', '/');
person.IdcardType = getPerson.IdcardType;
person.IdcardTypeName = "身份证";
person.IdcardStartDate = string.Format("{0:yyyy-MM-dd}", getPerson.IdcardStartDate);
person.IdcardEndDate = string.Format("{0:yyyy-MM-dd}", getPerson.IdcardEndDate);
person.IdcardForever = getPerson.IdcardForever;
person.IdcardForeverStr = getPerson.IdcardForever == "Y" ? "是" : "否";
person.PoliticsStatus = getPerson.PoliticsStatus;
person.UnitId = getPerson.UnitId;
var gettUnit = db.Base_Unit.FirstOrDefault(x => x.UnitId == getPerson.UnitId);
if (gettUnit != null)
{
person.UnitCode = gettUnit.UnitCode;
person.UnitName = gettUnit.UnitName;
}
person.WorkPostId = getPerson.WorkPostId;
var getWorkPost = db.Base_WorkPost.FirstOrDefault(x => x.WorkPostId == getPerson.WorkPostId);
if (getWorkPost != null)
{
person.WorkPostName = getWorkPost.WorkPostName;
}
var getRealName_BasicData = db.RealName_BasicData.FirstOrDefault(x => x.DictCode == getPerson.PoliticsStatus);
if (getRealName_BasicData != null)
{
person.PoliticsStatusName = getRealName_BasicData.DictName;
}
person.IdcardAddress = getPerson.IdcardAddress;
person.Nation = getPerson.Nation;
var getRealName_BasicData1 = db.RealName_BasicData.FirstOrDefault(x => x.DictCode == getPerson.Nation);
if (getRealName_BasicData1 != null)
{
person.NationName = getRealName_BasicData1.DictName;
}
person.EduLevel = getPerson.EduLevel;
var getRealName_BasicData2 = db.RealName_BasicData.FirstOrDefault(x => x.DictCode == getPerson.EduLevel);
if (getRealName_BasicData2 != null)
{
person.EduLevelName = getRealName_BasicData2.DictName;
}
person.MaritalStatus = getPerson.MaritalStatus;
var getRealName_BasicData3 = db.RealName_BasicData.FirstOrDefault(x => x.DictCode == getPerson.MaritalStatus);
if (getRealName_BasicData3 != null)
{
person.MaritalStatusName = getRealName_BasicData3.DictName;
}
person.CountryCode = getPerson.CountryCode;
var getRealName_Country = db.RealName_Country.FirstOrDefault(x => x.CountryId == getPerson.CountryCode);
if (getRealName_Country != null)
{
person.CountryName = getRealName_Country.Cname;
}
person.ProvinceCode = getPerson.ProvinceCode;
var getRealName_City = db.RealName_City.FirstOrDefault(x => x.CountryId == getPerson.CountryCode && x.ProvinceCode == getPerson.ProvinceCode);
if (getRealName_City != null)
{
person.ProvinceName = getRealName_City.Cname;
}
}
return person;
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public static string getAttachUrl4(string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
string returnUrl = APIUpLoadFileService.getFileUrl(personId + "#4", null);
var getPersonQuality = db.QualityAudit_PersonQuality.FirstOrDefault(x => x.PersonId == personId);
if (getPersonQuality != null)
{
string url1 = APIUpLoadFileService.getFileUrl(getPersonQuality.PersonQualityId, null);
if (!string.IsNullOrEmpty(url1))
{
if (!string.IsNullOrEmpty(returnUrl))
{
returnUrl += "," + url1;
}
else
{
returnUrl = url1;
}
}
}
return returnUrl;
}
}
#endregion
#region projectIdunitid获取人员信息
/// <summary>
/// 根据projectId、unitid获取人员信息
/// </summary>
/// <param name="personId"></param>
/// <returns></returns>
public static List<Model.PersonItem> getPersonByProjectIdUnitId(string projectId, string unitId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var persons = from x in db.View_SitePerson_Person
where x.ProjectId == projectId && (x.UnitId == unitId || unitId == null)
&& x.States == Const.ProjectPersonStates_1
orderby x.CardNo descending
select new Model.PersonItem
{
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
SexName = x.SexName,
IdentityCard = x.IdentityCard,
Address = x.Address,
ProjectId = x.ProjectId,
ProjectCode = x.ProjectCode,
ProjectName = x.ProjectName,
UnitId = x.UnitId,
UnitCode = x.UnitCode,
UnitName = x.UnitName,
TeamGroupId = x.TeamGroupId,
TeamGroupName = x.TeamGroupName,
WorkPostId = x.WorkPostId,
WorkPostName = x.WorkPostName,
InTime = string.Format("{0:yyyy-MM-dd}", x.InTime),
OutTime = string.Format("{0:yyyy-MM-dd}", x.OutTime),
OutResult = x.OutResult,
Telephone = x.Telephone,
PhotoUrl = x.PhotoUrl,
DepartName = x.DepartName,
WorkAreaId = x.WorkAreaId,
WorkAreaName = x.WorkAreaName,
PostType = x.PostType,
IsForeign = x.IsForeign.HasValue ? x.IsForeign : false,
PersonType = x.PersonType,
PersonTypeName = x.PersonType == "2" ? "外聘" : (x.PersonType == "3" ? "第三方" : "员工"),
PostTypeName = db.Sys_Const.First(z => z.GroupId == ConstValue.Group_PostType && z.ConstValue == x.PostType).ConstText,
};
return persons.ToList();
}
}
#endregion
#region
/// <summary>
/// 记录数
/// </summary>
public static int getPersonListCount
{
get;
set;
}
/// <summary>
/// 获取在岗、离岗、待审人员列表
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="states">0待审1在岗2离岗</param>
/// <param name="strUnitId">查询单位</param>
/// <param name="strWorkPostId">查询岗位</param>
/// <param name="strParam">查询条件</param>
/// <returns></returns>
public static List<Model.PersonItem> getPersonListByProjectIdStates(string projectId, string unitId, string states, string strUnitId, string strWorkPostId, string strParam, int pageIndex)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getViews = from x in db.SitePerson_Person
where x.ProjectId == projectId && (strUnitId == null || x.UnitId == strUnitId)
&& (strWorkPostId == null || x.WorkPostId == strWorkPostId)
&& x.States == states
select x;
if (unitId != Const.UnitId_SEDIN && !string.IsNullOrEmpty(unitId))
{
getViews = getViews.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(strParam))
{
getViews = getViews.Where(x => x.PersonName.Contains(strParam) || x.IdentityCard.Contains(strParam));
}
getPersonListCount = getViews.Count();
if (getPersonListCount == 0)
{
return null;
}
else
{
var persons = from x in getViews
join p in db.Person_Persons on x.PersonId equals p.PersonId
join y in db.Base_Unit on x.UnitId equals y.UnitId
orderby x.InTime descending
select new Model.PersonItem
{
SitePersonId = x.SitePersonId,
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
SexName = (p.Sex == "2" ? "女" : "男"),
IdentityCard = x.IdentityCard,
Address = p.Address,
ProjectId = x.ProjectId,
UnitId = x.UnitId,
UnitCode = y.UnitCode,
UnitName = y.UnitName,
TeamGroupId = x.TeamGroupId,
TeamGroupName = db.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName,
WorkPostId = x.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName,
InTime = string.Format("{0:yyyy-MM-dd}", x.InTime),
OutTime = string.Format("{0:yyyy-MM-dd}", x.OutTime),
OutResult = x.OutResult,
Telephone = p.Telephone,
PhotoUrl = p.PhotoUrl,
//IsUsed = x.IsUsed,
//IsUsedName = (x.IsUsed == true ? "启用" : "未启用"),
WorkAreaId = x.WorkAreaId,
WorkAreaName = UnitWorkService.GetUnitWorkName(x.WorkAreaId),
PostType = ReturnQuality(x.PersonId, x.WorkPostId),
//PostTypeName = db.Sys_Const.First(p => p.GroupId == ConstValue.Group_PostType && p.ConstValue == p.PostType).ConstText,
IsForeign = p.IsForeign.HasValue ? p.IsForeign : false,
PersonType = p.PersonType,
PersonTypeName = p.PersonType == "2" ? "外聘" : (p.PersonType == "3" ? "第三方" : "员工"),
States = x.States,
};
if (pageIndex > 0)
{
return persons.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
else
{
return persons.ToList();
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name=""></param>
/// <returns></returns>
private static string ReturnQuality(string personId, string workPostId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
string postType = "";
var workPost = db.Base_WorkPost.FirstOrDefault(x => x.WorkPostId == workPostId);
if (workPost != null)
{
if (workPost.PostType == Const.PostType_2)
{
var getPerQ = db.QualityAudit_PersonQuality.FirstOrDefault(x => x.PersonId == personId && x.States == Const.State_2 && x.LimitDate >= DateTime.Now.AddMonths(1));
if (getPerQ == null)
{
postType = "1";
}
}
else if (workPost.PostType == Const.PostType_5)
{
var getPerQ = db.QualityAudit_EquipmentPersonQuality.FirstOrDefault(x => x.PersonId == personId && x.States == Const.State_2 && x.LimitDate >= DateTime.Now.AddMonths(1));
if (getPerQ == null)
{
postType = "3";
}
}
if (workPost.IsHsse == true)
{
var getPerQ = db.QualityAudit_SafePersonQuality.FirstOrDefault(x => x.PersonId == personId && x.States == Const.State_2 && x.LimitDate >= DateTime.Now.AddMonths(1));
if (getPerQ == null)
{
postType = "2";
}
}
}
return postType;
}
}
#endregion
#region
/// <summary>
/// 根据培训类型获取项目培训人员信息
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitIds">培训单位ID</param>
/// <param name="workPostIds">培训岗位ID</param>
/// <param name="trainTypeId">培训类型ID</param>
/// <returns></returns>
public static List<Model.PersonItem> getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<string> unitIdList = Funs.GetStrListByStr(unitIds, ',');
var getPersons = from x in db.View_SitePerson_Person
where x.ProjectId == projectId && unitIdList.Contains(x.UnitId) && x.States == Const.ProjectPersonStates_1
select new Model.PersonItem
{
SitePersonId = x.SitePersonId,
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
SexName = x.SexName,
IdentityCard = x.IdentityCard,
Address = x.Address,
ProjectId = x.ProjectId,
ProjectCode = x.ProjectCode,
ProjectName = x.ProjectName,
UnitId = x.UnitId,
UnitCode = x.UnitCode,
UnitName = x.UnitName,
TeamGroupId = x.TeamGroupId,
TeamGroupName = x.TeamGroupName,
WorkPostId = x.WorkPostId,
WorkPostName = x.WorkPostName,
InTime = string.Format("{0:yyyy-MM-dd}", x.InTime),
OutTime = string.Format("{0:yyyy-MM-dd}", x.OutTime),
OutResult = x.OutResult,
Telephone = x.Telephone,
PhotoUrl = x.PhotoUrl,
DepartName = x.DepartName,
};
if (!string.IsNullOrEmpty(workPostIds))
{
List<string> workPostIdList = Funs.GetStrListByStr(workPostIds, ',');
getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId));
}
List<Model.PersonItem> getTrainPersonList = new List<Model.PersonItem>();
var getTrainType = TrainTypeService.GetTrainTypeById(trainTypeId);
if (getTrainType != null && (!getTrainType.IsRepeat.HasValue || getTrainType.IsRepeat == false))
{
foreach (var item in getPersons)
{
var getTrainPersonIdList1 = (from x in db.EduTrain_TrainRecordDetail
join y in db.EduTrain_TrainRecord on x.TrainingId equals y.TrainingId
where y.ProjectId == projectId && y.TrainTypeId == trainTypeId && x.CheckResult == true && x.PersonId == item.PersonId
select x).FirstOrDefault();
if (getTrainPersonIdList1 == null)
{
var getTrainPersonIdList2 = (from x in db.Training_Task
join y in db.Training_Plan on x.PlanId equals y.PlanId
where y.ProjectId == projectId && y.TrainTypeId == trainTypeId && y.States != "3" && x.UserId == item.PersonId
select x).FirstOrDefault();
if (getTrainPersonIdList2 == null)
{
getTrainPersonList.Add(item);
}
}
}
return getTrainPersonList;
}
else
{
return getPersons.ToList();
}
}
}
#endregion
#region
/// <summary>
/// 人员信息保存方法
/// </summary>
/// <param name="person">人员信息</param>
public static string SaveSitePerson(Model.PersonItem person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
string message = string.Empty;
///人员信息提示
var newPerson = getSavePerson(person);
// string personInfo = Person_PersonsService.ValidPersonInfo(newPerson);
///项目人员提示
var newProjectPerson = getSaveProjectPerson(person);
string projectPersonInfo = SitePerson_PersonService.ValidPersonInfo(newProjectPerson);
if (string.IsNullOrEmpty(projectPersonInfo))
{
if (string.IsNullOrEmpty(newPerson.PhotoUrl))
{
message += "照片不能为空!";
}
if (string.IsNullOrEmpty(newPerson.PersonId))
{
var getPersonByIdentityCard = Person_PersonsService.GetPerson_PersonsByIdCard(newPerson.IdentityCard);
if (getPersonByIdentityCard != null)
{
newPerson.PersonId = getPersonByIdentityCard.PersonId;
}
}
if (!string.IsNullOrEmpty(newPerson.PersonId))
{
Person_PersonsService.UpdatePersonByProject(newPerson);
}
else
{
newPerson.IsOffice = false;
newPerson.PersonId = SQLHelper.GetNewID();
Person_PersonsService.AddPerson(newPerson);
}
newProjectPerson.PersonId = newPerson.PersonId;
if (newProjectPerson.SitePersonId != null)
{
var getProjectPerson = db.SitePerson_Person.FirstOrDefault(x => x.ProjectId == newProjectPerson.ProjectId && x.IdentityCard == newPerson.IdentityCard);
if (getProjectPerson != null)
{
newProjectPerson.SitePersonId = getProjectPerson.SitePersonId;
}
}
if (!string.IsNullOrEmpty(newProjectPerson.SitePersonId))
{
Model.Sys_Log newlog = new Sys_Log
{
UserId = newPerson.PersonId,
MenuId = Const.PersonListMenuId,
OperationName = "APP修改人员",
OperationLog = "修改人员"+newPerson.PersonName,
DataId = newPerson.PersonId,
ProjectId = person.ProjectId,
};
SitePerson_PersonService.UpdateSitePerson(newProjectPerson, newlog);
}
else
{
newProjectPerson.SitePersonId = SQLHelper.GetNewID();
SitePerson_PersonService.AddSitePerson(newProjectPerson);
}
if (!string.IsNullOrEmpty(newPerson.PersonId))
{
SaveMeetUrl(newPerson.PersonId, Const.PersonListMenuId, person.AttachUrl1, person.AttachUrl2, person.AttachUrl3, person.AttachUrl4, person.AttachUrl5);
}
if (person.States == Const.ProjectPersonStates_0 && !string.IsNullOrEmpty(newProjectPerson.AuditorId))
{
APICommonService.SendSubscribeMessage(newProjectPerson.AuditorId, "人员信息待您审核", person.ProjectCode, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
}
}
else
{
message = projectPersonInfo ?? "";
}
return message;
}
}
#region
/// <summary>
/// 人员附件保存方法
/// </summary>
public static void SaveMeetUrl(string personId, string menuId, string url1, string url2, string url3, string url4, string url5)
{
Model.ToDoItem toDoItem = new Model.ToDoItem
{
MenuId = menuId,
DataId = personId + "#1",
UrlStr = url1,
};
if (!string.IsNullOrEmpty(url1))
{
APIUpLoadFileService.SaveAttachUrl(toDoItem);
}
toDoItem.DataId = personId + "#2";
toDoItem.UrlStr = url2;
if (!string.IsNullOrEmpty(url2))
{
APIUpLoadFileService.SaveAttachUrl(toDoItem);
}
toDoItem.DataId = personId + "#3";
toDoItem.UrlStr = url3;
if (!string.IsNullOrEmpty(url3))
{
APIUpLoadFileService.SaveAttachUrl(toDoItem);
}
toDoItem.DataId = personId + "#4";
toDoItem.UrlStr = url4;
if (!string.IsNullOrEmpty(url4))
{
APIUpLoadFileService.SaveAttachUrl(toDoItem);
}
toDoItem.DataId = personId + "#5";
toDoItem.UrlStr = url5;
if (!string.IsNullOrEmpty(url5))
{
APIUpLoadFileService.SaveAttachUrl(toDoItem);
}
}
#endregion
#region
/// <summary>
/// 收集人员库信息
/// </summary>
public static Model.Person_Persons getSavePerson(Model.PersonItem person)
{
Model.Person_Persons newPerson = new Model.Person_Persons
{
PersonId = person.PersonId,
PersonName = person.PersonName,
UnitId = person.UnitId,
WorkPostId = person.WorkPostId,
PersonType = person.PersonType,
IsForeign = person.IsForeign,
IsPost = true,
IdcardType = string.IsNullOrEmpty(person.IdcardType) ? "SHENFEN_ZHENGJIAN" : person.IdcardType,
IdentityCard = person.IdentityCard,
IdcardAddress = person.IdcardAddress,
IdcardForever = person.IdcardForever ?? "Y",
IdcardStartDate = Funs.GetNewDateTime(person.IdcardStartDate),
IdcardEndDate = Funs.GetNewDateTime(person.IdcardEndDate),
Telephone = person.Telephone,
Sex = person.Sex,
Birthday = person.Birthday,
//Major = person.Major,
//ForeignLanguage = person.ForeignLanguage,
CountryCode = string.IsNullOrEmpty(person.CountryCode) ? null : person.CountryCode,
ProvinceCode = string.IsNullOrEmpty(person.ProvinceCode) ? null : person.ProvinceCode,
Nation = string.IsNullOrEmpty(person.Nation) ? null : person.Nation,
PoliticsStatus = string.IsNullOrEmpty(person.PoliticsStatus) ? null : person.PoliticsStatus,
EduLevel = string.IsNullOrEmpty(person.EduLevel) ? null : person.EduLevel,
MaritalStatus = string.IsNullOrEmpty(person.MaritalStatus) ? null : person.MaritalStatus,
//RelativeName = person.RelativeName,
//RelativeTel = person.RelativeTel,
Address = person.Address,
//RoleIds = Funs.GetStringByArray(this.drpProjectRole.SelectedValueArray),
PhotoUrl = person.PhotoUrl,
IDCardUrl = person.AttachUrl1,
QRCodeAttachUrl = person.AttachUrl5,
IDCardBackUrl = person.AttachUrl5,
};
string rootUrl = ConfigurationManager.AppSettings["localRoot"];
if (!string.IsNullOrEmpty(rootUrl) && !string.IsNullOrEmpty(person.PhotoUrl))
{
newPerson.HeadImage = AttachFileService.SetImageToByteArray(rootUrl + person.PhotoUrl);
}
return newPerson;
}
#endregion
#region
/// <summary>
/// 收集项目人员信息
/// </summary>
public static Model.SitePerson_Person getSaveProjectPerson(Model.PersonItem person)
{
Model.SitePerson_Person newPerson = new Model.SitePerson_Person
{
PersonId = person.PersonId,
SitePersonId = person.SitePersonId,
PersonName = person.PersonName,
IdentityCard = person.IdentityCard,
UnitId = person.UnitId,
ProjectId = person.ProjectId,
WorkPostId = string.IsNullOrEmpty(person.WorkPostId) ? null : person.WorkPostId,
// RoleIds = Funs.GetStringByArray(this.drpProjectRole.SelectedValueArray),
TeamGroupId = string.IsNullOrEmpty(person.TeamGroupId) ? null : person.TeamGroupId,
InTime = Funs.GetNewDateTime(person.InTime),
AuditorId = person.AuditorId,
OutTime = Funs.GetNewDateTime(person.OutTime),
OutResult = person.OutResult,
States = person.States ?? Const.ProjectPersonStates_0,
WorkAreaId = person.WorkAreaId,
};
return newPerson;
}
#endregion
#endregion
#region
/// <summary>
/// 更新人员附件
/// </summary>
/// <param name="person"></param>
public static void SaveSitePersonAttachment(Model.PersonItem person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = db.Person_Persons.FirstOrDefault(x => x.IdentityCard == person.IdentityCard || x.PersonId == person.PersonId);
if (getPerson != null)
{
if (!string.IsNullOrEmpty(person.PhotoUrl))
{
getPerson.PhotoUrl = person.PhotoUrl;
string rootUrl = ConfigurationManager.AppSettings["localRoot"];
if (!string.IsNullOrEmpty(rootUrl) && !string.IsNullOrEmpty(person.PhotoUrl))
{
getPerson.HeadImage = AttachFileService.SetImageToByteArray(rootUrl + person.PhotoUrl);
}
}
if (!string.IsNullOrEmpty(person.AttachUrl1))
{
getPerson.IDCardUrl = person.AttachUrl1;
}
db.SubmitChanges();
SaveMeetUrl(getPerson.PersonId, Const.PersonListMenuId, person.AttachUrl1, person.AttachUrl2, person.AttachUrl3, person.AttachUrl4, person.AttachUrl5);
}
}
}
#endregion
#region
/// <summary>
/// 更新人员数据交换时间
/// </summary>
/// <param name="sitePersonId">人员ID</param>
public static void getUpdatePersonExchangeTime(string sitePersonId, string type)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.SitePersonId == sitePersonId);
if (getPerson != null && !string.IsNullOrEmpty(type))
{
if (type == "1")
{
getPerson.ExchangeTime2 = DateTime.Now;
}
else
{
getPerson.ExchangeTime = DateTime.Now;
}
db.SubmitChanges();
}
}
}
#endregion
#region
/// <summary>
/// 获取人员信息出入场记录
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="strParam"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public static List<Model.PersonInOutItem> getPersonInOutList(string projectId, string unitId, string startTime, string endTime)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
DateTime? startTimeD = Funs.GetNewDateTime(startTime);
DateTime? endTimeD = Funs.GetNewDateTime(endTime);
var personInOuts = from x in db.SitePerson_PersonInOut
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where x.ProjectId == projectId
select new Model.PersonInOutItem
{
PersonId = x.PersonId,
PersonName = y.PersonName,
ProjectId = x.ProjectId,
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
WorkPostId = y.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName,
IsIn = x.IsIn,
IsInName = x.IsIn == true ? "进场" : "出场",
ChangeTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ChangeTime),
ChangeTimeD = x.ChangeTime,
};
if (!string.IsNullOrEmpty(unitId) && unitId != Const.UnitId_SEDIN)
{
personInOuts = personInOuts.Where(x => x.UnitId == unitId);
}
if (startTimeD.HasValue)
{
personInOuts = personInOuts.Where(x => x.ChangeTimeD >= startTimeD);
}
if (endTimeD.HasValue)
{
personInOuts = personInOuts.Where(x => x.ChangeTimeD <= endTimeD);
}
return personInOuts.OrderByDescending(x => x.ChangeTimeD).ToList();
}
}
#endregion
#region
/// <summary>
/// 获取人员信息出入场记录
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="strParam"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public static List<Model.PersonInOutItem> getPersonInOutList(string projectId, string userUnitId, string unitId, string workPostId, string strParam, string startTime, string endTime)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
DateTime? startTimeD = Funs.GetNewDateTime(startTime);
DateTime? endTimeD = Funs.GetNewDateTime(endTime);
var personInOuts = from x in db.SitePerson_PersonInOut
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where x.ProjectId == projectId
select new Model.PersonInOutItem
{
PersonId = x.PersonId,
PersonName = y.PersonName,
ProjectId = x.ProjectId,
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
WorkPostId = y.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName,
IsIn = x.IsIn,
IsInName = x.IsIn == true ? "进场" : "出场",
ChangeTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ChangeTime),
ChangeTimeD = x.ChangeTime,
};
if (!string.IsNullOrEmpty(userUnitId) && userUnitId != Const.UnitId_SEDIN)
{
personInOuts = personInOuts.Where(x => x.UnitId == userUnitId);
}
if (!string.IsNullOrEmpty(unitId))
{
personInOuts = personInOuts.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(workPostId))
{
personInOuts = personInOuts.Where(x => x.WorkPostId == workPostId);
}
if (startTimeD.HasValue)
{
personInOuts = personInOuts.Where(x => x.ChangeTimeD >= startTimeD);
}
if (endTimeD.HasValue)
{
personInOuts = personInOuts.Where(x => x.ChangeTimeD <= endTimeD);
}
if (!string.IsNullOrEmpty(strParam))
{
personInOuts = personInOuts.Where(x => x.PersonName.Contains(strParam));
}
return personInOuts.OrderByDescending(x => x.ChangeTimeD).ToList();
}
}
#endregion
#region ID获取个人出入场记录
/// <summary>
/// 根据人员ID获取个人出入场记录
/// </summary>
/// <param name="personId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public static List<Model.PersonInOutItem> getPersonInOutListByPersonId(string personId, string startTime, string endTime)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
DateTime? startTimeD = Funs.GetNewDateTime(startTime);
DateTime? endTimeD = Funs.GetNewDateTime(endTime);
var personInOuts = from x in db.SitePerson_PersonInOut
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where x.PersonId == personId
select new Model.PersonInOutItem
{
PersonId = x.PersonId,
PersonName = y.PersonName,
ProjectId = x.ProjectId,
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
WorkPostId = y.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName,
IsIn = x.IsIn,
IsInName = x.IsIn == true ? "进场" : "出场",
ChangeTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ChangeTime),
ChangeTimeD = x.ChangeTime,
};
if (startTimeD.HasValue)
{
personInOuts = personInOuts.Where(x => x.ChangeTimeD >= startTimeD);
}
if (endTimeD.HasValue)
{
personInOuts = personInOuts.Where(x => x.ChangeTimeD <= endTimeD);
}
return personInOuts.OrderByDescending(x => x.ChangeTimeD).ToList();
}
}
#endregion
#region identityCard获取人员资质信息
/// <summary>
/// 根据identityCard获取人员资质信息
/// </summary>
/// <param name="identityCard"></param>
/// <returns></returns>
public static Model.PersonQualityItem getPersonQualityByIdentityCard(string identityCard, string projectId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getLists = from y in db.SitePerson_Person
join x in db.QualityAudit_PersonQuality on y.PersonId equals x.PersonId
where (y.IdentityCard == identityCard || x.PersonId == identityCard) && (projectId == null || y.ProjectId == projectId)
orderby y.CardNo
select new Model.PersonQualityItem
{
PersonQualityId = x.PersonQualityId,
PersonId = x.PersonId,
PersonName = y.PersonName,
CardNo = y.CardNo,
IdentityCard = y.IdentityCard,
ProjectId = y.ProjectId,
UnitId = y.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
UnitCode = db.Base_Unit.First(z => z.UnitId == y.UnitId).UnitCode,
WorkPostId = y.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName,
CertificateId = x.CertificateId,
CertificateName = db.Base_Certificate.First(z => z.CertificateId == x.CertificateId).CertificateName,
CertificateNo = x.CertificateNo,
Grade = x.Grade,
SendUnit = x.SendUnit,
SendDate = string.Format("{0:yyyy-MM-dd}", x.SendDate),
LimitDate = string.Format("{0:yyyy-MM-dd}", x.LimitDate),
LateCheckDate = string.Format("{0:yyyy-MM-dd}", x.LateCheckDate),
ApprovalPerson = db.Person_Persons.First(z => z.PersonId == x.AuditorId).PersonName,
Remark = x.Remark,
CompileMan = x.CompileMan,
CompileManName = db.Person_Persons.First(z => z.PersonId == x.CompileMan).PersonName,
CompileDate = string.Format("{0:yyyy-MM-dd}", x.CompileDate),
AuditDate = string.Format("{0:yyyy-MM-dd}", x.AuditDate),
AuditorName = db.Person_Persons.First(z => z.PersonId == x.AuditorId).PersonName,
AttachUrl = APIUpLoadFileService.getFileUrl(x.PersonQualityId, null),
};
return getLists.FirstOrDefault();
}
}
#endregion
#region identityCard获取人员资质信息
/// <summary>
/// 根据identityCard获取人员资质信息
/// </summary>
/// <param name="identityCard"></param>
/// <returns></returns>
public static List<Model.TestRecordItem> getPersonTestRecoedByIdentityCard(string identityCard, string projectId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getLists = from x in db.EduTrain_TrainRecordDetail
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.EduTrain_TrainRecord on x.TrainingId equals z.TrainingId
where y.IdentityCard == identityCard && (projectId == null || z.ProjectId == projectId)
orderby z.TrainStartDate descending
select new Model.TestRecordItem
{
TestRecordId = x.TrainDetailId,
ProjectId = z.ProjectId,
ProjectName = db.Base_Project.First(u => u.ProjectId == z.ProjectId).ProjectName,
TestPlanName = z.TrainTitle,
TestManId = x.PersonId,
TestManName = y.PersonName,
TestStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", z.TrainStartDate),
TestEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", z.TrainEndDate),
TestScores = x.CheckScore ?? 0,
CheckResult = x.CheckResult,
TestType = db.Base_TrainType.First(u => u.TrainTypeId == z.TrainTypeId).TrainTypeName,
};
return getLists.ToList();
}
}
#endregion
#region projectIdunitid获取特岗人员资质信息
/// <summary>
/// 根据projectId、unitid获取特岗人员资质信息
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitId">单位ID</param>
/// <param name="type">数据类型0-已过期1-即将过期2-无证书</param>
/// <param name="pageIndex">页码</param>
/// <returns></returns>
public static List<Model.PersonQualityItem> getPersonQualityByProjectIdUnitId(string projectId, string unitId, string type)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getLists = (from x in db.SitePerson_Person
join y in db.QualityAudit_PersonQuality on x.PersonId equals y.PersonId
join z in db.Base_WorkPost on x.WorkPostId equals z.WorkPostId
where x.ProjectId == projectId && z.PostType == "2"
orderby y.LimitDate
select new Model.PersonQualityItem
{
PersonQualityId = y.PersonQualityId,
PersonId = y.PersonId,
PersonName = x.PersonName,
CardNo = x.CardNo,
IdentityCard = x.IdentityCard,
ProjectId = x.ProjectId,
UnitId = x.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == x.UnitId).UnitName,
CertificateId = y.CertificateId,
CertificateName = db.Base_Certificate.First(z => z.CertificateId == y.CertificateId).CertificateName,
WorkPostId = x.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName,
CertificateNo = y.CertificateNo,
Grade = y.Grade,
SendUnit = y.SendUnit,
SendDate = string.Format("{0:yyyy-MM-dd}", y.SendDate),
LimitDate = string.Format("{0:yyyy-MM-dd}", y.LimitDate),
LimitDateD = y.LimitDate,
LateCheckDate = string.Format("{0:yyyy-MM-dd}", y.LateCheckDate),
ApprovalPerson = db.Person_Persons.First(z => z.PersonId == x.AuditorId).PersonName,
Remark = y.Remark,
CompileMan = y.CompileMan,
CompileManName = db.Person_Persons.First(z => z.PersonId == y.CompileMan).PersonName,
CompileDate = string.Format("{0:yyyy-MM-dd}", y.CompileDate),
AuditDate = string.Format("{0:yyyy-MM-dd}", y.AuditDate),
AuditorName = db.Person_Persons.First(z => z.PersonId == x.AuditorId).PersonName,
AttachUrl = APIUpLoadFileService.getFileUrl(y.PersonQualityId, null),
}).ToList();
if (ProjectUnitService.GetProjectUnitTypeByProjectIdUnitId(projectId, unitId))
{
getLists = getLists.Where(x => x.UnitId == unitId).ToList();
}
if (type == "0")
{
getLists = getLists.Where(x => x.CertificateId != null && x.LimitDateD < DateTime.Now).ToList();
}
else if (type == "1")
{
getLists = getLists.Where(x => x.CertificateId != null && x.LimitDateD >= DateTime.Now && x.LimitDateD < DateTime.Now.AddMonths(1)).ToList();
}
else if (type == "2")
{
getLists = getLists.Where(x => x.CertificateId == null).ToList();
}
return getLists;
}
}
#endregion
#region
/// <summary>
/// 人员资质信息保存方法
/// </summary>
/// <param name="personQuality">人员信息</param>
public static void SavePersonQuality(Model.PersonQualityItem personQuality)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.QualityAudit_PersonQuality newPersonQuality = new Model.QualityAudit_PersonQuality
{
PersonQualityId = personQuality.PersonQualityId,
PersonId = personQuality.PersonId,
CertificateNo = personQuality.CertificateNo,
CertificateName = personQuality.CertificateName,
Grade = personQuality.Grade,
SendUnit = personQuality.SendUnit,
SendDate = Funs.GetNewDateTime(personQuality.SendDate),
LimitDate = Funs.GetNewDateTime(personQuality.LimitDate),
LateCheckDate = Funs.GetNewDateTime(personQuality.LateCheckDate),
ApprovalPerson = personQuality.ApprovalPerson,
Remark = personQuality.Remark,
CompileDate = Funs.GetNewDateTime(personQuality.CompileDate),
AuditDate = Funs.GetNewDateTime(personQuality.AuditDate),
};
if (!string.IsNullOrEmpty(personQuality.CertificateId))
{
newPersonQuality.CertificateId = personQuality.CertificateId;
}
if (!string.IsNullOrEmpty(personQuality.CompileMan))
{
newPersonQuality.CompileMan = personQuality.CompileMan;
}
if (!string.IsNullOrEmpty(personQuality.AuditorId))
{
newPersonQuality.AuditorId = personQuality.AuditorId;
}
var getPersonQuality = db.QualityAudit_PersonQuality.FirstOrDefault(x => x.PersonQualityId == newPersonQuality.PersonQualityId || x.PersonId == newPersonQuality.PersonId);
if (getPersonQuality == null)
{
newPersonQuality.PersonQualityId = SQLHelper.GetNewID();
newPersonQuality.AuditDate = null;
db.QualityAudit_PersonQuality.InsertOnSubmit(newPersonQuality);
db.SubmitChanges();
}
else
{
newPersonQuality.PersonQualityId = getPersonQuality.PersonQualityId;
getPersonQuality.CertificateId = newPersonQuality.CertificateId;
getPersonQuality.CertificateNo = newPersonQuality.CertificateNo;
getPersonQuality.CertificateName = newPersonQuality.CertificateName;
getPersonQuality.Grade = newPersonQuality.Grade;
getPersonQuality.SendUnit = newPersonQuality.SendUnit;
getPersonQuality.SendDate = newPersonQuality.SendDate;
getPersonQuality.LimitDate = newPersonQuality.LimitDate;
getPersonQuality.LateCheckDate = newPersonQuality.LateCheckDate;
getPersonQuality.ApprovalPerson = newPersonQuality.ApprovalPerson;
getPersonQuality.Remark = newPersonQuality.Remark;
getPersonQuality.CompileMan = newPersonQuality.CompileMan;
getPersonQuality.CompileDate = newPersonQuality.CompileDate;
getPersonQuality.AuditDate = newPersonQuality.AuditDate;
getPersonQuality.AuditorId = newPersonQuality.AuditorId;
db.SubmitChanges();
}
if (!string.IsNullOrEmpty(newPersonQuality.PersonQualityId))
{
APIUpLoadFileService.SaveAttachUrl(Const.PersonQualityMenuId, newPersonQuality.PersonQualityId, personQuality.AttachUrl, "0");
}
}
}
#endregion
#region
/// <summary>
/// 获取异常人员信息出入场记录
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId">单位ID</param>
/// <param name="startTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <param name="inOut"> 入场异常 0 出场异常 1</param>
/// <param name="pageIndex">页码</param>
/// <returns></returns>
public static List<Model.PersonInOutItem> getAbnormalPersonInOutList(string projectId, string unitId, string startTime, string endTime, string inOut, int pageIndex)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
DateTime startTimeD = Funs.GetNewDateTimeOrNow(startTime);
DateTime endTimeD = Funs.GetNewDateTimeOrNow(endTime);
List<Model.PersonInOutItem> getAbnormalPersonInOutList = new List<Model.PersonInOutItem>();
//// 入场异常
if (inOut == "0")
{
var getAllPersonInOutLists = getPersonInOutLists(projectId, unitId, startTimeD.AddHours(-18), endTimeD);
/// 出场
var getPersonOuts = getAllPersonInOutLists.Where(x => (x.IsIn == false || x.IsIn == null) && x.ChangeTimeD >= startTimeD);
var getgetPersonIns = getAllPersonInOutLists.Where(x => x.IsIn == true);
Model.PersonInOutItem newItem = new Model.PersonInOutItem();
foreach (var item in getPersonOuts)
{
var getIn = getgetPersonIns.FirstOrDefault(x => x.PersonId == item.PersonId && x.ChangeTimeD.Value.AddHours(18) >= item.ChangeTimeD && x.ChangeTimeD < item.ChangeTimeD);
if (getIn == null)
{
getAbnormalPersonInOutList.Add(item);
}
}
}
else //// 出场异常
{
var getAllPersonInOutLists = getPersonInOutLists(projectId, unitId, startTimeD, endTimeD.AddHours(18));
/// 进场
var getPersonInts = getAllPersonInOutLists.Where(x => x.IsIn == true && x.ChangeTimeD <= endTimeD);
var getPersonOuts = getAllPersonInOutLists.Where(x => (x.IsIn == false || x.IsIn == null));
Model.PersonInOutItem newItem = new Model.PersonInOutItem();
foreach (var item in getPersonInts)
{
var getOut = getPersonOuts.FirstOrDefault(x => x.PersonId == item.PersonId && x.ChangeTimeD.Value.AddHours(-18) <= item.ChangeTimeD && x.ChangeTimeD > item.ChangeTimeD);
if (getOut == null)
{
getAbnormalPersonInOutList.Add(item);
}
}
}
return getAbnormalPersonInOutList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
}
/// <summary>
///
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="inOut"></param>
/// <returns></returns>
public static List<Model.PersonInOutItem> getPersonInOutLists(string projectId, string unitId, DateTime startTimeD, DateTime endTimeD)
{
var personInOuts = from x in Funs.DB.SitePerson_PersonInOut
join y in Funs.DB.SitePerson_Person on x.PersonId equals y.PersonId
where x.ProjectId == projectId && x.ChangeTime >= startTimeD && x.ChangeTime <= endTimeD
select new Model.PersonInOutItem
{
PersonId = x.PersonId,
PersonName = y.PersonName,
ProjectId = x.ProjectId,
UnitId = y.UnitId,
UnitName = Funs.DB.Base_Unit.First(z => z.UnitId == y.UnitId).UnitName,
WorkPostId = y.WorkPostId,
WorkPostName = Funs.DB.Base_WorkPost.First(z => z.WorkPostId == y.WorkPostId).WorkPostName,
IsIn = x.IsIn,
IsInName = x.IsIn == true ? "进场" : "出场",
ChangeTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ChangeTime),
ChangeTimeD = x.ChangeTime,
};
if (!string.IsNullOrEmpty(unitId))
{
personInOuts = personInOuts.Where(x => x.UnitId == unitId);
}
return personInOuts.ToList();
}
#endregion
public static string getStrTrainRecordByPersonId(string personId)
{
string strValues = string.Empty;
var getDataLists = from x in Funs.DB.EduTrain_TrainRecord
join y in Funs.DB.Base_TrainType on x.TrainTypeId equals y.TrainTypeId
join z in Funs.DB.EduTrain_TrainRecordDetail on x.TrainingId equals z.TrainingId
where z.PersonId == personId
orderby x.TrainStartDate descending
select new
{
y.TrainTypeName,
x.TrainStartDate,
CheckResultName = z.CheckResult ? "合格" : "不合格",
z.PersonId,
};
if (getDataLists.Count() > 0)
{
foreach (var item in getDataLists)
{
string strV = string.Format("{0:yyyy-MM-dd HH:mm}", item.TrainStartDate) + " " + item.TrainTypeName + " " + item.CheckResultName + "";
strValues += strV;
}
}
return strValues;
}
}
}