CNCEC_SUBQHSE_WUHUAN/SGGL/BLL/API/APIPersonService.cs

1835 lines
98 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 Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SgManager.AI;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
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
where (x.Telephone == userInfo.Account || x.PersonName == userInfo.Account)
&& x.Password == Funs.EncryptionPassword(userInfo.Password)
&& x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) && x.IsUsed == true
select new Model.UserItem
{
UserId = x.PersonId,
UserCode = x.CardNo,
Password = x.Password,
UserName = x.PersonName,
UnitId = x.UnitId,
LoginProjectId = x.ProjectId,
IdentityCard = x.IdentityCard,
Account = x.Telephone,
UnitName = db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName,
LoginProjectName = db.Base_Project.First(u => u.ProjectId == x.ProjectId).ProjectName,
Telephone = x.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="personId"></param>
/// <returns></returns>
public static Model.PersonItem getPersonByPersonId(string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = from x in db.View_SitePerson_Person
where (x.PersonId == personId || x.IdentityCard == personId)
select new Model.PersonItem
{
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
Sex = x.Sex,
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,
IsUsed = x.IsUsed,
IsUsedName = x.IsUsed == false ? "不启用" : "启用",
AuditorId = x.AuditorId,
AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName,
IsForeign = x.IsForeign.HasValue ? x.IsForeign : false,
IsOutside = x.IsOutside.HasValue ? x.IsOutside : false,
AuditorDate = string.Format("{0:yyyy-MM-dd}", x.AuditorDate),
AttachUrl1 = x.IDCardUrl == null ? APIUpLoadFileService.getFileUrl(personId + "#1", null) : x.IDCardUrl.Replace('\\', '/'),
AttachUrl2 = APIUpLoadFileService.getFileUrl(personId + "#2", null),
AttachUrl3 = APIUpLoadFileService.getFileUrl(personId + "#3", null),
AttachUrl4 = getAttachUrl4(x.PersonId),
AttachUrl5 = APIUpLoadFileService.getFileUrl(personId + "#5", null),
IdcardType=x.IdcardType,
IdcardTypeName=x.IdcardTypeName,
IdcardStartDate= string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate),
IdcardEndDate = string.Format("{0:yyyy-MM-dd}", x.IdcardEndDate),
IdcardForever=x.IdcardForever,
IdcardForeverStr=x.IdcardForeverStr,
PoliticsStatus=x.PoliticsStatus,
PoliticsStatusName=x.PoliticsStatusName,
IdcardAddress=x.IdcardAddress,
Nation=x.Nation,
NationName=x.NationName,
EduLevel=x.EduLevel,
EduLevelName=x.EduLevelName,
MaritalStatus=x.MaritalStatus,
MaritalStatusName=x.MaritalStatusName,
CountryCode=x.CountryCode,
CountryName=x.CountryName,
ProvinceCode=x.ProvinceCode,
ProvinceName=x.ProvinceName,
MainCNProfessionalId=x.MainCNProfessionalId,
MainCNProfessionalName=x.MainCNProfessionalName,
ViceCNProfessionalId=x.ViceCNProfessionalId,
ViceCNProfessionalName=x.ViceCNProfessionalName
};
return getPerson.FirstOrDefault();
}
}
/// <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 personId获取人员信息
/// <summary>
/// 根据personId获取人员信息
/// </summary>
/// <param name="personId"></param>
/// <returns></returns>
public static Model.PersonItem getPersonByProjectIdIdentityCard(string projectId, string identityCard)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = from x in db.View_SitePerson_Person
where x.ProjectId == projectId && (x.PersonId == identityCard || x.IdentityCard == identityCard)
select new Model.PersonItem
{
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
Sex = x.Sex,
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,
IsUsed = x.IsUsed,
IsUsedName = x.IsUsed == false ? "不启用" : "启用",
AuditorId = x.AuditorId,
AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName,
IsForeign = x.IsForeign.HasValue ? x.IsForeign : false,
IsOutside = x.IsOutside.HasValue ? x.IsOutside : false,
AuditorDate = string.Format("{0:yyyy-MM-dd}", x.AuditorDate),
AttachUrl1 = x.IDCardUrl == null ? APIUpLoadFileService.getFileUrl(x.PersonId + "#1", null) : x.IDCardUrl.Replace('\\', '/'),
AttachUrl2 = APIUpLoadFileService.getFileUrl(x.PersonId + "#2", null),
AttachUrl3 = APIUpLoadFileService.getFileUrl(x.PersonId + "#3", null),
AttachUrl4 = getAttachUrl4(x.PersonId),
AttachUrl5 = APIUpLoadFileService.getFileUrl(x.PersonId + "#5", null),
IdcardType = x.IdcardType,
IdcardTypeName = x.IdcardTypeName,
IdcardStartDate = string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate),
IdcardEndDate = string.Format("{0:yyyy-MM-dd}", x.IdcardEndDate),
IdcardForever = x.IdcardForever,
IdcardForeverStr = x.IdcardForeverStr,
PoliticsStatus = x.PoliticsStatus,
PoliticsStatusName = x.PoliticsStatusName,
IdcardAddress = x.IdcardAddress,
Nation = x.Nation,
NationName = x.NationName,
EduLevel = x.EduLevel,
EduLevelName = x.EduLevelName,
MaritalStatus = x.MaritalStatus,
MaritalStatusName = x.MaritalStatusName,
CountryCode = x.CountryCode,
CountryName = x.CountryName,
ProvinceCode = x.ProvinceCode,
ProvinceName = x.ProvinceName,
MainCNProfessionalId = x.MainCNProfessionalId,
MainCNProfessionalName = x.MainCNProfessionalName,
ViceCNProfessionalId = x.ViceCNProfessionalId,
ViceCNProfessionalName = x.ViceCNProfessionalName
};
return getPerson.FirstOrDefault();
}
}
#endregion
#region personid人员打回
/// <summary>
/// 根据personid人员打回
/// </summary>
/// <param name="personId"></param>
/// <param name="userId"></param>
/// <returns></returns>
public static void getReUserPersonByPersonId(string personId, string userId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == personId);
if (getPerson != null)
{
getPerson.IsUsed = false;
getPerson.AuditorId = userId;
getPerson.AuditorDate = DateTime.Now;
db.SubmitChanges();
}
}
}
#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.IsUsed == true
&& x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now)
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,
IsOutside = x.IsOutside.HasValue ? x.IsOutside : false,
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)
select x;
if (unitId != Const.UnitId_CWCEC && !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));
}
if (states == "0")
{
getViews = getViews.Where(x => x.IsUsed == false && !x.AuditorDate.HasValue);
}
else if (states == "1")
{
getViews = getViews.Where(x => x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now));
}
else if (states == "2")
{
getViews = getViews.Where(x => x.IsUsed == true && x.OutTime <= DateTime.Now);
}
else if (states == "-1")
{
getViews = getViews.Where(x => x.IsUsed == false && x.AuditorDate.HasValue);
}
getPersonListCount = getViews.Count();
if (getPersonListCount == 0)
{
return null;
}
else
{
var persons = from x in getViews
join y in db.Base_Unit on x.UnitId equals y.UnitId
orderby x.InTime descending
select new Model.PersonItem
{
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
SexName = (x.Sex == "2" ? "女" : "男"),
IdentityCard = x.IdentityCard,
Address = x.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 = x.Telephone,
PhotoUrl = x.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 = x.IsForeign.HasValue ? x.IsForeign : false,
IsOutside = x.IsOutside.HasValue ? x.IsOutside : false,
};
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.IsUsed == true
//&& x.InTime <= DateTime.Now
&& (!x.OutTime.HasValue || x.OutTime >= DateTime.Now)
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,
};
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="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, string strParam)
{
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 unitIdList.Contains(x.UnitId) && x.IsUsed == true
&& x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now)
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,
};
if (!string.IsNullOrEmpty(projectId))
{
getPersons = getPersons.Where(x => x.ProjectId == projectId);
}
else
{
getPersons = getPersons.Where(x => x.ProjectId == null);
}
if (!string.IsNullOrEmpty(strParam))
{
getPersons = getPersons.Where(x => x.PersonName.Contains(strParam));
}
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.ToList();
}
else
{
return getPersons.ToList();
}
}
}
/// <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(Model.PersonItem person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<string> unitIdList = Funs.GetStrListByStr(person.UnitId, ',');
var getPersons = from x in db.View_SitePerson_Person
where unitIdList.Contains(x.UnitId) && x.IsUsed == true
&& (!x.OutTime.HasValue || x.OutTime >= DateTime.Now)
select x;
if (!string.IsNullOrEmpty(person.ProjectId))
{
getPersons = getPersons.Where(x => x.ProjectId == person.ProjectId);
}
else
{
getPersons = getPersons.Where(x => x.ProjectId == null);
}
if (!string.IsNullOrEmpty(person.strParam))
{
getPersons = getPersons.Where(x => x.PersonName.Contains(person.strParam));
}
if (!string.IsNullOrEmpty(person.WorkPostId))
{
List<string> workPostIdList = Funs.GetStrListByStr(person.WorkPostId, ',');
getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId));
}
if (!string.IsNullOrEmpty(person.InTime))
{
DateTime? intimeD = Funs.GetNewDateTime(person.InTime);
getPersons = getPersons.Where(x => x.InTime == intimeD);
}
var getPersonItems = from x in getPersons
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,
};
List<Model.PersonItem> getTrainPersonList = new List<Model.PersonItem>();
var getTrainType = TrainTypeService.GetTrainTypeById(person.TrainTypeId);
if (getTrainType != null && (!getTrainType.IsRepeat.HasValue || getTrainType.IsRepeat == false))
{
foreach (var item in getPersonItems)
{
var getTrainPersonIdList1 = (from x in db.EduTrain_TrainRecordDetail
join y in db.EduTrain_TrainRecord on x.TrainingId equals y.TrainingId
where y.ProjectId == person.ProjectId && y.TrainTypeId == person.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 == person.ProjectId && y.TrainTypeId == person.TrainTypeId && y.States != "3" && x.UserId == item.PersonId
select x).FirstOrDefault();
if (getTrainPersonIdList2 == null)
{
getTrainPersonList.Add(item);
}
}
}
return getTrainPersonList.ToList();
}
else
{
return getPersonItems.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))
{
Model.SitePerson_Person newPerson = new Model.SitePerson_Person
{
PersonId = person.PersonId,
ProjectId = person.ProjectId,
CardNo = person.CardNo,
PersonName = person.PersonName,
IdentityCard = person.IdentityCard.Trim(),
Address = person.Address,
UnitId = person.UnitId,
OutResult = person.OutResult,
Telephone = person.Telephone,
PhotoUrl = person.PhotoUrl,
IDCardUrl = person.AttachUrl1,
InTime = Funs.GetNewDateTime(person.InTime),
OutTime = Funs.GetNewDateTime(person.OutTime),
AuditorId = person.AuditorId,
IsForeign = person.IsForeign,
IsOutside = person.IsOutside,
//AuditorDate = Funs.GetNewDateTime(person.AuditorDate),
Sex = person.Sex,
WorkAreaId = person.WorkAreaId,
IdcardStartDate = Funs.GetNewDateTime(person.IdcardStartDate),
IdcardEndDate = Funs.GetNewDateTime(person.IdcardEndDate),
IdcardForever=person.IdcardForever,
IdcardAddress = person.IdcardAddress,
IdcardType= "SHENFEN_ZHENGJIAN",
};
if (!string.IsNullOrEmpty(person.TeamGroupId))
{
newPerson.TeamGroupId = person.TeamGroupId;
}
if (!string.IsNullOrEmpty(person.WorkPostId))
{
newPerson.WorkPostId = person.WorkPostId;
}
//if (!string.IsNullOrEmpty(person.IdcardType))
//{
// newPerson.IdcardType = person.IdcardType;
//}
if (!string.IsNullOrEmpty(person.PoliticsStatus))
{
newPerson.PoliticsStatus = person.PoliticsStatus;
}
if (!string.IsNullOrEmpty(person.Nation))
{
newPerson.Nation = person.Nation;
}
if (!string.IsNullOrEmpty(person.EduLevel))
{
newPerson.EduLevel = person.EduLevel;
}
if (!string.IsNullOrEmpty(person.MaritalStatus))
{
newPerson.MaritalStatus = person.MaritalStatus;
}
if (!string.IsNullOrEmpty(person.CountryCode))
{
newPerson.CountryCode = person.CountryCode;
}
if (!string.IsNullOrEmpty(person.ProvinceCode))
{
newPerson.ProvinceCode = person.ProvinceCode;
}
if (!string.IsNullOrEmpty(person.MainCNProfessionalId))
{
newPerson.MainCNProfessionalId = person.MainCNProfessionalId;
}
if (!string.IsNullOrEmpty(person.ViceCNProfessionalId))
{
newPerson.ViceCNProfessionalId = person.ViceCNProfessionalId;
}
if (person.IsUsed == true)
{
newPerson.IsUsed = true;
}
else
{
newPerson.IsUsed = false;
}
newPerson.RawPassword = Funs.getInitialPassword(person.UnitId, person.IdentityCard);
newPerson.Password = Funs.EncryptionPassword(newPerson.RawPassword);
string rootUrl = ConfigurationManager.AppSettings["localRoot"];
if (!string.IsNullOrEmpty(rootUrl) && !string.IsNullOrEmpty(person.PhotoUrl))
{
newPerson.HeadImage = AttachFileService.SetImageToByteArray(rootUrl + person.PhotoUrl);
}
var getPerson = db.SitePerson_Person.FirstOrDefault(x => (x.IdentityCard == newPerson.IdentityCard && x.ProjectId == newPerson.ProjectId) || x.PersonId == newPerson.PersonId);
if (getPerson == null)
{
newPerson.Isprint = "0";
newPerson.PersonId = SQLHelper.GetNewID();
newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
db.SitePerson_Person.InsertOnSubmit(newPerson);
db.SubmitChanges();
CodeRecordsService.InsertCodeRecordsByMenuIdProjectIdUnitId(Const.PersonListMenuId, person.ProjectId, person.UnitId, person.PersonId, newPerson.InTime);
}
else
{
newPerson.PersonId = getPerson.PersonId;
getPerson.ProjectId = person.ProjectId;
getPerson.CardNo = person.CardNo;
getPerson.PersonName = person.PersonName;
getPerson.IdentityCard = person.IdentityCard;
getPerson.Address = person.Address;
getPerson.UnitId = person.UnitId;
getPerson.OutResult = person.OutResult;
getPerson.Telephone = person.Telephone;
getPerson.Password = newPerson.Password;
getPerson.MainCNProfessionalId = newPerson.MainCNProfessionalId;
getPerson.ViceCNProfessionalId = newPerson.ViceCNProfessionalId;
getPerson.IdcardStartDate = newPerson.IdcardStartDate;
getPerson.IdcardEndDate = newPerson.IdcardEndDate;
getPerson.IdcardForever = newPerson.IdcardForever;
getPerson.IdcardAddress = newPerson.IdcardAddress;
getPerson.IdcardType = newPerson.IdcardType;
getPerson.EduLevel = newPerson.EduLevel;
getPerson.MaritalStatus = newPerson.MaritalStatus;
getPerson.PoliticsStatus = newPerson.PoliticsStatus;
getPerson.Nation = newPerson.Nation;
getPerson.CountryCode = newPerson.CountryCode;
getPerson.ProvinceCode = newPerson.ProvinceCode;
getPerson.MainCNProfessionalId = newPerson.MainCNProfessionalId;
getPerson.ViceCNProfessionalId = newPerson.ViceCNProfessionalId;
if (!string.IsNullOrEmpty(person.PhotoUrl) && getPerson.PhotoUrl != person.PhotoUrl)
{
getPerson.PhotoUrl = person.PhotoUrl;
getPerson.ExchangeTime = null;
getPerson.HeadImage = newPerson.HeadImage;
}
if (!string.IsNullOrEmpty(person.AttachUrl1))
{
getPerson.IDCardUrl = person.AttachUrl1;
}
getPerson.InTime = Funs.GetNewDateTime(person.InTime);
getPerson.OutTime = Funs.GetNewDateTime(person.OutTime);
getPerson.Sex = person.Sex;
// getPerson.AuditorDate = Funs.GetNewDateTime(person.AuditorDate);
if (!string.IsNullOrEmpty(person.TeamGroupId))
{
getPerson.TeamGroupId = person.TeamGroupId;
}
if (!string.IsNullOrEmpty(person.WorkPostId))
{
getPerson.WorkPostId = person.WorkPostId;
}
if (!string.IsNullOrEmpty(person.WorkAreaId))
{
getPerson.WorkAreaId = person.WorkAreaId;
}
if (getPerson.AuditorDate.HasValue && getPerson.IsUsed == false)
{
getPerson.AuditorDate = null;
}
else
{
getPerson.IsUsed = person.IsUsed;
getPerson.AuditorDate = DateTime.Now;
}
getPerson.AuditorId = person.AuditorId;
if (!newPerson.OutTime.HasValue)
{
getPerson.OutTime = null;
getPerson.ExchangeTime = null;
}
getPerson.ExchangeTime2 = null;
getPerson.RealNameUpdateTime = null;
getPerson.IsForeign = person.IsForeign;
getPerson.IsOutside = person.IsOutside;
getPerson.IsCardNoOK = IDCardValid.CheckIDCard(getPerson.IdentityCard);
db.SubmitChanges();
}
if (!string.IsNullOrEmpty(newPerson.PersonId))
{
SaveMeetUrl(newPerson.PersonId, Const.PersonListMenuId, person.AttachUrl1, person.AttachUrl2, person.AttachUrl3, person.AttachUrl4, person.AttachUrl5);
}
// 更新同身份证号码用户的电话
if (!string.IsNullOrEmpty(newPerson.Telephone))
{
var getUser = db.Sys_User.FirstOrDefault(x => x.IdentityCard == newPerson.IdentityCard);
if (getUser != null)
{
getUser.Telephone = newPerson.Telephone;
db.SubmitChanges();
}
}
if (!newPerson.AuditorDate.HasValue && string.IsNullOrEmpty(newPerson.AuditorId))
{
APICommonService.SendSubscribeMessage(newPerson.AuditorId, "人员信息待您审核", person.ProjectCode, string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
}
return newPerson.PersonId;
}
}
#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
#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.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == person.IdentityCard || x.PersonId == person.PersonId);
if (getPerson != null)
{
if (!string.IsNullOrEmpty(person.PhotoUrl) && getPerson.PhotoUrl != person.PhotoUrl)
{
getPerson.PhotoUrl = person.PhotoUrl;
getPerson.ExchangeTime = null;
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="personId"></param>
public static void getPersonOut(string personId)
{
if (!string.IsNullOrEmpty(personId))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<string> getLists = Funs.GetStrListByStr(personId, ',');
foreach (var item in getLists)
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.PersonId == item);
if (getPerson != null)
{
getPerson.OutTime = DateTime.Now;
PersonService.UpdatePerson(getPerson);
}
}
}
}
}
#endregion
#region
/// <summary>
/// 人员出入场
/// </summary>
/// <param name="projectId"></param>w
/// <param name="idCard"></param>
/// <param name="isIn"></param>
/// <param name="changeTime"></param>
public static void getPersonInOut(Model.SitePerson_Person getPerson, int isIn, DateTime changeTime)
{
if (!string.IsNullOrEmpty(getPerson.IdentityCard))
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
if (getPerson != null)
{
string postType = null;
var getWokPost = db.Base_WorkPost.FirstOrDefault(x => x.WorkPostId == getPerson.WorkPostId);
if (getWokPost != null)
{
postType = getWokPost.PostType;
}
var getPersonInOut = db.SitePerson_PersonInOut.FirstOrDefault(x => x.PersonId == getPerson.PersonId && x.ProjectId == getPerson.ProjectId && x.ChangeTime == changeTime);
if (getPersonInOut == null)
{
Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut
{
PersonInOutId = SQLHelper.GetNewID(),
ProjectId = getPerson.ProjectId,
UnitId = getPerson.UnitId,
PersonId = getPerson.PersonId,
IsIn = isIn == 1 ? true : false,
ChangeTime = changeTime,
WorkPostId = getPerson.WorkPostId,
PostType = postType,
};
db.SitePerson_PersonInOut.InsertOnSubmit(newInOut);
db.SubmitChanges();
string proCode = ProjectService.GetJTProjectCodeByProjectId(getPerson.ProjectId);
Model.SitePerson_PersonInOutNow newNow = new Model.SitePerson_PersonInOutNow
{
PersonInOutId = newInOut.PersonInOutId,
ProjectId = newInOut.ProjectId,
UnitId = newInOut.UnitId,
PersonId = newInOut.PersonId,
IsIn = newInOut.IsIn,
ChangeTime = newInOut.ChangeTime,
WorkPostId = newInOut.WorkPostId,
PostType = newInOut.PostType,
ProCode = proCode,
Name = getPerson.PersonName,
IdcardType = getPerson.IdcardType,
IdcardNumber = getPerson.IdentityCard,
};
if (!getPerson.OutTime.HasValue || getPerson.OutTime > DateTime.Now)
{
//// 插入当日记录表
PersonInOutService.InsertPersonInOutNowNow(newNow);
// GetDataService.CorrectingPersonInOutNumber(projectId);
}
}
}
}
}
}
#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_CWCEC)
{
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>
public static int getPersonInOutListCount
{
get;
set;
}
/// <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, int pageIndex)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
DateTime? startTimeD = Funs.GetNewDateTime(startTime);
DateTime? endTimeD = Funs.GetNewDateTime(endTime);
var getPersonInOutList = from x in db.SitePerson_PersonInOut
where x.ProjectId == projectId
select x;
if (!string.IsNullOrEmpty(userUnitId) && userUnitId != Const.UnitId_CWCEC)
{
getPersonInOutList = getPersonInOutList.Where(x => x.UnitId == userUnitId);
}
if (!string.IsNullOrEmpty(unitId))
{
getPersonInOutList = getPersonInOutList.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(workPostId))
{
getPersonInOutList = getPersonInOutList.Where(x => x.WorkPostId == workPostId);
}
if (startTimeD.HasValue)
{
getPersonInOutList = getPersonInOutList.Where(x => x.ChangeTime >= startTimeD);
}
if (endTimeD.HasValue)
{
getPersonInOutList = getPersonInOutList.Where(x => x.ChangeTime <= endTimeD);
}
if (!string.IsNullOrEmpty(strParam))
{
getPersonInOutList = from x in getPersonInOutList
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where y.ProjectId == projectId && y.PersonName.Contains(strParam)
select x;
}
getPersonListCount = getPersonInOutList.Count();
if (getPersonListCount == 0)
{
return null;
}
else
{
var personInOuts = from x in getPersonInOutList
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 (pageIndex > 0)
{
return personInOuts.OrderByDescending(x => x.ChangeTimeD).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
else
{
return personInOuts.ToList();
}
}
}
}
#endregion
#region ID获取个人出入场记录
/// <summary>
///
/// </summary>
public static int getPersonInOutListByPersonIdCount
{
get;
set;
}
/// <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, int pageIndex)
{
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
where x.PersonId == personId
select new Model.PersonInOutItem
{
PersonInOutId =x.PersonInOutId,
PersonId = x.PersonId,
PersonName = db.SitePerson_Person.First(z=>z.PersonId==x.PersonId).PersonName,
ProjectId = x.ProjectId,
UnitId = x.UnitId,
UnitName = db.Base_Unit.First(z => z.UnitId == x.UnitId).UnitName,
WorkPostId = x.WorkPostId,
WorkPostName = db.Base_WorkPost.First(z => z.WorkPostId == x.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);
}
getPersonListCount = personInOuts.Count();
if (getPersonListCount == 0)
{
return null;
}
else
{
if (pageIndex > 0)
{
return personInOuts.OrderByDescending(x => x.ChangeTimeD).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
else
{
return personInOuts.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.Sys_User.First(z => z.UserId == x.AuditorId).UserName,
Remark = x.Remark,
CompileMan = x.CompileMan,
CompileManName = db.Sys_User.First(z => z.UserId == x.CompileMan).UserName,
CompileDate = string.Format("{0:yyyy-MM-dd}", x.CompileDate),
AuditDate = string.Format("{0:yyyy-MM-dd}", x.AuditDate),
AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName,
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(m => m.UnitId == x.UnitId).UnitName,
CertificateId = y.CertificateId,
CertificateName = db.Base_Certificate.First(m => m.CertificateId == y.CertificateId).CertificateName,
WorkPostId = x.WorkPostId,
WorkPostName = db.Base_WorkPost.First(m => m.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.Sys_User.First(m => m.UserId == x.AuditorId).UserName,
Remark = y.Remark,
CompileMan = y.CompileMan,
CompileManName = db.Sys_User.First(m => m.UserId == y.CompileMan).UserName,
CompileDate = string.Format("{0:yyyy-MM-dd}", y.CompileDate),
AuditDate = string.Format("{0:yyyy-MM-dd}", y.AuditDate),
AuditorName = db.Sys_User.First(m => m.UserId == x.AuditorId).UserName,
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)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var personInOuts = from x in db.SitePerson_PersonInOut
join y in 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 = 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))
{
personInOuts = personInOuts.Where(x => x.UnitId == unitId);
}
return personInOuts.ToList();
}
}
#endregion
/// <summary>
///
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
public static string PersonFace(Model.SitePerson_Person person)
{
string message = string.Empty;
string filePath = ConfigurationManager.AppSettings["localRoot"] + person.PhotoUrl;
List<SgManager.AI.faceResult> kqFace = null;
try
{
kqFace = (List<SgManager.AI.faceResult>)SgManager.AI.FaceClass.SearchFileFace(filePath);
if (kqFace != null || kqFace.Count > 0 || kqFace[0].errMess == "SUCCESS")
{
string result = FaceClass.FaceVerify(filePath);
JObject jresult = JObject.Parse(result);
JObject lvresult = jresult.Value<JObject>("result");
bool isOK = false;
if (jresult.Value<int>("error_code") == 0)
{
if (lvresult.Value<double>("face_liveness") >= ConfigAppSetting.getConfigAppSetting("BD_face_liveness") ? true : false)//99.5%//活体度
{
if (Convert.ToDouble(lvresult["face_list"][0]["location"]["width"]) > ConfigAppSetting.getConfigAppSetting("BD_width") ? true : false)
{
if (Convert.ToDouble(lvresult["face_list"][0]["location"]["height"]) > ConfigAppSetting.getConfigAppSetting("BD_height") ? true : false)
{
if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["roll"])) <= ConfigAppSetting.getConfigAppSetting("BD_roll") ? true : false)//角度正负度数
{
if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["yaw"])) <= ConfigAppSetting.getConfigAppSetting("BD_roll") + 1 ? true : false)//角度正负度数
{
if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["pitch"])) <= ConfigAppSetting.getConfigAppSetting("BD_roll") + 1 ? true : false)//角度正负度数
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["left_eye"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["right_eye"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["nose"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["mouth"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["left_cheek"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["right_cheek"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["chin_contour"]) <= ConfigAppSetting.getConfigAppSetting("BD_occlusion") ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["blur"]) <= ConfigAppSetting.getConfigAppSetting("BD_blur") ? true : false)//模糊度0---1小于0.7
{ isOK = true; }
else message = "清晰度检测失败"; ;
}
else message = "遮挡检测失败";
}
else message = "遮挡检测失败";
}
else message = "遮挡检测失败";
}
else message = "遮挡检测失败";
}
else message = "遮挡检测失败";
}
else message = "遮挡检测失败";
}
else message = "遮挡检测失败";
}
else message = "角度检测失败";
}
else message = "角度检测失败";
}
else message = "角度检测失败";
}
else message = "宽高检测失败";
}
else message = "宽高检测失败";
}
else message = "活体检测失败";
}
else message = "识别不到人脸";
if (isOK)
{
var faceResult = FaceClass.add(person.PersonId, person.IdentityCard, System.Configuration.ConfigurationManager.AppSettings["CEMS_IMG_URL"].ToString() + person.PhotoUrl, AccessToken.getAccessToken());
var face = JsonConvert.DeserializeObject<dynamic>(faceResult);
// JsonConvert.DeserializeObject<dynamic>(myPunishItem);
if (face.error_code == 0 || face.error_code == 223105)
{
message = "人脸库注册成功!";
// face_token = face.result.face_token;
//APIPersonService.SaveSitePerson(person);
}
else
{
message = "注册人脸库失败" + face.error_code + face.error_msg;
}
}
else
{
message += "注册人脸库失败";
}
}
}
catch (Exception ex)
{
message = "注册人脸库失败";
ErrLogInfo.WriteLog(ex, "PC-人员信息保存", "SitePerson.PersonListEdit");
}
return message;
}
#region
/// <summary>
/// 二维码扫码获取人员
/// </summary>
/// <param name="personId"></param>
/// <returns></returns>
public static Model.PersonItem getPersonByPersonIdQrcode(string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getPerson = from x in db.View_SitePerson_Person
where (x.PersonId == personId || x.IdentityCard == personId) && x.IsUsed == true
select new Model.PersonItem
{
PersonId = x.PersonId,
CardNo = x.CardNo,
PersonName = x.PersonName,
Sex = x.Sex,
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,
IsUsed = x.IsUsed,
IsUsedName = x.IsUsed == false ? "不启用" : "启用",
AuditorId = x.AuditorId,
AuditorName = db.Sys_User.First(z => z.UserId == x.AuditorId).UserName,
IsForeign = x.IsForeign.HasValue ? x.IsForeign : false,
IsOutside = x.IsOutside.HasValue ? x.IsOutside : false,
AuditorDate = string.Format("{0:yyyy-MM-dd}", x.AuditorDate),
AttachUrl1 = x.IDCardUrl == null ? APIUpLoadFileService.getFileUrl(personId + "#1", null) : x.IDCardUrl.Replace('\\', '/'),
AttachUrl2 = APIUpLoadFileService.getFileUrl(personId + "#2", null),
AttachUrl3 = APIUpLoadFileService.getFileUrl(personId + "#3", null),
AttachUrl4 = getAttachUrl4(x.PersonId),
AttachUrl5 = APIUpLoadFileService.getFileUrl(personId + "#5", null),
IdcardType = x.IdcardType,
IdcardTypeName = x.IdcardTypeName,
IdcardStartDate = string.Format("{0:yyyy-MM-dd}", x.IdcardStartDate),
IdcardEndDate = string.Format("{0:yyyy-MM-dd}", x.IdcardEndDate),
IdcardForever = x.IdcardForever,
IdcardForeverStr = x.IdcardForeverStr,
PoliticsStatus = x.PoliticsStatus,
PoliticsStatusName = x.PoliticsStatusName,
IdcardAddress = x.IdcardAddress,
Nation = x.Nation,
NationName = x.NationName,
EduLevel = x.EduLevel,
EduLevelName = x.EduLevelName,
MaritalStatus = x.MaritalStatus,
MaritalStatusName = x.MaritalStatusName,
CountryCode = x.CountryCode,
CountryName = x.CountryName,
ProvinceCode = x.ProvinceCode,
ProvinceName = x.ProvinceName,
MainCNProfessionalId = x.MainCNProfessionalId,
MainCNProfessionalName = x.MainCNProfessionalName,
ViceCNProfessionalId = x.ViceCNProfessionalId,
ViceCNProfessionalName = x.ViceCNProfessionalName
};
return getPerson.FirstOrDefault();
}
}
#endregion
}
}