using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using BLL; using Newtonsoft.Json; namespace FineUIPro.Web.common { public partial class main : PageBase { //protected string ProjectJSStr; List allProjects; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { #region 项目数据 allProjects = ProjectService.GetAllProjectDropDownList(); int acount = allProjects.Count(); //工地总数 this.numProjetcA.InnerHtml = acount.ToString(); 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(); pcount2 = allProjects.Where(x => x.ProjectState == Const.ProjectState_2).Count(); pcount3 = allProjects.Where(x => x.ProjectState == Const.ProjectState_3).Count(); } //在建 this.numProjetc1.InnerHtml = pcount1.ToString(); //停工 this.numProjetc2.InnerHtml = pcount2.ToString(); //竣工 this.numProjetc3.InnerHtml = pcount3.ToString(); #endregion #region 进度数据 this.divJD.InnerHtml = "
    项目
进度条
进度百分比
"; var project1s = allProjects.Where(x => x.ProjectState == Const.ProjectState_1 || x.ProjectState == null); foreach (var project1 in project1s) { this.divJD.InnerHtml += "
" + project1.ShortName + "
80%
"; } this.divJD.InnerHtml += "
"; #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 += "
  • " + project1.ProjectName + "
    " + state + "
  • "; } } var provinceDic = from x in Funs.DB.RealName_City select x; List listdata = new List(); List jd = new List(); List sg = new List(); List time = new List(); List ht = new List(); List convert = new List(); List loc = new List(); listdata.Add(allProjects.Count()); jd.Add(""); sg.Add(""); time.Add(""); ht.Add(""); List provinces = new List(); 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 + ","; mapStr += item.ProjectId; 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 Person { get { Model.SGGLDB db = Funs.DB; Model.PieData totalPie = new Model.PieData(); List pie = new List(); List data = new List(); List pieData = new List(); List pieDataStr = new List(); var personLists = from x in db.SitePerson_Person where x.IsUsed == true select x; var getProjectIds = (from x in personLists group x by x.ProjectId into g select new { g.First().ProjectId, pCout = g.Count() }).OrderByDescending(x => x.pCout).Take(5).Select(x => x.ProjectId); // var projects = BLL.ProjectService.GetProjectWorkList(); var whPersons = personLists.Where(x => x.UnitId == BLL.Const.UnitId_CWCEC); var projectUnits = from x in db.Project_ProjectUnit join y in db.Base_Unit on x.UnitId equals y.UnitId where x.UnitType == "2" select new { UnitId = x.UnitId, ProjectId = x.ProjectId, UnitName = y.UnitName }; Model.PieData p = new Model.PieData(); p.value = whPersons.Count(); p.name = "五环"; pieData.Add(p); data.Add("五环"); Model.Pie whPie = new Model.Pie(); List whPieData = new List(); whPie.name = "五环"; Model.PieData whPieDataStr = new Model.PieData(); whPieDataStr.name = "五环"; string whStr = "
  • 五环
  • "; foreach (var IdItem in getProjectIds) { var getProject = ProjectService.GetProjectByProjectId(IdItem); if (getProject != null) { //五环人员分布 Model.PieData wh = new Model.PieData(); wh.name = getProject.ShortName; wh.value = whPersons.Count(x => x.ProjectId == getProject.ProjectId); whPieData.Add(wh); whStr += "
  • " + getProject.ProjectName + "
    " + wh.value + "
  • "; //各项目分布 Model.PieData projectPie = new Model.PieData(); projectPie.value = personLists.Count(x => x.ProjectId == getProject.ProjectId); projectPie.name = getProject.ShortName; pieData.Add(projectPie); Model.Pie xmPie = new Model.Pie(); List xmPieData = new List(); var pUnits = projectUnits.Where(x => x.ProjectId == getProject.ProjectId); Model.PieData projectPieDataStr = new Model.PieData(); projectPieDataStr.name = getProject.ShortName; string projectStr = "
  • " + getProject.ProjectName + "
  • "; foreach (var pUnit in pUnits) { Model.PieData xm = new Model.PieData(); xm.name = pUnit.UnitName; xm.value = personLists.Count(x => x.ProjectId == getProject.ProjectId && x.UnitId == pUnit.UnitId); xmPieData.Add(xm); projectStr += "
  • " + pUnit.UnitName + "
    " + xm.value + "
  • "; } projectPieDataStr.str = projectStr; pieDataStr.Add(projectPieDataStr); xmPie.name = getProject.ShortName; xmPie.showList = xmPieData; pie.Add(xmPie); data.Add(getProject.ShortName); } } whPie.showList = whPieData; whPieDataStr.str = whStr; pieDataStr.Add(whPieDataStr); List newPie = new List(); newPie.Add(whPie); newPie.AddRange(pie); totalPie.p = newPie; totalPie.pData = pieData; totalPie.data = data; totalPie.dataStr = pieDataStr; return JsonConvert.SerializeObject(totalPie); } } protected string PersonAll { get { Model.SGGLDB db = Funs.DB; Model.PieData totalPie = new Model.PieData(); List pieDataStr = new List(); var personLists = from x in db.SitePerson_Person where x.IsUsed == true select x; var projects = BLL.ProjectService.GetProjectWorkList(); Model.PieData whPieDataStr = new Model.PieData(); whPieDataStr.name = "五环"; string whStr = string.Empty; foreach (var project in projects) { //五环人员分布 var whvalues = personLists.Count(x => x.ProjectId == project.ProjectId); whStr += "
  • " + project.ProjectName + "
    " + whvalues + "
  • "; ////各项目分布 //var xmvalue = personLists.Count(x => x.ProjectId == project.ProjectId); //Model.PieData projectPieDataStr = new Model.PieData(); //whStr += "
  • " + project.ProjectName + "
    " + xmvalue + "
  • "; //projectPieDataStr.str = projectStr; //pieDataStr.Add(projectPieDataStr); } whPieDataStr.str = whStr; pieDataStr.Add(whPieDataStr); totalPie.dataStr = pieDataStr; return JsonConvert.SerializeObject(totalPie); } } #endregion #region 事故统计 protected string Accident { get { Model.SGGLDB db = Funs.DB; List series = new List(); Model.BusinessColumn businessColumn = new Model.BusinessColumn(); List listCategories = new List(); businessColumn.title = "质量事故"; var projects = BLL.ProjectService.GetProjectWorkList(); Model.SingleSerie s = new Model.SingleSerie(); List listdata = new List(); List listdata2 = new List(); List listdata3 = new List(); List listdata4 = new List(); var swAccidentList1 = 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 swAccidentList2 = from x in db.Accident_AccidentReport join y in db.Sys_Const on x.AccidentTypeId equals y.ConstValue where (y.ConstText.Contains("轻伤") || y.ConstText.Contains("重伤") || y.ConstText.Contains("死亡")) && y.GroupId == ConstValue.Group_AccidentReportRegistration select x; var wsAccidentList1 = 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 wsAccidentList2 = from x in db.Accident_AccidentReportOther join y in db.Sys_Const on x.AccidentTypeId equals y.ConstValue where y.ConstText.Contains("未遂") select x; var qualityAccidents = from x in db.Comprehensive_QualityAccident select x; foreach (var project in projects) { listCategories.Add(project.ShortName); listdata4.Add(project.Progress ?? 0); int qualityAccidentProjectsCount = qualityAccidents.Count(x => x.ProjectId == project.ProjectId); int wsAccidentListCount1 = wsAccidentList1.Count(x => x.ProjectId == project.ProjectId); int wsAccidentListCount2 = wsAccidentList2.Count(x => x.ProjectId == project.ProjectId); int swAccidentListCount1 = swAccidentList1.Count(x => x.ProjectId == project.ProjectId); int swAccidentListCount2 = swAccidentList2.Count(x => x.ProjectId == project.ProjectId); listdata.Add(qualityAccidentProjectsCount); listdata2.Add(wsAccidentListCount1 + wsAccidentListCount2); listdata3.Add(swAccidentListCount1 + swAccidentListCount2); } s.data = listdata; s.data2 = listdata2; s.data3 = listdata3; s.data4 = listdata4; series.Add(s); businessColumn.categories = listCategories; businessColumn.series = series; return JsonConvert.SerializeObject(businessColumn); } } #endregion #region 关键事项 protected string swiper_One { get { var getGJSX = (from x in Funs.DB.GJSX join y in Funs.DB.Base_QuestionType on x.QuestionTypeID equals y.QuestionTypeID where (y.QuestionTypeName.Contains("紧急") || y.QuestionTypeName.Contains("重要")) && x.State != "0" orderby x.CreateDate select new { x.GJSXID, x.Detail, x.CreateDate, x.ProjectId, y.QuestionTypeName }).Distinct().Take(20); string strNoticeHtml = string.Empty; var readIds = from x in Funs.DB.Sys_UserRead where x.UserId == this.CurrUser.UserId select x.DataId; foreach (var item in getGJSX) { string url = "../PZHGL/GJSX/GJSXList.aspx?projectId=" + item.ProjectId; //var attachFile = BLL.AttachFileService.GetAttachFile(item.NoticeId, BLL.Const.ServerNoticeMenuId); //if (attachFile != null && !string.IsNullOrEmpty(attachFile.AttachUrl)) //{ // url = "../" + attachFile.AttachUrl.Split(',')[0].Replace("\\", "/"); //} string projectShortName = BLL.ProjectService.GetShortNameByProjectId(item.ProjectId); if (item.QuestionTypeName.Contains("紧急")) { strNoticeHtml += "
  • " + projectShortName + "/" + item.Detail + "
    " + string.Format("{0:yyyy-MM-dd}", item.CreateDate) + "
  • "; } else { strNoticeHtml += "
  • " + projectShortName + "/" + item.Detail + "
    " + string.Format("{0:yyyy-MM-dd}", item.CreateDate) + "
  • "; } } return "
      " + strNoticeHtml + "
    "; } } #endregion protected void imgBtn_Click(object sender, EventArgs e) { Model.GJSX gjsx = BLL.GJSXService.GetGJSXById(this.hdNoticeId.Value); if (gjsx != null) { BLL.APIUserService.getSaveUserRead(BLL.Const.GJSXMenuId, gjsx.ProjectId, this.CurrUser.UserId, gjsx.GJSXID); } } } }