From b7c6b2031140bd7cbac9dcc5403f5c6e623a556b Mon Sep 17 00:00:00 2001 From: kami <605128600@qq.com> Date: Fri, 6 Dec 2024 15:07:48 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=BE=E7=A5=9E=E7=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/wdpc/WdpcGrjdJsbryMapper.java | 12 ++ .../pojo/constants/Default.java | 4 + .../pojo/entity/wdpc/WdpcGrjdJsbry.java | 54 ++++++++ .../repository/RiskTaskRepository.java | 12 ++ .../repository/WdpcGrjdJsbryRepository.java | 16 +++ .../supervisiondata/rest/JJDController.java | 1 - .../service/PersonalService.java | 5 + .../service/WdpcGrjdJsbryService.java | 13 ++ .../service/impl/GBaseJJDServiceImpl.java | 20 +-- .../service/impl/PersonalServiceImpl.java | 121 ++++++++++++++++-- .../service/impl/PointServiceImpl.java | 2 +- .../service/impl/RiskPersonalServiceImpl.java | 11 -- .../impl/RiskScoreRuleServiceImpl.java | 2 +- .../impl/WdpcGrjdJsbryServiceService.java | 121 ++++++++++++++++++ .../biutag/supervisiondata/util/OrgUtil.java | 25 ++++ 15 files changed, 379 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/wdpc/WdpcGrjdJsbryMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc/WdpcGrjdJsbry.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/WdpcGrjdJsbryRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/WdpcGrjdJsbryService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java create mode 100644 src/main/java/com/biutag/supervisiondata/util/OrgUtil.java diff --git a/src/main/java/com/biutag/supervisiondata/mapper/wdpc/WdpcGrjdJsbryMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/wdpc/WdpcGrjdJsbryMapper.java new file mode 100644 index 0000000..bde7dbd --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/wdpc/WdpcGrjdJsbryMapper.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.mapper.wdpc; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdJsbry; + +/** + * @author kami on 2024-12-06 10:23:13 + * @version 0.0.1 + * @since 1.8 + */ +public interface WdpcGrjdJsbryMapper extends BaseMapper { +} 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 a81b1fd..f048728 100644 --- a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -50,6 +50,8 @@ public class Default { public static final String INVESTIGATE_FOUR = "四无人员"; + public static final String PSYCHOSIS_TAG = "精神障碍患者"; + // ***********因素************* public static final String AGE_IG = "年龄因素"; @@ -97,4 +99,6 @@ public class Default { public static final String MOTHER_EDUCATION = "母亲文化程度"; public static final String DOMICILETYPE = "户籍类型"; + + } diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc/WdpcGrjdJsbry.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc/WdpcGrjdJsbry.java new file mode 100644 index 0000000..23adb23 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/wdpc/WdpcGrjdJsbry.java @@ -0,0 +1,54 @@ +package com.biutag.supervisiondata.pojo.entity.wdpc; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 精神病人 + * @author kami on 2024-12-06 10:20:42 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("`wdpc_grjd_jsbry`") +public class WdpcGrjdJsbry implements Serializable { + + /** + * 名称 + */ + @TableField("`name`") + String name; + /** + * 身份证号码 + */ + @TableField("`id_code`") + String idCode; + @TableField("`actaul_time`") + String actaulTime; + @TableField("`actaul_id`") + String actaulId; + /** + * 症状 + */ + @TableField("`disease_describe`") + String diseaseDescribe; + /** + * 肇事次数 + */ + @TableField("`illegal_number`") + Integer illegalNumber; + /** + * 自杀次数 + */ + @TableField("`hurt_self_number`") + String hurtSelfNumber; + /** + * 自杀未遂次数 + */ + @TableField("`suicide_number`") + Integer suicideNumber; + +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java index 4ccf5ce..2ff58e3 100644 --- a/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java @@ -5,6 +5,8 @@ import com.biutag.supervisiondata.mapper.mine.RiskTaskMapper; import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; + /** * @author kami on 2024-11-11 14:10:01 * @version 0.0.1 @@ -12,4 +14,14 @@ import org.springframework.stereotype.Service; */ @Service public class RiskTaskRepository extends ServiceImpl { + + public RiskTask create(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + save(task); + return task; + } } diff --git a/src/main/java/com/biutag/supervisiondata/repository/WdpcGrjdJsbryRepository.java b/src/main/java/com/biutag/supervisiondata/repository/WdpcGrjdJsbryRepository.java new file mode 100644 index 0000000..94a094e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/WdpcGrjdJsbryRepository.java @@ -0,0 +1,16 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.wdpc.WdpcGrjdJsbryMapper; +import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdJsbry; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-12-06 10:25:23 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class WdpcGrjdJsbryRepository extends ServiceImpl { + +} diff --git a/src/main/java/com/biutag/supervisiondata/rest/JJDController.java b/src/main/java/com/biutag/supervisiondata/rest/JJDController.java index 0345971..a76ea91 100644 --- a/src/main/java/com/biutag/supervisiondata/rest/JJDController.java +++ b/src/main/java/com/biutag/supervisiondata/rest/JJDController.java @@ -7,7 +7,6 @@ import com.biutag.supervisiondata.config.cache.RedisDao; import com.biutag.supervisiondata.pojo.constants.Prompt; import com.biutag.supervisiondata.pojo.constants.RedisKey; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; -import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcJJDAi; import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcJJDInstance; import com.biutag.supervisiondata.repository.WdpcJJDInstanceRepository; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/biutag/supervisiondata/service/PersonalService.java b/src/main/java/com/biutag/supervisiondata/service/PersonalService.java index 870955f..66ef4cc 100644 --- a/src/main/java/com/biutag/supervisiondata/service/PersonalService.java +++ b/src/main/java/com/biutag/supervisiondata/service/PersonalService.java @@ -43,5 +43,10 @@ public interface PersonalService { */ void pullInvestigate(); + /** + * 精神病 + */ + void pullPsychosis(); + void init(); } diff --git a/src/main/java/com/biutag/supervisiondata/service/WdpcGrjdJsbryService.java b/src/main/java/com/biutag/supervisiondata/service/WdpcGrjdJsbryService.java new file mode 100644 index 0000000..9ebefce --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/WdpcGrjdJsbryService.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +/** + * @author kami on 2024-12-06 12:47:08 + * @version 0.0.1 + * @since 1.8 + */ +public interface WdpcGrjdJsbryService { + + void syncPys(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java index ff4fd3c..74e252c 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -20,6 +20,7 @@ import com.biutag.supervisiondata.repository.SupExternalDepartRepository; import com.biutag.supervisiondata.service.GBaseJJDService; import com.biutag.supervisiondata.service.RiskPersonalService; import com.biutag.supervisiondata.util.IdCodeUtil; +import com.biutag.supervisiondata.util.OrgUtil; import com.biutag.supervisiondata.util.PatternUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -178,7 +179,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { personal = refreshPersonal(personal, info, today); if (info.getSspcsdm() != null) { PointOrg org = orgCodeMap.get(info.getSspcsdm()); - org = findOrg(org, orgIdMap); + org = OrgUtil.findOrg(org, orgIdMap); if (org != null) { SupExternalDepart depart = pointExternalDepart.get(org.getDm()); if (depart != null) { @@ -194,13 +195,8 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { } } log.info("开始处理部门, {}", toInsert.size()); - int count = 0; Map hope = new WeakHashMap<>(); for (RiskPersonal personal : toInsert) { - count++; - if(count % 100 == 0) { - log.info("{}", count); - } if (personal.getControlDepartType() != null && personal.getControlDepartType() >= DepartType.HUMAN.getType()) { continue; } @@ -232,7 +228,7 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { SupExternalDepart depart = hope.get(tmp.getGxdwdm()); if(depart == null) { PointOrg org = orgCodeMap.get(tmp.getGxdwdm()); - org = findOrg(org, orgIdMap); + org = OrgUtil.findOrg(org, orgIdMap); depart = Optional.ofNullable(org).map(PointOrg::getDm).map(item -> jqExternalDepart.get(item)).orElse(null); } if (depart == null) { @@ -345,16 +341,6 @@ public class GBaseJJDServiceImpl implements GBaseJJDService { return info; } - PointOrg findOrg(PointOrg org, Map orgIdMap) { - if (org == null) { - return null; - } - if (org.getPcs() == null || !org.getPcs().equals("1")) { - return findOrg(orgIdMap.get(org.getPid()), orgIdMap); - } - return org; - } - RiskPersonal createPerson(GBaseJJD item) { RiskPersonal person = new RiskPersonal(); person.setName(item.getBjrxm()); 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 6c8d1ec..0f87286 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PersonalServiceImpl.java @@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; import com.biutag.supervisiondata.pojo.constants.Default; import com.biutag.supervisiondata.pojo.database.Contradiction; +import com.biutag.supervisiondata.pojo.database.PointOrg; import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; import com.biutag.supervisiondata.pojo.entity.mine.*; +import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdJsbry; import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdXfsj; import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdXfsjCs; import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcRyLgXX; @@ -16,6 +18,7 @@ import com.biutag.supervisiondata.repository.*; import com.biutag.supervisiondata.service.PersonalService; import com.biutag.supervisiondata.service.RiskPersonalService; import com.biutag.supervisiondata.util.IdCodeUtil; +import com.biutag.supervisiondata.util.OrgUtil; import com.biutag.supervisiondata.util.PatternUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -187,7 +190,8 @@ public class PersonalServiceImpl implements PersonalService { personal.setControlDepartType(DepartType.POINT.getType()); try { personal.setControlTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); - } catch (Exception e) { + } catch (Exception ignored) { + } // 基本信息 personal.setAge(IdCodeUtil.idCard2Age(personal.getIdCode(), now)); @@ -312,31 +316,57 @@ public class PersonalServiceImpl implements PersonalService { @Override public void pullPetitionAgain() { List idCodes = new ArrayList<>(); - CompletableFuture.allOf(CompletableFutureUtil.runSyncObject(() -> { - idCodes.addAll(xfsjRepository.list(new LambdaQueryWrapper().select(WdpcGrjdXfsj::getIdCode, WdpcGrjdXfsj::getName)).stream().map(WdpcGrjdXfsj::getIdCode).toList()); - }), CompletableFutureUtil.runSyncObject(() -> { - idCodes.addAll(xfsjCsRepository.list(new LambdaQueryWrapper().select(WdpcGrjdXfsjCs::getIdCode, WdpcGrjdXfsjCs::getName)).stream().map(WdpcGrjdXfsjCs::getIdCode).toList()); - })).join(); + CompletableFuture.allOf(CompletableFutureUtil.runSyncObject(() -> idCodes.addAll(xfsjRepository.list(new LambdaQueryWrapper().select(WdpcGrjdXfsj::getIdCode, WdpcGrjdXfsj::getName)).stream().map(WdpcGrjdXfsj::getIdCode).toList())), CompletableFutureUtil.runSyncObject(() -> idCodes.addAll(xfsjCsRepository.list(new LambdaQueryWrapper().select(WdpcGrjdXfsjCs::getIdCode, WdpcGrjdXfsjCs::getName)).stream().map(WdpcGrjdXfsjCs::getIdCode).toList()))).join(); List idCards = idCodes.stream().distinct().toList(); List> idCards2 = IntStream.range(0, (idCards.size() + 9999) / 10000) .mapToObj(i -> idCards.subList(i * 10000, Math.min((i + 1) * 10000, idCards.size()))) .toList(); - List xxList = new ArrayList<>(); - xxList.addAll(getByIdCode(idCards2)); + List supDeparts = externalDepartRepository.list(new LambdaQueryWrapper() + .select(SupExternalDepart::getExternalId, SupExternalDepart::getInternalId, SupExternalDepart::getInternalName, SupExternalDepart::getSource) + .eq(SupExternalDepart::getSource, "重点人员")); + + List orgs = zdryRepository.getBaseMapper().selectOrg(); + Map orgIdMap = new WeakHashMap<>(); + Map orgCodeMap = new WeakHashMap<>(); + for (PointOrg org : orgs) { + orgIdMap.put(org.getId(), org); + orgCodeMap.put(org.getDm(), org); + } + + Map supExternalDepartMap = supDeparts.stream().collect(Collectors.toMap(SupExternalDepart::getExternalId, Function.identity(), (val,old) -> val)); + + List xxList = new ArrayList<>(getByIdCode(idCards2)); // 去重 List personals = new ArrayList<>(); Map map = new WeakHashMap<>(); LocalDateTime now = LocalDateTime.now(); LocalDate today = now.toLocalDate(); Date nowDate = new Date(); + Map hope = new WeakHashMap<>(); for (GBaseSYRKXX xx : xxList) { if (map.get(xx.getGmsfhm()) == null) { RiskPersonal personal = createPerson(xx, nowDate, today, now, Default.BIG_TAG_PETITION); if(personal == null) { continue; } + SupExternalDepart depart = hope.get(xx.getSspcsdm()); + if(depart == null) { + personal.setMobileNumber(xx.getLxdh()); + PointOrg org = orgCodeMap.get(xx.getSspcsdm()); + org = OrgUtil.findOrg(org, orgIdMap); + depart = Optional.ofNullable(org).map(PointOrg::getDm).map(supExternalDepartMap::get).orElse(null); + } + if(depart != null) { + hope.put(xx.getSspcsdm(), depart); + personal.setControlDepartId(depart.getInternalId()); + personal.setControlDepartName(depart.getInternalName()); + personal.setControlDepartType(DepartType.HUMAN.getType()); + } else { + personal.setControlDepartId(null); + personal.setControlDepartName(null); + } personals.add(personal); map.put(xx.getGmsfhm(), new Byte[0]); } @@ -371,6 +401,79 @@ public class PersonalServiceImpl implements PersonalService { } } + private final WdpcGrjdJsbryRepository jsbryRepository; + + private final SupExternalDepartRepository externalDepartRepository; + + @Override + public void pullPsychosis() { + List jsbryList = jsbryRepository.list(new LambdaQueryWrapper() + .select(WdpcGrjdJsbry::getName, WdpcGrjdJsbry::getIdCode, WdpcGrjdJsbry::getActaulTime)); + LocalDate now = LocalDate.now(); + // id去重 + List idCodes = jsbryList.stream().map(WdpcGrjdJsbry::getIdCode).distinct().toList(); + List> idCards2 = IntStream.range(0, (idCodes.size() + 9999) / 10000) + .mapToObj(i -> idCodes.subList(i * 10000, Math.min((i + 1) * 10000, idCodes.size()))) + .toList(); + + List xxList = new ArrayList<>(getByIdCode(idCards2)); + Map xxMap = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (val, old) -> val)); + + List supDeparts = externalDepartRepository.list(new LambdaQueryWrapper() + .select(SupExternalDepart::getExternalId, SupExternalDepart::getInternalId, SupExternalDepart::getInternalName, SupExternalDepart::getSource) + .eq(SupExternalDepart::getSource, "重点人员")); + + List orgs = zdryRepository.getBaseMapper().selectOrg(); + Map orgIdMap = new WeakHashMap<>(); + Map orgCodeMap = new WeakHashMap<>(); + for (PointOrg org : orgs) { + orgIdMap.put(org.getId(), org); + orgCodeMap.put(org.getDm(), org); + } + + Map supExternalDepartMap = supDeparts.stream().collect(Collectors.toMap(SupExternalDepart::getExternalId, Function.identity(), (val,old) -> val)); + Map map = new WeakHashMap<>(); + List personals = new ArrayList<>(); + + Map hope = new WeakHashMap<>(); + for (WdpcGrjdJsbry ry : jsbryList) { + if(map.get(ry.getIdCode()) != null) { + continue; + } + map.put(ry.getIdCode(), new Byte[0]); + + GBaseSYRKXX xx = xxMap.get(ry.getIdCode()); + + RiskPersonal person = new RiskPersonal(); + person.setName(ry.getName()); + person.setIdCode(ry.getIdCode()); + person.setAge(IdCodeUtil.idCard2Age(ry.getIdCode(), now)); + person.setGender(IdCodeUtil.idCard2Gender(ry.getIdCode())); + person.setCreateTime(LocalDateTime.now()); + person.setControlTime(LocalDateTime.now()); + if(xx != null) { + SupExternalDepart depart = hope.get(xx.getSspcsdm()); + if(depart == null) { + person.setMobileNumber(xx.getLxdh()); + PointOrg org = orgCodeMap.get(xx.getSspcsdm()); + org = OrgUtil.findOrg(org, orgIdMap); + depart = Optional.ofNullable(org).map(PointOrg::getDm).map(supExternalDepartMap::get).orElse(null); + } + if(depart != null) { + hope.put(xx.getSspcsdm(), depart); + person.setControlDepartId(depart.getInternalId()); + person.setControlDepartName(depart.getInternalName()); + person.setControlDepartType(DepartType.HUMAN.getType()); + } + } + person.setTags(Default.PSYCHOSIS_TAG); + personals.add(person); + } + if(!personals.isEmpty()) { + riskPersonalService.saveDistinct(personals); + } + } + private final RiskTestRepository riskTestRepository; @Override @@ -439,7 +542,7 @@ public class PersonalServiceImpl implements PersonalService { person.setMobileNumber(item.getLxdh()); person.setControlDepartId(item.getSspcsdm()); person.setControlDepartName(item.getSspcsmc()); - person.setControlDepartType(DepartType.HUMAN.getType()); + person.setControlDepartType(DepartType.OTHER.getType()); person.setIdCode(item.getGmsfhm().toUpperCase()); person.setCreateTime(time); person.setAge(IdCodeUtil.idCard2Age(person.getIdCode(), now)); 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 f56d35d..27aae2a 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -1012,7 +1012,7 @@ public class PointServiceImpl implements PointService { .filter(Character::isDigit) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); - if (number.length() < 8 || number.equals("00000000")) { + if (number.length() <= 8 || number.equals("00000000")) { continue; } mobiles.append(m).append(","); 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 7ffd231..a6ffb19 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java @@ -63,7 +63,6 @@ public class RiskPersonalServiceImpl implements RiskPersonalService { .in(RiskPersonal::getIdCode, old))); } Map oldMap = oldPerson.stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); -// list.stream().filter(item -> item.getIdCode()!=null).forEach(it -> it.setIdCode(it.getIdCode().toUpperCase())); // 暂时先去重 后面要加标签 Map> map = list.stream().filter(item -> item.getIdCode()!=null) .collect(Collectors.groupingBy(RiskPersonal::getIdCode)); @@ -75,16 +74,6 @@ public class RiskPersonalServiceImpl implements RiskPersonalService { for (Map.Entry> entry : map.entrySet()) { RiskPersonal tmp = entry.getValue().getFirst(); -// for (RiskPersonal riskPersonal : entry.getValue()) { -// RiskPersonalTag tag = new RiskPersonalTag(); -// tag.setBigTag(bigTag); -// tag.setTagTime(Optional.ofNullable(riskPersonal.getControlTime()).orElse(LocalDateTime.now())); -// tag.setName(riskPersonal.getName()); -// tag.setIdCode(riskPersonal.getIdCode()); -// tag.setSmallTag(riskPersonal.getTags()); -// tag.setCreateTime(LocalDateTime.now()); -// tags.add(tag); -// } // 看看这个人老数据里面有没有 RiskPersonal oldPersonal = oldMap.get(tmp.getIdCode()); if(oldPersonal == null) { diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java index cdd9194..ed0bbb7 100644 --- a/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java @@ -119,7 +119,7 @@ public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { toUpdates.add(update); } count++; - if(count%1000 == 0) { + if(count%100000 == 0) { log.info("已完成打分: {},共计:{}", count,size); } } diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java b/src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java new file mode 100644 index 0000000..31c2598 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/WdpcGrjdJsbryServiceService.java @@ -0,0 +1,121 @@ +package com.biutag.supervisiondata.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.pojo.ClueData; +import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; +import com.biutag.supervisiondata.pojo.entity.wdpc.WdpcGrjdJsbry; +import com.biutag.supervisiondata.repository.RiskTaskRepository; +import com.biutag.supervisiondata.repository.WdpcGrjdJsbryRepository; +import com.biutag.supervisiondata.service.WdpcGrjdJsbryService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-12-06 14:01:46 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class WdpcGrjdJsbryServiceService implements WdpcGrjdJsbryService { + + private final WdpcGrjdJsbryRepository jsbryRepository; + + private final RiskTaskRepository taskRepository; + + @Override + public void syncPys(TaskParamDomain domain) { + List jsbryList = jsbryRepository.list(new LambdaQueryWrapper() + .select(WdpcGrjdJsbry::getName, WdpcGrjdJsbry::getIdCode, WdpcGrjdJsbry::getActaulTime, + WdpcGrjdJsbry::getActaulId, WdpcGrjdJsbry::getSuicideNumber, WdpcGrjdJsbry::getHurtSelfNumber,WdpcGrjdJsbry::getIllegalNumber,WdpcGrjdJsbry::getDiseaseDescribe)); + + Map> jsbMap = jsbryList.stream().collect(Collectors.groupingBy(WdpcGrjdJsbry::getIdCode)); + + RiskTask task = taskRepository.create(jsbryList.size(), 59); + List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + Map oldClueMap = oldList.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, Function.identity(), (val, old) -> val)); + + List toInsert = new ArrayList<>(); + for (Map.Entry> entry : jsbMap.entrySet()) { + if(oldClueMap.get(entry.getKey()) != null) { + continue; + } + StringBuilder text = new StringBuilder("该人员是精神障碍患者,诊断为"); + StringBuilder tag = new StringBuilder(); + StringBuilder tag2 = new StringBuilder(); + WdpcGrjdJsbry jsb = entry.getValue().getFirst(); + LocalDate date = null; + for (WdpcGrjdJsbry wdpcGrjdJsbry : entry.getValue()) { + if(tag.indexOf(wdpcGrjdJsbry.getActaulId()) != -1) { + tag.append(wdpcGrjdJsbry.getActaulId()).append(","); + text.append(wdpcGrjdJsbry.getActaulId()).append(","); + if(wdpcGrjdJsbry.getDiseaseDescribe()!=null && !wdpcGrjdJsbry.getDiseaseDescribe().isEmpty()) { + tag2.append(wdpcGrjdJsbry.getDiseaseDescribe()).append(","); + } + } + try { + LocalDate tmp = LocalDate.parse(jsb.getActaulTime(), DateTimeFormatter.ofPattern("yyyyMMdd")); + if(date == null) { + date = tmp; + continue; + } + if(tmp.isAfter(date)) { + date = tmp; + } + } catch (Exception e) { + log.error("精神病转化时间异常"); + } + + } + if(tag2.length() > 0) { + text.append("症状为:").append(tag2); + } + text.append("增加风险分5分"); + ClueData data = ClueData.builder() + .name(jsb.getName()) + .id("psychosis") + .idCode(jsb.getIdCode()) + .tag(Default.PSYCHOSIS_TAG) + .sourceData(text.toString()) + .build(); + if(date != null) { + data.setEventTime(date.atTime(0,0,0)); + } else { + data.setEventTime(LocalDateTime.now()); + } + toInsert.add(createClue(task.getModelId(), 5, task.getId(), data)); + } + } + + 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(data.getId()); + clue.setRiskReason(data.getTag()); + return clue; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/util/OrgUtil.java b/src/main/java/com/biutag/supervisiondata/util/OrgUtil.java new file mode 100644 index 0000000..397538f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/util/OrgUtil.java @@ -0,0 +1,25 @@ +package com.biutag.supervisiondata.util; + +import com.biutag.supervisiondata.pojo.database.PointOrg; +import lombok.experimental.UtilityClass; + +import java.util.Map; + +/** + * @author kami on 2024-12-06 10:43:55 + * @version 0.0.1 + * @since 1.8 + */ +@UtilityClass +public class OrgUtil { + + public static PointOrg findOrg(PointOrg org, Map orgIdMap) { + if (org == null) { + return null; + } + if (org.getPcs() == null || !org.getPcs().equals("1")) { + return findOrg(orgIdMap.get(org.getPid()), orgIdMap); + } + return org; + } +}