Browse Source

按要求修改灵敏感知模型

main
sjh 1 year ago
parent
commit
87800a95bb
  1. 69
      src/main/java/com/biutag/supervision/service/ModelClueService.java

69
src/main/java/com/biutag/supervision/service/ModelClueService.java

@ -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);

Loading…
Cancel
Save