@ -758,18 +758,22 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
public ProjectProgressOV getProgress ( List < String > Ids ) {
int fininshNum = 0 ;
int unfininshNum = 0 ;
BigDecimal progress = new BigDecimal ( "0.00" ) ;
double progress = 0 . 00 ;
String formatted = "0.00" ;
if ( Ids . size ( ) ! = 0 ) {
List < HuzhouPlaninfo > planInfoList = planinfoService . listByProjectIds ( Ids ) ;
fininshNum = ( int ) planInfoList . stream ( ) . filter ( x - > ( x . getIsfinish ( ) . equals ( "2" ) ) ) . count ( ) ;
unfininshNum = planInfoList . size ( ) - fininshNum ;
if ( fininshNum ! = 0 & & planInfoList . size ( ) ! = 0 ) {
progress = ( double ) fininshNum / planInfoList . size ( ) ;
formatted = String . format ( "%.2f" , progress ) ;
}
progress = BigDecimal . valueOf ( ( ( double ) fininshNum / planInfoList . size ( ) ) ) ;
}
ProjectProgressOV result = ProjectProgressOV . builder ( ) . fininshNum ( fininshNum )
. unfininshNum ( unfininshNum )
. projectProgress ( String . valueOf ( progress ) ) . build ( ) ;
. projectProgress ( formatted ) . build ( ) ;
return result ;
}
@ -796,21 +800,29 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
@Override
public NewFundOV getFund ( List < String > Ids ) {
NewFundOV result = null ;
BigDecimal defVal = new BigDecimal ( "0.00" ) ;
if ( Ids . size ( ) ! = 0 ) {
Map < String , BigDecimal > totalMap = contractinfoMapper . getTotalByProjectIds ( Ids ) ;
Map < String , BigDecimal > paymentMap = contractinfoMapper . getPaymentsByProjectIds ( Ids ) ;
BigDecimal totalAmount = totalMap . get ( "totalAcount" ) ;
BigDecimal totalCentral = totalMap . get ( "centralAcount" ) ;
BigDecimal totalProvincial = totalMap . get ( "provincialAcount" ) ;
BigDecimal payAmount = paymentMap . get ( "totalPayment" ) ;
BigDecimal payCentral = paymentMap . get ( "centralPayment" ) ;
BigDecimal payProvincial = paymentMap . get ( "provincialPayment" ) ;
BigDecimal totalAmount = totalMap ! = null ? totalMap . get ( "totalAcount" ) : defVal ;
BigDecimal totalCentral = totalMap ! = null ? totalMap . get ( "centralAcount" ) : defVal ;
BigDecimal totalProvincial = totalMap ! = null ? totalMap . get ( "provincialAcount" ) : defVal ;
BigDecimal payAmount = paymentMap ! = null ? paymentMap . get ( "totalPayment" ) : defVal ;
BigDecimal payCentral = paymentMap ! = null ? paymentMap . get ( "centralPayment" ) : defVal ;
BigDecimal payProvincial = paymentMap ! = null ? paymentMap . get ( "provincialPayment" ) : defVal ;
//资金执行率
BigDecimal paymentExecutionRate = payAmount . divide ( totalAmount , 2 , RoundingMode . HALF_UP ) ;
BigDecimal SuperiorFundPayment = payCentral . add ( payProvincial ) ;
BigDecimal SuperiorFundTotal = totalCentral . add ( totalProvincial ) ;
BigDecimal paymentExecutionRate = new BigDecimal ( "0.00" ) ;
if ( payAmount . compareTo ( BigDecimal . ZERO ) > 0 ) {
paymentExecutionRate = payAmount . divide ( totalAmount , 2 , RoundingMode . HALF_UP ) ;
}
BigDecimal superiorFundPayment = payCentral . add ( payProvincial ) ;
BigDecimal superiorFundTotal = totalCentral . add ( totalProvincial ) ;
//上级资金执行率
BigDecimal superiorFundExecutionRate = SuperiorFundPayment . divide ( SuperiorFundTotal , 2 , RoundingMode . HALF_UP ) ;
BigDecimal superiorFundExecutionRate = new BigDecimal ( "0.00" ) ;
if ( superiorFundPayment . compareTo ( BigDecimal . ZERO ) > 0 ) {
superiorFundExecutionRate = superiorFundPayment . divide ( superiorFundTotal , 2 , RoundingMode . HALF_UP ) ;
}
result = NewFundOV . builder ( ) . totalMoney ( String . valueOf ( totalAmount ) ) . payAmount ( String . valueOf ( payAmount ) )
. totalCentral ( String . valueOf ( totalCentral ) ) . payCentral ( String . valueOf ( payCentral ) )
. totalProvincial ( String . valueOf ( totalProvincial ) ) . payProvincial ( String . valueOf ( payProvincial ) )
@ -826,15 +838,16 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
List < String > cprojectIds = this . getIdsByType ( ) . getCrkIdsList ( ) ;
projectIds . addAll ( cprojectIds ) ;
NewFundOV result = null ;
BigDecimal defVal = new BigDecimal ( "0.00" ) ;
if ( projectIds . size ( ) ! = 0 ) {
Map < String , BigDecimal > totalMap = contractinfoMapper . getTotalByProjectIds ( projectIds ) ;
Map < String , BigDecimal > paymentMap = contractinfoMapper . getPaymentsByProjectIds ( projectIds ) ;
BigDecimal totalAmount = totalMap . get ( "totalAcount" ) ;
BigDecimal totalCentral = totalMap . get ( "centralAcount" ) ;
BigDecimal totalProvincial = totalMap . get ( "provincialAcount" ) ;
BigDecimal payAmount = paymentMap . get ( "totalPayment" ) ;
BigDecimal payCentral = paymentMap . get ( "centralPayment" ) ;
BigDecimal payProvincial = paymentMap . get ( "provincialPayment" ) ;
BigDecimal totalAmount = totalMap . size ( ) > 0 ? totalMap . get ( "totalAcount" ) : defVal ;
BigDecimal totalCentral = totalMap . size ( ) > 0 ? totalMap . get ( "centralAcount" ) : defVal ;
BigDecimal totalProvincial = totalMap . size ( ) > 0 ? totalMap . get ( "provincialAcount" ) : defVal ;
BigDecimal payAmount = totalMap . size ( ) > 0 ? paymentMap . get ( "totalPayment" ) : defVal ;
BigDecimal payCentral = totalMap . size ( ) > 0 ? paymentMap . get ( "centralPayment" ) : defVal ;
BigDecimal payProvincial = totalMap . size ( ) > 0 ? paymentMap . get ( "provincialPayment" ) : defVal ;
result = NewFundOV . builder ( ) . totalMoney ( String . valueOf ( totalAmount ) ) . payAmount ( String . valueOf ( payAmount ) )
. totalCentral ( String . valueOf ( totalCentral ) ) . payCentral ( String . valueOf ( payCentral ) )
. totalProvincial ( String . valueOf ( totalProvincial ) ) . payProvincial ( String . valueOf ( payProvincial ) ) . build ( ) ;
@ -845,34 +858,79 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
@Override
public IPage < DimensionPageResponse > getDimensionPage ( HuzhouProjectinfo projectInfo , Integer pageNo , Integer pageSize , String orderBy , String orderDir ) {
Page page = new Page ( pageNo , pageSize ) ;
// //只要入库项目
// projectInfo.setType("2");
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils . setGetProjectInfoAuth ( projectInfo ) ;
IPage < DimensionPageOV > pageSorted = projectinfoMapper . getPageSorted ( page , projectInfoAuthSelect , orderBy , orderDir ) ;
IPage < DimensionPageOV > pageSorted = projectinfoMapper . getDimensionPageSorted ( page , projectInfoAuthSelect , orderBy , orderDir ) ;
List < DimensionPageOV > records = pageSorted . getRecords ( ) ;
List < DimensionPageResponse > newRecords = new ArrayList < > ( ) ;
IPage < DimensionPageResponse > result = new Page < > ( ) ;
LambdaQueryWrapper < HuzhouProjectinfo > queryWrapper = new LambdaQueryWrapper < > ( ) ;
List < String > projectIds = new ArrayList < > ( ) ;
DimensionPageResponse build = DimensionPageResponse . builder ( ) . build ( ) ;
for ( DimensionPageOV r : records ) {
queryWrapper . eq ( HuzhouProjectinfo : : getDutyWorkplace , r . getDutyWorkplace ( ) ) . eq ( HuzhouProjectinfo : : getAdminDivision , r . getAdminDivision ( ) )
. eq ( HuzhouProjectinfo : : getWorkplaceProperties , r . getWorkplaceProperties ( ) ) . eq ( HuzhouProjectinfo : : getSuperLeader , r . getSuperLeader ( ) ) ;
projectIds . addAll ( projectinfoMapper . selectList ( queryWrapper ) . stream ( ) . map ( x - > x . getId ( ) ) . collect ( Collectors . toList ( ) ) ) ;
NewFundOV fund = this . getFund ( projectIds ) ;
ProjectProgressOV progress = this . getProgress ( projectIds ) ;
BeanUtils . copyProperties ( build , r ) ;
build . setTotalMoney ( String . valueOf ( r . getTotalMoney ( ) ) ) . setCentralMoney ( String . valueOf ( r . getCentralMoney ( ) ) )
. setProvincialMoney ( String . valueOf ( r . getProvincialMoney ( ) ) )
DimensionPageResponse build = new DimensionPageResponse ( ) ;
BeanUtils . copyProperties ( r , build ) ;
BigDecimal totalDecimal = BigDecimal . valueOf ( r . getTotalMoney ( ) ) ;
BigDecimal roundedTotalDecimal = totalDecimal . setScale ( 2 , RoundingMode . HALF_UP ) ;
BigDecimal centralDecimal = BigDecimal . valueOf ( r . getCentralMoney ( ) ) ;
BigDecimal roundedCentralDecimal = centralDecimal . setScale ( 2 , RoundingMode . HALF_UP ) ;
BigDecimal provincialDecimal = BigDecimal . valueOf ( r . getProvincialMoney ( ) ) ;
BigDecimal roundedProvincialDecimal = provincialDecimal . setScale ( 2 , RoundingMode . HALF_UP ) ;
DimensionPageResponse newRecord = build . setTotalMoneyToString ( roundedTotalDecimal . toString ( ) )
. setCentralMoneyToString ( roundedCentralDecimal . toString ( ) )
. setProvincialMoneyToString ( roundedProvincialDecimal . toString ( ) )
. setPaymentExecutionRate ( fund . getPaymentExecutionRate ( ) )
. setSuperiorFundExecutionRate ( fund . getSuperiorFundExecutionRate ( ) )
. setProjectProgress ( progress . getProjectProgress ( ) ) ;
newRecords . add ( build ) ;
newRecords . add ( newRecord ) ;
}
result . setSize ( pageSorted . getSize ( ) ) . setCurrent ( pageSorted . getCurrent ( ) ) . setRecords ( newRecords ) . setTotal ( pageSorted . getTotal ( ) ) ;
return result ;
}
@Override
public IPage < ProjectPageResponse > getProjectPage ( HuzhouProjectinfo projectInfo , Integer pageNo , Integer pageSize , String orderBy , String orderDir ) {
Page page = new Page ( pageNo , pageSize ) ;
// //只要入库项目
// projectInfo.setType("2");
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils . setGetProjectInfoAuth ( projectInfo ) ;
IPage < ProjectPageOV > pageSorted = projectinfoMapper . getProjectPageSorted ( page , projectInfoAuthSelect , orderBy , orderDir ) ;
List < ProjectPageOV > records = pageSorted . getRecords ( ) ;
List < ProjectPageResponse > newRecords = new ArrayList < > ( ) ;
IPage < ProjectPageResponse > result = new Page < > ( ) ;
for ( ProjectPageOV r : records ) {
List < String > projectIds = new ArrayList < > ( ) ;
projectIds . add ( r . getId ( ) ) ;
NewFundOV fund = this . getFund ( projectIds ) ;
ProjectProgressOV progress = this . getProgress ( projectIds ) ;
ProjectPageResponse build = new ProjectPageResponse ( ) ;
BeanUtils . copyProperties ( r , build ) ;
BigDecimal totalDecimal = BigDecimal . valueOf ( r . getTotalMoney ( ) ) ;
BigDecimal roundedTotalDecimal = totalDecimal . setScale ( 2 , RoundingMode . HALF_UP ) ;
BigDecimal centralDecimal = BigDecimal . valueOf ( r . getCentralMoney ( ) ) ;
BigDecimal roundedCentralDecimal = centralDecimal . setScale ( 2 , RoundingMode . HALF_UP ) ;
BigDecimal provincialDecimal = BigDecimal . valueOf ( r . getProvincialMoney ( ) ) ;
BigDecimal roundedProvincialDecimal = provincialDecimal . setScale ( 2 , RoundingMode . HALF_UP ) ;
ProjectPageResponse newRecord = build . setTotalMoneyToString ( roundedTotalDecimal . toString ( ) )
. setCentralMoneyToString ( roundedCentralDecimal . toString ( ) )
. setProvincialMoneyToString ( roundedProvincialDecimal . toString ( ) )
. setPaymentExecutionRate ( fund . getPaymentExecutionRate ( ) )
. setSuperiorFundExecutionRate ( fund . getSuperiorFundExecutionRate ( ) )
. setProjectProgress ( progress . getProjectProgress ( ) ) ;
newRecords . add ( newRecord ) ;
}
result . setSize ( pageSorted . getSize ( ) ) . setCurrent ( pageSorted . getCurrent ( ) ) . setRecords ( newRecords ) . setTotal ( pageSorted . getTotal ( ) ) ;
return result ;
}