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-10-24 10:48:05 +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 ;
if ( ProjectTotal . HasValue )
{
sumMonthCount = ProjectTotal . Value ;
}
//var getMonts = Funs.DB.SeDin_MonthReport.Where(x => x.ProjectId == this.ProjectId).OrderBy(x => x.ReporMonth);
//var getmax = getMonts.FirstOrDefault();
//if (getMonts.Count() > 0)
//{
// 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;
// }
// }
// }
//}
2023-09-04 19:38:45 +08:00
if ( sumMonthCount > 0 )
2023-03-16 19:30:28 +08:00
{
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-09-04 19:38:45 +08:00
{
2023-12-25 17:15:12 +08:00
//var getEmployInOutRecords = Funs.DB.T_d_EmployInOutRecord.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.RecordDate.Value == DateTime.Now.Date).ToList();
//string sql = @"select c.ConstText,b.PostType,count( *) num from SitePerson_Person a left join Base_WorkPost b on a.WorkPostId=b.WorkPostId
// 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
// group by c.ConstText,b.PostType ";
// List<SqlParameter> listStr = new List<SqlParameter>();
// SqlParameter[] parameter = listStr.ToArray();
// DataTable tb = SQLHelper.GetDataTableRunText(sql, parameter);
// int allcount = getEmployInOutRecords.Count();
// int mcount = 0;
// if (tb != null)
// {
// 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());
// }
// }
// }
// this.divALLPerson.InnerHtml = allcount.ToString();
//if (allcount > mcount)
//{
// this.divGLPerson.InnerHtml = mcount.ToString();
// this.divZYPerson.InnerHtml = (allcount - mcount).ToString();
//}
//else
//{
// this.divGLPerson.InnerHtml = allcount.ToString();
// this.divZYPerson.InnerHtml = "0";
//}
var ProjectTotal1 = ( from x in Funs . DB . HSSE_MonthReportItem
join y in Funs . DB . HSSE_MonthReport on x . MonthReportId equals y . MonthReportId
2024-01-03 14:12:27 +08:00
// where ("成达公司HSE管理人数" == x.ReportItem || "分包商HSE管理人数" == x.ReportItem) && y.Years == DateTime.Now.Year && y.ProjectId==CurrUser.LoginProjectId
where ( "成达公司现场人数" = = x . ReportItem ) & & y . Years = = DateTime . Now . Year & & y . ProjectId = = CurrUser . LoginProjectId
2023-12-25 17:15:12 +08:00
select x . YearTotal ) . Sum ( ) ;
2023-03-16 19:30:28 +08:00
2023-12-25 17:15:12 +08:00
2023-03-16 19:30:28 +08:00
2023-12-25 17:15:12 +08:00
var ProjectTotal2 = ( from x in Funs . DB . HSSE_MonthReportItem
join y in Funs . DB . HSSE_MonthReport on x . MonthReportId equals y . MonthReportId
2024-01-03 14:12:27 +08:00
// where ("成达公司现场人数" == x.ReportItem || "分包商现场人数" == x.ReportItem) && y.Years == DateTime.Now.Year && y.ProjectId == CurrUser.LoginProjectId
where ( "分包商现场人数" = = x . ReportItem ) & & y . Years = = DateTime . Now . Year & & y . ProjectId = = CurrUser . LoginProjectId
2023-12-25 17:15:12 +08:00
select x . YearTotal ) . Sum ( ) ;
if ( ProjectTotal1 . HasValue )
{
2024-01-03 14:12:27 +08:00
this . divGLPerson . InnerHtml = ProjectTotal1 . Value . ToString ( ) + "人月" ;
2023-12-25 17:15:12 +08:00
}
2024-01-03 14:12:27 +08:00
if ( ProjectTotal2 . HasValue & & ProjectTotal1 . HasValue )
2023-12-25 17:15:12 +08:00
{
2024-01-03 14:12:27 +08:00
this . divALLPerson . InnerHtml = ( ProjectTotal1 . Value + ProjectTotal2 . Value ) . ToString ( ) + "人月" ;
2023-12-25 17:15:12 +08:00
}
2024-01-03 14:12:27 +08:00
//if (ProjectTotal1.HasValue && ProjectTotal2.HasValue)
//{
// this.divZYPerson.InnerHtml = (ProjectTotal2.Value - ProjectTotal1.Value).ToString();
//}
//else
if ( ProjectTotal2 . HasValue )
2023-03-16 19:30:28 +08:00
{
2024-01-03 14:12:27 +08:00
this . divZYPerson . InnerHtml = ProjectTotal2 . Value . ToString ( ) + "人月" ;
2023-12-25 17:15:12 +08:00
2023-03-16 19:30:28 +08:00
}
2023-01-30 14:14:20 +08:00
2023-12-25 17:15:12 +08:00
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 ;
}
}
}
}