成达考勤大屏幕
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
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;
|
||||
|
||||
namespace FineUIPro.Web.HSSE.KqShowScreen
|
||||
{
|
||||
public partial class KqShowScreen : 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.WorkPostName))
|
||||
{
|
||||
workPost[io.WorkPostName] = workPost[io.WorkPostName] + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
workPost[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 personInOut = inout.FirstOrDefault();
|
||||
var person = Funs.DB.SitePerson_Person.FirstOrDefault(x => x.PersonId == personInOut.PersonId);
|
||||
string teamGroupName = "";
|
||||
string inOut = "出场";
|
||||
string PhotoUrl = "";
|
||||
PhotoUrl = "../../"+person.PhotoUrl;
|
||||
if (personInOut.IsIn ==true)
|
||||
{
|
||||
inOut = "入场";
|
||||
|
||||
}
|
||||
if (!string.IsNullOrEmpty(person.TeamGroupId))
|
||||
{
|
||||
var teamGroup = Funs.DB.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == person.TeamGroupId);
|
||||
if (teamGroup != null)
|
||||
{
|
||||
teamGroupName = teamGroup.TeamGroupName;
|
||||
}
|
||||
}
|
||||
List<object> comStatic = new List<object>();
|
||||
foreach (var key in company.Keys)
|
||||
{
|
||||
comStatic.Add(new { name =key, value=company[key] });
|
||||
}
|
||||
List<string> workPostName = new List<string>();
|
||||
List<int> workPostValue = new List<int>();
|
||||
foreach (var key in workPost.Keys)
|
||||
{
|
||||
workPostName.Add(key);
|
||||
workPostValue.Add(workPost[key]);
|
||||
}
|
||||
|
||||
|
||||
return new { company = comStatic, total, workPost = new { name = workPostName, value = workPostValue }, person = new{ personInOut.PersonName,personInOut.UnitName, personInOut.WorkPostName , inOut, PhotoUrl , teamGroupName, ChangeTime = personInOut.ChangeTime.Value.ToString("yyyy-MM-dd HH:mm")} };
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user