2022-03-15 17:36:38 +08:00
using BLL ;
using Newtonsoft.Json ;
using System ;
using System.Collections.Generic ;
2023-02-14 15:52:33 +08:00
using System.Data.SqlClient ;
using System.Data ;
2022-03-15 17:36:38 +08:00
using System.Linq ;
using System.Web.UI ;
namespace FineUIPro.Web.common
{
public partial class main : PageBase
{
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
////项目信息
var getProjectLists = getProjectInfo ( ) ;
////合同
getHTContract ( ) ;
///劳务统计
getSitePerson ( ) ;
/// 获取安全人工时
getPersonWorkTime ( ) ;
/// 获取质量问题
getCQMSProblem ( ) ;
/// 获取施工产值
getOutputValue ( getProjectLists ) ;
}
}
#region 项 目 信 息
protected string ProjectInfo ;
/// <summary>
/// 项目信息
/// </summary>
private List < Model . Base_Project > getProjectInfo ( )
{
ProjectInfo = "[]" ;
var getProjects = Funs . DB . Base_Project . Where ( x = > ( x . ProjectState = = Const . ProjectState_1 | | x . ProjectState = = null ) ) ;
this . divProjectNum . InnerHtml = getProjects . Count ( ) . ToString ( ) ;
var getProjectMap = getProjects . Where ( x = > x . MapCoordinates . Length > 0 ) ;
if ( getProjectMap . Count ( ) > 0 )
{
List < Model . SingleSerie > list = new List < Model . SingleSerie > ( ) ;
foreach ( var item in getProjectMap )
{
Model . SingleSerie newS = new Model . SingleSerie
{
name = "【项目名称】:" + item . ProjectName
//+ "</br> 【项目状态】:" + GetProjectState(item.ProjectId)
+ "</br>【开工时间】:" + string . Format ( "{0:yyyy-MM-dd}" , item . StartDate )
+ "</br>【竣工时间】:" + string . Format ( "{0:yyyy-MM-dd}" , item . EndDate )
+ "</br>【项目地址】:" + item . ProjectAddress ,
url = "indexProject.aspx?projectId=" + item . ProjectId ,
cityname = "中国"
} ;
var strMap = Funs . GetStrListByStr ( item . MapCoordinates , ',' ) ;
if ( strMap . Count > 1 )
{
newS . value = new [ ] { Funs . GetNewDecimalOrZero ( strMap [ 0 ] ) , Funs . GetNewDecimalOrZero ( strMap [ 1 ] ) } ;
list . Add ( newS ) ;
}
}
ProjectInfo = JsonConvert . SerializeObject ( list ) ;
}
return getProjects . ToList ( ) ;
}
#endregion
#region 劳 务 统 计
protected double OnDutyRate ;
/// <summary>
/// 劳务统计
/// </summary>
private void getSitePerson ( )
{
OnDutyRate = 0 ;
2023-02-14 15:52:33 +08:00
//int AllCount = 0;
//int MCount = 0;
2022-03-15 17:36:38 +08:00
var getallin = APIPageDataService . getPersonInOutAllNum ( DateTime . Now . AddDays ( - 1 ) ) ;
2023-02-14 15:52:33 +08:00
//AllCount = getallin.Count();
//if (AllCount > 0)
//{
// MCount = getallin.Where(x => x.PostType == Const.PostType_1).Count();
// /////管理人数
// this.divGLPerson.InnerHtml = MCount.ToString();
// /////作业人数
// this.divZYPerson.InnerHtml = (AllCount - MCount).ToString();
// int getPersonCount=Funs.DB.SitePerson_Person.Where(x => x.IsUsed == 1 && x.CardNo.Length > 1
// && x.InTime <= DateTime.Now && !x.OutTime.HasValue && x.AuditorDate.HasValue).Count();
// if (getPersonCount > 0)
// {
// OnDutyRate = Math.Round(AllCount * 1.0 / getPersonCount * 100, 1);
// }
//}
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 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 = 0 ;
int mcount = 0 ;
if ( tb ! = null )
2022-03-15 17:36:38 +08:00
{
2023-02-14 15:52:33 +08:00
foreach ( DataRow row in tb . Rows )
2022-03-15 17:36:38 +08:00
{
2023-02-14 15:52:33 +08:00
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-02-14 15:52:33 +08:00
//this.divALLPerson.InnerHtml = allcount.ToString();
this . divGLPerson . InnerHtml = mcount . ToString ( ) ;
this . divZYPerson . InnerHtml = ( allcount - mcount ) . ToString ( ) ;
OnDutyRate = Math . Round ( getallin . Count ( ) * 1.0 / allcount * 100 , 1 ) ;
2022-03-15 17:36:38 +08:00
}
#endregion
#region 安 全 人 工 时
/// <summary>
/// 获取安全人工时
/// </summary>
private void getPersonWorkTime ( )
{
2023-02-14 15:52:33 +08:00
//var getItem = (from x in Funs.DB.DigData_HSEDataCollectItem
// join y in Funs.DB.DigData_HSEDataCollect on x.HSEDataCollectId equals y.HSEDataCollectId
// where y.Year == DateTime.Now.Year && x.SortIndex == 7
// select x).FirstOrDefault();
//if (getItem != null)
//{
// int wHours = Funs.GetNewIntOrZero(getItem.Month1) + Funs.GetNewIntOrZero(getItem.Month2)
// + Funs.GetNewIntOrZero(getItem.Month3) + Funs.GetNewIntOrZero(getItem.Month4)
// + Funs.GetNewIntOrZero(getItem.Month5) + Funs.GetNewIntOrZero(getItem.Month6)
// + Funs.GetNewIntOrZero(getItem.Month7) + Funs.GetNewIntOrZero(getItem.Month8)
// + Funs.GetNewIntOrZero(getItem.Month9) + Funs.GetNewIntOrZero(getItem.Month10)
// + Funs.GetNewIntOrZero(getItem.Month11) + Funs.GetNewIntOrZero(getItem.Month12);
// if (wHours > 0)
// {
// this.divSafeWorkTime.InnerHtml = wHours.ToString("0000000000");
// }
//}
this . divSafeWorkTime . InnerHtml = "0000000000" ;
var ProjectTotal = ( from x in Funs . DB . HSSE_MonthReportItem
join y in Funs . DB . HSSE_MonthReport on x . MonthReportId equals y . MonthReportId
where "安全生产人工时数" = = x . ReportItem
select x . YearTotal ) . Sum ( ) ;
2022-03-15 17:36:38 +08:00
2023-02-14 15:52:33 +08:00
if ( ProjectTotal . HasValue )
{
this . divSafeWorkTime . InnerHtml = ProjectTotal . Value . ToString ( "0000000000" ) ; ;
}
else
{
this . divSafeWorkTime . InnerHtml = "0000000000" ;
}
2022-03-15 17:36:38 +08:00
///整改单
var getRectify = from x in Funs . DB . Check_RectifyNotices
where x . States ! = Const . State_0 & & x . States ! = null & & x . ProjectId ! = null
select x ;
int allcout = getRectify . Count ( ) ;
if ( allcout > 0 )
{
this . divAllRectify . InnerHtml = allcout . ToString ( ) ;
int ccount = getRectify . Where ( x = > x . States = = "5" ) . Count ( ) ;
this . divRectifyRate . InnerHtml = Math . Round ( ccount * 1.0 / allcout * 100 , 1 ) . ToString ( ) ;
}
}
#endregion
#region 获 取 合 同
private void getHTContract ( )
{
//var getC = (from x in Funs.DB.PHTGL_ContractReview
// join y in Funs.DB.PHTGL_Approve on x.ContractReviewId equals y.ContractId
// join z in Funs.DB.PHTGL_Contract on x.ContractId equals z.ContractId
// where x.State == 5 && Convert.ToDateTime(y.ApproveDate).Year == DateTime.Now.Year
// select new { x.ContractReviewId, z.ContractAmount }).Distinct();
this . divHTNum . InnerHtml = "0" ;
decimal d = 0 ;
//foreach (var item in getC)
//{
// d += item.ContractAmount ?? 0;
//}
this . divHTAmount . InnerHtml = Math . Round ( ( d / 100000000 ) , 4 ) . ToString ( ) ;
}
#endregion
#region 获 取 质 量 问 题
protected double CRectificationRate ;
protected double CQualifiedRate ;
/// <summary>
/// 获取质量问题
/// </summary>
private void getCQMSProblem ( )
{
///整改率
CRectificationRate = 0 ;
///合格率
CQualifiedRate = 0 ;
var getJointCheckDetail = from x in Funs . DB . Check_JointCheckDetail
select x ;
var getCheckControl = from x in Funs . DB . Check_CheckControl select x ;
///问题总数
int AllCount = getJointCheckDetail . Count ( ) + getCheckControl . Count ( ) ;
this . divCQMSAllNum . InnerHtml = AllCount . ToString ( ) ;
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 ;
if ( CCount > 0 )
{
CRectificationRate = Math . Round ( CCount * 1.0 / AllCount * 100 , 1 ) ;
}
}
var getSpotCheckDetail = from x in Funs . DB . Check_SpotCheckDetail
join y in Funs . DB . WBS_ControlItemAndCycle on x . ControlItemAndCycleId equals y . ControlItemAndCycleId
where y . ControlPoint ! = "C" & & y . ControlPoint ! = "CR" & & x . IsOK ! = null
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 ) ;
}
}
}
#endregion
/// <summary>
/// 进度
/// </summary>
protected string projectJDHtml ;
/// <summary>
/// 月施工计划产值
/// </summary>
protected string MonthPlanOutPutValue ;
/// <summary>
/// 月施工实际产值
/// </summary>
protected string MonthActualOutPutValue ;
/// <summary>
/// 获取当年施工产值
/// </summary>
private void getOutputValue ( List < Model . Base_Project > getProjectLists )
{
MonthPlanOutPutValue = "[0,0,0,0,0,0,0,0,0,0,0,0]" ;
MonthActualOutPutValue = "[0,0,0,0,0,0,0,0,0,0,0,0]" ;
projectJDHtml = "" ;
DateTime date = DateTime . Now . AddYears ( - 1 ) ;
var getOutputValue = Funs . DB . Sys_OutputValueProject . Where ( x = > x . Year > date . Year | | ( x . Year = = date . Year & & x . Month > = date . Month ) ) ;
if ( getOutputValue . Count ( ) > 0 )
{
this . divYearPlanOutPutValue . InnerHtml = ( getOutputValue . Sum ( x = > x . PlanOutPutValue ? ? 0 ) ) . ToString ( ) ;
this . divYearActualOutPutValue . InnerHtml = ( getOutputValue . Sum ( x = > x . ActualOutPutValue ? ? 0 ) ) . ToString ( ) ;
}
decimal [ ] monthValues = new decimal [ 12 ] ;
decimal [ ] monthValues2 = new decimal [ 12 ] ;
// var getOutYearValues = Funs.DB.Sys_OutputValueProject.Where(x => x.Year == DateTime.Now.Year);
if ( getOutputValue . Count ( ) > 0 )
{
for ( int i = 0 ; i < 12 ; i + + )
{
monthValues [ i ] = 0 ;
monthValues2 [ i ] = 0 ;
var getOutMI = getOutputValue . Where ( x = > x . Month = = i ) ;
if ( getOutMI . Count ( ) > 0 )
{
monthValues [ i ] = getOutMI . Sum ( x = > x . PlanOutPutValue ? ? 0 ) ;
monthValues2 [ i ] = getOutMI . Sum ( x = > x . ActualOutPutValue ? ? 0 ) ;
}
}
MonthPlanOutPutValue = JsonConvert . SerializeObject ( monthValues ) ;
MonthActualOutPutValue = JsonConvert . SerializeObject ( monthValues2 ) ;
if ( getProjectLists . Count ( ) > 0 )
{
foreach ( var item in getProjectLists )
{
string shortName = item . ShortName ;
string jdRate = "0%" ;
var getOutProjectV = getOutputValue . Where ( x = > x . ProjectId = = item . ProjectId ) ;
if ( getOutProjectV . Count ( ) > 0 )
{
decimal sumPlan = getOutProjectV . Sum ( x = > x . PlanOutPutValue ? ? 0 ) ;
if ( sumPlan > 0 )
{
decimal sumActual = getOutProjectV . Sum ( x = > x . ActualOutPutValue ? ? 0 ) ;
jdRate = Math . Round ( sumActual * 100 / sumPlan , 1 ) . ToString ( ) + "%" ;
}
}
projectJDHtml + = @"<div class='sd-rate-item'><span class='sd-rate-status'>【在建】</span><span class='sd-rate-name'>" + shortName + "</span><span class='sd-rate-bar' style='cursor:pointer' title='" + jdRate + "'><span class='sd-rate-bar-value' style='width: " + jdRate + ";'></span></span></div>" ;
}
}
}
else
{
if ( getProjectLists . Count ( ) > 0 )
{
foreach ( var item in getProjectLists )
{
string shortName = item . ShortName ;
string jdRate = "0%" ;
projectJDHtml + = @"<div class='sd-rate-item'><span class='sd-rate-status'>【在建】</span><span class='sd-rate-name'>" + shortName + "</span><span class='sd-rate-bar' style='cursor:pointer' title='" + jdRate + "'><span class='sd-rate-bar-value' style='width: " + jdRate + ";'></span></span></div>" ;
}
}
}
}
}
}