using BLL;
using Model;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace FineUIPro.Web.common
{
public partial class mainMenu_PDigData : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//getEmployInOutRecords = Funs.DB.T_d_EmployInOutRecord.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date).ToList();
//getPersons = Funs.DB.SitePerson_Person.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.IsUsed == true
// && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime > DateTime.Now)).ToList();
///当前现场总人数
getSitePerson();
}
}
#region 当前现场总人数
///
/// 当前现场总人数
///
private void getSitePerson()
{
//var AllCount = ( from x in Funs.DB.T_d_EmployInOutRecord.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date)
// from y in Funs.DB.SitePerson_Person.Where(y=>y.ProjectId== this.CurrUser.LoginProjectId && y.IsUsed==true)
// select x.IDCardNo).Distinct().Count();
var AllCount = (from x in Funs.DB.T_d_EmployInOutRecord
join y in Funs.DB.SitePerson_Person on new { ss1 = x.ProjectId, ss = x.IDCardNo } equals new { ss1 = y.ProjectId, ss = y.IdentityCard }
where y.ProjectId == this.CurrUser.LoginProjectId && y.IsUsed == true && x.ProjectId== this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date
select x.IDCardNo).Distinct().Count();
if (AllCount > 0)
{
////总人数
this.divperson.InnerHtml = ((AllCount % 10000) / 1000).ToString();
this.person00.InnerHtml = ((AllCount % 1000) / 100).ToString();
this.person01.InnerHtml = ((AllCount % 100) / 10).ToString();
this.person02.InnerHtml = (AllCount % 10).ToString();
}
}
#endregion
#region 项目安全人工时
///
/// 项目安全人工时
///
protected string Two
{
get
{
List series = new List();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List listCategories = new List();
businessColumn.title = "项目安全人工时";
Model.SingleSerie s = new Model.SingleSerie();
List listdata = new List();
Model.SingleSerie s2 = new Model.SingleSerie();
List listdata2 = new List();
var getMonts = SitePerson_MonthReportService.getMonthReports(CurrUser.LoginProjectId, null);
foreach (var month in getMonts.OrderBy(x => x.CompileDate))
{
listCategories.Add(string.Format("{0:yyyy-MM}", month.CompileDate));
listdata.Add(double.Parse((month.TotalPersonWorkTime ?? 0).ToString()));
listdata2.Add(double.Parse((month.DayWorkTime ?? 0).ToString()));
}
s.data = listdata;
series.Add(s);
s2.data = listdata2;
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
#endregion
#region 现场人员
///
///
///
public static List getEmployInOutRecords;
///
///
///
public static List getPersons;
///
/// 按单位统计
///
protected string Four1
{
get
{
//string sql = @"
//select b.*,a.numa,c.UnitName from(
//select UnitId, COUNT(distinct IDCardNo) numa from T_d_EmployInOutRecord
// where ProjectId = '" + CurrUser.LoginProjectId + "' and RecordDate = '"+DateTime.Now.ToString("yyyy-MM-dd")+ @"'
// group by UnitId)a right join
// (
// select UnitId, COUNT(1) numb from SitePerson_Person
// where ProjectId = '" + CurrUser.LoginProjectId + "' and IsUsed = 1 and InTime < '"+DateTime.Now.ToString("yyyy-MM-dd")+"' and(OutTime is null or OutTime > '"+ DateTime.Now.ToString("yyyy-MM-dd") +@"')
// group by UnitId
// )b on a.UnitId = b.UnitId left join Base_unit c on b.unitId=c.UnitId
// ";
string sql = @"SELECT
p.UnitId
,ISNULL((case when u.UnitName=''then null else u.UnitName end),'未知') AS UnitName
,COUNT( distinct IDCardNo) AS numa
,COUNT( distinct PersonId) AS numb
FROM dbo.SitePerson_Person AS P
LEFT JOIN ( select ProjectId,IDCardNo,SUM(ISNULL(ManHours,0)) ManHours from t_d_EmployInOutRecord where RecordDate >='" + DateTime.Now.ToString("yyyy-MM-dd")+ @"'
AND RecordDate <= '" + DateTime.Now.ToString("yyyy-MM-dd") + @"'
group by ProjectId,IDCardNo) T ON P.ProjectId=T.ProjectId AND T.IDCardNo=P.IdentityCard
LEFT JOIN dbo.Base_Unit AS U ON P.UnitId=U.UnitId
LEFT JOIN dbo.Project_ProjectUnit AS pu ON pu.UnitId=p.UnitId and pu.ProjectId=p.ProjectId
WHERE pu.ProjectId is not null and P.ProjectId ='" + CurrUser.LoginProjectId + @"' and P.InTime <=GETDATE() and ( P.OutTime is null or P.OutTime > GETDATE()) and p.IsUsed =1
GROUP BY P.UnitId,U.UnitName
";
DataTable tb41 = SQLHelper.GetDataTableRunText(sql);
List series = new List();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List listCategories = new List();
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
List listdata = new List();
List listdata2 = new List();
businessColumn.title = "现场人员";
if (tb41.Rows.Count > 0)
{
foreach (DataRow row in tb41.Rows)
{
listCategories.Add(UnitService.GetShortUnitNameByUnitId(row["UnitId"].ToString()) ?? "未知");
if (!string.IsNullOrEmpty(row["numa"].ToString()))
{
listdata.Add(double.Parse(row["numa"].ToString()));
}
else
{
listdata.Add(0);
}
listdata2.Add(double.Parse(row["numb"].ToString()));
}
}
//else
//{
// var getunits = UnitService.GetUnitByProjectIdList(this.CurrUser.LoginProjectId).Take(10);
// foreach (var unit in getunits)
// {
// string name = unit.ShortUnitName ?? unit.UnitName;
// if (string.IsNullOrEmpty(unit.UnitId) || string.IsNullOrEmpty(name))
// {
// name = "未知";
// }
// listCategories.Add(unit.ShortUnitName ?? unit.UnitName);
// listdata.Add(0);
// listdata2.Add(0);
// }
//}
s.data = listdata;
series.Add(s);
s2.data = listdata2;
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
///
/// 按岗位统计
///
protected string Four2
{
get
{
string sql = @"
select b.*,a.numa,c.WorkPostName from(
select a.PostId, a.PostName, COUNT(1) numa from T_d_EmployInOutRecord a left join SitePerson_Person b on a.IDCardNo = b.IdentityCard and a.ProjectId =b.ProjectId
where a.ProjectId = '" + CurrUser.LoginProjectId + "' and RecordDate = '" + DateTime.Now.ToString("yyyy-MM-dd") + @"' and IsUsed = 1 and InTime < '" + DateTime.Now.ToString("yyyy-MM-dd") + "' and(OutTime is null or OutTime > '" + DateTime.Now.ToString("yyyy-MM-dd") + @"')
group by PostId,PostName)a right join
(
select WorkPostId, COUNT(1) numb from SitePerson_Person
where ProjectId = '" + CurrUser.LoginProjectId + "' and IsUsed = 1 and InTime < '" + DateTime.Now.ToString("yyyy-MM-dd") + "' and(OutTime is null or OutTime > '" + DateTime.Now.ToString("yyyy-MM-dd") + @"')
group by WorkPostId
)b on a.PostId = b.WorkPostId left join Base_WorkPost c on b.WorkPostId=c.WorkPostId
";
DataTable tb41 = SQLHelper.GetDataTableRunText(sql);
List series = new List();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List listCategories = new List();
Model.SingleSerie s = new Model.SingleSerie();
List listdata = new List();
Model.SingleSerie s2 = new Model.SingleSerie();
List listdata2 = new List();
businessColumn.title = "现场人员";
if (tb41.Rows.Count > 0)
{
foreach (DataRow item in tb41.Rows)
{
listCategories.Add(item["WorkPostName"].ToString());
if (!string.IsNullOrEmpty(item["numa"].ToString()))
{
listdata.Add(double.Parse(item["numa"].ToString()));
}
else
{
listdata.Add(0);
}
listdata2.Add(double.Parse(item["numb"].ToString()));
}
}
// else
//{
// var getpTypes = getPersons.Select(x => x.WorkPostId).Distinct();
// foreach (var item in getpTypes)
// {
// listCategories.Add(WorkPostService.getWorkPostNameById(item));
// listdata.Add(0);
// listdata2.Add(0);
// }
//}
s.data = listdata;
series.Add(s);
s2.data = listdata2;
series.Add(s2);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
}
}
#endregion
}
}