@ -27,6 +27,7 @@ import java.time.Instant;
import java.time.LocalDateTime ;
import java.time.ZoneId ;
import java.time.format.DateTimeFormatter ;
import java.time.temporal.ChronoUnit ;
import java.util.* ;
import java.util.regex.Matcher ;
import java.util.regex.Pattern ;
@ -166,12 +167,16 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
modelClues . addAll ( getModelClueBySql ( model . getModelSql ( ) , modelId ) ) ;
}
if ( ! modelClues . isEmpty ( ) ) {
List < ModelClue > result = new ArrayList < > ( ) ;
for ( ModelClue modelClue : modelClues ) {
modelClue . setModelId ( modelId ) ;
modelClue . setCreateTime ( LocalDateTime . now ( ) ) ;
if ( modelClue . getInvolveDepartName ( ) ! = null & & ! modelClue . getInvolveDepartName ( ) . isEmpty ( ) ) {
result . add ( modelClue ) ;
}
}
modelClueMapper . insert ( modelClues ) ;
modelClueRecordMapper . insert ( new ModelClueRecord ( ) . setModelId ( modelId ) . setSize ( modelClues . size ( ) ) . setCreateTime ( LocalDateTime . now ( ) ) . setState ( "success" ) ) ;
modelClueMapper . insert ( result ) ;
modelClueRecordMapper . insert ( new ModelClueRecord ( ) . setModelId ( modelId ) . setSize ( result . size ( ) ) . setCreateTime ( LocalDateTime . now ( ) ) . setState ( "success" ) ) ;
} else {
modelClueRecordMapper . insert ( new ModelClueRecord ( ) . setModelId ( modelId ) . setSize ( 0 ) . setCreateTime ( LocalDateTime . now ( ) ) . setState ( "fail" ) . setErrMsg ( "数据为空" ) ) ;
}
@ -295,13 +300,21 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
+ ",没有离开时间。" ) ;
}
} else if ( modelId = = 10 ) { // 10号模型:案件受理不及时的异常数据
modelClue . setThingDesc ( "该" + data . get ( "AJBZmc" )
+ "案件编号为" + getAjbh ( data )
+ ",报案日期为" + getDateString ( data . get ( "BARQ" ) )
+ ",受理日期为" + getDateString ( data . get ( "SLRQ" ) )
+ ",当前案件状态为“" + data . get ( "AJZTmc" )
+ "”,超过" + "3"
+ "日未受理。" ) ;
String calculateDays = calculateDaysBetween ( data . get ( "BARQ" ) , data . get ( "SLRQ" ) ) ;
if ( calculateDays ! = null ) {
modelClue . setThingDesc (
"发现编号为" + getAjbh ( data )
+ "的" + data . get ( "AJBZmc" ) + "案件,报案日期为" + getDateString ( data . get ( "BARQ" ) )
+ ",但受理日期为" + getDateString ( data . get ( "SLRQ" ) )
+ ",受理时间超过了报案日期" + calculateDaysBetween ( data . get ( "BARQ" ) , data . get ( "SLRQ" ) )
+ "日,当前案件状态为“" + data . get ( "AJZTmc" ) + "”,存在案件受理不及时的问题。" ) ;
} else {
modelClue . setThingDesc (
"发现编号为" + getAjbh ( data )
+ "的" + data . get ( "AJBZmc" ) + "案件,报案日期为" + getDateString ( data . get ( "BARQ" ) )
+ ",但受理日期为" + getDateString ( data . get ( "SLRQ" ) )
+ ",受理时间超过了报案日期,当前案件状态为“" + data . get ( "AJZTmc" ) + "”,存在案件受理不及时的问题。" ) ;
}
} else if ( modelId = = 11 ) { // 11号模型:立案不及时的异常数据(7天)
modelClue . setThingDesc ( "该" + data . get ( "AJBZmc" )
+ "案件编号为" + getAjbh ( data )
@ -343,7 +356,7 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
private static String getAjbh ( Map < String , Object > data ) {
String ajbh = ( String ) data . get ( "AJBH" ) ;
return ajbh = = null | | ajbh . isEmpty ( ) ? "无数据" : ajbh ;
return ajbh = = null | | ajbh . isEmpty ( ) ? "无案件编号 数据" : ajbh ;
}
private List < ModelClue > getModelCluesForModel4 ( String param , List < ModelClue > modelClues ) {
@ -455,7 +468,7 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
private void getModelCluesForModel16 ( String param , List < ModelClue > modelClues ) {
System . out . println ( "模型16开始查询数据库" ) ;
List < String > params = parseSqlForModel2 ( param ) ;
String selectSfzh = "SELECT count(sfzh) as num, sfzh FROM dwd_wp_zfba_qbhsjds WHERE STR_TO_DATE(pzrq, '%Y%m%d%H%i%s') BETWEEN '" + params . get ( 0 ) + " 00:00:00' AND '" + params . get ( 1 ) + " 00:00:00' GROUP BY sfzh HAVING count(sfzh) > 2;" ;
String selectSfzh = "SELECT count(sfzh) as num, sfzh FROM dwd_wp_zfba_qbhsjds WHERE STR_TO_DATE(pzrq, '%Y%m%d%H%i%s') BETWEEN '" + params . get ( 0 ) + " 00:00:00' AND '" + params . get ( 1 ) + " 00:00:00' GROUP BY sfzh, ajbh HAVING count(sfzh) > 2;" ;
List < Map < String , Object > > sfzhList = modelClueDataMapper . selectByUniqueKeys ( selectSfzh ) ;
Map < String , Long > sfzhMap = sfzhList . stream ( ) . filter ( map - > map . get ( "sfzh" ) ! = null ) . collect ( Collectors . toMap (
map - > ( String ) map . get ( "sfzh" ) ,
@ -657,7 +670,7 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
Instant instant = parse . toInstant ( ) ;
ZoneId zoneId = ZoneId . systemDefault ( ) ;
LocalDateTime localDateTime = instant . atZone ( zoneId ) . toLocalDateTime ( ) ;
DateTimeFormatter formatter = DateTimeFormatter . ofPattern ( "yyyy-MM-dd HH:mm:ss " ) ;
DateTimeFormatter formatter = DateTimeFormatter . ofPattern ( "yyyy年MM月dd日HH时mm分 " ) ;
return formatter . format ( localDateTime ) ;
} catch ( Exception e ) {
try {
@ -667,7 +680,7 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
Instant instant = parse . toInstant ( ) ;
ZoneId zoneId = ZoneId . systemDefault ( ) ;
LocalDateTime localDateTime = instant . atZone ( zoneId ) . toLocalDateTime ( ) ;
DateTimeFormatter formatter = DateTimeFormatter . ofPattern ( "yyyy-MM-dd HH:mm:ss " ) ;
DateTimeFormatter formatter = DateTimeFormatter . ofPattern ( "yyyy年MM月dd日HH时mm分 " ) ;
return formatter . format ( localDateTime ) ;
} catch ( Exception ex ) {
log . info ( "日期转换异常{}" , time , ex ) ;
@ -677,6 +690,36 @@ public class ModelClueService extends ServiceImpl<ModelClueMapper, ModelClue> {
return " 无时间数据 " ;
}
public static String calculateDaysBetween ( Object param1 , Object param2 ) {
if ( param1 = = null | | param2 = = null ) {
return null ;
}
try {
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd'T'HH:mm:ss" ) ;
Date date1 = sdf . parse ( String . valueOf ( param1 ) ) ;
Date date2 = sdf . parse ( String . valueOf ( param2 ) ) ;
LocalDateTime dateTime1 = date1 . toInstant ( ) . atZone ( ZoneId . systemDefault ( ) ) . toLocalDateTime ( ) ;
LocalDateTime dateTime2 = date2 . toInstant ( ) . atZone ( ZoneId . systemDefault ( ) ) . toLocalDateTime ( ) ;
LocalDateTime nextDay = dateTime1 . plusDays ( 1 ) ;
long daysBetween = ChronoUnit . DAYS . between ( nextDay , dateTime2 ) ;
return String . valueOf ( daysBetween ) ;
} catch ( Exception e ) {
try {
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss.S" ) ;
Date date1 = sdf . parse ( String . valueOf ( param1 ) ) ;
Date date2 = sdf . parse ( String . valueOf ( param2 ) ) ;
LocalDateTime dateTime1 = date1 . toInstant ( ) . atZone ( ZoneId . systemDefault ( ) ) . toLocalDateTime ( ) ;
LocalDateTime dateTime2 = date2 . toInstant ( ) . atZone ( ZoneId . systemDefault ( ) ) . toLocalDateTime ( ) ;
LocalDateTime nextDay = dateTime1 . plusDays ( 1 ) ;
long daysBetween = ChronoUnit . DAYS . between ( nextDay , dateTime2 ) ;
return String . valueOf ( daysBetween ) ;
} catch ( Exception ex ) {
ex . printStackTrace ( ) ;
return null ;
}
}
}
public static String generateNewSql ( String originalSql , List < String > uniqueKeys ) {
Pattern tablePattern = Pattern . compile ( "FROM\\s+(\\w+)" , Pattern . CASE_INSENSITIVE ) ;
Matcher tableMatcher = tablePattern . matcher ( originalSql ) ;