2023-05-11 09:58:37 +08:00
using System ;
using System.Collections.Generic ;
using System.Data ;
using System.Data.SqlClient ;
2023-05-17 17:35:00 +08:00
using System.IO ;
2023-05-11 09:58:37 +08:00
using System.Linq ;
using System.Text ;
2023-05-17 17:35:00 +08:00
using Aspose.Words ;
using Aspose.Words.Drawing ;
using Aspose.Words.Drawing.Charts ;
2023-05-19 17:00:09 +08:00
using Aspose.Words.Tables ;
2023-05-11 09:58:37 +08:00
using BLL ;
using AspNet = System . Web . UI . WebControls ;
namespace FineUIPro.Web.JDGL.CostAnalysis
{
public partial class JDReport : PageBase
{
#region 加 载 页 面
protected void Page_Load ( object sender , EventArgs e )
{
if ( ! IsPostBack )
{
this . txtMonths . Text = string . Format ( "{0:yyyy-MM}" , DateTime . Now ) ;
GetValue ( ) ;
}
}
private void SetEmpty ( )
{
this . SimpleForm1 . Title = string . Empty ;
}
#endregion
#region 获 取 记 录 值
private void GetValue ( )
{
Model . Project_Installation installation = BLL . Project_InstallationService . GetProjectInstallationByProjectId ( this . CurrUser . LoginProjectId ) ;
if ( installation ! = null & & ! string . IsNullOrEmpty ( this . txtMonths . Text . Trim ( ) ) )
{
string id = installation . InstallationId ;
string date = this . txtMonths . Text . Trim ( ) + "-01" ;
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 and t.Months<=@Months order by t.Months" ;
//string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01";
SqlParameter [ ] parameter = new SqlParameter [ ]
{
new SqlParameter ( "@Id" , id ) ,
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" ] = DBNull . Value ;
}
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" ] = DBNull . Value ;
}
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" ] = DBNull . Value ;
}
else
{
dt . Rows [ i ] [ "累计已完工作预算费用-BCWP" ] = bcwp / 10000 ;
}
}
else
{
dt . Rows [ i ] [ "累计已完工作预算费用-BCWP" ] = bcwp / 10000 ;
}
lastbcws = bcws ;
lastacwp = acwp ;
lastbcwp = bcwp ;
}
2023-05-22 19:40:52 +08:00
if ( dt . Rows . Count > 0 )
2023-05-13 14:38:09 +08:00
{
2023-05-22 19:40:52 +08:00
this . ChartEV . CreateMaryChart ( dt , 1220 , 420 , null ) ;
decimal BCWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "累计已完工作预算费用-BCWP" ] . ToString ( ) ) ;
decimal BCWS = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "累计计划工作预算费用-BCWS" ] . ToString ( ) ) ;
decimal ACWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "累计已完工作实际费用-ACWP" ] . ToString ( ) ) ;
decimal mBCWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "本月已完工作预算费用-BCWP" ] . ToString ( ) ) ;
decimal mBCWS = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "本月计划工作预算费用-BCWS" ] . ToString ( ) ) ;
decimal mACWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "本月已完工作实际费用-ACWP" ] . ToString ( ) ) ;
decimal CV = BCWP - ACWP ;
decimal SV = BCWP - BCWS ;
decimal CPI = 0 ;
if ( ACWP > 0 )
2023-05-17 17:35:00 +08:00
{
2023-05-22 19:40:52 +08:00
CPI = BCWP / ACWP ;
2023-05-17 17:35:00 +08:00
}
2023-05-22 19:40:52 +08:00
decimal SPI = 0 ;
if ( BCWS > 0 )
2023-05-17 17:35:00 +08:00
{
2023-05-22 19:40:52 +08:00
SPI = BCWP / BCWS ;
2023-05-17 17:35:00 +08:00
}
2023-05-22 19:40:52 +08:00
decimal mCV = mBCWP - mACWP ;
decimal mSV = mBCWP - mBCWS ;
decimal mCPI = 0 ;
if ( mACWP > 0 )
2023-05-17 17:35:00 +08:00
{
2023-05-22 19:40:52 +08:00
mCPI = mBCWP / mACWP ;
2023-05-17 17:35:00 +08:00
}
2023-05-22 19:40:52 +08:00
decimal mSPI = 0 ;
if ( mBCWS > 0 )
2023-05-17 17:35:00 +08:00
{
2023-05-22 19:40:52 +08:00
mSPI = mBCWP / mBCWS ;
2023-05-17 17:35:00 +08:00
}
2023-05-22 19:40:52 +08:00
//总体进度
DataTable table2 = new DataTable ( ) ;
table2 . Columns . Add ( new DataColumn ( "Id" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "BCWP" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "BCWS" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "ACWP" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "CV" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "SV" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "CPI" , typeof ( String ) ) ) ;
table2 . Columns . Add ( new DataColumn ( "SPI" , typeof ( String ) ) ) ;
DataRow row2 ;
row2 = table2 . NewRow ( ) ;
row2 [ 0 ] = SQLHelper . GetNewID ( ) ;
row2 [ 1 ] = BCWP . ToString ( "0.####" ) ;
row2 [ 2 ] = BCWS . ToString ( "0.####" ) ;
row2 [ 3 ] = ACWP . ToString ( "0.####" ) ;
row2 [ 4 ] = CV . ToString ( "0.####" ) ;
row2 [ 5 ] = SV . ToString ( "0.####" ) ;
row2 [ 6 ] = CPI . ToString ( "0.####" ) ;
row2 [ 7 ] = SPI . ToString ( "0.####" ) ;
table2 . Rows . Add ( row2 ) ;
this . Grid2 . DataSource = table2 ;
this . Grid2 . DataBind ( ) ;
//本月进度
table2 . Rows . Clear ( ) ;
row2 [ 0 ] = SQLHelper . GetNewID ( ) ;
row2 [ 1 ] = mBCWP . ToString ( "0.####" ) ;
row2 [ 2 ] = mBCWS . ToString ( "0.####" ) ;
row2 [ 3 ] = mACWP . ToString ( "0.####" ) ;
row2 [ 4 ] = mCV . ToString ( "0.####" ) ;
row2 [ 5 ] = mSV . ToString ( "0.####" ) ;
row2 [ 6 ] = mCPI . ToString ( "0.####" ) ;
row2 [ 7 ] = mSPI . ToString ( "0.####" ) ;
table2 . Rows . Add ( row2 ) ;
this . Grid3 . DataSource = table2 ;
this . Grid3 . DataBind ( ) ;
//按专业统计
DataTable table4 = new DataTable ( ) ;
table4 . Columns . Add ( new DataColumn ( "Id" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "SupId" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "Name" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mBCWP" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mBCWS" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mACWP" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mCV" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mSV" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mCPI" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "mSPI" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "BCWP" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "BCWS" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "ACWP" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "CV" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "SV" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "CPI" , typeof ( String ) ) ) ;
table4 . Columns . Add ( new DataColumn ( "SPI" , typeof ( String ) ) ) ;
Model . SGGLDB db = Funs . DB ;
2023-06-06 09:54:46 +08:00
var cnProfessions = from x in db . WBS_CnProfession where x . ProjectId = = this . CurrUser . LoginProjectId & & x . IsApprove = = true select x ;
var installationIds = cnProfessions . Select ( x = > x . InstallationId ) . Distinct ( ) . ToList ( ) ;
var installations = from x in db . Project_Installation where x . ProjectId = = this . CurrUser . LoginProjectId & & installationIds . Contains ( x . InstallationId ) select x ;
var unitProjects = from x in db . Wbs_UnitProject where x . ProjectId = = this . CurrUser . LoginProjectId & & x . IsApprove = = true select x ;
2023-05-22 19:40:52 +08:00
var details = from x in db . View_WBS_CostControlParentDetail
where x . Months = = Funs . GetNewDateTime ( date )
select x ;
DataRow row4 ;
decimal cnACWP , cnBCWP , cnBCWS , cnmACWP , cnmBCWP , cnmBCWS , cnCV , cnSV , cnCPI , cnSPI , cnmCV , cnmSV , cnmCPI , cnmSPI ,
2023-06-06 09:54:46 +08:00
unACWP , unBCWP , unBCWS , unmACWP , unmBCWP , unmBCWS , unCV , unSV , unCPI , unSPI , unmCV , unmSV , unmCPI , unmSPI ,
inACWP , inBCWP , inBCWS , inmACWP , inmBCWP , inmBCWS , inCV , inSV , inCPI , inSPI , inmCV , inmSV , inmCPI , inmSPI ;
int a = 1 , b = 1 , c = 1 ;
foreach ( var item in installations )
2023-05-17 17:35:00 +08:00
{
2023-06-06 09:54:46 +08:00
inACWP = 0 ;
inBCWP = 0 ;
inBCWS = 0 ;
inmACWP = 0 ;
inmBCWP = 0 ;
inmBCWS = 0 ;
inCV = 0 ;
inSV = 0 ;
inCPI = 0 ;
inSPI = 0 ;
inmCV = 0 ;
inmSV = 0 ;
inmCPI = 0 ;
inmSPI = 0 ;
2023-05-17 17:35:00 +08:00
row4 = table4 . NewRow ( ) ;
2023-06-06 09:54:46 +08:00
row4 [ 0 ] = c . ToString ( ) ;
2023-05-22 19:40:52 +08:00
row4 [ 1 ] = "0" ;
2023-06-06 09:54:46 +08:00
row4 [ 2 ] = item . InstallationName ;
var inDetails = ( from x in details
where x . ParentId = = item . InstallationId
2023-05-22 19:40:52 +08:00
select x ) . ToList ( ) ;
2023-06-06 09:54:46 +08:00
inmACWP = Funs . GetNewDecimalOrZero ( inDetails . Select ( x = > x . ThisRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
inmBCWP = Funs . GetNewDecimalOrZero ( inDetails . Select ( x = > x . ThisPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
inmBCWS = Funs . GetNewDecimalOrZero ( inDetails . Select ( x = > x . ThisPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
inmCV = inmBCWP - inmACWP ;
inmSV = inmBCWP - inmBCWS ;
if ( inmACWP > 0 )
2023-05-17 17:35:00 +08:00
{
2023-06-06 09:54:46 +08:00
inmCPI = inmBCWP / inmACWP ;
2023-05-17 17:35:00 +08:00
}
2023-06-06 09:54:46 +08:00
if ( inmBCWS > 0 )
2023-05-17 17:35:00 +08:00
{
2023-06-06 09:54:46 +08:00
inmSPI = inmBCWP / inmBCWS ;
2023-05-17 17:35:00 +08:00
}
2023-06-06 09:54:46 +08:00
row4 [ 3 ] = inmBCWP . ToString ( "0.####" ) ;
row4 [ 4 ] = inmBCWS . ToString ( "0.####" ) ;
row4 [ 5 ] = inmACWP . ToString ( "0.####" ) ;
row4 [ 6 ] = inmCV . ToString ( "0.####" ) ;
row4 [ 7 ] = inmSV . ToString ( "0.####" ) ;
row4 [ 8 ] = inmCPI . ToString ( "0.####" ) ;
row4 [ 9 ] = inmSPI . ToString ( "0.####" ) ;
inACWP = Funs . GetNewDecimalOrZero ( inDetails . Select ( x = > x . TotalRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
inBCWP = Funs . GetNewDecimalOrZero ( inDetails . Select ( x = > x . TotalPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
inBCWS = Funs . GetNewDecimalOrZero ( inDetails . Select ( x = > x . TotalPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
inCV = inBCWP - inACWP ;
inSV = inBCWP - inBCWS ;
if ( inACWP > 0 )
2023-05-17 17:35:00 +08:00
{
2023-06-06 09:54:46 +08:00
inCPI = inBCWP / inACWP ;
2023-05-17 17:35:00 +08:00
}
2023-06-06 09:54:46 +08:00
if ( inBCWS > 0 )
2023-05-17 17:35:00 +08:00
{
2023-06-06 09:54:46 +08:00
inSPI = inBCWP / inBCWS ;
2023-05-17 17:35:00 +08:00
}
2023-06-06 09:54:46 +08:00
row4 [ 10 ] = inBCWP . ToString ( "0.####" ) ;
row4 [ 11 ] = inBCWS . ToString ( "0.####" ) ;
row4 [ 12 ] = inACWP . ToString ( "0.####" ) ;
row4 [ 13 ] = inCV . ToString ( "0.####" ) ;
row4 [ 14 ] = inSV . ToString ( "0.####" ) ;
row4 [ 15 ] = inCPI . ToString ( "0.####" ) ;
row4 [ 16 ] = inSPI . ToString ( "0.####" ) ;
2023-05-17 17:35:00 +08:00
table4 . Rows . Add ( row4 ) ;
2023-06-06 09:54:46 +08:00
a = 1 ;
var icnProfessions = cnProfessions . Where ( x = > x . InstallationId = = item . InstallationId ) ;
foreach ( var cn in icnProfessions )
2023-05-22 19:40:52 +08:00
{
2023-06-06 09:54:46 +08:00
cnACWP = 0 ;
cnBCWP = 0 ;
cnBCWS = 0 ;
cnmACWP = 0 ;
cnmBCWP = 0 ;
cnmBCWS = 0 ;
cnCV = 0 ;
cnSV = 0 ;
cnCPI = 0 ;
cnSPI = 0 ;
cnmCV = 0 ;
cnmSV = 0 ;
cnmCPI = 0 ;
cnmSPI = 0 ;
2023-05-22 19:40:52 +08:00
row4 = table4 . NewRow ( ) ;
2023-06-06 09:54:46 +08:00
row4 [ 0 ] = c . ToString ( ) + "." + a . ToString ( ) ;
row4 [ 1 ] = c ;
row4 [ 2 ] = cn . CnProfessionName ;
var cnDetails = ( from x in details
where x . ParentId = = cn . CnProfessionId
select x ) . ToList ( ) ;
cnmACWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmBCWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmBCWS = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmCV = cnmBCWP - cnmACWP ;
cnmSV = cnmBCWP - cnmBCWS ;
if ( cnmACWP > 0 )
2023-05-22 19:40:52 +08:00
{
2023-06-06 09:54:46 +08:00
cnmCPI = cnmBCWP / cnmACWP ;
2023-05-22 19:40:52 +08:00
}
2023-06-06 09:54:46 +08:00
if ( cnmBCWS > 0 )
2023-05-22 19:40:52 +08:00
{
2023-06-06 09:54:46 +08:00
cnmSPI = cnmBCWP / cnmBCWS ;
2023-05-22 19:40:52 +08:00
}
2023-06-06 09:54:46 +08:00
row4 [ 3 ] = cnmBCWP . ToString ( "0.####" ) ;
row4 [ 4 ] = cnmBCWS . ToString ( "0.####" ) ;
row4 [ 5 ] = cnmACWP . ToString ( "0.####" ) ;
row4 [ 6 ] = cnmCV . ToString ( "0.####" ) ;
row4 [ 7 ] = cnmSV . ToString ( "0.####" ) ;
row4 [ 8 ] = cnmCPI . ToString ( "0.####" ) ;
row4 [ 9 ] = cnmSPI . ToString ( "0.####" ) ;
cnACWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . TotalRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnBCWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . TotalPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnBCWS = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . TotalPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnCV = cnBCWP - cnACWP ;
cnSV = cnBCWP - cnBCWS ;
if ( cnACWP > 0 )
2023-05-22 19:40:52 +08:00
{
2023-06-06 09:54:46 +08:00
cnCPI = cnBCWP / cnACWP ;
2023-05-22 19:40:52 +08:00
}
2023-06-06 09:54:46 +08:00
if ( cnBCWS > 0 )
2023-05-22 19:40:52 +08:00
{
2023-06-06 09:54:46 +08:00
cnSPI = cnBCWP / cnBCWS ;
2023-05-22 19:40:52 +08:00
}
2023-06-06 09:54:46 +08:00
row4 [ 10 ] = cnBCWP . ToString ( "0.####" ) ;
row4 [ 11 ] = cnBCWS . ToString ( "0.####" ) ;
row4 [ 12 ] = cnACWP . ToString ( "0.####" ) ;
row4 [ 13 ] = cnCV . ToString ( "0.####" ) ;
row4 [ 14 ] = cnSV . ToString ( "0.####" ) ;
row4 [ 15 ] = cnCPI . ToString ( "0.####" ) ;
row4 [ 16 ] = cnSPI . ToString ( "0.####" ) ;
2023-05-22 19:40:52 +08:00
table4 . Rows . Add ( row4 ) ;
2023-06-06 09:54:46 +08:00
b = 1 ;
var unLists = from x in unitProjects where x . CnProfessionId = = cn . CnProfessionId orderby x . SortIndex select x ;
foreach ( var un in unLists )
{
unACWP = 0 ;
unBCWP = 0 ;
unBCWS = 0 ;
unmACWP = 0 ;
unmBCWP = 0 ;
unmBCWS = 0 ;
unCV = 0 ;
unSV = 0 ;
unCPI = 0 ;
unSPI = 0 ;
unmCV = 0 ;
unmSV = 0 ;
unmCPI = 0 ;
unmSPI = 0 ;
row4 = table4 . NewRow ( ) ;
row4 [ 0 ] = c . ToString ( ) + "." + a . ToString ( ) + "." + b . ToString ( ) ;
row4 [ 1 ] = c . ToString ( ) + "." + a . ToString ( ) ;
row4 [ 2 ] = un . UnitProjectName ;
var unDetails = from x in details
where x . ParentId = = un . UnitProjectId
select x ;
unmACWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . ThisRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unmBCWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . ThisPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unmBCWS = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . ThisPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
unmCV = unmBCWP - unmACWP ;
unmSV = unmBCWP - unmBCWS ;
if ( unmACWP > 0 )
{
unmCPI = unmBCWP / unmACWP ;
}
if ( unmBCWS > 0 )
{
unmSPI = unmBCWP / unmBCWS ;
}
row4 [ 3 ] = unmBCWP . ToString ( "0.####" ) ;
row4 [ 4 ] = unmBCWS . ToString ( "0.####" ) ;
row4 [ 5 ] = unmACWP . ToString ( "0.####" ) ;
row4 [ 6 ] = unmCV . ToString ( "0.####" ) ;
row4 [ 7 ] = unmSV . ToString ( "0.####" ) ;
row4 [ 8 ] = unmCPI . ToString ( "0.####" ) ;
row4 [ 9 ] = unmSPI . ToString ( "0.####" ) ;
unACWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . TotalRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unBCWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . TotalPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unBCWS = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . TotalPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
unCV = unBCWP - unACWP ;
unSV = unBCWP - unBCWS ;
if ( unACWP > 0 )
{
unCPI = unBCWP / unACWP ;
}
if ( unBCWS > 0 )
{
unSPI = unBCWP / unBCWS ;
}
row4 [ 10 ] = unBCWP . ToString ( "0.####" ) ;
row4 [ 11 ] = unBCWS . ToString ( "0.####" ) ;
row4 [ 12 ] = unACWP . ToString ( "0.####" ) ;
row4 [ 13 ] = unCV . ToString ( "0.####" ) ;
row4 [ 14 ] = unSV . ToString ( "0.####" ) ;
row4 [ 15 ] = unCPI . ToString ( "0.####" ) ;
row4 [ 16 ] = unSPI . ToString ( "0.####" ) ;
table4 . Rows . Add ( row4 ) ;
b + + ;
}
a + + ;
2023-05-22 19:40:52 +08:00
}
2023-06-06 09:54:46 +08:00
c + + ;
2023-05-22 19:40:52 +08:00
}
if ( table4 . Rows . Count > 0 )
{
this . Grid4 . DataSource = table4 ;
this . Grid4 . DataBind ( ) ;
2023-05-17 17:35:00 +08:00
}
2023-05-26 10:24:02 +08:00
2023-06-06 09:54:46 +08:00
//按设备材料分类统计
2023-05-26 10:24:02 +08:00
DataTable table5 = new DataTable ( ) ;
table5 . Columns . Add ( new DataColumn ( "Id" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "Name" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "Unit" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "TotalNum" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "mThisNum" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "tThisNum" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "mRate" , typeof ( String ) ) ) ;
table5 . Columns . Add ( new DataColumn ( "tRate" , typeof ( String ) ) ) ;
DataRow row5 ;
var costControls = from x in db . WBS_CostControl where x . ProjectId = = this . CurrUser . LoginProjectId select x ;
var costControlDetails = from x in db . WBS_CostControlDetail
join y in db . WBS_CostControl on x . CostControlId equals y . CostControlId
join z in db . WBS_EquipmentMaterialType on y . EquipmentMaterialTypeId equals z . EquipmentMaterialTypeId
where x . Months < = Funs . GetNewDateTime ( date ) & & y . ProjectId = = this . CurrUser . LoginProjectId
orderby x . Months descending
select new
{
x . CostControlDetailId ,
y . EquipmentMaterialTypeId ,
z . EquipmentMaterialTypeName ,
x . Months ,
x . ThisNum ,
} ;
var equipmentMaterialTypes = from x in db . WBS_EquipmentMaterialType orderby x . EquipmentMaterialTypeCode select x ;
if ( equipmentMaterialTypes . Count ( ) > 0 )
{
foreach ( var equipmentMaterialType in equipmentMaterialTypes )
{
row5 = table5 . NewRow ( ) ;
row5 [ 0 ] = equipmentMaterialType . EquipmentMaterialTypeId ;
row5 [ 1 ] = equipmentMaterialType . EquipmentMaterialTypeName ;
var list = costControls . Where ( x = > x . EquipmentMaterialTypeId = = equipmentMaterialType . EquipmentMaterialTypeId ) ;
if ( list . Count ( ) > 0 )
{
row5 [ 2 ] = list . First ( ) . Unit ;
}
row5 [ 3 ] = list . ToList ( ) . Sum ( x = > x . TotalNum ? ? 0 ) ;
var list2 = costControlDetails . Where ( x = > x . EquipmentMaterialTypeId = = equipmentMaterialType . EquipmentMaterialTypeId & & x . Months = = Funs . GetNewDateTime ( date ) ) ;
row5 [ 4 ] = list2 . ToList ( ) . Sum ( x = > x . ThisNum ? ? 0 ) ;
var list3 = costControlDetails . Where ( x = > x . EquipmentMaterialTypeId = = equipmentMaterialType . EquipmentMaterialTypeId ) ;
row5 [ 5 ] = list3 . ToList ( ) . Sum ( x = > x . ThisNum ? ? 0 ) ;
if ( row5 [ 3 ] . ToString ( ) ! = "0" & & row5 [ 4 ] . ToString ( ) ! = "0" )
{
row5 [ 6 ] = ( Funs . GetNewDecimalOrZero ( row5 [ 4 ] . ToString ( ) ) / Funs . GetNewDecimalOrZero ( row5 [ 3 ] . ToString ( ) ) * 100 ) . ToString ( "0.##" ) + "%" ;
}
else
{
row5 [ 6 ] = "/" ;
}
if ( row5 [ 3 ] . ToString ( ) ! = "0" & & row5 [ 5 ] . ToString ( ) ! = "0" )
{
row5 [ 7 ] = ( Funs . GetNewDecimalOrZero ( row5 [ 5 ] . ToString ( ) ) / Funs . GetNewDecimalOrZero ( row5 [ 3 ] . ToString ( ) ) * 100 ) . ToString ( "0.##" ) + "%" ;
}
else
{
row5 [ 7 ] = "/" ;
}
table5 . Rows . Add ( row5 ) ;
}
if ( table5 . Rows . Count > 0 )
{
this . Grid5 . DataSource = table5 ;
this . Grid5 . DataBind ( ) ;
}
}
2023-05-17 17:35:00 +08:00
}
2023-05-11 09:58:37 +08:00
}
}
#endregion
#region 查 询
/// <summary>
/// 查询按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSearch_Click ( object sender , EventArgs e )
{
GetValue ( ) ;
}
#endregion
#region 关 闭 弹 出 窗 口
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close ( object sender , WindowCloseEventArgs e )
{
2023-05-17 17:35:00 +08:00
if ( ! string . IsNullOrEmpty ( this . txtMonths . Text . Trim ( ) ) )
{
GetValue ( ) ;
}
else
{
ShowNotify ( "请选择月份" , MessageBoxIcon . Warning ) ;
}
2023-05-11 09:58:37 +08:00
}
#endregion
#region 导 出 按 钮
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click ( object sender , EventArgs e )
{
2023-05-17 17:35:00 +08:00
if ( ! string . IsNullOrEmpty ( this . txtMonths . Text . Trim ( ) ) )
{
2023-05-19 17:00:09 +08:00
Model . Project_Installation installation = BLL . Project_InstallationService . GetProjectInstallationByProjectId ( this . CurrUser . LoginProjectId ) ;
if ( installation ! = null & & ! string . IsNullOrEmpty ( this . txtMonths . Text . Trim ( ) ) )
2023-05-17 17:35:00 +08:00
{
2023-05-19 17:00:09 +08:00
string id = installation . InstallationId ;
string date = this . txtMonths . Text . Trim ( ) + "-01" ;
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 and t.Months<=@Months order by t.Months" ;
//string date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-01";
SqlParameter [ ] parameter = new SqlParameter [ ]
{
new SqlParameter ( "@Id" , id ) ,
new SqlParameter ( "@Months" , date ) ,
} ;
DataTable dt = SQLHelper . GetDataTableRunText ( strSql , parameter ) ;
2023-05-22 19:40:52 +08:00
if ( dt . Rows . Count > 0 )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
string rootPath = Server . MapPath ( "~/" ) ;
string initTemplatePath = string . Empty ;
string uploadfilepath = string . Empty ;
string newUrl = string . Empty ;
string filePath = string . Empty ;
Model . SGGLDB db = Funs . DB ;
initTemplatePath = Const . JDReportTemplateUrl ;
uploadfilepath = rootPath + initTemplatePath ;
newUrl = uploadfilepath . Replace ( ".docx" , "(" + this . txtMonths . Text . Trim ( ) + ")" + ".docx" ) ;
if ( File . Exists ( newUrl ) )
{
File . Delete ( newUrl ) ;
}
File . Copy ( uploadfilepath , newUrl ) ;
//更新书签内容
Document doc = new Aspose . Words . Document ( newUrl ) ;
DocumentBuilder builder = new DocumentBuilder ( doc ) ;
string projectName = string . Empty ;
var project = ProjectService . GetProjectByProjectId ( this . CurrUser . LoginProjectId ) ;
if ( project ! = null )
{
projectName = project . ProjectName ;
}
Bookmark bookmarkProjectName = doc . Range . Bookmarks [ "ProjectName" ] ;
if ( bookmarkProjectName ! = null )
{
bookmarkProjectName . Text = projectName ;
}
Bookmark bookmarkMonths = doc . Range . Bookmarks [ "Months" ] ;
if ( bookmarkMonths ! = null )
{
string [ ] strs = this . txtMonths . Text . Trim ( ) . Split ( '-' ) ;
bookmarkMonths . Text = strs [ 0 ] + "年" + strs [ 1 ] + "月" ;
}
2023-05-19 17:00:09 +08:00
2023-05-22 19:40:52 +08:00
//插入图表
builder . MoveToBookmark ( "Chart" ) ;
Shape shape = builder . InsertChart ( ChartType . Line , 432 , 252 ) ;
Chart chart = shape . Chart ;
chart . Title . Text = "赢得值曲线" ;
ChartSeriesCollection seriesColl = chart . Series ;
seriesColl . Clear ( ) ;
2023-05-19 17:00:09 +08:00
2023-05-22 19:40:52 +08:00
string [ ] categories = new string [ dt . Rows . Count ] ;
double [ ] d1 = new double [ dt . Rows . Count ] ;
double [ ] d2 = new double [ dt . Rows . Count ] ;
double [ ] d3 = new double [ dt . Rows . Count ] ;
for ( int i = 0 ; i < dt . Rows . Count ; i + + )
{
categories [ i ] = dt . Rows [ i ] [ "月份" ] . ToString ( ) ;
d1 [ i ] = Convert . ToDouble ( dt . Rows [ i ] [ "累计已完工作实际费用-ACWP" ] . ToString ( ) ) / 10000 ;
d2 [ i ] = Convert . ToDouble ( dt . Rows [ i ] [ "累计已完工作预算费用-BCWP" ] . ToString ( ) ) / 10000 ;
d3 [ i ] = Convert . ToDouble ( dt . Rows [ i ] [ "累计计划工作预算费用-BCWS" ] . ToString ( ) ) / 10000 ;
}
seriesColl . Add ( "累计已完工作实际费用-ACWP" , categories , d1 ) ;
seriesColl . Add ( "累计已完工作预算费用-BCWP" , categories , d2 ) ;
seriesColl . Add ( "累计计划工作预算费用-BCWS" , categories , d3 ) ;
2023-05-19 17:00:09 +08:00
2023-05-22 19:40:52 +08:00
decimal BCWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "累计已完工作预算费用-BCWP" ] . ToString ( ) ) ;
decimal BCWS = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "累计计划工作预算费用-BCWS" ] . ToString ( ) ) ;
decimal ACWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "累计已完工作实际费用-ACWP" ] . ToString ( ) ) ;
decimal mBCWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "本月已完工作预算费用-BCWP" ] . ToString ( ) ) ;
decimal mBCWS = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "本月计划工作预算费用-BCWS" ] . ToString ( ) ) ;
decimal mACWP = Funs . GetNewDecimalOrZero ( dt . Rows [ dt . Rows . Count - 1 ] [ "本月已完工作实际费用-ACWP" ] . ToString ( ) ) ;
decimal CV = BCWP / 10000 - ACWP / 10000 ;
decimal SV = BCWP / 10000 - BCWS / 10000 ;
decimal CPI = 0 ;
if ( ACWP > 0 )
{
CPI = BCWP / ACWP ;
}
decimal SPI = 0 ;
if ( BCWS > 0 )
{
SPI = BCWP / BCWS ;
}
decimal mCV = mBCWP / 10000 - mACWP / 10000 ;
decimal mSV = mBCWP / 10000 - mBCWS / 10000 ;
decimal mCPI = 0 ;
if ( mACWP > 0 )
{
mCPI = mBCWP / mACWP ;
}
decimal mSPI = 0 ;
if ( mBCWS > 0 )
{
mSPI = mBCWP / mBCWS ;
}
#region 项 目 总 体 施 工 进 度 情 况
//项目总体施工进度情况
builder . MoveToBookmark ( "Form2" ) ;
builder . StartTable ( ) ;
builder . CellFormat . Borders . LineStyle = LineStyle . Single ;
builder . CellFormat . Borders . Color = System . Drawing . Color . Black ;
builder . Bold = false ;
builder . RowFormat . Height = 20 ;
builder . Font . Size = 10 ;
2023-05-19 17:00:09 +08:00
2023-05-22 19:40:52 +08:00
//序号
//builder.InsertCell();
//builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
//builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First;
//builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐
//builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
//builder.CellFormat.Width = 30;
//builder.Write("序号");
//赢得值参数(单位:万元)
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 240 ;
builder . Write ( "赢得值参数(单位:万元)" ) ;
//赢得值评价指标
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 320 ;
builder . Write ( "赢得值评价指标" ) ;
builder . EndRow ( ) ;
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "BCWP" ) ;
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "BCWS" ) ;
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "ACWP" ) ;
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "CV" ) ;
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "SV" ) ;
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "CPI" ) ;
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "SPI" ) ;
builder . EndRow ( ) ;
////序号
//builder.InsertCell();
//builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
//builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First;
//builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐
//builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
//builder.CellFormat.Width = 30;
//builder.Write(h.ToString());
//问题内容
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( ( BCWP / 10000 ) . ToString ( "0.####" ) ) ;
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( ( BCWS / 10000 ) . ToString ( "0.####" ) ) ;
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( ( ACWP / 10000 ) . ToString ( "0.####" ) ) ;
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( CV . ToString ( "0.####" ) ) ;
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( SV . ToString ( "0.####" ) ) ;
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( CPI . ToString ( "0.####" ) ) ;
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( SPI . ToString ( "0.####" ) ) ;
builder . EndRow ( ) ;
#endregion
#region 本 月 施 工 进 度 情 况
//本月施工进度情况
builder . MoveToBookmark ( "Form3" ) ;
builder . StartTable ( ) ;
builder . CellFormat . Borders . LineStyle = LineStyle . Single ;
builder . CellFormat . Borders . Color = System . Drawing . Color . Black ;
builder . Bold = false ;
builder . RowFormat . Height = 20 ;
builder . Font . Size = 10 ;
//序号
//builder.InsertCell();
//builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
//builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.First;
//builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐
//builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
//builder.CellFormat.Width = 30;
//builder.Write("序号");
//赢得值参数(单位:万元)
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 240 ;
builder . Write ( "赢得值参数(单位:万元)" ) ;
//赢得值评价指标
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 320 ;
builder . Write ( "赢得值评价指标" ) ;
builder . EndRow ( ) ;
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "BCWP" ) ;
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "BCWS" ) ;
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "ACWP" ) ;
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "CV" ) ;
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "SV" ) ;
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "CPI" ) ;
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( "SPI" ) ;
builder . EndRow ( ) ;
//问题内容
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( ( mBCWP / 10000 ) . ToString ( "0.####" ) ) ;
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( ( mBCWS / 10000 ) . ToString ( "0.####" ) ) ;
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( ( mACWP / 10000 ) . ToString ( "0.####" ) ) ;
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( mCV . ToString ( "0.####" ) ) ;
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( mSV . ToString ( "0.####" ) ) ;
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( mCPI . ToString ( "0.####" ) ) ;
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 80 ;
builder . Write ( mSPI . ToString ( "0.####" ) ) ;
builder . EndRow ( ) ;
#endregion
#region 专 业 和 分 部 工 程 工 程 施 工 进 度 情 况
//专业和分部工程工程施工进度情况
builder . MoveToBookmark ( "Form4" ) ;
builder . StartTable ( ) ;
builder . CellFormat . Borders . LineStyle = LineStyle . Single ;
builder . CellFormat . Borders . Color = System . Drawing . Color . Black ;
builder . Bold = false ;
builder . RowFormat . Height = 20 ;
builder . Font . Size = 10 ;
2023-05-19 17:00:09 +08:00
//序号
builder . InsertCell ( ) ;
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . First ;
2023-05-19 17:00:09 +08:00
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "序号" ) ;
2023-05-19 17:00:09 +08:00
//专业
builder . InsertCell ( ) ;
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . First ;
2023-05-19 17:00:09 +08:00
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "专业" ) ;
2023-05-19 17:00:09 +08:00
//分部工程
builder . InsertCell ( ) ;
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
builder . Write ( "分部工程" ) ;
//本月赢得值参数(单位:万元)
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 150 ;
builder . Write ( "本月赢得值参数(单位:万元)" ) ;
//本月赢得值评价指标
builder . InsertCell ( ) ;
2023-05-19 17:00:09 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
2023-05-22 19:40:52 +08:00
builder . CellFormat . Width = 200 ;
builder . Write ( "本月赢得值评价指标" ) ;
builder . EndRow ( ) ;
//序号
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . Previous ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
builder . Write ( "序号" ) ;
//专业
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . Previous ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( "专业" ) ;
//分部工程
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . Previous ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
2023-05-19 17:00:09 +08:00
builder . CellFormat . Width = 60 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "分部工程" ) ;
2023-05-19 17:00:09 +08:00
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "BCWP" ) ;
2023-05-19 17:00:09 +08:00
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "BCWS" ) ;
2023-05-19 17:00:09 +08:00
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "ACWP" ) ;
2023-05-19 17:00:09 +08:00
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "CV" ) ;
2023-05-19 17:00:09 +08:00
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "SV" ) ;
//CPI
2023-05-19 17:00:09 +08:00
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "CPI" ) ;
2023-05-19 17:00:09 +08:00
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "SPI" ) ;
2023-05-19 17:00:09 +08:00
builder . EndRow ( ) ;
2023-05-22 19:40:52 +08:00
var cnProfessionInits = from x in db . WBS_CnProfessionInit select x ;
var cnProfessions = from x in db . WBS_CnProfession where x . ProjectId = = this . CurrUser . LoginProjectId select x ;
var unitProjectInits = from x in db . Wbs_UnitProjectInit select x ;
var unitProjects = from x in db . Wbs_UnitProject where x . ProjectId = = this . CurrUser . LoginProjectId select x ;
var details = from x in db . View_WBS_CostControlParentDetail
where x . Months = = Funs . GetNewDateTime ( date )
select x ;
decimal cnACWP , cnBCWP , cnBCWS , cnmACWP , cnmBCWP , cnmBCWS , cnCV , cnSV , cnCPI , cnSPI , cnmCV , cnmSV , cnmCPI , cnmSPI ,
unACWP , unBCWP , unBCWS , unmACWP , unmBCWP , unmBCWS , unCV , unSV , unCPI , unSPI , unmCV , unmSV , unmCPI , unmSPI ;
int a = 1 , b = 1 ;
foreach ( var cn in cnProfessionInits )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
cnmACWP = 0 ;
cnmBCWP = 0 ;
cnmBCWS = 0 ;
cnmCV = 0 ;
cnmSV = 0 ;
cnmCPI = 0 ;
cnmSPI = 0 ;
2023-05-19 17:00:09 +08:00
//序号
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
2023-05-22 19:40:52 +08:00
builder . Write ( a . ToString ( ) ) ;
2023-05-19 17:00:09 +08:00
//专业
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cn . CnProfessionName ) ;
2023-05-19 17:00:09 +08:00
//分部工程
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
2023-05-22 19:40:52 +08:00
builder . Write ( string . Empty ) ;
var cnDetails = ( from x in details
join y in cnProfessions on x . ParentId equals y . CnProfessionId
where y . OldId = = cn . CnProfessionId
select x ) . ToList ( ) ;
cnmACWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmBCWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmBCWS = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmCV = cnmBCWP - cnmACWP ;
cnmSV = cnmBCWP - cnmBCWS ;
if ( cnmACWP > 0 )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
cnmCPI = cnmBCWP / cnmACWP ;
2023-05-19 17:00:09 +08:00
}
2023-05-22 19:40:52 +08:00
if ( cnmBCWS > 0 )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
cnmSPI = cnmBCWP / cnmBCWS ;
2023-05-19 17:00:09 +08:00
}
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmBCWP . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmBCWS . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmACWP . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmCV . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmSV . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmCPI . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnmSPI . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
builder . EndRow ( ) ;
2023-05-22 19:40:52 +08:00
b = 1 ;
var unLists = ( from x in unitProjectInits where x . CnProfessionId = = cn . CnProfessionId orderby x . SortIndex select x ) . ToList ( ) ;
foreach ( var un in unLists )
{
unmACWP = 0 ;
unmBCWP = 0 ;
unmBCWS = 0 ;
unmCV = 0 ;
unmSV = 0 ;
unmCPI = 0 ;
unmSPI = 0 ;
//序号
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
builder . Write ( a . ToString ( ) + "." + b . ToString ( ) ) ;
//专业
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( string . Empty ) ;
//分部工程
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
builder . Write ( un . UnitProjectName ) ;
var unDetails = from x in details
join y in unitProjects on x . ParentId equals y . UnitProjectId
where y . UnitProjectCode = = un . UnitProjectCode
select x ;
unmACWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . ThisRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unmBCWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . ThisPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unmBCWS = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . ThisPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
unmCV = unmBCWP - unmACWP ;
unmSV = unmBCWP - unmBCWS ;
if ( unmACWP > 0 )
{
unmCPI = unmBCWP / unmACWP ;
}
if ( unmBCWS > 0 )
{
unmSPI = unmBCWP / unmBCWS ;
}
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmBCWP . ToString ( "0.####" ) ) ;
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmBCWS . ToString ( "0.####" ) ) ;
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmACWP . ToString ( "0.####" ) ) ;
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmCV . ToString ( "0.####" ) ) ;
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmSV . ToString ( "0.####" ) ) ;
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmCPI . ToString ( "0.####" ) ) ;
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unmSPI . ToString ( "0.####" ) ) ;
builder . EndRow ( ) ;
b + + ;
}
a + + ;
2023-05-19 17:00:09 +08:00
}
2023-05-17 17:35:00 +08:00
2023-05-22 19:40:52 +08:00
builder . MoveToBookmark ( "Form42" ) ;
builder . StartTable ( ) ;
builder . CellFormat . Borders . LineStyle = LineStyle . Single ;
builder . CellFormat . Borders . Color = System . Drawing . Color . Black ;
builder . Bold = false ;
builder . RowFormat . Height = 20 ;
builder . Font . Size = 10 ;
2023-05-19 17:00:09 +08:00
//序号
builder . InsertCell ( ) ;
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . First ;
2023-05-19 17:00:09 +08:00
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "序号" ) ;
2023-05-19 17:00:09 +08:00
//专业
builder . InsertCell ( ) ;
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . First ;
2023-05-19 17:00:09 +08:00
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "专业" ) ;
2023-05-19 17:00:09 +08:00
//分部工程
builder . InsertCell ( ) ;
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
builder . Write ( "分部工程" ) ;
//累计赢得值参数(单位:万元)
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . CellFormat . VerticalMerge = CellMerge . None ;
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 150 ;
builder . Write ( "累计赢得值参数(单位:万元)" ) ;
//累计赢得值评价指标
builder . InsertCell ( ) ;
2023-05-19 17:00:09 +08:00
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
2023-05-22 19:40:52 +08:00
builder . CellFormat . VerticalMerge = CellMerge . None ;
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 200 ;
builder . Write ( "累计赢得值评价指标" ) ;
builder . EndRow ( ) ;
//序号
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . Previous ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
builder . Write ( "序号" ) ;
//专业
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . Previous ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( "专业" ) ;
//分部工程
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . Previous ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
2023-05-19 17:00:09 +08:00
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "分部工程" ) ;
2023-05-19 17:00:09 +08:00
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "BCWP" ) ;
2023-05-19 17:00:09 +08:00
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "BCWS" ) ;
2023-05-19 17:00:09 +08:00
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "ACWP" ) ;
2023-05-19 17:00:09 +08:00
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "CV" ) ;
2023-05-19 17:00:09 +08:00
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "SV" ) ;
//CPI
2023-05-19 17:00:09 +08:00
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "CPI" ) ;
2023-05-19 17:00:09 +08:00
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( "SPI" ) ;
2023-05-19 17:00:09 +08:00
builder . EndRow ( ) ;
2023-05-22 19:40:52 +08:00
a = 1 ;
2023-05-22 14:22:53 +08:00
b = 1 ;
2023-05-22 19:40:52 +08:00
foreach ( var cn in cnProfessionInits )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
cnACWP = 0 ;
cnBCWP = 0 ;
cnBCWS = 0 ;
cnCV = 0 ;
cnSV = 0 ;
cnCPI = 0 ;
cnSPI = 0 ;
2023-05-19 17:00:09 +08:00
//序号
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
2023-05-22 19:40:52 +08:00
builder . Write ( a . ToString ( ) ) ;
2023-05-19 17:00:09 +08:00
//专业
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cn . CnProfessionName ) ;
2023-05-19 17:00:09 +08:00
//分部工程
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
2023-05-22 19:40:52 +08:00
builder . Write ( string . Empty ) ;
var cnDetails = ( from x in details
join y in cnProfessions on x . ParentId equals y . CnProfessionId
where y . OldId = = cn . CnProfessionId
select x ) . ToList ( ) ;
cnmACWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmBCWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmBCWS = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . ThisPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnmCV = cnmBCWP - cnmACWP ;
cnmSV = cnmBCWP - cnmBCWS ;
if ( cnmACWP > 0 )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
cnmCPI = cnmBCWP / cnmACWP ;
2023-05-19 17:00:09 +08:00
}
2023-05-22 19:40:52 +08:00
if ( cnmBCWS > 0 )
2023-05-19 17:00:09 +08:00
{
2023-05-22 19:40:52 +08:00
cnmSPI = cnmBCWP / cnmBCWS ;
}
cnACWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . TotalRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnBCWP = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . TotalPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnBCWS = Funs . GetNewDecimalOrZero ( cnDetails . Select ( x = > x . TotalPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
cnCV = cnBCWP - cnACWP ;
cnSV = cnBCWP - cnBCWS ;
if ( cnACWP > 0 )
{
cnCPI = cnBCWP / cnACWP ;
}
if ( cnBCWS > 0 )
{
cnSPI = cnBCWP / cnBCWS ;
2023-05-19 17:00:09 +08:00
}
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnBCWP . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnBCWS . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnACWP . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnCV . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnSV . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnCPI . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
2023-05-22 19:40:52 +08:00
builder . Write ( cnSPI . ToString ( "0.####" ) ) ;
2023-05-19 17:00:09 +08:00
builder . EndRow ( ) ;
2023-05-22 19:40:52 +08:00
b = 1 ;
var unLists = ( from x in unitProjectInits where x . CnProfessionId = = cn . CnProfessionId orderby x . SortIndex select x ) . ToList ( ) ;
foreach ( var un in unLists )
{
unACWP = 0 ;
unBCWP = 0 ;
unBCWS = 0 ;
unCV = 0 ;
unSV = 0 ;
unCPI = 0 ;
unSPI = 0 ;
//序号
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 30 ;
builder . Write ( a . ToString ( ) + "." + b . ToString ( ) ) ;
//专业
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( string . Empty ) ;
//分部工程
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 60 ;
builder . Write ( un . UnitProjectName ) ;
var unDetails = from x in details
join y in unitProjects on x . ParentId equals y . UnitProjectId
where y . UnitProjectCode = = un . UnitProjectCode
select x ;
unACWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . TotalRealCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unBCWP = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . TotalPlanCost ) . Sum ( ) . ToString ( ) ) / 10000 ;
unBCWS = Funs . GetNewDecimalOrZero ( unDetails . Select ( x = > x . TotalPlanValue ) . Sum ( ) . ToString ( ) ) / 10000 ;
unCV = unBCWP - unACWP ;
unSV = unBCWP - unBCWS ;
if ( unACWP > 0 )
{
unCPI = unBCWP / unACWP ;
}
if ( unBCWS > 0 )
{
unSPI = unBCWP / unBCWS ;
}
//BCWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unBCWP . ToString ( "0.####" ) ) ;
//BCWS
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unBCWS . ToString ( "0.####" ) ) ;
//ACWP
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unACWP . ToString ( "0.####" ) ) ;
//CV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unCV . ToString ( "0.####" ) ) ;
//SV
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unSV . ToString ( "0.####" ) ) ;
//CPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unCPI . ToString ( "0.####" ) ) ;
//SPI
builder . InsertCell ( ) ;
builder . CellFormat . VerticalMerge = Aspose . Words . Tables . CellMerge . None ;
builder . CellFormat . HorizontalMerge = Aspose . Words . Tables . CellMerge . First ;
builder . CellFormat . VerticalAlignment = Aspose . Words . Tables . CellVerticalAlignment . Center ; //垂直居中对齐
builder . ParagraphFormat . Alignment = ParagraphAlignment . Center ; //水平居中对齐
builder . CellFormat . Width = 50 ;
builder . Write ( unSPI . ToString ( "0.####" ) ) ;
builder . EndRow ( ) ;
b + + ;
}
a + + ;
2023-05-19 17:00:09 +08:00
}
2023-05-22 19:40:52 +08:00
#endregion
doc . Save ( newUrl ) ;
string fileName = Path . GetFileName ( newUrl ) ;
FileInfo info = new FileInfo ( newUrl ) ;
long fileSize = info . Length ;
Response . Clear ( ) ;
Response . ContentType = "application/x-zip-compressed" ;
Response . AddHeader ( "Content-Disposition" , "attachment;filename=" + System . Web . HttpUtility . UrlEncode ( fileName , System . Text . Encoding . UTF8 ) ) ;
Response . AddHeader ( "Content-Length" , fileSize . ToString ( ) ) ;
Response . TransmitFile ( newUrl , 0 , fileSize ) ;
Response . Flush ( ) ;
Response . Close ( ) ;
File . Delete ( newUrl ) ;
}
else
{
ShowNotify ( "没有数据,无法导出!" , MessageBoxIcon . Warning ) ;
2023-05-19 17:00:09 +08:00
}
}
2023-05-17 17:35:00 +08:00
}
else
{
2023-05-22 19:40:52 +08:00
ShowNotify ( "请选择月份!" , MessageBoxIcon . Warning ) ;
2023-05-17 17:35:00 +08:00
}
2023-05-11 09:58:37 +08:00
}
#endregion
}
}