@ -57,6 +57,8 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
public final SupExternalDepartMapper supExternalDepartMapper ;
public final SupExternalDepartMapper supExternalDepartMapper ;
private final StatisticsDepartMapper statisticsDepartMapper ;
public Page < ModelClueModel > page ( ModelClueQueryParam param ) {
public Page < ModelClueModel > page ( ModelClueQueryParam param ) {
if ( Objects . nonNull ( param . getModelIds ( ) ) & & param . getModelIds ( ) . isEmpty ( ) ) {
if ( Objects . nonNull ( param . getModelIds ( ) ) & & param . getModelIds ( ) . isEmpty ( ) ) {
return new Page < ModelClueModel > ( ) . setTotal ( 0 ) . setRecords ( new ArrayList < > ( ) ) ;
return new Page < ModelClueModel > ( ) . setTotal ( 0 ) . setRecords ( new ArrayList < > ( ) ) ;
@ -1048,7 +1050,7 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
private void getModelCluesForModel104 ( String param , List < ModelClue > modelClues ) {
private void getModelCluesForModel104 ( String param , List < ModelClue > modelClues ) {
System . out . println ( "模型104开始查询数据库" ) ;
System . out . println ( "模型104开始查询数据库" ) ;
List < String > params = parseSqlForModel2 ( param ) ;
List < String > params = parseSqlForModel2 ( param ) ;
String sql = "SELECT gxdwdm, gxdwmc, COUNT(*) AS zjjs from dwd_asj_zhtx_jjd where bjsj BETWEEN '" + params . get ( 0 ) + " 00:00:00' AND '" + params . get ( 1 ) + " 00:00:00' AND jqjb != '04' AND (ysjqxzdm LIKE '01%' OR ysjqxzdm LIKE'02%' OR ysjqxzdm LIKE'06%') AND (bjxldm NOT LIKE '01%' AND bjxldm NOT LIKE '02%' AND bjxldm NOT LIKE '06%') GROUP BY gxdwdm, gxdwmc;" ;
String sql = "select a.gxdwdm, a.gxdwmc, a.num anum, b.num bnum from ((SELECT gxdwdm, gxdwmc, COUNT(*) AS num from dwd_asj_zhtx_jjd where bjsj BETWEEN '" + params . get ( 0 ) + " 00:00:00' AND '" + params . get ( 1 ) + " 00:00:00' AND (ysjqxzdm LIKE '01%' OR ysjqxzdm LIKE'02%' OR ysjqxzdm LIKE'06%') AND (bjxldm NOT LIKE '01%' AND bjxldm NOT LIKE '02%' AND bjxldm NOT LIKE '06%') and bjfsdm = '0101' GROUP BY gxdwdm, gxdwmc) a join (SELECT gxdwdm, gxdwmc, COUNT(*) num from dwd_asj_zhtx_jjd where bjsj BETWEEN '" + params . get ( 0 ) + " 00:00:00' AND '" + params . get ( 1 ) + " 00:00:00' AND (ysjqxzdm LIKE '01%' OR ysjqxzdm LIKE'02%' OR ysjqxzdm LIKE'06%') and bjfsdm = '0101' GROUP BY gxdwdm, gxdwmc) b on a.gxdwdm = b.gxdwdm) ;" ;
List < Map < String , Object > > jjdmaps = modelClueDataMapper . selectByUniqueKeys ( sql ) ;
List < Map < String , Object > > jjdmaps = modelClueDataMapper . selectByUniqueKeys ( sql ) ;
System . out . println ( "模型104查询数据库完毕" ) ;
System . out . println ( "模型104查询数据库完毕" ) ;
if ( jjdmaps . isEmpty ( ) ) {
if ( jjdmaps . isEmpty ( ) ) {
@ -1062,7 +1064,8 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
modelClue . setData ( JSONObject . toJSONString ( data ) ) ;
modelClue . setData ( JSONObject . toJSONString ( data ) ) ;
modelClue . setInvolveDepartId ( supExternalDepart . getExternalId ( ) ) ;
modelClue . setInvolveDepartId ( supExternalDepart . getExternalId ( ) ) ;
modelClue . setInvolveDepartName ( supExternalDepart . getExternalName ( ) ) ;
modelClue . setInvolveDepartName ( supExternalDepart . getExternalName ( ) ) ;
modelClue . setZjjs ( ( Long ) data . get ( "zjjs" ) ) ;
modelClue . setZjjs ( ( Long ) data . get ( "anum" ) ) ;
modelClue . setAllZjjs ( ( Long ) data . get ( "bnum" ) ) ;
modelClue . setDepartLevel ( supExternalDepart . getLevel ( ) ) ;
modelClue . setDepartLevel ( supExternalDepart . getLevel ( ) ) ;
modelClue . setParentId ( supExternalDepart . getPid ( ) ) ;
modelClue . setParentId ( supExternalDepart . getPid ( ) ) ;
modelClue . setThisId ( supExternalDepart . getInternalId ( ) ) ;
modelClue . setThisId ( supExternalDepart . getInternalId ( ) ) ;
@ -1072,25 +1075,25 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
List < ModelClue > jjdModelClues3 = new ArrayList < > ( jjdModelClues . stream ( ) . filter ( clue - > clue . getDepartLevel ( ) = = 3 ) . toList ( ) ) ;
List < ModelClue > jjdModelClues3 = new ArrayList < > ( jjdModelClues . stream ( ) . filter ( clue - > clue . getDepartLevel ( ) = = 3 ) . toList ( ) ) ;
List < ModelClue > jjdModelClues4 = new ArrayList < > ( jjdModelClues . stream ( ) . filter ( clue - > clue . getDepartLevel ( ) = = 4 ) . toList ( ) ) ;
List < ModelClue > jjdModelClues4 = new ArrayList < > ( jjdModelClues . stream ( ) . filter ( clue - > clue . getDepartLevel ( ) = = 4 ) . toList ( ) ) ;
List < ModelClue > jjdModelClues5 = new ArrayList < > ( jjdModelClues . stream ( ) . filter ( clue - > clue . getDepartLevel ( ) = = 5 ) . toList ( ) ) ;
List < ModelClue > jjdModelClues5 = new ArrayList < > ( jjdModelClues . stream ( ) . filter ( clue - > clue . getDepartLevel ( ) = = 5 ) . toList ( ) ) ;
mergeModelClues ( jjdModelClues5 , jjdModelClues4 , 1 ) ;
mergeModelClues ( jjdModelClues5 , jjdModelClues4 , 3 ) ;
mergeModelClues ( jjdModelClues4 , jjdModelClues3 , 1 ) ;
mergeModelClues ( jjdModelClues4 , jjdModelClues3 , 3 ) ;
BigDecimal zjjsTotal = BigDecimal . valueOf ( jjdModelClues3 . stream ( ) . mapToLong ( ModelClue : : getZjjs ) . sum ( ) ) ;
Map < String , BigDecimal > departPercentageMap = new HashMap < > ( ) ;
Map < String , BigDecimal > departPercentageMap = new HashMap < > ( ) ;
Map < String , Long > departNumMap = new HashMap < > ( ) ;
Map < String , Long > departNumMap = new HashMap < > ( ) ;
Map < String , Long > departAllNumMap = new HashMap < > ( ) ;
for ( ModelClue jjdModelClue : jjdModelClues3 ) {
for ( ModelClue jjdModelClue : jjdModelClues3 ) {
BigDecimal percentage = BigDecimal . valueOf ( jjdModelClue . getZjjs ( ) ) . divide ( zjjsTotal , 3 , RoundingMode . HALF_UP ) ;
BigDecimal percentage = BigDecimal . valueOf ( jjdModelClue . getZjjs ( ) ) . divide ( BigDecimal . valueOf ( jjdModelClue . getAllZjjs ( ) ) , 3 , RoundingMode . HALF_UP ) ;
departPercentageMap . put ( jjdModelClue . getInvolveDepartId ( ) , percentage ) ;
departPercentageMap . put ( jjdModelClue . getInvolveDepartId ( ) , percentage ) ;
departNumMap . put ( jjdModelClue . getInvolveDepartId ( ) , jjdModelClue . getZjjs ( ) ) ;
departNumMap . put ( jjdModelClue . getInvolveDepartId ( ) , jjdModelClue . getZjjs ( ) ) ;
departAllNumMap . put ( jjdModelClue . getInvolveDepartId ( ) , jjdModelClue . getAllZjjs ( ) ) ;
}
}
BigDecimal sumOfPercentages = departPercentageMap . values ( ) . stream ( )
. reduce ( BigDecimal . ZERO , BigDecimal : : add ) ;
BigDecimal avgPercentage = sumOfPercentages . divide ( BigDecimal . valueOf ( departPercentageMap . size ( ) ) , 3 , RoundingMode . HALF_UP ) ;
BigDecimal multiply = avgPercentage . multiply ( new BigDecimal ( "0.5" ) ) ;
List < String > highPercentageDepartments = departPercentageMap . entrySet ( ) . stream ( )
List < String > highPercentageDepartments = departPercentageMap . entrySet ( ) . stream ( )
. filter ( entry - > entry . getValue ( ) . compareTo ( multiply ) > 0 )
. filter ( entry - > entry . getValue ( ) . compareTo ( BigDecimal . valueOf ( 0 . 7 ) ) > 0 )
. map ( Map . Entry : : getKey )
. map ( Map . Entry : : getKey )
. toList ( ) ;
. toList ( ) ;
for ( String department : highPercentageDepartments ) {
for ( String department : highPercentageDepartments ) {
if ( departNumMap . get ( department ) < 10 ) {
continue ;
}
ModelClue newModelClue = new ModelClue ( ) ;
ModelClue newModelClue = new ModelClue ( ) ;
newModelClue . setUniqueKey ( department ) ;
newModelClue . setUniqueKey ( department ) ;
newModelClue . setNegativeIdEx ( department ) ;
newModelClue . setNegativeIdEx ( department ) ;
@ -1098,6 +1101,10 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
if ( supExternalDepart ! = null ) {
if ( supExternalDepart ! = null ) {
if ( supExternalDepart . getInternalId ( ) ! = null ) {
if ( supExternalDepart . getInternalId ( ) ! = null ) {
newModelClue . setInvolveDepartId ( supExternalDepart . getInternalId ( ) ) ;
newModelClue . setInvolveDepartId ( supExternalDepart . getInternalId ( ) ) ;
StatisticsDepart statisticsDepart = statisticsDepartMapper . selectOne ( new QueryWrapper < StatisticsDepart > ( ) . eq ( "departId" , supExternalDepart . getInternalId ( ) ) . last ( "LIMIT 1" ) ) ;
if ( statisticsDepart = = null | | statisticsDepart . getLevel ( ) = = null | | statisticsDepart . getLevel ( ) ! = 10L ) {
continue ;
}
}
}
if ( supExternalDepart . getInternalShortName ( ) ! = null ) {
if ( supExternalDepart . getInternalShortName ( ) ! = null ) {
newModelClue . setInvolveDepartName ( supExternalDepart . getInternalShortName ( ) ) ;
newModelClue . setInvolveDepartName ( supExternalDepart . getInternalShortName ( ) ) ;
@ -1106,10 +1113,8 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
newModelClue . setDistributionState ( "0" ) ;
newModelClue . setDistributionState ( "0" ) ;
newModelClue . setThingDesc ( "发现" + newModelClue . getInvolveDepartName ( )
newModelClue . setThingDesc ( "发现" + newModelClue . getInvolveDepartName ( )
+ "在" + getDateString ( params . get ( 0 ) ) + "到" + getDateString ( params . get ( 1 ) )
+ "在" + getDateString ( params . get ( 0 ) ) + "到" + getDateString ( params . get ( 1 ) )
+ "之间变更了" + departNumMap . get ( department ) + "个警情的结警性质,占全市的"
+ "之间共有" + departAllNumMap . get ( department ) + "个警情,变更了" + departNumMap . get ( department )
+ convertToPercentString ( departPercentageMap . get ( department ) ) + ",超过了全市单位平均值("
+ "个警情的结警性质,超过了该单位总警情的70%,存在大量变更接警性质的异常情况。" ) ;
+ convertToPercentString ( avgPercentage ) + ")的50%(即"
+ convertToPercentString ( multiply ) + ")以上,存在大量变更接警性质的异常情况。" ) ;
newModelClue . setData ( newModelClue . getThingDesc ( ) ) ;
newModelClue . setData ( newModelClue . getThingDesc ( ) ) ;
modelClues . add ( newModelClue ) ;
modelClues . add ( newModelClue ) ;
}
}
@ -1126,6 +1131,9 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
modelClue1 . setZjjs ( modelClue2 . getZjjs ( ) + modelClue1 . getZjjs ( ) ) ;
modelClue1 . setZjjs ( modelClue2 . getZjjs ( ) + modelClue1 . getZjjs ( ) ) ;
} else if ( no = = 2 ) {
} else if ( no = = 2 ) {
modelClue1 . setZfcsdjs ( modelClue2 . getZfcsdjs ( ) + modelClue1 . getZfcsdjs ( ) ) ;
modelClue1 . setZfcsdjs ( modelClue2 . getZfcsdjs ( ) + modelClue1 . getZfcsdjs ( ) ) ;
} else if ( no = = 3 ) {
modelClue1 . setZjjs ( modelClue2 . getZjjs ( ) + modelClue1 . getZjjs ( ) ) ;
modelClue1 . setAllZjjs ( modelClue2 . getAllZjjs ( ) + modelClue1 . getAllZjjs ( ) ) ;
}
}
modelClue1 . setData ( modelClue1 . getData ( ) + modelClue2 . getData ( ) ) ;
modelClue1 . setData ( modelClue1 . getData ( ) + modelClue2 . getData ( ) ) ;
found = true ;
found = true ;
@ -1146,6 +1154,9 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
newModelClue . setZjjs ( modelClue2 . getZjjs ( ) ) ;
newModelClue . setZjjs ( modelClue2 . getZjjs ( ) ) ;
} else if ( no = = 2 ) {
} else if ( no = = 2 ) {
newModelClue . setZfcsdjs ( modelClue2 . getZfcsdjs ( ) ) ;
newModelClue . setZfcsdjs ( modelClue2 . getZfcsdjs ( ) ) ;
} else if ( no = = 3 ) {
newModelClue . setZjjs ( modelClue2 . getZjjs ( ) ) ;
newModelClue . setAllZjjs ( modelClue2 . getAllZjjs ( ) ) ;
}
}
modelClues1 . add ( newModelClue ) ;
modelClues1 . add ( newModelClue ) ;
} else {
} else {