2024-01-25 15:21:19 +08:00
using BLL ;
using FineUIPro.Web.BaseInfo ;
using FineUIPro.Web.DataShow ;
using FineUIPro.Web.SysManage ;
using Model ;
using Newtonsoft.Json ;
2025-03-17 15:53:00 +08:00
using NPOI.Util ;
2024-01-25 15:21:19 +08:00
using System ;
2025-03-17 18:46:22 +08:00
using System.Collections ;
2024-01-25 15:21:19 +08:00
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
using System.IO ;
using System.Linq ;
2025-03-17 15:53:00 +08:00
using System.Text ;
using System.Threading.Tasks ;
2024-01-25 15:21:19 +08:00
using System.Web ;
using System.Web.UI ;
using System.Web.UI.WebControls ;
namespace FineUIPro.Web.common
{
public partial class mainProject2 : PageBase
{
2025-03-17 15:53:00 +08:00
#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
2024-01-25 15:21:19 +08:00
/// <summary>
/// 项目id
/// </summary>
public string ProjectId
{
get
{
return ( string ) ViewState [ "ProjectId" ] ;
}
set
{
ViewState [ "ProjectId" ] = value ;
}
2025-03-17 15:53:00 +08:00
}
#endregion Properties
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
#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 , "办理 - " ) ) ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
/// <summary>
/// 页面加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
2025-03-17 15:53:00 +08:00
protected async void Page_Load ( object sender , EventArgs e )
2024-01-25 15:21:19 +08:00
{
if ( ! IsPostBack )
{
ProjectId = CurrUser . LoginProjectId ;
2025-03-17 15:53:00 +08:00
var treeTask = GetTreeAsync ( ) ;
var personTask = GetPersonAsync ( ) ;
2025-03-25 18:58:30 +08:00
var weekJdtjTask = GetWeekJDAsync ( ) ;
var monthJdtjTask = GetMonthJDAsync ( ) ;
2025-03-17 15:53:00 +08:00
var otherTasks = new List < Task >
{
BindSafetyStatisticsAsync ( ) , // 安全统计模块
BindQualityStatisticsAsync ( ) , // 质量统计模块
getHazardData ( ) ,
//整改数据
getZgsj ( ) ,
//风险预警
getHazard ( ) ,
2025-03-17 18:46:22 +08:00
getWork ( ) ,
2025-03-17 15:53:00 +08:00
//工程概况
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 ;
2025-03-25 18:58:30 +08:00
WeekJdtjHtml = await weekJdtjTask ;
MonthJdtjHtml = await monthJdtjTask ;
2025-03-17 15:53:00 +08:00
}
}
/// <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 ( ( ) = >
{
2024-01-25 15:21:19 +08:00
Model . SGGLDB db = Funs . DB ;
//安全人工时
2024-05-15 16:01:09 +08:00
//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 ( ) ;
2024-06-17 16:38:25 +08:00
this . divSafeWorkTime . InnerHtml = wHours . ToString ( ) ;
2024-01-25 15:21:19 +08:00
//本月安全人工时
int wHoursMonth = 0 ;
var dayReports = BLL . SitePerson_MonthReportService . getMonthReports ( this . ProjectId , sDate ) ;
2025-03-17 15:53:00 +08:00
if ( dayReports . Any ( ) )
2024-01-25 15:21:19 +08:00
{
wHoursMonth = Convert . ToInt32 ( dayReports [ 0 ] . DayWorkTime ) ;
}
2024-06-17 16:38:25 +08:00
this . divSafeWorkTimeMonth . InnerHtml = wHoursMonth . ToString ( ) ;
2024-01-25 15:21:19 +08:00
//安全培训累计人员
var getTrainRecord = db . EduTrain_TrainRecord . Where ( x = > x . ProjectId = = ProjectId ) . Sum ( x = > x . TrainPersonNum ) ? ? 0 ;
//修改:增加博晟教育中的人数
2025-03-17 15:53:00 +08:00
var boShengCount = db . Bo_Sheng_TrainPerson . Count ( x = > x . ProjectId = = ProjectId & & ( x . DeleteTag = = "False" | | x . DeleteTag = = null ) ) ;
2024-01-25 15:21:19 +08:00
2024-06-17 16:38:25 +08:00
this . divSafePersonNum . InnerHtml = ( getTrainRecord + boShengCount ) . ToString ( ) ;
2024-01-25 15:21:19 +08:00
//安全管理人员
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 ;
2024-06-17 16:38:25 +08:00
this . divSafeManagePersonNum . InnerHtml = glAllPerson . Count ( ) . ToString ( ) ;
2024-01-25 15:21:19 +08:00
//未遂事故
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 ;
2024-06-17 16:38:25 +08:00
this . divWS . InnerHtml = ( wsAccidentList1 . Count ( ) + wsAccidentList2 . Count ( ) ) . ToString ( ) ;
2025-03-17 15:53:00 +08:00
} ) ;
}
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
#endregion Methods
2025-03-14 15:29:22 +08:00
2025-03-17 15:53:00 +08:00
// 项目统计优化
2024-01-25 15:21:19 +08:00
#region 人 员 信 息
2025-03-17 15:53:00 +08:00
private async Task getSitePerson ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 ( ) ;
}
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
if ( AllCount > 0 )
{
////当前现场总人数
div_xcrs . InnerHtml = AllCount . ToString ( ) ;
//作业人数
div_zyxcrs . InnerHtml = ( AllCount - MCount ) . ToString ( ) ;
//管理人数
div_glxcrs . InnerHtml = MCount . ToString ( ) ;
}
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 人 员 信 息
2024-01-25 15:21:19 +08:00
#region 项 目 人 员 图 表
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
protected string ProjectPersonCount ;
protected string ProjectPersonMc ;
2025-03-17 15:53:00 +08:00
private async Task getProjectSitePerson ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 ( ',' ) ;
}
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 项 目 人 员 图 表
2024-01-25 15:21:19 +08:00
#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 ;
}
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
/// <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 ;
}
2025-03-17 15:53:00 +08:00
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 整 改 数 据
2024-01-25 15:21:19 +08:00
#region 工 程 概 括
2025-03-17 15:53:00 +08:00
protected string divJLUnitTitle ;
protected string divOwnUnitTitle ;
2024-01-25 15:21:19 +08:00
protected string divProjectAddressTitle ;
2025-03-17 15:53:00 +08:00
protected string divProjectImg ;
2024-01-25 15:21:19 +08:00
protected string divProjectMoneyTitle ;
2025-03-17 15:53:00 +08:00
protected string divProjectNameTitle ;
2024-01-25 15:21:19 +08:00
protected string divSGUnitTitle ;
protected string spanJLUnit ;
2025-03-17 15:53:00 +08:00
protected string spanOwnUnit ;
protected string spanProjectAddress ;
protected string spanProjectName ;
2024-01-25 15:21:19 +08:00
protected string spanRemark ;
2025-03-17 15:53:00 +08:00
protected string spanSGUnit ;
private string GetFileType ( string fileName )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
string fileType = String . Empty ;
int lastDotIndex = fileName . LastIndexOf ( "." ) ;
if ( lastDotIndex > = 0 )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
fileType = fileName . Substring ( lastDotIndex + 1 ) . ToLower ( ) ;
}
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
return fileType ;
}
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
/// <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 )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
if ( project . EndDate . HasValue )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
int pdays = ( project . EndDate . Value - project . StartDate . Value ) . Days ;
if ( pdays > = 0 )
{
this . divProjectDays . InnerHtml = pdays . ToString ( ) + "<span>天</span>" ;
}
2024-01-25 15:21:19 +08:00
}
}
2025-03-17 15:53:00 +08:00
var allowExtensions = new List < string >
2024-01-25 15:21:19 +08:00
{
"jpg" , "jpeg" , "png" , "bmp" , "gif" , // 图片文件类型
} ;
2025-03-17 15:53:00 +08:00
var getImag = Funs . DB . AttachFile . FirstOrDefault ( x = > x . ToKeyId = = project . ProjectId ) ;
if ( getImag ! = null & & ! string . IsNullOrEmpty ( getImag . AttachUrl ) )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
string url = getImag . AttachUrl . Replace ( '\\' , '/' ) ;
var UrlList = Funs . GetStrListByStr ( url , ',' ) ;
bool isHiddDefaultImg = false ;
foreach ( var item in UrlList )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
if ( ! string . IsNullOrEmpty ( item ) )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 , "/" ) ) ;
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
//this.divProjectImgs.Src = divProjectImg;
}
2024-01-25 15:21:19 +08:00
}
}
2025-03-17 15:53:00 +08:00
divProjectImg = divProjectImg . Replace ( "<div class=\"swiper-slide\"><img src=\"../res/images/16.png\"></div>" , "" ) ;
}
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 工 程 概 括
2024-01-25 15:21:19 +08:00
#region 风 险 预 警
2025-03-17 15:53:00 +08:00
protected int CompletedNum ;
2025-03-25 21:54:21 +08:00
protected int AllNum ;
2025-03-17 15:53:00 +08:00
protected int ConstructionNum ;
protected int EarlyWarningCounts ;
protected int FinishedNum ;
protected int JxyjNum ;
2024-01-25 15:21:19 +08:00
protected string riskData1 ;
protected string riskData2 ;
protected string riskData3 ;
protected string riskData4 ;
2024-06-17 16:38:25 +08:00
protected string riskDataRate ;
2025-03-17 15:53:00 +08:00
protected int SuperCompletedNum ;
2025-03-25 21:54:21 +08:00
protected int SuperAllNum ;
2025-03-17 15:53:00 +08:00
protected int SuperConstructionNum ;
protected int SuperFinishedNum ;
protected int SuperTrainPersonNum ;
protected int TrainPersonNum ;
2024-01-25 15:21:19 +08:00
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取危大工程审批完成数
2024-01-25 15:21:19 +08:00
/// </summary>
2025-03-17 15:53:00 +08:00
/// <returns></returns>
protected async Task < int > GetCompletedNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetFinishedNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
}
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
/// <summary>
/// 获取危大工程施工个数
/// </summary>
/// <returns></returns>
protected async Task < int > GetConstructionNum ( )
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetConstructionNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
/// 资质预警
/// </summary>
2025-03-17 15:53:00 +08:00
protected async Task < int > getEarlyWarningCounts ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
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 ;
2025-03-17 15:53:00 +08:00
} ) ;
}
/// <summary>
/// 获取危大工程完工个数
/// </summary>
/// <returns></returns>
protected async Task < int > GetFinishedNum ( )
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetFinishedNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
/// 机械预警
/// </summary>
/// <returns></returns>
2025-03-17 15:53:00 +08:00
protected async Task < int > GetJxyjNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
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 ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取超危大工程审批完成数
2024-01-25 15:21:19 +08:00
/// </summary>
/// <returns></returns>
2025-03-17 15:53:00 +08:00
protected async Task < int > GetSuperCompletedNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetSuperFinishedNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取超危大工程施工个数
2024-01-25 15:21:19 +08:00
/// </summary>
/// <returns></returns>
2025-03-17 15:53:00 +08:00
protected async Task < int > GetSuperConstructionNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetSuperConstructionNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取超危大工程完工个数
2024-01-25 15:21:19 +08:00
/// </summary>
/// <returns></returns>
2025-03-17 15:53:00 +08:00
protected async Task < int > GetSuperFinishedNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetSuperFinishedNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取超危大工程培训人次数
2024-01-25 15:21:19 +08:00
/// </summary>
/// <returns></returns>
2025-03-17 15:53:00 +08:00
protected async Task < int > GetSuperTrainPersonNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetSuperTrainPersonNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取危大工程培训人次数
2024-01-25 15:21:19 +08:00
/// </summary>
/// <returns></returns>
2025-03-17 15:53:00 +08:00
protected async Task < int > GetTrainPersonNum ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = Project_HSSEData_HSSEService . GetTrainPersonNum ( ProjectId ) ;
return result ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
/// <summary>
2025-03-17 15:53:00 +08:00
/// 获取风险管控
2024-01-25 15:21:19 +08:00
/// </summary>
2025-03-17 15:53:00 +08:00
private async Task getHazard ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 ;
2025-03-25 21:54:21 +08:00
AllNum = await CompletedNumTask + await ConstructionNumTask + await FinishedNumTask ;
SuperAllNum = await SuperCompletedNumTask + await SuperConstructionNumTask + await SuperFinishedNumTask ;
2025-03-17 15:53:00 +08:00
}
#endregion 风 险 预 警
#region 作 业 许 可
2025-03-17 18:46:22 +08:00
protected int AllWrokCount0 ;
protected int AllWrokCount1 ;
protected int AllWrokCount2 ;
protected int AllWrokCount3 ;
protected int WrokCount0 ;
protected int WrokCount1 ;
protected int WrokCount2 ;
2025-03-25 18:58:30 +08:00
protected int WrokCount3 ;
2025-03-17 18:46:22 +08:00
protected async Task getWork ( )
{
2025-03-17 15:53:00 +08:00
2025-03-17 18:46:22 +08:00
var AllWrokCount0 = getALLWrokCount0 ( ) ;
var AllWrokCount1 = getALLWrokCount1 ( ) ;
var AllWrokCount2 = getALLWrokCount2 ( ) ;
var AllWrokCount3 = getALLWrokCount3 ( ) ;
var WrokCount0 = getWrokCount0 ( ) ;
var WrokCount1 = getWrokCount1 ( ) ;
var WrokCount2 = getWrokCount2 ( ) ;
var WrokCount3 = getWrokCount3 ( ) ;
2025-03-25 18:58:30 +08:00
await Task . WhenAll ( AllWrokCount0 , AllWrokCount1 , AllWrokCount2 , AllWrokCount3 , WrokCount0 , WrokCount1 , WrokCount2 , WrokCount3 ) ;
2025-03-17 18:46:22 +08:00
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
2025-03-25 18:58:30 +08:00
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" ? "已取消" : ""
} ;
2025-03-17 18:46:22 +08:00
return query ;
}
protected async Task < int > getAllCount ( )
2025-03-17 15:53:00 +08:00
{
2025-03-17 18:46:22 +08:00
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId ) . ToList ( ) . Count ;
2024-01-25 15:21:19 +08:00
return result ;
}
2025-03-25 18:58:30 +08:00
2024-01-25 15:21:19 +08:00
2025-03-17 18:46:22 +08:00
protected async Task < int > getALLWrokCount0 ( )
2025-03-25 18:58:30 +08:00
{
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . LicenseTypeName = = "动火作业许可证" ) . ToList ( ) . Count ;
return result ;
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 18:46:22 +08:00
protected async Task < int > getALLWrokCount1 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . LicenseTypeName = = "高处作业许可证" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 18:46:22 +08:00
protected async Task < int > getALLWrokCount2 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . LicenseTypeName = = "吊装作业许可证" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
2025-03-17 18:46:22 +08:00
protected async Task < int > getALLWrokCount3 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId
& & x . LicenseTypeName ! = "动火作业许可证" & & x . LicenseTypeName ! = "高处作业许可证" & & x . LicenseTypeName ! = "吊装作业许可证" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2025-03-17 15:53:00 +08:00
}
2025-03-17 18:46:22 +08:00
protected async Task < int > getTodayCount ( )
2025-03-17 15:53:00 +08:00
{
2025-03-17 18:46:22 +08:00
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . WorkStatesStr = = "作业中" ) . ToList ( ) . Count ;
2024-01-25 15:21:19 +08:00
return result ;
}
/// <summary>
/// 动火作业许可证
/// </summary>
/// <returns></returns>
2025-03-17 18:46:22 +08:00
protected async Task < int > getWrokCount0 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . LicenseTypeName = = "动火作业许可证" & & x . WorkStatesStr = = "作业中" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 18:46:22 +08:00
protected async Task < int > getWrokCount1 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . LicenseTypeName = = "高处作业许可证" & & x . WorkStatesStr = = "作业中" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 18:46:22 +08:00
protected async Task < int > getWrokCount2 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId & & x . LicenseTypeName = = "吊装作业许可证" & & x . WorkStatesStr = = "作业中" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 18:46:22 +08:00
protected async Task < int > getWrokCount3 ( )
2024-01-25 15:21:19 +08:00
{
2025-03-25 18:58:30 +08:00
return await Task . Run ( ( ) = >
{
var result = GetLicenseQuery ( ) . Where ( x = > x . ProjectId = = ProjectId
& & x . LicenseTypeName ! = "动火作业许可证" & & x . LicenseTypeName ! = "高处作业许可证" & & x . LicenseTypeName ! = "吊装作业许可证" & & x . WorkStatesStr = = "作业中" ) . ToList ( ) . Count ;
return result ;
2025-03-17 18:46:22 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 作 业 许 可
2024-01-25 15:21:19 +08:00
#region 质 量 问 题
2025-03-17 15:53:00 +08:00
protected string zgzglDataValue ;
2024-01-25 15:21:19 +08:00
//质量问题总计
protected string zlallNumber ;
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
//质量问题合格数量
protected string zlfinishNumber ;
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
//质量问题整改率
protected string zlzgl ;
2025-03-17 15:53:00 +08:00
protected async Task getZlwt ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 ( ) ;
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 质 量 问 题
2024-01-25 15:21:19 +08:00
#region 质 量 共 检
2025-03-17 15:53:00 +08:00
protected string zggjzglDataValue ;
2024-01-25 15:21:19 +08:00
protected string zlgjallNumber ;
protected string zlgjfinishNumber ;
protected string zlgjzgl ;
2025-03-17 15:53:00 +08:00
protected async Task getZlgj ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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" ;
}
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 质 量 共 检
2024-01-25 15:21:19 +08:00
#region 焊 接
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
protected string hjallNumber = "0" ;
2025-03-17 15:53:00 +08:00
protected string hjDataValue = "0" ;
2024-01-25 15:21:19 +08:00
protected string hjfinishNumber = "0" ;
protected string hjzgl = "0" ;
2025-03-17 15:53:00 +08:00
protected async Task getHj ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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 ) ;
}
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
else
2024-08-07 09:33:26 +08:00
{
2025-03-17 15:53:00 +08:00
var hjglData =
( from x in db . HJGL_FL_Data
where x . ProjectId = = ProjectId
orderby x . CompileDate descending
select x ) . FirstOrDefault ( ) ;
if ( hjglData ! = null )
2024-08-07 09:33:26 +08:00
{
2025-03-17 15:53:00 +08:00
a = Funs . GetNewDecimalOrZero ( hjglData . OneTimeFilmQualifiedAmount ) ;
b = Funs . GetNewDecimalOrZero ( hjglData . OneTimeFilmAmount ) ;
if ( a > 0 & & b > 0 )
{
result = Convert . ToDouble ( Convert . ToDecimal ( 100.0 ) * b / a ) ;
}
2024-08-07 09:33:26 +08:00
}
}
2025-03-17 15:53:00 +08:00
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();
// }
// }
//}
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 焊 接
2024-01-25 15:21:19 +08:00
#region 赢 得 值 曲 线
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
protected string swgclHtml ;
2025-03-17 15:53:00 +08:00
protected string Tree
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
get ;
set ;
2024-01-25 15:21:19 +08:00
}
2024-10-18 19:16:41 +08:00
2024-01-25 15:21:19 +08:00
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 ) ;
}
}
2024-10-18 19:16:41 +08:00
2025-03-17 15:53:00 +08:00
protected async Task GetJD ( )
2024-10-18 19:16:41 +08:00
{
2025-03-17 15:53:00 +08:00
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>" ;
}
} ) ;
}
2025-03-25 18:58:30 +08:00
2025-03-17 15:53:00 +08:00
protected async Task < string > GetTreeAsync ( )
{
return await Task . Run ( ( ) = >
2024-10-18 19:16:41 +08:00
{
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 ) ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-10-18 19:16:41 +08:00
}
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
#endregion 赢 得 值 曲 线
2025-03-25 18:58:30 +08:00
#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 ;
2025-03-26 15:43:05 +08:00
//获取当前时间上一个周计划信息
2025-03-25 18:58:30 +08:00
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
2025-03-17 15:53:00 +08:00
#region 人 力 情 况
2024-01-25 15:21:19 +08:00
protected string Person
{
2025-03-17 15:53:00 +08:00
get ;
set ;
}
protected async Task < string > GetPersonAsync ( )
{
return await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
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 > ( ) ;
2025-02-27 15:55:43 +08:00
//管理人员
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 ) ;
2024-01-25 15:21:19 +08:00
//木工
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 ) ;
2025-02-27 15:55:43 +08:00
////瓦工
//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);
2024-01-25 15:21:19 +08:00
//其他
listCategories . Add ( "其他" ) ;
2025-02-27 15:55:43 +08:00
int workPostCount13 = persons . Count ( ) - workPostCount1 - workPostCount2 - workPostCountP - workPostCount6 - workPostCount7
2025-03-17 15:53:00 +08:00
- workPostCount8 - workPostCount12 ;
2024-01-25 15:21:19 +08:00
listdata . Add ( workPostCount13 ) ;
s . data = listdata ;
series . Add ( s ) ;
businessColumn . categories = listCategories ;
businessColumn . title = persons . Count ( ) . ToString ( ) ;
businessColumn . series = series ;
return JsonConvert . SerializeObject ( businessColumn ) ;
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 人 力 情 况
2024-01-25 15:21:19 +08:00
#region 作 业 许 可 列 表
2025-03-17 15:53:00 +08:00
2024-01-25 15:21:19 +08:00
protected string getLicenseManager ( )
{
string returnHtml = "" ;
2025-03-17 15:53:00 +08:00
/ * 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>" ;
} * /
2025-03-17 18:46:22 +08:00
var result = ( from x in Funs . DB . License_LicenseManager
2025-03-25 18:58:30 +08:00
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
} )
2025-03-17 18:46:22 +08:00
. AsEnumerable ( ) // 后续操作在内存中进行
. Select ( x = > new
{
x . LicenseManagerCode ,
x . WorkAreaName ,
x . LicenseTypeName ,
GfxType = x . IsHighRisk = = true ? "风险作业" : "非高风险" ,
ShortUnitName = x . ShortUnitName ? ? ""
2025-03-25 18:58:30 +08:00
} ) . ToList ( ) ;
2025-03-17 15:53:00 +08:00
var sb = new StringBuilder ( ) ;
2025-03-17 18:46:22 +08:00
foreach ( var item in result )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
sb . AppendFormat ( "<div class=\"li\">{0}-{1}-{2}-{3}-{4}</div>" ,
item . LicenseManagerCode ,
item . ShortUnitName ,
item . WorkAreaName ,
item . GfxType ,
item . LicenseTypeName ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
returnHtml = sb . ToString ( ) ;
2024-01-25 15:21:19 +08:00
return returnHtml ;
}
2025-03-17 15:53:00 +08:00
#endregion 作 业 许 可 列 表
2024-01-25 15:21:19 +08:00
#region 工 作 台 面
protected string gjsxRate = "0" ;
/// <summary>
/// 加载关键事项
/// </summary>
2025-03-17 15:53:00 +08:00
protected async Task getGjsx ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
string returnDbHtml = "<div></div>" ;
////关键事项
if ( ! string . IsNullOrEmpty ( ProjectId ) )
{
string strSql = @ "SELECT GJSXID AS DataId
2024-01-25 15:21:19 +08:00
, ' 0 BEA2126 - 7 A48 - 40 EB - 8E21 - 99148E91 A22B ' 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
2025-03-17 15:53:00 +08:00
FROM GJSX
2024-01-25 15:21:19 +08:00
LEFT JOIN Sys_User AS users ON users . UserId = @userId
2025-03-17 15:53:00 +08:00
WHERE GJSX . ProjectId = @projectId AND
2024-01-25 15:21:19 +08:00
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 ) )
) ";
2025-03-17 15:53:00 +08:00
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
listStr . Add ( new SqlParameter ( "@userId" , CurrUser . UserId ) ) ;
listStr . Add ( new SqlParameter ( "@projectId" , ProjectId ) ) ;
SqlParameter [ ] parameter = listStr . ToArray ( ) ;
DataTable tb = SQLHelper . GetDataTableRunText ( strSql , parameter ) ;
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
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
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
returnDbHtml = "<div></div>" ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
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" ) + "%" ;
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
protected async Task getGztm ( )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
await Task . Run ( ( ) = >
{
//div_dbsxlist.InnerHtml = "";
string returnDbHtml = "<div></div>" ;
if ( ! string . IsNullOrEmpty ( ProjectId ) )
{
//关键事项
string strSql = @ "SELECT GJSXID AS DataId
, ' 0 BEA2126 - 7 A48 - 40 EB - 8E21 - 99148E91 A22B ' 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 ;
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
#endregion 工 作 台 面
2024-01-25 15:21:19 +08:00
#region 材 料 到 货
2024-06-17 16:38:25 +08:00
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>" ;
2025-03-17 15:53:00 +08:00
protected string gdclHtml ;
2024-06-17 16:38:25 +08:00
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>" ;
2024-01-25 15:21:19 +08:00
2025-03-17 15:53:00 +08:00
protected string sbclHtml ;
private async Task getCldh ( )
{
await Task . Run ( ( ) = >
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
//管道材料
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 )
2024-01-25 15:21:19 +08:00
{
2025-03-17 15:53:00 +08:00
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>" ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
//设备材料
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>" ;
2024-01-25 15:21:19 +08:00
}
2025-03-17 15:53:00 +08:00
} ) ;
2024-01-25 15:21:19 +08:00
}
2025-03-14 15:29:22 +08:00
2025-03-17 15:53:00 +08:00
#endregion 材 料 到 货
2025-03-14 15:29:22 +08:00
2025-03-17 15:53:00 +08:00
//质量问题整改率
//总计
//计划值
//累计计划值
2025-03-25 18:58:30 +08:00
//累计实际值
2025-03-17 15:53:00 +08:00
private async Task getCNEN ( )
2025-03-14 15:29:22 +08:00
{
2025-03-17 15:53:00 +08:00
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 ;
} ) ;
2025-03-14 15:29:22 +08:00
}
2024-01-25 15:21:19 +08:00
}
}