SGGL_SHJ/SGGL/WebAPI/Controllers/PersonController.cs

1135 lines
49 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 BLL;
using System;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web.Http;
namespace WebAPI.Controllers
{
/// <summary>
///
/// </summary>
public class PersonController : ApiController
{
#region personid获取人员信息
/// <summary>
/// 根据personid获取人员信息
/// </summary>
/// <param name="sitePersonId"></param>
/// <returns></returns>
public Model.ResponeData getPersonBySitePersonId(string sitePersonId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APIPersonService.getPersonBySitePersonId(sitePersonId, null, null);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region projectIdidentityCard获取人员信息
/// <summary>
/// 根据projectId、identityCard获取人员信息
/// </summary>
/// <param name="projectId"></param>
/// <param name="identityCard"></param>
/// <returns></returns>
public Model.ResponeData getPersonByProjectIdIdentityCard(string projectId, string identityCard)
{
var responeData = new Model.ResponeData();
try
{
var getPerson = Funs.DB.Person_Persons.FirstOrDefault(x => x.IdentityCard == identityCard);
if (getPerson == null)
{
responeData.data = null;
}
else
{
responeData.data = APIPersonService.getPersonBySitePersonId(null, projectId, identityCard);
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region projectIdunitid获取人员信息
/// <summary>
/// 根据projectId、unitid获取人员信息
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="pageIndex"></param>
/// <returns></returns>
public Model.ResponeData getPersonByProjectIdUnitId(string projectId, string unitId, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getPersonByProjectIdUnitId(projectId, unitId);
int pageCount = getDataList.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 根据条件获取项目人员信息(支持分页和过滤)
/// </summary>
/// <param name="filter">查询过滤条件ProjectName为必填参数</param>
/// <param name="pagesize">每页条数</param>
/// <param name="pageindex">页码从1开始</param>
/// <param name="returnAll">是否返回全部数据</param>
/// <returns></returns>
public Model.ResponeData getPersonByFilter([FromUri] Model.ProjectPersonInput filter, int? pagesize = 15, int? pageindex = 1, bool ? returnAll = false)
{
var responeData = new Model.ResponeData();
try
{
// 验证必填参数 ProjectName
if (filter == null || string.IsNullOrEmpty(filter.ProjectName))
{
responeData.code = 0;
responeData.message = "ProjectName为必填参数";
return responeData;
}
// 处理可空参数的默认值
int actualPagesize = pagesize ?? 15;
int actualPageindex = pageindex ?? 1;
bool actualReturnAll = returnAll ?? false;
var getDataList = APIPersonService.getPersonByFilter(filter);
int pageCount = getDataList.Count;
if (!actualReturnAll && pageCount > 0 && actualPageindex > 0 && actualPagesize > 0)
{
getDataList = getDataList.Skip(actualPagesize * (actualPageindex - 1)).Take(actualPagesize).ToList();
}
responeData.data = new { pageCount, pageindex = actualPageindex, pagesize = actualPagesize, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 获取在岗、离岗、待审人员列表
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="states"></param>
/// <param name="strUnitId"></param>
/// <param name="strWorkPostId"></param>
/// <param name="strParam"></param>
/// <returns></returns>
public Model.ResponeData getPersonStatesCount(string projectId, string unitId, string states, string strUnitId, string strWorkPostId, string strParam)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getViews = from x in db.SitePerson_Person
where x.ProjectId == projectId && (strUnitId == null || x.UnitId == strUnitId)
&& (strWorkPostId == null || x.WorkPostId == strWorkPostId)
select x;
if (unitId != Const.UnitId_SEDIN && !string.IsNullOrEmpty(unitId))
{
getViews = getViews.Where(x => x.UnitId == unitId);
}
if (!string.IsNullOrEmpty(strParam))
{
getViews = getViews.Where(x => x.PersonName.Contains(strParam) || x.IdentityCard.Contains(strParam));
}
int tatalCount = getViews.Count();
//在审
int count0 = getViews.Where(x => x.States == Const.ProjectPersonStates_0).Count();
//在岗
int count1 = getViews.Where(x => x.States == Const.ProjectPersonStates_1).Count();
//离岗
int count2 = getViews.Where(x => x.States == Const.ProjectPersonStates_2).Count();
//打回
int count3 = getViews.Where(x => x.States == Const.ProjectPersonStates_R).Count();
responeData.data = new { tatalCount, count0, count1, count2, count3 };
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 获取在岗、离岗、待审人员列表
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId">当前人单位ID</param>
/// <param name="states">0待审1在岗2离岗</param>
/// <param name="strUnitId">查询单位</param>
/// <param name="strWorkPostId">查询岗位</param>
/// <param name="strParam">查询条件</param>
/// <param name="pageIndex"></param>
/// <returns></returns>
public Model.ResponeData getPersonListByProjectIdStates(string projectId, string unitId, string states, string strUnitId, string strWorkPostId, string strParam, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getPersonListByProjectIdStates(projectId, unitId, states, strUnitId, strWorkPostId, strParam, pageIndex);
int pageCount = APIPersonService.getPersonListCount;
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region identityCard获取人员培训考试信息
/// <summary>
/// 根据identityCard获取人员培训考试信息
/// </summary>
/// <param name="identityCard"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public Model.ResponeData getPersonTestRecoedByIdentityCard(string identityCard, string projectId = null)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APIPersonService.getPersonTestRecoedByIdentityCard(identityCard, projectId);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region identityCard获取人员资质信息
/// <summary>
/// 根据identityCard获取人员资质信息
/// </summary>
/// <param name="identityCard"></param>
/// <param name="projectId"></param>
/// <returns></returns>
public Model.ResponeData getPersonQualityByIdentityCard(string identityCard, string projectId = null)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = APIPersonService.getPersonQualityByIdentityCard(identityCard, projectId);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region projectIdunitid获取特岗人员资质各状态数
/// <summary>
/// 根据projectId、unitid获取特岗人员资质各状态数
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitId">单位ID</param>
/// <returns>人员资质数量</returns>
public Model.ResponeData getPersonQualityCount(string projectId, string unitId)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getDataList = db.View_QualityAudit_PersonQuality.Where(x => x.ProjectId == projectId && x.CertificateId != null);
if (ProjectUnitService.GetProjectUnitTypeByProjectIdUnitId(projectId, unitId))
{
getDataList = getDataList.Where(x => x.UnitId == unitId);
}
//总数
int tatalCount = getDataList.Count();
//过期
int count1 = getDataList.Where(x => x.LimitDate < DateTime.Now).Count();
//即将过期
int count2 = getDataList.Where(x => x.LimitDate >= DateTime.Now && x.LimitDate < DateTime.Now.AddMonths(1)).Count();
responeData.data = new { tatalCount, count1, count2 };
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region projectIdunitid获取特岗人员资质信息
/// <summary>
/// 根据projectId、unitid获取特岗人员资质信息
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitId">单位ID</param>
/// <param name="type">数据类型0-已过期1-即将过期;2-无证;3-待审核4-已审核;-1打回</param>
/// <param name="pageIndex">页码</param>
/// <returns></returns>
public Model.ResponeData getPersonQualityByProjectIdUnitId(string projectId, string unitId, string type, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getPersonQualityByProjectIdUnitId(projectId, unitId, type);
int pageCount = getDataList.Count();
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region QualityAudit_PersonQuality
/// <summary>
/// 保存Meeting
/// </summary>
/// <param name="personQuality">人员资质信息</param>
/// <returns></returns>
[HttpPost]
public Model.ResponeData SavePersonQuality([FromBody] Model.PersonQualityItem personQuality)
{
var responeData = new Model.ResponeData();
try
{
APIPersonService.SavePersonQuality(personQuality);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region \\\\
/// <summary>
/// 根据项目\单位\岗位\培训类型获取项目培训\考试人员信息
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitIds">培训单位ID</param>
/// <param name="workPostIds">培训岗位ID(可为空)</param>
/// <param name="trainTypeId">培训类型ID(可为空)</param>
/// <param name="pageIndex">分页</param>
/// <returns></returns>
public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, trainTypeId,null).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList();
int pageCount = getDataList.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.OrderBy(u => u.UnitName).ThenBy(u => u.PersonName).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); ////200 ->Funs.PageSize
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
/// <summary>
///
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitIds"></param>
/// <param name="workPostIds"></param>
/// <param name="trainTypeId"></param>
/// <param name="name"></param>
/// <param name="pageIndex"></param>
/// <returns></returns>
public Model.ResponeData getTrainingPersonListByTrainTypeId(string projectId, string unitIds, string workPostIds, string trainTypeId,string name, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getTrainingPersonListByTrainTypeId(projectId, unitIds, workPostIds, trainTypeId,name).OrderBy(x => x.UnitName).ThenBy(x => x.ProjectName).ToList();
int pageCount = getDataList.Count;
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.OrderBy(u => u.UnitName).ThenBy(u => u.PersonName).Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList(); ////200 ->Funs.PageSize
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 保存项目人员信息
/// </summary>
/// <param name="person">人员信息</param>
/// <returns></returns>
[HttpPost]
public Model.ResponeData SaveSitePerson([FromBody] Model.PersonItem person)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
if (person != null && !string.IsNullOrEmpty(person.IdentityCard))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == person.IdentityCard.Trim() && x.ProjectId == person.ProjectId);
if (getPerson != null && getPerson.PersonId != person.PersonId)
{
responeData.code = 2;
responeData.message = "人员身份证号码已存在!";
}
else
{
APIPersonService.SaveSitePerson(person);
}
}
else
{
responeData.code = 2;
responeData.message = "人员信息有误!";
}
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 更新人员更新附件
/// </summary>
/// <param name="person">人员信息</param>
/// <returns></returns>
[HttpPost]
public Model.ResponeData SaveSitePersonAttachment([FromBody] Model.PersonItem person)
{
var responeData = new Model.ResponeData();
try
{
if (person != null)
{
APIPersonService.SaveSitePersonAttachment(person);
}
else
{
responeData.code = 2;
responeData.message = "人员附件信息有误!";
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 人员状态调整
/// </summary>
/// <param name="sitePersonId"></param>
/// <param name="states"></param>
/// <returns></returns>
public Model.ResponeData getSitePersonPersonStates(string sitePersonId, string states)
{
var responeData = new Model.ResponeData();
try
{
SitePerson_PersonService.SetSitePerson_PersonStates(sitePersonId, states, DateTime.Now);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 保存人员信息
/// </summary>
/// <param name="person">人员信息</param>
/// <returns></returns>
[HttpPost]
public Model.ResponeData PostProjectPerson([FromBody] Model.PersonItem person)
{
var responeData = new Model.ResponeData();
try
{
if (person != null)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var getProject = ProjectService.GetProjectByProjectId(person.ProjectId);
if (getProject != null)
{
var getUnit = UnitService.getUnitByCollCropCodeUnitName(person.CollCropCode, person.UnitName);
if (getUnit != null)
{
var getProjectPerson = SitePerson_PersonService.GetSitePersonByProjectIdIdentityCard(getProject.ProjectId, person.IdentityCard);
if (getProjectPerson == null)
{
var newPerson = APIPersonService.getSavePerson(person);
var newProjectPerson = APIPersonService.getSaveProjectPerson(person);
var getPersons = Person_PersonsService.GetPerson_PersonsByIdCard(person.IdentityCard);
if (getPersons == null)
{
if (person.headImage != null)
{
var image = Convert.FromBase64String(person.headImage);
newPerson.HeadImage = image;
string rootPath = ConfigurationManager.AppSettings["localRoot"];
string path = "FileUpLoad/PersonBaseInfo/" + DateTime.Now.ToString("yyyy-MM") + "/";
string fileUrl = (rootPath + path).Replace('/', '\\');
string flieName = Funs.GetNewFileName() + "~" + person.PersonName + ".jpg";
if (!Directory.Exists(fileUrl))
{
Directory.CreateDirectory(fileUrl);
}
newPerson.PhotoUrl = path + flieName;
System.IO.File.WriteAllBytes((fileUrl + flieName), image);
//AttachFileService.Base64ToImage(person.headImage, path, person.PersonName);
}
newPerson.IsOffice = false;
newPerson.PersonId = SQLHelper.GetNewID();
Person_PersonsService.AddPerson(newPerson);
}
if (!string.IsNullOrEmpty(person.TeamGroupName) && !string.IsNullOrEmpty(newProjectPerson.UnitId))
{
var getTeamGroup = TeamGroupService.getTeamGroupByTeamGroupName(getProject.ProjectId, newProjectPerson.UnitId, person.TeamGroupName);
if (getTeamGroup != null)
{
newProjectPerson.TeamGroupId = getTeamGroup.TeamGroupId;
}
else
{
Model.ProjectData_TeamGroup newTeamGroup = new Model.ProjectData_TeamGroup
{
TeamGroupId = SQLHelper.GetNewID(),
ProjectId = getProject.ProjectId,
UnitId = newProjectPerson.UnitId,
TeamGroupName = person.TeamGroupName,
Remark = "来源:门禁对接数据",
TeamTypeId = "CANJIAN_TEAM",
EntryTime = System.DateTime.Now,
RealNamePushTime = null,
};
db.ProjectData_TeamGroup.InsertOnSubmit(newTeamGroup);
db.SubmitChanges();
newProjectPerson.TeamGroupId = newTeamGroup.TeamGroupId;
}
}
var getWorkArea = UnitWorkService.GetUnitWorkByUnitWorkName(getProject.ProjectId, person.WorkAreaName);
if (getWorkArea != null)
{
newProjectPerson.WorkAreaId = getWorkArea.UnitWorkId;
}
var getWorkPost = WorkPostService.GetWorkPostByName(person.WorkPostName);
if (getWorkPost != null)
{
newProjectPerson.WorkPostId = getWorkPost.WorkPostId;
}
var getHsseMan = SitePerson_PersonService.getSitePerson_PersonByRoleId(getProject.ProjectId, BLL.Const.HSSEManager);
if (getHsseMan != null)
{
newProjectPerson.AuditorId = getHsseMan.PersonId;
newProjectPerson.AuditorDate = DateTime.Now;
}
newProjectPerson.OutTime = Funs.GetNewDateTime(person.OutTime);
if (newProjectPerson.OutTime.HasValue)
{
newProjectPerson.States = Const.ProjectPersonStates_2;
}
else
{
newProjectPerson.States = Const.ProjectPersonStates_1;
}
newProjectPerson.PersonId = SQLHelper.GetNewID();
SitePerson_PersonService.AddSitePerson(newProjectPerson);
responeData.message = "新增人员成功!";
}
else
{
if (!string.IsNullOrEmpty(person.OutTime))
{
SitePerson_PersonService.SetSitePerson_PersonStates(getProjectPerson.PersonId, Const.ProjectPersonStates_2, Funs.GetNewDateTime(person.OutTime));
responeData.message = "更新出场时间";
}
else
{
responeData.message = "该身份证号码人员已存在!";
}
}
}
else
{
responeData.code = 0;
responeData.message = "单位:" + person.UnitName + "施工平台不存在!";
}
}
else
{
responeData.code = 0;
responeData.message = "项目:" + person.ProjectId + "施工平台不存在!";
}
}
}
else
{
responeData.code = 0;
responeData.message = "数据为空!";
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 获取人员出入场记录
/// </summary>
/// <param name="projectId"></param>
/// <param name="idCard"></param>
/// <param name="isIn"></param>
/// <param name="changeTime"></param>
/// <returns></returns>
public Model.ResponeData getPersonInOut(string projectId, string idCard, int isIn, DateTime changeTime)
{
var responeData = new Model.ResponeData();
string operationLog = "projectId:" + projectId + ";idCard:" + idCard + ";isIn:" + isIn.ToString() + ";changeTime:" + Funs.GetNewFileName(changeTime);
try
{
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);
APICommonService.SaveSysAPILog("Person/getPersonInOut", operationLog, responeData.code.ToString());
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
APICommonService.SaveSysAPILog("Person/getPersonInOut", operationLog + "|" + ex.Message, responeData.code.ToString());
}
return responeData;
}
#endregion
#region
/// <summary>
///
/// </summary>
/// <param name="personInOut"></param>
/// <returns></returns>
[HttpPost]
public Model.ResponeData SavePersonInOut([FromBody] Model.PersonInOutItem personInOut)
{
var responeData = new Model.ResponeData();
try
{
if (!string.IsNullOrEmpty(personInOut.PersonId) || (!string.IsNullOrEmpty(personInOut.IdentityCard) && !string.IsNullOrEmpty(personInOut.ProjectId)))
{
Model.SitePerson_PersonInOut newPersonInOut = new Model.SitePerson_PersonInOut
{
ProjectId = personInOut.ProjectId,
OldID = personInOut.OldID,
PersonId = personInOut.PersonId,
IdentityCard = personInOut.IdentityCard,
IsIn = personInOut.IsIn ?? true,
ChangeTime = Funs.GetNewDateTimeOrNow(personInOut.ChangeTime),
InOutWay = personInOut.InOutWay ?? Const.InOutWay_Other,
};
PersonInOutService.AddPersonInOut(newPersonInOut);
}
else
{
responeData.code = 2;
responeData.message = "信息不全!";
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
ErrLogInfo.WriteLog(ex, "WX接口-保存人员出入记录", "PersonController.SavePersonInOut");
}
return responeData;
}
#endregion
#region
/// <summary>
/// 获取发卡人员
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public Model.ResponeData getPersonDataExchange(string projectId)
{
var responeData = new Model.ResponeData();
try
{
responeData.data = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
join persons in Funs.DB.Person_Persons on x.IdentityCard equals persons.IdentityCard
where x.ProjectId == projectId && !x.ExchangeTime.HasValue
&& x.States == Const.ProjectPersonStates_1 && x.CardNo.Length> 5 && persons.PhotoUrl != null
select new
{
x.PersonId,
x.SitePersonId,
x.PersonName,
x.CardNo,
x.IdentityCard,
x.UnitId,
y.UnitCode,
y.UnitName,
Sex = persons.Sex ?? "1",
Funs.DB.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName,
Funs.DB.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName,
persons.Telephone,
persons.Address,
TrainRecord = APIPersonService.getStrTrainRecordByPersonId(x.PersonId),
x.ExchangeTime,
x.ExchangeTime2,
PhotoUrl=persons.PhotoUrl.Replace('\\', '/'),
}).Take(200).ToList();
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
public Model.ResponeData getAllPersonDataExchange(string projectId)
{
var responeData = new Model.ResponeData();
try
{
var trainingIds = Funs.DB.EduTrain_TrainRecord.Where(x => projectId == projectId).Select(x => x.TrainingId).ToList();
var personIds = Funs.DB.EduTrain_TrainRecordDetail.Where(x => trainingIds.Contains(x.TrainingId)).Select(x=>x.PersonId).ToList(); ;
responeData.data = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
join persons in Funs.DB.Person_Persons on x.IdentityCard equals persons.IdentityCard
where x.ProjectId == projectId && !x.ExchangeTime.HasValue
&& x.States == Const.ProjectPersonStates_1 && x.CardNo.Length > 5 && persons.PhotoUrl != null
where personIds.Contains(x.PersonId)
select new
{
x.PersonId,
x.SitePersonId,
x.PersonName,
x.CardNo,
x.IdentityCard,
x.UnitId,
y.UnitCode,
y.UnitName,
x.InTime,
y.ShortUnitName,
Sex = persons.Sex ?? "1",
Funs.DB.Base_WorkPost.First(z => z.WorkPostId == x.WorkPostId).WorkPostName,
Funs.DB.ProjectData_TeamGroup.First(z => z.TeamGroupId == x.TeamGroupId).TeamGroupName,
persons.Telephone,
persons.Address,
TrainRecord = APIPersonService.getStrTrainRecordByPersonId(x.PersonId),
x.ExchangeTime,
x.ExchangeTime2,
x.AuditorDate,
PhotoUrl = persons.PhotoUrl.Replace('\\', '/'),
IsUsed = x.States == Const.ProjectPersonStates_1 ? 1 : 0,
BlackList = 0
}).Take(200).ToList();
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
ErrLogInfo.WriteLog(ex, "WX接口-获取人员下发门禁", "PersonController.getPersonDataExchange");
}
return responeData;
}
#endregion
#region
/// <summary>
/// 获取离场人员
/// </summary>
/// <param name="projectId"></param>
/// <returns></returns>
public Model.ResponeData getPersonOutDataExchange(string projectId)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
responeData.data = (from x in db.SitePerson_Person
where x.ProjectId == projectId && x.States == Const.ProjectPersonStates_2
&& x.CardNo != null && !x.ExchangeTime2.HasValue && x.ExchangeTime.HasValue
select new
{
x.SitePersonId,
x.PersonId,
x.PersonName,
x.CardNo,
x.IdentityCard,
OutTime = x.OutTime == null ? DateTime.Now.AddYears(10) : x.OutTime,
}).ToList();
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 更新人员数据交换时间
/// </summary>
/// <param name="sitePersonId">人员ID</param>
/// <param name="type">交换类型</param>
/// <returns></returns>
public Model.ResponeData getUpdatePersonExchangeTime(string sitePersonId, string type)
{
var responeData = new Model.ResponeData();
try
{
APIPersonService.getUpdatePersonExchangeTime(sitePersonId, type);
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
/// <summary>
///
/// </summary>
/// <param name="projectId"></param>
/// <param name="idCard"></param>
/// <param name="type"></param>
/// <returns></returns>
public Model.ResponeData getUpdatePersonExchangeTime(string projectId,string idCard, string type)
{
var responeData = new Model.ResponeData();
try
{
var getsiteperson = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.ProjectId == projectId && x.IdentityCard == idCard);
if (getsiteperson != null)
{
APIPersonService.getUpdatePersonExchangeTime(getsiteperson.SitePersonId, type);
}
else
{
responeData.code = 1;
responeData.message = "当前项目不存在身份证为:" + idCard.ToString() +"的人员!";
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 获取人员信息出入场记录
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId">当前人单位ID</param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="pageIndex">页码</param>
/// <returns></returns>
public Model.ResponeData getPersonInOutList(string projectId, string unitId, string startTime, string endTime, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getPersonInOutList(projectId, unitId, startTime, endTime);
int pageCount = getDataList.Count();
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region -
/// <summary>
/// 获取人员信息出入场记录
/// </summary>
/// <param name="projectId"></param>
/// <param name="unitId"></param>
/// <param name="userUnitId">当前人单位ID</param>
/// <param name="workPostId">岗位</param>
/// <param name="strParam">查询条件</param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="pageIndex">页码</param>
/// <returns></returns>
public Model.ResponeData getPersonInOutList(string projectId, string userUnitId, string workPostId, string strParam, string startTime, string endTime, int pageIndex, string unitId = null)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getPersonInOutList(projectId, userUnitId, unitId, workPostId, strParam, startTime, endTime);
int pageCount = getDataList.Count();
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region ID获取个人出入场记录
/// <summary>
/// 根据人员ID获取个人出入场记录
/// </summary>
/// <param name="personId"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <param name="pageIndex">页码</param>
/// <returns></returns>
public Model.ResponeData getPersonInOutListByPersonId(string personId, string startTime, string endTime, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getPersonInOutListByPersonId(personId, startTime, endTime);
int pageCount = getDataList.Count();
if (pageCount > 0 && pageIndex > 0)
{
getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
}
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
#region
/// <summary>
/// 根据条件获取人员出入场记录(支持分页和过滤)
/// </summary>
/// <param name="filter">查询过滤条件StartTime和EndTime必填</param>
/// <param name="pagesize">每页条数</param>
/// <param name="pageindex">页码从1开始</param>
/// <param name="returnAll">是否返回全部数据</param>
/// <returns></returns>
public Model.ResponeData getPersonInOutListByFilter([FromUri] Model.PersonInOutRecordInput filter, int? pagesize = 15, int? pageindex = 1, bool? returnAll = false)
{
var responeData = new Model.ResponeData();
try
{
// 验证必填参数
if (filter == null || filter.StartTime == default(DateTime) || filter.EndTime == default(DateTime))
{
responeData.code = 0;
responeData.message = "StartTime和EndTime为必填参数";
return responeData;
}
// 验证时间范围
if (filter.StartTime > filter.EndTime)
{
responeData.code = 0;
responeData.message = "StartTime不能大于EndTime";
return responeData;
}
if (filter == null || string.IsNullOrEmpty(filter.ProjectName))
{
responeData.code = 0;
responeData.message = "ProjectName为必填参数";
return responeData;
}
// 处理可空参数的默认值
int actualPagesize = pagesize ?? 15;
int actualPageindex = pageindex ?? 1;
bool actualReturnAll = returnAll ?? false;
var getDataList = APIPersonService.getPersonInOutListByFilter(filter);
int pageCount = getDataList.Count;
if (!actualReturnAll && pageCount > 0 && actualPageindex > 0 && actualPagesize > 0)
{
getDataList = getDataList.Skip(actualPagesize * (actualPageindex - 1)).Take(actualPagesize).ToList();
}
responeData.data = new { pageCount, pageindex = actualPageindex, pagesize = actualPagesize, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#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 Model.ResponeData getAbnormalPersonInOutList(string projectId, string unitId, string startTime, string endTime, string inOut, int pageIndex)
{
var responeData = new Model.ResponeData();
try
{
var getDataList = APIPersonService.getAbnormalPersonInOutList(projectId, unitId, startTime, endTime, inOut, pageIndex);
int pageCount = getDataList.Count();
responeData.data = new { pageCount, getDataList };
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
}
}