1532 lines
67 KiB
C#
1532 lines
67 KiB
C#
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 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 }));
|
|
|
|
Tree = await treeTask;
|
|
Person = await personTask;
|
|
}
|
|
}
|
|
|
|
/// <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 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 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;
|
|
}
|
|
#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 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;
|
|
});
|
|
}
|
|
}
|
|
} |