2022-03-15 17:36:38 +08:00
using BLL ;
2023-03-16 19:30:28 +08:00
using FastReport.Editor.Common ;
2022-03-15 17:36:38 +08:00
using Newtonsoft.Json ;
using System ;
using System.Collections.Generic ;
using System.Data ;
2023-01-30 14:14:20 +08:00
using System.Data.SqlClient ;
2022-03-15 17:36:38 +08:00
using System.IO ;
using System.Linq ;
namespace FineUIPro.Web.common
{
public partial class mainProject : PageBase
{
#region 项 目 ID
/// <summary>
/// 项目ID
/// </summary>
public string ProjectId
{
get
{
return ( string ) ViewState [ "ProjectId" ] ;
}
set
{
ViewState [ "ProjectId" ] = value ;
}
}
#endregion
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
this . ProjectId = string . Empty ;
if ( this . CurrUser ! = null )
{
this . ProjectId = this . CurrUser . LoginProjectId ;
}
/// 获取安全人工时
getPersonWorkTime ( ) ;
///劳务统计
getSitePerson ( ) ;
///项目概况
getProjectInfo ( ) ;
/// 获取质量问题
getCQMSProblem ( ) ;
this . divQualityWarningNum . InnerHtml = ( from x in Funs . DB . QualityAudit_PersonQuality
join y in Funs . DB . SitePerson_Person on x . PersonId equals y . PersonId
where y . ProjectId = = this . ProjectId & & x . LimitDate < DateTime . Now
select x ) . Count ( ) . ToString ( ) ;
///产值
getOutputValues ( ) ;
///获取天气
getWeatherValues ( ) ;
}
}
#region 安 全 人 工 时
/// <summary>
/// 获取安全人工时
/// </summary>
private void getPersonWorkTime ( )
{
this . divSafeWorkTime . InnerHtml = "0000000000" ;
2023-03-16 19:30:28 +08:00
//var ProjectTotal = (from x in Funs.DB.HSSE_MonthReportItem
//join y in Funs.DB.HSSE_MonthReport on x.MonthReportId equals y.MonthReportId
//where y.ProjectId == this.ProjectId && "安全生产人工时数" == x.ReportItem
// select x.YearTotal).Sum();
decimal sumMonthCount = 0 ;
var getMonts = Funs . DB . SeDin_MonthReport . Where ( x = > x . ProjectId = = this . ProjectId ) . OrderBy ( x = > x . ReporMonth ) ;
var getmax = getMonts . FirstOrDefault ( ) ;
if ( getMonts . Count ( ) > 0 )
2022-03-15 17:36:38 +08:00
{
2023-03-16 19:30:28 +08:00
foreach ( var item in getMonts )
{
decimal monthCount = 0 ;
var getItem = Funs . DB . SeDin_MonthReport2 . FirstOrDefault ( x = > x . MonthReportId = = item . MonthReportId ) ;
if ( getItem ! = null & & getItem . MonthWorkTime . HasValue )
{
monthCount = getItem . MonthWorkTime ? ? 0 ;
sumMonthCount + = monthCount ;
if ( sumMonthCount < getItem . ProjectWorkTime )
{
sumMonthCount = getItem . ProjectWorkTime ? ? 0 ;
}
}
}
}
if ( sumMonthCount > 0 )
{
this . divSafeWorkTime . InnerHtml = sumMonthCount . ToString ( "0000000000" ) ; ;
2023-01-02 09:22:58 +08:00
}
else
{
this . divSafeWorkTime . InnerHtml = "0000000000" ;
2022-03-15 17:36:38 +08:00
}
2023-03-16 19:30:28 +08:00
if ( CurrUser . LoginProjectId = = "b11a16ea-148c-4bae-a5a1-32158b599482" )
{
this . divSafeWorkTime . InnerHtml = "0005371120" ;
}
2022-03-15 17:36:38 +08:00
///整改单
2022-12-20 09:32:32 +08:00
var getRectify = from x in Funs . DB . View_Hazard_HazardRegister
2023-03-16 19:30:28 +08:00
where x . ProjectId = = this . ProjectId & & x . States ! = Const . State_0 & & x . States ! = Const . State_R & & x . States ! = null
2022-12-20 09:32:32 +08:00
group x by x . States into g
select new { g . Key , Count = g . Count ( ) } ;
var allcout = getRectify . ToList ( ) ;
if ( allcout . Count > 0 )
2022-03-15 17:36:38 +08:00
{
2022-12-20 09:32:32 +08:00
int total = 0 ;
int finish = 0 ;
foreach ( var item in allcout )
{
total + = item . Count ;
if ( item . Key . ToString ( ) = = "3" )
{
finish + = item . Count ;
}
}
this . divAllRectify . InnerHtml = total . ToString ( ) ;
this . divUCRectify . InnerHtml = ( total - finish ) . ToString ( ) ;
this . divCRectify . InnerHtml = finish . ToString ( ) ;
2022-03-15 17:36:38 +08:00
}
2023-03-16 19:30:28 +08:00
2022-03-15 17:36:38 +08:00
}
#endregion
#region 劳 务 统 计
protected string WorkPostS ;
protected string InPostCounts ;
protected string InDutyCounts ;
/// <summary>
/// 劳务统计
/// </summary>
private void getSitePerson ( )
{
2023-01-30 14:14:20 +08:00
string sql = @"select c.ConstText,b.PostType,count( *) num from SitePerson_Person a left join Base_WorkPost b on a.WorkPostId=b.WorkPostId
2023-02-14 15:52:33 +08:00
LEFT JOIN Sys_Const AS c ON c.ConstValue = b.PostType and c.GroupId = 'PostType' where IsUsed =1 and InTime<='" + DateTime . Now . ToString ( "yyyy-MM-dd" ) + "' and (OutTime is null or OutTime>'" + DateTime . Now . ToString ( "yyyy-MM-dd" ) + @"' )
and a.ProjectId='" + this . ProjectId + @"' and a.AuditorDate is not null
2023-01-30 14:14:20 +08:00
group by c.ConstText,b.PostType " ;
List < SqlParameter > listStr = new List < SqlParameter > ( ) ;
SqlParameter [ ] parameter = listStr . ToArray ( ) ;
DataTable tb = SQLHelper . GetDataTableRunText ( sql , parameter ) ;
int allcount = 0 ;
int mcount = 0 ;
if ( tb ! = null )
2022-03-15 17:36:38 +08:00
{
2023-01-30 14:14:20 +08:00
foreach ( DataRow row in tb . Rows )
{
allcount + = int . Parse ( row [ "num" ] . ToString ( ) ) ;
if ( ! string . IsNullOrEmpty ( row [ "ConstText" ] . ToString ( ) ) & & row [ "ConstText" ] . ToString ( ) . Contains ( "管理" ) )
{
mcount + = int . Parse ( row [ "num" ] . ToString ( ) ) ;
}
}
2022-03-15 17:36:38 +08:00
}
2023-01-30 14:14:20 +08:00
this . divALLPerson . InnerHtml = allcount . ToString ( ) ;
this . divGLPerson . InnerHtml = mcount . ToString ( ) ;
2023-03-16 19:30:28 +08:00
this . divZYPerson . InnerHtml = ( allcount - mcount ) . ToString ( ) ;
if ( CurrUser . LoginProjectId = = "b11a16ea-148c-4bae-a5a1-32158b599482" )
{
this . divALLPerson . InnerHtml = "1301" ;
this . divGLPerson . InnerHtml = "172" ;
this . divZYPerson . InnerHtml = "1129" ;
}
2023-01-30 14:14:20 +08:00
var getallin = APIPageDataService . getPersonInOutNum ( this . ProjectId , DateTime . Now . AddDays ( - 1 ) ) ;
2022-03-15 17:36:38 +08:00
WorkPostS = "[]" ;
InPostCounts = "[]" ;
InDutyCounts = "[]" ;
List < int > InPostCountList = new List < int > ( ) ;
List < int > InDutyCountList = new List < int > ( ) ;
List < string > worksList = new List < string > ( ) ;
2022-12-20 09:32:32 +08:00
var getPersons = Funs . DB . SitePerson_Person . Where ( x = > x . ProjectId = = this . ProjectId & & x . IsUsed = = 1 & & x . InTime < = DateTime . Now
2023-01-30 14:14:20 +08:00
& & ! x . OutTime . HasValue ) ;
2022-03-15 17:36:38 +08:00
if ( getPersons . Count ( ) > 0 )
{
var getWorkIds = getPersons . Where ( x = > x . WorkPostId ! = null ) . Select ( x = > x . WorkPostId ) . Distinct ( ) ;
if ( getWorkIds . Count ( ) > 0 )
{
foreach ( var item in getWorkIds )
{
worksList . Add ( WorkPostService . getWorkPostNameById ( item ) ) ;
int isPost = getPersons . Where ( x = > x . WorkPostId = = item ) . Count ( ) ;
InPostCountList . Add ( isPost ) ;
int inDuty = 0 ;
if ( getallin . Count ( ) > 0 )
{
inDuty = getallin . Where ( x = > x . WorkPostId = = item ) . Count ( ) ;
}
InDutyCountList . Add ( inDuty ) ;
}
}
}
else
{
worksList . Add ( " " ) ;
InPostCountList . Add ( 0 ) ;
InDutyCountList . Add ( 0 ) ;
}
WorkPostS = JsonConvert . SerializeObject ( worksList ) ;
InPostCounts = JsonConvert . SerializeObject ( InPostCountList ) ;
InDutyCounts = JsonConvert . SerializeObject ( InDutyCountList ) ;
}
#endregion
#region 项 目 概 况
protected string divProjectNameTitle ;
protected string divProjectAddressTitle ;
protected string divProjectMoneyTitle ;
protected string divOwnUnitTitle ;
protected string divSGUnitTitle ;
protected string divJLUnitTitle ;
protected string divProjectImg ;
/// <summary>
///
/// </summary>
private void getProjectInfo ( )
{
divProjectNameTitle = "" ;
divProjectAddressTitle = "" ;
divProjectMoneyTitle = "" ;
divOwnUnitTitle = "" ;
divSGUnitTitle = "" ;
divJLUnitTitle = "" ;
divProjectImg = "../res/indexv1/image/index2/center-bg.png" ;
var project = ProjectService . GetProjectByProjectId ( this . ProjectId ) ;
if ( project ! = null )
{
this . divProjectName . InnerHtml = project . ShortName ;
divProjectNameTitle = project . ProjectName ;
if ( ! string . IsNullOrEmpty ( project . ProjectAddress ) )
{
this . divProjectAddress . InnerHtml = project . ProjectAddress . Length > 8 ? project . ProjectAddress . Substring ( 0 , 8 ) + "..." : project . ProjectAddress ;
divProjectAddressTitle = project . ProjectAddress ;
}
string unit_yz = ProjectService . getProjectUnitNameByUnitType ( project . ProjectId , Const . ProjectUnitType_4 ) ;
if ( ! string . IsNullOrEmpty ( unit_yz ) )
{
this . divOwnUnit . InnerHtml = unit_yz . Length > 8 ? unit_yz . Substring ( 0 , 8 ) + "..." : unit_yz ;
divOwnUnitTitle = unit_yz ;
}
string unit_JL = ProjectService . getProjectUnitNameByUnitType ( project . ProjectId , Const . ProjectUnitType_3 ) ;
if ( ! string . IsNullOrEmpty ( unit_JL ) )
{
this . divJLUnit . InnerHtml = unit_JL . Length > 8 ? unit_JL . Substring ( 0 , 8 ) + "..." : unit_JL ;
divJLUnitTitle = unit_JL ;
}
string unit_FB = ProjectService . getProjectUnitNameByUnitType ( project . ProjectId , Const . ProjectUnitType_2 ) ;
if ( ! string . IsNullOrEmpty ( unit_FB ) )
{
this . divSGUnit . InnerHtml = unit_FB . Length > 8 ? unit_FB . Substring ( 0 , 8 ) + "..." : unit_FB + "..." ;
}
var getSGName = from x in Funs . DB . Project_ProjectUnit
join y in Funs . DB . Base_Unit on x . UnitId equals y . UnitId
where x . ProjectId = = project . ProjectId & & x . UnitType = = Const . ProjectUnitType_2
select y . UnitName ;
foreach ( var item in getSGName )
{
divSGUnitTitle + = item + ", " ;
}
2023-03-16 19:30:28 +08:00
this . divProjectMoney . InnerHtml = divProjectMoneyTitle = project . ProjectMoney . ToString ( ) + "(万元)" ;
2022-03-15 17:36:38 +08:00
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 ( ) ;
}
if ( project . StartDate . HasValue )
{
int pdays = ( project . EndDate . Value - project . StartDate . Value ) . Days ;
if ( pdays > = 0 )
{
this . divProjectDays . InnerHtml = pdays . ToString ( ) ;
}
}
}
var getImag = Funs . DB . AttachFile . FirstOrDefault ( x = > x . ToKeyId = = project . ProjectId ) ;
if ( getImag ! = null & & ! string . IsNullOrEmpty ( getImag . AttachUrl ) )
{
string url = getImag . AttachUrl . Replace ( '\\' , '/' ) ;
string firtstUrl = Funs . GetStrListByStr ( url , ',' ) . FirstOrDefault ( ) ;
if ( ! string . IsNullOrEmpty ( firtstUrl ) )
{
string atturl = Funs . RootPath + firtstUrl . Replace ( ';' , ' ' ) . Trim ( ) ;
if ( File . Exists ( atturl ) )
{
divProjectImg = "../" + firtstUrl . Replace ( ';' , ' ' ) . Trim ( ) ;
}
}
}
}
}
#endregion
#region 获 取 质 量 问 题
///整改率
protected double CRectificationRate ;
///合格率
protected double CQualifiedRate ;
/// 焊接一次合格率
protected double FirstPassRate ;
/// <summary>
/// 获取质量问题
/// </summary>
private void getCQMSProblem ( )
2023-03-16 19:30:28 +08:00
{
CRectificationRate = 0 ;
CQualifiedRate = 0 ;
2022-03-15 17:36:38 +08:00
FirstPassRate = 0 ;
var getJointCheckDetail = from x in Funs . DB . Check_JointCheckDetail
join y in Funs . DB . Check_JointCheck on x . JointCheckId equals y . JointCheckId
where y . ProjectId = = this . ProjectId
select x ;
var getCheckControl = from x in Funs . DB . Check_CheckControl
where x . ProjectId = = this . ProjectId
select x ;
///问题总数
int AllCount = getJointCheckDetail . Count ( ) + getCheckControl . Count ( ) ;
this . divCQMSAllNum . InnerHtml = AllCount . ToString ( ) ;
2023-03-16 19:30:28 +08:00
//if (CurrUser.LoginProjectId == "b11a16ea-148c-4bae-a5a1-32158b599482")
//{
// this.divCQMSAllNum.InnerHtml = "78";
//}
2022-03-15 17:36:38 +08:00
if ( AllCount > 0 )
{
///问题完成数
var getJOk = getJointCheckDetail . Where ( x = > x . State = = "6" ) . Count ( ) ;
var getCOk = getCheckControl . Where ( x = > x . State = = "7" ) . Count ( ) ;
int CCount = getJOk + getCOk ;
this . divCQMSCAllNum . InnerHtml = CCount . ToString ( ) ;
this . divCQMSUCAllNum . InnerHtml = ( AllCount - CCount ) . ToString ( ) ;
if ( CCount > 0 )
{
CRectificationRate = Math . Round ( CCount * 1.0 / AllCount * 100 , 1 ) ;
}
}
2023-03-16 19:30:28 +08:00
//if (CurrUser.LoginProjectId == "b11a16ea-148c-4bae-a5a1-32158b599482")
//{
// CRectificationRate = 97.44;
//}
//if (CurrUser.LoginProjectId == "b11a16ea-148c-4bae-a5a1-32158b599482")
//{
// this.divCQMSCAllNum.InnerHtml = "76";
// this.divCQMSUCAllNum.InnerHtml = "2";
//}
2022-12-20 09:32:32 +08:00
//var getSpotCheckDetail = from x in Funs.DB.Check_SpotCheckDetail
// // join z in Funs.DB.Check_SpotCheck on x.SpotCheckCode equals z.SpotCheckCode
// join y in Funs.DB.WBS_ControlItemAndCycle on x.ControlItemAndCycleId equals y.ControlItemAndCycleId
// where y.ProjectId == this.ProjectId && x.IsOK != null
// && y.ControlPoint != "C" && y.ControlPoint != "CR"
// //&& z.ProjectId == this.ProjectId
// select x;
//int AllSpotCount = getSpotCheckDetail.Count();
//if (AllSpotCount > 0)
//{
// int okSpotCount = getSpotCheckDetail.Where(x => x.IsOK == true).Count();
// if (okSpotCount > 0)
// {
// CQualifiedRate = Math.Round(okSpotCount * 1.0 / AllSpotCount * 100, 1);
// }
//}
var inspectionManagements = from x in Funs . DB . View_CQMS_InspectionManagementDetail where x . ProjectId = = this . ProjectId select x ;
if ( inspectionManagements . Count ( ) > 0 )
2022-03-15 17:36:38 +08:00
{
2022-12-20 09:32:32 +08:00
int okInspectionManagements = inspectionManagements . Where ( x = > x . IsOnceQualified = = true ) . Count ( ) ;
if ( okInspectionManagements > 0 )
2022-03-15 17:36:38 +08:00
{
2022-12-20 09:32:32 +08:00
CQualifiedRate = Math . Round ( okInspectionManagements * 1.0 / inspectionManagements . Count ( ) * 100 , 1 ) ;
2022-03-15 17:36:38 +08:00
}
}
2023-03-16 19:30:28 +08:00
if ( CurrUser . LoginProjectId = = "b11a16ea-148c-4bae-a5a1-32158b599482" )
{
CQualifiedRate = 100 ;
}
2022-03-15 17:36:38 +08:00
///焊接一次合格率
var getJots = from x in Funs . DB . HJGL_Batch_NDEItem
join y in Funs . DB . HJGL_Batch_BatchTrustItem on x . TrustBatchItemId equals y . TrustBatchItemId
join z in Funs . DB . HJGL_Batch_PointBatchItem on y . PointBatchItemId equals z . PointBatchItemId
join a in Funs . DB . HJGL_Batch_NDE on x . NDEID equals a . NDEID
where z . PointDate ! = null & & z . PointState = = "1" & & y . RepairRecordId = = null
& & a . ProjectId = = this . ProjectId
select x ;
int allHJCount = getJots . Count ( ) ;
if ( allHJCount > 0 )
{
var getOk = getJots . Where ( x = > x . CheckResult = = "1" ) ;
int okHJCount = getOk . Count ( ) ;
if ( okHJCount > 0 )
{
FirstPassRate = Math . Round ( okHJCount * 1.0 / allHJCount * 100 , 1 ) ;
}
2023-03-16 19:30:28 +08:00
}
if ( CurrUser . LoginProjectId = = "b11a16ea-148c-4bae-a5a1-32158b599482" )
{
FirstPassRate = 97.63 ;
}
2022-03-15 17:36:38 +08:00
}
#endregion
#region 产 值 统 计
protected string SubUnitNames ;
protected string OutputValues ;
private void getOutputValues ( )
{
SubUnitNames = "[]" ;
OutputValues = "[]" ;
List < string > UnitNameList = new List < string > ( ) ;
List < int > OutputValueList = new List < int > ( ) ;
var getUnits = from x in Funs . DB . Project_ProjectUnit
join y in Funs . DB . Base_Unit on x . UnitId equals y . UnitId
where x . ProjectId = = this . ProjectId & & ( x . UnitType = = Const . ProjectUnitType_2 | | x . UnitType = = Const . ProjectUnitType_6 )
select new { x . UnitId , y . ShortUnitName } ;
if ( getUnits . Count ( ) > 0 )
{
Random ro = new Random ( ) ;
foreach ( var item in getUnits )
{
UnitNameList . Add ( item . ShortUnitName ? ? " " ) ;
int OutputValue = ro . Next ( 100 ) ; ////获取分包单位产值
OutputValueList . Add ( OutputValue ) ;
}
}
else
{
UnitNameList . Add ( " " ) ;
OutputValueList . Add ( 0 ) ;
}
SubUnitNames = JsonConvert . SerializeObject ( UnitNameList ) ;
OutputValues = JsonConvert . SerializeObject ( OutputValueList ) ;
2023-03-16 19:30:28 +08:00
if ( CurrUser . LoginProjectId = = "b11a16ea-148c-4bae-a5a1-32158b599482" )
{
SubUnitNames = "[\"达州\",\"正龙\",\"十三化建\",\"十四化建\",\"金鑫\",\"泰思特\",\"卓建达\",\"瑞达\",\"东方工建\",\"安徽天明\"]" ;
OutputValues = "[7151.84,7741.03,11814.82,11996.62,298.84,278.88,1473.14,2251.71,1511.37,0]" ;
}
2022-03-15 17:36:38 +08:00
}
#endregion
/// <summary>
/// 获取天气
/// </summary>
private void getWeatherValues ( )
{
var getW = WeatherService . GetWeather ( this . ProjectId ) ;
if ( getW ! = null )
{
this . divInfo . InnerHtml = getW . WeatherRef ;
this . divTEMP . InnerHtml = getW . AllTem ;
this . divHJ1 . InnerHtml = getW . CurrTem ;
this . divHJ3 . InnerHtml = getW . Humidity ;
this . divHJ5 . InnerHtml = getW . Power ;
this . divHJ4 . InnerHtml = getW . Aqi ;
this . divHJ6 . InnerHtml = getW . Aqi ;
}
}
}
}