225 lines
7.8 KiB
C#
225 lines
7.8 KiB
C#
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 项目主键
|
|
/// <summary>
|
|
/// 项目主键
|
|
/// </summary>
|
|
public string ProjectId
|
|
{
|
|
get
|
|
{
|
|
return (string)ViewState["ProjectId"];
|
|
}
|
|
set
|
|
{
|
|
ViewState["ProjectId"] = value;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region 加载
|
|
/// <summary>
|
|
/// 加载页面
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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<string> ids = new HashSet<string>();
|
|
HashSet<string> idsIn = new HashSet<string>();
|
|
Dictionary<string, DateTime> inperson = new Dictionary<string, DateTime>();
|
|
Dictionary<string, DateTime> outPerson = new Dictionary<string, DateTime>();
|
|
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<string, int> company = new Dictionary<string, int>();
|
|
Dictionary<string, int> workPost = new Dictionary<string, int>();
|
|
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<string> keys1 = new HashSet<string>();
|
|
HashSet<string> keys2 = new HashSet<string>();
|
|
|
|
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<object> comStatic = new List<object>();
|
|
foreach (var key in company.Keys)
|
|
{
|
|
|
|
|
|
html += @" <li>
|
|
<div class='container'>
|
|
<div class='column' style='width: 10rem;line-height:2.8rem' > "+ key + @"</div>
|
|
<div class='column' style='width: 3rem;line-height:2.8rem'>"+ company[key] + @"</div> ";
|
|
|
|
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 += " <div> "+ keys[1] + " </div> ";
|
|
workPostNum += " <div> "+ workPost[key2] + " </div> ";
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var ZPerson = company[key] - MPerson - SPerson;
|
|
|
|
workPostName += "<div>作业人员</div> ";
|
|
workPostNum += " <div>" + ZPerson + "</div>";
|
|
workPostName += " <div>管理人员</div> ";
|
|
workPostNum += " <div>" + MPerson + "</div>";
|
|
|
|
|
|
html += "<div class='column'style='width: 8rem;'>"+ workPostName + "</div>";
|
|
html += "<div class='column'style='width: 3rem;'> "+ workPostNum + "</div> </div> </li>";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
return new { company = html, total };
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
} |