1811 lines
85 KiB
C#
1811 lines
85 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 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.GetCompletedNum(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.GetSuperCompletedNum(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);
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
var ndtList =
|
||
(from x in db.ProcessControl_NondestructiveTest_New
|
||
where x.ProjectId == ProjectId
|
||
select x).ToList();
|
||
decimal a = 0, b = 0;
|
||
if (ndtList.Count > 0)
|
||
{
|
||
foreach (var item in ndtList)
|
||
{
|
||
if (item.TotalQuantity.HasValue)
|
||
{
|
||
a += Math.Floor(item.TotalQuantity.Value * Funs.GetNewDecimalOrZero(item.TotalRate) /
|
||
100);
|
||
b += item.TotalQuantity.Value;
|
||
}
|
||
|
||
}
|
||
result = Convert.ToDouble(Convert.ToDecimal(100.0) * b / a);
|
||
}
|
||
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 && x.State!="1" 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;
|
||
});
|
||
}
|
||
}
|
||
} |