From 87800a95bb24787cb619c12bceabbe9b2e2c94e6 Mon Sep 17 00:00:00 2001 From: sjh Date: Fri, 1 Nov 2024 19:40:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E8=A6=81=E6=B1=82=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=81=B5=E6=95=8F=E6=84=9F=E7=9F=A5=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supervision/service/ModelClueService.java | 69 +++++++++++++++---- 1 file changed, 56 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/biutag/supervision/service/ModelClueService.java b/src/main/java/com/biutag/supervision/service/ModelClueService.java index affce68..393680d 100644 --- a/src/main/java/com/biutag/supervision/service/ModelClueService.java +++ b/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 { modelClues.addAll(getModelClueBySql(model.getModelSql(), modelId)); } if (!modelClues.isEmpty()) { + List 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 { + ",没有离开时间。"); } } 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 { private static String getAjbh(Map data) { String ajbh = (String) data.get("AJBH"); - return ajbh == null || ajbh.isEmpty() ? "无数据" : ajbh; + return ajbh == null || ajbh.isEmpty() ? "无案件编号数据" : ajbh; } private List getModelCluesForModel4(String param, List modelClues) { @@ -455,7 +468,7 @@ public class ModelClueService extends ServiceImpl { private void getModelCluesForModel16(String param, List modelClues) { System.out.println("模型16开始查询数据库"); List 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> sfzhList = modelClueDataMapper.selectByUniqueKeys(selectSfzh); Map 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 { 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 { 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 { 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 uniqueKeys) { Pattern tablePattern = Pattern.compile("FROM\\s+(\\w+)", Pattern.CASE_INSENSITIVE); Matcher tableMatcher = tablePattern.matcher(originalSql);