SGGL_JT/SUBQHSE/BLL/API/APIPersonService.cs

2034 lines
109 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 FineUIPro;
using Microsoft.SqlServer.Dts.Runtime;
using Model;
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.SUBQHSEDB db = new Model.SUBQHSEDB(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.IdentityCard != null && x.IdentityCard.Substring(x.IdentityCard.Length - 4) == userInfo.Password))
&& x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime >= DateTime.Now) && x.IsUsed == true
select x;
if (!string.IsNullOrEmpty(userInfo.LoginProjectId))
{
getUser = getUser.Where(x => x.ProjectId == userInfo.LoginProjectId);
}
if (getUser.Count() > 0)
{
return (from x in getUser
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 = x.ProjectId == null ? "4" : "3",
}).FirstOrDefault();
}
else
{
return null;
}
}
}
#endregion
#region personId获取人员信息
/// <summary>
/// 根据personId获取人员信息
/// </summary>
/// <param name="personId"></param>
/// <returns></returns>
public static Model.PersonItem getPersonByPersonId(string personId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
var getPerson = from x in db.View_SitePerson_Person
where (x.ProjectId == projectId || string.IsNullOrEmpty(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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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 (!UnitService.IsSubUnitByProjectAndUnit(projectId, 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.SUBQHSEDB db = new Model.SUBQHSEDB(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, int pageIndex, string inTimeStart, string inTimeEnd
, string personName = "")
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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,
};
#region
if (!string.IsNullOrEmpty(inTimeStart) && !string.IsNullOrEmpty(inTimeEnd))
{
getPersons = from x in db.View_SitePerson_Person
where x.ProjectId == projectId && unitIdList.Contains(x.UnitId) && x.IsUsed == true
&& (x.InTime >= Convert.ToDateTime(inTimeStart) && x.InTime <= Convert.ToDateTime(inTimeEnd)) && (!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,
};
}
#endregion
if (!string.IsNullOrEmpty(workPostIds))
{
List<string> workPostIdList = Funs.GetStrListByStr(workPostIds, ',');
getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId));
}
if (!string.IsNullOrEmpty(personName))
{
//修改日期2024-4-16 15:18:18
//增加多人查询
//先判断是否带逗号
if (personName.Contains(",") || personName.Contains(""))
{
//将中文逗号转换英文,再转成数组
var personNameList = personName.Replace("", ",").Split(',');
getPersons = getPersons.Where(x => personNameList.Contains(x.PersonName));
}
else
{
getPersons = getPersons.Where(x => x.PersonName.Contains(personName));
}
}
List<Model.PersonItem> getTrainPersonList = new List<Model.PersonItem>();
var getTrainType = TrainTypeService.GetTrainTypeById(trainTypeId);
if (pageIndex != 0)
{
getPersons = getPersons.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize);
}
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();
}
}
}
public static List<Model.PersonItem> getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId, int pageIndex)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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 (pageIndex != 0)
{
getPersons = getPersons.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize);
}
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 Model.SitePerson_Person SaveSitePerson(Model.PersonItem person)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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.WorkPostName))
{
person.WorkPostId = WorkPostService.AddWorkPostByName(person.WorkPostName);
}
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.Password = UserService.getInitialPassword(newPerson.UnitId, newPerson.IdentityCard);
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.IsCardNoOK = IDCardValid.CheckIDCard(newPerson.IdentityCard);
newPerson.PersonId = SQLHelper.GetNewID();
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.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;
}
if (getPerson.IdentityCard != person.IdentityCard)
{
PersonInOutService.UpdateRealNameInOut(newPerson.PersonId, newPerson.IdentityCard, person.IdentityCard);
newPerson.IdentityCard = person.IdentityCard;
newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
}
getPerson.ExchangeTime2 = null;
getPerson.IsForeign = person.IsForeign;
getPerson.IsOutside = person.IsOutside;
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;
}
}
#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.SUBQHSEDB db = new Model.SUBQHSEDB(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;
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.SUBQHSEDB db = new Model.SUBQHSEDB(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(string projectId, string idCard, int isIn, DateTime changeTime)
{
if (!string.IsNullOrEmpty(idCard))
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
Model.SitePerson_PersonInOut newInOut = new Model.SitePerson_PersonInOut
{
ProjectId = projectId,
IdentityCard = idCard,
IsIn = isIn == 1 ? true : false,
ChangeTime = changeTime,
InOutWay = Const.InOutWay_1,
};
PersonInOutService.AddPersonInOut(newInOut);
}
}
}
#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.SUBQHSEDB db = new Model.SUBQHSEDB(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,
};
string thisUnitId = string.Empty;
var thisUnit = CommonService.GetIsThisUnit();
if (thisUnit != null)
{
thisUnitId = thisUnit.UnitId;
}
if (!string.IsNullOrEmpty(unitId) && unitId != thisUnitId)
{
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.SUBQHSEDB db = new Model.SUBQHSEDB(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,
};
string thisUnitId = string.Empty;
var thisUnit = CommonService.GetIsThisUnit();
if (thisUnit != null)
{
thisUnitId = thisUnit.UnitId;
}
if (!string.IsNullOrEmpty(userUnitId) && userUnitId != thisUnitId)
{
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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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.Sys_User.First(z => z.UserId == x.AuditorId).UserName,
Remark = y.Remark,
CompileMan = y.CompileMan,
CompileManName = db.Sys_User.First(z => z.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(z => z.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.SUBQHSEDB db = new Model.SUBQHSEDB(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.SUBQHSEDB db = new Model.SUBQHSEDB(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
/// <summary>
///
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
public static string PersonFace(Model.SitePerson_Person person)
{
string message = string.Empty;
var db = new Model.SUBQHSEDB(Funs.ConnString);
string BD_face_liveness = string.Empty, BD_width = string.Empty, BD_height = string.Empty, BD_roll = string.Empty, BD_occlusion = string.Empty, BD_blur = string.Empty;
var sysSet10 = (from x in db.Sys_Set where x.SetName == "人脸活体检测参数(1最好,0最差,建议0.995)" select x).ToList().FirstOrDefault();
if (sysSet10 != null)
{
BD_face_liveness = sysSet10.SetValue;
}
var sysSet11 = (from x in db.Sys_Set where x.SetName == "人脸高度(100-200)" select x).ToList().FirstOrDefault();
if (sysSet11 != null)
{
BD_width = sysSet11.SetValue;
}
var sysSet12 = (from x in db.Sys_Set where x.SetName == "人脸宽度(100-200)" select x).ToList().FirstOrDefault();
if (sysSet12 != null)
{
BD_height = sysSet12.SetValue;
}
var sysSet13 = (from x in db.Sys_Set where x.SetName == "人脸角度(30-50,建议40)" select x).ToList().FirstOrDefault();
if (sysSet13 != null)
{
BD_roll = sysSet13.SetValue;
}
var sysSet14 = (from x in db.Sys_Set where x.SetName == "人脸遮档度0最好,1最不好" select x).ToList().FirstOrDefault();
if (sysSet14 != null)
{
BD_occlusion = sysSet14.SetValue;
}
var sysSet15 = (from x in db.Sys_Set where x.SetName == "人脸模糊度0最好,1最不好" select x).ToList().FirstOrDefault();
if (sysSet15 != null)
{
BD_blur = sysSet15.SetValue;
}
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") >= Funs.GetNewDoubleOrZero(BD_face_liveness) ? true : false)//99.5%//活体度
{
if (Convert.ToDouble(lvresult["face_list"][0]["location"]["width"]) > Funs.GetNewDoubleOrZero(BD_width) ? true : false)
{
if (Convert.ToDouble(lvresult["face_list"][0]["location"]["height"]) > Funs.GetNewDoubleOrZero(BD_height) ? true : false)
{
if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["roll"])) <= Funs.GetNewDoubleOrZero(BD_roll) ? true : false)//角度正负度数
{
if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["yaw"])) <= Funs.GetNewDoubleOrZero(BD_roll) + 1 ? true : false)//角度正负度数
{
if (System.Math.Abs(Convert.ToDouble(lvresult["face_list"][0]["angle"]["pitch"])) <= Funs.GetNewDoubleOrZero(BD_roll) + 1 ? true : false)//角度正负度数
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["left_eye"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["right_eye"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["nose"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["mouth"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["left_cheek"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["right_cheek"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["occlusion"]["chin_contour"]) <= Funs.GetNewDoubleOrZero(BD_occlusion) ? true : false)// 0为无遮挡1是完全遮挡
{
if (Convert.ToDouble(lvresult["face_list"][0]["quality"]["blur"]) <= Funs.GetNewDoubleOrZero(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)
{
string url = string.Empty;
var sysSet6 = (from x in db.Sys_Set where x.SetName == "程序访问地址" select x).ToList().FirstOrDefault();
if (sysSet6 != null)
{
url = sysSet6.SetValue;
}
// var faceResult = FaceClass.add(person.PersonId, person.IdentityCard, url + person.PhotoUrl, AccessToken.getAccessToken());
var faceResult = FaceClass.UserAdd(person.PersonId, person.IdentityCard, ConfigurationManager.AppSettings["localRoot"] + person.PhotoUrl);
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;
}
public static List<Model.PersonItem> getPersonList(string projectId, string unitId, int pageIndex, out int count)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
var getViews = from x in db.SitePerson_Person
where x.ProjectId != ""
select x;
string thisUnitId = string.Empty;
var thisUnit = CommonService.GetIsThisUnit();
if (thisUnit != null)
{
thisUnitId = thisUnit.UnitId;
}
if (unitId != thisUnitId && !string.IsNullOrEmpty(unitId))
{
getViews = getViews.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(projectId))
{
getViews = getViews.Where(x => x.ProjectId.Contains(projectId));
}
count = 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();
}
}
}
}
#region 2023-7-4 09:36:15 id
/// <summary>
/// 根据培训类型获取项目培训人员信息公司级查询项目id为空unitid不为空的
/// </summary>
/// <param name="unitIds">培训单位ID</param>
/// <param name="workPostIds">培训岗位ID</param>
/// <param name="trainTypeId">培训类型ID</param>
/// <returns></returns>
public static List<Model.PersonItem> getTrainingPersonListByTrainTypeId(string unitIds, string workPostIds, string trainTypeId, int pageIndex, string inTimeStart, string inTimeEnd
, string personName = "")
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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.ProjectCode == null
&& Nullable<int>.Equals(x.ProjectId, null)
&& 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,
};
#region
if (!string.IsNullOrEmpty(inTimeStart) && !string.IsNullOrEmpty(inTimeEnd))
{
getPersons = from x in db.View_SitePerson_Person
where unitIdList.Contains(x.UnitId) && x.IsUsed == true && x.ProjectCode == null
&& Nullable<int>.Equals(x.ProjectId, null)
&& x.InTime >= Convert.ToDateTime(inTimeStart) && x.InTime <= Convert.ToDateTime(inTimeEnd) && (!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,
};
}
#endregion
if (!string.IsNullOrEmpty(workPostIds))
{
List<string> workPostIdList = Funs.GetStrListByStr(workPostIds, ',');
getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId));
}
if (!string.IsNullOrEmpty(personName))
{
//修改日期2024-4-16 15:18:18
//增加多人查询
//先判断是否带逗号
if (personName.Contains(",") || personName.Contains(""))
{
//将中文逗号转换英文,再转成数组
var personNameList = personName.Replace("", ",").Split(',');
getPersons = getPersons.Where(x => personNameList.Contains(x.PersonName));
}
else
{
getPersons = getPersons.Where(x => x.PersonName.Contains(personName));
}
//getPersons = getPersons.Where(x => x.PersonName.Contains(personName));
}
List<Model.PersonItem> getTrainPersonList = new List<Model.PersonItem>();
var getTrainType = TrainTypeService.GetTrainTypeById(trainTypeId);
getPersons = getPersons.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize);
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.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.TrainTypeId == trainTypeId && y.States != "3" && x.UserId == item.PersonId
select x).FirstOrDefault();
if (getTrainPersonIdList2 == null)
{
getTrainPersonList.Add(item);
}
}
}
return getTrainPersonList;
}
else
{
return getPersons.ToList();
}
}
}
/// <summary>
/// 获取总条数
/// </summary>
/// <param name="unitIds"></param>
/// <param name="workPostIds"></param>
/// <param name="trainTypeId"></param>
/// <returns></returns>
public static int getTrainingPersonListByTrainTypeId(string unitIds, string workPostIds, string trainTypeId)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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(workPostIds))
{
List<string> workPostIdList = Funs.GetStrListByStr(workPostIds, ',');
getPersons = getPersons.Where(x => workPostIdList.Contains(x.WorkPostId));
}
return getPersons.ToList().Count();
}
}
#endregion
/// <summary>
/// 根据培训类型获取项目培训人员信息
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitIds">培训单位ID</param>
/// <param name="departIds">培训部门ID</param>
/// <param name="workPostIds">培训岗位ID</param>
/// <param name="trainTypeId">培训类型ID</param>
/// <returns></returns>
public static List<Model.PersonItem> getTrainingPersonListByTrainTypeId2(string projectId, string unitIds, string departIds, string workPostIds, string trainTypeId, string strParam)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(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,
DepartId = x.DepartId,
DepartName = x.DepartName,
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,
};
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(departIds))
{
List<string> departIdList = Funs.GetStrListByStr(departIds, ',');
getPersons = getPersons.Where(x => departIdList.Contains(x.DepartId));
}
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();
}
}
}
}
}