@ -457,7 +457,92 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
@Override
@Override
public void warningInstance ( TaskParamDomain domain ) {
public void warningInstance ( TaskParamDomain domain ) {
String startTime = LocalDateTime . of ( 2023 , 12 , 6 , 0 , 0 , 0 ) . format ( DateTimeFormatter . ofPattern ( "yyyy-MM-dd HH:mm:ss" ) ) ;
Map < String , RiskPersonal > idCodelMap = domain . getPersons ( ) . stream ( ) . collect ( Collectors . toMap ( RiskPersonal : : getIdCode , Function . identity ( ) , ( val , old ) - > val ) ) ;
Map < String , RiskPersonal > mobileMap = domain . getPersons ( ) . stream ( ) . filter ( item - > item . getMobileNumber ( ) ! = null & & ! item . getMobileNumber ( ) . isEmpty ( ) ) . collect ( Collectors . toMap ( RiskPersonal : : getMobileNumber , Function . identity ( ) , ( val , old ) - > val ) ) ;
Map < String , List < String > > personJqList = new WeakHashMap < > ( ) ;
int count = gBaseJJDRepository . getBaseMapper ( ) . selectWarningInstanceCount ( startTime ) ;
RiskTask task = taskRepository . create ( count , 64 ) ;
List < GBaseJJD > jjdList ;
int batch = count % 10000 = = 0 ? count / 10000 : ( count / 10000 ) + 1 ;
int pageSize = 10000 ;
for ( int page = 1 ; page < = batch ; page + + ) {
log . info ( "平台涉警进度:{} | {}" , page , batch ) ;
int pageNo = ( page - 1 ) * pageSize ;
jjdList = gBaseJJDRepository . getBaseMapper ( ) . selectWarningInstance ( startTime , pageNo , pageSize ) ;
for ( GBaseJJD jjd : jjdList ) {
RiskPersonal riskPerson = null ;
// 报警人
if ( jjd . getBjrzjhm ( ) ! = null ) {
riskPerson = idCodelMap . get ( jjd . getBjrzjhm ( ) ) ;
} else if ( jjd . getBjdh ( ) ! = null ) {
riskPerson = mobileMap . get ( jjd . getBjdh ( ) ) ;
}
if ( riskPerson ! = null ) {
personJqList . computeIfAbsent ( riskPerson . getIdCode ( ) , k - > new ArrayList < > ( ) ) . add ( jjd . getJjdbh ( ) ) ;
}
// 一个都不放过
String idCard = PatternUtil . takeIdCard ( jjd . getCjqk ( ) ) ;
if ( idCard . isEmpty ( ) ) {
idCard = PatternUtil . takeIdCard ( jjd . getBjnr ( ) ) ;
}
if ( ! idCard . isEmpty ( ) ) {
String [ ] str = idCard . split ( "," ) ;
for ( String s : str ) {
riskPerson = idCodelMap . get ( s ) ;
if ( riskPerson = = null ) continue ;
personJqList . computeIfAbsent ( riskPerson . getIdCode ( ) , k - > new ArrayList < > ( ) ) . add ( jjd . getJjdbh ( ) ) ;
}
}
String mobile = PatternUtil . takeMobile ( jjd . getCjqk ( ) ) ;
if ( mobile . isEmpty ( ) ) {
mobile = PatternUtil . takeMobile ( jjd . getBjnr ( ) ) ;
}
if ( mobile . isEmpty ( ) ) continue ;
String [ ] str = mobile . split ( "," ) ;
for ( String s : str ) {
riskPerson = mobileMap . get ( s ) ;
if ( riskPerson = = null ) continue ;
personJqList . computeIfAbsent ( riskPerson . getIdCode ( ) , k - > new ArrayList < > ( ) ) . add ( jjd . getJjdbh ( ) ) ;
}
}
}
log . info ( "开始统计每个人的警情" ) ;
List < RiskModelTaskClue > toInsert = new ArrayList < > ( ) ;
List < String > list ;
for ( Map . Entry < String , List < String > > entry : personJqList . entrySet ( ) ) {
list = entry . getValue ( ) . stream ( ) . distinct ( ) . toList ( ) ;
RiskPersonal person = idCodelMap . get ( entry . getKey ( ) ) ;
StringBuilder sb = new StringBuilder ( "该人员近一年来有" + list . size ( ) + "起平台涉警事件,接警单编号为:" ) ;
for ( int i = 0 , length = Math . min ( 3 , list . size ( ) ) ; i < length ; i + + ) {
sb . append ( list . get ( i ) ) . append ( "," ) ;
}
ClueData data = ClueData . builder ( )
. name ( person . getName ( ) )
. id ( "" )
. idCode ( person . getIdCode ( ) )
. tags ( List . of ( list . size ( ) + "起平台涉警事件" ) )
. sourceData ( sb . substring ( 0 , sb . length ( ) - 1 ) )
. eventTime ( LocalDateTime . now ( ) )
. personId ( person . getId ( ) )
. score ( Math . min ( 5 , list . size ( ) ) )
. build ( ) ;
toInsert . add ( DataUtil . createClueData ( task , data ) ) ;
}
if ( ! toInsert . isEmpty ( ) ) {
log . info ( "保存平台涉警事件数据:{}" , toInsert . size ( ) ) ;
clueService . saveClues ( toInsert , "B28平台涉警事件" ) ;
}
taskRepository . updateTask ( task . getId ( ) , toInsert . size ( ) , 0 ) ;
}
}
@Override
@Override
@ -1028,13 +1113,13 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
for ( Contradict contradict : contradicts ) {
for ( Contradict contradict : contradicts ) {
switch ( contradict . getType ( ) ) {
switch ( contradict . getType ( ) ) {
case "0" - >
case "0" - >
sb . append ( "\n" ) . append ( " 简单矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) ;
sb . append ( "简单矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) . append ( ", " ) ;
case "1" - >
case "1" - >
sb . append ( "\n" ) . append ( " 一般矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) ;
sb . append ( "一般矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) . append ( ", " ) ;
case "2" - >
case "2" - >
sb . append ( "\n" ) . append ( " 复杂疑难矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) ;
sb . append ( "复杂疑难矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) . append ( ", " ) ;
case "3" - >
case "3" - >
sb . append ( "\n" ) . append ( " 重大矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) ;
sb . append ( "重大矛盾纠纷" ) . append ( contradict . getNumber ( ) . toString ( ) ) . append ( "起" ) . append ( ", " ) ;
}
}
}
}
toInsert . add ( DataUtil . createClueData ( task , ClueData . builder ( )
toInsert . add ( DataUtil . createClueData ( task , ClueData . builder ( )