SGGL_SHJ/SGGL/BLL/Person/Person_PersonsService.cs

1295 lines
54 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.Office.Interop.Excel;
using Model;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace BLL
{
/// <summary>
/// 人员信息
/// </summary>
public static class Person_PersonsService
{
public static Model.SGGLDB db = Funs.DB;
#region
/// <summary>
/// 记录数
/// </summary>
public static int count
{
get;
set;
}
/// <summary>
/// 定义变量
/// </summary>
private static IQueryable<Model.Person_Persons> getDataLists = from x in db.Person_Persons
where x.PersonId != Const.sysglyId && x.PersonId != Const.hfnbdId
select x;
/// <summary>
/// 数据列表
/// </summary>
/// <param name="unitId">单位ID</param>
/// <param name="departId">部门id</param>
/// <param name="projetcId">项目id</param>
/// <param name="name">姓名</param>
/// <param name="idCard">身份证号码</param>
/// <param name="isPost">是否在岗</param>
/// <param name="personType">人员类型</param>
/// <param name="Grid1"></param>
/// <returns></returns>
public static IEnumerable getListData(string unitId, string departId, string projetcId, string name, string idCard, string isPost, string personType, Grid Grid1)
{
IQueryable<Model.Person_Persons> getDataList = getDataLists.OrderBy(x => x.UnitId).ThenBy(x => x.DepartId);
if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null)
{
getDataList = getDataList.Where(e => e.UnitId == unitId);
}
if (!string.IsNullOrEmpty(departId) && departId != Const._Null)
{
getDataList = getDataList.Where(e => e.DepartId == departId);
}
if (!string.IsNullOrEmpty(projetcId) && projetcId != Const._Null)
{
getDataList = from x in getDataList
join y in db.SitePerson_PersonItem on x.PersonId equals y.PersonId
where y.ProjectId == projetcId && !y.OutTime.HasValue
select x;
}
if (!string.IsNullOrEmpty(personType) && personType != Const._Null)
{
getDataList = getDataList.Where(e => e.PersonType == personType);
}
if (!string.IsNullOrEmpty(name))
{
getDataList = getDataList.Where(e => e.PersonName.Contains(name));
}
if (!string.IsNullOrEmpty(idCard))
{
getDataList = getDataList.Where(e => e.IdentityCard.Contains(idCard));
}
if (!string.IsNullOrEmpty(isPost) && isPost != "-1" && isPost != Const._Null)
{
if (isPost == Const._True)
{
getDataList = getDataList.Where(e => !e.IsPost.HasValue || e.IsPost == true);
}
else
{
getDataList = getDataList.Where(e => e.IsPost == false);
}
}
count = getDataList.Count();
if (count == 0)
{
return null;
}
getDataList = SortConditionHelper.SortingAndPaging(getDataList, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
return from x in getDataList
select new
{
x.PersonId,
x.PersonName,
x.JobNum,
x.Account,
x.IdentityCard,
Sex = x.Sex ?? "1",
x.Birthday,
x.UnitId,
db.Base_Unit.First(u => u.UnitId == x.UnitId).UnitName,
x.DepartId,
db.Base_Depart.First(u => u.DepartId == x.DepartId).DepartName,
x.WorkPostId,
WorkPostName = WorkPostService.getWorkPostNamesWorkPostIds(x.WorkPostId),
x.PostTitleId,
PostTitleName = PostTitleService.getPostTitleNameById(x.PostTitleId),
x.PostTitleDate,
x.IsOffice,
x.RoleIds,
RoleName = RoleService.getRoleNamesRoleIds(x.RoleIds),
x.CurrentProjectId,
CurrentProjectName = getCurrentProjectName(x.PersonId),
x.CurrentProjectWorkPostId,
CurrentProjectWorkPostName = getCurrentProjectWorkPostName(x.PersonId),
IsPost = x.IsPost ?? true,
x.SignatureUrl,
x.Address,
x.Telephone,
x.EduLevel,
EduLevelName = BasicDataService.GetDictNameByDictCode(x.EduLevel),
x.Major,
x.PersonType,
PersonTypeName = DropListService.getPersonTypeNameByValue(x.PersonType),
x.ValidityDate,
x.IntoDate,
x.WorkDate,
x.RetirementDate,
PositionName = PositionService.GetPositionNameById(x.PositionId),
x.Graduate,
x.ForeignLanguage,
NationName = BasicDataService.GetDictNameByDictCode(x.Nation),
PoliticsStatusName = BasicDataService.GetDictNameByDictCode(x.PoliticsStatus),
MaritalStatusName = BasicDataService.GetDictNameByDictCode(x.MaritalStatus),
x.RelativeName,
x.RelativeTel,
};
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="ProjectId"></param>
/// <param name="PersonId"></param>
/// <returns></returns>
public static string getCurrentProjectName(string PersonId)
{
var getItem = Funs.DB.SitePerson_PersonItem.FirstOrDefault(u => u.PersonId == PersonId && !u.OutTime.HasValue);
if (getItem != null)
{
return ProjectService.GetShortNameByProjectId(getItem.ProjectId);
}
else
{
return null;
}
}
/// <summary>
///
/// </summary>
/// <param name="WorkPostId"></param>
/// <param name="PersonId"></param>
/// <returns></returns>
public static string getCurrentProjectWorkPostName( string PersonId)
{
var getItem = Funs.DB.SitePerson_PersonItem.FirstOrDefault(u => u.PersonId == PersonId && !u.OutTime.HasValue);
if (getItem != null)
{
return WorkPostService.getWorkPostNamesWorkPostIds(getItem.WorkPostId);
}
else
{
return null;
}
}
#endregion
#region
/// <summary>
/// 根据主键获取人员信息
/// </summary>
/// <param name="PersonId"></param>
/// <returns></returns>
public static Model.Person_Persons GetPerson_PersonsById(string PersonId)
{
return Funs.DB.Person_Persons.FirstOrDefault(x => x.PersonId == PersonId);
}
#endregion
/// <summary>
/// 根据主键项目id判断当前人单位是否是总包单位
/// </summary>
/// <param name="PersonId"></param>
/// <param name="ProjectId"></param>
/// <returns></returns>
public static bool IsGeneralUnitByPersonId(string PersonId,string ProjectId)
{
bool result = false;
var PersonEntity = GetPerson_PersonsById(PersonId);
if (PersonEntity!=null)
{
var pUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(e => e.ProjectId == ProjectId && e.UnitId == PersonEntity.UnitId);
if (pUnit != null)
{
if (pUnit.UnitType == Const.ProjectUnitType_1 )
{
result = true;
}
}
}
return result;
}
#region
/// <summary>
/// 根据身份证号码获取人员信息
/// </summary>
/// <param name="PersonId"></param>
/// <returns></returns>
public static Model.Person_Persons GetPerson_PersonsByIdCard(string idCard)
{
return Funs.DB.Person_Persons.FirstOrDefault(x => x.IdentityCard == idCard);
}
#endregion
#region
/// <summary>
/// 根据工号获取人员信息
/// </summary>
/// <param name="PersonId"></param>
/// <returns></returns>
public static Model.Person_Persons GetPerson_PersonsByJobNum(string jobNum)
{
return Funs.DB.Person_Persons.FirstOrDefault(x => x.JobNum == jobNum);
}
#endregion
#region --
/// <summary>
/// 根据账号获取人员信息
/// </summary>
/// <param name="PersonId"></param>
/// <returns></returns>
public static Model.Person_Persons GetPerson_PersonsByAccount(string account)
{
return Funs.DB.Person_Persons.FirstOrDefault(x => x.Account == account && (x.IsPost == true || !x.IsPost.HasValue));
}
#endregion
#region
/// <summary>
/// 根据主键获取人员名称
/// </summary>
/// <param name="PersonId"></param>
/// <returns></returns>
public static string GetPersonsNameById(string personId)
{
string name = string.Empty;
if (!string.IsNullOrEmpty(personId))
{
var getPerson = Funs.DB.Person_Persons.FirstOrDefault(x => x.PersonId == personId);
if (getPerson != null)
{
name = getPerson.PersonName;
}
}
return name;
}
#endregion
#region todo
/// <summary>
/// 根据主键获取人员名称
/// </summary>
/// <param name="PersonId"></param>
/// <returns></returns>
public static Model.Person_Persons GetPersonsByName(string name)
{
return Funs.DB.Person_Persons.FirstOrDefault(x => x.PersonName == name);
}
#endregion
#region ID得到用户名称字符串
/// <summary>
/// 根据多用户ID得到用户名称字符串
/// </summary>
/// <param name="bigType"></param>
/// <returns></returns>
public static string getPersonsNamesPersonIds(object personIds)
{
string name = string.Empty;
if (personIds != null)
{
string[] ids = personIds.ToString().Split(',');
foreach (string id in ids)
{
var q = GetPersonsNameById(id);
if (q != null)
{
name += q + ",";
}
}
if (name != string.Empty)
{
name = name.Substring(0, name.Length - 1); ;
}
}
return name;
}
#endregion
#region id
/// <summary>
/// 根据项目人员id 获取人员库人员信息
/// </summary>
/// <param name="projectPersonId"></param>
/// <returns></returns>
public static Model.Person_Persons GetPerson_PersonsByProjectPersonId(string projectPersonId)
{
var getProjectPerson = SitePerson_PersonService.GetSitePersonById(projectPersonId);
if (getProjectPerson != null)
{
return GetPerson_PersonsByIdCard(getProjectPerson.IdentityCard);
}
else
{
return GetPerson_PersonsById(projectPersonId);
}
}
#endregion
#region
/// <summary>
/// 根据角色获取角色下用户
/// </summary>
/// <returns></returns>
public static List<Model.Person_Persons> GetPerson_PersonsListByRoleId(string roleId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
return (from x in db.Person_Persons
where x.RoleIds.Contains(roleId)
select x).ToList();
}
}
#endregion
#region ID List
/// <summary>
/// 根据人员ID 获取 本部及项目上所有角色集合List
/// </summary>
/// <param name="personId">用户Id</param>
/// <returns>用户信息</returns>
public static List<string> GetRoleListByProjectIdPersonId(string projectId, string personId)
{
List<string> roleList = new List<string>();
var getUser = GetPerson_PersonsById(personId);
if (getUser != null)
{
string rolesStr = string.Empty;
if (!string.IsNullOrEmpty(getUser.RoleIds))
{
rolesStr = getUser.RoleIds;
}
var pUser = SitePerson_PersonService.GetSitePersonByProjectIdPersonId(projectId, personId); ////用户
if (pUser != null && !string.IsNullOrEmpty(pUser.RoleIds))
{
if (string.IsNullOrEmpty(rolesStr))
{
rolesStr = pUser.RoleIds;
}
else
{
if (!rolesStr.Contains(pUser.RoleIds))
{
rolesStr += "," + pUser.RoleIds;
}
}
}
roleList = Funs.GetStrListByStr(rolesStr, ',');
}
return roleList;
}
#endregion
#region ID获取签名
/// <summary>
/// 根据人员ID获取签名
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static string getSignatureName(string personId)
{
string userName = string.Empty;
var getUser = Person_PersonsService.GetPerson_PersonsById(personId);
if (getUser != null)
{
userName = getUser.PersonName;
if (!string.IsNullOrEmpty(getUser.SignatureUrl))
{
string url = Funs.RootPath + getUser.SignatureUrl;
FileInfo info = new FileInfo(url);
if (info.Exists)
{
userName = "<img width='90' height='35' src='" + (Funs.SGGLUrl + getUser.SignatureUrl).Replace('\\', '/') + "'></img>";
}
}
}
return userName;
}
#endregion
#region ID单位ID
/// <summary>
/// 根据项目ID单位ID 获取人员下拉框 (项目角色 且可审批)
/// </summary>
/// <returns></returns>
public static List<Model.SpSysUserItem> GetProjectRoleUserListByProjectId(string projectId, string unitId)
{
Model.SGGLDB db = Funs.DB;
IQueryable<Model.SpSysUserItem> users = null;
if (!string.IsNullOrEmpty(projectId))
{
List<Model.SpSysUserItem> returUsers = new List<Model.SpSysUserItem>();
List<Model.SitePerson_Person> getPUser = new List<Model.SitePerson_Person>();
if (!string.IsNullOrEmpty(unitId))
{
getPUser = (from x in db.SitePerson_Person
join u in db.Project_ProjectUnit on new { x.ProjectId, x.UnitId } equals new { u.ProjectId, u.UnitId }
where x.ProjectId == projectId && (u.UnitId == unitId || u.UnitType == BLL.Const.ProjectUnitType_1 || u.UnitType == BLL.Const.ProjectUnitType_3 || u.UnitType == BLL.Const.ProjectUnitType_4)
&& x.States == Const.State_1
select x).ToList();
}
else
{
getPUser = (from x in db.SitePerson_Person
where x.ProjectId == projectId && x.States == Const.State_1
select x).ToList();
}
if (getPUser.Count() > 0)
{
foreach (var item in getPUser)
{
List<string> roleIdList = Funs.GetStrListByStr(item.RoleIds, ',');
var getRoles = db.Sys_Role.FirstOrDefault(x => roleIdList.Contains(x.RoleId));
if (getRoles != null)
{
string userName = RoleService.getRoleNamesRoleIds(item.RoleIds) + "-" + Person_PersonsService.GetPersonsNameById(item.PersonId);
Model.SpSysUserItem newsysUser = new Model.SpSysUserItem
{
PersonId = item.PersonId,
PersonName = userName,
};
returUsers.Add(newsysUser);
}
}
}
return returUsers;
}
else
{
if (!string.IsNullOrEmpty(unitId))
{
users = (from x in db.Person_Persons
join z in db.Sys_Role on x.RoleIds equals z.RoleId
where (x.IsPost == true || !x.IsPost.HasValue) && x.UnitId == unitId
orderby x.JobNum
select new Model.SpSysUserItem
{
PersonName = z.RoleName + "- " + x.PersonName,
PersonId = x.PersonId,
});
}
else
{
users = (from x in db.Person_Persons
join z in db.Sys_Role on x.RoleIds equals z.RoleId
where (x.IsPost == true || !x.IsPost.HasValue)
orderby x.JobNum
select new Model.SpSysUserItem
{
PersonName = z.RoleName + "- " + x.PersonName,
PersonId = x.PersonId,
});
}
}
return users.ToList();
}
#endregion
#region ID角色Id获取用户下拉选项
/// <summary>
/// 根据项目ID角色Id获取用户下拉选项
/// </summary>
/// <returns></returns>
public static List<Model.Person_Persons> GetUserListByProjectIdUnitIdRoleId(string projectId, string unitIds, string roleIds)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<string> listRoles = Funs.GetStrListByStr(roleIds, ',');
List<string> listUnitIds = Funs.GetStrListByStr(unitIds, ',');
List<Model.Person_Persons> list = new List<Model.Person_Persons>();
if (!string.IsNullOrEmpty(projectId))
{
var getProjectPersons = from x in db.SitePerson_Person
where x.ProjectId == projectId && x.States == Const.State_1 && x.RoleIds != null
select x;
if (listUnitIds.Count() > 0)
{
getProjectPersons = getProjectPersons.Where(x => listUnitIds.Contains(x.UnitId));
}
if (listRoles.Count() > 0)
{
foreach (var item in listRoles)
{
var getNewlist = getProjectPersons.Where(x => x.RoleIds.Contains(item));
if (getNewlist.Count() > 0)
{
var getPersonIdList = getNewlist.Select(p => p.PersonId).ToList();
var getPerson = db.Person_Persons.Where(x => getPersonIdList.Contains(x.PersonId));
list.AddRange(getPerson);
}
}
}
else
{
list = (from x in getProjectPersons
join y in db.Person_Persons on x.PersonId equals y.PersonId
select y).ToList();
}
}
else
{
var getPersons = from x in db.Person_Persons
where x.PersonId != Const.hfnbdId && x.PersonId != Const.sedinId
&& (x.IsPost == true || !x.IsPost.HasValue) && x.Account != null
select x;
if (listUnitIds.Count() > 0)
{
getPersons = getPersons.Where(x => listUnitIds.Contains(x.UnitId));
}
if (listRoles.Count() > 0)
{
foreach (var item in listRoles)
{
var getNewlist = getPersons.Where(x => x.RoleIds.Contains(item));
if (getNewlist.Count() > 0)
{
list.AddRange(getNewlist);
}
}
}
else
{
list = getPersons.ToList();
}
}
return list.OrderBy(x => x.PersonName).ToList();
}
}
#endregion
#region ID单位ID获取 ListItem
/// <summary>
/// 根据项目ID单位ID获取 用户ListItem
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <returns></returns>
public static System.Web.UI.WebControls.ListItem[] GetUserByUnitId(string projectId, string unitId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getUser = GetUserListByProjectIdUnitIdRoleId(projectId, unitId, null);
System.Web.UI.WebControls.ListItem[] lis = new System.Web.UI.WebControls.ListItem[getUser.Count()];
for (int i = 0; i < getUser.Count(); i++)
{
lis[i] = new System.Web.UI.WebControls.ListItem(getUser[i].PersonName ?? "", getUser[i].PersonId.ToString());
}
return lis;
}
}
#endregion
#region Id部门获取用户下拉选项
/// <summary>
/// 根据单位Id部门获取用户下拉选项
/// </summary>
/// <returns></returns>
public static List<Model.Person_Persons> GetUserListByUnitIdDepartId(string unitId, string DepartId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<Model.Person_Persons> list = new List<Model.Person_Persons>();
list = (from x in db.Person_Persons
where x.UnitId == unitId && x.DepartId == DepartId
orderby x.PersonName
select x).ToList();
return list;
}
}
#endregion
#region
/// <summary>
/// 增加人员信息
/// </summary>
/// <param name="person">人员实体</param>
public static void AddPerson(Model.Person_Persons person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.Person_Persons newPerson = new Model.Person_Persons
{
PersonId = person.PersonId,
UnitId = person.UnitId,
DepartId = person.DepartId,
WorkPostId = person.WorkPostId,
JobNum = person.JobNum,
PersonName = person.PersonName,
Account = person.Account,
Password = GetPersonPassWord(person.IdentityCard),
IsOffice = person.IsOffice,
RoleIds = person.RoleIds,
IdentityCard = person.IdentityCard,
IdcardType = person.IdcardType,
IdcardStartDate = person.IdcardStartDate,
IdcardEndDate = person.IdcardEndDate,
IdcardForever = person.IdcardForever,
IdcardAddress = person.IdcardAddress,
Telephone = person.Telephone,
Sex = person.Sex,
Birthday = person.Birthday,
Address = person.Address,
PhotoUrl = person.PhotoUrl,
HeadImage = person.HeadImage,
QRCodeAttachUrl = person.QRCodeAttachUrl,
IDCardUrl = person.IDCardUrl,
IDCardBackUrl = person.IDCardBackUrl,
SignatureUrl = person.SignatureUrl,
IsForeign = person.IsForeign,
PersonType = person.PersonType,
MaritalStatus = person.MaritalStatus,
PoliticsStatus = person.PoliticsStatus,
PostTitleId = person.PostTitleId,
PostTitleDate = person.PostTitleDate,
PositionId = person.PositionId,
Nation = person.Nation,
EduLevel = person.EduLevel,
ForeignLanguage = person.ForeignLanguage,
CountryCode = person.CountryCode,
ProvinceCode = person.ProvinceCode,
IsPost = person.IsPost ?? true,
Graduate = person.Graduate,
Major = person.Major,
IntoDate = person.IntoDate,
ValidityDate = person.ValidityDate,
OpenId = person.OpenId,
CurrentProjectId = person.CurrentProjectId,
CurrentProjectRoleId = person.CurrentProjectRoleId,
CurrentProjectWorkPostId = person.CurrentProjectWorkPostId,
LastMenuType = person.LastMenuType,
LastIsOffice = person.LastIsOffice,
LastProjectId = person.LastProjectId,
DataFrom = person.DataFrom,
OldDataId = person.OldDataId,
IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard),
WorkDate = person.WorkDate,
RetirementDate = person.RetirementDate,
RelativeName = person.RelativeName,
RelativeTel = person.RelativeTel,
MultiProject = person.MultiProject,
HomePageType = person.HomePageType,
};
if (string.IsNullOrEmpty(person.QRCodeAttachUrl))
{
///生成二维码
newPerson.QRCodeAttachUrl = BLL.CreateQRCodeService.CreateCode_Simple("person$" + person.IdentityCard);
}
db.Person_Persons.InsertOnSubmit(newPerson);
db.SubmitChanges();
}
}
/// <summary>
/// 修改人员信息
/// </summary>
/// <param name="person">人员实体</param>
public static void UpdatePerson(Model.Person_Persons person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
bool isChange = false;
Model.Person_Persons newPerson = db.Person_Persons.FirstOrDefault(e => e.PersonId == person.PersonId);
if (newPerson != null)
{
if (newPerson.UnitId != person.UnitId)
{
newPerson.UnitId = person.UnitId;
isChange=true;
}
newPerson.DepartId = person.DepartId;
newPerson.WorkPostId = person.WorkPostId;
newPerson.JobNum = person.JobNum;
if (newPerson.PersonName != person.PersonName)
{
newPerson.PersonName = person.PersonName;
isChange = true;
}
newPerson.Account = person.Account;
newPerson.IsOffice = person.IsOffice;
newPerson.RoleIds = person.RoleIds;
if (newPerson.IdentityCard != person.IdentityCard)
{
newPerson.IdentityCard = person.IdentityCard;
newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
isChange = true;
}
newPerson.IdcardType = person.IdcardType;
newPerson.IdcardStartDate = person.IdcardStartDate;
newPerson.IdcardEndDate = person.IdcardEndDate;
newPerson.IdcardForever = person.IdcardForever;
newPerson.IdcardAddress = person.IdcardAddress;
newPerson.Telephone = person.Telephone;
newPerson.Birthday = person.Birthday;
newPerson.Sex = person.Sex;
newPerson.Address = person.Address;
newPerson.PhotoUrl = person.PhotoUrl;
newPerson.HeadImage = person.HeadImage;
newPerson.IDCardUrl = person.IDCardUrl;
newPerson.IDCardBackUrl = person.IDCardBackUrl;
newPerson.SignatureUrl = person.SignatureUrl;
newPerson.IsForeign = person.IsForeign;
newPerson.PersonType = person.PersonType;
newPerson.MaritalStatus = person.MaritalStatus;
newPerson.PoliticsStatus = person.PoliticsStatus;
newPerson.PostTitleId = person.PostTitleId;
newPerson.PostTitleDate = person.PostTitleDate;
newPerson.PositionId = person.PositionId;
newPerson.Nation = person.Nation;
newPerson.EduLevel = person.EduLevel;
newPerson.ForeignLanguage = person.ForeignLanguage;
newPerson.CountryCode = person.CountryCode;
newPerson.ProvinceCode = person.ProvinceCode;
newPerson.IsPost = person.IsPost ?? true;
newPerson.Graduate = person.Graduate;
newPerson.Major = person.Major;
newPerson.IntoDate = person.IntoDate;
newPerson.ValidityDate = person.ValidityDate;
newPerson.OpenId = person.OpenId;
newPerson.CurrentProjectId = person.CurrentProjectId;
newPerson.CurrentProjectRoleId = person.CurrentProjectRoleId;
newPerson.CurrentProjectWorkPostId = person.CurrentProjectWorkPostId;
newPerson.LastMenuType = person.LastMenuType;
newPerson.LastIsOffice = person.LastIsOffice;
newPerson.LastProjectId = person.LastProjectId;
newPerson.DataFrom = person.DataFrom;
newPerson.OldDataId = person.OldDataId;
newPerson.WorkDate = person.WorkDate;
newPerson.RetirementDate = person.RetirementDate;
newPerson.RelativeName = person.RelativeName;
newPerson.RelativeTel = person.RelativeTel;
newPerson.MultiProject = person.MultiProject;
newPerson.HomePageType = person.HomePageType;
newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
if (string.IsNullOrEmpty(person.QRCodeAttachUrl))
{
///生成二维码
newPerson.QRCodeAttachUrl = BLL.CreateQRCodeService.CreateCode_Simple("person$" + newPerson.IdentityCard);
}
else
{
newPerson.QRCodeAttachUrl = person.QRCodeAttachUrl;
}
db.SubmitChanges();
if (isChange)
{
SetProjectPersonUnit(person);
}
/// 人员不在职位,当前人所在项目 都出场
if (person.IsPost == false)
{
var getSitePersons = from x in db.SitePerson_Person where x.PersonId == person.PersonId && x.States != Const.ProjectPersonStates_2 select x;
foreach (var item in getSitePersons)
{
SitePerson_PersonService.SetSitePerson_PersonStates(item.SitePersonId, Const.ProjectPersonStates_2, DateTime.Now);
}
}
}
}
}
/// <summary>
/// 更新项目人员单位
/// </summary>
/// <param name="personId"></param>
/// <param name="unitId"></param>
public static void SetProjectPersonUnit(Model.Person_Persons person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getSitepersons = from x in db.SitePerson_Person
where x.PersonId == person.PersonId
select x;
if (getSitepersons.Count() > 0)
{
foreach (var item in getSitepersons)
{
item.UnitId = person.UnitId;
item.IdentityCard = person.IdentityCard;
item.PersonName = person.PersonName;
db.SubmitChanges();
}
}
}
}
/// <summary>
/// 修改人员信息
/// </summary>
/// <param name="person">人员实体</param>
public static void UpdatePerson_User(Model.Person_Persons person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.Person_Persons newPerson = db.Person_Persons.FirstOrDefault(e => e.PersonId == person.PersonId);
if (newPerson != null)
{
newPerson.UnitId = person.UnitId;
newPerson.DepartId = person.DepartId;
newPerson.Telephone = person.Telephone;
newPerson.JobNum = person.JobNum;
newPerson.PersonName = person.PersonName;
newPerson.Account = person.Account;
newPerson.IsOffice = person.IsOffice;
newPerson.RoleIds = person.RoleIds;
newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
if (string.IsNullOrEmpty(person.QRCodeAttachUrl))
{
///生成二维码
newPerson.QRCodeAttachUrl = BLL.CreateQRCodeService.CreateCode_Simple("person$" + newPerson.IdentityCard);
}
else
{
newPerson.QRCodeAttachUrl = person.QRCodeAttachUrl;
}
db.SubmitChanges();
}
}
}
/// <summary>
/// 根据项目人员修改人员信息
/// </summary>
/// <param name="person">人员实体</param>
public static void UpdatePersonByProject(Model.Person_Persons person)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
Model.Person_Persons newPerson = db.Person_Persons.FirstOrDefault(e => e.PersonId == person.PersonId);
if (newPerson != null)
{
//newPerson.UnitId = person.UnitId;
//newPerson.DepartId = person.DepartId;
// newPerson.WorkPostId = person.WorkPostId;
// newPerson.JobNum = person.JobNum;
newPerson.PersonName = person.PersonName;
newPerson.Account = person.Account;
newPerson.IsOffice = person.IsOffice;
// newPerson.RoleIds = person.RoleIds;
//if (newPerson.IdentityCard != person.IdentityCard)
//{
// newPerson.IdentityCard = person.IdentityCard;
// newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
//}
newPerson.IdcardType = person.IdcardType;
newPerson.IdcardStartDate = person.IdcardStartDate;
newPerson.IdcardEndDate = person.IdcardEndDate;
newPerson.IdcardForever = person.IdcardForever;
newPerson.IdcardAddress = person.IdcardAddress;
newPerson.Telephone = person.Telephone;
newPerson.Birthday = person.Birthday;
newPerson.Sex = person.Sex;
newPerson.Address = person.Address;
newPerson.PhotoUrl = person.PhotoUrl;
newPerson.HeadImage = person.HeadImage;
newPerson.IDCardUrl = person.IDCardUrl;
newPerson.IDCardBackUrl = person.IDCardBackUrl;
newPerson.SignatureUrl = person.SignatureUrl;
newPerson.IsForeign = person.IsForeign;
newPerson.PersonType = person.PersonType;
newPerson.MaritalStatus = person.MaritalStatus;
newPerson.PoliticsStatus = person.PoliticsStatus;
newPerson.PostTitleId = person.PostTitleId;
newPerson.PostTitleDate = person.PostTitleDate;
newPerson.PositionId = person.PositionId;
newPerson.Nation = person.Nation;
newPerson.EduLevel = person.EduLevel;
newPerson.ForeignLanguage = person.ForeignLanguage;
newPerson.CountryCode = person.CountryCode;
newPerson.ProvinceCode = person.ProvinceCode;
// newPerson.IsPost = person.IsPost;
newPerson.Graduate = person.Graduate;
newPerson.Major = person.Major;
newPerson.IntoDate = person.IntoDate;
newPerson.ValidityDate = person.ValidityDate;
newPerson.OpenId = person.OpenId;
newPerson.CurrentProjectId = person.CurrentProjectId;
newPerson.CurrentProjectRoleId = person.CurrentProjectRoleId;
newPerson.CurrentProjectWorkPostId = person.CurrentProjectWorkPostId;
//newPerson.LastMenuType = person.LastMenuType;
//newPerson.LastIsOffice = person.LastIsOffice;
//newPerson.LastProjectId = person.LastProjectId;
newPerson.DataFrom = person.DataFrom;
newPerson.OldDataId = person.OldDataId;
newPerson.WorkDate = person.WorkDate;
newPerson.RetirementDate = person.RetirementDate;
newPerson.RelativeName = person.RelativeName;
newPerson.RelativeTel = person.RelativeTel;
// newPerson.IsCardNoOK = IDCardValid.CheckIDCard(person.IdentityCard);
if (string.IsNullOrEmpty(person.QRCodeAttachUrl))
{
///生成二维码
newPerson.QRCodeAttachUrl = BLL.CreateQRCodeService.CreateCode_Simple("person$" + newPerson.IdentityCard);
}
else
{
newPerson.QRCodeAttachUrl = person.QRCodeAttachUrl;
}
db.SubmitChanges();
}
}
}
#region
/// <summary>
/// 设置人员密码
/// </summary>
/// <param name="idCard"></param>
/// <returns></returns>
public static string GetPersonPassWord(string idCard)
{
string passWord = Funs.EncryptionPassword(Const.Password);
////现场人员密码
if (!string.IsNullOrEmpty(idCard))
{
if (idCard.Length > 3)
{
passWord = Funs.EncryptionPassword(idCard.Substring(idCard.Length - 4));
}
else
{
passWord = Funs.EncryptionPassword(idCard);
}
}
return passWord;
}
/// <summary>
/// 修改密码
/// </summary>
/// <param name="personId"></param>
/// <param name="password"></param>
public static void UpdatePassword(string personId, string password)
{
Model.SGGLDB db = Funs.DB;
Model.Person_Persons m = db.Person_Persons.FirstOrDefault(e => e.PersonId == personId);
if (m != null)
{
m.Password = Funs.EncryptionPassword(password);
db.SubmitChanges();
}
}
#endregion
#region
/// <summary>
/// 删除人员信息
/// </summary>
/// <param name="personIds"></param>
/// <returns></returns>
public static string DeletePersons(string[] personIds, Model.Person_Persons CurrUser)
{
string returnInfo = string.Empty;
foreach (var rowID in personIds)
{
var getData = GetPerson_PersonsById(rowID);
if (getData != null)
{
string cont = JudgementDelete(getData);
if (string.IsNullOrEmpty(cont))
{
LogService.AddSys_Log(CurrUser, getData.IdentityCard, getData.PersonId, BLL.Const.PersonLibMenuId, BLL.Const.BtnDelete);
DeletePersonsById(rowID);
}
else
{
returnInfo += "人员:" + getData.PersonName + cont;
}
}
}
return returnInfo;
}
#region
/// <summary>
/// 判断是否可以删除
/// </summary>
/// <returns></returns>
public static string JudgementDelete(Model.Person_Persons getData)
{
string content = string.Empty;
if (Funs.DB.SitePerson_Person.FirstOrDefault(x => x.PersonId == getData.PersonId) != null)
{
content += "已在【现场人员】中使用,不能删除!";
}
return content;
}
#endregion
#region Id删除一个人员信息
/// <summary>
/// 根据人员Id删除一个人员信息
/// </summary>
/// <param name="personId"></param>
public static void DeletePersonsById(string personId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getDeletePerson = db.Person_Persons.FirstOrDefault(e => e.PersonId == personId);
if (getDeletePerson != null)
{
var logs = from x in db.Sys_Log where x.UserId == personId select x;
if (logs.Count() > 0)
{
db.Sys_Log.DeleteAllOnSubmit(logs);
}
///人员
var PersonItem = from x in db.SitePerson_PersonItem where x.PersonId == personId select x;
if (PersonItem.Count() > 0)
{
db.SitePerson_PersonItem.DeleteAllOnSubmit(PersonItem);
}
///人员证书
var PersonsCertificate = from x in db.QualityAudit_PersonQuality where x.PersonId == personId select x;
if (PersonsCertificate.Count() > 0)
{
db.QualityAudit_PersonQuality.DeleteAllOnSubmit(PersonsCertificate);
}
db.Person_Persons.DeleteOnSubmit(getDeletePerson);
db.SubmitChanges();
}
}
}
#endregion
#endregion
#endregion
#region
/// <summary>
/// 更新最后一次登陆系统 信息
/// </summary>
/// <param name="userId"></param>
/// <param name="LastMenuType"></param>
/// <param name="LastIsOffice"></param>
/// <param name="LastProjectId"></param>
public static void UpdateLastUserInfo(string personId, string LastMenuType, bool LastIsOffice, string LastProjectId)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var uU = db.Person_Persons.FirstOrDefault(e => e.PersonId == personId);
if (uU != null)
{
uU.LastMenuType = LastMenuType;
uU.LastIsOffice = LastIsOffice;
uU.LastMenuType = LastMenuType;
uU.LastProjectId = LastProjectId;
db.SubmitChanges();
}
}
}
#endregion
#region
/// <summary>
/// 验证人员信息
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
public static string ValidPersonInfo(Model.Person_Persons person)
{
string info = string.Empty;
if (!IDCardValid.CheckIDCard(person.IdentityCard) && person.UnitId != Const.UnitId_SEDIN)
{
info += "身份证号码不正确!";
}
if (!string.IsNullOrEmpty(person.Account))
{
var getAcc = Funs.DB.Person_Persons.FirstOrDefault(x => x.Account == person.Account && (x.PersonId != person.PersonId || (person.PersonId == null && x.PersonId != null)));
if (getAcc != null)
{
info += "输入的账号已存在已存在!";
}
}
var getIdCard = Funs.DB.Person_Persons.FirstOrDefault(x => x.IdentityCard == person.IdentityCard && (x.PersonId != person.PersonId || (person.PersonId == null && x.PersonId != null)));
if (getIdCard != null)
{
info += "输入的身份证号码人员库已存在!";
}
if (person.UnitId != Const.UnitId_SEDIN && (string.IsNullOrEmpty(person.PhotoUrl) || person.PhotoUrl == "~/res/images/blank.png"))
{
info += "照片不能为空!";
}
//if (string.IsNullOrEmpty(person.WorkPostId))
//{
// info += "请选择所属岗位!";
//}
return info;
}
#endregion
#region
/// <summary>
/// 验证人员工号是否存在
/// </summary>
/// <param name="userId">用户id</param>
/// <param name="usercode">工号</param>
/// <returns>是否存在</returns>
public static bool IsExistUsercode(string personId, string jobNum)
{
bool isExist = false;
var role = Funs.DB.Person_Persons.FirstOrDefault(x => x.JobNum == jobNum && (x.PersonId != personId || (personId == null && x.PersonId != null)));
if (role != null)
{
isExist = true;
}
return isExist;
}
#endregion
#region API CommenInfoController
/// <summary>
///
/// </summary>
/// <param name="projectId"></param>
/// <param name="name"></param>
/// <returns></returns>
public static List<Model.Person_Persons> GetProjectUserListByProjectIdForApi(string projectId, string name)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var users = (from x in db.Person_Persons
where (x.IsPost == true || !x.IsPost.HasValue) && x.PersonId != BLL.Const.hfnbdId
where name == "" || x.PersonName.Contains(name)
orderby x.PersonName
select x).ToList();
if (!string.IsNullOrEmpty(projectId))
{
users = (from x in users
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
where y.ProjectId == projectId && y.States == Const.State_1
orderby x.PersonName
select x).ToList();
}
return users;
}
}
/// <summary>
///
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="unitType"></param>
/// <param name="name"></param>
/// <returns></returns>
public static List<Model.Person_Persons> GetProjectUserListByProjectIdForApi(string projectId, string unitId, string unitType, string name)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
List<Model.Person_Persons> list = new List<Model.Person_Persons>();
if (!string.IsNullOrEmpty(projectId))
{
string[] unitTypes = { };
string[] unitIds = { };
if (!string.IsNullOrEmpty(unitType))
{
unitTypes = unitType.Split(',');
}
if (!string.IsNullOrEmpty(unitId))
{
unitIds = unitId.Split(',');
}
list = (from x in db.Person_Persons
join y in db.SitePerson_Person on x.PersonId equals y.PersonId
join z in db.Project_ProjectUnit on x.UnitId equals z.UnitId
where name == "" || x.PersonName.Contains(name)
where y.ProjectId == projectId && z.ProjectId == projectId
where unitType == "" || unitTypes.Contains(z.UnitType)
where unitId == "" || unitIds.Contains(z.UnitId)
where y.States == Const.State_1 && y.RoleIds != null
orderby z.UnitType descending, x.PersonName
select x).ToList();
}
return list;
}
}
#endregion
#region
/// <summary>
/// 带角色用户下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="projectId">项目id</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitFlowOperateControlUserDropDownList(FineUIPro.DropDownList dropName, string projectId, string unitId, bool isShowPlease)
{
dropName.DataValueField = "PersonId";
dropName.DataTextField = "PersonName";
dropName.DataSource = Person_PersonsService.GetProjectRoleUserListByProjectId(projectId, unitId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 用户下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="projectId">项目id</param>
/// <param name="roleIds">角色id</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitUserProjectIdUnitIdRoleIdDropDownList(FineUIPro.DropDownList dropName, string projectId, string unitId, string roleIds, bool isShowPlease)
{
dropName.Items.Clear();
dropName.DataValueField = "PersonId";
dropName.DataTextField = "PersonName";
dropName.DataSource = Person_PersonsService.GetUserListByProjectIdUnitIdRoleId(projectId, unitId, roleIds);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 用户下拉框
/// </summary>
/// <param name="dropName">下拉框名字</param>
/// <param name="isShowPlease">是否显示请选择</param>
public static void InitUserUnitIdDepartIdDropDownList(FineUIPro.DropDownList dropName, string unitId, string DepartId, bool isShowPlease)
{
dropName.DataValueField = "PersonId";
dropName.DataTextField = "PersonName";
dropName.DataSource = Person_PersonsService.GetUserListByUnitIdDepartId(unitId, DepartId);
dropName.DataBind();
if (isShowPlease)
{
Funs.FineUIPleaseSelect(dropName);
}
}
#endregion
}
}