@ -14,9 +14,7 @@ import com.epmet.dao.evaluationindex.screen.FactIndexCommunityScoreDao;
import com.epmet.dao.evaluationindex.screen.FactIndexGridScoreDao ;
import com.epmet.dao.evaluationindex.screen.FactIndexGridScoreDao ;
import com.epmet.dto.screen.FactIndexCommunityScoreDTO ;
import com.epmet.dto.screen.FactIndexCommunityScoreDTO ;
import com.epmet.dto.screen.result.MaxAndMinBigDecimalResultDTO ;
import com.epmet.dto.screen.result.MaxAndMinBigDecimalResultDTO ;
import com.epmet.dto.screen.result.SubGridGovernAvgResultDTO ;
import com.epmet.dto.screen.result.SubGridAvgResultDTO ;
import com.epmet.dto.screen.result.SubGridPartyAvgResultDTO ;
import com.epmet.dto.screen.result.SubGridServiceAvgResultDTO ;
import com.epmet.entity.evaluationindex.screen.IndexGroupDetailEntity ;
import com.epmet.entity.evaluationindex.screen.IndexGroupDetailEntity ;
import com.epmet.eum.IndexCodeEnum ;
import com.epmet.eum.IndexCodeEnum ;
import com.epmet.service.evaluationindex.indexcal.IndexCalculateCommunityService ;
import com.epmet.service.evaluationindex.indexcal.IndexCalculateCommunityService ;
@ -70,33 +68,35 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
* @author zxc
* @author zxc
* @date 2020 / 8 / 26 10 : 46 上午
* @date 2020 / 8 / 26 10 : 46 上午
* /
* /
@Transactional ( rollbackFor = Exception . class )
public Boolean communityPartyCalculate ( String customerId , String monthId ) {
public Boolean communityPartyCalculate ( String customerId , String monthId ) {
// 党建能力
// 党建能力
// 根据all_parent_index_code 获取指标明细
// 根据all_parent_index_code 获取指标明细
List < IndexGroupDetailEntity > detailListByParentCode = indexGroupDetailService . getDetailListByParentCode ( customerId , IndexCodeEnum . SHE_QU_XIANG_GUAN . getCode ( ) , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) ) ;
List < IndexGroupDetailEntity > detailListByParentCode = indexGroupDetailService . getDetailListByParentCode ( customerId , IndexCodeEnum . SHE_QU_XIANG_GUAN . getCode ( ) , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) ) ;
if ( CollectionUtils . isEmpty ( detailListByParentCode ) ) {
if ( CollectionUtils . isEmpty ( detailListByParentCode ) ) {
log . error ( "指标明细查询集合为空" ) ;
log . error ( IndexCalConstant . INDEX_DETAIL_LIST_NULL ) ;
return false ;
return false ;
}
}
List < IndexInputVO > indexInputVOS = new ArrayList < > ( ) ;
List < IndexInputVO > indexInputVOS = new ArrayList < > ( ) ;
Map < String , String > pid = new HashMap < > ( ) ;
//下属所有网格的党建能力平均值
//下属所有网格的党建能力平均值
detailListByParentCode . forEach ( detail - > {
detailListByParentCode . forEach ( detail - > {
if ( IndexCodeEnum . XIA_SHU_SUO_YOU_WGDDJNLPJZ . getCode ( ) . equals ( detail . getIndexCode ( ) ) ) {
if ( IndexCodeEnum . XIA_SHU_SUO_YOU_WGDDJNLPJZ . getCode ( ) . equals ( detail . getIndexCode ( ) ) ) {
List < SubGridParty AvgResultDTO > subGridPartyAvgScore = factIndexGridScoreDao . selectSubGridParty AvgScore ( customerId , monthId ) ;
List < SubGridAvgResultDTO > subGridPartyAvgScore = factIndexGridScoreDao . selectSubGridAvgScore ( customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) ) ;
if ( CollectionUtils . isEmpty ( subGridPartyAvgScore ) ) {
if ( CollectionUtils . isEmpty ( subGridPartyAvgScore ) ) {
log . error ( "查询下属所有网格的党建能力平均值集合为空" ) ;
log . error ( IndexCalConstant . GRID_PARTY_AVG_NULL ) ;
return ;
return ;
} else if ( subGridPartyAvgScore . size ( ) = = NumConstant . ONE ) {
} else if ( subGridPartyAvgScore . size ( ) = = NumConstant . ONE ) {
sizeOne ( subGridPartyAvgScore . get ( NumConstant . ZERO ) . getAgencyId ( ) , customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) ) ;
pid . put ( subGridPartyAvgScore . get ( NumConstant . ZERO ) . getAgencyId ( ) , subGridPartyAvgScore . get ( NumConstant . ZERO ) . getParentId ( ) ) ;
sizeOne ( subGridPartyAvgScore . get ( NumConstant . ZERO ) . getAgencyId ( ) , customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) , pid ) ;
return ;
return ;
} else if ( subGridPartyAvgScore . size ( ) > NumConstant . ONE ) {
} else if ( subGridPartyAvgScore . size ( ) > NumConstant . ONE ) {
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( subGridPartyAvgScore . stream ( ) . map ( o - > o . getScore ( ) ) . collect ( Collectors . toList ( ) ) ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( subGridPartyAvgScore . stream ( ) . map ( o - > o . getScore ( ) ) . collect ( Collectors . toList ( ) ) ) ;
Integer indexEnd = NumConstant . TEN ;
Integer indexEnd = NumConstant . TEN ;
List < List < SubGridParty AvgResultDTO > > partition = ListUtils . partition ( subGridPartyAvgScore , indexEnd ) ;
List < List < SubGridAvgResultDTO > > subPartyAvgList = ListUtils . partition ( subGridPartyAvgScore , indexEnd ) ;
partition . forEach ( publish - > {
subPartyAvgList . forEach ( party - > {
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
publish . forEach ( c - > {
party . forEach ( c - > {
pid . put ( c . getAgencyId ( ) , c . getParentId ( ) ) ;
SampleValue s = new SampleValue ( c . getAgencyId ( ) , c . getScore ( ) ) ;
SampleValue s = new SampleValue ( c . getAgencyId ( ) , c . getScore ( ) ) ;
index1SampleValues . add ( s ) ;
index1SampleValues . add ( s ) ;
} ) ;
} ) ;
@ -107,26 +107,28 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
}
}
} else {
} else {
// 社区名义发文数量
// 社区名义发文数量
List < Map < String , Object > > ma pList = factIndexPartyAblityOrgMonthlyDao . selectPublishArticleCountMap ( customerId , monthId , IndexCalConstant . COMMUNITY_LEVEL ) ;
List < Map < String , Object > > publishArticleCount List = factIndexPartyAblityOrgMonthlyDao . selectPublishArticleCountMap ( customerId , monthId , IndexCalConstant . COMMUNITY_LEVEL ) ;
if ( CollectionUtils . isEmpty ( ma pList) ) {
if ( CollectionUtils . isEmpty ( publishArticleCount List ) ) {
log . error ( "查询社区名义发文数量集合为空" ) ;
log . error ( IndexCalConstant . COMMUNITY_PUBLISH_ARTICLE_LIST_NULL ) ;
return ;
return ;
}
}
String fieldNameByIndexCode = indexCodeFieldReService . getFieldNameByIndexCode ( detail . getIndexCode ( ) ) ;
String fieldNameByIndexCode = indexCodeFieldReService . getFieldNameByIndexCode ( detail . getIndexCode ( ) ) ;
if ( StringUtils . isEmpty ( fieldNameByIndexCode ) ) {
if ( StringUtils . isEmpty ( fieldNameByIndexCode ) ) {
log . error ( "指标Code未查询出对应字段 【" + detail . getIndexCode ( ) + "】" ) ;
log . error ( String . format ( IndexCalConstant . INDEX_CODE_NULL , detail . getIndexCode ( ) ) ) ;
return ;
return ;
} else if ( mapList . size ( ) = = NumConstant . ONE ) {
} else if ( publishArticleCountList . size ( ) = = NumConstant . ONE ) {
sizeOne ( mapList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) ) ;
pid . put ( publishArticleCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , publishArticleCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . PARENT_ID ) . toString ( ) ) ;
sizeOne ( publishArticleCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) , pid ) ;
return ;
return ;
} else if ( ma pList. size ( ) > NumConstant . ONE ) {
} else if ( publishArticleCount List . size ( ) > NumConstant . ONE ) {
List < BigDecimal > decimalList = ma pList. stream ( ) . map ( m - > new BigDecimal ( m . get ( fieldNameByIndexCode ) . toString ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < BigDecimal > decimalList = publishArticleCount List . stream ( ) . map ( m - > new BigDecimal ( m . get ( fieldNameByIndexCode ) . toString ( ) ) ) . collect ( Collectors . toList ( ) ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( decimalList ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( decimalList ) ;
List < List < Map < String , Object > > > publishArticleList = ListUtils . partition ( ma pList, 10 ) ;
List < List < Map < String , Object > > > publishArticleList = ListUtils . partition ( publishArticleCount List , IndexCalConstant . PAGE_SIZE ) ;
publishArticleList . forEach ( publish - > {
publishArticleList . forEach ( publish - > {
ScoreCalculator sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
ScoreCalculator sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
publish . forEach ( c - > {
publish . forEach ( c - > {
pid . put ( c . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , c . get ( IndexCalConstant . PARENT_ID ) . toString ( ) ) ;
SampleValue s = new SampleValue ( ( String ) c . get ( IndexCalConstant . AGENCY_ID ) , new BigDecimal ( String . valueOf ( c . get ( fieldNameByIndexCode ) ) ) ) ;
SampleValue s = new SampleValue ( ( String ) c . get ( IndexCalConstant . AGENCY_ID ) , new BigDecimal ( String . valueOf ( c . get ( fieldNameByIndexCode ) ) ) ) ;
index1SampleValues . add ( s ) ;
index1SampleValues . add ( s ) ;
} ) ;
} ) ;
@ -138,7 +140,7 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
} ) ;
} ) ;
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator ( ) ;
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator ( ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = batchScoreCalculator . getScoreCountOfSampleId ( indexInputVOS ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = batchScoreCalculator . getScoreCountOfSampleId ( indexInputVOS ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) , pid ) ;
deleteAndInsert ( customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) , result ) ;
deleteAndInsert ( customerId , monthId , IndexCodeEnum . DANG_JIAN_NENG_LI . getCode ( ) , result ) ;
return true ;
return true ;
}
}
@ -150,26 +152,28 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
* @author zxc
* @author zxc
* @date 2020 / 8 / 26 1 : 40 下午
* @date 2020 / 8 / 26 1 : 40 下午
* /
* /
@Transactional ( rollbackFor = Exception . class )
public Boolean communityGovernAbilityCalculate ( String customerId , String monthId ) {
public Boolean communityGovernAbilityCalculate ( String customerId , String monthId ) {
List < IndexGroupDetailEntity > detailListByParentCode = indexGroupDetailService . getDetailListByParentCode ( customerId , IndexCodeEnum . SHE_QU_XIANG_GUAN . getCode ( ) , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) ) ;
List < IndexGroupDetailEntity > detailListByParentCode = indexGroupDetailService . getDetailListByParentCode ( customerId , IndexCodeEnum . SHE_QU_XIANG_GUAN . getCode ( ) , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) ) ;
if ( CollectionUtils . isEmpty ( detailListByParentCode ) ) {
if ( CollectionUtils . isEmpty ( detailListByParentCode ) ) {
log . error ( "指标明细查询集合为空" ) ;
log . error ( IndexCalConstant . INDEX_DETAIL_LIST_NULL ) ;
return false ;
return false ;
}
}
List < IndexInputVO > indexInputVOS = new ArrayList < > ( ) ;
List < IndexInputVO > indexInputVOS = new ArrayList < > ( ) ;
Map < String , String > pid = new HashMap < > ( ) ;
detailListByParentCode . forEach ( detail - > {
detailListByParentCode . forEach ( detail - > {
if ( IndexCodeEnum . SHE_QU_XIA_SHU_SYWGZLNLHZPJZ . getCode ( ) . equals ( detail . getIndexCode ( ) ) ) {
if ( IndexCodeEnum . SHE_QU_XIA_SHU_SYWGZLNLHZPJZ . getCode ( ) . equals ( detail . getIndexCode ( ) ) ) {
List < SubGridGovern AvgResultDTO > subGridGovernAvg = factIndexGridScoreDao . selectSubGridGovern AvgScore ( customerId , monthId ) ;
List < SubGridAvgResultDTO > subGridGovernAvg = factIndexGridScoreDao . selectSubGridAvgScore ( customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) ) ;
if ( subGridGovernAvg . size ( ) = = NumConstant . ONE ) {
if ( subGridGovernAvg . size ( ) = = NumConstant . ONE ) {
sizeOne ( subGridGovernAvg . get ( NumConstant . ZERO ) . getAgencyId ( ) , customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) ) ;
pid . put ( subGridGovernAvg . get ( NumConstant . ZERO ) . getAgencyId ( ) , subGridGovernAvg . get ( NumConstant . ZERO ) . getParentId ( ) ) ;
sizeOne ( subGridGovernAvg . get ( NumConstant . ZERO ) . getAgencyId ( ) , customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) , pid ) ;
return ;
return ;
} else if ( subGridGovernAvg . size ( ) > NumConstant . ONE ) {
} else if ( subGridGovernAvg . size ( ) > NumConstant . ONE ) {
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( subGridGovernAvg . stream ( ) . map ( o - > o . getScore ( ) ) . collect ( Collectors . toList ( ) ) ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( subGridGovernAvg . stream ( ) . map ( o - > o . getScore ( ) ) . collect ( Collectors . toList ( ) ) ) ;
List < List < SubGridGovern AvgResultDTO > > governAvg = ListUtils . partition ( subGridGovernAvg , 10 ) ;
List < List < SubGridAvgResultDTO > > governAvg = ListUtils . partition ( subGridGovernAvg , IndexCalConstant . PAGE_SIZE ) ;
governAvg . forEach ( avg - > {
governAvg . forEach ( avg - > {
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
avg . forEach ( c - > {
avg . forEach ( c - > {
pid . put ( c . getAgencyId ( ) , c . getParentId ( ) ) ;
SampleValue s = new SampleValue ( c . getAgencyId ( ) , c . getScore ( ) ) ;
SampleValue s = new SampleValue ( c . getAgencyId ( ) , c . getScore ( ) ) ;
index1SampleValues . add ( s ) ;
index1SampleValues . add ( s ) ;
} ) ;
} ) ;
@ -182,24 +186,26 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
// 治理能力的六个五级指标
// 治理能力的六个五级指标
List < Map < String , Object > > communityGovernAbility = factIndexGovrnAblityOrgMonthlyDao . selectCommunityGovernAbility ( customerId , monthId , IndexCalConstant . COMMUNITY_LEVEL ) ;
List < Map < String , Object > > communityGovernAbility = factIndexGovrnAblityOrgMonthlyDao . selectCommunityGovernAbility ( customerId , monthId , IndexCalConstant . COMMUNITY_LEVEL ) ;
if ( CollectionUtils . isEmpty ( communityGovernAbility ) ) {
if ( CollectionUtils . isEmpty ( communityGovernAbility ) ) {
log . error ( "查询治理能力的六个五级指标集合为空" ) ;
log . error ( IndexCalConstant . COMMUNITY_GOVERN_ABILITY_NULL ) ;
return ;
return ;
} else if ( communityGovernAbility . size ( ) = = NumConstant . ONE ) {
} else if ( communityGovernAbility . size ( ) = = NumConstant . ONE ) {
sizeOne ( communityGovernAbility . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) ) ;
pid . put ( communityGovernAbility . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , communityGovernAbility . get ( NumConstant . ZERO ) . get ( IndexCalConstant . PARENT_ID ) . toString ( ) ) ;
sizeOne ( communityGovernAbility . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) , pid ) ;
return ;
return ;
} else if ( communityGovernAbility . size ( ) > NumConstant . ONE ) {
} else if ( communityGovernAbility . size ( ) > NumConstant . ONE ) {
String fieldNameByIndexCode = indexCodeFieldReService . getFieldNameByIndexCode ( detail . getIndexCode ( ) ) ;
String fieldNameByIndexCode = indexCodeFieldReService . getFieldNameByIndexCode ( detail . getIndexCode ( ) ) ;
if ( StringUtils . isEmpty ( fieldNameByIndexCode ) ) {
if ( StringUtils . isEmpty ( fieldNameByIndexCode ) ) {
log . error ( "指标Code未查询出对应字段 【" + detail . getIndexCode ( ) + "】" ) ;
log . error ( String . format ( IndexCalConstant . INDEX_CODE_NULL , detail . getIndexCode ( ) ) ) ;
return ;
return ;
}
}
List < BigDecimal > decimalList = communityGovernAbility . stream ( ) . map ( m - > new BigDecimal ( m . get ( fieldNameByIndexCode ) . toString ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < BigDecimal > decimalList = communityGovernAbility . stream ( ) . map ( m - > new BigDecimal ( m . get ( fieldNameByIndexCode ) . toString ( ) ) ) . collect ( Collectors . toList ( ) ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( decimalList ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( decimalList ) ;
List < List < Map < String , Object > > > governAbilityList = ListUtils . partition ( communityGovernAbility , 10 ) ;
List < List < Map < String , Object > > > governAbilityList = ListUtils . partition ( communityGovernAbility , IndexCalConstant . PAGE_SIZE ) ;
governAbilityList . forEach ( governAbility - > {
governAbilityList . forEach ( governAbility - > {
ScoreCalculator < Integer > sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
ScoreCalculator < Integer > sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
governAbility . forEach ( c - > {
governAbility . forEach ( c - > {
pid . put ( c . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , c . get ( IndexCalConstant . PARENT_ID ) . toString ( ) ) ;
SampleValue s = new SampleValue ( ( String ) c . get ( IndexCalConstant . AGENCY_ID ) , new BigDecimal ( String . valueOf ( c . get ( fieldNameByIndexCode ) ) ) ) ;
SampleValue s = new SampleValue ( ( String ) c . get ( IndexCalConstant . AGENCY_ID ) , new BigDecimal ( String . valueOf ( c . get ( fieldNameByIndexCode ) ) ) ) ;
index1SampleValues . add ( s ) ;
index1SampleValues . add ( s ) ;
} ) ;
} ) ;
@ -211,7 +217,7 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
} ) ;
} ) ;
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator ( ) ;
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator ( ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = batchScoreCalculator . getScoreCountOfSampleId ( indexInputVOS ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = batchScoreCalculator . getScoreCountOfSampleId ( indexInputVOS ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) , pid ) ;
deleteAndInsert ( customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) , result ) ;
deleteAndInsert ( customerId , monthId , IndexCodeEnum . ZHI_LI_NENG_LI . getCode ( ) , result ) ;
return true ;
return true ;
}
}
@ -223,28 +229,30 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
* @author zxc
* @author zxc
* @date 2020 / 8 / 31 1 : 38 下午
* @date 2020 / 8 / 31 1 : 38 下午
* /
* /
@Transactional ( rollbackFor = Exception . class )
public Boolean communityServiceAbilityCalculate ( String customerId , String monthId ) {
public Boolean communityServiceAbilityCalculate ( String customerId , String monthId ) {
List < IndexGroupDetailEntity > detailListByParentCode = indexGroupDetailService . getDetailListByParentCode ( customerId , IndexCodeEnum . SHE_QU_XIANG_GUAN . getCode ( ) , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) ) ;
List < IndexGroupDetailEntity > detailListByParentCode = indexGroupDetailService . getDetailListByParentCode ( customerId , IndexCodeEnum . SHE_QU_XIANG_GUAN . getCode ( ) , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) ) ;
if ( CollectionUtils . isEmpty ( detailListByParentCode ) ) {
if ( CollectionUtils . isEmpty ( detailListByParentCode ) ) {
log . error ( "指标明细查询集合为空" ) ;
log . error ( IndexCalConstant . INDEX_DETAIL_LIST_NULL ) ;
return false ;
return false ;
}
}
List < IndexInputVO > indexInputVOS = new ArrayList < > ( ) ;
List < IndexInputVO > indexInputVOS = new ArrayList < > ( ) ;
Map < String , String > pid = new HashMap < > ( ) ;
detailListByParentCode . forEach ( detail - > {
detailListByParentCode . forEach ( detail - > {
String indexCode = detail . getIndexCode ( ) ;
String indexCode = detail . getIndexCode ( ) ;
if ( IndexCodeEnum . SHE_QU_XIA_JI_SYWGFWNLDFPJZ . getCode ( ) . equals ( indexCode ) ) {
if ( IndexCodeEnum . SHE_QU_XIA_JI_SYWGFWNLDFPJZ . getCode ( ) . equals ( indexCode ) ) {
List < SubGridService AvgResultDTO > subGridServiceAvg = factIndexGridScoreDao . selectSubGridService AvgScore ( customerId , monthId ) ;
List < SubGridAvgResultDTO > subGridServiceAvg = factIndexGridScoreDao . selectSubGridAvgScore ( customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) ) ;
if ( subGridServiceAvg . size ( ) = = NumConstant . ONE ) {
if ( subGridServiceAvg . size ( ) = = NumConstant . ONE ) {
sizeOne ( subGridServiceAvg . get ( NumConstant . ZERO ) . getAgencyId ( ) . toString ( ) , customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) ) ;
pid . put ( subGridServiceAvg . get ( NumConstant . ZERO ) . getAgencyId ( ) , subGridServiceAvg . get ( NumConstant . ZERO ) . getParentId ( ) ) ;
sizeOne ( subGridServiceAvg . get ( NumConstant . ZERO ) . getAgencyId ( ) , customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) , pid ) ;
return ;
return ;
} else if ( subGridServiceAvg . size ( ) > NumConstant . ONE ) {
} else if ( subGridServiceAvg . size ( ) > NumConstant . ONE ) {
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( subGridServiceAvg . stream ( ) . map ( o - > o . getScore ( ) ) . collect ( Collectors . toList ( ) ) ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( subGridServiceAvg . stream ( ) . map ( o - > o . getScore ( ) ) . collect ( Collectors . toList ( ) ) ) ;
List < List < SubGridService AvgResultDTO > > serviceAvgList = ListUtils . partition ( subGridServiceAvg , 10 ) ;
List < List < SubGridAvgResultDTO > > serviceAvgList = ListUtils . partition ( subGridServiceAvg , IndexCalConstant . PAGE_SIZE ) ;
serviceAvgList . forEach ( serviceAvg - > {
serviceAvgList . forEach ( serviceAvg - > {
BigDecimalScoreCalculator sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
BigDecimalScoreCalculator sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
serviceAvg . forEach ( c - > {
serviceAvg . forEach ( c - > {
pid . put ( c . getAgencyId ( ) , c . getParentId ( ) ) ;
SampleValue s = new SampleValue ( c . getAgencyId ( ) , c . getScore ( ) ) ;
SampleValue s = new SampleValue ( c . getAgencyId ( ) , c . getScore ( ) ) ;
index1SampleValues . add ( s ) ;
index1SampleValues . add ( s ) ;
} ) ;
} ) ;
@ -255,24 +263,26 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
} else {
} else {
List < Map < String , Object > > communityActivityCountList = factIndexServiceAblityOrgMonthlyDao . selectActivityCountMap ( customerId , monthId , IndexCalConstant . COMMUNITY_LEVEL ) ;
List < Map < String , Object > > communityActivityCountList = factIndexServiceAblityOrgMonthlyDao . selectActivityCountMap ( customerId , monthId , IndexCalConstant . COMMUNITY_LEVEL ) ;
if ( CollectionUtils . isEmpty ( communityActivityCountList ) ) {
if ( CollectionUtils . isEmpty ( communityActivityCountList ) ) {
log . error ( "查询社区活动组织次数集合为空" ) ;
log . error ( IndexCalConstant . COMMUNITY_SERVICE_ABILITY_NULL ) ;
return ;
return ;
} else if ( communityActivityCountList . size ( ) = = NumConstant . ONE ) {
} else if ( communityActivityCountList . size ( ) = = NumConstant . ONE ) {
sizeOne ( communityActivityCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) ) ;
pid . put ( communityActivityCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , communityActivityCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . PARENT_ID ) . toString ( ) ) ;
sizeOne ( communityActivityCountList . get ( NumConstant . ZERO ) . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) , pid ) ;
return ;
return ;
} else if ( communityActivityCountList . size ( ) > NumConstant . ONE ) {
} else if ( communityActivityCountList . size ( ) > NumConstant . ONE ) {
String fieldNameByIndexCode = indexCodeFieldReService . getFieldNameByIndexCode ( detail . getIndexCode ( ) ) ;
String fieldNameByIndexCode = indexCodeFieldReService . getFieldNameByIndexCode ( detail . getIndexCode ( ) ) ;
if ( StringUtils . isEmpty ( fieldNameByIndexCode ) ) {
if ( StringUtils . isEmpty ( fieldNameByIndexCode ) ) {
log . error ( "指标Code未查询出对应字段 【" + detail . getIndexCode ( ) + "】" ) ;
log . error ( String . format ( IndexCalConstant . INDEX_CODE_NULL , detail . getIndexCode ( ) ) ) ;
return ;
return ;
}
}
List < BigDecimal > decimalList = communityActivityCountList . stream ( ) . map ( m - > new BigDecimal ( m . get ( fieldNameByIndexCode ) . toString ( ) ) ) . collect ( Collectors . toList ( ) ) ;
List < BigDecimal > decimalList = communityActivityCountList . stream ( ) . map ( m - > new BigDecimal ( m . get ( fieldNameByIndexCode ) . toString ( ) ) ) . collect ( Collectors . toList ( ) ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( decimalList ) ;
MaxAndMinBigDecimalResultDTO maxAndMinBigDecimal = this . getMaxAndMinBigDecimal ( decimalList ) ;
List < List < Map < String , Object > > > communityActivityList = ListUtils . partition ( communityActivityCountList , 10 ) ;
List < List < Map < String , Object > > > communityActivityList = ListUtils . partition ( communityActivityCountList , IndexCalConstant . PAGE_SIZE ) ;
communityActivityList . forEach ( communityActivity - > {
communityActivityList . forEach ( communityActivity - > {
ScoreCalculator < Integer > sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
ScoreCalculator < Integer > sc1 = new BigDecimalScoreCalculator ( maxAndMinBigDecimal . getMin ( ) , maxAndMinBigDecimal . getMax ( ) , ScoreConstants . MIN_SCORE , ScoreConstants . MAX_SCORE , Correlation . POSITIVE ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
List < SampleValue > index1SampleValues = new ArrayList < > ( ) ;
communityActivity . forEach ( c - > {
communityActivity . forEach ( c - > {
pid . put ( c . get ( IndexCalConstant . AGENCY_ID ) . toString ( ) , c . get ( IndexCalConstant . PARENT_ID ) . toString ( ) ) ;
SampleValue s = new SampleValue ( ( String ) c . get ( IndexCalConstant . AGENCY_ID ) , new BigDecimal ( String . valueOf ( c . get ( fieldNameByIndexCode ) ) ) ) ;
SampleValue s = new SampleValue ( ( String ) c . get ( IndexCalConstant . AGENCY_ID ) , new BigDecimal ( String . valueOf ( c . get ( fieldNameByIndexCode ) ) ) ) ;
index1SampleValues . add ( s ) ;
index1SampleValues . add ( s ) ;
} ) ;
} ) ;
@ -284,7 +294,7 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
} ) ;
} ) ;
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator ( ) ;
BatchScoreCalculator batchScoreCalculator = new BatchScoreCalculator ( ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = batchScoreCalculator . getScoreCountOfSampleId ( indexInputVOS ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = batchScoreCalculator . getScoreCountOfSampleId ( indexInputVOS ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) , pid ) ;
deleteAndInsert ( customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) , result ) ;
deleteAndInsert ( customerId , monthId , IndexCodeEnum . FU_WU_NENG_LI . getCode ( ) , result ) ;
return true ;
return true ;
}
}
@ -319,6 +329,7 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
score . setIndexCode ( IndexCalConstant . COMMUNITY_RELATE ) ;
score . setIndexCode ( IndexCalConstant . COMMUNITY_RELATE ) ;
value . forEach ( community - > {
value . forEach ( community - > {
score . setScore ( score . getScore ( ) . add ( community . getScore ( ) ) ) ;
score . setScore ( score . getScore ( ) . add ( community . getScore ( ) ) ) ;
score . setParentAgencyId ( community . getParentAgencyId ( ) ) ;
} ) ;
} ) ;
result . add ( score ) ;
result . add ( score ) ;
} ) ;
} ) ;
@ -377,6 +388,7 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
* @author zxc
* @author zxc
* @date 2020 / 9 / 1 4 : 24 下午
* @date 2020 / 9 / 1 4 : 24 下午
* /
* /
@Transactional ( rollbackFor = Exception . class )
public void deleteAndInsert ( String customerId , String monthId , String indexCode , List < FactIndexCommunityScoreDTO > subAllGridList ) {
public void deleteAndInsert ( String customerId , String monthId , String indexCode , List < FactIndexCommunityScoreDTO > subAllGridList ) {
if ( ! CollectionUtils . isEmpty ( subAllGridList ) ) {
if ( ! CollectionUtils . isEmpty ( subAllGridList ) ) {
factIndexCommunityScoreDao . deleteOldRecord ( customerId , monthId , indexCode ) ;
factIndexCommunityScoreDao . deleteOldRecord ( customerId , monthId , indexCode ) ;
@ -394,7 +406,7 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
* @author zxc
* @author zxc
* @date 2020 / 9 / 2 2 : 37 下午
* @date 2020 / 9 / 2 2 : 37 下午
* /
* /
public List < FactIndexCommunityScoreDTO > getResult ( HashMap < String , BigDecimal > scoreCountOfSampleId , String customerId , String monthId , String isTotal , String indexCode ) {
public List < FactIndexCommunityScoreDTO > getResult ( HashMap < String , BigDecimal > scoreCountOfSampleId , String customerId , String monthId , String isTotal , String indexCode , Map < String , String > pid ) {
List < FactIndexCommunityScoreDTO > result = new ArrayList < > ( ) ;
List < FactIndexCommunityScoreDTO > result = new ArrayList < > ( ) ;
scoreCountOfSampleId . forEach ( ( k , v ) - > {
scoreCountOfSampleId . forEach ( ( k , v ) - > {
FactIndexCommunityScoreDTO score = new FactIndexCommunityScoreDTO ( ) ;
FactIndexCommunityScoreDTO score = new FactIndexCommunityScoreDTO ( ) ;
@ -406,6 +418,11 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
score . setIsTotal ( isTotal ) ;
score . setIsTotal ( isTotal ) ;
score . setIndexCode ( indexCode ) ;
score . setIndexCode ( indexCode ) ;
score . setScore ( v ) ;
score . setScore ( v ) ;
pid . forEach ( ( agency , parentAgency ) - > {
if ( k . equals ( agency ) ) {
score . setParentAgencyId ( parentAgency ) ;
}
} ) ;
result . add ( score ) ;
result . add ( score ) ;
} ) ;
} ) ;
return result ;
return result ;
@ -419,10 +436,10 @@ public class IndexCalculateCommunityServiceImpl implements IndexCalculateCommuni
* @author zxc
* @author zxc
* @date 2020 / 9 / 2 2 : 40 下午
* @date 2020 / 9 / 2 2 : 40 下午
* /
* /
public void sizeOne ( String agencyId , String customerId , String monthId , String indexCode ) {
public void sizeOne ( String agencyId , String customerId , String monthId , String indexCode , Map < String , String > pid ) {
HashMap < String , BigDecimal > scoreCountOfSampleId = new HashMap < > ( ) ;
HashMap < String , BigDecimal > scoreCountOfSampleId = new HashMap < > ( ) ;
scoreCountOfSampleId . put ( agencyId , new BigDecimal ( NumConstant . FIFTY ) ) ;
scoreCountOfSampleId . put ( agencyId , new BigDecimal ( NumConstant . FIFTY ) ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , indexCode ) ;
List < FactIndexCommunityScoreDTO > result = getResult ( scoreCountOfSampleId , customerId , monthId , NumConstant . ZERO_STR , indexCode , pid ) ;
deleteAndInsert ( customerId , monthId , indexCode , result ) ;
deleteAndInsert ( customerId , monthId , indexCode , result ) ;
}
}
}
}