From 49f18d04dbb0a6ff715a0796bdee808754734078 Mon Sep 17 00:00:00 2001 From: sjh Date: Tue, 26 Nov 2024 17:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=A8=A1=E5=9E=8B=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biutag/supervisiondata/config/db/Dm.java | 2 - .../supervisiondata/rest/ApiController.java | 12 ++++ .../service/ModelClueService.java | 1 + .../service/impl/ModelClueServiceImpl.java | 63 +++++++++++++------ .../supervisiondata/task/TaskService.java | 12 ++++ 5 files changed, 70 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/biutag/supervisiondata/config/db/Dm.java b/src/main/java/com/biutag/supervisiondata/config/db/Dm.java index 2d9cc7a..4b2716b 100644 --- a/src/main/java/com/biutag/supervisiondata/config/db/Dm.java +++ b/src/main/java/com/biutag/supervisiondata/config/db/Dm.java @@ -40,8 +40,6 @@ public class Dm { final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); sessionFactory.setPlugins(mybatisPlusInterceptor); sessionFactory.setDataSource(mysqlDataSource); -// PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); -// sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/dm/*Mapper.xml")); GlobalConfig globalConfig = GlobalConfigUtils.defaults(); sessionFactory.setGlobalConfig(globalConfig); return sessionFactory.getObject(); diff --git a/src/main/java/com/biutag/supervisiondata/rest/ApiController.java b/src/main/java/com/biutag/supervisiondata/rest/ApiController.java index 95d65c5..5b1be8f 100644 --- a/src/main/java/com/biutag/supervisiondata/rest/ApiController.java +++ b/src/main/java/com/biutag/supervisiondata/rest/ApiController.java @@ -3,10 +3,12 @@ package com.biutag.supervisiondata.rest; import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; import com.biutag.supervisiondata.common.response.RS; import com.biutag.supervisiondata.lock.LocalLock; +import com.biutag.supervisiondata.service.ModelClueService; import com.biutag.supervisiondata.service.RiskScoreRuleService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -26,6 +28,8 @@ public class ApiController { private final RiskScoreRuleService riskScoreRuleService; + private final ModelClueService modelClueService; + @GetMapping("/score") public RS score(String idCodes) { if(LocalLock.scoreLock){ @@ -48,4 +52,12 @@ public class ApiController { }); return RS.success(); } + + @GetMapping("/model/{modelId}") + public RS score(@PathVariable Integer modelId) { + System.out.println("开始执行模型" + modelId); + modelClueService.generate(modelId); + System.out.println("模型" + modelId + "执行完毕"); + return RS.success(); + } } diff --git a/src/main/java/com/biutag/supervisiondata/service/ModelClueService.java b/src/main/java/com/biutag/supervisiondata/service/ModelClueService.java index ba7fef4..57cf132 100644 --- a/src/main/java/com/biutag/supervisiondata/service/ModelClueService.java +++ b/src/main/java/com/biutag/supervisiondata/service/ModelClueService.java @@ -1,4 +1,5 @@ package com.biutag.supervisiondata.service; public interface ModelClueService { + void generate(Integer modelId); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/ModelClueServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/ModelClueServiceImpl.java index 2b093fa..6015776 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/ModelClueServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/ModelClueServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.biutag.supervisiondata.mapper.dwd.ModelClueDataMapper; import com.biutag.supervisiondata.mapper.mine.ModelClueMapper; import com.biutag.supervisiondata.pojo.entity.mine.*; @@ -100,10 +101,10 @@ public class ModelClueServiceImpl implements ModelClueService { List modelClues = new ArrayList<>(); if (modelId == 2) { // 2号模型:行政、刑事案件受立案不及时问题监督模型 return getModelCluesForModel2(sql, modelClues); - } else if (modelId == 4) { // 4号模型:疑似漏登执法办案场所问题监督模型 - return getModelCluesForModel4(sql, modelClues); - } else if (modelId == 5) { // 5号模型:重点人员重复报警监督模型 - getModelCluesForModel5(sql, modelClues); +// } else if (modelId == 4) { // 4号模型:疑似漏登执法办案场所问题监督模型 +// return getModelCluesForModel4(sql, modelClues); + } else if (modelId == 7) { // 7号模型:重点人员重复报警监督模型 + getModelCluesForModel7(sql, modelClues); return modelClues; } else if (modelId == 16) { // 16号模型:多次取保的异常数据 getModelCluesForModel16(sql, modelClues); @@ -117,16 +118,18 @@ public class ModelClueServiceImpl implements ModelClueService { } else if (modelId == 22) { // 22号模型:执法记录仪使用不规范问题 getModelCluesForModel22(sql, modelClues); return modelClues; + } else if (modelId == 23) { // 23号模型:保安员预警 + modelClueDataMapper.delete(Wrappers.lambdaUpdate().eq(ModelClue::getModelId, 23)); } else if (modelId == 25) { // 25号模型:重点人员管控人数过多 getModelCluesForModel25(sql, modelClues); return modelClues; } else if (modelId == 103) { // 103号模型:接处警不及时的异常数据 getModelCluesForModel103(sql, modelClues); return modelClues; - } else if (modelId == 104) { // 模型104:大量变更接警性质的预警模型 + } else if (modelId == 104) { // 104号模型:大量变更接警性质的预警模型 getModelCluesForModel104(sql, modelClues); return modelClues; - } else if (modelId == 105) { // 模型105:近一月同一人同一类型问题出现3次以上的异常数据 + } else if (modelId == 105) { // 105号模型:近一月同一人同一类型问题出现3次以上的异常数据 getModelCluesForModel105(sql, modelClues); return modelClues; } else { @@ -186,12 +189,12 @@ public class ModelClueServiceImpl implements ModelClueService { return needsInsertModelClues; } - private void getModelCluesForModel5(String param, List modelClues) { + private void getModelCluesForModel7(String param, List modelClues) { // List jsonStrings = redisTemplate.opsForList().range("call:point", 0, -1); List jsonStrings = riskTestRepository.list((Wrapper) null); if (jsonStrings != null) { - System.out.println("获取到的数据条数:" + jsonStrings.size()); + System.out.println("模型7获取到的数据条数:" + jsonStrings.size()); try { for (RiskTest json : jsonStrings) { String jsonString = json.getName(); @@ -247,7 +250,7 @@ public class ModelClueServiceImpl implements ModelClueService { modelClues.add(newModelClue); } } catch (Exception e) { - log.error("模型5执行失败", e); + log.error("模型7执行失败", e); } } else { System.out.println("Redis未找到key'call:point'"); @@ -561,11 +564,16 @@ public class ModelClueServiceImpl implements ModelClueService { return ajbh == null || ajbh.isEmpty() ? "无案件编号数据" : ajbh; } + /* private List getModelCluesForModel4(String param, List modelClues) { System.out.println("模型4开始查询数据库"); - List params = parseSqlForModel2(param); - String jjdSql = "SELECT gxdwdm AS involve_depart_id, gxdwmc AS involve_depart_name, COUNT(*) AS zjjs FROM dwd_asj_zhtx_jjd WHERE cjsj BETWEEN '" + params.get(0) + " 00:00:00' AND '" + params.get(1) + " 00:00:00' GROUP BY gxdwdm, gxdwmc;"; - String zfqySql = "SELECT csid AS involve_depart_id, COUNT(*) AS zfcsdjs FROM dwd_ry_zfba_zfqywfryb WHERE STR_TO_DATE( djsj, '%Y%m%d%H%i%s' ) BETWEEN '" + params.get(0) + " 00:00:00' AND '" + params.get(1) + " 00:00:00' GROUP BY csid;"; +// List params = parseSqlForModel2(param); + // 定时前 + String jjdSql = "SELECT gxdwdm AS involve_depart_id, gxdwmc AS involve_depart_name, COUNT(*) AS zjjs FROM dwd_asj_zhtx_jjd WHERE cjsj BETWEEN '2024-10-01 00:00:00' AND '2024-11-01 00:00:00' GROUP BY gxdwdm, gxdwmc;"; + String zfqySql = "SELECT csid AS involve_depart_id, COUNT(*) AS zfcsdjs FROM dwd_ry_zfba_zfqywfryb WHERE STR_TO_DATE( djsj, '%Y%m%d%H%i%s' ) BETWEEN '2024-10-01 00:00:00' AND '2024-10-01 00:00:00' GROUP BY csid;"; + // 定时任务 +// String jjdSql = "SELECT gxdwdm AS involve_depart_id, gxdwmc AS involve_depart_name, COUNT(*) AS zjjs FROM dwd_asj_zhtx_jjd WHERE cjsj >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND cjsj < CURDATE() GROUP BY gxdwdm, gxdwmc;"; +// String zfqySql = "SELECT csid AS involve_depart_id, COUNT(*) AS zfcsdjs FROM dwd_ry_zfba_zfqywfryb WHERE STR_TO_DATE( djsj, '%Y%m%d%H%i%s' ) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND STR_TO_DATE( djsj, '%Y%m%d%H%i%s' ) < CURDATE() GROUP BY csid;"; List> jjdmaps = modelClueDataMapper.selectByUniqueKeys(jjdSql); List> zfqymaps = modelClueDataMapper.selectByUniqueKeys(zfqySql); System.out.println("模型4查询数据库完毕"); @@ -666,7 +674,7 @@ public class ModelClueServiceImpl implements ModelClueService { modelClues.addAll(jjdModelClues3); return modelClues; } - +*/ private void getModelCluesForModel16(String param, List modelClues) { System.out.println("模型16开始查询数据库"); List params = parseSqlForModel2(param); @@ -794,7 +802,8 @@ public class ModelClueServiceImpl implements ModelClueService { private void getModelCluesForModel20(String param, List modelClues) { System.out.println("模型20开始查询数据库"); - String sql = "select * from dwd_qb_nbgl_lxqtscsygxjl where STR_TO_DATE(tjrq, '%Y-%m-%d') = CURDATE() - INTERVAL " + param + " DAY;"; + // 定时任务 + String sql = "select * from dwd_qb_nbgl_lxqtscsygxjl where STR_TO_DATE(tjrq, '%Y-%m-%d') = (CURDATE() - INTERVAL 1 DAY);"; List> sqlList = modelClueDataMapper.selectByUniqueKeys(sql); System.out.println("模型20查询数据库完毕,结果数量:" + sqlList.size()); if (sqlList.isEmpty()) { @@ -821,8 +830,10 @@ public class ModelClueServiceImpl implements ModelClueService { } } - private void getModelCluesForModel22(String sql, List modelClues) { + private void getModelCluesForModel22(String param, List modelClues) { System.out.println("模型22开始查询数据库"); + // 定时任务 + String sql = "select * from \"JSDZ_4GDB\".\"v_anomaly_statistics\" where \"CREATETIME\" = " + getSpeDayString(1); List> sqlList = modelClueDataDMRepository.selectByUniqueKeys(sql); System.out.println("模型22查询数据库完毕,结果数量:" + sqlList.size()); if (sqlList.isEmpty()) { @@ -900,6 +911,7 @@ public class ModelClueServiceImpl implements ModelClueService { } private void getModelCluesForModel25(String sql, List modelClues) { + modelClueDataMapper.delete(Wrappers.lambdaUpdate().eq(ModelClue::getModelId, 25)); System.out.println("模型25开始查询数据库"); List> sqlList = modelClueDataMapper.selectByUniqueKeys(sql); System.out.println("模型25查询数据库完毕,结果数量:" + sqlList.size()); @@ -1005,8 +1017,9 @@ public class ModelClueServiceImpl implements ModelClueService { private void getModelCluesForModel104(String param, List modelClues) { System.out.println("模型104开始查询数据库"); - List params = parseSqlForModel2(param); - 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 params = parseSqlForModel2(param); + // 定时任务 + 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 >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND bjsj < CURDATE()) 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 >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND bjsj < CURDATE()) 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> jjdmaps = modelClueDataMapper.selectByUniqueKeys(sql); System.out.println("模型104查询数据库完毕,结果数量:" + jjdmaps.size()); if (jjdmaps.isEmpty()) { @@ -1068,7 +1081,7 @@ public class ModelClueServiceImpl implements ModelClueService { } newModelClue.setDistributionState("0"); newModelClue.setThingDesc("发现" + newModelClue.getInvolveDepartName() - + "在" + getDateString(params.get(0)) + "到" + getDateString(params.get(1)) + + "在" + getDateString(getSpeDayString(30)) + "到" + getDateString(getTodayString()) + "之间共有" + departAllNumMap.get(department) + "个警情,变更了" + departNumMap.get(department) + "个警情的结警性质,超过了该单位总警情的70%,存在大量变更接警性质的异常情况。"); newModelClue.setData(newModelClue.getThingDesc()); @@ -1077,6 +1090,7 @@ public class ModelClueServiceImpl implements ModelClueService { } private void getModelCluesForModel105(String sql, List modelClues) { + modelClueDataMapper.delete(Wrappers.lambdaUpdate().eq(ModelClue::getModelId, 105)); System.out.println("模型105开始查询数据库"); List> sqlList = modelClueMapper.selectByUniqueKeys(sql); System.out.println("模型105查询数据库完毕,结果数量:" + sqlList.size()); @@ -1240,6 +1254,19 @@ public class ModelClueServiceImpl implements ModelClueService { } } + private static String getSpeDayString(int days) { + LocalDate today = LocalDate.now(); + LocalDate result = today.minusDays(days); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); + return result.format(formatter); + } + + private static String getTodayString() { + LocalDate today = LocalDate.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + return today.format(formatter); + } + private static String getDateMinuteString(Object param) { if (param != null) { String time = null; diff --git a/src/main/java/com/biutag/supervisiondata/task/TaskService.java b/src/main/java/com/biutag/supervisiondata/task/TaskService.java index 189c20d..cadc391 100644 --- a/src/main/java/com/biutag/supervisiondata/task/TaskService.java +++ b/src/main/java/com/biutag/supervisiondata/task/TaskService.java @@ -1,5 +1,7 @@ package com.biutag.supervisiondata.task; +import com.biutag.supervisiondata.service.ModelClueService; +import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -12,11 +14,21 @@ import org.springframework.stereotype.Component; */ @Component @Slf4j +@AllArgsConstructor public class TaskService { + private final ModelClueService modelClueService; @Scheduled(cron = "0 0/10 * * * ?") public void ageModel() { } + @Scheduled(cron = "* * 3 * * *") + public void runModel() { + + System.out.println("开始执行模型" + modelId); + modelClueService.generate(modelId); + System.out.println("模型" + modelId + "执行完毕"); + } + }