Files
SGGL_SHJ/SGGL/BLL/API/APIPersonService.cs
T
lpf 8efe030f47 refactor: 清理旧模块资源并整理人员服务目录
为收敛当前分支代码范围并统一人员服务目录,移除历史模块与静态资源,减少无效代码和目录分散带来的维护成本。
2026-09-19 13:45:38 +08:00

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