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

1773 lines
83 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 FineUIPro.Web.BaseInfo;
using FineUIPro.Web.DataShow;
using FineUIPro.Web.SysManage;
using Model;
using Newtonsoft.Json;
using NPOI.Util;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.common
{
public partial class mainProject2 : PageBase
{
#region Fields
protected string ActualValue = string.Empty;
protected string completed = string.Empty;
protected string Cumulative_actual_value = string.Empty;
//实际值
protected string Cumulative_planned_value = string.Empty;
protected string GeneralRisk = string.Empty;
//一般风险
protected string GreaterRisk = string.Empty;
protected string LowRisk = string.Empty;
//已完成
protected string majorRisk = string.Empty;
protected string OnePassRate = string.Empty;
//一次共检合格率
protected string OnePassRateOfWelding = string.Empty;
//重大风险
//低风险
//较大风险
protected string PlannedValue = string.Empty;
/// <summary>
/// 中英文
/// </summary>
protected string QualityRate = string.Empty;
//焊接一次合格率
protected string total = string.Empty;
#endregion Fields
#region Properties
/// <summary>
/// 项目id
/// </summary>
public string ProjectId
{
get
{
return (string)ViewState["ProjectId"];
}
set
{
ViewState["ProjectId"] = value;
}
}
#endregion Properties
#region Methods
/// <summary>
/// 打开待办
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnshowWindows(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("{0}", hiddenUrl.Value, "办理 - ")));
}
/// <summary>
/// 页面加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected async void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ProjectId = CurrUser.LoginProjectId;
var treeTask = GetTreeAsync();
var personTask = GetPersonAsync();
var weekJdtjTask = GetWeekJDAsync();
var monthJdtjTask = GetMonthJDAsync();
var quantityDoneJDTask = GetQuantityDoneJDAsync();
var otherTasks = new List<Task>
{
BindSafetyStatisticsAsync(), // 安全统计模块
BindQualityStatisticsAsync(), // 质量统计模块
getHazardData(),
//整改数据
getZgsj(),
//风险预警
getHazard(),
getWork(),
//工程概况
getProjectInfo(),
//GetJD(),
//质量共检
getZlgj(),
//焊接
getHj(),
//加载质量问题
getZlwt(),
//人员信息
getSitePerson(),
//项目人员图表
// getProjectSitePerson(),
//工作台面
getGjsx(),
getGztm(),
//材料到货
getCldh(),
getCNEN(),//中英文翻译
};
await Task.WhenAll(otherTasks.Concat(new[] { treeTask, personTask, weekJdtjTask, monthJdtjTask, quantityDoneJDTask }));
Tree = await treeTask;
Person = await personTask;
WeekJdtjHtml = await weekJdtjTask;
MonthJdtjHtml = await monthJdtjTask;
QuantityDoneJdtjHtml = await quantityDoneJDTask;
}
}
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
getGztm();
getGjsx();
}
// 质量统计模块封装
private async Task BindQualityStatisticsAsync()
{
await Task.Run(() =>
{ //质量培训人员
DateTime date = DateTime.Now.AddDays(-1);
int CqmsPxNum = (from x in Funs.DB.Comprehensive_InspectionPerson
where x.IsTrain == true && x.ProjectId == ProjectId
select x).Count();
divCqmsPxNum.InnerHtml = CqmsPxNum.ToString();
//施工审批量
int sgspl = Funs.DB.Comprehensive_GeneralPlanApproval.Where(x => x.ProjectId == ProjectId && x.AuditMan != null && x.AuditMan != "" && x.ApprovalMan != null && x.ApprovalMan != "").Count()
+ Funs.DB.Comprehensive_MajorPlanApproval.Where(x => x.ProjectId == ProjectId && x.AuditMan != null && x.AuditMan != "" && x.ApprovalMan != null && x.ApprovalMan != "").Count();
div_sgfaSpl.InnerHtml = sgspl.ToString();
});
}
// 安全统计模块封装
private async Task BindSafetyStatisticsAsync()
{
await Task.Run(() =>
{
Model.SGGLDB db = Funs.DB;
//安全人工时
//int wHours = db.SitePerson_PersonInOutNumber.Where(x => x.ProjectId == ProjectId).Max(x => x.WorkHours) ?? 0;
int wHours = 0;
DateTime? sDate = Funs.GetNewDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString());
wHours = (from x in db.T_d_EmployInOutRecord where x.ProjectId == ProjectId select x.ManHours ?? 0).ToList().Sum();
this.divSafeWorkTime.InnerHtml = wHours.ToString();
//本月安全人工时
int wHoursMonth = 0;
var dayReports = BLL.SitePerson_MonthReportService.getMonthReports(this.ProjectId, sDate);
if (dayReports.Any())
{
wHoursMonth = Convert.ToInt32(dayReports[0].DayWorkTime);
}
this.divSafeWorkTimeMonth.InnerHtml = wHoursMonth.ToString();
//安全培训累计人员
var getTrainRecord = db.EduTrain_TrainRecord.Where(x => x.ProjectId == ProjectId).Sum(x => x.TrainPersonNum) ?? 0;
//修改:增加博晟教育中的人数
var boShengCount = db.Bo_Sheng_TrainPerson.Count(x => x.ProjectId == ProjectId && (x.DeleteTag == "False" || x.DeleteTag == null));
this.divSafePersonNum.InnerHtml = (getTrainRecord + boShengCount).ToString();
//安全管理人员
var allSum = from x in Funs.DB.SitePerson_Person
where x.ProjectId == ProjectId && x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime.Value > 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.IsHsse == true && x.ProjectId == ProjectId //安管人员
select x;
this.divSafeManagePersonNum.InnerHtml = glAllPerson.Count().ToString();
//未遂事故
var wsAccidentList1 = from x in db.Accident_AccidentPersonRecord
join y in db.Base_AccidentType on x.AccidentTypeId equals y.AccidentTypeId
where y.AccidentTypeName.Contains("未遂") && x.ProjectId == ProjectId
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("未遂") && x.ProjectId == ProjectId
select x;
this.divWS.InnerHtml = (wsAccidentList1.Count() + wsAccidentList2.Count()).ToString();
});
}
#endregion Methods
// 项目统计优化
#region
private async Task getSitePerson()
{
await Task.Run(() =>
{
int AllCount = 0;
int MCount = 0;
//修改日期2024-10-30 16:53:50 为了和另一个看板相同
//Funs.DB.T_d_EmployInOutRecord.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date)
//var getallin = APIPageDataService.getPersonNum(ProjectId, DateTime.Now);
var getallin = from x in Funs.DB.T_d_EmployInOutRecord
join z in Funs.DB.Base_WorkPost on x.PostId equals z.WorkPostId
where x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date
select new { z.PostType };
AllCount = getallin.Count();
if (AllCount > 0)
{
MCount = getallin.Where(x => x.PostType == Const.PostType_1).Count();
}
if (AllCount > 0)
{
////当前现场总人数
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 async Task getProjectSitePerson()
{
await Task.Run(() =>
{
var list = Funs.DB.Base_Project.Where(x => (x.ProjectState == Const.ProjectState_1 || x.ProjectState == null) && x.Progress != null
&& x.ProjectId == ProjectId).ToList();
foreach (var item in list)
{
ProjectPersonMc += "'" + item.ShortName + "',";
ProjectPersonCount += "'" + APIPageDataService.getPersonNum(item.ProjectId, DateTime.Now).Count() + "',";
}
if (!string.IsNullOrEmpty(ProjectPersonMc) && !string.IsNullOrEmpty(ProjectPersonCount))
{
ProjectPersonMc = ProjectPersonMc.TrimEnd(',');
ProjectPersonCount = ProjectPersonCount.TrimEnd(',');
}
});
}
#endregion
#region
/// <summary>
/// 获取隐患整改闭环项
/// </summary>
/// <returns></returns>
public int GetGeneralClosedNum()
{
int result = (from x in Funs.DB.HSSE_Hazard_HazardRegister
where x.States == "3" && x.ProjectId == ProjectId
select x).Count();
return result;
}
/// <summary>
/// 获取隐患未整改完成项
/// </summary>
/// <returns></returns>
public int GetGeneralNotClosedNum()
{
int result = (from x in Funs.DB.HSSE_Hazard_HazardRegister
where x.States != "3" && x.ProjectId == ProjectId
select x).Count();
return result;
}
protected async Task getZgsj()
{
await Task.Run(() =>
{
int GeneralClosedNum = GetGeneralClosedNum();
int GeneralNotClosedNum = GetGeneralNotClosedNum();
div_zgsj.InnerHtml = (GeneralClosedNum + GeneralNotClosedNum).ToString();
div_zgywc.InnerHtml = GeneralClosedNum.ToString();
div_zgwwc.InnerHtml = GeneralNotClosedNum.ToString();
div_zgwcl.InnerHtml = String.Format("{0:N2}", 100.0 * GeneralClosedNum / (GeneralNotClosedNum + GeneralClosedNum)).Replace("NaN", "0") + "%";
});
}
#endregion
#region
protected string divJLUnitTitle;
protected string divOwnUnitTitle;
protected string divProjectAddressTitle;
protected string divProjectImg;
protected string divProjectMoneyTitle;
protected string divProjectNameTitle;
protected string divSGUnitTitle;
protected string spanJLUnit;
protected string spanOwnUnit;
protected string spanProjectAddress;
protected string spanProjectName;
protected string spanRemark;
protected string spanSGUnit;
private string GetFileType(string fileName)
{
string fileType = String.Empty;
int lastDotIndex = fileName.LastIndexOf(".");
if (lastDotIndex >= 0)
{
fileType = fileName.Substring(lastDotIndex + 1).ToLower();
}
return fileType;
}
/// <summary>
///
/// </summary>
private async Task getProjectInfo()
{
await Task.Run(() =>
{
divProjectNameTitle = "";
divProjectAddressTitle = "";
divProjectMoneyTitle = "";
divOwnUnitTitle = "";
divSGUnitTitle = "";
divJLUnitTitle = "";
divProjectImg = "<div class=\"swiper-slide\"><img src=\"../res/images/16.png\"></div>";
var project = ProjectService.GetProjectByProjectId(this.ProjectId);
if (project != null)
{
if (project.EndDate.HasValue)
{
this.divEndDate.InnerHtml = string.Format("{0:yyyy-MM-dd}", project.EndDate);
int endDays = (project.EndDate.Value - DateTime.Now).Days;
if (endDays >= 0)
{
this.divRemainingDays.InnerHtml = endDays.ToString() + "<span>天</span>";
}
if (project.StartDate.HasValue)
{
int pdays = (project.EndDate.Value - project.StartDate.Value).Days;
if (pdays >= 0)
{
this.divProjectDays.InnerHtml = pdays.ToString() + "<span>天</span>";
}
}
}
var allowExtensions = new List<string>
{
"jpg", "jpeg", "png", "bmp", "gif", // 图片文件类型
};
var getImag = Funs.DB.AttachFile.FirstOrDefault(x => x.ToKeyId == project.ProjectId);
if (getImag != null && !string.IsNullOrEmpty(getImag.AttachUrl))
{
string url = getImag.AttachUrl.Replace('\\', '/');
var UrlList = Funs.GetStrListByStr(url, ',');
bool isHiddDefaultImg = false;
foreach (var item in UrlList)
{
if (!string.IsNullOrEmpty(item))
{
string atturl = Funs.RootPath + item.Replace(';', ' ').Trim();
string fileType = GetFileType(atturl);
if (File.Exists(atturl) && allowExtensions.Contains(fileType))
{
isHiddDefaultImg = true;
divProjectImg += string.Format(" <div class=\"swiper-slide\"><img src=\"{0}\"></div>", atturl.Replace(Funs.RootPath, "/"));
//this.divProjectImgs.Src = divProjectImg;
}
}
}
divProjectImg = divProjectImg.Replace("<div class=\"swiper-slide\"><img src=\"../res/images/16.png\"></div>", "");
}
}
});
}
#endregion
#region
protected int CompletedNum;
protected int AllNum;
protected int ConstructionNum;
protected int EarlyWarningCounts;
protected int FinishedNum;
protected int JxyjNum;
protected string riskData1;
protected string riskData2;
protected string riskData3;
protected string riskData4;
protected string riskDataRate;
protected int SuperCompletedNum;
protected int SuperAllNum;
protected int SuperConstructionNum;
protected int SuperFinishedNum;
protected int SuperTrainPersonNum;
protected int TrainPersonNum;
/// <summary>
/// 获取危大工程审批完成数
/// </summary>
/// <returns></returns>
protected async Task<int> GetCompletedNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
return result;
});
}
/// <summary>
/// 获取危大工程施工个数
/// </summary>
/// <returns></returns>
protected async Task<int> GetConstructionNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetConstructionNum(ProjectId);
return result;
});
}
/// <summary>
/// 资质预警
/// </summary>
protected async Task<int> getEarlyWarningCounts()
{
return await Task.Run(() =>
{
int allCount = 0;
var getPersonQualitys = from x in Funs.DB.QualityAudit_PersonQuality
join y in Funs.DB.SitePerson_Person on x.PersonId equals y.PersonId
where x.LimitDate.HasValue && x.LimitDate < DateTime.Now && y.ProjectId == ProjectId
select x;
//// 预警人数
allCount = getPersonQualitys.Count();
return allCount;
});
}
/// <summary>
/// 获取危大工程完工个数
/// </summary>
/// <returns></returns>
protected async Task<int> GetFinishedNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetFinishedNum(ProjectId);
return result;
});
}
/// <summary>
/// 机械预警
/// </summary>
/// <returns></returns>
protected async Task<int> GetJxyjNum()
{
return await Task.Run(() =>
{
int result = 0;
//机具报验的到期提醒和过期提醒记录数加一起
////机具报验的到期提醒数
//var num1 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && DateTime.Now < x.NextTestDate && x.ProjectId == ProjectId
// && ((DateTime)x.NextTestDate).AddDays(-15) < DateTime.Now).Count();
//过期提醒记录数
var num2 = Funs.DB.Comprehensive_InspectionMachine.Where(x => x.IsOnSite == true && x.NextTestDate < DateTime.Now && x.ProjectId == ProjectId).Count();
//result = num1 + num2;
result = num2;
return result;
});
}
/// <summary>
/// 获取超危大工程审批完成数
/// </summary>
/// <returns></returns>
protected async Task<int> GetSuperCompletedNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
return result;
});
}
/// <summary>
/// 获取超危大工程施工个数
/// </summary>
/// <returns></returns>
protected async Task<int> GetSuperConstructionNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperConstructionNum(ProjectId);
return result;
});
}
/// <summary>
/// 获取超危大工程完工个数
/// </summary>
/// <returns></returns>
protected async Task<int> GetSuperFinishedNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperFinishedNum(ProjectId);
return result;
});
}
/// <summary>
/// 获取超危大工程培训人次数
/// </summary>
/// <returns></returns>
protected async Task<int> GetSuperTrainPersonNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetSuperTrainPersonNum(ProjectId);
return result;
});
}
/// <summary>
/// 获取危大工程培训人次数
/// </summary>
/// <returns></returns>
protected async Task<int> GetTrainPersonNum()
{
return await Task.Run(() =>
{
var result = Project_HSSEData_HSSEService.GetTrainPersonNum(ProjectId);
return result;
});
}
/// <summary>
/// 获取风险管控
/// </summary>
private async Task getHazard()
{
await Task.Run(() =>
{
;
var getHazards = from x in Funs.DB.Hazard_HazardSelectedItem
join y in Funs.DB.Base_RiskLevel on x.HazardLevel equals y.RiskLevelId
where x.ProjectId == ProjectId
select new { x.HazardSelectedItemId, y.RiskLevel };
var riskLevels = from x in Funs.DB.Base_RiskLevel select x;
List<int> RiskLevelNum = new List<int>();
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
riskData1 = getHazards.Count(x => x.RiskLevel == 1).ToString();
riskData2 = getHazards.Count(x => x.RiskLevel == 2).ToString();
riskData3 = getHazards.Count(x => x.RiskLevel == 3).ToString();
riskData4 = getHazards.Count(x => x.RiskLevel == 4).ToString();
if (getHazards.Count() > 0)
{
riskDataRate =
(100.0 * getHazards.Count(x => x.RiskLevel == 4) / getHazards.Count()).ToString("0.##");
}
else
{
riskDataRate = "0";
}
});
}
private async Task getHazardData()
{
var EarlyWarningCountsTask = getEarlyWarningCounts();
var GetJxyjNumTask = GetJxyjNum();
var CompletedNumTask = GetCompletedNum();
var TrainPersonNumTask = GetTrainPersonNum();
var ConstructionNumTask = GetConstructionNum();
var FinishedNumTask = GetFinishedNum();
var SuperCompletedNumTask = GetSuperCompletedNum();
var SuperTrainPersonNumTask = GetSuperTrainPersonNum();
var SuperConstructionNumTask = GetSuperConstructionNum();
var SuperFinishedNumTask = GetSuperFinishedNum();
await Task.WhenAll(
EarlyWarningCountsTask,
GetJxyjNumTask, CompletedNumTask, TrainPersonNumTask, ConstructionNumTask, FinishedNumTask, SuperCompletedNumTask, SuperTrainPersonNumTask, SuperConstructionNumTask, SuperFinishedNumTask);
EarlyWarningCounts = await EarlyWarningCountsTask;
JxyjNum = await GetJxyjNumTask;
CompletedNum = await CompletedNumTask;
TrainPersonNum = await TrainPersonNumTask;
ConstructionNum = await ConstructionNumTask;
FinishedNum = await FinishedNumTask;
SuperCompletedNum = await SuperCompletedNumTask;
SuperTrainPersonNum = await SuperTrainPersonNumTask;
SuperConstructionNum = await SuperConstructionNumTask;
SuperFinishedNum = await SuperFinishedNumTask;
AllNum = await CompletedNumTask + await ConstructionNumTask + await FinishedNumTask;
SuperAllNum = await SuperCompletedNumTask + await SuperConstructionNumTask + await SuperFinishedNumTask;
}
#endregion
#region
protected int AllWrokCount0;
protected int AllWrokCount1;
protected int AllWrokCount2;
protected int AllWrokCount3;
protected int WrokCount0;
protected int WrokCount1;
protected int WrokCount2;
protected int WrokCount3;
protected async Task getWork()
{
var AllWrokCount0 = getALLWrokCount0();
var AllWrokCount1 = getALLWrokCount1();
var AllWrokCount2 = getALLWrokCount2();
var AllWrokCount3 = getALLWrokCount3();
var WrokCount0 = getWrokCount0();
var WrokCount1 = getWrokCount1();
var WrokCount2 = getWrokCount2();
var WrokCount3 = getWrokCount3();
await Task.WhenAll(AllWrokCount0, AllWrokCount1, AllWrokCount2, AllWrokCount3, WrokCount0, WrokCount1, WrokCount2, WrokCount3);
this.AllWrokCount0 = await AllWrokCount0;
this.AllWrokCount1 = await AllWrokCount1;
this.AllWrokCount2 = await AllWrokCount2;
this.AllWrokCount3 = await AllWrokCount3;
this.WrokCount0 = await WrokCount0;
this.WrokCount1 = await WrokCount1;
this.WrokCount2 = await WrokCount2;
this.WrokCount3 = await WrokCount3;
}
protected IQueryable<LicenseDto> GetLicenseQuery()
{
var query = from lm in Funs.DB.License_LicenseManager
join lt in Funs.DB.Base_LicenseType on lm.LicenseTypeId equals lt.LicenseTypeId into ltJoin
from licenseType in ltJoin.DefaultIfEmpty()
select new LicenseDto
{
ProjectId = lm.ProjectId,
LicenseTypeName = licenseType.LicenseTypeName ?? "",
WorkStatesStr = lm.WorkStates == "1" ? "待开工" :
lm.WorkStates == "2" ? "作业中" :
lm.WorkStates == "3" ? "已关闭" :
lm.WorkStates == "-1" ? "已取消" : ""
};
return query;
}
protected async Task<int> getAllCount()
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId).ToList().Count;
return result;
}
protected async Task<int> getALLWrokCount0()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getALLWrokCount1()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getALLWrokCount2()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getALLWrokCount3()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId
&& x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证").ToList().Count;
return result;
});
}
protected async Task<int> getTodayCount()
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.WorkStatesStr == "作业中").ToList().Count;
return result;
}
/// <summary>
/// 动火作业许可证
/// </summary>
/// <returns></returns>
protected async Task<int> getWrokCount0()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "动火作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
protected async Task<int> getWrokCount1()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "高处作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
protected async Task<int> getWrokCount2()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId && x.LicenseTypeName == "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
protected async Task<int> getWrokCount3()
{
return await Task.Run(() =>
{
var result = GetLicenseQuery().Where(x => x.ProjectId == ProjectId
&& x.LicenseTypeName != "动火作业许可证" && x.LicenseTypeName != "高处作业许可证" && x.LicenseTypeName != "吊装作业许可证" && x.WorkStatesStr == "作业中").ToList().Count;
return result;
});
}
#endregion
#region
protected string zgzglDataValue;
//质量问题总计
protected string zlallNumber;
//质量问题合格数量
protected string zlfinishNumber;
//质量问题整改率
protected string zlzgl;
protected async Task getZlwt()
{
await Task.Run(() =>
{
zlallNumber = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.ProjectId == ProjectId
select x).Count().ToString();
var num2 = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.State == "7" && x.ProjectId == ProjectId
select x).Count();
zlfinishNumber = num2.ToString();
var num3 = (from x in Funs.DB.Check_CheckControl
where x.CheckDate <= DateTime.Now && x.State != "7" && x.ProjectId == ProjectId
select x).Count();
var zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3));
zlzgl = zgl.ToString().Replace("NaN", "0");
zgzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString();
});
}
#endregion
#region
protected string zggjzglDataValue;
protected string zlgjallNumber;
protected string zlgjfinishNumber;
protected string zlgjzgl;
protected async Task getZlgj()
{
await Task.Run(() =>
{
Model.SGGLDB db = Funs.DB;
zlgjallNumber = (from x in db.ProcessControl_InspectionManagement
where x.ProjectId == ProjectId
select x).Count().ToString();
var num2 = (from x in db.ProcessControl_InspectionManagement
where x.IsOnceQualified == true && x.ProjectId == ProjectId
select x).Count();
zlgjfinishNumber = num2.ToString();
var num3 = (from x in db.ProcessControl_InspectionManagement
where (x.IsOnceQualified == false || x.IsOnceQualified == null) && x.ProjectId == ProjectId
select x).Count();
var zgl = "0";
if (num2 != 0)
{
zgl = String.Format("{0:N2}", 100.0 * num2 / (num2 + num3));
zlgjzgl = zgl.ToString();
zggjzglDataValue = (100 - (100.0 * num2 / (num2 + num3))).ToString();
}
else
{
zlgjzgl = zgl.ToString();
zggjzglDataValue = "0";
}
});
}
#endregion
#region
protected string hjallNumber = "0";
protected string hjDataValue = "0";
protected string hjfinishNumber = "0";
protected string hjzgl = "0";
protected async Task getHj()
{
await Task.Run(() =>
{
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 ndtList =
(from x in db.ProcessControl_NondestructiveTest_New
where x.ProfessionalName == "工艺管道" && x.ProjectId == ProjectId
orderby x.CreateDate descending
select x).FirstOrDefault();
decimal a = 0, b = 0;
if (ndtList != null)
{
if (ndtList.TotalQuantity.HasValue)
{
a += Math.Floor(ndtList.TotalQuantity.Value * Funs.GetNewDecimalOrZero(ndtList.TotalRate) /
100);
b += ndtList.TotalQuantity.Value;
}
if (!string.IsNullOrEmpty(ndtList.TotalRate))
{
result = Convert.ToDouble(ndtList.TotalRate);
}
}
else
{
var hjglData =
(from x in db.HJGL_FL_Data
where x.ProjectId == ProjectId
orderby x.CompileDate descending
select x).FirstOrDefault();
if (hjglData != null)
{
a = Funs.GetNewDecimalOrZero(hjglData.OneTimeFilmQualifiedAmount);
b = Funs.GetNewDecimalOrZero(hjglData.OneTimeFilmAmount);
if (a > 0 && b > 0)
{
result = Convert.ToDouble(Convert.ToDecimal(100.0) * b / a);
}
}
}
if (b > 0)
{
hjallNumber = b.ToString();
hjfinishNumber = a.ToString();
hjzgl = result.ToString();
hjDataValue = (100 - result).ToString();
}
//var ndtLists = from x in db.HJGL_FL_NdtList where x.ProjectId == ProjectId select x;
//if (ndtLists.Count() > 0)
//{
// decimal a = 0, b = 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();
// }
//}
//else
//{
// var data = (from x in db.HJGL_FL_Data where x.ProjectId == ProjectId orderby x.CompileDate descending select x).FirstOrDefault();
// if (data != null)
// {
// decimal a = Funs.GetNewDecimalOrZero(data.OneTimeFilmQualifiedAmount);
// decimal b = Funs.GetNewDecimalOrZero(data.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 swgclHtml;
protected string Tree
{
get;
set;
}
protected string Two
{
get
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "赢得值曲线";
Model.Project_Installation installation = BLL.Project_InstallationService.GetProjectInstallationByProjectId(this.CurrUser.LoginProjectId);
if (installation != null)
{
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
Model.SingleSerie s3 = new Model.SingleSerie();
Model.SingleSerie s4 = new Model.SingleSerie();
Model.SingleSerie s5 = new Model.SingleSerie();
Model.SingleSerie s6 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
List<double> listdata3 = new List<double>();
List<double> listdata4 = new List<double>();
List<double> listdata5 = new List<double>();
List<double> listdata6 = new List<double>();
string strSql = "select distinct (cast(YEAR(Months) as varchar(4))+'.'+cast(MONTH(Months) as varchar(2))) as 月份,t.Months," +
"ThisRealCost as '本月已完工作实际费用-ACWP',ThisPlanCost as '本月已完工作预算费用-BCWP',ThisPlanValue as '本月计划工作预算费用-BCWS',TotalPlanValue as '累计计划工作预算费用-BCWS',TotalRealCost as '累计已完工作实际费用-ACWP',TotalPlanCost as '累计已完工作预算费用-BCWP' " +
"from dbo.View_WBS_CostControlParentDetail as t where ParentId=@Id order by t.Months";
//string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01";
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@Id",installation.InstallationId),
//new SqlParameter("@Months",date),
};
DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
decimal lastbcws = 0, bcws = 0, lastacwp = 0, acwp = 0, lastbcwp = 0, bcwp = 0;
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["本月已完工作实际费用-ACWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作实际费用-ACWP"].ToString()) / 10000;
dt.Rows[i]["本月已完工作预算费用-BCWP"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月已完工作预算费用-BCWP"].ToString()) / 10000;
dt.Rows[i]["本月计划工作预算费用-BCWS"] = Funs.GetNewDecimalOrZero(dt.Rows[i]["本月计划工作预算费用-BCWS"].ToString()) / 10000;
bcws = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计计划工作预算费用-BCWS"].ToString());
acwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作实际费用-ACWP"].ToString());
bcwp = Funs.GetNewDecimalOrZero(dt.Rows[i]["累计已完工作预算费用-BCWP"].ToString());
if (bcws == lastbcws)
{
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
{
dt.Rows[i]["累计计划工作预算费用-BCWS"] = 0;
}
else
{
dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000;
}
}
else
{
dt.Rows[i]["累计计划工作预算费用-BCWS"] = bcws / 10000;
}
if (acwp == lastacwp)
{
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
{
dt.Rows[i]["累计已完工作实际费用-ACWP"] = 0;
}
else
{
dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000;
}
}
else
{
dt.Rows[i]["累计已完工作实际费用-ACWP"] = acwp / 10000;
}
if (bcwp == lastbcwp)
{
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) > DateTime.Now)
{
dt.Rows[i]["累计已完工作预算费用-BCWP"] = 0;
}
else
{
dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000;
}
}
else
{
dt.Rows[i]["累计已完工作预算费用-BCWP"] = bcwp / 10000;
}
lastbcws = bcws;
lastacwp = acwp;
lastbcwp = bcwp;
listCategories.Add(dt.Rows[i]["月份"].ToString());
if (Funs.GetNewDateTimeOrNow(dt.Rows[i]["Months"].ToString()) <= DateTime.Now)
{
listdata.Add(Convert.ToDouble(dt.Rows[i]["本月计划工作预算费用-BCWS"]));
listdata2.Add(Convert.ToDouble(dt.Rows[i]["累计计划工作预算费用-BCWS"]));
listdata3.Add(Convert.ToDouble(dt.Rows[i]["本月已完工作预算费用-BCWP"]));
listdata4.Add(Convert.ToDouble(dt.Rows[i]["累计已完工作预算费用-BCWP"]));
listdata5.Add(Convert.ToDouble(dt.Rows[i]["本月已完工作实际费用-ACWP"]));
listdata6.Add(Convert.ToDouble(dt.Rows[i]["累计已完工作实际费用-ACWP"]));
}
}
s.data = listdata;
s2.data = listdata2;
s3.data = listdata3;
s4.data = listdata4;
s5.data = listdata5;
s6.data = listdata6;
series.Add(s);
series.Add(s2);
series.Add(s3);
series.Add(s4);
series.Add(s5);
series.Add(s6);
businessColumn.categories = listCategories;
businessColumn.series = series;
}
return JsonConvert.SerializeObject(businessColumn);
}
}
protected async Task GetJD()
{
await Task.Run(() =>
{
int index = 0;
var result = Funs.DB.View_JDGL_QuantityCompletion
.Where(qc => qc.ProjectId == this.CurrUser.LoginProjectId)
.OrderBy(qc => qc.SortIndex)
.ThenBy(qc => qc.Name)
.ToList();
foreach (var item in result)
{
index++;
swgclHtml += "<div class=\"tr1\">";
swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: .625rem;\"><p>{0}</p></div>", index);
swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: 1rem;\"><p>{0}</p> </div>", item.Name);
swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: .8375rem;\"><p>{0}</p> </div>", item.Unit);
swgclHtml += string.Format(" <div class=\"th r-line\" style=\"width: .8375rem;\"><p>{0}</p> </div>", item.DesignNum);
swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: 2.325rem;\"><p><span class=\"r-line s1\">{0}</span><span class=\"r-line s1\">{1}</span><span class=\"r-line s1\" style=\"border: none;\">{2}</span></p> </div>", item.PlanNum, item.RealNum, item.Rate);
swgclHtml += string.Format(" <div class=\"th r-line \" style=\"width: 2.325rem;\"><p><span class=\"r-line s1\">{0}</span><span class=\"r-line s1\">{1}</span><span class=\"r-line s1\" style=\"border: none;\">{2}</span></p> </div>", item.TotalPlanNum, item.TotalRealNum, item.TotalRate);
swgclHtml += string.Format("<div class=\"th r-line\" style=\"width: .8375rem;\"><p>{0}</p> </div>", item.SumRate);
swgclHtml += " </div>";
}
});
}
protected async Task<string> GetTreeAsync()
{
return await Task.Run(() =>
{
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
businessColumn.title = "赢得值曲线";
var views = (from x in Funs.DB.View_JDGL_ProgressCompletion where x.ProjectId == this.CurrUser.LoginProjectId orderby x.Months select x).ToList();
Model.SingleSerie s = new Model.SingleSerie();
Model.SingleSerie s2 = new Model.SingleSerie();
Model.SingleSerie s3 = new Model.SingleSerie();
Model.SingleSerie s4 = new Model.SingleSerie();
List<double> listdata = new List<double>();
List<double> listdata2 = new List<double>();
List<double> listdata3 = new List<double>();
List<double> listdata4 = new List<double>();
for (int i = 0; i < views.Count; i++)
{
listCategories.Add(views[i].MonthStr);
listdata.Add(Convert.ToDouble(views[i].PlanNum));
listdata2.Add(Convert.ToDouble(views[i].TotalPlanNum));
listdata3.Add(Convert.ToDouble(views[i].RealNum));
listdata4.Add(Convert.ToDouble(views[i].TotalRealNum));
}
s.data = listdata;
s2.data = listdata2;
s3.data = listdata3;
s4.data = listdata4;
series.Add(s);
series.Add(s2);
series.Add(s3);
series.Add(s4);
businessColumn.categories = listCategories;
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
});
}
#endregion 线
#region
protected string QuantityDoneJdtjHtml;
protected string QuantityDoneJdtjHead = "<div class=\"th-p\" >类型</div><div class=\"th-p\" >设计数量</div><div class=\"th-p\"><p>本期</p><p><span>计划</span><span>实际</span><span>完成率</span></p></div><div class=\"th-p\"><p>累计</p><p><span>计划</span><span>实际</span><span>完成率</span></p></div><div class=\"th-p\" >完成率</div>";
//protected string QuantityDoneJdtjHead = "<div class=\"th-p\" >类型</div><div class=\"th-p\" >单位</div><div class=\"th-p\" >设计数量</div><div class=\"th-p\"><p>本期</p><p><span>计划完成</span><span>实际完成</span><span>完成率</span></p></div><div class=\"th-p\"><p>累计</p><p><span>计划完成</span><span>实际完成</span><span>完成率</span></p></div><div class=\"th-p\" >完成率</div>";
/// <summary>
/// 工程量完成情况
/// </summary>
/// <returns></returns>
protected async Task<string> GetQuantityDoneJDAsync()
{
return await Task.Run(() =>
{
string doneJdtjHtml = string.Empty;
string month = string.Format("{0:yyyy-MM-01}", DateTime.Now);
//DateTime months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-01");
if (DateTime.Now.Day < 26)
{
month = string.Format("{0:yyyy-MM-01}", DateTime.Now.AddMonths(-1));
//months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.AddMonths(-1).Month.ToString() + "-01");
}
string strSql = @"select qc.QuantityCompletionId,(select PlanNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as PlanNum,
(select RealNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as RealNum,
(select NextNum from JDGL_QuantityCompletion where QuantityListId=ql.QuantityListId and Months=@month) as NextNum,ql.DesignNum,ql.Name,ql.Unit,ql.SortIndex,
CONVERT(FLOAT, (select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month)) as TotalPlanNum,
CONVERT(FLOAT, (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month)) as TotalRealNum,
CONVERT(NVARCHAR(10), ((CAST(CASE ISNULL(qc.PlanNum, 0) WHEN 0 THEN 0
ELSE 100 * ISNULL(qc.RealNum, 0) / (1.0 * qc.PlanNum) END AS DECIMAL(9, 2))))) + '%'
AS Rate,
CONVERT(NVARCHAR(10), ((CAST(CASE(select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month) WHEN 0 THEN 0
ELSE 100 * (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month) / (1.0 * (select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month)) END AS DECIMAL(9, 2)))))+'%'
AS TotalRate,
CONVERT(NVARCHAR(10), ((CAST(CASE ISNULL(ql.DesignNum, 0) WHEN 0 THEN 0
ELSE 100 * (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months <= @month) / (1.0 * ql.DesignNum) END AS DECIMAL(9, 2)))))+'%'
AS SumRate,
CONVERT(FLOAT, (select sum(ISNULL(PlanNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months < qc.Months)) as LastTotalPlanNum,
CONVERT(FLOAT, (select sum(ISNULL(RealNum, 0)) from JDGL_QuantityCompletion where ProjectId = ql.ProjectId and QuantityListId = qc.QuantityListId and Months < qc.Months)) as LastTotalRealNum
from[dbo].JDGL_QuantityList ql
left join dbo.[JDGL_QuantityCompletion] qc on ql.QuantityListId=qc.QuantityListId
where qc.QuantityCompletionId=(select top 1 QuantityCompletionId from[JDGL_QuantityCompletion] q where q.QuantityListId=qc.QuantityListId and q.Months<=@month order by q.Months desc) and qc.ProjectId=@ProjectId order by ql.SortIndex, ql.Name";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
listStr.Add(new SqlParameter("@month", month));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
StringBuilder sb = new StringBuilder();
for (int j = 0; j < tb.Rows.Count; j++)
{
string name = tb.Rows[j]["Name"].ToString().Trim();
string unit = tb.Rows[j]["Unit"].ToString().Trim();
string designNum = Funs.RemoveZero(tb.Rows[j]["DesignNum"].ToString().Trim());
string planNum = Funs.RemoveZero(tb.Rows[j]["PlanNum"].ToString().Trim());
string realNum = Funs.RemoveZero(tb.Rows[j]["RealNum"].ToString().Trim());
string rate = tb.Rows[j]["Rate"].ToString().Trim();
string nextNum = Funs.RemoveZero(tb.Rows[j]["NextNum"].ToString().Trim());
string totalPlanNum = Funs.RemoveZero(tb.Rows[j]["TotalPlanNum"].ToString().Trim());
string totalRealNum = Funs.RemoveZero(tb.Rows[j]["TotalRealNum"].ToString().Trim());
string totalRate = tb.Rows[j]["TotalRate"].ToString().Trim();
string sumRate = tb.Rows[j]["SumRate"].ToString().Trim();
sb.Append("<div class=\"row\">");
sb.Append($"<div class=\"tr\" >{name}{unit}</div>");
//sb.Append($"<div class=\"tr\" >{unit}</div>");
sb.Append($"<div class=\"tr\" >{designNum}</div>");
sb.Append($"<div class=\"tr\" ><p><span>{planNum}</span><span>{realNum}</span><span>{rate}</span></p></div>");
sb.Append($"<div class=\"tr\" ><p><span>{totalPlanNum}</span><span>{totalRealNum}</span><span>{totalRate}</span></p></div>");
sb.Append($"<div class=\"tr\" >{sumRate}</div>");
sb.Append("</div>");
}
doneJdtjHtml = sb.ToString();
return doneJdtjHtml;
});
}
#endregion
#region
protected string WeekJdtjHtml;
//protected string WeekJdtjHead = "<div class=\"th-p\" >序号</div><div class=\"th-p\" >单位</div><div class=\"th-p\"><p>上周完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
protected string WeekJdtjHead = "<div class=\"th-p\" >单位</div><div class=\"th-p\"><p>上周完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
protected string MonthJdtjHtml;
//protected string MonthJdtjHead = "<div class=\"th-p\">序号</div><div class=\"th-p\">单位</div><div class=\"th-p\"><p>上月完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
protected string MonthJdtjHead = "<div class=\"th-p\">单位</div><div class=\"th-p\"><p>上月完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div><div class=\"th-p\"><p>累计完成情况</p><p><span>计划项</span><span>完成项</span><span>百分比</span></p></div>";
/// <summary>
/// 周进度完成情况
/// </summary>
/// <returns></returns>
protected async Task<string> GetWeekJDAsync()
{
return await Task.Run(() =>
{
string weekGridHtml = string.Empty;
//获取当前时间上一个周计划信息
var lastWeek = WeekPlanService.GetLastWeekPlan(this.CurrUser.LoginProjectId);
if (lastWeek != null)
{
Model.SGGLDB db = Funs.DB;
//1、获取本项目周进度计划中所有责任单位Id
var units = (from x in db.JDGL_WeekPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.EndDate <= lastWeek.EndDate
orderby x.UnitId
select new { x.UnitId, y.UnitName }).Distinct().ToList();
//2、获取当前项目指定周所有计划
var allWeekPlans = (from x in db.JDGL_WeekPlan
where x.ProjectId == this.CurrUser.LoginProjectId && x.WeekNo == lastWeek.WeekNo
orderby x.UnitId
select x).ToList();
//3、获取当前项目所有周计划
var allPlans = (from x in db.JDGL_WeekPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.EndDate <= lastWeek.EndDate
orderby x.UnitId
select x).ToList();
StringBuilder sb = new StringBuilder();
int index = 1;
foreach (var unit in units)
{
double weekPlanNum = allWeekPlans.Where(x => x.UnitId == unit.UnitId).Count();
double weekPlanOkNum = allWeekPlans.Where(x => x.UnitId == unit.UnitId && x.IsOK == true).Count();
double weekRate = weekPlanNum > 0 ? Math.Round((weekPlanOkNum / weekPlanNum) * 100, 2) : 0;
double allWeekPlanNum = allPlans.Where(x => x.UnitId == unit.UnitId).Count();
double allWeekPlanOkNum = allPlans.Where(x => x.UnitId == unit.UnitId && x.IsOK == true).Count();
double allWeekRate = allWeekPlanNum > 0 ? Math.Round((allWeekPlanOkNum / allWeekPlanNum) * 100, 2) : 0;
sb.Append("<div class=\"row\">");
//sb.Append($"<div class=\"tr\" >{index}</div>");
sb.Append($"<div class=\"tr\" >{unit.UnitName}</div>");
sb.Append($"<div class=\"tr\" ><p><span>{weekPlanNum}</span><span>{weekPlanOkNum}</span><span>{weekRate}%</span></p></div>");
sb.Append($"<div class=\"tr\" ><p><span>{allWeekPlanNum}</span><span>{allWeekPlanOkNum}</span><span>{allWeekRate}%</span></p></div>");
sb.Append("</div>");
index++;
}
weekGridHtml = sb.ToString();
}
return weekGridHtml;
});
}
/// <summary>
/// 月进度完成情况
/// </summary>
/// <returns></returns>
protected async Task<string> GetMonthJDAsync()
{
return await Task.Run(() =>
{
string monthGridHtml = string.Empty;
//统计月份信息
DateTime months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-01");
if (DateTime.Now.Day < 26)
{
months = Convert.ToDateTime(DateTime.Now.Year.ToString() + "-" + DateTime.Now.AddMonths(-1).Month.ToString() + "-01");
}
Model.SGGLDB db = Funs.DB;
//1、获取本项目月进度计划中所有责任单位Id
var units = (from x in db.JDGL_MonthPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months
orderby x.UnitId
select new { x.UnitId, y.UnitName }).Distinct().ToList();
//2、获取当前项目指定月所有计划
var allMonthPlans = (from x in db.JDGL_MonthPlan
where x.ProjectId == this.CurrUser.LoginProjectId && x.Months == months
orderby x.UnitId
select x).ToList();
//3、获取当前项目所有月计划
var allPlans = (from x in db.JDGL_MonthPlan
join y in db.Base_Unit on x.UnitId equals y.UnitId
where x.ProjectId == this.CurrUser.LoginProjectId && x.Months <= months
orderby x.UnitId
select x).ToList();
StringBuilder sb = new StringBuilder();
int index = 1;
foreach (var unit in units)
{
double monthPlanNum = allMonthPlans.Where(x => x.UnitId == unit.UnitId).Count();
double monthPlanOkNum = allMonthPlans.Where(x => x.UnitId == unit.UnitId && x.RealDate != null).Count();
double monthRate = monthPlanNum > 0 ? Math.Round((monthPlanOkNum / monthPlanNum) * 100, 2) : 0;
double allMonthPlanNum = allPlans.Where(x => x.UnitId == unit.UnitId).Count();
double allMonthPlanOkNum = allPlans.Where(x => x.UnitId == unit.UnitId && x.RealDate != null).Count();
double allMonthRate = allMonthPlanNum > 0 ? Math.Round((allMonthPlanOkNum / allMonthPlanNum) * 100, 2) : 0;
sb.Append("<div class=\"row\">");
//sb.Append($"<div class=\"tr\" >{index}</div>");
sb.Append($"<div class=\"tr\" >{unit.UnitName}</div>");
sb.Append($"<div class=\"tr\" ><p><span>{monthPlanNum}</span><span>{monthPlanOkNum}</span><span>{monthRate}%</span></p></div>");
sb.Append($"<div class=\"tr\" ><p><span>{allMonthPlanNum}</span><span>{allMonthPlanOkNum}</span><span>{allMonthRate}%</span></p></div>");
sb.Append("</div>");
index++;
}
monthGridHtml = sb.ToString();
return monthGridHtml;
});
}
#endregion
#region
protected string Person
{
get;
set;
}
protected async Task<string> GetPersonAsync()
{
return await Task.Run(() =>
{
Model.SGGLDB db = Funs.DB;
List<Model.SingleSerie> series = new List<Model.SingleSerie>();
Model.BusinessColumn businessColumn = new Model.BusinessColumn();
List<string> listCategories = new List<string>();
var persons = from x in db.SitePerson_Person where x.ProjectId == this.CurrUser.LoginProjectId && x.IsUsed == true && x.InTime <= DateTime.Now && (!x.OutTime.HasValue || x.OutTime > DateTime.Now) select x;
var posts = (from x in persons
join y in db.Base_WorkPost on x.WorkPostId equals y.WorkPostId
select y).Distinct();
Model.SingleSerie s = new Model.SingleSerie();
List<double> listdata = new List<double>();
//管理人员
listCategories.Add("管理人员");
int workPostCount12 = (from x in persons
join y in db.Base_WorkPost on x.WorkPostId equals y.WorkPostId
where y.PostType == Const.PostType_1
select x).Count();
listdata.Add(workPostCount12);
//普工
listCategories.Add("普工");
int workPostCountP = persons.Count(x => x.WorkPostId == Const.WorkPost_PGWorker);
listdata.Add(workPostCountP);
//木工
listCategories.Add("木工");
int workPostCount1 = persons.Count(x => x.WorkPostId == Const.WorkPost_Carpentry);
listdata.Add(workPostCount1);
//钢筋工
listCategories.Add("钢筋工");
int workPostCount2 = persons.Count(x => x.WorkPostId == Const.WorkPost_SteelWorker);
listdata.Add(workPostCount2);
//焊工
listCategories.Add("焊工");
int workPostCount6 = persons.Count(x => x.WorkPostId == Const.WorkPost_Welder1 || x.WorkPostId == Const.WorkPost_Welder2 ||
x.WorkPostId == Const.WorkPost_Welder3 || x.WorkPostId == Const.WorkPost_Welder4 || x.WorkPostId == Const.WorkPost_Welder5);
listdata.Add(workPostCount6);
//铆工
listCategories.Add("铆工");
int workPostCount7 = persons.Count(x => x.WorkPostId == Const.WorkPost_Riveter);
listdata.Add(workPostCount7);
//管工
listCategories.Add("管工");
int workPostCount8 = persons.Count(x => x.WorkPostId == Const.WorkPost_Foreman);
listdata.Add(workPostCount8);
////瓦工
//listCategories.Add("瓦工");
//int workPostCount3 = persons.Count(x => x.WorkPostId == Const.WorkPost_Bricklayer);
//listdata.Add(workPostCount3);
////混凝土工
//listCategories.Add("混凝土工");
//int workPostCount4 = persons.Count(x => x.WorkPostId == Const.WorkPost_ConcreteWorker);
//listdata.Add(workPostCount4);
////钳工
//listCategories.Add("钳工");
//int workPostCount5 = persons.Count(x => x.WorkPostId == Const.WorkPost_Fitter1 || x.WorkPostId == Const.WorkPost_Fitter2);
//listdata.Add(workPostCount5);
////电工
//listCategories.Add("电工");
//int workPostCount9 = persons.Count(x => x.WorkPostId == Const.WorkPost_Electrician1 || x.WorkPostId == Const.WorkPost_Electrician2
// || x.WorkPostId == Const.WorkPost_Electrician3);
//listdata.Add(workPostCount9);
////仪表工
//listCategories.Add("仪表工");
//int workPostCount10 = persons.Count(x => x.WorkPostId == Const.WorkPost_Instrumentalist);
//listdata.Add(workPostCount10);
////防腐保温工
//listCategories.Add("防腐保温工");
//int workPostCount11 = persons.Count(x => x.WorkPostId == Const.WorkPost_AnticorrosionWorker);
//listdata.Add(workPostCount11);
//其他
listCategories.Add("其他");
int workPostCount13 = persons.Count() - workPostCount1 - workPostCount2 - workPostCountP - workPostCount6 - workPostCount7
- workPostCount8 - workPostCount12;
listdata.Add(workPostCount13);
s.data = listdata;
series.Add(s);
businessColumn.categories = listCategories;
businessColumn.title = persons.Count().ToString();
businessColumn.series = series;
return JsonConvert.SerializeObject(businessColumn);
});
}
#endregion
#region
protected string getLicenseManager()
{
string returnHtml = "";
/* var list = Funs.DB.View_License_LicenseManager.Where(x => x.ProjectId == ProjectId).ToList();
foreach (var item in list)
{
var gfx = "风险作业";
if (item.IsHighRisk != true)
{
gfx = "非高风险";
}
string shortUnitname = string.Empty;
var unit = Funs.DB.Base_Unit.Where(x => x.UnitId == item.UnitId).FirstOrDefault();
if (unit != null)
{
shortUnitname = unit.ShortUnitName;
}
returnHtml += "<div class=\"li\">" + item.LicenseManagerCode + "-" + shortUnitname + "-" + item.WorkAreaName + "-" + gfx + "-" + item.LicenseTypeName
+ "</div>";
}*/
var result = (from x in Funs.DB.License_LicenseManager
join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId into units
from unit in units.DefaultIfEmpty()
join z in Funs.DB.WBS_UnitWork on x.WorkAreaId equals z.UnitWorkId into areas
from area in areas.DefaultIfEmpty()
join w in Funs.DB.Base_LicenseType on x.LicenseTypeId equals w.LicenseTypeId
where x.ProjectId == ProjectId
select new
{
x.LicenseManagerCode,
WorkAreaName = area.UnitWorkName,
w.LicenseTypeName,
x.IsHighRisk,
unit.ShortUnitName
})
.AsEnumerable() // 后续操作在内存中进行
.Select(x => new
{
x.LicenseManagerCode,
x.WorkAreaName,
x.LicenseTypeName,
GfxType = x.IsHighRisk == true ? "风险作业" : "非高风险",
ShortUnitName = x.ShortUnitName ?? ""
}).ToList();
var sb = new StringBuilder();
foreach (var item in result)
{
sb.AppendFormat("<div class=\"li\">{0}-{1}-{2}-{3}-{4}</div>",
item.LicenseManagerCode,
item.ShortUnitName,
item.WorkAreaName,
item.GfxType,
item.LicenseTypeName);
}
returnHtml = sb.ToString();
return returnHtml;
}
#endregion
#region
protected string gjsxRate = "0";
/// <summary>
/// 加载关键事项
/// </summary>
protected async Task getGjsx()
{
await Task.Run(() =>
{
string returnDbHtml = "<div></div>";
////关键事项
if (!string.IsNullOrEmpty(ProjectId))
{
string strSql = @"SELECT GJSXID AS DataId
,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId
,'关键事项待处理' AS MenuName
,GJSX.Detail AS Content
,users.UserId
,users.UserName
,GJSX.CreateDate AS DataTime
,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr
,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl
FROM GJSX
LEFT JOIN Sys_User AS users ON users.UserId =@userId
WHERE GJSX.ProjectId=@projectId AND
GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0
and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0)
or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID))
)";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@userId", CurrUser.UserId));
listStr.Add(new SqlParameter("@projectId", ProjectId));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
for (int i = 0; i < tb.Rows.Count; i++)
{
returnDbHtml += "<div class=\"li\" style=\"cursor:pointer\" " +
"onclick=\"returnWindows(\"" + tb.Rows[i]["PCUrl"] + "\")\"><span>" + tb.Rows[i]["MenuName"] + "</span><span>" + tb.Rows[i]["Content"] + "</span><span>" +
tb.Rows[i]["DataTime"].ToString().Replace('/', '-').Split(' ')[0] + "</span></div>";
}
}
else
{
returnDbHtml = "<div></div>";
}
this.div_gjsxlist.InnerHtml = returnDbHtml;
List<SqlParameter> listStaticListStr = new List<SqlParameter>();
listStaticListStr.Add(new SqlParameter("@UserID", null));
listStaticListStr.Add(new SqlParameter("@unit", null));
listStaticListStr.Add(new SqlParameter("@projectid", this.CurrUser.LoginProjectId));
listStaticListStr.Add(new SqlParameter("@CNProfessional_ID", null));
listStaticListStr.Add(new SqlParameter("@questionType", null));
listStaticListStr.Add(new SqlParameter("@processMan", null)); listStaticListStr.Add(new SqlParameter("@User_Acceptance", null));
SqlParameter[] Staticparameter = listStaticListStr.ToArray();
DataTable statcitbDataTable = SQLHelper.GetDataTableRunProc("Sp_GJSXStatistic", Staticparameter);
var list = from x in Funs.DB.GJSX where x.ProjectId == this.CurrUser.LoginProjectId select x;
var allcount = list.Count(x => x.State == "0") + list.Count(x => x.State != "0" && x.CompleteDate < DateTime.Now);
var closecount = list.Count(x => x.State == "0");
gjsxRate = String.Format("{0:N2}", 100.0 * closecount / allcount);
gjsxRate = gjsxRate.ToString().Replace("NaN", "0") + "%";
});
}
protected async Task getGztm()
{
await Task.Run(() =>
{
//div_dbsxlist.InnerHtml = "";
string returnDbHtml = "<div></div>";
if (!string.IsNullOrEmpty(ProjectId))
{
//关键事项
string strSql = @"SELECT GJSXID AS DataId
,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId
,'关键事项待处理' AS MenuName
,GJSX.Detail AS Content
,users.UserId
,users.UserName
,GJSX.CreateDate AS DataTime
,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr
,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl
FROM GJSX
LEFT JOIN Sys_User AS users ON users.UserId =@userId
WHERE GJSX.ProjectId=@projectId AND
GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0
and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0)
or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID))
)";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@userId", CurrUser.UserId));
listStr.Add(new SqlParameter("@projectId", ProjectId));
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
var Gjsxcount = tb.Rows.Count;
div_gjsx.InnerHtml = Gjsxcount.ToString();
var getDataList = Funs.DB.Sp_Project_GetToDoItems(this.CurrUser.LoginProjectId, this.CurrUser.UserId).ToList();
//待办事项、个人流程
div_dbsx.InnerHtml = getDataList.Count().ToString();
div_grlc.InnerHtml = getDataList.Count().ToString();
foreach (var item in getDataList)
{
returnDbHtml += "<div class=\"li\" style=\"cursor:pointer\" onclick=\"returnWindows('" + item.PCUrl + "')\"><span>" + item.MenuName + "</span><span>" + item.Content + "</span><span>" +
item.DataTime.ToString().Replace('/', '-').Split(' ')[0] + "</span></div>";
}
}
else
{
returnDbHtml = "<div></div>";
}
this.div_dbsxlist.InnerHtml = returnDbHtml;
});
}
#endregion
#region
protected string gdclHead = "<div class=\"th-p\">材料类别</div><div class=\"th-p\">设计量</div><div class=\"th-p\"><p>采购量</p><p><span>采购量</span><span>百分比</span></p></div><div class=\"th-p\"><p>到货量</p><p><span>已到货</span><span>百分比</span></p></div><div class=\"th-p\"><p>领料量</p><p><span>已领料</span><span>百分比</span></p></div>";
protected string gdclHtml;
protected string sbclHead = "<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 sbclHtml;
private async Task getCldh()
{
await Task.Run(() =>
{
//管道材料
var pid = BLL.ProjectService.GetCLProjectCodeByProjectId(ProjectId).ToString();
var list = Funs.DB.CLGL_PipelineMaterialSumList.Where(x => x.Type == "M" && x.ProjectId == pid);
foreach (var item in list)
{
gdclHtml += "<div class=\"row\">";
gdclHtml += "<div class=\"tr\" >" + item.C1 + "</div>";
gdclHtml += "<div class=\"tr\" >" + (string.IsNullOrEmpty(item.C2) ? "0" : item.C2) + "</div>";
gdclHtml += "<div class=\"tr\" ><p><span>" + (string.IsNullOrEmpty(item.C4) ? "0" : item.C4) + "</span><span>" + (string.IsNullOrEmpty(item.C5) ? "0%" : item.C5) + "</span></p></div>";
gdclHtml += "<div class=\"tr\" ><p><span>" + (string.IsNullOrEmpty(item.C6) ? "0" : item.C6) + "</span><span>" + (string.IsNullOrEmpty(item.C7) ? "0%" : item.C7) + "</span></p></div>";
gdclHtml += "<div class=\"tr\" ><p><span>" + (string.IsNullOrEmpty(item.C8) ? "0" : item.C8) + "</span><span>" + (string.IsNullOrEmpty(item.C9) ? "0%" : item.C9) + "</span></p></div>";
gdclHtml += "</div>";
}
//设备材料
var SbclList = Funs.DB.CLGL_ContractListSum.Where(x => x.C1 == "设备" && x.ProjectId == pid);
foreach (var item in SbclList)
{
sbclHtml += "<div class=\"row\">";
double SbcllCgl = 0.0;
double Sbdhs = 0.0;
if (string.IsNullOrEmpty(item.C7))
{
SbcllCgl += 0;
Sbdhs += 0;
}
else
{
SbcllCgl += Convert.ToDouble(item.C7);
Sbdhs += Convert.ToDouble(item.C9);
}
sbclHtml += "<div class=\"tr\" >" + item.C2 + "</div>";
sbclHtml += "<div class=\"tr\" >" + SbcllCgl + "</div>";
sbclHtml += "<div class=\"tr\" >" + item.C7 + "</div>";
sbclHtml += "<div class=\"tr\" >" + Sbdhs + "</div>";
//百分比
var dhbfb = "0%";
if (SbcllCgl + Sbdhs != 0)
{
dhbfb = String.Format("{0:N2}", 100.0 * Sbdhs / (Sbdhs + SbcllCgl), 2) + "%";
}
sbclHtml += "<div class=\"tr\" >" + dhbfb + "</div>";
sbclHtml += "</div>";
}
});
}
#endregion
//质量问题整改率
//总计
//计划值
//累计计划值
//累计实际值
private async Task getCNEN()
{
await Task.Run(() =>
{
QualityRate = Resources.Lan.QualityRate;
OnePassRate = Resources.Lan.OnePassRate;
OnePassRateOfWelding = Resources.Lan.OnePassRateOfWelding;
total = Resources.Lan.total;
completed = Resources.Lan.completed;
majorRisk = Resources.Lan.MajorRisk;
LowRisk = Resources.Lan.LowRisk;
GeneralRisk = Resources.Lan.GeneralRisk;
GreaterRisk = Resources.Lan.GreaterRisk;
PlannedValue = Resources.Lan.PlannedValue;
ActualValue = Resources.Lan.ActualValue;
Cumulative_planned_value = Resources.Lan.Cumulative_planned_value;
Cumulative_actual_value = Resources.Lan.Cumulative_actual_value;
});
}
}
}