From 092cffca122e2bd25c4ef0e5f5da4cb4024f3fac Mon Sep 17 00:00:00 2001 From: kami <605128600@qq.com> Date: Tue, 26 Nov 2024 15:35:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E7=AD=BE=E7=94=B1=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E6=94=B9=E5=88=B0=E8=B5=8B=E5=88=86=E7=9A=84=E6=97=B6=E5=80=99?= =?UTF-8?q?=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/ApplicationEvent.java | 6 +- .../mapper/dwd/GBaseJJDMapper.java | 10 +- .../pojo/constants/Default.java | 2 + .../pojo/database/MuchCall.java | 18 +++ .../service/RiskPersonalService.java | 1 + .../service/impl/PointServiceImpl.java | 153 ++++++++---------- .../impl/RiskModelTaskClueServiceImpl.java | 28 ++-- .../service/impl/RiskPersonalServiceImpl.java | 27 +++- .../service/impl/RiskTaskServiceImpl.java | 3 +- 9 files changed, 149 insertions(+), 99 deletions(-) create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/database/MuchCall.java diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java index ed03da8..b0e88cb 100644 --- a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -112,6 +112,8 @@ public class ApplicationEvent { .eq(RiskModelTaskClue::getDel, 0)); Map> map = clues.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getModelId)); TaskParamDomain domain = new TaskParamDomain(persons, map); + petitionService.petitionModelTask(domain); + riskTaskService.heightFight(domain); riskTaskService.eduModelTask(domain); riskTaskService.infoModelTask(domain); riskTaskService.caseModelTask(domain); @@ -119,14 +121,14 @@ public class ApplicationEvent { policeService.contradictModelTask(domain); habitService.habitModelTask(domain); marriageService.marriageModelTask(domain); - petitionService.petitionModelTask(domain); + riskTaskService.riskAreaModelTask(domain); - riskTaskService.heightFight(domain); pointService.syncScore(domain); pointService.syncViolence(domain); noControlService.syncNoControlData(domain); pointService.syncKillSelf(domain); pointService.syncDrug(domain); +// riskPersonalService.fixed2(); pointService.syncControlNoPower(domain); pointService.syncPointCall(domain); // personalService.syncOrg(); diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java index 0730a55..8141ad4 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java @@ -1,6 +1,7 @@ package com.biutag.supervisiondata.mapper.dwd; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.database.MuchCall; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -21,7 +22,10 @@ public interface GBaseJJDMapper extends BaseMapper { List selectDataToRisk(@Param("startTime")String startTime, @Param("endTime")String endTime); - @Select(" select bjrlxdh, bjdh, jqxzdm, bjrzjhm from dwd_asj_zhtx_jjd " + - " where bjsj >= '2024-01-01 00:00:00'") - List selectPointCall(); + @Select(" select bjdh, " + + " sum(IF(SUBSTR(jqxzdm, 1, 1) != '9',1,0)) as normal, " + + " sum(IF(SUBSTR(jqxzdm, 1, 1) = '9',1,0)) as unNormal " + + " from dwd_asj_zhtx_jjd where bjsj >= '2024-01-01 00:00:00' and bjdh is not null " + + " group by bjdh HAVING sum(IF(SUBSTR(jqxzdm, 1, 1) != '9',1,0)) > 5 or sum(IF(SUBSTR(jqxzdm, 1, 1) = '9',1,0)) > 100") + List selectPointCall(); } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java index 4dbc810..d735278 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -56,5 +56,7 @@ public class Default { public static final String BASIC = "基础信息"; + public static final String MUCH_CALL = "重点人员报警异常"; + } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/database/MuchCall.java b/src/main/java/com/biutag/supervisiondata/pojo/database/MuchCall.java new file mode 100644 index 0000000..79288ca --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/database/MuchCall.java @@ -0,0 +1,18 @@ +package com.biutag.supervisiondata.pojo.database; + +import lombok.Data; + +/** + * @author kami on 2024-11-26 14:40:51 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class MuchCall { + + String mobile; + + Integer normal; + + Integer unNormal; +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java index 188d678..ced618f 100644 --- a/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java +++ b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java @@ -25,4 +25,5 @@ public interface RiskPersonalService { void saveDistinct(List riskPersonals); void fixed(); + void fixed2(); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java index 60cddf6..438303a 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -6,6 +6,7 @@ import com.biutag.supervisiondata.config.cache.RedisDao; import com.biutag.supervisiondata.mapper.mine.SupDepartMapper; import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.database.MuchCall; import com.biutag.supervisiondata.pojo.domain.*; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseTbDZdrylb; @@ -253,10 +254,6 @@ public class PointServiceImpl implements PointService { .build(); toInsert.add(createClue(task.getModelId(), 2, task.getId(), data)); } - if (!toInsert.isEmpty()) { - log.info("增加涉药人员:{}", toInsert.size()); - modelTaskClueService.saveClues(toInsert, Default.DRUG_TAG); - } RiskTask updateTask = new RiskTask(); updateTask.setId(task.getId()); updateTask.setInsertSize(toInsert.size()); @@ -287,7 +284,7 @@ public class PointServiceImpl implements PointService { .name(personal.getName()) .id(personal.getId().toString()) .idCode(personal.getIdCode()) - .tag("特定对象日常管控不到位") + .tag("重点对象管控民警所控人员100人以上疑似日常管控不到位") .departId(gBaseZDRY.getXzdpcsdm()) .departName(gBaseZDRY.getXzdpcs()) .personId(personal.getId()) @@ -318,33 +315,10 @@ public class PointServiceImpl implements PointService { RiskTask task = createTask(domain.getPersons().size(), 50); taskRepository.save(task); // 获取接警数据 - List result = jjdRepository.getBaseMapper().selectPointCall(); + List result = jjdRepository.getBaseMapper().selectPointCall(); List person = getPersons(); - Map map = new HashMap<>(); - Map noUseMap = new HashMap<>(); + Map map = result.stream().collect(Collectors.toMap(MuchCall::getMobile, Function.identity(), (val, old) -> val)); - for (GBaseJJD gBaseJJD : result) { - String dh = gBaseJJD.getBjrlxdh(); - if (dh == null || dh.isEmpty()) { - dh = gBaseJJD.getBjdh(); - } - if (dh == null || dh.isEmpty()) { - continue; - } - if (gBaseJJD.getJqxzdm() == null) { - continue; - } - if (gBaseJJD.getJqxzdm().startsWith("9")) { - Integer count = Optional.ofNullable(noUseMap.get(dh)).orElse(0); - count++; - noUseMap.put(dh, count); - } else { - Integer count = Optional.ofNullable(map.get(dh)).orElse(0); - count++; - map.put(dh, count); - } - } - log.info("报警:{},{}", map.size(), noUseMap.size()); List toInsert = new ArrayList<>(); Map> aMAP = person.stream().collect(Collectors.groupingBy(RiskPersonal::getIdCode)); @@ -360,55 +334,59 @@ public class PointServiceImpl implements PointService { int noUsefulNum = 0; StringBuilder mobile = new StringBuilder(); for (String s : str) { - if (s.contains("无") || s.equals("00000000") || s.equals("1")) { + String number = s.chars() + .filter(Character::isDigit) + .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) + .toString(); + if (number.length() < 8 || number.equals("00000000")) { continue; } mobile.append(s).append(","); - int count = Optional.ofNullable(map.get(s)).orElse(0); + int count = Optional.ofNullable(map.get(s)).map(MuchCall::getNormal).orElse(0); num += count; - - int count2 = Optional.ofNullable(noUseMap.get(s)).orElse(0); + int count2 = Optional.ofNullable(map.get(s)).map(MuchCall::getUnNormal).orElse(0); noUsefulNum += count2; } - if (num > 5 || noUsefulNum > 100) { - StringBuilder mark = new StringBuilder(); - for (RiskPersonal p : entry.getValue()) { - mark.append(p.getTags()).append(","); - } - PointCall call = new PointCall(); - call.setCallCount(num); - call.setNoUsefulCallCount(noUsefulNum); - call.setLabels(mark.substring(0, mark.length() - 1)); - call.setName(personal.getName()); - call.setMobiles(mobile.substring(0, mobile.length() - 1)); - call.setIdCode(personal.getIdCode()); - call.setControlId(personal.getControlDepartId()); - call.setControlName(personal.getControlDepartName()); - - StringBuilder txt = new StringBuilder("该人员今年"); - if (num > 5) { - txt.append("有效报警").append(num).append("次 "); - } - if (noUsefulNum > 100) { - txt.append("无效报警").append(noUsefulNum).append("次 "); - } - txt.append("疑似人员管控不到位。"); - call.setDesc(txt.toString()); - RiskTest test = new RiskTest(); - test.setName(JSON.toJSONString(call)); - tmp.add(test); - ClueData data = ClueData.builder() - .name(personal.getName()) - .idCode(personal.getIdCode()) - .tag("重点对象报警次数异常") - .departId(personal.getControlDepartId()) - .departName(call.getControlName()) - .personId(personal.getId()) - .eventTime(LocalDateTime.now()) - .sourceData(call.getDesc()) - .build(); - toInsert.add(createClue(task.getModelId(), 4, task.getId(), data)); + if(num == 0 && noUsefulNum==0) { + continue; + } + StringBuilder mark = new StringBuilder(); + for (RiskPersonal p : entry.getValue()) { + mark.append(p.getTags()).append(","); + } + PointCall call = new PointCall(); + call.setCallCount(num); + call.setNoUsefulCallCount(noUsefulNum); + call.setLabels(mark.substring(0, mark.length() - 1)); + call.setName(personal.getName()); + call.setMobiles(mobile.length()==0?"":mobile.substring(0, mobile.length() - 1)); + call.setIdCode(personal.getIdCode()); + call.setControlId(personal.getControlDepartId()); + call.setControlName(personal.getControlDepartName()); + + StringBuilder txt = new StringBuilder("该人员今年"); + if (num > 5) { + txt.append("有效报警").append(num).append("次 "); + } + if (noUsefulNum > 100) { + txt.append("无效报警").append(noUsefulNum).append("次 "); } + txt.append("疑似人员管控不到位。"); + call.setDesc(txt.toString()); + RiskTest test = new RiskTest(); + test.setName(JSON.toJSONString(call)); + tmp.add(test); + ClueData data = ClueData.builder() + .name(personal.getName()) + .idCode(personal.getIdCode()) + .tag("重点对象多次报警疑似管控不到位") + .departId(personal.getControlDepartId()) + .departName(call.getControlName()) + .personId(personal.getId()) + .eventTime(LocalDateTime.now()) + .sourceData(call.getDesc()) + .build(); + toInsert.add(createClue(task.getModelId(), 4, task.getId(), data)); } if (!tmp.isEmpty()) { riskTestRepository.saveBatch(tmp); @@ -416,7 +394,7 @@ public class PointServiceImpl implements PointService { if (!toInsert.isEmpty()) { log.info("增加特定对象日常管控不到位人员:{}", toInsert.size()); - modelTaskClueService.saveClues(toInsert, Default.BAD_HABBIT); + modelTaskClueService.saveClues(toInsert, Default.MUCH_CALL); } RiskTask updateTask = new RiskTask(); @@ -472,10 +450,10 @@ public class PointServiceImpl implements PointService { } SupDepart findLevelThreeDepart(SupDepart supDepart, Map departMap) { - if(supDepart == null){ + if (supDepart == null) { return null; } - if(supDepart.getLevel() == 3) { + if (supDepart.getLevel() == 3) { return supDepart; } supDepart = departMap.get(supDepart.getPid()); @@ -490,7 +468,7 @@ public class PointServiceImpl implements PointService { List lbList = zdrylbRepository.list(new LambdaQueryWrapper() .select(GBaseTbDZdrylb::getCode, GBaseTbDZdrylb::getDefine)); List supDeparts = supDepartMapper.selectList(new LambdaQueryWrapper() - .select(SupDepart::getId,SupDepart::getCode, SupDepart::getLevel, SupDepart::getShortName, SupDepart::getPid) + .select(SupDepart::getId, SupDepart::getCode, SupDepart::getLevel, SupDepart::getShortName, SupDepart::getPid) .ge(SupDepart::getLevel, 3)); Map supExternalDepartMap = new WeakHashMap<>(); @@ -543,15 +521,15 @@ public class PointServiceImpl implements PointService { SupDepart depart = supDepartCodeMap.get(ry.getGxdwjgdm()); depart = findLevelThreeDepart(depart, supDepartIdMap); Integer exist = supExternalDepartMap.get(ry.getGxdwjgdm()); - if(exist == null) { + if (exist == null) { SupExternalDepart externalDepart = new SupExternalDepart(); externalDepart.setExternalId(ry.getGxdwjgdm()); externalDepart.setExternalName(ry.getGxdw()); externalDepart.setSource("重点人员"); externalDeparts.add(externalDepart); - supExternalDepartMap.put(ry.getGxdwjgdm(),1); + supExternalDepartMap.put(ry.getGxdwjgdm(), 1); } - if(depart == null) { + if (depart == null) { noDepartCount++; } for (String s : sb) { @@ -580,14 +558,25 @@ public class PointServiceImpl implements PointService { } catch (Exception e) { } if (ry.getZdrylxfs() != null) { -// personal.setMobileNumber(ry.getZdrylxfs().length() > 20 ? "" : ry.getZdrylxfs()); - personal.setMobileNumber(ry.getZdrylxfs()); + String[] str = ry.getZdrylxfs().split(","); + StringBuilder mobiles = new StringBuilder(); + for (String m : str) { + String number = m.chars() + .filter(Character::isDigit) + .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) + .toString(); + if (number.length() < 8 || number.equals("00000000")) { + continue; + } + mobiles.append(m).append(","); + } + personal.setMobileNumber(mobiles.length() == 0 ? "" : mobiles.substring(0, mobiles.length() - 1)); } personals.add(personal); } map.put(ry.getSfzh(), tmp); } - log.info("重点人员入库数:{} 未匹配到本地组织机构数:{}",zdCount, noDepartCount); + log.info("重点人员入库数:{} 未匹配到本地组织机构数:{}", zdCount, noDepartCount); externalDepartRepository.saveBatch(externalDeparts); return personals; } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java index 49f2100..edfa072 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java @@ -35,7 +35,7 @@ import java.util.stream.IntStream; @Slf4j @Service @AllArgsConstructor -public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { +public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { @Qualifier("chaosBean") private final DataSource dataSource; @@ -66,8 +66,18 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { for (Map.Entry> entry : map.entrySet()) { idCodes.add(entry.getKey()); } - List oldTags = tagRepository.list(new LambdaQueryWrapper().eq(RiskPersonalTag::getBigTag, bigTag) - .in(RiskPersonalTag::getIdCode, idCodes)); + List oldTags = new ArrayList<>(); + List> idCode = IntStream.range(0, (idCodes.size() + 9999) / 10000) + .mapToObj(i -> idCodes.subList(i * 10000, Math.min((i + 1) * 10000, idCodes.size()))) + .collect(Collectors.toList()); + for (List strList : idCode) { + oldTags.addAll(tagRepository.list(new LambdaQueryWrapper() + .select(RiskPersonalTag::getSmallTag, RiskPersonalTag::getIdCode) + .eq(RiskPersonalTag::getBigTag, bigTag) + .in(RiskPersonalTag::getIdCode, strList))); + } + + Map> oldTagMap = oldTags.stream().collect(Collectors.groupingBy(RiskPersonalTag::getIdCode)); Map oldMap; @@ -80,23 +90,23 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { oldMap.put(tag.getSmallTag(), new Byte[0]); } for (RiskModelTaskClue clue : entry.getValue()) { - if(bigTag.equals(Default.BIG_TAG_SHWFR)) { - String [] strs = clue.getRiskReason().split(","); - for (int i =0,len = strs.length; i < len; i++) { - if(oldMap.get(strs[i]) == null) { + if (bigTag.equals(Default.BIG_TAG_SHWFR)) { + String[] strs = clue.getRiskReason().split(","); + for (int i = 0, len = strs.length; i < len; i++) { + if (oldMap.get(strs[i]) == null) { tags.add(creatTag(bigTag, strs[i], clue)); oldMap.put(strs[i], new Byte[0]); } } continue; } - if(oldMap.get(clue.getRiskReason()) == null) { + if (oldMap.get(clue.getRiskReason()) == null) { tags.add(creatTag(bigTag, clue.getRiskReason(), clue)); oldMap.put(clue.getRiskReason(), new Byte[0]); } } } - if(!tags.isEmpty()) { + if (!tags.isEmpty()) { tagRepository.saveBatch(tags, 10000); } } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java index 0720996..94c333d 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java @@ -3,10 +3,14 @@ package com.biutag.supervisiondata.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.biutag.supervisiondata.common.exception.BusinessException; import com.biutag.supervisiondata.common.response.StatusCode; +import com.biutag.supervisiondata.mapper.mine.RiskModelTaskClueMapper; +import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalControlRecord; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; import com.biutag.supervisiondata.repository.RiskPersonalRepository; +import com.biutag.supervisiondata.repository.RiskPersonalTagRepository; import com.biutag.supervisiondata.service.RiskPersonalService; import com.biutag.supervisiondata.service.RiskPersonalTagService; import com.biutag.supervisiondata.util.IdCodeUtil; @@ -41,8 +45,7 @@ public class RiskPersonalServiceImpl implements RiskPersonalService { private final RiskPersonalTagService tagService; - @Qualifier("chaosBean") - private final DataSource dataSource; + private final RiskPersonalTagRepository tagRepository; @Override @@ -189,4 +192,24 @@ public class RiskPersonalServiceImpl implements RiskPersonalService { repository.removeById(i); } } + + private final RiskModelTaskClueMapper clueMapper; + + @Override + public void fixed2() { + List clues = clueMapper.selectList(new LambdaQueryWrapper().eq(RiskModelTaskClue::getModelId, 32)); + List tags = new ArrayList<>(); + for (RiskModelTaskClue clue : clues) { + RiskPersonalTag riskTag = new RiskPersonalTag(); + riskTag.setBigTag(Default.BASIC); + riskTag.setTagTime(LocalDateTime.now()); + riskTag.setName(clue.getName()); + riskTag.setIdCode(clue.getIdCode()); + riskTag.setSmallTag(clue.getRiskReason()); + riskTag.setCreateTime(LocalDateTime.now()); + tags.add(riskTag); + } + tagRepository.saveBatch(tags); + + } } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java index 2d9a865..0bb8f01 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java @@ -108,6 +108,8 @@ public class RiskTaskServiceImpl implements RiskTaskService { genderUpdate.setInsertSize(size); genderUpdate.setState(1); genderUpdate.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(ageUpdate); + List clues = new ArrayList<>(); clues.addAll(infos[0].getToInsert()); clues.addAll(infos[1].getToInsert()); @@ -115,7 +117,6 @@ public class RiskTaskServiceImpl implements RiskTaskService { if(!infos[0].getToHidden().isEmpty()) { clueRepository.updateBatchById(infos[0].getToHidden()); } - riskTaskRepository.updateById(ageUpdate); } @Override