using BLL; using FastReport.Data; using FineUIPro.Web.HSSE.SitePerson; using FineUIPro.Web.ProjectData; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Web.UI; using System.Web.UI.WebControls; using System.Windows.Forms; namespace FineUIPro.Web.HSSE.KqShowScreen { public partial class JZYScreenOld : PageBase { #region 项目主键 /// /// 项目主键 /// public string ProjectId { get { return (string)ViewState["ProjectId"]; } set { ViewState["ProjectId"] = value; } } #endregion #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.ProjectId = this.CurrUser.LoginProjectId; } } #endregion [WebMethod] public static object getData(string projectId) { int total = 0; HashSet ids = new HashSet(); HashSet idsIn = new HashSet(); Dictionary inperson = new Dictionary(); Dictionary outPerson = new Dictionary(); DateTime dateTime = DateTime.Now.AddDays(-1); var inout = Funs.DB.SitePerson_PersonInOut.Where(x => x.ProjectId == projectId && x.ChangeTime > dateTime).OrderByDescending(x => x.ChangeTime); Dictionary company = new Dictionary(); Dictionary workPost = new Dictionary(); foreach (var io in inout) { ids.Add(io.PersonId); if (io.IsIn.HasValue && io.IsIn.Value) //24小时内最晚的入场 { if (inperson.ContainsKey(io.PersonId)) { if (inperson[io.PersonId] < io.ChangeTime.Value) { inperson[io.PersonId] = io.ChangeTime.Value; } } else { if (io.ChangeTime.HasValue) { inperson.Add(io.PersonId, io.ChangeTime.Value); } } } else //24小时内最晚的出场 { if (outPerson.ContainsKey(io.PersonId)) { if (outPerson[io.PersonId] < io.ChangeTime.Value) { outPerson[io.PersonId] = io.ChangeTime.Value; } } else { if (io.ChangeTime.HasValue) { outPerson.Add(io.PersonId, io.ChangeTime.Value); } } } } foreach (var id in ids) { if (inperson.ContainsKey(id) && !outPerson.ContainsKey(id))//只有入场没有出场 在场 { idsIn.Add(id); total++; } else if (inperson.ContainsKey(id) && outPerson.ContainsKey(id)) { if (inperson[id] > outPerson[id])//最晚入场时间 小于出场时间 在场 { idsIn.Add(id); total++; } } } HashSet keys1 = new HashSet(); HashSet keys2 = new HashSet(); foreach (var io in inout) { if (idsIn.Contains(io.PersonId)) { if (!string.IsNullOrEmpty(io.WorkPostName)) { if (!keys1.Contains(io.PersonId)) { keys1.Add(io.PersonId); if (workPost.ContainsKey(io.UnitName+";"+io.WorkPostName)) { workPost[io.UnitName + ";" + io.WorkPostName] = workPost[io.UnitName + ";" + io.WorkPostName] + 1; } else { workPost[io.UnitName + ";" + io.WorkPostName] = 1; } } } if (!string.IsNullOrEmpty(io.UnitName)) { if (!keys2.Contains(io.PersonId)) { keys2.Add(io.PersonId); if (company.ContainsKey(io.UnitName)) { company[io.UnitName] = company[io.UnitName] + 1; } else { company[io.UnitName] = 1; } } } } } var workPosts = Funs.DB.Base_WorkPost.ToList(); string html = ""; List comStatic = new List(); foreach (var key in company.Keys) { html += @"
  • "+ key + @"
    "+ company[key] + @"
    "; int MPerson = 0; int SPerson = 0; string workPostName = ""; string workPostNum = ""; foreach (var key2 in workPost.Keys) { MPerson = 0; SPerson = 0; string[] keys = key2.Split(';'); if (key == keys[0]) { var workPostTemp = workPosts.FirstOrDefault(w => w.WorkPostName == keys[1]); if (workPostTemp != null) { if (workPostTemp.PostType == Const.PostType_1)//管理人员 { MPerson += workPost[key2]; } else if (workPostTemp.PostType == Const.PostType_2)//特种作业人员 { SPerson += workPost[key2]; workPostName += "
    "+ keys[1] + "
    "; workPostNum += "
    "+ workPost[key2] + "
    "; } } } } var ZPerson = company[key] - MPerson - SPerson; workPostName += "
    作业人员
    "; workPostNum += "
    " + ZPerson + "
    "; workPostName += "
    管理人员
    "; workPostNum += "
    " + MPerson + "
    "; html += "
    "+ workPostName + "
    "; html += "
    "+ workPostNum + "
  • "; } return new { company = html, total }; } } }