CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/common/main_new.aspx.cs

1420 lines
60 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 Model;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.common
{
public partial class main_new : PageBase
{
List<Model.Base_Project> allProjects;
public static List<Model.Solution_LargerHazard> LargerHazard = new List<Model.Solution_LargerHazard>();
public string[] pids { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
/* if (!IsPostBack)
{
Model.SGGLDB db = Funs.DB;
if (!string.IsNullOrEmpty(CurrUser.CompanyProjectId))
{
pids = CurrUser.CompanyProjectId.Split(',');
}
else
{
//加载所有在建项目的数据
var pidArray = Funs.DB.Base_Project.Where(x => x.ProjectState == "1").Select(x => x.ProjectId).ToArray();
if (pidArray.Length > 0)
{
pids = pidArray;
}
}
//未遂事故
this.divWS.InnerHtml = GetNearMissNum().ToString();
//安全人工时
var countAqrgsSum = Convert.ToDecimal(0);
if (pids == null)
{
countAqrgsSum = CountAqrgs();
}
else
{
countAqrgsSum = CountAqrgs(null, null, pids);
}
if (countAqrgsSum > 10000)
{
countAqrgsSum = countAqrgsSum / Convert.ToDecimal(10000.00);
this.divSafeWorkTime.InnerHtml = Math.Round(countAqrgsSum, 2).ToString() + "万";
}
else
{
this.divSafeWorkTime.InnerHtml = countAqrgsSum.ToString().Split('.')[0];
}
//本月安全人工时
//int wHoursMonth = 0;
//DateTime? sDate = Funs.GetNewDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString());
//var dayReports = getMonthReportsByCompany(sDate);
//if (dayReports.Count > 0)
//{
// wHoursMonth = Convert.ToInt32(dayReports[0].DayWorkTime);
//}
DateTime d1 = getStartMonth();
DateTime d2 = getEndMonth();
var countMonthAqrgs = Convert.ToDecimal(0);
if (pids == null)
{
countMonthAqrgs = CountAqrgs(d1, d2);
}
else
{
countMonthAqrgs = CountAqrgs(d1, d2, pids);
}
if (countMonthAqrgs > 10000)
{
countMonthAqrgs = countMonthAqrgs / Convert.ToDecimal(10000.00);
this.divSafeWorkTimeMonth.InnerHtml = Math.Round(countMonthAqrgs, 2).ToString() + "万";
}
else
{
this.divSafeWorkTimeMonth.InnerHtml = CountAqrgs(d1, d2).ToString().Split('.')[0];
}
//int wHoursMonth = db.SitePerson_PersonInOutNumber.Where(x => x.InOutDate > DateTime.Now.AddDays(-Convert.ToInt32(DateTime.Now.Date.Day)))
// .Max(x => x.WorkHours) ?? 0;
//this.divSafeWorkTimeMonth.InnerHtml = wHoursMonth.ToString();
//安全培训累计人员
var getTrainRecord = 0;
var boShengCount = 0;
if (pids == null)
{
getTrainRecord = db.EduTrain_TrainRecord.Sum(x => x.TrainPersonNum) ?? 0;
//修改:增加博晟教育中的人数
boShengCount = db.Bo_Sheng_TrainPerson.Where(x => (x.DeleteTag == "False" || x.DeleteTag == null)).ToList().Count;
this.divSafePersonNum.InnerHtml = (getTrainRecord + boShengCount).ToString();
}
else
{
getTrainRecord = db.EduTrain_TrainRecord.Where(x => pids.Contains(x.ProjectId)).Sum(x => x.TrainPersonNum) ?? 0;
//修改:增加博晟教育中的人数
boShengCount = db.Bo_Sheng_TrainPerson.Where(x => (x.DeleteTag == "False" || x.DeleteTag == null)
&& pids.Contains(x.ProjectId)).ToList().Count;
this.divSafePersonNum.InnerHtml = (getTrainRecord + boShengCount).ToString();
}
if (pids == null)
{
//安全管理人员
var allSum = from x in Funs.DB.SitePerson_Person
where x.IsUsed == true && x.InTime < DateTime.Now && (x.OutTime == null || x.OutTime > DateTime.Now)
select x;
var glAllPerson = from x in allSum
join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId
//where (y.PostType == "1" || y.PostType == "4") //一般管理岗位和特种管理人员
where y.IsHsse == true
select x;
this.divSafeManagePersonNum.InnerText = glAllPerson.Count().ToString();
}
else
{
//安全管理人员
var allSum = from x in Funs.DB.SitePerson_Person
where x.IsUsed == true && x.InTime < DateTime.Now && (x.OutTime == null || x.OutTime > DateTime.Now)
&& pids.Contains(x.ProjectId)
select x;
var glAllPerson = from x in allSum
join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId
//where (y.PostType == "1" || y.PostType == "4") //一般管理岗位和特种管理人员
where y.IsHsse == true
select x;
this.divSafeManagePersonNum.InnerText = glAllPerson.Count().ToString();
}
#region 质量管理人员,质量培训人员 增加公司级
int CqmsManageNum = 0;
int CqmsPxNum = 0;
//质量培训人员
DateTime date = DateTime.Now.AddDays(-1);
if (pids == null)
{
CqmsManageNum = (from x in Funs.DB.Person_CompanyBranchPerson
join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId
where x.IsOnJob == true && y.IsCQMS == true
select x).Count() +
(from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId
where x.IsUsed == true && y.IsCQMS == true
select x).Count();
this.divCqmsManageNum.InnerText = CqmsManageNum.ToString();
CqmsPxNum = (from x in Funs.DB.Comprehensive_InspectionPerson
where x.IsTrain == true
select x).Count();
divCqmsPxNum.InnerText = CqmsPxNum.ToString();
}
else
{
CqmsManageNum = (from x in Funs.DB.SitePerson_Person
join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId
where x.IsUsed == true && y.IsCQMS == true && pids.Contains(x.ProjectId)
select x).Count();
this.divCqmsManageNum.InnerText = CqmsManageNum.ToString();
CqmsPxNum = (from x in Funs.DB.Comprehensive_InspectionPerson
where x.IsTrain == true && pids.Contains(x.ProjectId)
select x).Count();
divCqmsPxNum.InnerText = CqmsPxNum.ToString();
}
#endregion
//在建项目
if (pids == null)
{
allProjects = ProjectService.GetAllProjectDropDownList();
}
else
{
allProjects = ProjectService.GetAllProjectDropDownList(pids);
}
int acount = allProjects.Count();
int pcount1 = 0;
int pcount2 = 0;
int pcount3 = 0;
if (acount > 0)
{
pcount1 = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null).Count();
var pidzjsg = string.Join(",", allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null).Select(x => x.ProjectId)).Split(',');
if (pids == null)
{
pcount2 = (from x in Funs.DB.SitePerson_Person where x.IsUsed == true && pidzjsg.Contains(x.ProjectId) select x).Count();
}
else
{
pidzjsg = pids;
pcount2 = (from x in Funs.DB.SitePerson_Person where x.IsUsed == true && pids.Contains(x.ProjectId) select x).Count();
}
pcount3 = Count3(pidzjsg);
}
div_zjxmCount.InnerHtml = pcount1.ToString() + "<div class=\"th\">个</div>";
div_cjrsCount.InnerHtml = pcount2.ToString() + "<div class=\"th\">人</div>";
div_wdgcCount.InnerHtml = pcount3.ToString() + "<div class=\"th\">个</div>";
//质量问题
getZlwt();
//质量共检
getZlgj();
//焊接
getHj();
//关键事项
getGjsx();
//人员信息
getSitePerson();
//项目人员图表
getProjectSitePerson();
//进度
getJd();
//整改数据
getZgsj();
//材料到货表格
getCldh();
}
*/
if (!IsPostBack)
{
InitializeProjectIds(); // 项目ID初始化封装
BindSafetyStatistics(); // 安全统计模块
BindQualityStatistics(); // 质量统计模块
BindProjectStatistics(); // 项目统计模块
getZlwt();
//质量共检
getZlgj();
//焊接
getHj();
//关键事项
getGjsx();
//人员信息
getSitePerson();
//项目人员图表
getProjectSitePerson();
//进度
getJd();
//整改数据
getZgsj();
//材料到货表格
getCldh();
}
}
// 初始化项目ID集合
private void InitializeProjectIds()
{
var db = Funs.DB;
pids = !string.IsNullOrEmpty(CurrUser.CompanyProjectId)
? CurrUser.CompanyProjectId.Split(',')
: db.Base_Project
.Where(x => x.ProjectState == "1")
.Select(x => x.ProjectId)
.ToArray();
}
// 安全统计模块封装
private void BindSafetyStatistics()
{
var db = Funs.DB;
// 未遂事故
divWS.InnerHtml = GetNearMissNum().ToString();
// 安全人工时(合并重复逻辑)
var countAqrgsSum = pids?.Any() == true
? CountAqrgs(d1: null, d2: null, pids)
: CountAqrgs();
if (countAqrgsSum > 10000)
{
countAqrgsSum = countAqrgsSum / Convert.ToDecimal(10000.00);
this.divSafeWorkTime.InnerHtml = Math.Round(countAqrgsSum, 2).ToString() + "万";
}
else
{
this.divSafeWorkTime.InnerHtml = countAqrgsSum.ToString().Split('.')[0];
}
// 当月安全人工时
var countMonthAqrgs = pids?.Any() == true
? CountAqrgs(getStartMonth(), getEndMonth(), pids)
: CountAqrgs(getStartMonth(), getEndMonth());
if (countMonthAqrgs > 10000)
{
countMonthAqrgs = countMonthAqrgs / Convert.ToDecimal(10000.00);
this.divSafeWorkTimeMonth.InnerHtml = Math.Round(countMonthAqrgs, 2).ToString() + "万";
}
else
{
this.divSafeWorkTimeMonth.InnerHtml = countMonthAqrgs.ToString().Split('.')[0];
}
// 安全培训人员(合并数据库查询)
var trainingQuery = db.EduTrain_TrainRecord
.Where(x => pids.Contains(x.ProjectId))
.GroupBy(x => 1)
.Select(g => new {
TrainCount = g.Sum(x => x.TrainPersonNum) ?? 0,
BoShengCount = db.Bo_Sheng_TrainPerson
.Where(x => (x.DeleteTag == "False" || x.DeleteTag == null))
.Where(x => pids.Contains(x.ProjectId))
.Count()
}).FirstOrDefault();
divSafePersonNum.InnerHtml = trainingQuery != null
? (trainingQuery.TrainCount + trainingQuery.BoShengCount).ToString()
: "0";
// 安全管理人员(优化关联查询)
var safetyStaffCount = db.SitePerson_Person
.Where(x=> x.IsUsed == true && x.InTime < DateTime.Now && (x.OutTime == null || x.OutTime > DateTime.Now))
.Where(x => pids.Contains(x.ProjectId))
.Join(db.Base_WorkPost.Where(x => x.IsHsse==true),
person => person.WorkPostId,
post => post.WorkPostId,
(person, post) => person)
.Count();
divSafeManagePersonNum.InnerText = safetyStaffCount.ToString();
}
// 质量统计模块封装
private void BindQualityStatistics()
{
var db = Funs.DB;
// 质量管理人员(合并公司+项目级查询)
var qualityQuery = db.Base_WorkPost
.Where(x => x.IsCQMS == true)
.GroupJoin(db.SitePerson_Person.Where(x=> x.IsUsed == true),
post => post.WorkPostId,
person => person.WorkPostId,
(post, persons) => new { post, persons })
.SelectMany(x => x.persons.DefaultIfEmpty(),
(x, person) => new { x.post, person })
.Where(x => pids.Contains(x.person.ProjectId));
divCqmsManageNum.InnerText = qualityQuery.Count().ToString();
// 质量培训人员
divCqmsPxNum.InnerText = db.Comprehensive_InspectionPerson
.Where(x => pids.Contains(x.ProjectId))
.Count(x => x.IsTrain == true).ToString();
}
// 项目统计优化
private void BindProjectStatistics()
{
var db = Funs.DB;
//在建项目
if (pids == null)
{
allProjects = ProjectService.GetAllProjectDropDownList();
}
else
{
allProjects = ProjectService.GetAllProjectDropDownList(pids);
}
int acount = allProjects.Count();
int pcount1 = 0;
int pcount2 = 0;
int pcount3 = 0;
if (acount > 0)
{
pcount1 = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null).Count();
var pidzjsg = string.Join(",", allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null).Select(x => x.ProjectId)).Split(',');
if (pids == null)
{
pcount2 = (from x in Funs.DB.SitePerson_Person where x.IsUsed == true && pidzjsg.Contains(x.ProjectId) select x).Count();
}
else
{
pidzjsg = pids;
pcount2 = (from x in Funs.DB.SitePerson_Person where x.IsUsed == true && pids.Contains(x.ProjectId) select x).Count();
}
pcount3 = Count3(pidzjsg);
}
div_zjxmCount.InnerHtml = pcount1.ToString() + "<div class=\"th\">个</div>";
div_cjrsCount.InnerHtml = pcount2.ToString() + "<div class=\"th\">人</div>";
div_wdgcCount.InnerHtml = pcount3.ToString() + "<div class=\"th\">个</div>";
}
#region
/// <summary>
/// 获取当前月的月末日期
/// </summary>
/// <returns></returns>
public static DateTime getEndMonth()
{
int span = Convert.ToInt32(System.DateTime.Now.Day);
System.DateTime dateEnd = System.DateTime.Now.AddMonths(1).AddDays(-span);
return dateEnd;
}
/// <summary>
/// 获取当前月初日期
/// </summary>
/// <returns></returns>
public static DateTime getStartMonth()
{
int span = Convert.ToInt32(System.DateTime.Now.Day);
span = span - 1;
System.DateTime dateStart = System.DateTime.Now.AddDays(-span);
return dateStart;
}
//安全人工时(穿透)
/// <summary>
/// 安全工时数
/// </summary>
/// <param name="state"></param>
/// <returns></returns>
protected decimal CountAqrgs(DateTime? d1 = null, DateTime? d2 = null, string[] pids = null)
{
decimal cout1 = 0;
var datetime1 = d1;
var datetime2 = d2;
var getAllPersonInOutList = from x in Funs.DB.SitePerson_PersonInOutNumber
select x;
if (pids != null)
{
getAllPersonInOutList = getAllPersonInOutList.Where(x => pids.Contains(x.ProjectId));
}
if (datetime1.HasValue)
{
getAllPersonInOutList = getAllPersonInOutList.Where(x => x.InOutDate >= datetime1);
}
if (datetime2.HasValue)
{
getAllPersonInOutList = getAllPersonInOutList.Where(x => x.InOutDate <= datetime2);
}
var projects = getAllPersonInOutList
.GroupBy(x => x.ProjectId)
.Select(g => new
{
Project = g.Key,
Items = g.OrderBy(x => x.InOutDate).ToList()
})
.Where(g => g.Items.Any());
cout1 = projects.ToList().Sum(g =>
(g.Items.Last().WorkHours ?? 0) -
(g.Items.First().WorkHours ?? 0));
var getD1 = from x in Funs.DB.Accident_AccidentHandle
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
where y.ProjectState == Const.ProjectState_1
select x;
var getD2 = from x in Funs.DB.Accident_AccidentReport
join y in Funs.DB.Base_Project on x.ProjectId equals y.ProjectId
where y.ProjectState == Const.ProjectState_1
select x;
if (pids != null)
{
getD1 = getD1.Where(x => pids.Contains(x.ProjectId));
getD2 = getD2.Where(x => pids.Contains(x.ProjectId));
}
if (datetime1.HasValue)
{
getD1 = getD1.Where(x => x.AccidentDate >= datetime1);
getD2 = getD2.Where(x => x.CompileDate >= datetime1);
}
if (datetime2.HasValue)
{
getD1 = getD1.Where(x => x.AccidentDate <= datetime2);
getD2 = getD2.Where(x => x.CompileDate <= datetime2);
}
if (getD1.Any())
{
cout1 = cout1 - getD1.Sum(x => x.WorkHoursLoss ?? 0);
}
if (getD2.Any())
{
cout1 = cout1 - getD2.Sum(x => x.WorkingHoursLoss ?? 0);
}
return cout1;
}
/// <summary>
/// 获取出入记录人工时-月报(项目级别)
/// </summary>
/// <returns></returns>
public static List<Model.SitePerson_MonthReport> getMonthReportsByCompany(DateTime? sDate)
{
Model.SGGLDB db = Funs.DB;
List<Model.SitePerson_MonthReport> reports = new List<Model.SitePerson_MonthReport>();
var getAllPersonInOutList = from x in db.SitePerson_PersonInOutNumber
select x;
if (getAllPersonInOutList.Count() > 0)
{
var getInMonths = (from x in getAllPersonInOutList select new { x.InOutDate.Year, x.InOutDate.Month }).Distinct();
if (sDate.HasValue)
{
getInMonths = getInMonths.Where(x => x.Year == sDate.Value.Year && x.Month == sDate.Value.Month);
}
foreach (var item in getInMonths)
{
DateTime compileDate = Funs.GetNewDateTimeOrNow(item.Year.ToString() + "-" + item.Month.ToString());
var getNow = getAllPersonInOutList.Where(x => x.InOutDate.Year == compileDate.Year && x.InOutDate.Month == compileDate.Month).Max(x => x.WorkHours);
if (getNow.HasValue)
{
Model.SitePerson_MonthReport reportItem = new Model.SitePerson_MonthReport
{
MonthReportId = SQLHelper.GetNewID(),
CompileDate = Funs.GetNewDateTime(item.Year.ToString() + "-" + item.Month.ToString()),
TotalPersonWorkTime = getNow,
};
DateTime upDate = compileDate.AddMonths(-1);
var getMax = getAllPersonInOutList.Where(x => x.InOutDate.Year == upDate.Year && x.InOutDate.Month == upDate.Month).Max(x => x.WorkHours) ?? 0;
reportItem.DayWorkTime = (getNow ?? 0) - getMax;
reports.Add(reportItem);
}
}
}
return reports;
}
#endregion
#region
protected string Project
{
get
{
Model.SingleSerie series = new Model.SingleSerie();
var project1s = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null);
var consts = Funs.DB.Sys_Const.Where(x => x.GroupId == ConstValue.GroupId_ProjectState);
string name = string.Empty;
if (project1s.Count() > 0)
{
foreach (var project1 in project1s)
{
string state = string.Empty;
var c = consts.FirstOrDefault(x => x.ConstValue == project1.ProjectState2);
if (c != null)
{
state = c.ConstText;
}
name += "<li style=\"border:1px solid white; padding:3px;\" class=\"c-item disabled swiper-slide\"><div class=\"tit tit-read\"><div class=\"flex\" ><div class=\"tit-t flex1\">" + project1.ProjectName + "</div><div class=\"tit-v\">" + state + "</div></div></div></li>";
}
}
var provinceDic = from x in Funs.DB.RealName_City select x;
List<double> listdata = new List<double>();
List<string> jd = new List<string>();
List<string> sg = new List<string>();
List<string> time = new List<string>();
List<string> ht = new List<string>();
List<string> convert = new List<string>();
List<string> loc = new List<string>();
listdata.Add(allProjects.Count());
jd.Add("");
sg.Add("");
time.Add("");
ht.Add("");
List<string> provinces = new List<string>();
provinces.Add("上海");
provinces.Add("河北");
provinces.Add("山西");
provinces.Add("内蒙古");
provinces.Add("辽宁");
provinces.Add("吉林");
provinces.Add("黑龙江");
provinces.Add("江苏");
provinces.Add("浙江");
provinces.Add("安徽");
provinces.Add("福建");
provinces.Add("江西");
provinces.Add("山东");
provinces.Add("河南");
provinces.Add("湖北");
provinces.Add("湖南");
provinces.Add("广东");
provinces.Add("广西");
provinces.Add("海南");
provinces.Add("四川");
provinces.Add("贵州");
provinces.Add("云南");
provinces.Add("西藏");
provinces.Add("陕西");
provinces.Add("甘肃");
provinces.Add("青海");
provinces.Add("宁夏");
provinces.Add("新疆");
provinces.Add("北京");
provinces.Add("天津");
provinces.Add("重庆");
provinces.Add("香港");
provinces.Add("澳门");
provinces.Add("台湾");
Model.SGGLDB db = Funs.DB;
var accidentList1 = from x in db.Accident_AccidentPersonRecord
join y in db.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId
where y.AccidentTypeName.Contains("未遂")
select x;
var accidentList2 = from x in db.Accident_AccidentReportOther
join y in db.Sys_Const on x.AccidentTypeId equals y.ConstValue
where y.ConstText.Contains("未遂")
select x;
foreach (var province in provinces)
{
int accidentNum = 0;
DateTime date = DateTime.Now;
decimal money1 = 0, money2 = 0;
var projects = from x in allProjects
join y in provinceDic on x.Province equals y.ProvinceCode
where y.CnShortName == province
select x;
listdata.Add(projects.Count());
decimal progress = 0;
if (projects.Count() > 0)
{
convert.Add(province);
foreach (var item in projects)
{
//未遂事故
var accidentListProject1 = accidentList1.Where(x => x.ProjectId == item.ProjectId);
var accidentListProject2 = accidentList2.Where(x => x.ProjectId == item.ProjectId);
accidentNum = accidentListProject1.Count() + accidentListProject2.Count();
//时间
if (item.StartDate != null && item.StartDate < date)
{
date = Convert.ToDateTime(item.StartDate);
}
//合同额
if (item.ConstructionMoney != null)
{
money1 += item.ConstructionMoney.Value;
}
if (item.Progress != null)
{
progress = item.Progress.Value;
}
}
jd.Add("进度:" + progress.ToString("0.##") + "%");
sg.Add("未遂事故:" + accidentNum.ToString());
time.Add("时间:" + string.Format("{0:yyyy-MM-dd}", date));
ht.Add("合同额(" + money1.ToString("0.##") + "W收款额" + money2 + "W");
}
else
{
jd.Add("");
sg.Add("");
time.Add("");
ht.Add("");
}
}
foreach (var item in allProjects)
{
decimal jdNum = 0;
string mapStr = "";
int accidentNum = 0;
DateTime date = DateTime.Now;
decimal money1 = 0, money2 = 0;
string endDate = string.Empty;
int timeSpan = 0;
if (!string.IsNullOrEmpty(item.MapCoordinates))
{
mapStr = item.MapCoordinates + ",";
//未遂事故
var accidentListProject1 = accidentList1.Where(x => x.ProjectId == item.ProjectId);
var accidentListProject2 = accidentList2.Where(x => x.ProjectId == item.ProjectId);
accidentNum = accidentListProject1.Count() + accidentListProject2.Count();
//时间
if (item.StartDate != null && item.StartDate < date)
{
date = Convert.ToDateTime(item.StartDate);
}
if (item.EndDate != null)
{
endDate = string.Format("{0:yyyy-MM-dd}", item.EndDate);
}
if (item.StartDate != null && item.EndDate != null)
{
TimeSpan t = (TimeSpan)(item.EndDate - item.StartDate);
timeSpan = t.Days / 30;
}
//合同额
if (item.ConstructionMoney != null)
{
money1 += item.ConstructionMoney.Value;
}
if (item.Progress != null)
{
jdNum = item.Progress.Value;
}
mapStr += string.Format("{0:yyyy-MM-dd}", date) + "~" + endDate + ",";
if (timeSpan > 0)
{
mapStr += timeSpan.ToString() + "个月,";
}
else
{
mapStr += timeSpan.ToString() + ",";
}
//mapStr += accidentNum.ToString() + ",";
mapStr += jdNum.ToString("0.##") + "%,";
mapStr += money1.ToString("0.##") + ",";
mapStr += money2 + ",";
mapStr += item.ShortName + ",";
//修改日期 2023-10-30 10:43:57
//内容:项目名称、开工日期、完工日期、剩余天数、进度
mapStr += item.ProjectId + ",";
mapStr += string.Format("{0:yyyy-MM-dd}", item.StartDate) + ",";
if (string.IsNullOrEmpty(item.EndDate.ToString()))
{
mapStr += ",";
}
else
{
//获取剩余天数
var residueDay = DateDiff(DateTime.Now, Convert.ToDateTime(item.EndDate)).ToString();
mapStr += string.Format("{0:yyyy-MM-dd}", item.EndDate) + "," + residueDay;
}
loc.Add(mapStr);
}
}
series.name = name;
series.data = listdata;
series.jd = jd;
series.sg = sg;
series.time = time;
series.ht = ht;
series.convert = convert;
series.loc = loc;
return JsonConvert.SerializeObject(series);
}
}
#endregion
#region
protected string Project2
{
get
{
Model.SingleSerie series = new Model.SingleSerie();
var project1s = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null);
Model.SGGLDB db = Funs.DB;
string str = string.Empty;
foreach (var item in allProjects)
{
if (!string.IsNullOrEmpty(item.MapCoordinates))
{
string startDate = string.Empty;
string endDate = string.Empty;
string residueDay = string.Empty;
if (item.StartDate != null)
{
startDate = string.Format("{0:yyyy-MM-dd}", item.StartDate);
}
if (item.EndDate != null)
{
endDate = string.Format("{0:yyyy-MM-dd}", item.EndDate);
//获取剩余天数
residueDay = DateDiff(DateTime.Now, Convert.ToDateTime(item.EndDate)).ToString();
}
decimal jdNum = 0;
if (item.Progress != null)
{
jdNum = item.Progress.Value;
}
str += "{name: '" + item.ShortName + "', value: [" + item.MapCoordinates + ", { value:'" + item.ShortName + "',value2:'" + startDate + "',value3:'" + endDate + "',value4:'" + residueDay + "',value5:'" + jdNum.ToString("0.##") + "%'}]},";
}
}
if (!string.IsNullOrEmpty(str))
{
str = str.Substring(0, str.Length - 1);
}
return str;
}
}
/// <summary>
/// 计算时间的相差天数
/// </summary>
/// <param name="dateStart"></param>
/// <param name="dateEnd"></param>
/// <returns></returns>
private int DateDiff(DateTime dateStart, DateTime dateEnd)
{
DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());
DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString());
TimeSpan sp = end.Subtract(start);
return sp.Days;
}
#endregion
#region
/// <summary>
/// 在施危大工程数量
/// </summary>
/// <param name="state"></param>
/// <returns></returns>
protected int Count3(string[] pids)
{
int cout1 = 0;
cout1 = Funs.DB.Solution_LargerHazard.Where(x => x.States == Const.State_2 && pids.Contains(x.ProjectId)).Count();
return cout1;
}
#endregion
#region
//质量问题总计
protected string zlallNumber;
//质量问题合格数量
protected string zlfinishNumber;
//质量问题整改率
protected string zlzgl;
protected string zgzglDataValue;
protected void getZlwt()
{
if (pids == null)
{
zlallNumber = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now
select x).Count().ToString();
var num2 = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.State == "7"
select x).Count();
zlfinishNumber = num2.ToString();
var num3 = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.State != "7"
select x).Count();
var zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3));
zlzgl = zgl.ToString();
zgzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString();
}
else
{
zlallNumber = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && pids.Contains(x.ProjectId)
select x).Count().ToString();
var num2 = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.State == "7" && pids.Contains(x.ProjectId)
select x).Count();
zlfinishNumber = num2.ToString();
var num3 = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.State != "7" && pids.Contains(x.ProjectId)
select x).Count();
var zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3));
zlzgl = zgl.ToString();
zgzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString();
}
}
#endregion
#region
protected string zlgjallNumber;
protected string zlgjfinishNumber;
protected string zlgjzgl;
protected string zggjzglDataValue;
protected void getZlgj()
{
if (pids == null)
{
var num1 = (from x in Funs.DB.ProcessControl_InspectionManagement
select x).Count();
//Check_JointCheck
zlgjallNumber = num1.ToString();
var num2 = (from x in Funs.DB.ProcessControl_InspectionManagement
where x.IsOnceQualified == true
select x).Count();
zlgjfinishNumber = num2.ToString();
var zgl = String.Format("{0:N2}", 100.0 * num2 / num1);
zlgjzgl = zgl.ToString();
zggjzglDataValue = (100 - (100.0 * num2 / num1)).ToString();
}
else
{
var num1 = (from x in Funs.DB.ProcessControl_InspectionManagement
where pids.Contains(x.ProjectId)
select x).Count();
//Check_JointCheck
zlgjallNumber = num1.ToString();
var num2 = (from x in Funs.DB.ProcessControl_InspectionManagement
where x.IsOnceQualified == true && pids.Contains(x.ProjectId)
select x).Count();
zlgjfinishNumber = num2.ToString();
var zgl = String.Format("{0:N2}", 100.0 * num2 / num1);
zlgjzgl = zgl.ToString();
zggjzglDataValue = (100 - (100.0 * num2 / num1)).ToString();
}
}
#endregion
#region
protected string hjallNumber = "0";
protected string hjfinishNumber = "0";
protected string hjzgl = "0";
protected string hjDataValue = "0";
protected void getHj()
{
Model.SingleSerie series = new Model.SingleSerie();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<double> listdata = new List<double>();
double result = 0;
Model.SGGLDB db = Funs.DB;
var ndtLists = from x in db.ProcessControl_NondestructiveTest_New where x.ProfessionalName == "工艺管道" select x;
if (pids != null)
{
ndtLists = ndtLists.Where(x=>pids.Contains(x.ProjectId));
}
decimal a = 0, b = 0;
var sumResult = ndtLists
.GroupBy(x => x.ProjectId)
.Select(g => new {
TotalQ = g.OrderByDescending(x => x.CreateDate)
.Select(x => x.TotalQuantity)
.FirstOrDefault(),
Rate = g.OrderByDescending(x => x.CreateDate)
.Select(x => x.TotalRate)
.FirstOrDefault()
})
.Where(x => x.TotalQ.HasValue).ToList()
.Select(x => new {
A = Math.Floor(x.TotalQ.Value * (decimal.Parse(x.Rate)) / 100),
B = x.TotalQ.Value
});
a = sumResult.Sum(x=>x.A);
b = sumResult.Sum(x => x.B);
/* if (ndtLists.Count() > 0)
{
foreach (var project in allProjects)
{
var ndt = (from x in ndtLists
where x.ProjectId == project.ProjectId
orderby x.CreateDate descending
select x).FirstOrDefault();
if (ndt != null)
{
if (ndt.TotalQuantity.HasValue)
{
a += Math.Floor(ndt.TotalQuantity.Value * Funs.GetNewDecimalOrZero(ndt.TotalRate) / 100);
b += ndt.TotalQuantity.Value;
}
}
}
}*/
if (b > 0)
{
result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 2));
hjallNumber = b.ToString();
hjfinishNumber = a.ToString();
hjzgl = result.ToString();
hjDataValue = (100 - result).ToString();
}
//if (ndtLists.Count() > 0)
//{
// foreach (var item in ndtLists)
// {
// //a += Funs.GetNewDecimalOrZero(item.OneTimeFilmQualifiedAmount);
// //b += Funs.GetNewDecimalOrZero(item.OneTimeFilmAmount);
// }
// if (b > 0)
// {
// result = Convert.ToDouble(decimal.Round(decimal.Parse((a / b * 100).ToString()), 2));
// hjallNumber = b.ToString();
// hjfinishNumber = a.ToString();
// hjzgl = result.ToString();
// hjDataValue = (100 - result).ToString();
// }
//}
}
#endregion
#region
//准点率
protected string gjsxZdl = "0";
protected void getGjsx()
{
if (pids == null)
{
//Check_JointCheck
var znum = (from x in Funs.DB.GJSX
select x).Count();
divGjsxzj.InnerHtml = znum.ToString();
//到期应完成
var dqnum = (from x in Funs.DB.GJSX
where x.CompleteDate <= DateTime.Now
select x).Count().ToString();
divGjsxdq.InnerHtml = dqnum;
//未准点完成
var wzdnum = (from x in Funs.DB.GJSX
where x.CompleteDate <= DateTime.Now
&& x.State != "0"
select x).Count().ToString();
divGjsxwzd.InnerHtml = wzdnum;
//准点率,已完成/总数*100
var ywcnum = (from x in Funs.DB.GJSX
where x.CompleteDate <= DateTime.Now
&& x.State == "0"
select x).Count();
gjsxZdl = Math.Round((100.0 * ywcnum / znum), 2).ToString();
}
else
{
//Check_JointCheck
var znum = (from x in Funs.DB.GJSX
where pids.Contains(x.ProjectId)
select x).Count();
divGjsxzj.InnerHtml = znum.ToString();
//到期应完成
var dqnum = (from x in Funs.DB.GJSX
where x.CompleteDate <= DateTime.Now && pids.Contains(x.ProjectId)
select x).Count().ToString();
divGjsxdq.InnerHtml = dqnum;
//未准点完成
var wzdnum = (from x in Funs.DB.GJSX
where x.CompleteDate <= DateTime.Now
&& x.State != "0" && pids.Contains(x.ProjectId)
select x).Count().ToString();
divGjsxwzd.InnerHtml = wzdnum;
//准点率,已完成/总数*100
var ywcnum = (from x in Funs.DB.GJSX
where x.CompleteDate <= DateTime.Now
&& x.State == "0" && pids.Contains(x.ProjectId)
select x).Count();
gjsxZdl = Math.Round((100.0 * ywcnum / znum), 2).ToString();
}
}
#endregion
#region
private void getSitePerson()
{
int AllCount = 0;
int MCount = 0;
var getallin = new List<Model.PageDataPersonInOutItem>();
if (pids == null)
{
getallin = APIPageDataService.getPersonNumByCompany(DateTime.Now);
}
else
{
getallin = APIPageDataService.getPersonNumByCompany(DateTime.Now, pids);
}
AllCount = getallin.Count();
if (AllCount > 0)
{
MCount = getallin.Where(x => x.PostType == Const.PostType_1).Count();
}
////当前现场总人数
div_xcrs.InnerHtml = AllCount.ToString();
//作业人数
div_zyxcrs.InnerHtml = (AllCount - MCount).ToString();
//管理人数
div_glxcrs.InnerHtml = MCount.ToString();
}
#endregion
#region
protected string ProjectPersonCount;
protected string ProjectPersonMc;
private void getProjectSitePerson()
{
var list = new List<Model.Base_Project>();
if (pids == null)
{
list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null)).ToList();
}
else
{
list = Funs.DB.Base_Project.Where(x => pids.Contains(x.ProjectId)).ToList();
}
foreach (var item in list)
{
ProjectPersonMc += "'" + item.ShortName + "',";
ProjectPersonCount += "'" + APIPageDataService.getPersonNum(item.ProjectId, DateTime.Now).Count() + "',";
}
ProjectPersonMc = ProjectPersonMc.TrimEnd(',');
ProjectPersonCount = ProjectPersonCount.TrimEnd(',');
}
#endregion
#region
protected string ProjectJd;
protected string ProjectMc;
protected void getJd()
{
var list = new List<Model.Base_Project>();
if (pids == null)
{
list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null)).ToList();
}
else
{
list = Funs.DB.Base_Project.Where(x => pids.Contains(x.ProjectId)).ToList();
}
if (list.Count > 0)
{
var progressCompletions = from x in Funs.DB.JDGL_ProgressCompletion select x;
foreach (var item in list)
{
var pCs = progressCompletions.Where(x => x.ProjectId == item.ProjectId).ToList();
ProjectJd += "'" + pCs.Sum(x => x.RealNum ?? 0).ToString("0.##") + "',";
ProjectMc += "'" + item.ShortName + "',";
}
ProjectJd = ProjectJd.TrimEnd(',');
ProjectMc = ProjectMc.TrimEnd(',');
}
}
#endregion
#region
protected void getZgsj()
{
div_zgsj.InnerHtml = (GetGeneralClosedNum() + GetGeneralNotClosedNum()).ToString();
div_zgywc.InnerHtml = GetGeneralClosedNum().ToString();
div_zgwwc.InnerHtml = GetGeneralNotClosedNum().ToString();
div_zgwcl.InnerHtml = (100.0 * GetGeneralClosedNum() / (GetGeneralNotClosedNum() + GetGeneralClosedNum())).ToString("0.##") + "%";
}
/// <summary>
/// 获取隐患整改闭环项
/// </summary>
/// <returns></returns>
public int GetGeneralClosedNum()
{
int result = 0;
if (pids == null)
{
result = (from x in Funs.DB.HSSE_Hazard_HazardRegister
where x.States == "3"
select x).Count();
}
else
{
result = (from x in Funs.DB.HSSE_Hazard_HazardRegister
where x.States == "3" && pids.Contains(x.ProjectId)
select x).Count();
}
return result;
}
/// <summary>
/// 获取隐患未整改完成项
/// </summary>
/// <returns></returns>
public int GetGeneralNotClosedNum()
{
int result = 0;
if (pids == null)
{
result = (from x in Funs.DB.HSSE_Hazard_HazardRegister
where x.States != "3"
select x).Count();
}
else
{
result = (from x in Funs.DB.HSSE_Hazard_HazardRegister
where x.States != "3" && pids.Contains(x.ProjectId)
select x).Count();
}
return result;
}
#endregion
#region
protected string gdclHtml;
protected string sbclHtml;
protected string gdclHead = "<div class=\"th-p\">项目</div><div class=\"th-p\">管子</div><div class=\"th-p\">管件</div><div class=\"th-p\">阀门</div><div class=\"th-p\">垫片</div><div class=\"th-p\">紧固件</div>";
protected string sbclHead = "<div class=\"th-p\">项目</div><div class=\"th-p\">采购量</div><div class=\"th-p\">到货量</div><div class=\"th-p\">已到货百分比</div>";
private void getCldh()
{
//项目
var list = new List<Model.Base_Project>();
if (pids == null)
{
list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null)).ToList();
}
else
{
list = Funs.DB.Base_Project.Where(x => pids.Contains(x.ProjectId)).ToList();
}
var PipelinList = Funs.DB.CLGL_PipelineMaterialSumList.Where(x => x.Type == "M");
var SbclList = Funs.DB.CLGL_ContractListSum.Where(x => x.C1 == "设备");
foreach (var item in list)
{
#region
gdclHtml += " <div class=\"row\">";
var pname = item.ShortName;
if (item.ShortName.Length > 3)
{
pname = item.ShortName.Substring(0, 3) + "...";
}
gdclHtml += "<div class=\"th-p\" title =\"" + item.ShortName + "\">" + pname + "</div>";
var pid = BLL.ProjectService.GetCLProjectCodeByProjectId(item.ProjectId).ToString();
//管子
var num1 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "管子").FirstOrDefault();
if (num1 != null)
{
gdclHtml += "<div class=\"th-p\">" + (num1.C7 == "" ? "0%" : num1.C7) + "</div>";
}
else
{
gdclHtml += "<div class=\"th-p\">0%</div>";
}
var num2 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "管件法兰").FirstOrDefault();
if (num2 != null)
{
gdclHtml += "<div class=\"th-p\">" + (num2.C7 == "" ? "0%" : num2.C7) + "</div>";
}
else
{
gdclHtml += "<div class=\"th-p\">0%</div>";
}
var num3 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "阀门").FirstOrDefault();
if (num3 != null)
{
gdclHtml += "<div class=\"th-p\">" + (num3.C7 == "" ? "0%" : num3.C7) + "</div>";
}
else
{
gdclHtml += "<div class=\"th-p\">0%</div>";
}
var num4 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "垫片").FirstOrDefault();
if (num4 != null)
{
gdclHtml += "<div class=\"th-p\">" + (num4.C7 == "" ? "0%" : num4.C7) + "</div>";
}
else
{
gdclHtml += "<div class=\"th-p\">0%</div>";
}
var num5 = PipelinList.Where(x => x.ProjectId == pid && x.C1 == "紧固件").FirstOrDefault();
if (num5 != null)
{
gdclHtml += "<div class=\"th-p\">" + (num5.C7 == "" ? "0%" : num5.C7) + "</div>";
}
else
{
gdclHtml += "<div class=\"th-p\">0%</div>";
}
gdclHtml += " </div>";
#endregion
#region
sbclHtml += " <div class=\"row\">";
pname = item.ShortName;
if (item.ShortName.Length > 5)
{
pname = item.ShortName.Substring(0, 5) + "...";
}
sbclHtml += "<div class=\"th-p\" title=\"" + item.ShortName + "\">" + pname + "</div>";
//采购量
var SbcllCglList = SbclList.Where(x => x.ProjectId == pid).ToList();
double SbcllCgl = 0.0;
double Sbdhs = 0.0;
foreach (var itemCgl in SbcllCglList)
{
if (string.IsNullOrEmpty(itemCgl.C7))
{
SbcllCgl += 0;
Sbdhs += 0;
}
else
{
SbcllCgl += Convert.ToDouble(itemCgl.C7);
Sbdhs += Convert.ToDouble(itemCgl.C9);
}
}
sbclHtml += "<div class=\"th-p\">" + SbcllCgl + "</div>";
sbclHtml += "<div class=\"th-p\">" + Sbdhs + "</div>";
//百分比
if (SbcllCgl + Sbdhs != 0)
{
var dhbfb = String.Format("{0:N2}", 100.0 * Sbdhs / (Sbdhs + SbcllCgl), 2) + "%";
sbclHtml += "<div class=\"th-p\">" + dhbfb + "</div>";
}
else
{
sbclHtml += "<div class=\"th-p\">0%</div>";
}
sbclHtml += " </div>";
#endregion
}
}
#endregion
/// <summary>
/// 获取未遂事件数
/// </summary>
/// <returns></returns>
private int GetNearMissNum()
{
if (pids == null)
{
var result = (from x in Funs.DB.Accident_AccidentPersonRecord
join y in Funs.DB.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId
where x.IsAttempt == "1" && x.CompileDate > Const.DtmarkTime
select x).Count();
return result;
}
else
{
var result = (from x in Funs.DB.Accident_AccidentPersonRecord
join y in Funs.DB.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId
where x.IsAttempt == "1" && x.CompileDate > Const.DtmarkTime
&& pids.Contains(x.ProjectId)
select x).Count();
return result;
}
}
}
}