Browse Source

矛盾纠纷

master
kami 1 year ago
parent
commit
7d9198b6b3
  1. 6
      src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java
  2. 2
      src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java
  3. 11
      src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java
  4. 1
      src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java
  5. 93
      src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java
  6. 2
      src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java
  7. 15
      src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java

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

@ -101,7 +101,7 @@ public class ApplicationEvent {
RedisDao.getInstance().init(redisTemplate);
LocalDateTime end = LocalDate.now().minusDays(1).atTime(23,59,59);
CompletableFutureUtil.runSync(() -> {
personalService.init(List.of(75,130));
personalService.init(List.of(64,75,130));
// personalService.pullInvestigate();
// personalService.pullPsychosis();
// gBaseSHRWFRService.pullAndSave(LocalDateTime.of(2019,12,6,0,0,0), end);
@ -127,7 +127,7 @@ public class ApplicationEvent {
// 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)));
gBaseJJDService.warningInstance(initDomain(List.of(64)));
// gBaseJJDService.syncHomeViolence(initDomain(List.of(65,66)));
// pointService.syncPointType(initDomain(List.of(67)));
// gBaseSHRWFRService.hadWork(initDomain(List.of(68)));
@ -145,7 +145,7 @@ public class ApplicationEvent {
// pointService.syncAdministrativePunishment(initDomain(List.of(116)));
// pointService.syncParentsDivorce(initDomain(List.of(117)));
gBaseJJDService.syncOtherContradict(initDomain(List.of(75)));
pointService.syncFamilyDie(initDomain(List.of(118)));
// pointService.syncFamilyDie(initDomain(List.of(118)));
// pointService.syncFatherDie(initDomain(List.of(119)));
// pointService.syncMotherDie(initDomain(List.of(120)));
// pointService.syncChildNo(initDomain(List.of(121)));

2
src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java

@ -43,7 +43,7 @@ public interface GBaseSYRKXXMapper extends BaseMapper<GBaseSYRKXX> {
List<GBaseSYRKXX> selectHeightFight(@Param("time")String time);
@Select(" select a.gmsfhm as gmsfhm, b.mdjfcddm as type, count(1) as number from csga_dwd.dwd_qt_jzpt_mdjfdsrxx a " +
" inner join csga_dwd.dwd_wp_zfba_mdjfzb as b on a.mdjfid = b.id " +
" inner join csga_dwd.dwd_qt_jzpt_mdjfzb as b on a.mdjfid = b.id " +
" inner join csga_wdpcdb.wdpc_person as c on a.gmsfhm = c.id_code " +
" where a.djsj > #{time}" +
" group by a.gmsfhm, b.mdjfcddm order by a.gmsfhm")

11
src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java

@ -71,8 +71,15 @@ public interface GBaseJJDMapper extends BaseMapper<GBaseJJD> {
@Select(" select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd where (bjnr like '%袭警%' or cjqk like '%袭警%' or jqxzmc like '%阻碍%' or jqxzmc like '%袭击%') and SUBSTR(jqxzdm, 1, 2) != '99' and bjsj >= #{start}")
List<GBaseJJD> selectAttackPolist(@Param("start")String start);
@Select("select * from dwd where SUBSTR(jqxzdm, 1, 2) != '99' AND SUBSTR(jqxzdm, 1, 2) != '11'")
List<GBaseJJD> selectWarningInstance();
/**
* 非矛盾纠纷有效警情
* @return 列表
*/
@Select("select jjdbh, bjdh,bjrxm ,bjrzjhm, bjnr, cjqk from dwd_asj_zhtx_jjd where SUBSTR(jqxzdm, 1, 2) != '99' AND SUBSTR(jqxzdm, 1, 2) != '11' and substr(jqxzdm, 1, 2) != '08' and bjsj >= #{start} limit #{pageNo}, #{pageSize}")
List<GBaseJJD> selectWarningInstance(@Param("start")String start,@Param("pageNo")Integer pageNo, @Param("pageSize")Integer pageSize);
@Select(" select count(1) from from dwd_asj_zhtx_jjd where SUBSTR(jqxzdm, 1, 2) != '99' AND SUBSTR(jqxzdm, 1, 2) != '11' and substr(jqxzdm, 1, 2) != '08' and bjsj >= #{start}")
int selectWarningInstanceCount(@Param("start")String start);
/**
* 家暴

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

@ -63,6 +63,5 @@ public class RiskPersonalTag implements Serializable {
/**
* 逻辑删除键
*/
@TableLogic(value = "0", delval = "1")
Integer del;
}

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

@ -457,7 +457,92 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
@Override
public void warningInstance(TaskParamDomain domain) {
String startTime = LocalDateTime.of(2023, 12, 6, 0, 0, 0).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
Map<String, RiskPersonal> idCodelMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (val, old) -> val));
Map<String, RiskPersonal> mobileMap = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null && !item.getMobileNumber().isEmpty()).collect(Collectors.toMap(RiskPersonal::getMobileNumber, Function.identity(), (val, old) -> val));
Map<String, List<String>> personJqList = new WeakHashMap<>();
int count = gBaseJJDRepository.getBaseMapper().selectWarningInstanceCount(startTime);
RiskTask task = taskRepository.create(count, 64);
List<GBaseJJD> jjdList;
int batch = count % 10000 == 0 ? count / 10000 : (count / 10000) + 1;
int pageSize = 10000;
for (int page = 1; page <= batch; page++) {
log.info("平台涉警进度:{} | {}", page, batch);
int pageNo = (page - 1) * pageSize;
jjdList = gBaseJJDRepository.getBaseMapper().selectWarningInstance(startTime, pageNo, pageSize);
for (GBaseJJD jjd : jjdList) {
RiskPersonal riskPerson = null;
// 报警人
if (jjd.getBjrzjhm() != null) {
riskPerson = idCodelMap.get(jjd.getBjrzjhm());
} else if (jjd.getBjdh() != null) {
riskPerson = mobileMap.get(jjd.getBjdh());
}
if (riskPerson != null) {
personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh());
}
// 一个都不放过
String idCard = PatternUtil.takeIdCard(jjd.getCjqk());
if (idCard.isEmpty()) {
idCard = PatternUtil.takeIdCard(jjd.getBjnr());
}
if (!idCard.isEmpty()) {
String[] str = idCard.split(",");
for (String s : str) {
riskPerson = idCodelMap.get(s);
if (riskPerson == null) continue;
personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh());
}
}
String mobile = PatternUtil.takeMobile(jjd.getCjqk());
if (mobile.isEmpty()) {
mobile = PatternUtil.takeMobile(jjd.getBjnr());
}
if (mobile.isEmpty()) continue;
String[] str = mobile.split(",");
for (String s : str) {
riskPerson = mobileMap.get(s);
if (riskPerson == null) continue;
personJqList.computeIfAbsent(riskPerson.getIdCode(), k -> new ArrayList<>()).add(jjd.getJjdbh());
}
}
}
log.info("开始统计每个人的警情");
List<RiskModelTaskClue> toInsert = new ArrayList<>();
List<String> list;
for (Map.Entry<String, List<String>> entry : personJqList.entrySet()) {
list = entry.getValue().stream().distinct().toList();
RiskPersonal person = idCodelMap.get(entry.getKey());
StringBuilder sb = new StringBuilder("该人员近一年来有"+list.size()+"起平台涉警事件,接警单编号为:");
for (int i = 0,length = Math.min(3, list.size()); i < length; i++) {
sb.append(list.get(i)).append(",");
}
ClueData data = ClueData.builder()
.name(person.getName())
.id("")
.idCode(person.getIdCode())
.tags(List.of(list.size()+"起平台涉警事件"))
.sourceData(sb.substring(0, sb.length()-1))
.eventTime(LocalDateTime.now())
.personId(person.getId())
.score(Math.min(5, list.size()))
.build();
toInsert.add(DataUtil.createClueData(task, data));
}
if(!toInsert.isEmpty()) {
log.info("保存平台涉警事件数据:{}", toInsert.size());
clueService.saveClues(toInsert, "B28平台涉警事件");
}
taskRepository.updateTask(task.getId(), toInsert.size(), 0);
}
@Override
@ -1028,13 +1113,13 @@ public class GBaseJJDServiceImpl implements GBaseJJDService {
for (Contradict contradict : contradicts) {
switch (contradict.getType()) {
case "0" ->
sb.append("\n").append("简单矛盾纠纷").append(contradict.getNumber().toString()).append("起");
sb.append("简单矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(",");
case "1" ->
sb.append("\n").append("一般矛盾纠纷").append(contradict.getNumber().toString()).append("起");
sb.append("一般矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(",");
case "2" ->
sb.append("\n").append("复杂疑难矛盾纠纷").append(contradict.getNumber().toString()).append("起");
sb.append("复杂疑难矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(",");
case "3" ->
sb.append("\n").append("重大矛盾纠纷").append(contradict.getNumber().toString()).append("起");
sb.append("重大矛盾纠纷").append(contradict.getNumber().toString()).append("起").append(",");
}
}
toInsert.add(DataUtil.createClueData(task, ClueData.builder()

2
src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java

@ -497,7 +497,7 @@ public class PersonalServiceImpl implements PersonalService {
if(modelIds.isEmpty()) {
return;
}
riskModelTaskClueRepository.remove(new LambdaQueryWrapper<RiskModelTaskClue>().in(RiskModelTaskClue::getModelId, modelIds));
riskModelTaskClueRepository.remove(new LambdaQueryWrapper<RiskModelTaskClue>().in(RiskModelTaskClue::getModelId, modelIds).ne(RiskModelTaskClue::getSource, 1));
tagRepository.remove(new LambdaQueryWrapper<RiskPersonalTag>().in(RiskPersonalTag::getModelId, modelIds));
}

15
src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java

@ -63,10 +63,9 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService {
Map<Integer, Model> modelMap = models.stream().collect(Collectors.toMap(Model::getRiskScoreRuleId, Function.identity(), (oldValue, newValue) -> newValue));
List<RiskModelTaskClue> clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper<RiskModelTaskClue>()
.select(RiskModelTaskClue::getId, RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScore, RiskModelTaskClue::getScoreCalc)
.select(RiskModelTaskClue::getId, RiskModelTaskClue::getScoreCalc)
.eq(RiskModelTaskClue::getDel, 0));
log.info("1、修改每项得分\n2、修改人员总分");
log.info("1、计算分项倍分");
log.info("计算分项倍分");
List<RiskModelTaskClue> updates = new ArrayList<>();
if(weight != null && !weight.equals("1")) {
for (RiskModelTaskClue clue : clues) {
@ -74,12 +73,14 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService {
update.setId(clue.getId());
update.setScoreResult(new BigDecimal(clue.getScoreCalc().toString()).multiply(new BigDecimal(weight)).divide(new BigDecimal("1"), 2, RoundingMode.HALF_UP).doubleValue());
updates.add(update);
clue.setScoreResult(update.getScoreResult());
}
log.info("1、修改每项得分");
riskModelTaskClueRepository.updateBatchById(updates);
log.info("修改每项得分");
riskModelTaskClueRepository.updateBatchById(updates, 100000);
}
clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper<RiskModelTaskClue>()
.select(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScoreResult)
.eq(RiskModelTaskClue::getDel, 0));
log.info("开始算分");
Map<String, Map<Integer, List<RiskModelTaskClue>>> clueMap = new HashMap<>();
for (RiskModelTaskClue clue : clues) {

Loading…
Cancel
Save