Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
master
sjh 1 year ago
parent
commit
aca44e12da
  1. 57
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 2
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java
  3. 4
      src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java
  4. 5
      src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java
  5. 10
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  6. 93
      src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java
  7. 62
      src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java
  8. 144
      src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java
  9. 18
      src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java
  10. 6
      src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java

57
src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java

@ -111,24 +111,25 @@ public class ApplicationEvent {
// gBaseJJDService.pullAndSave(LocalDateTime.of(2023, 12, 6, 0, 0, 0), end);
// riskPersonalService.fixed();
// personalService.syncPerson(LocalDate.now());
// 32,33,34,39,41,51,53,43,63
// 36 60 61 62 44 45 48 52 59 64
// petitionService.petitionModelTask(initDomain(List.of(40)));
riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41)));
riskTaskService.infoModelTask(initDomain(List.of(32,33)));
marriageService.marriageModelTask(initDomain(List.of(39,51)));
// riskTaskService.eduAndAreaModelTask(initDomain(List.of(34,41)));
// riskTaskService.infoModelTask(initDomain(List.of(32,33)));
// marriageService.marriageModelTask(initDomain(List.of(39,51)));
// pointService.syncSecurity(initDomain(List.of(37)));
// habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62)));
pointService.syncCarUser(initDomain(List.of(53)));
pointService.syncScore(initDomain(List.of(43)));
// pointService.syncViolence(initDomain(List.of(44)));
// noControlService.syncNoControlData(initDomain(List.of(45)));
habitService.habitModelTask(LocalDateTime.of(2023, 12, 6, 0, 0, 0), initDomain(List.of(36,60,61,62)));
// pointService.syncCarUser(initDomain(List.of(53)));
// pointService.syncScore(initDomain(List.of(43)));
pointService.syncViolence(initDomain(List.of(44)));
noControlService.syncNoControlData(initDomain(List.of(45)));
// pointService.syncDrug(initDomain(List.of(37)));
// pointService.syncControlNoPower(initDomain(List.of(48)));
// pointService.syncOilBuy(initDomain(List.of(52)));
pointService.syncControlNoPower(initDomain(List.of(48)));
pointService.syncOilBuy(initDomain(List.of(52)));
// gBaseJJDService.pullPoliceInstance(LocalDateTime.of(2023, 12, 6, 0, 0, 0), end, initDomain(List.of(55,56,57,58)));
// jsbryService.syncPys(initDomain(List.of(59)));
gBaseSHRWFRService.combatCrime(initDomain(List.of(63)));
// gBaseJJDService.syncPoliceAttack(initDomain(List.of(64)));
jsbryService.syncPys(initDomain(List.of(59)));
// gBaseSHRWFRService.combatCrime(initDomain(List.of(63)));
gBaseJJDService.syncPoliceAttack(initDomain(List.of(64)));
// gBaseJJDService.syncHomeViolence(initDomain(List.of(65,66)));
// pointService.syncPointType(initDomain(List.of(67)));
// gBaseSHRWFRService.hadWork(initDomain(List.of(68)));
@ -146,23 +147,23 @@ public class ApplicationEvent {
// pointService.syncAdministrativePunishment(initDomain(List.of(116)));
// pointService.syncParentsDivorce(initDomain(List.of(117)));
// pointService.syncFamilyDie(initDomain(List.of(118)));
pointService.syncFatherDie(initDomain(List.of(119)));
pointService.syncMotherDie(initDomain(List.of(120)));
pointService.syncChildNo(initDomain(List.of(121)));
pointService.syncXIDU(initDomain(List.of(122)));
pointService.syncFiliation(initDomain(List.of(123)));
// pointService.syncFatherDie(initDomain(List.of(119)));
// pointService.syncMotherDie(initDomain(List.of(120)));
// pointService.syncChildNo(initDomain(List.of(121)));
// pointService.syncXIDU(initDomain(List.of(122)));
// pointService.syncFiliation(initDomain(List.of(123)));
// 必须在123后面
// gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
pointService.syncPetitionContent(initDomain(List.of(124)));
pointService.syncMedicalPressure(initDomain(List.of(125)));
pointService.syncSeriousIllness(initDomain(List.of(126)));
pointService.syncFamilySeriousIllness(initDomain(List.of(127)));
pointService.syncPetitionDissatisfied(initDomain(List.of(128)));
pointService.syncIsSpecialPeople(initDomain(List.of(129)));
pointService.syncSpecialPeopleType(initDomain(List.of(130)));
pointService.syncParentsRelationship(initDomain(List.of(131)));
pointService.syncMentalDiseaseDriver(initDomain(List.of(132)));
// pointService.syncPetitionContent(initDomain(List.of(124)));
// pointService.syncMedicalPressure(initDomain(List.of(125)));
// pointService.syncSeriousIllness(initDomain(List.of(126)));
// pointService.syncFamilySeriousIllness(initDomain(List.of(127)));
// pointService.syncPetitionDissatisfied(initDomain(List.of(128)));
// pointService.syncIsSpecialPeople(initDomain(List.of(129)));
// pointService.syncSpecialPeopleType(initDomain(List.of(130)));
// pointService.syncParentsRelationship(initDomain(List.of(131)));
// pointService.syncMentalDiseaseDriver(initDomain(List.of(132)));
// *********暂时不要**********
// riskTaskService.heightFight(initDomain(List.of(42)));
// pointService.syncKillSelf(initDomain(List.of(46)));

2
src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java

@ -24,7 +24,7 @@ public interface GBaseZDRYMapper extends BaseMapper<GBaseZDRY> {
@Select(" select a.AJBH as ajbh, a.AJMC as ajmc, a.JYAQ as jyaq, a.BARQ as barq, b.XM as xm, b.XBmc as xbmc, b.ZJHM as zjhm, a.AJLBmc as ajlbmc, b.WFSS as wfss, a.BADWIDdm as badwiddm, a.BADWIDmc as badwidmc " +
" from csga_dwd.dwd_asj_zfba_ajjbxx a, csga_dwd.dwd_ry_zfba_wfryxx b, csga_wdpcdb.wdpc_grjd_flxx c " +
" where a.ajbh = b.ajbh and a.AJLBdm = c.AJLBdm and c.LXDM = '3' AND a.BARQ > DATE_ADD(now(), INTERVAL -12 MONTH) ")
" where a.ajbh = b.ajbh and a.AJLBdm = c.AJLBdm and c.LXDM = '3' and b.ZJHM is not null AND a.BARQ > DATE_ADD(now(), INTERVAL -12 MONTH) ")
List<Violence> syncViolencePerson();
@Select("SELECT jjdbh, bjsj, bjrxm, IF(LENGTH(bjrlxdh) < 11, REGEXP_SUBSTR(bjnr, '[0-9]{11}'), bjrlxdh) AS bjrlxdh, IF(bjrzjhm IS NULL, REGEXP_SUBSTR(bjnr, '[0-9]{17}[0-9Xx]'), bjrzjhm) as bjrzjhm, bjnr, cjqk, gxdwdm, gxdwmc FROM `dwd_asj_zhtx_jjd` where (jqxzdm like '020107%' OR jqbz like '%个人极端%' ) AND bjsj > DATE_ADD(now(), INTERVAL -12 MONTH)")
List<Extreme> syncKillSelf();

4
src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java

@ -76,6 +76,10 @@ public class RiskModelTaskClue implements Serializable {
*/
@TableField("risk_reason")
String riskReason;
/**
* 来源
*/
Integer source;
/**
* 数据详情 JSON
*/

5
src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java

@ -45,6 +45,11 @@ public class RiskPersonalTag implements Serializable {
*/
@TableField("small_tag")
String smallTag;
/**
* 模型id
*/
@TableField("model_id")
Integer modelId;
/**
* 标签时间
*/

10
src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java

@ -21,10 +21,7 @@ import com.biutag.supervisiondata.repository.*;
import com.biutag.supervisiondata.service.GBaseJJDService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.service.RiskPersonalService;
import com.biutag.supervisiondata.util.BhUtil;
import com.biutag.supervisiondata.util.IdCodeUtil;
import com.biutag.supervisiondata.util.OrgUtil;
import com.biutag.supervisiondata.util.PatternUtil;
import com.biutag.supervisiondata.util.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -442,12 +439,13 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
.name(person.getName())
.id("ptsjsj")
.idCode(person.getIdCode())
.tag("平台涉警事件")
.tags(List.of("平台涉警事件"))
.sourceData(sb.substring(0, sb.length()-1))
.eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now()))
.personId(person.getId())
.score(Math.min(5,jjdList.size()))
.build();
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
toInsert.add(DataUtil.createClueData(task, data));
}
log.info("保存袭警数据:{}", toInsert.size());
if (!toInsert.isEmpty()) {

93
src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java

@ -15,6 +15,7 @@ import com.biutag.supervisiondata.repository.*;
import com.biutag.supervisiondata.service.HabitService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.util.BhUtil;
import com.biutag.supervisiondata.util.DataUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -93,31 +94,19 @@ public class HabitServiceImpl implements HabitService {
List<RiskModelTaskClue> toInsert1 = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
List<RiskModelTaskClue> toInsert3 = new ArrayList<>();
CompletableFuture.allOf(
CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为"))),
CompletableFutureUtil.runSyncObject(() -> toInsert2.addAll(findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为"))),
CompletableFutureUtil.runSyncObject(() -> toInsert3.addAll(findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为")))
CompletableFutureUtil.runSyncObject(() -> toInsert1.addAll(findBadHabit(ajNos, targetAjList, task, domain, "酗酒行为", "B35酗酒"))),
CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos2, targetAjList2, task2, domain, "赌博行为", "B37赌博")),
CompletableFutureUtil.runSyncObject(() -> findBadHabit(ajNos3, targetAjList3, task3, domain, "其它成瘾行为", "B40其它成瘾行为"))
).join();
log.info("开始进行数据库操作");
if(!toInsert1.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert1, Default.HABBIT_IG);
}
if(!toInsert2.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert2, Default.HABBIT_IG);
}
if(!toInsert3.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert3, Default.HABBIT_IG);
}
riskTaskRepository.updateTask(task.getId(), toInsert1.size(), 0);
riskTaskRepository.updateTask(task2.getId(), toInsert2.size(), 0);
riskTaskRepository.updateTask(task3.getId(), toInsert3.size(), 0);
if(toInsert1.isEmpty()) {
return;
}
// 近一年酗酒
RiskTask task4 = riskTaskRepository.create(toInsert1.size(), 62);
@ -125,22 +114,15 @@ public class HabitServiceImpl implements HabitService {
List<RiskModelTaskClue> toInsertYears = new ArrayList<>();
for (RiskModelTaskClue clue : toInsert1) {
if(!limit.isBefore(clue.getEventTime())) {
continue;
}
if(old.get(clue.getIdCode()) == null) {
clue.setModelId(task4.getModelId());
clue.setTaskId(task4.getId());
clue.setData(clue.getData().replace(",存在"+clue.getRiskReason()+",", ",近一年内存在"+clue.getRiskReason()+"行为,"));
clue.setRiskReason(Default.YEAR_DRINK);
toInsertYears.add(clue);
continue;
}
old.remove(clue.getIdCode());
}
if(!toInsertYears.isEmpty()) {
riskModelTaskClueService.saveClues(toInsertYears, Default.HABBIT_IG);
riskModelTaskClueService.saveClues(toInsertYears, "B78酗酒");
}
List<RiskModelTaskClue> toUpdate = new ArrayList<>();
List<String> idCodes = new ArrayList<>();
@ -163,7 +145,7 @@ public class HabitServiceImpl implements HabitService {
riskTaskRepository.updateTask(task4.getId(), toInsertYears.size(), toUpdate.size());
}
List<RiskModelTaskClue> findBadHabit(List<String> ajNos, List<GBaseAJJBXX> targetAjList, RiskTask task, TaskParamDomain domain, String tag) {
List<RiskModelTaskClue> findBadHabit(List<String> ajNos, List<GBaseAJJBXX> targetAjList, RiskTask task, TaskParamDomain domain, String tag, String bigTag) {
List<List<String>> ajNo = IntStream.range(0, (ajNos.size() + 9999) / 10000)
.mapToObj(i -> ajNos.subList(i * 10000, Math.min((i + 1) * 10000, ajNos.size())))
.toList();
@ -179,8 +161,13 @@ public class HabitServiceImpl implements HabitService {
// 人员的旧线索
Map<String, List<RiskModelTaskClue>> clueMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> clues;
LocalDateTime limit = LocalDateTime.now().minusYears(1);
// 创建新数据
List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<RiskModelTaskClue> toInsert2 = new ArrayList<>();
log.info("开始遍历人员:{}", wfrMap.size());
for (RiskPersonal person : domain.getPersons()) {
List<GBaseWFRXX> wfTmp = Optional.ofNullable(wfrMap.get(person.getIdCode())).orElse(new ArrayList<>());
@ -195,15 +182,23 @@ public class HabitServiceImpl implements HabitService {
}
StringBuilder sb = new StringBuilder("结合案件信息和违法人信息相关数据,发现该人员有"+wfTmp.size()+"起"+tag+"相关案件,相关案件编号为:");
StringBuilder ajs = new StringBuilder();
LocalDateTime eventTime = null;
int count = 0;
int size = 0;
for (GBaseWFRXX gBaseWFRXX : wfTmp) {
GBaseAJJBXX aj = ajMap.get(gBaseWFRXX.getAjbh());
if (aj == null) {
continue;
}
sb.append(gBaseWFRXX.getAjbh()).append(",");
size++;
try {
LocalDateTime tmp = aj.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if(tmp.isAfter(limit)) {
count++;
ajs.append(aj.getAjbh()).append(",");
}
if(eventTime == null) {
eventTime = tmp;
continue;
@ -213,36 +208,36 @@ public class HabitServiceImpl implements HabitService {
}
} catch (Exception ignored) {
}
}
ClueData data = ClueData.builder()
.id("habit")
.name(person.getName())
.idCode(person.getIdCode())
.tag(tag)
.tags(List.of(tag))
.personId(person.getId())
.sourceData(sb.substring(0, sb.length()-1))
.score(Math.min(size, 5))
.eventTime(Optional.ofNullable(eventTime).orElse(LocalDateTime.now()))
.build();
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
}
return toInsert;
}
RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setModelId(modelId);
clue.setScore(score);
clue.setName(data.getName());
clue.setIdCode(data.getIdCode());
clue.setTaskId(taskId);
clue.setData(data.getSourceData());
clue.setEventTime(data.getEventTime());
clue.setCreateTime(LocalDateTime.now());
clue.setUpdateTime(LocalDateTime.now());
clue.setCaseIds(BhUtil.ajBh(data.getId()));
data.setPersonId(null);
clue.setRiskReason(data.getTag());
return clue;
toInsert.add(DataUtil.createClueData(task, data));
if(count > 0) {
toInsert2.add(DataUtil.createClueData(new RiskTask(), ClueData.builder()
.id("habit2")
.name(person.getName())
.idCode(person.getIdCode())
.tags(List.of(Default.YEAR_DRINK))
.score(5)
.personId(person.getId())
.sourceData("发现该人员近一年内有酗酒行为,具体案件为:"+ajs.substring(0, ajs.length()-1))
.eventTime(LocalDateTime.now())
.build()));
}
}
if(!toInsert.isEmpty()) {
riskModelTaskClueService.saveClues(toInsert, bigTag);
}
riskTaskRepository.updateTask(task.getId(), toInsert.size(), 0);
return toInsert2;
}
}

62
src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java

@ -1,5 +1,7 @@
package com.biutag.supervisiondata.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil;
import com.biutag.supervisiondata.pojo.ClueData;
import com.biutag.supervisiondata.pojo.constants.Default;
@ -14,6 +16,7 @@ import com.biutag.supervisiondata.repository.RiskTaskRepository;
import com.biutag.supervisiondata.service.NoControlService;
import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.service.RiskPersonalTagService;
import com.biutag.supervisiondata.util.DataUtil;
import com.biutag.supervisiondata.util.IdCodeUtil;
import com.biutag.supervisiondata.util.BhUtil;
import lombok.AllArgsConstructor;
@ -69,7 +72,7 @@ public class NoControlServiceImpl implements NoControlService {
for (ClueData clueDatum : clueData) {
RiskPersonal personal = idCodes.get(clueDatum.getIdCode());
if(personal.getTags().indexOf(Default.NO_CONTROL) == -1) {
if (personal.getTags().indexOf(Default.NO_CONTROL) == -1) {
RiskPersonal newOne = new RiskPersonal();
newOne.setId(personal.getId());
newOne.setTags(personal.getTags().concat(",".concat(Default.NO_CONTROL)));
@ -77,36 +80,19 @@ public class NoControlServiceImpl implements NoControlService {
idCodes.put(clueDatum.getIdCode(), personal);
toUpdate.add(newOne);
}
clues.add(createClue(task.getModelId(), 5, task.getId(), clueDatum));
clues.add(DataUtil.createClueData(task, clueDatum));
}
if(!toUpdate.isEmpty()) {
if (!toUpdate.isEmpty()) {
log.info("修改人数:{}", toUpdate.size());
personalRepository.updateBatchById(toUpdate);
}
if(!clues.isEmpty()) {
if (!clues.isEmpty()) {
clueService.saveClues(clues, Default.CONTROLLER2_IG);
}
riskTaskRepository.updateTask(task.getId(), clues.size(), toUpdate.size());
}
RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data) {
RiskModelTaskClue clue = new RiskModelTaskClue();
clue.setModelId(modelId);
clue.setScore(score);
clue.setName(data.getName());
clue.setIdCode(data.getIdCode());
clue.setTaskId(taskId);
clue.setData(data.getSourceData());
clue.setEventTime(data.getEventTime());
clue.setCreateTime(LocalDateTime.now());
clue.setUpdateTime(LocalDateTime.now());
clue.setCaseIds(BhUtil.ajBh(data.getId()));
data.setPersonId(null);
clue.setRiskReason(data.getTag());
return clue;
}
List<ClueData> crazyControl(Map<String, RiskPersonal> idCodes, Map<String, RiskPersonal> mobiles) {
// 精神病人属于重点人员,发现多起警情 疑似存在管控不到位的现象
List<Extreme> extremeList = zdryRepository.getBaseMapper().syncPointNoControlCrazy();
@ -116,10 +102,10 @@ public class NoControlServiceImpl implements NoControlService {
if (extreme.getBjrzjhm() != null) {
person = idCodes.get(extreme.getBjrzjhm());
}
if(person == null && extreme.getBjrlxdh() != null) {
if (person == null && extreme.getBjrlxdh() != null) {
person = mobiles.get(extreme.getBjrlxdh());
}
if(person == null) {
if (person == null) {
continue;
}
ClueData data = ClueData.builder()
@ -127,8 +113,9 @@ public class NoControlServiceImpl implements NoControlService {
.idCode(person.getIdCode())
.name(person.getName())
.personId(person.getId())
.tag("精神病人管控不到位")
.sourceData("该人员属于精神病人,涉及到有关警情,"+Optional.ofNullable(extreme.getJjdbh()).map(it -> "接警单编号:"+it).orElse("")+"属于管控不到位"+Optional.ofNullable(extreme.getCjqk()).map(it -> ",具体情况:"+it).orElse(""))
.tags(List.of("精神病人管控不到位"))
.score(5)
.sourceData("该人员属于精神病人,涉及到有关警情," + Optional.ofNullable(extreme.getJjdbh()).map(it -> "接警单编号:" + it).orElse("") + "属于管控不到位" + Optional.ofNullable(extreme.getCjqk()).map(it -> ",具体情况:" + it).orElse(""))
.departName(extreme.getGxdwmc())
.departId(extreme.getGxdwdm())
.build();
@ -151,7 +138,7 @@ public class NoControlServiceImpl implements NoControlService {
if (violence.getZjhm() != null) {
person = idCodes.get(violence.getZjhm());
}
if(person == null) {
if (person == null) {
continue;
}
ClueData data = ClueData.builder()
@ -159,8 +146,9 @@ public class NoControlServiceImpl implements NoControlService {
.idCode(person.getIdCode())
.name(person.getName())
.personId(person.getId())
.tag("刑事、吸毒人员管控不到位")
.sourceData("该人员属于故意犯罪并作出刑事判决人员(排除仍在羁押状态的)、公安机关查处吸毒人员(排除仍在羁押状态的),涉及到案件,"+Optional.ofNullable(violence.getAjbh()).map(it -> "案件编号:"+it).orElse("")+"属于管控不到位"+Optional.ofNullable(violence.getAjmc()).map(it -> ",案件名称:"+it).orElse("")+Optional.ofNullable(violence.getWfss()).map(it -> ",违法事实:"+it).orElse(""))
.tags(List.of("刑事、吸毒人员管控不到位"))
.score(5)
.sourceData("该人员属于故意犯罪并作出刑事判决人员(排除仍在羁押状态的)、公安机关查处吸毒人员(排除仍在羁押状态的),涉及到案件," + Optional.ofNullable(violence.getAjbh()).map(it -> "案件编号:" + it).orElse("") + "属于管控不到位" + Optional.ofNullable(violence.getAjmc()).map(it -> ",案件名称:" + it).orElse("") + Optional.ofNullable(violence.getWfss()).map(it -> ",违法事实:" + it).orElse(""))
.departName(violence.getBadwidmc())
.departId(violence.getBadwiddm())
.build();
@ -183,7 +171,7 @@ public class NoControlServiceImpl implements NoControlService {
if (noControl.getIdCardNo() != null) {
person = idCodes.get(noControl.getIdCardNo());
}
if(person == null) {
if (person == null) {
continue;
}
ClueData data = ClueData.builder()
@ -191,8 +179,9 @@ public class NoControlServiceImpl implements NoControlService {
.idCode(person.getIdCode())
.name(person.getName())
.personId(person.getId())
.tag("刑满释放人管控不到位")
.sourceData("该人员属于看守所故意犯罪刑满释放不满5年人员,发现在重点人员中 未纳入或未按要求落实双列管,"+Optional.ofNullable(noControl.getCrime()).map(it -> "涉及犯罪事实:"+it).orElse("")+""+Optional.ofNullable(noControl.getBriefCase()).map(it -> ",,具体事件表现为:"+it).orElse(""))
.tags(List.of("刑满释放人管控不到位"))
.score(5)
.sourceData("该人员属于看守所故意犯罪刑满释放不满5年人员,发现在重点人员中 未纳入或未按要求落实双列管," + Optional.ofNullable(noControl.getCrime()).map(it -> "涉及犯罪事实:" + it).orElse("") + "" + Optional.ofNullable(noControl.getBriefCase()).map(it -> ",,具体事件表现为:" + it).orElse(""))
.departName(noControl.getCaseUnit())
.departId(noControl.getCaseUnitId())
.build();
@ -206,7 +195,7 @@ public class NoControlServiceImpl implements NoControlService {
return clueData;
}
List<ClueData> crazyLevelThreeControl(Map<String, RiskPersonal> idCodes,Map<String, RiskPersonal> mobiles) {
List<ClueData> crazyLevelThreeControl(Map<String, RiskPersonal> idCodes, Map<String, RiskPersonal> mobiles) {
// 卫健委精神疾病三级以上人员,发现在重点人员中 未纳入或未按要求落实双列管
List<CrazyLevelThree> crazyLevelThreeList = zdryRepository.getBaseMapper().syncCrazyLevelThree();
List<ClueData> clueData = new ArrayList<>();
@ -215,10 +204,10 @@ public class NoControlServiceImpl implements NoControlService {
if (crazyLevelThree.getSfzh() != null) {
person = idCodes.get(crazyLevelThree.getSfzh());
}
if(person == null && crazyLevelThree.getLxdh() != null) {
if (person == null && crazyLevelThree.getLxdh() != null) {
person = mobiles.get(crazyLevelThree.getLxdh());
}
if(person == null) {
if (person == null) {
continue;
}
clueData.add(ClueData.builder()
@ -226,8 +215,9 @@ public class NoControlServiceImpl implements NoControlService {
.idCode(person.getIdCode())
.name(person.getName())
.personId(person.getId())
.tag("神疾病三级以上人员管控不到位")
.sourceData("卫健委精神疾病三级以上人员,发现在重点人员中 未纳入或未按要求落实双列管"+Optional.ofNullable(crazyLevelThree.getTsqksm()).map(it -> ",备注:"+it).orElse(""))
.tags(List.of("神疾病三级以上人员管控不到位"))
.score(5)
.sourceData("卫健委精神疾病三级以上人员,发现在重点人员中 未纳入或未按要求落实双列管" + Optional.ofNullable(crazyLevelThree.getTsqksm()).map(it -> ",备注:" + it).orElse(""))
.build());
}
return clueData;

144
src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java

@ -231,54 +231,56 @@ public class PointServiceImpl implements PointService {
@Override
public void syncViolence(TaskParamDomain domain) {
RiskTask task = taskRepository.create(domain.getPersons().size(), 44);
Map<String, RiskPersonal> personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue));
List<Violence> list = zdryRepository.getBaseMapper().syncViolencePerson();
Map<String, List<Violence>> violenceMap = list.stream().collect(Collectors.groupingBy(Violence::getZjhm));
Map<String, Map<String, Integer>> map = new HashMap<>();
List<RiskModelTaskClue> olds = Optional.ofNullable(domain.getMap().get(task.getId())).orElse(new ArrayList<>());
Map<String, List<RiskModelTaskClue>> maps = olds.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode));
List<RiskModelTaskClue> toInsert = new ArrayList<>();
for (Violence violence : list) {
if (violence.getZjhm() == null || personalMap.get(violence.getZjhm()) == null) {
continue;
for (RiskPersonal person : domain.getPersons()) {
List<Violence> tmp = violenceMap.get(person.getIdCode());
if (tmp == null) continue;
List<RiskModelTaskClue> old = maps.get(person.getIdCode());
if (old != null) continue;
tmp = tmp.stream().filter(StreamUtil.distinctByKey(Violence::getAjbh)).toList();
StringBuilder sb = new StringBuilder("通过核查案件信息,发现该人员有暴力伤害行为,案件编号为:");
List<String> tags = new ArrayList<>();
LocalDateTime date = null;
for (Violence violence : tmp) {
sb.append(violence.getAjbh()).append(",");
if(!tags.contains(violence.getAjlbmc())) {
tags.add(violence.getAjlbmc());
}
Map<String, Integer> old = Optional.ofNullable(map.get(violence.getZjhm())).orElse(new HashMap<>());
if (old.get(violence.getAjbh()) != null) {
try {
LocalDateTime ld = violence.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
if(date == null) {
date = ld;
continue;
}
List<RiskModelTaskClue> oldClues = Optional.ofNullable(maps.get(violence.getZjhm())).orElse(new ArrayList<>());
Map<String, RiskModelTaskClue> oldMap = oldClues.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (oldValue, newValue) -> newValue));
if (oldMap.get(BhUtil.ajBh(violence.getAjbh())) != null) {
continue;
if(date.isAfter(ld)) {
date = ld;
}
} catch (Exception ignored) {
}
}
old.put(violence.getAjbh(), 1);
map.put(violence.getZjhm(), old);
RiskPersonal person = personalMap.get(violence.getZjhm());
ClueData data = ClueData.builder()
.name(person.getName())
.id(violence.getAjbh())
.id("")
.personId(person.getId())
.idCode(person.getIdCode())
.sourceData("通过核查案件信息,发现该人员有暴力伤害行为,案件编号为:" + violence.getAjbh() + Optional.ofNullable(violence.getWfss()).map(it -> ",具体情况为:" + it).orElse(""))
.tag(violence.getAjlbmc())
.sourceData(sb.substring(0, sb.length()-1))
.tags(tags)
.score(Math.min(tmp.size(), 5))
.eventTime(date)
.build();
if (violence.getBadwiddm() != null) {
data.setDepartId(violence.getBadwiddm());
data.setDepartId(violence.getBadwidmc());
toInsert.add(DataUtil.createClueData(task, data));
}
try {
data.setEventTime(violence.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
} catch (Exception ignored) {
data.setEventTime(LocalDateTime.now());
}
toInsert.add(createClue2(task.getModelId(), 5, task.getId(), data));
}
if (!toInsert.isEmpty()) {
modelTaskClueService.saveClues(toInsert, Default.VIOLENCE_IG);
modelTaskClueService.saveClues(toInsert, "B89暴力伤害行为");
}
taskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
@ -1687,14 +1689,13 @@ public class PointServiceImpl implements PointService {
.name(personal.getName())
.id(personal.getId().toString())
.idCode(personal.getIdCode())
.tag("重点对象日常管控不到位")
.departId(gBaseZDRY.getXzdpcsdm())
.departName(gBaseZDRY.getXzdpcs())
.tags(List.of("重点对象日常管控不到位"))
.personId(personal.getId())
.score(5)
.eventTime(LocalDateTime.of(2024, 10, 7, 12, 11, 23))
.sourceData("发现该人员属于重点人员,该人员的管控民警所管控的重点人员达到100人以上\n属于未落实日常管控要求")
.build();
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
toInsert.add(DataUtil.createClueData(task, data));
}
if (!toInsert.isEmpty()) {
log.info("增加特定对象日常管控不到位人员:{}", toInsert.size());
@ -1823,8 +1824,7 @@ public class PointServiceImpl implements PointService {
GBaseOilBuy::getName, GBaseOilBuy::getCompanyName, GBaseOilBuy::getType, GBaseOilBuy::getTime,
GBaseOilBuy::getUseTo, GBaseOilBuy::getMobile, GBaseOilBuy::getIdCode)
.ge(GBaseOilBuy::getTime, currentTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
RiskTask task = createTask(buys.size(), 52);
taskRepository.save(task);
RiskTask task = taskRepository.create(buys.size(), 52);
// 旧数据
List<RiskModelTaskClue> oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>());
@ -1851,6 +1851,8 @@ public class PointServiceImpl implements PointService {
if (mineBuy == null) {
continue;
}
LocalDateTime time = null;
int count = 0;
for (GBaseOilBuy item : mineBuy) {
if (oldMap.get(BhUtil.oilBh(item.getXh())) != null) {
continue;
@ -1858,68 +1860,38 @@ public class PointServiceImpl implements PointService {
if (carMt.get(person.getIdCode()) != null) {
continue;
}
ClueData data = ClueData.builder()
.name(person.getName())
.id(BhUtil.oilBh(item.getXh()))
.idCode(person.getIdCode())
.departId(item.getOrgId())
.departName(item.getOrgName())
.personId(person.getId())
.build();
count++;
try {
data.setEventTime(LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
LocalDateTime tmp = LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
if(time == null) {
time = tmp;
continue;
}
if(tmp.isAfter(time)) {
time = tmp;
}
} catch (Exception e) {
data.setEventTime(LocalDateTime.now());
log.error("散装油时间转化异常");
}
data.setTag(Default.NO_CAR_OIL_BUY);
data.setSourceData("发现该人员属于无车人员,于" + item.getTime() + "在" + item.getCompanyName() + "购买容量为" + item.getNumber() + "L的" + item.getType() + ",用作" + item.getUseTo());
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
}
ClueData data = ClueData.builder()
.name(person.getName())
.id("")
.idCode(person.getIdCode())
.score(Math.min(5, count))
.tags(List.of(Default.NO_CAR_OIL_BUY))
.personId(person.getId())
.sourceData("发现该人员属于无车人员,买了" + count + "次散装油")
.eventTime(time)
.build();
toInsert.add(DataUtil.createClueData(task, data));
}
if (!toInsert.isEmpty()) {
log.info("增加散装油人员:{}", toInsert.size());
modelTaskClueService.saveClues(toInsert, Default.GOODS_IG);
}
List<RiskModelTaskClue> toDelete = new ArrayList<>();
Map<String, Byte[]> deletePerson = new WeakHashMap<>();
Map<String, Byte[]> livePerson = new WeakHashMap<>();
for (RiskModelTaskClue entry : oldList) {
// 删除记录
if (entry.getEventTime().isBefore(currentTime)) {
RiskModelTaskClue delete = new RiskModelTaskClue();
delete.setId(entry.getId());
delete.setDel(1);
toDelete.add(delete);
deletePerson.put(entry.getIdCode(), new Byte[0]);
} else {
livePerson.put(entry.getIdCode(), new Byte[0]);
}
}
List<String> idCodes = new ArrayList<>();
// 删除标签 从deletePerson遍历,存活中没有,新增没有,说明该标签就没了
for (String s : deletePerson.keySet()) {
if (livePerson.get(s) == null && buyMap.get(s) == null) {
idCodes.add(s);
}
}
if (!toDelete.isEmpty()) {
modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, Default.NO_CAR_OIL_BUY);
}
RiskTask updateTask = new RiskTask();
updateTask.setId(task.getId());
updateTask.setInsertSize(toInsert.size());
updateTask.setUpdateSize(toDelete.size());
updateTask.setState(1);
updateTask.setEndTime(LocalDateTime.now());
taskRepository.updateById(updateTask);
taskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
@Override

18
src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java

@ -128,7 +128,7 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
}
}
final String sql = "INSERT INTO risk_model_task_clue(model_id, name, id_code, task_id, source_id, risk_reason, data, score, score_calc, score_result, event_time, create_time, update_time, case_ids) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
final String sql = "INSERT INTO risk_model_task_clue(model_id, name, id_code, task_id, source_id, risk_reason, source, data, score, score_calc, score_result, event_time, create_time, update_time, case_ids) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
public void batchInsert(List<RiskModelTaskClue> alliances, String bigTag, Map<Integer, ScoreRule> ruleMap) {
try (Connection connection = getConnection();
@ -153,14 +153,15 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
prepareStatement.setObject(4, it.getTaskId());
prepareStatement.setObject(5, it.getSourceId());
prepareStatement.setObject(6, bigTag);
prepareStatement.setObject(7, Optional.ofNullable(it.getData()).orElse(""));
prepareStatement.setObject(8, Optional.ofNullable(it.getScore()).orElse(0));
prepareStatement.setObject(9, Optional.ofNullable(score.doubleValue()).orElse(0.00));
prepareStatement.setObject(7, 0);
prepareStatement.setObject(8, Optional.ofNullable(it.getData()).orElse(""));
prepareStatement.setObject(9, Optional.ofNullable(it.getScore()).orElse(0));
prepareStatement.setObject(10, Optional.ofNullable(score.doubleValue()).orElse(0.00));
prepareStatement.setObject(11, Optional.ofNullable(it.getEventTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(12, Optional.ofNullable(it.getCreateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(13, Optional.ofNullable(it.getUpdateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(14, Optional.ofNullable(it.getCaseIds()).orElse(""));
prepareStatement.setObject(11, Optional.ofNullable(score.doubleValue()).orElse(0.00));
prepareStatement.setObject(12, Optional.ofNullable(it.getEventTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(13, Optional.ofNullable(it.getCreateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(14, Optional.ofNullable(it.getUpdateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null));
prepareStatement.setObject(15, Optional.ofNullable(it.getCaseIds()).orElse(""));
prepareStatement.addBatch();
} catch (SQLException e) {
log.error("", e);
@ -181,6 +182,7 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService {
riskTag.setName(clue.getName());
riskTag.setIdCode(clue.getIdCode());
riskTag.setSmallTag(tag);
riskTag.setModelId(clue.getModelId());
riskTag.setCreateTime(LocalDateTime.now());
return riskTag;
}

6
src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java

@ -11,6 +11,7 @@ import com.biutag.supervisiondata.repository.RiskTaskRepository;
import com.biutag.supervisiondata.repository.WdpcGrjdJsbryRepository;
import com.biutag.supervisiondata.service.RiskModelTaskClueService;
import com.biutag.supervisiondata.service.WdpcGrjdJsbryService;
import com.biutag.supervisiondata.util.DataUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -66,7 +67,8 @@ public class WdpcGrjdJsbryServiceService implements WdpcGrjdJsbryService {
.name(wdpcGrjdJsbry.getName())
.id("psychosis")
.idCode(wdpcGrjdJsbry.getIdCode())
.tag(Default.PSYCHOSIS_TAG)
.tags(List.of(Default.PSYCHOSIS_TAG))
.score(5)
.sourceData(text.toString())
.build();
try {
@ -75,7 +77,7 @@ public class WdpcGrjdJsbryServiceService implements WdpcGrjdJsbryService {
} catch (Exception e) {
data.setEventTime(LocalDateTime.now());
}
toInsert.add(createClue(task.getModelId(), 5, task.getId(), data));
toInsert.add(DataUtil.createClueData(task, data));
}
if(!toInsert.isEmpty()) {

Loading…
Cancel
Save