From 428cb1d44c636d5ada347b02edf07c2a9bec90b0 Mon Sep 17 00:00:00 2001 From: kami <605128600@qq.com> Date: Wed, 27 Nov 2024 15:09:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B9=B0=E6=B2=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/dwd/GBaseJJDMapper.java | 2 +- .../mapper/dwd/GBaseOilBuyMapper.java | 12 +++ .../mapper/mine/RiskPersonalTagMapper.java | 16 ++++ .../pojo/constants/Default.java | 4 +- .../pojo/entity/dwd/GBaseOilBuy.java | 42 +++++++++ .../repository/GBaseOilBuyRepository.java | 13 +++ .../supervisiondata/service/PointService.java | 6 ++ .../service/RiskModelTaskClueService.java | 8 ++ .../service/impl/MarriageServiceImpl.java | 70 +++++++++++---- .../service/impl/PersonalServiceImpl.java | 71 ++++++++++----- .../service/impl/PointServiceImpl.java | 90 ++++++++++++++++++- .../impl/RiskModelTaskClueServiceImpl.java | 11 +++ .../biutag/supervisiondata/util/BhUtil.java | 4 + .../mapper/dwd/GBaseOilBuyMapper.xml | 5 ++ 14 files changed, 311 insertions(+), 43 deletions(-) create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseOilBuyMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseOilBuy.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseOilBuyRepository.java create mode 100644 src/main/resources/mapper/dwd/GBaseOilBuyMapper.xml 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 8141ad4..eeb9e3c 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java @@ -22,7 +22,7 @@ public interface GBaseJJDMapper extends BaseMapper { List selectDataToRisk(@Param("startTime")String startTime, @Param("endTime")String endTime); - @Select(" select bjdh, " + + @Select(" select bjdh as mobile, " + " 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 " + diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseOilBuyMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseOilBuyMapper.java new file mode 100644 index 0000000..506b72e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseOilBuyMapper.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.mapper.dwd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseOilBuy; + +/** + * @author kami on 2024-11-27 14:07:13 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseOilBuyMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java index 340e084..cafd822 100644 --- a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java @@ -2,6 +2,10 @@ package com.biutag.supervisiondata.mapper.mine; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; + +import java.util.List; /** * @author kami on 2024-11-08 19:43:32 @@ -9,5 +13,17 @@ import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; * @since 1.8 */ public interface RiskPersonalTagMapper extends BaseMapper { + /** + * + * @return + */ + @Update("") + int updateToDelete(@Param("list") List list,@Param("smallTag")String smallTag); } 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 108eac9..3248980 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -42,7 +42,7 @@ public class Default { public static final String BASIC = "基础信息"; - public static final String MUCH_CALL = "重点人员报警异常"; + public static final String OIL_BUY = "近3月购买散装油记录"; // ***********因素************* public static final String AGE_IG = "年龄因素"; @@ -79,4 +79,6 @@ public class Default { public static final String NO_LOVE_IG = "感情失意因素"; + public static final String GOODS_IG ="购买危险物品行为因素"; + } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseOilBuy.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseOilBuy.java new file mode 100644 index 0000000..d3d7377 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseOilBuy.java @@ -0,0 +1,42 @@ +package com.biutag.supervisiondata.pojo.entity.dwd; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author kami on 2024-11-27 11:53:41 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("`dwd_qb_nbgl_syssyj`") +public class GBaseOilBuy implements Serializable { + @TableField("xh") + String id; + @TableField("pcsdm") + String orgId; + @TableField("pcsmc") + String orgName; + /** + * 购买地 + */ + @TableField("dwmc") + String companyName; + @TableField("gmrxm") + String name; + @TableField("zjhm") + String idCode; + @TableField("gmsl") + String number; + @TableField("gmyt") + String useTo; + @TableField("lxfs") + String mobile; + @TableField("yplx") + String type; + @TableField("gmsj") + String time; +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseOilBuyRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseOilBuyRepository.java new file mode 100644 index 0000000..1c32842 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseOilBuyRepository.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseOilBuyMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseOilBuy; + +/** + * @author kami on 2024-11-27 14:09:03 + * @version 0.0.1 + * @since 1.8 + */ +public class GBaseOilBuyRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/service/PointService.java b/src/main/java/com/biutag/supervisiondata/service/PointService.java index 20ad22e..5754cb5 100644 --- a/src/main/java/com/biutag/supervisiondata/service/PointService.java +++ b/src/main/java/com/biutag/supervisiondata/service/PointService.java @@ -28,4 +28,10 @@ public interface PointService { void syncControlNoPower(TaskParamDomain domain); void syncPointCall(TaskParamDomain domain); + + /** + * 散装油 + * @param domain domain + */ + void syncOilBuy(TaskParamDomain domain); } diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java b/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java index a4075bf..9af7726 100644 --- a/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java +++ b/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java @@ -13,4 +13,12 @@ import java.util.List; public interface RiskModelTaskClueService { void saveClues(List list, String bigTag); + + /** + * 删除线索并删除标签(只是删除或修改直接调用repository) + * @param list 线索 + * @param idCodes 要删除标签的身份证号 + * @param smallTag 要删除的标签(小) + */ + void deleteCluesAndDeleteTag(List list, List idCodes, String smallTag); } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java index 273e512..701a82e 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java @@ -2,6 +2,7 @@ package com.biutag.supervisiondata.service.impl; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; import com.biutag.supervisiondata.pojo.ClueData; import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; @@ -23,6 +24,7 @@ import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; +import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.stream.Collectors; @@ -54,20 +56,55 @@ public class MarriageServiceImpl implements MarriageService { List hyList = new ArrayList<>(); log.info("开始查询结婚数据:{}", domain.getIdCards().size()); - int count = 0; - for (List idCard : domain.getIdCards()) { - count++; - hyList.addAll(hyRepository.list(new LambdaQueryWrapper() - .select(GBaseHY::getYwlxdmmc, GBaseHY::getYwlxdmdm,GBaseHY::getYxbzdm, GBaseHY::getNfsfhm, GBaseHY::getNvfsfhm, GBaseHY::getDjrq) - .eq(GBaseHY::getYxbzdm, "1") - .in(GBaseHY::getNfsfhm, idCard))); - hyList.addAll(hyRepository.list(new LambdaQueryWrapper() - .select(GBaseHY::getYwlxdmmc, GBaseHY::getYwlxdmdm, GBaseHY::getYxbzdm, GBaseHY::getNfsfhm, GBaseHY::getNvfsfhm,GBaseHY::getDjrq) - .eq(GBaseHY::getYxbzdm, "1") - .in(GBaseHY::getNvfsfhm, idCard))); - log.info("查询进度: {}", count); + List> manIdCards = new ArrayList<>(); + List> femanIdCards = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + if(manIdCards.isEmpty()) { + manIdCards.add(new ArrayList<>()); + femanIdCards.add(new ArrayList<>()); + } + if("2".equals(person.getGender())) { + femanIdCards.getLast().add(person.getIdCode()); + if(femanIdCards.getLast().size() >= 10000) { + femanIdCards.add(new ArrayList<>()); + } + } else { + manIdCards.getLast().add(person.getIdCode()); + if(manIdCards.getLast().size() >= 10000) { + manIdCards.add(new ArrayList<>()); + } + } } + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> manIdCards.forEach(item -> hyList.addAll(hyRepository.list(new LambdaQueryWrapper() + .select(GBaseHY::getYwlxdmmc, GBaseHY::getYwlxdmdm,GBaseHY::getYxbzdm, GBaseHY::getNfsfhm, GBaseHY::getNvfsfhm, GBaseHY::getDjrq) + .eq(GBaseHY::getYxbzdm, "1") + .in(GBaseHY::getNfsfhm, item))))), + CompletableFutureUtil.runSyncObject(() -> femanIdCards.forEach(item -> hyList.addAll(hyRepository.list(new LambdaQueryWrapper() + .select(GBaseHY::getYwlxdmmc, GBaseHY::getYwlxdmdm, GBaseHY::getYxbzdm, GBaseHY::getNfsfhm, GBaseHY::getNvfsfhm,GBaseHY::getDjrq) + .eq(GBaseHY::getYxbzdm, "1") + .in(GBaseHY::getNvfsfhm, item))))) + ).join(); + + LocalDateTime time = null; + for (GBaseHY gBaseHY : hyList) { + if(gBaseHY.getDjrq() == null) { + continue; + } + LocalDateTime tmp = gBaseHY.getDjrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + if(tmp.isAfter(LocalDateTime.now())) { + continue; + } + if(time == null) { + time = tmp; + continue; + } + if(tmp.isAfter(time)) { + time = tmp; + } + } + log.info("最大时间{}", time); // 每个人应该是最新的婚姻登记为标准 Map> manMap = new HashMap<>(); Map> femanMap = new HashMap<>(); @@ -96,7 +133,7 @@ public class MarriageServiceImpl implements MarriageService { List toInsertData2 = new ArrayList<>(); List toUpdateData2 = new ArrayList<>(); - long targetTime = System.currentTimeMillis() - 31536000000l; + LocalDateTime targetTime = LocalDateTime.now().minusMonths(12); for (RiskPersonal person : domain.getPersons()) { List tmpList = manMap.get(person.getIdCode()); if(tmpList == null) { @@ -116,18 +153,17 @@ public class MarriageServiceImpl implements MarriageService { last = gBaseHY; continue; } - if(gBaseHY.getDjrq().getTime() > last.getDjrq().getTime()) { + if(gBaseHY.getDjrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().isAfter(last.getDjrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())) { last = gBaseHY; } } - count++; // 看看是不是离婚 if(last == null || last.getYwlxdmdm() == null) { continue; } if(last.getYwlxdmdm().toUpperCase().contains("IB") || last.getYwlxdmdm().toUpperCase().contains("ICB")) { // 离婚 如果旧数据不存在就要新增 - if(last.getDjrq().getTime() > targetTime) { + if(last.getDjrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().isAfter(targetTime)) { // 近365天的离婚 RiskModelTaskClue clue = oldClueMap.get(person.getIdCode()); if(clue != null) { @@ -164,7 +200,7 @@ public class MarriageServiceImpl implements MarriageService { } else if(last.getYwlxdmdm().toUpperCase().contains("IA") || last.getYwlxdmdm().toUpperCase().contains("ICA")) { // 结婚 如果旧数据存在就要修改为0 // 近365天的离婚 - if(last.getDjrq().getTime() > targetTime) { + if(last.getDjrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().isAfter(targetTime)) { RiskModelTaskClue clue = oldClueMap.get(person.getIdCode()); if(clue == null) { continue; diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java index 8c41016..511fb5e 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java @@ -123,7 +123,7 @@ public class PersonalServiceImpl implements PersonalService { syrkxx = idCodeMap.get(item.getBjrzjhm()); cache.put(item.getBjrzjhm(), new Byte[0]); if (syrkxx != null) { - personals.add(createPerson(syrkxx, item.getBjsj(), now, end)); + personals.add(createPerson(syrkxx, item.getBjsj(), now, end,Default.BIG_TAG_JJD)); } continue; } @@ -135,7 +135,7 @@ public class PersonalServiceImpl implements PersonalService { syrkxx = idCodeMap.get(s); cache.put(s, new Byte[0]); if (syrkxx != null) { - personals.add(createPerson(syrkxx, item.getBjsj(), now, end)); + personals.add(createPerson(syrkxx, item.getBjsj(), now, end, Default.BIG_TAG_JJD)); } } } @@ -145,7 +145,7 @@ public class PersonalServiceImpl implements PersonalService { syrkxx = compare(xxList, item.getBjrxm()); if (syrkxx != null) { cache.put(syrkxx.getGmsfhm(), new Byte[0]); - personals.add(createPerson(syrkxx, item.getBjsj(), now, end)); + personals.add(createPerson(syrkxx, item.getBjsj(), now, end, Default.BIG_TAG_JJD)); } } riskPersonalService.saveDistinct(personals); @@ -223,7 +223,7 @@ public class PersonalServiceImpl implements PersonalService { exist.put(syrkxx.getGmsfhm(), new Byte[0]); Contradiction contradiction = map.get(syrkxx.getGmsfhm()); personals.add(createPerson(syrkxx, Optional.of(contradiction).map(Contradiction::getMaxTime) - .orElse(null), now.toLocalDate(), now)); + .orElse(null), now.toLocalDate(), now, Default.BIG_TAG_SHWFR)); } riskPersonalService.saveDistinct(personals); } @@ -236,25 +236,52 @@ public class PersonalServiceImpl implements PersonalService { @Override public void pullPetition(LocalDateTime start) { - List pList1 = petition12337Repository.list(new LambdaQueryWrapper() - .select(DataPetition12337::getName, DataPetition12337::getIdCode, DataPetition12337::getPhone, DataPetition12337::getThirdDepartId, DataPetition12337::getThirdDepartName) - .ge(DataPetition12337::getDiscoverTime, start)); - - List pList2 = complaintRepository.list(new LambdaQueryWrapper() - .select(DataPetitionComplaint::getResponderName, DataPetitionComplaint::getResponderPhone, DataPetitionComplaint::getResponderName, DataPetitionComplaint::getThirdDepartId, DataPetitionComplaint::getThirdDepartName) - .ge(DataPetitionComplaint::getDiscoveryTime, start)); - - List pList3 = dataCaseVerifRepository.list(new LambdaQueryWrapper() - .select(DataCaseVerif::getResponderName, DataCaseVerif::getResponderPhone, DataCaseVerif::getThirdDepartId, DataCaseVerif::getThirdDepartName) - .ge(DataCaseVerif::getDiscoveryTime, start)); + List pList3 = new ArrayList<>(); + List pList1 = new ArrayList<>(); + List pList2 = new ArrayList<>(); + LocalDateTime now = LocalDateTime.now(); + // 捞数据 + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> pList1.addAll(petition12337Repository.list(new LambdaQueryWrapper() + .select(DataPetition12337::getName, DataPetition12337::getIdCode, DataPetition12337::getPhone, DataPetition12337::getThirdDepartId, DataPetition12337::getThirdDepartName) + .ge(DataPetition12337::getDiscoverTime, start)))), + CompletableFutureUtil.runSyncObject(() -> pList2.addAll(complaintRepository.list(new LambdaQueryWrapper() + .select(DataPetitionComplaint::getResponderName, DataPetitionComplaint::getResponderPhone, DataPetitionComplaint::getResponderName, DataPetitionComplaint::getThirdDepartId, DataPetitionComplaint::getThirdDepartName) + .ge(DataPetitionComplaint::getDiscoveryTime, start)))), + CompletableFutureUtil.runSyncObject(() -> pList3.addAll(dataCaseVerifRepository.list(new LambdaQueryWrapper() + .select(DataCaseVerif::getResponderName, DataCaseVerif::getResponderPhone, DataCaseVerif::getThirdDepartId, DataCaseVerif::getThirdDepartName) + .ge(DataCaseVerif::getDiscoveryTime, start)))) + ).join(); - List ids = new ArrayList<>(); + List idCards = new ArrayList<>(); List mobiles = new ArrayList<>(); - ids.addAll(pList1.stream().map(DataPetition12337::getIdCode).toList()); - ids.addAll(pList2.stream().map(DataPetitionComplaint::getResponderIdCode).toList()); + idCards.addAll(pList1.stream().map(DataPetition12337::getIdCode).toList()); + idCards.addAll(pList2.stream().map(DataPetitionComplaint::getResponderIdCode).toList()); mobiles.addAll(pList3.stream().map(DataCaseVerif::getResponderPhone).toList()); - + List idCards2 = idCards.stream().distinct().toList(); + List mobiles2 = mobiles.stream().distinct().toList(); + + List xxList = new ArrayList<>(); + // 实有人口数据整合 + CompletableFuture.allOf(CompletableFutureUtil.runSyncObject(() -> xxList.addAll(getByIdCode(IntStream.range(0, (idCards2.size() + 9999) / 10000) + .mapToObj(i -> idCards2.subList(i * 10000, Math.min((i + 1) * 10000, idCards2.size()))) + .toList()))), + CompletableFutureUtil.runSyncObject(() -> xxList.addAll(getByMobiles(IntStream.range(0, (mobiles2.size() + 9999) / 10000) + .mapToObj(i -> mobiles2.subList(i * 10000, Math.min((i + 1) * 10000, mobiles2.size()))) + .toList())))).join(); + // 去重 + List personals = new ArrayList<>(); + Map map = new WeakHashMap<>(); + LocalDate today = now.toLocalDate(); + Date nowDate = new Date(); + for (GBaseSYRKXX xx : xxList) { + if(map.get(xx.getGmsfhm()) == null) { + personals.add(createPerson(xx, nowDate, today, now, Default.BIG_TAG_PETITION)); + map.put(xx.getGmsfhm(), new Byte[0]); + } + } + riskPersonalService.saveDistinct(personals); } private final SupExternalDepartRepository supExternalDepartRepository; @@ -324,7 +351,7 @@ public class PersonalServiceImpl implements PersonalService { } - RiskPersonal createPerson(GBaseSYRKXX item, Date bjsj, LocalDate now, LocalDateTime time) { + RiskPersonal createPerson(GBaseSYRKXX item, Date date, LocalDate now, LocalDateTime time, String tag) { RiskPersonal person = new RiskPersonal(); person.setName(item.getXm()); person.setMobileNumber(item.getLxdh()); @@ -335,9 +362,9 @@ public class PersonalServiceImpl implements PersonalService { person.setCreateTime(time); person.setAge(IdCodeUtil.idCard2Age(person.getIdCode(), now)); person.setGender(IdCodeUtil.idCard2Gender(person.getIdCode())); - person.setTags(Default.BIG_TAG_JJD); + person.setTags(tag); try { - LocalDateTime controlTime = bjsj.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + LocalDateTime controlTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); person.setControlTime(controlTime); } catch (Exception e) { log.info("报警时间处理异常"); 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 1e94cf8..c964ac7 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -9,6 +9,7 @@ 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.GBaseOilBuy; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseTbDZdrylb; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; import com.biutag.supervisiondata.pojo.entity.mine.*; @@ -44,8 +45,6 @@ public class PointServiceImpl implements PointService { private final GBaseZDRYRepository zdryRepository; - private final GBaseZDXLRepository zdxlRepository; - private final RiskPersonalService riskPersonalService; private final RiskModelTaskClueService modelTaskClueService; @@ -415,6 +414,93 @@ public class PointServiceImpl implements PointService { taskRepository.updateById(updateTask); } + private final GBaseOilBuyRepository oilBuyRepository; + + @Override + public void syncOilBuy(TaskParamDomain domain) { + LocalDateTime currentTime = LocalDateTime.now().minusMonths(3); + List buys = oilBuyRepository.list(new LambdaQueryWrapper() + .select(GBaseOilBuy::getId,GBaseOilBuy::getNumber,GBaseOilBuy::getOrgId,GBaseOilBuy::getOrgName, + 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); + // 旧数据 + List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + + Map oldMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (val, old)-> val)); + + Map> buyMap = buys.stream().collect(Collectors.groupingBy(GBaseOilBuy::getIdCode)); + // 新增记录 + List toInsert = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + List mineBuy = buyMap.get(person.getIdCode()); + if(mineBuy == null) { + continue; + } + for (GBaseOilBuy item : mineBuy) { + if(oldMap.get(BhUtil.oilBh(item.getId())) != null) { + continue; + } + ClueData data = ClueData.builder() + .name(person.getName()) + .id(BhUtil.oilBh(item.getId())) + .tag(Default.OIL_BUY) + .idCode(person.getIdCode()) + .departId(item.getOrgId()) + .departName(item.getOrgName()) + .personId(person.getId()) + .sourceData("发现该人员于"+item.getTime()+"在"+item.getCompanyName()+"购买容量为"+item.getNumber()+"L的"+item.getType()+",用作"+item.getUseTo()+",风险分增加2分") + .build(); + try { + data.setEventTime(LocalDateTime.parse(item.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } catch (Exception e) { + data.setEventTime(LocalDateTime.now()); + log.error("散装油时间转化异常"); + } + toInsert.add(createClue(task.getModelId(), 2, task.getId(), data)); + } + } + List toDelete = new ArrayList<>(); + Map deletePerson = new WeakHashMap<>(); + Map livePerson = new WeakHashMap<>(); + // 删除记录 + for (RiskModelTaskClue clue : oldList) { + if(clue.getEventTime().isBefore(currentTime)){ + RiskModelTaskClue delete = new RiskModelTaskClue(); + delete.setId(clue.getId()); + delete.setDel(1); + toDelete.add(delete); + deletePerson.put(clue.getIdCode(), new Byte[0]); + } else { + livePerson.put(clue.getIdCode(), new Byte[0]); + } + } + List idCodes = new ArrayList<>(); + // 删除标签 从deletePerson遍历,存活中没有,新增没有,说明该标签就没了 + for (String s : deletePerson.keySet()) { + if(livePerson.get(s)==null && buyMap.get(s) == null) { + idCodes.add(s); + } + } + if (!toInsert.isEmpty()) { + log.info("增加散装油人员:{}", toInsert.size()); + modelTaskClueService.saveClues(toInsert, Default.GOODS_IG); + } + if(!toDelete.isEmpty()) { + modelTaskClueService.deleteCluesAndDeleteTag(toDelete, idCodes, Default.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); + } + RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data) { RiskModelTaskClue clue = new RiskModelTaskClue(); clue.setModelId(modelId); 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 b350df6..62fe48c 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java @@ -9,6 +9,7 @@ import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalControlRecord; import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; +import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository; import com.biutag.supervisiondata.repository.RiskPersonalTagRepository; import com.biutag.supervisiondata.service.RiskModelTaskClueService; import com.biutag.supervisiondata.service.RiskPersonalTagService; @@ -42,6 +43,8 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { private final RiskPersonalTagRepository tagRepository; + private final RiskModelTaskClueRepository clueRepository; + Connection getConnection() throws SQLException { return dataSource.getConnection(); } @@ -111,6 +114,14 @@ public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { } } + @Override + public void deleteCluesAndDeleteTag(List list, List idCodes, String smallTag) { + clueRepository.updateBatchById(list); + if(!idCodes.isEmpty()) { + tagRepository.getBaseMapper().updateToDelete(idCodes, smallTag); + } + } + final String sql = "INSERT INTO risk_model_task_clue(model_id, name, id_code, task_id, source_id, risk_reason, data, score, event_time, create_time, update_time, case_ids) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)"; public void batchInsert(List alliances, String bigTag) { diff --git a/src/main/java/com/biutag/supervisiondata/util/BhUtil.java b/src/main/java/com/biutag/supervisiondata/util/BhUtil.java index 37464a7..b65dd76 100644 --- a/src/main/java/com/biutag/supervisiondata/util/BhUtil.java +++ b/src/main/java/com/biutag/supervisiondata/util/BhUtil.java @@ -20,6 +20,8 @@ public class BhUtil { private static final String ZY_PIX = "zy___"; + private static final String OIL_PIX = "oil___"; + public static String ajBh(String id) { return AJ_PIX+id; } @@ -39,4 +41,6 @@ public class BhUtil { public static String zyBh(String id) { return ZY_PIX+id; } + + public static String oilBh(String id) { return OIL_PIX+id; } } diff --git a/src/main/resources/mapper/dwd/GBaseOilBuyMapper.xml b/src/main/resources/mapper/dwd/GBaseOilBuyMapper.xml new file mode 100644 index 0000000..08f1ad9 --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseOilBuyMapper.xml @@ -0,0 +1,5 @@ + + + + +