From 8f1ef834a133d0ba169a33e3130c49d1ae884658 Mon Sep 17 00:00:00 2001 From: kami <605128600@qq.com> Date: Mon, 25 Nov 2024 10:52:24 +0800 Subject: [PATCH] first commit --- .gitattributes | 2 + .gitignore | 33 + .mvn/wrapper/maven-wrapper.properties | 19 + mvnw | 259 +++++ mvnw.cmd | 149 +++ pom.xml | 237 +++++ .../SupervisionDataApplication.java | 19 + .../common/exception/BusinessException.java | 56 ++ .../common/interfaces/AssertInterface.java | 12 + .../common/interfaces/AssertObjInterface.java | 12 + .../interfaces/CompletableFutureMine.java | 13 + .../interfaces/CompletableFutureResult.java | 13 + .../interfaces/CompletableFutureType.java | 13 + .../interfaces/CompletableFutureUtil.java | 173 ++++ .../supervisiondata/common/response/RS.java | 131 +++ .../common/response/StatusCode.java | 38 + .../common/thread/GenericPool.java | 46 + .../common/thread/ThreadPoolConfig.java | 40 + .../config/cache/RedisConfig.java | 89 ++ .../config/cache/RedisDao.java | 505 ++++++++++ .../config/cache/RedisInterface.java | 15 + .../biutag/supervisiondata/config/db/Ads.java | 67 ++ .../biutag/supervisiondata/config/db/Dwd.java | 67 ++ .../supervisiondata/config/db/Mine.java | 82 ++ .../event/ApplicationEvent.java | 137 +++ .../supervisiondata/lock/LocalLock.java | 15 + .../mapper/ads/GBaseSYRKXXMapper.java | 57 ++ .../mapper/dwd/GBaseAJJBXXMapper.java | 12 + .../mapper/dwd/GBaseBAXXMapper.java | 12 + .../mapper/dwd/GBaseBAYJMapper.java | 12 + .../mapper/dwd/GBaseHYMapper.java | 12 + .../mapper/dwd/GBaseJJDMapper.java | 27 + .../mapper/dwd/GBaseSHRXXMapper.java | 28 + .../mapper/dwd/GBaseTbDZdrylbMapper.java | 12 + .../mapper/dwd/GBaseWFRXXMapper.java | 40 + .../mapper/dwd/GBaseZDRYMapper.java | 69 ++ .../mapper/dwd/GBaseZDXLMapper.java | 12 + .../mapper/dwd/GBaseZYRYXXMapper.java | 12 + .../mapper/mine/DataCaseVerifMapper.java | 9 + .../mapper/mine/DataPetition12337Mapper.java | 13 + .../mine/DataPetitionComplaintMapper.java | 10 + .../mapper/mine/ModelMapper.java | 8 + .../mapper/mine/RiskModelTaskClueMapper.java | 18 + .../mine/RiskPersonalControlRecordMapper.java | 13 + .../mapper/mine/RiskPersonalMapper.java | 35 + .../mapper/mine/RiskPersonalTagMapper.java | 13 + .../mapper/mine/RiskScoreRuleMapper.java | 8 + .../mapper/mine/RiskTaskMapper.java | 12 + .../mapper/mine/RiskTestMapper.java | 12 + .../mapper/mine/SupDepartMapper.java | 8 + .../mapper/mine/SupExternalDepartMapper.java | 8 + .../biutag/supervisiondata/pojo/ClueData.java | 47 + .../biutag/supervisiondata/pojo/ClueInfo.java | 47 + .../pojo/constants/Default.java | 43 + .../pojo/constants/ThreadConstants.java | 16 + .../pojo/domain/CrazyLevelThree.java | 28 + .../supervisiondata/pojo/domain/Drug.java | 22 + .../supervisiondata/pojo/domain/Extreme.java | 34 + .../supervisiondata/pojo/domain/FightMan.java | 24 + .../pojo/domain/NoControl.java | 39 + .../pojo/domain/PointCall.java | 33 + .../pojo/domain/PointType.java | 20 + .../pojo/domain/TaskParamDomain.java | 57 ++ .../supervisiondata/pojo/domain/Violence.java | 36 + .../pojo/entity/ads/GBaseSYRKXX.java | 64 ++ .../pojo/entity/dwd/GBaseAJJBXX.java | 49 + .../pojo/entity/dwd/GBaseBAXX.java | 36 + .../pojo/entity/dwd/GBaseBAYJ.java | 36 + .../pojo/entity/dwd/GBaseHY.java | 56 ++ .../pojo/entity/dwd/GBaseJJD.java | 74 ++ .../pojo/entity/dwd/GBaseSHRXX.java | 47 + .../pojo/entity/dwd/GBaseTbDZdrylb.java | 20 + .../pojo/entity/dwd/GBaseWFRXX.java | 52 + .../pojo/entity/dwd/GBaseZDRY.java | 107 +++ .../pojo/entity/dwd/GBaseZDXL.java | 33 + .../pojo/entity/dwd/GBaseZYRYXX.java | 48 + .../pojo/entity/mine/DataCaseVerif.java | 79 ++ .../pojo/entity/mine/DataPetition12337.java | 605 ++++++++++++ .../entity/mine/DataPetitionComplaint.java | 93 ++ .../pojo/entity/mine/Model.java | 96 ++ .../pojo/entity/mine/RiskModelTaskClue.java | 108 +++ .../pojo/entity/mine/RiskPersonal.java | 96 ++ .../mine/RiskPersonalControlRecord.java | 77 ++ .../pojo/entity/mine/RiskPersonalTag.java | 63 ++ .../pojo/entity/mine/RiskScoreRule.java | 58 ++ .../pojo/entity/mine/RiskTask.java | 75 ++ .../pojo/entity/mine/RiskTest.java | 29 + .../pojo/entity/mine/SupDepart.java | 85 ++ .../pojo/entity/mine/SupExternalDepart.java | 63 ++ .../supervisiondata/pojo/enums/Charge.java | 49 + .../supervisiondata/pojo/enums/Dispute.java | 41 + .../supervisiondata/pojo/enums/Edu.java | 36 + .../repository/DataCaseVerifRepository.java | 15 + .../DataPetition12337Repository.java | 21 + .../DataPetitionComplaintRepository.java | 15 + .../repository/GBaseAJJBXXRepository.java | 15 + .../repository/GBaseBAXXRepository.java | 15 + .../repository/GBaseBAYJRepository.java | 15 + .../repository/GBaseHYRepository.java | 15 + .../repository/GBaseJJDRepository.java | 15 + .../repository/GBaseSHRXXRepository.java | 15 + .../repository/GBaseSYRKXXRepository.java | 15 + .../repository/GBaseTbDZdrylbRepository.java | 15 + .../repository/GBaseWFRXXRepository.java | 16 + .../repository/GBaseZDRYRepository.java | 15 + .../repository/GBaseZDXLRepository.java | 15 + .../repository/GBaseZYRYXXRepository.java | 15 + .../repository/ModelRepository.java | 15 + .../RiskModelTaskClueRepository.java | 15 + .../repository/RiskPersonalRepository.java | 15 + .../repository/RiskPersonalTagRepository.java | 15 + .../repository/RiskScoreRuleRepository.java | 15 + .../repository/RiskTaskRepository.java | 15 + .../repository/RiskTestRepository.java | 15 + .../repository/SupDepartRepository.java | 15 + .../SupExternalDepartRepository.java | 15 + .../supervisiondata/rest/ApiController.java | 51 + .../supervisiondata/service/DictService.java | 17 + .../service/GBaseBAService.java | 13 + .../service/GBaseJJDService.java | 17 + .../service/GBaseSHRWFRService.java | 16 + .../supervisiondata/service/HabitService.java | 13 + .../service/MarriageService.java | 14 + .../service/NoControlService.java | 16 + .../service/PetitionService.java | 17 + .../supervisiondata/service/PointService.java | 31 + .../service/PoliceService.java | 13 + .../service/RiskModelTaskClueService.java | 16 + .../RiskPersonalControlRecordService.java | 17 + .../service/RiskPersonalService.java | 32 + .../service/RiskPersonalTagService.java | 21 + .../service/RiskScoreRuleService.java | 13 + .../service/RiskTaskService.java | 50 + .../service/impl/DictServiceImpl.java | 38 + .../service/impl/GBaseBAServiceImpl.java | 195 ++++ .../service/impl/GBaseJJDServiceImpl.java | 268 ++++++ .../service/impl/GBaseSHRWFRServiceImpl.java | 281 ++++++ .../service/impl/HabitServiceImpl.java | 252 +++++ .../service/impl/MarriageServiceImpl.java | 192 ++++ .../service/impl/NoControlServiceImpl.java | 302 ++++++ .../service/impl/PetitionServiceImpl.java | 573 +++++++++++ .../service/impl/PointServiceImpl.java | 599 ++++++++++++ .../service/impl/PoliceServiceImpl.java | 229 +++++ .../impl/RiskModelTaskClueServiceImpl.java | 90 ++ .../impl/RiskPersonalControlRecordImpl.java | 67 ++ .../service/impl/RiskPersonalServiceImpl.java | 267 ++++++ .../impl/RiskPersonalTagServiceImpl.java | 161 ++++ .../impl/RiskScoreRuleServiceImpl.java | 121 +++ .../service/impl/RiskTaskServiceImpl.java | 887 ++++++++++++++++++ .../supervisiondata/task/TaskService.java | 22 + .../biutag/supervisiondata/util/AgeUtil.java | 35 + .../biutag/supervisiondata/util/BhUtil.java | 42 + .../supervisiondata/util/PatternUtil.java | 55 ++ .../supervisiondata/util/RandomUtil.java | 89 ++ .../biutag/supervisiondata/util/TxtUtil.java | 33 + src/main/resources/application.yml | 85 ++ ...connector-java-8.3.81.53-build52.8-bin.jar | Bin 0 -> 786598 bytes src/main/resources/logback-spring.xml | 62 ++ .../mapper/ads/GBaseSYRKXXMapper.xml | 6 + .../mapper/dwd/GBaseAJJBXXMapper.xml | 5 + .../resources/mapper/dwd/GBaseBAXXMapper.xml | 5 + .../resources/mapper/dwd/GBaseBAYJMapper.xml | 5 + .../resources/mapper/dwd/GBaseHYMapper.xml | 5 + .../resources/mapper/dwd/GBaseJJDMapper.xml | 5 + .../resources/mapper/dwd/GBaseSHRXXMapper.xml | 5 + .../mapper/dwd/GBaseTbDZdrylbMapper.xml | 5 + .../resources/mapper/dwd/GBaseWFRXXMapper.xml | 5 + .../resources/mapper/dwd/GBaseZDRYMapper.xml | 5 + .../resources/mapper/dwd/GBaseZDXLMapper.xml | 5 + .../mapper/dwd/GBaseZYRYXXMapper.xml | 5 + .../mapper/mine/DataCaseVerifMapper.xml | 5 + .../mapper/mine/DataPetition12337Mapper.xml | 5 + .../mine/DataPetitionComplaintMapper.xml | 5 + .../resources/mapper/mine/ModelMapper.xml | 5 + .../mapper/mine/RiskModelTaskClueMapper.xml | 5 + .../mine/RiskPersonalControlRecordMapper.xml | 7 + .../mapper/mine/RiskPersonalMapper.xml | 5 + .../mapper/mine/RiskPersonalTagMapper.xml | 5 + .../mapper/mine/RiskScoreRuleMapper.xml | 5 + .../resources/mapper/mine/RiskTaskMapper.xml | 5 + .../resources/mapper/mine/RiskTestMapper.xml | 5 + .../resources/mapper/mine/SupDepartMapper.xml | 5 + .../mapper/mine/SupExternalDepartMapper.xml | 5 + .../SupervisionDataApplicationTests.java | 13 + 184 files changed, 11255 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .mvn/wrapper/maven-wrapper.properties create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 src/main/java/com/biutag/supervisiondata/SupervisionDataApplication.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/exception/BusinessException.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/interfaces/AssertInterface.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/interfaces/AssertObjInterface.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureMine.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureResult.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureType.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureUtil.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/response/RS.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/response/StatusCode.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/thread/GenericPool.java create mode 100644 src/main/java/com/biutag/supervisiondata/common/thread/ThreadPoolConfig.java create mode 100644 src/main/java/com/biutag/supervisiondata/config/cache/RedisConfig.java create mode 100644 src/main/java/com/biutag/supervisiondata/config/cache/RedisDao.java create mode 100644 src/main/java/com/biutag/supervisiondata/config/cache/RedisInterface.java create mode 100644 src/main/java/com/biutag/supervisiondata/config/db/Ads.java create mode 100644 src/main/java/com/biutag/supervisiondata/config/db/Dwd.java create mode 100644 src/main/java/com/biutag/supervisiondata/config/db/Mine.java create mode 100644 src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java create mode 100644 src/main/java/com/biutag/supervisiondata/lock/LocalLock.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseAJJBXXMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAXXMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAYJMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseHYMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseSHRXXMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseTbDZdrylbMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseWFRXXMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDXLMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZYRYXXMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/DataCaseVerifMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetition12337Mapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetitionComplaintMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/ModelMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalControlRecordMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskScoreRuleMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTaskMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/SupDepartMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/mapper/mine/SupExternalDepartMapper.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/ClueData.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/ClueInfo.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/constants/ThreadConstants.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/CrazyLevelThree.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/Drug.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/Extreme.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/FightMan.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/NoControl.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/PointCall.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/PointType.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/TaskParamDomain.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/domain/Violence.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseAJJBXX.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAXX.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAYJ.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseHY.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseJJD.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseSHRXX.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseTbDZdrylb.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDRY.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDXL.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZYRYXX.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataCaseVerif.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetition12337.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetitionComplaint.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/Model.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonal.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalControlRecord.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskScoreRule.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTask.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTest.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupDepart.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupExternalDepart.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/enums/Charge.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/enums/Dispute.java create mode 100644 src/main/java/com/biutag/supervisiondata/pojo/enums/Edu.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/DataCaseVerifRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/DataPetition12337Repository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/DataPetitionComplaintRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseAJJBXXRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseBAXXRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseBAYJRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseHYRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseJJDRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseSHRXXRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseSYRKXXRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseTbDZdrylbRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseWFRXXRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseZDRYRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseZDXLRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/GBaseZYRYXXRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/ModelRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/RiskModelTaskClueRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/RiskPersonalRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/RiskPersonalTagRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/RiskScoreRuleRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/RiskTestRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/SupDepartRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/repository/SupExternalDepartRepository.java create mode 100644 src/main/java/com/biutag/supervisiondata/rest/ApiController.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/DictService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/GBaseBAService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/HabitService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/MarriageService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/NoControlService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/PetitionService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/PointService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/PoliceService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/RiskPersonalControlRecordService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/RiskPersonalTagService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/RiskScoreRuleService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/DictServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/PoliceServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalControlRecordImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalTagServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java create mode 100644 src/main/java/com/biutag/supervisiondata/task/TaskService.java create mode 100644 src/main/java/com/biutag/supervisiondata/util/AgeUtil.java create mode 100644 src/main/java/com/biutag/supervisiondata/util/BhUtil.java create mode 100644 src/main/java/com/biutag/supervisiondata/util/PatternUtil.java create mode 100644 src/main/java/com/biutag/supervisiondata/util/RandomUtil.java create mode 100644 src/main/java/com/biutag/supervisiondata/util/TxtUtil.java create mode 100644 src/main/resources/application.yml create mode 100644 src/main/resources/lib/gbase-connector-java-8.3.81.53-build52.8-bin.jar create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/main/resources/mapper/ads/GBaseSYRKXXMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseAJJBXXMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseBAXXMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseBAYJMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseHYMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseJJDMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseSHRXXMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseTbDZdrylbMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseWFRXXMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseZDRYMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseZDXLMapper.xml create mode 100644 src/main/resources/mapper/dwd/GBaseZYRYXXMapper.xml create mode 100644 src/main/resources/mapper/mine/DataCaseVerifMapper.xml create mode 100644 src/main/resources/mapper/mine/DataPetition12337Mapper.xml create mode 100644 src/main/resources/mapper/mine/DataPetitionComplaintMapper.xml create mode 100644 src/main/resources/mapper/mine/ModelMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskModelTaskClueMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskPersonalControlRecordMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskPersonalMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskPersonalTagMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskScoreRuleMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskTaskMapper.xml create mode 100644 src/main/resources/mapper/mine/RiskTestMapper.xml create mode 100644 src/main/resources/mapper/mine/SupDepartMapper.xml create mode 100644 src/main/resources/mapper/mine/SupExternalDepartMapper.xml create mode 100644 src/test/java/com/biutag/supervisiondata/SupervisionDataApplicationTests.java diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3b41682 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..d58dfb7 --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/mvnw b/mvnw new file mode 100644 index 0000000..19529dd --- /dev/null +++ b/mvnw @@ -0,0 +1,259 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.2 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + if [ -n "${JAVA_HOME-}" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..249bdf3 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,149 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..570fbbc --- /dev/null +++ b/pom.xml @@ -0,0 +1,237 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.3.4 + + + com.biutag + supervision-data + 1.0.0 + supervision-data + 数字督察 数据同步 + + + 21 + + + + + SpringCloudRepo + SpringCloudRepo + https://repo.spring.io/milestone + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + + AsposeJavaAPI + Aspose Java API + https://repository.aspose.com/repo/ + + + maven2 + maven2 + https://repo1.maven.org/maven2 + + + meethour + meethour + https://repo.meethour.io/maven/releases/ + + + + + + cn.hutool + hutool-core + 5.8.29 + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-test + test + + + com.jayway.jsonpath + json-path + + + + + com.jayway.jsonpath + json-path + 2.9.0 + test + + + com.mysql + mysql-connector-j + runtime + + + org.springframework.boot + spring-boot-starter-jdbc + + + commons-codec + commons-codec + + + io.projectreactor + reactor-test + test + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.apache.commons + commons-pool2 + + + com.baomidou + mybatis-plus-spring-boot3-starter + 3.5.7 + + + + + + + + + + + + + commons-io + commons-io + 2.17.0 + + + org.springframework.security + spring-security-crypto + + + com.gbase + gbase-jdbc + 8.3.81.53-build55.2.1-bin + + + + org.projectlombok + lombok + 1.18.30 + + + com.alibaba.fastjson2 + fastjson2 + 2.0.45 + compile + + + org.jetbrains + annotations + 24.0.1 + compile + + + org.apache.commons + commons-lang3 + 3.13.0 + + + org.springframework + spring-context-indexer + true + + + org.springframework.retry + spring-retry + + + org.springframework.boot + spring-boot-starter-aop + + + net.logstash.logback + logstash-logback-encoder + 4.9 + + + + + ${project.artifactId} + + + + src/main/resources + false + + + src/main/resources + + application.yml + + true + + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.1 + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + true + + + + org.springframework.boot + spring-boot-maven-plugin + 3.3.0 + + + + repackage + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + true + 21 + 21 + + + + + + diff --git a/src/main/java/com/biutag/supervisiondata/SupervisionDataApplication.java b/src/main/java/com/biutag/supervisiondata/SupervisionDataApplication.java new file mode 100644 index 0000000..91b962d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/SupervisionDataApplication.java @@ -0,0 +1,19 @@ +package com.biutag.supervisiondata; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.retry.annotation.EnableRetry; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Indexed; + +@Indexed +@EnableRetry +@EnableScheduling +@SpringBootApplication +public class SupervisionDataApplication { + + public static void main(String[] args) { + SpringApplication.run(SupervisionDataApplication.class, args); + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/common/exception/BusinessException.java b/src/main/java/com/biutag/supervisiondata/common/exception/BusinessException.java new file mode 100644 index 0000000..d9221f9 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/exception/BusinessException.java @@ -0,0 +1,56 @@ +package com.biutag.supervisiondata.common.exception; + +import com.biutag.supervisiondata.common.response.StatusCode; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 业务异常 + * + * @author kami + * @since 12:02 2021/1/8 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class BusinessException extends RuntimeException { + + /** + * 错误码 + */ + private int statusCode; + /** + * 重定向的路径 + */ + private String url; + + @Serial + private static final long serialVersionUID = 1L; + + public BusinessException(StatusCode statusCode) { + super(); + this.statusCode = statusCode.getCode(); + } + + public BusinessException(StatusCode statusCode, Throwable throwable) { + super(throwable); + this.statusCode = statusCode.getCode(); + } + + public BusinessException(StatusCode statusCode, String message) { + super(message); + this.statusCode = statusCode.getCode(); + } + + public BusinessException(StatusCode statusCode, String message, String url) { + super(message); + this.statusCode = statusCode.getCode(); + this.url = url; + } + + public BusinessException(StatusCode statusCode, String message, Throwable throwable) { + super(message, throwable); + this.statusCode = statusCode.getCode(); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/common/interfaces/AssertInterface.java b/src/main/java/com/biutag/supervisiondata/common/interfaces/AssertInterface.java new file mode 100644 index 0000000..c967b20 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/interfaces/AssertInterface.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.common.interfaces; + +/** + * @author kami + * @version 1.0 + * @since 2022/7/8 13:50 + */ +@FunctionalInterface +public interface AssertInterface { + + void run(String str); +} diff --git a/src/main/java/com/biutag/supervisiondata/common/interfaces/AssertObjInterface.java b/src/main/java/com/biutag/supervisiondata/common/interfaces/AssertObjInterface.java new file mode 100644 index 0000000..5e3c1c1 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/interfaces/AssertObjInterface.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.common.interfaces; + +/** + * @author kami + * @version 1.0 + * @since 2022/12/20 11:36 + */ +@FunctionalInterface +public interface AssertObjInterface { + + T run(String str); +} diff --git a/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureMine.java b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureMine.java new file mode 100644 index 0000000..d1e39c9 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureMine.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.common.interfaces; + +/** + * @author kami + * @version 1.0 + * @since 2021/11/22 17:37 + */ +@FunctionalInterface +public interface CompletableFutureMine { + + void run(); + +} diff --git a/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureResult.java b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureResult.java new file mode 100644 index 0000000..a261cfa --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureResult.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.common.interfaces; + +/** + * @author kami + * @version 1.0 + * @since 2021/11/22 17:37 + */ +@FunctionalInterface +public interface CompletableFutureResult { + + Boolean run(); + +} diff --git a/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureType.java b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureType.java new file mode 100644 index 0000000..daa6411 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureType.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.common.interfaces; + +/** + * @author kami + * @version 1.0 + * @since 2021/11/22 17:37 + */ +@FunctionalInterface +public interface CompletableFutureType { + + T run(); + +} diff --git a/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureUtil.java b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureUtil.java new file mode 100644 index 0000000..43626a8 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/interfaces/CompletableFutureUtil.java @@ -0,0 +1,173 @@ +package com.biutag.supervisiondata.common.interfaces; + + +import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; + +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +/** + * @author kami + * @version 1.0 + * @since 2021/11/22 17:39 + */ +@Slf4j +public class CompletableFutureUtil { + + private CompletableFutureUtil(){} + + public static final String TRACE_ID = "trace_id"; + + private static void run(CompletableFutureMine completableFutureMine, Map previous) { + if (previous == null) { + MDC.clear(); + } else { + MDC.setContextMap(previous); + } + if (MDC.get(TRACE_ID) == null || MDC.get(TRACE_ID).isEmpty()) { + MDC.put(TRACE_ID, System.nanoTime() + ""); + } + completableFutureMine.run(); + MDC.clear(); + } + + private static Boolean runResult(CompletableFutureResult result, Map previous) { + if (previous == null) { + MDC.clear(); + } else { + MDC.setContextMap(previous); + } + if (MDC.get(TRACE_ID) == null || MDC.get(TRACE_ID).isEmpty()) { + MDC.put(TRACE_ID, System.nanoTime() + ""); + } + Boolean rs = result.run(); + MDC.clear(); + return rs; + } + + public static void runSync(CompletableFutureMine completableFutureMine) { + Map previous = MDC.getCopyOfContextMap(); + CompletableFuture.runAsync(() -> run(completableFutureMine, previous)).exceptionally(e -> { + log.error("",e); + MDC.clear(); + return null; + }); + } + + public static void runSyncVirtual(CompletableFutureMine completableFutureMine) { + Map previous = MDC.getCopyOfContextMap(); + CompletableFuture.runAsync(() -> run(completableFutureMine, previous), Executors.newVirtualThreadPerTaskExecutor()).exceptionally(e -> { + log.error("",e); + MDC.clear(); + return null; + }); + } + + public static CompletableFuture runSyncObject(CompletableFutureMine completableFutureMine) { + Map previous = MDC.getCopyOfContextMap(); + return CompletableFuture.runAsync(() -> { + if (previous == null) { + MDC.clear(); + } else { + MDC.setContextMap(previous); + } + if (MDC.get(TRACE_ID) == null || MDC.get(TRACE_ID).isEmpty()) { + MDC.put(TRACE_ID, System.nanoTime() + ""); + } + run(completableFutureMine, previous); + MDC.clear(); + }).exceptionally(e -> { + log.error("",e); + MDC.clear(); + return null; + }); + } + + public static void run(CompletableFutureMine completableFutureMine) { + Map previous = MDC.getCopyOfContextMap(); + CompletableFuture.runAsync(() -> run(completableFutureMine, previous)).exceptionally(e -> { + log.error("",e); + MDC.clear(); + return null; + }).join(); + } + + public static void runSyncEach(CompletableFutureResult result, Long time) { + Map previous = MDC.getCopyOfContextMap(); + CompletableFuture.runAsync(() -> { + Boolean goOn = true; + while (Boolean.TRUE.equals(goOn)) { + try { + TimeUnit.SECONDS.sleep(time); + } catch (InterruptedException e) { + log.error("",e); + Thread.currentThread().interrupt(); + } + goOn = runResult(result, previous); + } + }).exceptionally(e -> { + log.error("",e); + MDC.clear(); + return null; + }); + } + + public static void runSyncEach(CompletableFutureResult result, Executor ex, Long time) { + Map previous = MDC.getCopyOfContextMap(); + CompletableFuture.runAsync(() -> { + Boolean goOn = true; + while (goOn) { + try { + TimeUnit.SECONDS.sleep(time); + } catch (InterruptedException e) { + log.error("",e); + Thread.currentThread().interrupt(); + } + goOn = runResult(result, previous); + } + }, ex).exceptionally(e -> { + log.error("",e); + MDC.clear(); + return null; + }); + } + + public static void runSync(CompletableFutureMine completableFutureMine, Executor ex) { + Map previous = MDC.getCopyOfContextMap(); + CompletableFuture.runAsync(() -> run(completableFutureMine, previous), ex).exceptionally(e -> { + log.error("", e); + MDC.clear(); + return null; + }); + } + + public static void runSyncAssert(Boolean assets, CompletableFutureMine completableFutureMine) { + if(Boolean.TRUE.equals(assets)) { + CompletableFuture.runAsync(completableFutureMine::run).exceptionally(e -> { + log.error("",e); + return null; + }); + } + } + + public static CompletableFuture createRunner(CompletableFutureType completableFutureType) { + Map previous = MDC.getCopyOfContextMap(); + return CompletableFuture.supplyAsync(() -> { + if (previous == null) { + MDC.clear(); + } else { + MDC.setContextMap(previous); + } + if (MDC.get(TRACE_ID) == null || MDC.get(TRACE_ID).isEmpty()) { + MDC.put(TRACE_ID, System.nanoTime() + ""); + } + T t = completableFutureType.run(); + MDC.clear(); + return t; + }); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/common/response/RS.java b/src/main/java/com/biutag/supervisiondata/common/response/RS.java new file mode 100644 index 0000000..3a2136b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/response/RS.java @@ -0,0 +1,131 @@ +package com.biutag.supervisiondata.common.response; + +import com.biutag.supervisiondata.pojo.constants.ThreadConstants; +import com.biutag.supervisiondata.util.RandomUtil; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Optional; + +/** + * 统一返回 + * @author kami on 2023-03-02 17:52:16 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@Accessors(chain = true) +@Slf4j +public class RS implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 状态码 + * @mock 200 + */ + + private Integer code; + + /** + * 响应信息 + * @mock 请求成功 + */ + private String msg; + /** + * 请求id + * @mock 7792667269210689 + */ + private String id; + /** + * 响应时间 + * @mock 1698039324139 + */ + private Long time; + + /** + * 数据 + */ + private T data; + + /** + * 构建基础 带id、时间戳 + * @return RS + */ + private static RS basic() { + return new RS().setId(Optional.ofNullable(MDC.get(ThreadConstants.TRACE_ID)).orElse(RandomUtil.generateUpperString(8))).setTime(System.currentTimeMillis()); + } + + /** + * 加入状态码 + * @param code 状态码 + * @return RS + */ + private static RS coder(StatusCode code){ + RS rs = basic(); + return rs.setCode(code.getCode()); + } + + /** + * 成功响应 + * @return RS + */ + public static RS success() { + RS rs = coder(StatusCode.SUCCESS); + return rs.setMsg("成功"); + } + + /** + * 成功响应 + * @return RS + */ + public static RS success(T data) { + RS rs = success(); + return rs.setData(data); + } + + /** + * 失败响应 + * @return RS + */ + public static RS error() { + return error("逻辑异常"); + } + + /** + * 失败响应 + * @param msg 响应消息 + * @return RS + */ + public static RS error(String msg) { + RS rs = coder(StatusCode.BUSINESS); + return rs.setMsg(msg); + } + + /** + * 响应 + * @param code 状态码 + * @param msg 响应消息 + * @return RS + */ + public static RS build(StatusCode code,String msg) { + RS rs = coder(code); + return rs.setMsg(msg); + } + + /** + * 响应 + * @param code 状态码 + * @param msg 响应消息 + * @return RS + */ + public static RS build(StatusCode code,String msg,T data) { + RS rs = coder(code); + return rs.setMsg(msg).setData(data); + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/common/response/StatusCode.java b/src/main/java/com/biutag/supervisiondata/common/response/StatusCode.java new file mode 100644 index 0000000..ef16b39 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/response/StatusCode.java @@ -0,0 +1,38 @@ +package com.biutag.supervisiondata.common.response; + +import lombok.Getter; + +/** + * 状态码 + */ +@Getter +public enum StatusCode { + SUCCESS(200),// OK 一切正常,对GET和POST请求的应答文档跟在后面。 + SUCCESS_INSERT(201), //新增或同本书籍已存在 + YOU_FAIL(100),//参数错误 + FAIL(0), + UN_AUTH(101), + RE_AUTH(333), // 需要二次权限校验 + DISABLE(402),// 没有权限 + NOT_AUTH(403),// 服务器无法正常提供信息,或是服务器无法回应 + METHOD_NOT_ALLOWED(405), + UNSUPPORTED_MEDIA_TYPE(415), //媒体类型 + SERVICE_UNAVAILABLE(503), + BAD_REQUEST(400),// Bad Request 请求出现语法错误。 + NOT_FOUND(404),// 服务器无法正常提供信息,或是服务器无法回应 + ERROR(500), //服务器遇到了意料不到的情况,不能完成客户的请求。 + BUSINESS(5000), //业务错误 + DIFF(600), //不一致异常。 + REDIRECT_PAGE(602), // 重定向页面 + DIFF_RESULT(601), // 队列 + SERVICE_FAIL(1000), // 服务器熔断。 + + UPLOADED(1), + UPLOADING(2); + + private final Integer code; + + StatusCode(Integer code) { + this.code = code; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/common/thread/GenericPool.java b/src/main/java/com/biutag/supervisiondata/common/thread/GenericPool.java new file mode 100644 index 0000000..e14e6cb --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/thread/GenericPool.java @@ -0,0 +1,46 @@ +package com.biutag.supervisiondata.common.thread; + +import java.util.List; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +/** + * @author kami on 2023-10-19 10:05:00 + * @version 0.0.1 + * @since 1.8 + */ +public class GenericPool { + + private final BlockingQueue pool = new LinkedBlockingQueue<>(); + + /** + * 添加对象 + * @param object 对象 + */ + public void add(T object) { + pool.add(object); + } + + /** + * 初始化 + * @param objects 对象集合 + */ + public void init(List objects) { + pool.clear(); + pool.addAll(objects); + } + + /** + * 获取 + * @return T + */ + public T get() { + try { + T key = pool.take(); + add(key); + return key; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/biutag/supervisiondata/common/thread/ThreadPoolConfig.java b/src/main/java/com/biutag/supervisiondata/common/thread/ThreadPoolConfig.java new file mode 100644 index 0000000..5b7b983 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/common/thread/ThreadPoolConfig.java @@ -0,0 +1,40 @@ +package com.biutag.supervisiondata.common.thread; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author kami + * @version 1.0 + * @since 2022/8/10 16:21 + */ +@Configuration +public class ThreadPoolConfig { + /** + * 自定义消费队列线程池 + * CallerRunsPolicy 这个策略重试添加当前的任务,他会自动重复调用 execute() 方法,直到成功。 + * AbortPolicy 对拒绝任务抛弃处理,并且抛出异常。 + * DiscardPolicy 对拒绝任务直接无声抛弃,没有异常信息。 + * DiscardOldestPolicy 对拒绝任务不抛弃,而是抛弃队列里面等待最久的一个线程,然后把拒绝任务加到队列。 + * @return 线程池对象 + */ + @Bean(value = "completeThread") + public ThreadPoolTaskExecutor completeThread() { + ThreadPoolTaskExecutor threadPool = new ThreadPoolTaskExecutor(); + threadPool.setCorePoolSize(4); + threadPool.setMaxPoolSize(32); + // 最大线程数 + // 队列大小 + int queueSize = 100; + threadPool.setQueueCapacity(queueSize); + threadPool.setThreadNamePrefix("han-thread-"); + // 线程最大空闲时间 + int keepAliveSeconds = 100; + threadPool.setKeepAliveSeconds(keepAliveSeconds); + threadPool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return threadPool; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/config/cache/RedisConfig.java b/src/main/java/com/biutag/supervisiondata/config/cache/RedisConfig.java new file mode 100644 index 0000000..556fb89 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/config/cache/RedisConfig.java @@ -0,0 +1,89 @@ +package com.biutag.supervisiondata.config.cache; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.RedisStandaloneConfiguration; +import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import java.time.Duration; + +/** + * redis配置 + * + * @author kami + * @since 2020-12-24 + */ +@Configuration +public class RedisConfig { + + @Bean(name = "redisTemplate") + public RedisTemplate redisTemplate(@Value("${spring.data.redis.host}") String host, + @Value("${spring.data.redis.port}") Integer port, + @Value("${spring.data.redis.database}") Integer database, + @Value("${spring.data.redis.password}") String password, + @Value("${spring.data.redis.lettuce.pool.max-active}") int maxActive, + @Value("${spring.data.redis.lettuce.pool.max-wait}") int maxWait, + @Value("${spring.data.redis.lettuce.pool.max-idle}") int maxIdle, + @Value("${spring.data.redis.lettuce.pool.min-idle}") int minIdle) { + LettuceConnectionFactory connectionFactory = this.lettuceConnectionFactory(password,host,port,database, + maxActive, maxWait, maxIdle, minIdle); + return this.createRedisTemplate(connectionFactory); + } + + private RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + ObjectMapper om = new ObjectMapper(); + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(om, Object.class); + // 设置序列化Key的实例化对象 + template.setKeySerializer(new StringRedisSerializer()); + // 设置序列化Value的实例化对象 + template.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + template.setHashKeySerializer(jackson2JsonRedisSerializer); + template.setHashValueSerializer(jackson2JsonRedisSerializer); + template.setConnectionFactory(redisConnectionFactory); + return template; + } + + /** + * lettuce 连接池工厂 + * + * @param password 密码 + * @param maxActive 连接池最大连接数(使用负值表示没有限制) 默认 8 + * @param maxWait 连接池最大阻塞等待时间(使用负值表示没有限制),当连接池资源耗尽时,调用者最大阻塞的时间,超时将跑出异常。单位,毫秒数;默认为-1.表示永不超时. + * @param maxIdle 连接池中的最大空闲的连接数,默认为8 + * @param minIdle 连接池中的最少空闲的连接数,默认为0 + */ + private LettuceConnectionFactory lettuceConnectionFactory(String password,String host,int port,int database, int maxActive, Integer maxWait, int maxIdle, int minIdle) { + RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(host,port); + redisStandaloneConfiguration.setPassword(password); + redisStandaloneConfiguration.setDatabase(database); + //线程池设置 + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); + poolConfig.setMaxIdle(maxIdle); + poolConfig.setMaxTotal(maxActive); + poolConfig.setMinIdle(minIdle); + poolConfig.setMaxWait(Duration.ofSeconds(maxWait)); + LettuceClientConfiguration clientConfiguration = + LettucePoolingClientConfiguration.builder().poolConfig(poolConfig).build(); + LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration, clientConfiguration); + lettuceConnectionFactory.setShareNativeConnection(true); + lettuceConnectionFactory.afterPropertiesSet(); + return lettuceConnectionFactory; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/config/cache/RedisDao.java b/src/main/java/com/biutag/supervisiondata/config/cache/RedisDao.java new file mode 100644 index 0000000..c83d211 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/config/cache/RedisDao.java @@ -0,0 +1,505 @@ +package com.biutag.supervisiondata.config.cache; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.*; +import org.springframework.data.redis.support.atomic.RedisAtomicLong; + +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * @author kami + * @since 14:41 2020/11/24 + */ +@Data +@Slf4j +public class RedisDao { + + private static final RedisDao REDIS_DAO = new RedisDao(); + + private RedisTemplate redis; + + private RedisDao() { + } + + public void init(RedisTemplate redisTemplate) { + redis = redisTemplate; + } + + public static RedisDao getInstance() { + return REDIS_DAO; + } + + /** + * 批量插入key,会替换已经存在key的value,三种方式批量插入:mset pinpile管道 lua表达式 + * + * @param map key:对应的reids的key, value:对应每个key的value + * 示例:MSET key1 "Hello" key2 "World + */ + public void mset(Map map) { + redis.opsForValue().multiSet(map); + } + + public Boolean persist(String key) { + return redis.persist(key); + } + + public void pipeLineExec(RedisInterface redisInterface) { + redis.executePipelined((RedisCallback) connection -> { + connection.openPipeline(); + redisInterface.run(connection, redis.getKeySerializer(), redis.getValueSerializer()); + connection.close(); + return null; + }); + } + + /** + * 获取整个list + */ + public List list(String key) { + return redis.boundListOps(key).range(0, -1); + } + + /** + * 获取list大小 + */ + public long listSize(String key) { + return redis.boundListOps(key).size(); + } + + /** + * 获取list指定下表对象 + */ + public Object listIndex(String key, long index) { + return redis.boundListOps(key).index(index); + } + + + /** + * 从right存入list的一个值 + */ + public void rightPush(String key, Object value) { + redis.boundListOps(key).rightPush(value); + } + + public List pipelinGet(String... keys) { + return redis.executePipelined((RedisCallback) connection -> { + connection.openPipeline(); + for (int i = 0, arrLen = keys.length; i < arrLen; i++) { + connection.get(redis.getKeySerializer().serialize(keys[i])); + } + return null; + }, redis.getValueSerializer()); + } + + public List pipelinGet(List keys) { + return redis.executePipelined((RedisCallback) connection -> { + connection.openPipeline(); + for (int i = 0, arrLen = keys.size(); i < arrLen; i++) { + connection.get(redis.getKeySerializer().serialize(keys.get(i))); + } + return null; + }, redis.getValueSerializer()); + } + + public Boolean getBit(String key, int offset) { + return redis.opsForValue().getBit(key, offset); + } + + public Boolean setBit(String key, int offset, Boolean b) { + return redis.opsForValue().setBit(key, offset, b); + } + + /** + * 从right存入list + */ + public void rightPushAll(String key, Object value) { + redis.boundListOps(key).rightPushAll(value); + } + + /** + * 弹出list左边的一个对象 + */ + public Object leftPop(String key, long timeout) { + return redis.opsForList().leftPop(key, timeout, TimeUnit.SECONDS); + } + + /** + * 弹出list左边的一个对象 + */ + public Object leftPush(String key, String val) { + return redis.boundListOps(key).leftPush(key, val); + } + + /** + * 弹出list左边的一个对象 + */ + public Object leftPop(String key) { + return redis.boundListOps(key).leftPop(); + } + + public void removeListAll(String key) { + redis.boundListOps(key).trim(1, 0); + } + + + /** + * 批量获取key + */ + public List mget(List keys) { + return redis.opsForValue().multiGet(keys); + } + + /** + * set如果存在则设置(string存储) + */ + public boolean setIfAbsent(String key, Object value) { + boolean success = redis.opsForValue().setIfAbsent(key, value); + if (success) { + redis.expire(key, 3, TimeUnit.DAYS); + } + return success; + } + + /** + * set如果存在则设置(string存储) + */ + public boolean setIfAbsent(String key, String value, long timeout, TimeUnit unit) { + return redis.opsForValue().setIfAbsent(key, value, timeout, unit); + } + + /** + * set如果存在则设置(map存储) + */ + public boolean setIfAbsent(String mapName, String key, String value) { + return redis.boundHashOps(mapName).putIfAbsent(key, value); + } + + /** + * 单个key存储, 注意:批量插入请尽量使用mset方法,否则效率非常低,而且事务不好处理 + */ + public void set(String key, Object value) { + redis.opsForValue().set(key, value, 30, TimeUnit.DAYS); + } + + public void setOver(String key, Object value) { + redis.opsForValue().set(key, value, 0); + } + + /** + * 单个key存储,且设置过期时间 + * + * @param key + * @param value + * @param timeOut 过期时间 单位:s + */ + public void set(String key, Object value, long timeOut) { + redis.opsForValue().set(key, value, timeOut, TimeUnit.SECONDS); + } + + public Object get(String key) { + return redis.opsForValue().get(key); + } + + public Object getAndDelete(String key) { + return redis.opsForValue().getAndDelete(key); + } + + + /** + * @param key + * @return + * @Title: generate + * @Description: Atomically increments by one the current value. + */ + public long generate(String key) { + RedisAtomicLong counter = new RedisAtomicLong(key, redis.getConnectionFactory()); + return counter.incrementAndGet(); + } + + /** + * key重命名 + * + * @param odlKey + * @param newKey + */ + @SuppressWarnings("unchecked") + public void rename(final String odlKey, final String newKey) { + redis.rename(odlKey, newKey); + } + + /** + * 删除缓存 + * 根据key精确匹配删除 + * + * @param keys + */ + public void remove(List keys) { + if (keys == null || keys.isEmpty()) { + return; + } + redis.delete(keys); + } + + public void remove(String key) { + redis.delete(key); + } + + /** + * 批量删除
+ * (该操作会执行模糊查询,请尽量不要使用,以免影响性能或误删) + */ + public void batchDel(String... pattern) { + for (String kp : pattern) { + redis.delete(redis.keys(kp + "*")); + } + } + + /** + * 查询key是否存在 + */ + public boolean exists(final String key) { + return redis.hasKey(key); + } + + /** + * 设置key在某一个时刻(timeout)时效 + */ + public boolean expireAt(String key, Date timeout) { + return redis.expireAt(key, timeout); + } + + /** + * 设置key的时效时间 + */ + public boolean expire(String key, long timeout, TimeUnit unit) { + return redis.expire(key, timeout, unit); + } + + /** + * 获取key的有效时间,单位是seconds + */ + public Long getExpire(String key) { + return redis.getExpire(key); + } + + /** + * 根据正在表达式获取key + */ + public Set keys(String pattern) { + return redis.keys(pattern); + } + + /** + * scan 实现 + */ + public Set scan(String pattern) { + return (Set) redis.execute((RedisCallback>) connection -> { + Set keysTmp = new HashSet<>(); + try (Cursor cursor = connection.scan(ScanOptions.scanOptions().match(pattern).count(10000).build())) { + while (cursor.hasNext()) { + keysTmp.add(new String(cursor.next(), "Utf-8")); + } + } catch (Exception e) { + log.error(e.getMessage()); + throw new RuntimeException(e); + } + return keysTmp; + }); + } + + + /** + * 返回key的数量 + */ + public long dbSize() { + return (long) redis.execute((RedisCallback) connection -> connection.dbSize()); + } + + /** + * 如果后面没有参数时返回PONG,否则会返回后面带的参数。 这个命令经常用来测试一个连接是否还是可用的,或者用来测试一个连接的延时。 + * 如果客户端处于频道订阅模式下,它将是一个multi-bulk返回,第一次时返回"pong",之后返回空(empty bulk),除非命令后面更随了参数。 + */ + public String ping() { + return (String) redis.execute((RedisCallback) connection -> connection.ping()); + } + + + /** + * 储存MAP, + */ + public void saveMapAll(String key, Map objMap) { + redis.boundHashOps(key).putAll(objMap); + } + + /** + * 存储单个map的key + */ + public void saveMapKey(String mapName, String mapKey, Object value) { + redis.boundHashOps(mapName).put(mapKey, value); + } + + /** + * 删除某个map中的key + */ + public Long removeMapKey(String mapName, String mapKey) { + return redis.boundHashOps(mapName).delete(mapKey); + } + + /** + * 获取整个MAP,包括key与value, + */ + public Map hGetAll(String key) { + return redis.boundHashOps(key).entries(); + } + + /** + * 获取MAP的某个key值 + */ + public Object hGet(String key, String mapKey) { + return redis.boundHashOps(key).get(mapKey); + } + + + /** + * 获取MAP的某几个key值, + */ + public Object hMget(final String key, List keys) { + return redis.boundHashOps(key).multiGet(keys); + } + + /** + * map的某个key自增 + */ + public double mapKeyIncry(String mapeName, String mapKey, double loanAmount) { + BoundHashOperations ops = redis.boundHashOps(mapeName); + if (!ops.putIfAbsent(mapKey, loanAmount)) { + return ops.increment(mapKey, loanAmount); + } + return loanAmount; + } + + /** + * map的某个key自增,并设置超时时间 + */ + public double mapKeyIncryAndExpire(String mapeName, String mapKey, double loanAmount, Long timeoutHours) { + BoundHashOperations ops = redis.boundHashOps(mapeName); + if (ops.putIfAbsent(mapKey, loanAmount)) { + redis.expire(mapeName, timeoutHours, TimeUnit.HOURS); + } else { + return ops.increment(mapKey, loanAmount); + } + return loanAmount; + } + + + /** + * key 自增+1 + */ + public Long incry(String key, int timeOut) { + Long result = redis.opsForValue().increment(key, 1L); + this.expire(key, timeOut, TimeUnit.MINUTES); + return result; + } + + /** + * key 自增+1 + */ + public Long incry(String key) { + Long result = redis.opsForValue().increment(key, 1L); + return result; + } + + public void zset(String zSetKey, String member, double score) { + redis.boundZSetOps(zSetKey).add(member, score); + } + + public long zremove(String zSetKey, String member) { + return redis.boundZSetOps(zSetKey).remove(member); + } + + public Set zrange(String zSetKey, long begin, long end) { + return redis.boundZSetOps(zSetKey).rangeWithScores(begin, end); + } + + + public void hSet(String key, String mapKey, String mapValue) { + redis.boundHashOps(key).put(mapKey, mapValue); + } + + public void hSet(String key, String mapKey, Object mapValue) { + redis.boundHashOps(key).put(mapKey, mapValue); + } + + public Long hDele(String key, String mapKey) { + return redis.boundHashOps(key).delete(mapKey); + } + + public Map hScan(String key, int length) { + ScanOptions scanOptions = ScanOptions.scanOptions().count(length).build(); + Cursor> result = redis.boundHashOps(key).scan(scanOptions); + Map elements = new HashMap<>(16); + int count = 0; + while (result.hasNext() && count++ < length) { + Map.Entry entry = result.next(); + elements.put(entry.getKey(), entry.getValue()); + } + try { + result.close(); + } catch (Exception e) { + log.error("redis异常:" , e); + } + + return elements; + } + + + public Double zget(String zSetKey, String member) { + return redis.boundZSetOps(zSetKey).score(member); + } + + /** + * 保存 + */ + public void opsForHashSave(String group, String key, Object o) { + redis.opsForHash().put(group, key, o); + } + + /** + * 是否存在 + */ + public boolean opsForHashExsit(String group, String key) { + return redis.opsForHash().hasKey(group, key); + } + + /** + * 按key删除 + */ + public void opsForHashDel(String group, String key) { + redis.opsForHash().delete(group, key); + } + + /** + * 删除所有 + */ + public void opsForHashDelAll(String group) { + redis.delete(group); + } + + /** + * 获取所有 + */ + public List opsForHashGet(String group) { + return redis.opsForHash().values(group); + } + + public Object opsForHashGetByGroupAndKey(String group, String key) { + return redis.opsForHash().get(group, key); + } + + public Map opsForHashGetMap(String group) { + return redis.opsForHash().entries(group); + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/config/cache/RedisInterface.java b/src/main/java/com/biutag/supervisiondata/config/cache/RedisInterface.java new file mode 100644 index 0000000..d97640a --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/config/cache/RedisInterface.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.config.cache; + +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.serializer.RedisSerializer; + +/** + * @author kami + * @version 1.0 + * @since 2022/1/9 17:30 + */ +@FunctionalInterface +public interface RedisInterface { + + void run(RedisConnection connection, RedisSerializer key, RedisSerializer value); +} diff --git a/src/main/java/com/biutag/supervisiondata/config/db/Ads.java b/src/main/java/com/biutag/supervisiondata/config/db/Ads.java new file mode 100644 index 0000000..d1d92d3 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/config/db/Ads.java @@ -0,0 +1,67 @@ +package com.biutag.supervisiondata.config.db; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.config.GlobalConfig; +import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import com.zaxxer.hikari.HikariDataSource; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.sql.DataSource; + +/** + * @author kami on 2024-11-09 10:29:41 + * @version 0.0.1 + * @since 1.8 + */ +@Configuration +@MapperScan(basePackages = {"com.biutag.supervisiondata.mapper.ads"}, + sqlSessionFactoryRef = "adsSqlSessionFactory") +public class Ads { + + @Bean(name = "adsBean") + @ConfigurationProperties(prefix = "spring.datasource.ads") + public DataSource adsDataSource() { + return DataSourceBuilder.create().type(HikariDataSource.class).build(); + } + + @Bean(name = "adsTransactionManager") + public DataSourceTransactionManager adsTransactionManager() { + return new DataSourceTransactionManager(adsDataSource()); + } + + @Bean(name = "adsSqlSessionFactory") + public SqlSessionFactory adsSqlSessionFactory(@Qualifier("adsBean") DataSource mysqlDataSource, + @Qualifier("adsInterceptor") MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception { + final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); + sessionFactory.setPlugins(mybatisPlusInterceptor); + sessionFactory.setDataSource(mysqlDataSource); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/ads/*Mapper.xml")); + GlobalConfig globalConfig = GlobalConfigUtils.defaults(); + sessionFactory.setGlobalConfig(globalConfig); + return sessionFactory.getObject(); + } + + /** + * mp分页配置 + * @return MybatisPlusInterceptor + */ + @Bean(name = "adsInterceptor") + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.GBASE)); + return interceptor; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/config/db/Dwd.java b/src/main/java/com/biutag/supervisiondata/config/db/Dwd.java new file mode 100644 index 0000000..cc4fb59 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/config/db/Dwd.java @@ -0,0 +1,67 @@ +package com.biutag.supervisiondata.config.db; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.config.GlobalConfig; +import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import com.zaxxer.hikari.HikariDataSource; +import org.apache.ibatis.session.SqlSessionFactory; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.sql.DataSource; + +/** + * @author kami on 2024-11-09 10:29:41 + * @version 0.0.1 + * @since 1.8 + */ +@Configuration +@MapperScan(basePackages = {"com.biutag.supervisiondata.mapper.dwd"}, + sqlSessionFactoryRef = "dwdSqlSessionFactory") +public class Dwd { + + @Bean(name = "dwdBean") + @ConfigurationProperties(prefix = "spring.datasource.dwd") + public DataSource dwdDataSource() { + return DataSourceBuilder.create().type(HikariDataSource.class).build(); + } + + @Bean(name = "dwdTransactionManager") + public DataSourceTransactionManager dwdTransactionManager() { + return new DataSourceTransactionManager(dwdDataSource()); + } + + @Bean(name = "dwdSqlSessionFactory") + public SqlSessionFactory dwdSqlSessionFactory(@Qualifier("dwdBean") DataSource mysqlDataSource, + @Qualifier("dwdInterceptor") MybatisPlusInterceptor mybatisPlusInterceptor) throws Exception { + final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); + sessionFactory.setPlugins(mybatisPlusInterceptor); + sessionFactory.setDataSource(mysqlDataSource); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/dwd/*Mapper.xml")); + GlobalConfig globalConfig = GlobalConfigUtils.defaults(); + sessionFactory.setGlobalConfig(globalConfig); + return sessionFactory.getObject(); + } + + /** + * mp分页配置 + * @return MybatisPlusInterceptor + */ + @Bean(name = "dwdInterceptor") + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.GBASE)); + return interceptor; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/config/db/Mine.java b/src/main/java/com/biutag/supervisiondata/config/db/Mine.java new file mode 100644 index 0000000..ee55227 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/config/db/Mine.java @@ -0,0 +1,82 @@ +package com.biutag.supervisiondata.config.db; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.MybatisConfiguration; +import com.baomidou.mybatisplus.core.config.GlobalConfig; +import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; +import com.zaxxer.hikari.HikariDataSource; +import org.apache.ibatis.session.SqlSessionFactory; +import org.apache.ibatis.type.JdbcType; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; + +import javax.sql.DataSource; + +/** + * @author kami + * @since 10:22 2020/4/5 + */ + +@Configuration +@MapperScan(basePackages = {"com.biutag.supervisiondata.mapper.mine"}, + sqlSessionFactoryRef = "sqlSessionFactory") +public class Mine { + + @Primary + @Bean(name = "chaosBean") + @ConfigurationProperties(prefix = "spring.datasource.mine") + public DataSource mysqlDataSource() { + return DataSourceBuilder.create() + .type(HikariDataSource.class).build(); + } + + @Primary + @Bean(name = "transactionManager") + public DataSourceTransactionManager transactionManager() { + return new DataSourceTransactionManager(mysqlDataSource()); + } + + @Primary + @Bean(name = "sqlSessionFactory") + public SqlSessionFactory mysqlSqlSessionFactory(@Qualifier("chaosBean") DataSource mysqlDataSource) throws Exception { + final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean(); + MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); + mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor()); + sessionFactory.setPlugins(mybatisPlusInterceptor); + sessionFactory.setDataSource(mysqlDataSource); + PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); + sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/mine/*Mapper.xml")); + GlobalConfig globalConfig = GlobalConfigUtils + .defaults(); + sessionFactory.setGlobalConfig(globalConfig); + MybatisConfiguration configuration = new MybatisConfiguration(); + configuration.setJdbcTypeForNull(JdbcType.NULL); + configuration.setMapUnderscoreToCamelCase(true); + configuration.setDatabaseId(DbType.MYSQL.getDb()); + sessionFactory.setConfiguration(configuration); + return sessionFactory.getObject(); + } + + /** + * mp分页配置 + * @return MybatisPlusInterceptor + */ + @Bean(name = "interceptor") + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java new file mode 100644 index 0000000..7977492 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/event/ApplicationEvent.java @@ -0,0 +1,137 @@ +package com.biutag.supervisiondata.event; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; +import com.biutag.supervisiondata.config.cache.RedisDao; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTest; +import com.biutag.supervisiondata.repository.*; +import com.biutag.supervisiondata.service.*; +import jakarta.annotation.PreDestroy; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + + +/** + * @author kami on 2024-01-15 14:34:27 + * @version 0.0.1 + * @since 1.8 + */ +@Component +@Slf4j +public class ApplicationEvent { + + @Resource + RedisTemplate redisTemplate; + + @Resource + private GBaseJJDService gBaseJJDService; + + @Resource + private GBaseSHRWFRService gBaseSHRWFRService; + + @Resource + private RiskTaskService riskTaskService; + + @Resource + private RiskModelTaskClueRepository riskModelTaskClueRepository; + + @Resource + private RiskPersonalRepository riskPersonalRepository; + + @Resource + private RiskPersonalService riskPersonalService; + + @Resource + private GBaseBAService gBaseBAService; + + @Resource + private PoliceService policeService; + + @Resource + private HabitService habitService; + + @Resource + private MarriageService marriageService; + + @Resource + private RiskPersonalTagRepository riskPersonalTagRepository; + + @Resource + private RiskTestRepository riskTestRepository; + + @Resource + private PetitionService petitionService; + + @Resource + private PointService pointService; + + @Resource + private NoControlService noControlService; + + @Resource + private RiskScoreRuleService riskScoreRuleService; + + @Resource + private RiskModelTaskClueRepository taskClueRepository; + + + @EventListener(ApplicationReadyEvent.class) + public void serviceReady() { + RedisDao.getInstance().init(redisTemplate); + + LocalDateTime start = LocalDateTime.of(2024, 1, 1, 0, 0, 0); + LocalDateTime end = LocalDateTime.now(); + CompletableFutureUtil.runSync(() -> { +// gBaseJJDService.pullAndSave(start, end); +// gBaseSHRWFRService.pullAndSave(start, end); +// petitionService.personPullAndSave(start, end); +// pointService.personPullAndSave(start, end); +// riskPersonalService.fixed(); + + List persons = riskPersonalRepository.list(); + List clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper() + .eq(RiskModelTaskClue::getDel, 0)); + Map> map = clues.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getModelId)); + TaskParamDomain domain = new TaskParamDomain(persons, map); +// riskTaskService.eduModelTask(domain); +// riskTaskService.infoModelTask(domain); +// riskTaskService.caseModelTask(domain); +// gBaseBAService.baModelTask(domain); +// 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); +// pointService.syncControlNoPower(domain); +// riskScoreRuleService.runScore(); + pointService.syncPointCall(domain); + }); + } + + @PreDestroy + public void shutdown() { + // 系统关闭 + } +} diff --git a/src/main/java/com/biutag/supervisiondata/lock/LocalLock.java b/src/main/java/com/biutag/supervisiondata/lock/LocalLock.java new file mode 100644 index 0000000..7e956d0 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/lock/LocalLock.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.lock; + +import lombok.experimental.UtilityClass; + +/** + * 本地锁 + * @author kami on 2024-11-19 15:36:23 + * @version 0.0.1 + * @since 1.8 + */ +@UtilityClass +public class LocalLock { + + public static boolean scoreLock = false; +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java new file mode 100644 index 0000000..95f48c1 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/ads/GBaseSYRKXXMapper.java @@ -0,0 +1,57 @@ +package com.biutag.supervisiondata.mapper.ads; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.domain.FightMan; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author kami on 2024-11-08 20:02:45 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseSYRKXXMapper extends BaseMapper { + /** + * 根据身份证号码查询 + * @param idCode 身份证号码 + * @return 对应数据 + */ + @Select("select gmsfhm, xm, xbdm, csrq, lxdh from ads_ssxx_syrkxx where gmsfhm = #{idCode}") + List selectByIdCode(@Param("idCode")String idCode); + + /** + * 根据联系电话查询 + * @param mobileNumber 联系电话 + * @return 对应数据 + */ + @Select("select gmsfhm, xm, xbdm, csrq, lxdh from ads_ssxx_syrkxx where lxdh = #{mobileNumber}") + List selectByMobileNumber(@Param("mobileNumber")String mobileNumber); + + /** + * 查看高风险 + * @param time 开始时间 + * @return 信息 + */ + @Select(" select DISTINCT a.gmsfhm,a.xm,a.lxdh from csga_dwd.dwd_qt_jzpt_mdjfdsrxx a " + + " inner join csga_dwd.dwd_wp_zfba_xzjljstzs b on a.gmsfhm = b.zjhm " + + " where a.djsj >= #{time}") + List selectHeightFight(@Param("time")String time); + + /** + * 查人纠纷的次数 + * @return 列表 + */ + @Select("") + List selectListByIdCode(@Param("list")List list); + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseAJJBXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseAJJBXXMapper.java new file mode 100644 index 0000000..982852b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseAJJBXXMapper.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.GBaseAJJBXX; + +/** + * @author kami on 2024-11-10 15:14:34 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseAJJBXXMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAXXMapper.java new file mode 100644 index 0000000..4b78302 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAXXMapper.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.GBaseBAXX; + +/** + * @author kami on 2024-11-12 18:04:49 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseBAXXMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAYJMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAYJMapper.java new file mode 100644 index 0000000..7aa0d72 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseBAYJMapper.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.GBaseBAYJ; + +/** + * @author kami on 2024-11-12 18:03:57 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseBAYJMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseHYMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseHYMapper.java new file mode 100644 index 0000000..56f2d4d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseHYMapper.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.GBaseHY; + +/** + * @author kami on 2024-11-13 15:17:29 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseHYMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java new file mode 100644 index 0000000..0730a55 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseJJDMapper.java @@ -0,0 +1,27 @@ +package com.biutag.supervisiondata.mapper.dwd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +public interface GBaseJJDMapper extends BaseMapper { + + /** + * 查询接警单数据(为了转化成风险人员) + * @param startTime 查询开始时间(处警时间) + * @param endTime 查询结束时间(处警时间) + * @return 列表 + */ + @Select(" select jjdbh, gxdwdm, gxdwmc,bjrxm, bjrxb, bjrlxdh,bjrzjhm, jqxzmc, bjnr, cjqk, bjsj from dwd_asj_zhtx_jjd " + + " where jqxzmc in ('刑事类警情','危害国家安全','危害国家、颠覆政权犯罪','背叛国家','分裂国家','煽动分裂国家','武装叛乱、暴乱','颠覆国家政权','煽动颠覆国家政权','资助危害国家安全活动','其他危害国家、颠覆政权犯罪','叛变、叛逃犯罪','投敌叛变','叛逃','其他叛变、叛逃犯罪','间谍、资敌犯罪','间谍','为境外窃取、刺探、收买、非法提供国家秘密、情报','资敌','其他间谍、资敌犯罪','法轮功、全能神等邪教活动','境外非政府组织非法活动','其他危害国家安全活动','危害公共安全','放火','爆炸','投放危险物质','决水','以危险方法危害公共安全','组织、参加、帮助、煽动恐怖活动','劫持','劫持人质','劫持航空器','劫持船只','劫持火车','劫持汽车','其他劫持','破坏公共设备设施','破坏交通工具','破坏交通设施','破坏电力设备','破坏供水设备','破坏易燃易爆设备','破坏广播电视设施','破坏公用电信设施','破坏其他公共设备设施','危险驾驶','醉酒驾驶','追逐竞驶(飙车)','校车、客运车辆严重超员、超速行驶','违法运输危化品','其他危险驾驶情形','妨害安全驾驶','暴力危及飞行安全','违反安全管理规定危害公共安全','重大飞行事故','铁路运营安全事故','重大劳动安全事故','大型活动重大安全事故','危险物品肇事重大事故','工程重大安全事故','教育设施重大安全事故','消防责任重大事故','其他重大责任、安全事故','涉枪支、弹药犯罪','非法制造、买卖、运输、邮寄、储存枪支、弹药','非法持有、私藏枪支、弹药','违规制造、销售枪支、弹药','非法携带枪支、弹药危及公共安全','非法出租、出借枪支','抢劫、盗窃、抢夺枪支、弹药','丢失枪支不报','其他涉枪支弹药犯罪','非法制造、买卖、运输、邮寄、储存、抢劫、盗窃、抢夺爆炸物','非法制造爆炸物','非法买卖爆炸物','非法运输爆炸物','非法邮寄爆炸物','非法存储爆炸物','非法盗窃爆炸物','非法抢劫、抢夺爆炸物','其他涉爆炸物犯罪','非法制造、买卖、运输、储存、携带危险物质','非法制造危险物质','非法买卖危险物质','非法运输危险物质','非法储存危险物质','非法携带危险物品危及公共安全','其他涉危险物质犯罪','非法携带管制刀具危害公共安全','其他危害公共安全','侵犯公民人身权利、民主权利','故意杀人','过失致人重伤、死亡','过失致人重伤','过失致人死亡','故意伤害','组织出卖人体器官','强奸','奸淫幼女','强奸14至18周岁未成年人','强奸妇女','猥亵','猥亵儿童','强制猥亵他人、侮辱妇女','绑架','非法拘禁','拐卖、收买、阻碍解救妇女儿童','拐卖妇女、儿童','收买被拐卖的妇女、儿童','聚众阻碍解救被收买的妇女、儿童','暴力阻碍解救被收买的妇女、儿童','其他拐卖、收买、阻碍解救妇女儿童','非法搜查、非法侵入住宅','非法搜查他人身体','非法搜查他人住宅','非法侵入住宅','其他非法搜查、非法侵入住宅','诬告陷害','侮辱、诽谤','强迫劳动','刑讯逼供、暴力取证','虐待被监管人员','侵犯民主权利','侵犯公民个人信息权益','侵犯通信自由','私拆、隐匿、毁弃邮件、电报','打击报复会计、统计人员','国家机关人员报复陷害','破坏选举','其他侵犯公民民主权利','破坏民族团结、宗教信仰自由','煽动民族仇恨、民族歧视','出版歧视、侮辱少数民族作品','非法剥夺公民宗教信仰自由','侵犯少数民族风俗习惯','其他破坏民族团结、宗教信仰自由犯罪','侵犯婚姻家庭权利','暴力干涉婚姻自由','重婚','破坏军婚','虐待','遗弃','其他侵犯婚姻家庭权利犯罪','拐骗儿童','组织残疾人、儿童从事乞讨、违法活动','雇佣童工从事危重劳动','其他侵犯人身、民主权利','侵犯财产权利','抢劫','入户抢劫','抢劫银行、金融机构、运钞车或提(送)款人、取款人','抢劫营业场所','抢劫金银珠宝店','抢劫工地','拦路抢劫行人','公共交通工具上抢劫','抢劫私人交通工具','抢劫出租车','抢劫军用或抢险、救灾、救济物资','其他抢劫','抢夺','入室入店抢夺','公交地铁抢夺','其他抢夺','盗窃','入户盗窃','盗窃商铺','盗窃金银珠宝店','盗窃金融机构','入室盗窃(非入户)','撬盗保险柜','盗窃文物','盗窃机动车','盗窃非机动车','盗窃机动车、非机动车配件','盗窃车内财物','盗窃车辆燃油','盗窃生产生活物资、公共设施','盗窃、盗刷银行卡','盗窃宠物','盗窃手机等电子产品','盗窃快递物品','盗窃QQ币、比特币等虚拟财产','盗窃电信号码、支付宝、微信等账号内的财产','盗窃QQ号、微信号、游戏账号等虚拟身份','扒窃','随窃','其他刑事类盗窃','接触性诈骗','调包诈骗','设赌诈骗','设摊诈骗','合作投资、项目工程诈骗','冒充港澳台及外籍人员诈骗','帮办事务诈骗','借赊物品诈骗','买卖交易诈骗','投资理财诈骗','租车诈骗','冒充身份诈骗','碰瓷诈骗','货币兑换诈骗','假币假券','婚恋交友诈骗','提额还款诈骗','社保、医保诈骗','迷信诈骗','招工诈骗','拾物平分诈骗','酒托等购物消费类诈骗','收藏拍卖诈骗','保健品销售诈骗','黑中介诈骗','冒充水电气暖等工作人员诈骗','其他接触性诈骗','电信网络诈骗','贷款、代办信用卡','刷单返利','冒充电商物流客服','虚假购物、服务','虚假投资理财、博彩','冒充公检法及政府机关','冒充领导、熟人等特定身份','网络游戏产品、虚假交易','虚假网络婚恋、交友(非杀猪盘)','冒充军警购物类','虚假征信','虚假公益','其他电信网络诈骗','敲诈勒索','裸聊敲诈','恶意索赔敲诈','负面舆论敲诈','其他敲诈勒索','故意毁坏财物','聚众哄抢','侵占、职务侵占','挪用资金、特定款物','破坏生产经营','拒不支付劳动报酬','其他侵犯财产','妨害社会管理秩序','扰乱公共秩序','聚众斗殴','寻衅滋事','煽动暴力抗拒法律实施','招摇撞骗','伪造、变造、买卖、盗用身份证件、公文、印章','盗窃、抢夺、毁灭国家机关公文证件、印章','非法生产、买卖警用装备','非法生产、销售、使用窃听窃照器材','非法侵入、破坏、控制计算机系统,非法获取计算机系统数据','扰乱国家机关工作秩序','聚众扰乱公共秩序、冲击国家机关','非法集会、游行、示威','编造、传播虚假信息、虚假恐怖信息','编造、传播虚假险情、疫情、灾情、警情','侮辱国旗、国徽、国歌','侵害英雄烈士名誉荣誉','组织考试作弊、替考、非法出售试题答案等','使用虚假身份证件、盗用身份证件','冒名顶替','非法获取国家秘密','非法持有国家绝密、机密文件、资料、物品','其他扰乱公共秩序','妨害公务','暴力袭击依法执行职务的警察','其他妨害公务','组织、领导、参加、包庇黑社会性质组织','组织黑社会性质组织','领导黑社会性质组织','参加黑社会性质组织','包庇黑社会性质组织','其他组织、领导、参加、包庇黑社会性质组织','赌博','聚众赌博','网络赌博','跨境赌博','开设赌场','组织、参与国(境)外赌博','其他赌博','妨害司法','虚假诉讼','窝藏包庇','拒不执行判决、裁定','其他妨害司法犯罪','妨害国(边)境管理','组织、运送他人偷越国(边)境','偷越国(边)境','提供伪造、变造、出售出入境证件','骗取出境证件','破坏界碑、界桩','其他妨害国(边)境管理犯罪','妨害文物管理','盗掘古文化遗址、古墓葬','盗掘古人类化石、古脊椎动物化石','故意损毁文物','过失损毁文物','故意损毁名胜古迹','倒卖文物','其他妨害文物管理行为','危害公共卫生、妨害动植物防疫','妨害传染病防治','非法行医','医疗事故','非法组织、强迫卖血','非法采集、供应血液,制作、供应血液制品','传染病菌种、毒种扩散','非法植入基因编辑、克隆胚胎','非法采集人类遗传资源、走私人类遗传资源材料','妨害动植物防疫、检疫','其他妨害公共卫生','破坏环境资源保护','污染环境','破坏自然保护地','非法占用农用地','非法狩猎','非法猎捕、收购、运输、出售陆生野生动物','非法捕捞','危害珍贵、濒危野生动物','非法采砂','非法采矿、破坏性采矿','盗伐、滥伐林木','非法收购、运输盗伐、滥伐的材料','非法引进、释放、丢弃外来入侵物种','危害国家重点保护植物','其他破坏环境资源保护','走私、贩卖、运输、制造毒品及相关涉毒犯罪行为','走私、贩卖、运输、制造毒品','非法持有毒品','包庇毒品犯罪分子,窝藏、转移、隐瞒毒品、毒赃','非法生产、买卖、运输、走私制毒物品','种植毒品原植物','强迫、诱骗他人吸毒','容留他人吸毒','非法提供麻醉药品、精神药品','妨害兴奋剂管理','其他走私、贩卖、运输、制造毒品及相关涉毒犯罪行为','组织、强迫、引诱、容留、介绍卖淫','组织、强迫卖淫','引诱、容留、介绍卖淫','引诱、组织、强迫未成年人卖淫','传播性病','其他组织、强迫、引诱、容留、介绍卖淫','制作贩卖传播淫秽物品、组织淫秽表演、聚众淫乱','其他妨害社会管理秩序','破坏市场经济秩序','生产、销售伪劣商品','生产、销售伪劣产品','生产、销售、提供假药、劣药','妨害药品管理','生产、销售不符合安全标准的食品、产品','生产、销售有毒有害食品','生产、销售不符合标准的医用器材','生产、销售伪劣农药、兽药、化肥、种子','生产、销售不符合卫生标准的化妆品','其他生产、销售伪劣商品','破坏金融管理秩序','非法吸收公众存款','持有、使用假币','出售、购买、运输假币','伪造、变造货币','妨害信用卡管理','窃取、收买、非法提供信用卡信息','洗钱','其他破坏金融管理秩序','金融诈骗','集资诈骗','贷款诈骗','票据、金融凭证、信用证、有价证券诈骗','信用卡诈骗','保险诈骗','其他金融诈骗','侵犯知识产权','假冒注册商标','销售假冒注册商标的商品','非法制造、销售非法制造的注册商标标识','假冒专利','侵犯著作权','销售侵权复制品','侵犯商业秘密','为境外窃取、刺探、收买、非法提供商业秘密','其他侵犯知识产权','扰乱市场秩序','组织、领导传销活动','合同诈骗','非法经营','强迫交易','虚假广告','损害商业信誉、商业声誉','伪造、倒卖有价票证','其他扰乱社会秩序','走私','妨害对公司、企业的管理秩序','危害税收征管','其他破坏市场经济秩序','其他刑事类警情','行政(治安)类警情','扰乱公共秩序','扰乱单位秩序','扰乱医疗机构秩序','扰乱政府机关秩序','扰乱工厂、企事业单位秩序','扰乱教学科研机构秩序','扰乱军事禁区、军事管理区管理秩序','扰乱其他单位秩序','扰乱公共场所秩序','扰乱大型活动秩序','强行进入大型活动场内','违规在大型活动场内燃放物品','在大型活动场内展示侮辱性物品','围攻大型活动工作人员','向大型活动场内投掷杂物','其他扰乱大型活动秩序','扰乱公共交通工具上的秩序','携带危险品乘车','在公共交通工具内滋事打闹','非法拦截、强登公共交通工具','在交通工具强行占座、不听劝阻','其他扰乱公共交通工具上的秩序','妨碍交通工具正常行驶','拦截、强登、扒乘机动车、船舶、航空器及其他交通工具','其他妨碍交通工具正常行驶','虚构事实扰乱公共秩序','谎报、编造、传播虚假的险情、疫情、灾情的警情、信息','编造、故意传播虚假恐怖信息','其他虚构事实扰乱公共秩序','扬言实施放火、爆炸、投放危险物品等极端行为','扬言放火','扬言爆炸','扬言投放危险物品','扬言杀人','扬言伤人','扬言冲撞','其他扬言极端','寻衅滋事','结伙斗殴','追逐、拦截他人','强拿硬要或任意损毁、占用公私财物','其他寻衅滋事行为','危害信息网络安全','非法侵入计算机信息系统、改变计算机系统功能、数据和应用程序','故意制作、传播计算机破坏性程序影响运行','违反计算机信息系统、网络、病毒等管理规定','其他危害信息网络安全','邪教、会道门、迷信活动','组织、教唆、胁迫、诱骗、煽动从事邪教、会道门活动','利用邪教、会道门、迷信活动危害社会','冒用宗教、气功名义危害社会','故意干扰无线电业务正常进行、拒不消除对无线电台(站)的有害干扰','破坏选举秩序','其他扰乱公共秩序','妨害公共安全','涉危险物质违法行为','非法制造、买卖、储存、运输、邮寄、携带、使用、提供、处置危险物质','危险物质被盗、被抢、丢失不报','其他涉危险物质违法行为','涉枪支、弹药、管制器具违法行为','非法携带枪支、弹药及管制器具','非法携带枪支、弹药及管制器具进入公共场所或公共交通工具','违规制造、销(配)售枪支','违规运输枪支','非法出租、出借枪支','不上缴报废枪支','丢失枪支不报','制造、销售仿真枪','其他涉枪支、弹药、管制器具违法行为','盗窃、损毁公共设施','盗窃、损毁油气管道、电力电信设施等公共工程设施','移动、损毁边境、领土、领海标志设施','非法进行影响国(边)界走向的活动或修建有碍国(边)境管理设施','其他盗窃、损毁公共设施','妨害航空安全','盗窃、损坏、擅自移动航空设施','强行进入航空器驾驶舱','在使用中的航空器上使用禁用物品','其他妨害航空安全','妨害铁路安全','盗窃、损毁、擅自移动铁路设施、设备、机动车辆配件、安全标志','在铁路上放置障碍物','故意向列车投掷物品','在铁路沿线非法挖掘坑穴、采石取沙','在铁路线路上私设道口、平交过道','擅自进入铁路防护网、违法在铁路线路上行走坐卧、抢越铁路','其他妨害铁路安全','妨害道路安全','道路施工不设置安全防护设施','故意损毁、移动道路安全防护设施','盗窃、损毁路面公共设施','其他妨害道路安全','妨害水上交通、水利等设施安全','违规安装、使用电网','高空抛物','违规举办大型活动','公共场所经营管理人员违反安全规定','违反易制毒化学品管理','违反民用爆炸物品、爆破业管理规定','违反剧毒、危险物品安全管理规定','制造、销售仿真枪支等违反枪支管理','违反烟花爆竹管理规定','违反消防法相关规定','其他妨害公共安全','侵犯人身权利','殴打他人、故意伤害他人身体','家庭暴力','殴打','谩骂','恐吓','限制人身自由','精神控制','其他家庭暴力行为','非法限制人身自由','非法侵入住宅','非法搜查身体','威胁人身安全','侵犯隐私','偷窥、偷拍、窃听、散布他人隐私','其他侵犯隐私行为','侮辱、诽谤','诬告陷害','威胁、侮辱、殴打、打击报复证人及其近亲属','发送信息干扰正常生活','虐待','遗弃','遗弃儿童','遗弃老人','遗弃其他家庭成员','猥亵','在公共场所故意裸露身体','猥亵妇女','猥亵智力残疾人、精神病人','猥亵不满14周岁的人','其他猥亵','侵犯通信自由','强迫劳动','胁迫、诱骗、利用他人乞讨或以滋扰他人的方式乞讨','组织、胁迫、诱骗进行恐怖残忍表演','强迫交易、强讨硬要','强迫他人提供服务','强迫他人接受服务','强买强卖商品','其他强迫交易','煽动民族仇恨、民族歧视或刊载民族歧视、侮辱内容','冒领、隐匿、毁弃、私自开拆、非法检查他人邮件','其他侵犯人身民主权利','侵犯财产权利','哄抢','抢夺','入室入店抢夺','公交地铁抢夺','其他治安抢夺','敲诈勒索','裸聊敲诈','恶意索赔敲诈','负面舆论敲诈','其他敲诈勒索','故意损毁财物','盗窃','盗窃办公场所','盗窃商户','盗窃工地','盗窃机动车','盗窃非机动车','盗窃机动车、非机动车配件','盗窃车内财物','盗窃车内燃油','盗窃生产物资、公务设施','盗窃、盗刷银行卡','盗窃宠物','盗窃快递物品','盗窃电子产品及配件','盗窃QQ币、比特币等虚拟财产','盗窃电信号码、支付宝和微信等账号内的财产','盗窃QQ号、微信号、游戏账号等虚拟身份','随窃','其他行政治安类盗窃','接触性诈骗','调包诈骗','设摊诈骗','冒充身份诈骗','帮办事务诈骗','借赊物品诈骗','冒充港澳台及外籍人员诈骗','货币兑换诈骗','假币假券','碰瓷诈骗','迷信诈骗','招工诈骗','提额还款诈骗','拾物平分诈骗','酒托等购物消费类诈骗','保健品销售诈骗','黑中介诈骗','冒充水电气暖等工作人员诈骗','上门骗取少量财物','其他街头诈骗','电信网络诈骗','贷款、代办信用卡','刷单返利','冒充电商物流客服','虚假购物、服务','虚假投资理财、博彩','冒充公检法及政府机关','冒充领导、熟人等特定身份','网络游戏产品、虚假交易','虚假网络婚恋、交友(非杀猪盘)','冒充军警购物','虚假征信','其他电信网络诈骗','其他侵犯财产权利','妨害社会管理秩序','阻碍执行公务、紧急任务','拒不执行紧急状态下的决定、命令','阻碍执行职务','阻碍特种车辆通行','冲撞警戒带、警戒区','其他阻碍执行公务、紧急任务','招摇撞骗','非法制售、使用公文、证件、有价票证、船舶户牌等','伪造、变造、买卖公文、证件、证明文件、印章或使用伪造、变造的公文、证件、证明文件','伪造、变造、倒卖有价票证、凭证','伪造、变造船舶户牌或买卖、使用伪造、变造船舶户牌','其他非法制售、使用公文、证件、有价票证、船舶户牌等','驾船擅自进入、停靠国家管制的水域、岛屿','非法以社团名义或以被撤销登记的社团名义活动','未获公安许可擅自经营','煽动、策划非法集会、游行、示威','违反旅馆业管理规定','不按规定登记住宿旅客信息','不制止住宿旅客带入危险物质','明知住宿旅客是犯罪嫌疑人不报','其他违反旅馆业管理规定','违反房屋租赁管理规定','将房屋出租给无身份证件人居住','不按规定登记承租人信息','明知承租人利用出租屋犯罪不报','承租人不配合登记信息','其它违反出租屋管理规定','制造噪声干扰正常生活','违反典当业管理规定','违法承接典当物品','典当发现违法犯罪嫌疑人、赃物不报','其他违反典当业管理规定','违法回收、收购物品','违法收购废旧专用器材','收购赃物、有赃物嫌疑的物品','收购国家禁止收购的其他物品','妨害司法','隐藏、转移、变卖、损毁依法扣押、查封、冻结的财物','伪造、隐匿、毁灭证据','提供虚假证言','谎报案情','窝藏、转移、代销脏物','违反监督管理规定','其他妨害司法','妨害国(边)境管理','偷越国(边)境','协助组织、运送他人偷越国(边)境','为偷越国(边)境人员提供条件','其他妨害国(边)境管理','妨害文物管理','故意损坏文物、名胜古迹','违法实施危及文物安全的','其他妨害文物管理','违法驾驶交通工具','偷开机动车','无证驾驶、偷开航空器、机动船舶','其他违法驾驶交通工具','破坏坟墓、尸骨、违法停放尸体','破坏、污损坟墓或毁坏、丢弃尸骨、骨灰','违法停放尸体','其他破坏坟墓、尸骨、违法停放尸体','卖淫嫖娼淫秽等活动','卖淫、嫖娼','拉客招嫖','引诱、容留、介绍卖淫','制作、运输、复制、出售、出租淫秽物品','传播、组织播放淫秽信息、音像','组织、进行淫秽表演','参与聚众淫乱','为淫秽活动提供条件','为卖淫、嫖娼人员通风报信','其他卖淫嫖娼淫秽活动','提供、从事营利性陪侍活动','涉赌博违法行为','赌博','为赌博提供条件','组织参与国(境)外赌博','为赌博人员通风报信','其他赌博行为','涉毒品违法行为','吸毒','提供、非法持有毒品','教唆、引诱、欺骗吸毒','胁迫、欺骗开具麻醉药品、精神药品','为吸毒人员通风报信','种植买卖毒品原植物','非法买卖、运输、携带、持有毒品原植物种苗','非法运输、买卖、储存、使用罂粟壳','其他有关毒品行为','违反动物饲养管理规定','饲养动物干扰正常生活','放任动物恐吓他人','遛狗未栓绳','其他违反动物饲养管理规定','违反出入境管理规定','非法入境','非法居留','非法就业','容留非法入境、非法居留的外国人','其他违反出入境管理规定','违反娱乐场所管理规定','违反互联网服务营业场所管理规定','违反金融单位场所安全防范管理规定','违反地铁管理规定','违反保安服务保安培训机构管理规定','违反水上作业人员和船舶治安管理规定','违反印刷、印铸、刻字业管理规定','违反易制毒化学品管理规定','违反民族政策管理规定','违反机动车修理、报废、机动车回收行为','违反食品、药品、环境、野生动植物保护行为','违反疫苗管理规定','组织考试作弊、替考、非法出售试题答案等','更改发动机、车架号码','非法制造、贩卖、持有、使用警用标志、制式服装、警械、证件','违反居民身份证、居住证管理规定','境外非政府组织境内非法活动','骚扰、辱骂、威胁恐吓110、谎报警情','其他妨害社会管理秩序','其他行政(治安)类警情','聚集上访','到县级机关上访','到市级机关上访','到省级机关上访','事发现场反映情况','企事业单位内部反映情况','其他聚集上访','自杀','高坠自杀','溺水自杀','烧炭自杀','上吊自杀','服药(毒)自杀','割脉自杀','卧轨自杀','撞车自杀','其他方式自杀','纠纷','家庭婚姻情感纠纷','家庭纠纷','婚姻纠纷','恋情纠纷','婚外情纠纷','其他情感纠纷','邻里纠纷','宅基地问题','建筑问题','地权问题','装修问题(非噪音)','漏水问题','垃圾问题','通风采光问题','历史遗留问题','口角琐事','其他邻里纠纷','生活纠纷','物业纠纷','通行障碍纠纷','工地施工扰民(非噪音)','环境污染纠纷','水源纠纷','饲养宠物纠纷','其他生活纠纷','噪音纠纷','工地噪音纠纷','广场噪音纠纷','邻里噪音纠纷','门市噪音纠纷','其他噪音纠纷','经济纠纷','债务纠纷','合同纠纷','工程款纠纷','权属纠纷','租赁纠纷','货款纠纷','赔偿纠纷','运费纠纷','其他经济纠纷','消费纠纷','乘车出行','消费服务','商品质量','快递纠纷','其他消费纠纷','劳资纠纷','劳资争议','拖欠工资','工伤事故','企业改制','其他劳资纠纷','医疗纠纷','医患纠纷','医疗事故纠纷','其他医疗纠纷','教育问题纠纷','学生纠纷','师生纠纷','教师待遇问题','学校管理问题','其他教育问题纠纷','房地产问题纠纷','房屋质量问题','交房时间问题','产证办理问题','房价争议问题','其他房地产问题纠纷','征地拆迁纠纷','土地赔偿问题','拆拆补偿问题','回迁安置问题','房屋产权归属问题','其他征地拆迁纠纷','产权权属纠纷','土地权属纠纷','河道权属纠纷','滩涂权属纠纷','林木权属纠纷','水塘权属纠纷','其他产权权属纠纷','交通纠纷','修路补偿问题','过路收费问题','通行纠纷','其他交通纠纷','工作纠纷','意见分歧','不服管理','其他工作纠纷','其他纠纷')" + + " and bjsj between #{startTime} and #{endTime} ") + 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(); +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseSHRXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseSHRXXMapper.java new file mode 100644 index 0000000..461ee09 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseSHRXXMapper.java @@ -0,0 +1,28 @@ +package com.biutag.supervisiondata.mapper.dwd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseSHRXX; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author kami on 2024-11-10 15:14:34 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseSHRXXMapper extends BaseMapper { + + /** + * 查询受害人信息数据(为了转化成风险人员) + * @param startTime 查询开始时间(处警时间) + * @param endTime 查询结束时间(处警时间) + * @return 列表 + */ + @Select(" select ajbh,gmsfhm,xm,xbdm,lxdh from dwd_asj_zfba_shrxx " + + " where shrq between #{startTime} and #{endTime} " + + " and ajbh is not null") + List selectDataToRisk(@Param("startTime")String startTime, @Param("endTime")String endTime); +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseTbDZdrylbMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseTbDZdrylbMapper.java new file mode 100644 index 0000000..68f2f3e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseTbDZdrylbMapper.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.GBaseTbDZdrylb; + +/** + * @author kami on 2024-11-20 16:20:45 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseTbDZdrylbMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseWFRXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseWFRXXMapper.java new file mode 100644 index 0000000..7b4b37f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseWFRXXMapper.java @@ -0,0 +1,40 @@ +package com.biutag.supervisiondata.mapper.dwd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseSHRXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author kami on 2024-11-10 15:14:34 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseWFRXXMapper extends BaseMapper { + + /** + * 查询违法人信息数据(为了转化成风险人员) + * @param startTime 查询开始时间(处警时间) + * @param endTime 查询结束时间(处警时间) + * @return 列表 + */ + @Select(" select ajbh,zjhm,xm,xbdm,lxdh from dwd_ry_zfba_wfryxx " + + " where lrsj between #{startTime} and #{endTime} " + + " and ajbh is not null") + List selectDataToRisk(@Param("startTime")String startTime, @Param("endTime")String endTime); + + /** + * @return 列表 + */ + @Select("") + List selectListByIdCode(@Param("list")List list); +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java new file mode 100644 index 0000000..6fc7fac --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDRYMapper.java @@ -0,0 +1,69 @@ +package com.biutag.supervisiondata.mapper.dwd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.domain.*; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author kami on 2024-11-15 17:15:12 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseZDRYMapper extends BaseMapper { + + @Select(" select bjzdrybh,xm, sfzh,zdrylbbj, zdrylxfs,gxdw,gxdwjgdm,xzdpcs, xzdpcsdm, xzdzrr, xzdzrrlxfs, zdryxl,jlbgsj, zkztdm " + + " from dwd_ry_zddxgk_zdry " + + " where sfzh is not null") + List syncPointPeople(); + + @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) ") + List 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 syncKillSelf(); + + @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, jqbz, bjnr, cjqk, gxdwdm, gxdwmc " + + " FROM dwd_asj_zhtx_jjd a WHERE (jqbz LIKE '%精神病%' OR bjnr LIKE '%精神病%') AND cjqk LIKE '【结警反馈】%' AND a.bjsj > DATE_ADD(now(), INTERVAL -12 MONTH) " + + " AND EXISTS (SELECT d.bjzdrybh FROM csga_dwd.dwd_ry_zddxgk_zdry d WHERE a.bjrzjhm = d.sfzh) ") + List syncPointNoControlCrazy(); + + /** + * 故意犯罪被作出刑事判决人员(排除仍在羁押状态的)、公安机关查处吸毒人员(排除仍在羁押状态的), 发现在重点人员中 未纳入或未按要求落实双列管 + */ + @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 INNER JOIN csga_dwd.dwd_ry_zfba_wfryxx b ON a.AJBH = b.AJBH " + + " WHERE a.BARQ > DATE_ADD(now(), INTERVAL -12 MONTH) " + + " AND ((a.AJBZdm = 1 AND EXISTS (SELECT c.AJLBdm FROM csga_wdpcdb.wdpc_grjd_flxx c WHERE a.AJLBdm = c.AJLBdm AND c.LXDM = '6')) OR b.SXZM = '吸毒') " + + " AND NOT EXISTS (SELECT d.bjzdrybh FROM csga_dwd.dwd_ry_zddxgk_zdry d WHERE b.ZJHM = d.sfzh AND d.zkztdm = '1') " + + " AND NOT EXISTS (SELECT c.idcard_no FROM dwd_ry_jgzhxt_zyryxx c WHERE c.idcard_no = b.ZJHM AND c.status = 10) ") + List syncPointNoControl(); + + /** + * 看守所故意犯罪刑满释放不满5年人员, 发现在重点人员中 未纳入或未按要求落实双列管 + */ + @Select(" SELECT a.det_no as detNo, a.name as name, a.used_name as usedName, a.idcard_no as idCardNo, a.out_date as outDate, a.crime as crime, a.brief_case as briefCase, a.case_unit_id as caseUnitId, a.case_unit as caseUnit" + + " FROM csga_dwd.dwd_ry_jgzhxt_zyryxx a " + + " WHERE a.status = 11 AND a.out_reason NOT IN ('15', '19') AND DATEDIFF(now(), out_date) < 365 * 5 " + + " AND NOT EXISTS (SELECT d.bjzdrybh FROM csga_dwd.dwd_ry_zddxgk_zdry d WHERE a.idcard_no = d.sfzh AND d.zkztdm = '1') " + + " AND EXISTS (SELECT b.AJLBdm FROM csga_dwd.dwd_asj_zfba_ajjbxx b, csga_dwd.dwd_ry_zfba_wfryxx c, csga_wdpcdb.wdpc_grjd_flxx e WHERE b.AJBH = c.AJBH AND a.idcard_no = c.ZJHM AND b.AJLBdm = e.AJLBdm AND e.LXDM = '6') " + + " AND EXISTS (SELECT f.det_no FROM csga_dwd.dwd_ry_jgzhxt_zyryxx f WHERE a.idcard_no = f.idcard_no AND a.out_date > f.out_date) ") + List syncPointZDRYNoControl(); + + @Select(" SELECT xm, sfzh, lxdh, jtdz, wxjb, hcqk, tsqksm FROM csga_wdpcdb.wdpc_wjw_jsjb a " + + " WHERE NOT EXISTS (SELECT b.bjzdrybh FROM dwd_ry_zddxgk_zdry b WHERE a.SFZH = b.sfzh AND b.zkztdm = '1') AND hcqk = '未列管' ") + List syncCrazyLevelThree(); + + @Select("select xm,sfzh,lxdh,gzdw from csga_wdpcdb.wdpc_ry_syxx") + List selectDrugMan(); + + @Select(" SELECT bjzdrybh, xm, sfzh, xzdpcsdm, xzdpcs, zdryxl, xzdzrr " + + " FROM dwd_ry_zddxgk_zdry a " + + " WHERE EXISTS ( " + + " SELECT xzdzrr, xzdzrrlxfs, COUNT(DISTINCT sfzh) AS num FROM dwd_ry_zddxgk_zdry b WHERE a.xzdzrr = b.xzdzrr AND a.xzdzrrlxfs = b.xzdzrrlxfs GROUP BY xzdzrr, xzdzrrlxfs HAVING COUNT(DISTINCT sfzh) >= 100) ORDER BY xzdzrr, xzdzrrlxfs") + List noPower(); + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDXLMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDXLMapper.java new file mode 100644 index 0000000..81a4ce7 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZDXLMapper.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.GBaseZDXL; + +/** + * @author kami on 2024-11-15 17:15:12 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseZDXLMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZYRYXXMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZYRYXXMapper.java new file mode 100644 index 0000000..afc0ed6 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/dwd/GBaseZYRYXXMapper.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.GBaseZYRYXX; + +/** + * @author kami on 2024-11-12 15:16:21 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseZYRYXXMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/DataCaseVerifMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/DataCaseVerifMapper.java new file mode 100644 index 0000000..edd9a05 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/DataCaseVerifMapper.java @@ -0,0 +1,9 @@ +package com.biutag.supervisiondata.mapper.mine; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.DataCaseVerif; + +public interface DataCaseVerifMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetition12337Mapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetition12337Mapper.java new file mode 100644 index 0000000..f5dac0f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetition12337Mapper.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.mapper.mine; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.DataPetition12337; + +public interface DataPetition12337Mapper extends BaseMapper { + +} + + + + diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetitionComplaintMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetitionComplaintMapper.java new file mode 100644 index 0000000..9d60139 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/DataPetitionComplaintMapper.java @@ -0,0 +1,10 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.DataPetitionComplaint; + +public interface DataPetitionComplaintMapper extends BaseMapper { + + + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/ModelMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/ModelMapper.java new file mode 100644 index 0000000..c4d2ff0 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/ModelMapper.java @@ -0,0 +1,8 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.Model; + +public interface ModelMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java new file mode 100644 index 0000000..d71d33a --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskModelTaskClueMapper.java @@ -0,0 +1,18 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * @author kami on 2024-11-11 11:37:50 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskModelTaskClueMapper extends BaseMapper { + + @Select(" select * from risk_model_task_clue where id_code in (select id_code from risk_model_task_clue where model_id = 43 and risk_reason = '特定人员' group by id_code having count(1) > 1) and model_id = 43 and risk_reason = '特定人员' ") + List selectToKill(); +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalControlRecordMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalControlRecordMapper.java new file mode 100644 index 0000000..d75da73 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalControlRecordMapper.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalControlRecord; + +/** + * @author kami on 2024-11-08 19:43:32 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskPersonalControlRecordMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalMapper.java new file mode 100644 index 0000000..29ebd48 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalMapper.java @@ -0,0 +1,35 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author kami on 2024-11-08 19:43:32 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskPersonalMapper extends BaseMapper { + + @Insert("") + int update(@Param("item") RiskPersonal item); + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java new file mode 100644 index 0000000..340e084 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskPersonalTagMapper.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; + +/** + * @author kami on 2024-11-08 19:43:32 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskPersonalTagMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskScoreRuleMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskScoreRuleMapper.java new file mode 100644 index 0000000..5f28b15 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskScoreRuleMapper.java @@ -0,0 +1,8 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskScoreRule; + +public interface RiskScoreRuleMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTaskMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTaskMapper.java new file mode 100644 index 0000000..30522a9 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTaskMapper.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; + +/** + * @author kami on 2024-11-11 14:03:18 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskTaskMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java new file mode 100644 index 0000000..5b87b18 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/RiskTestMapper.java @@ -0,0 +1,12 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTest; + +/** + * @author kami on 2024-11-13 16:17:36 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskTestMapper extends BaseMapper { +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/SupDepartMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/SupDepartMapper.java new file mode 100644 index 0000000..01c2d27 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/SupDepartMapper.java @@ -0,0 +1,8 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.SupDepart; + +public interface SupDepartMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/mapper/mine/SupExternalDepartMapper.java b/src/main/java/com/biutag/supervisiondata/mapper/mine/SupExternalDepartMapper.java new file mode 100644 index 0000000..4b206b5 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/mapper/mine/SupExternalDepartMapper.java @@ -0,0 +1,8 @@ +package com.biutag.supervisiondata.mapper.mine; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.biutag.supervisiondata.pojo.entity.mine.SupExternalDepart; + +public interface SupExternalDepartMapper extends BaseMapper { + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/ClueData.java b/src/main/java/com/biutag/supervisiondata/pojo/ClueData.java new file mode 100644 index 0000000..a2f9e77 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/ClueData.java @@ -0,0 +1,47 @@ +package com.biutag.supervisiondata.pojo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-13 13:08:18 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@Builder +@Slf4j +@AllArgsConstructor +@NoArgsConstructor(force = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ClueData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + String idCode; + + String id; + + String name; + + String tag; + + LocalDateTime eventTime; + + String departId; + + String departName; + + Integer personId; + + String sourceData; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/ClueInfo.java b/src/main/java/com/biutag/supervisiondata/pojo/ClueInfo.java new file mode 100644 index 0000000..80aa370 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/ClueInfo.java @@ -0,0 +1,47 @@ +package com.biutag.supervisiondata.pojo; + +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.io.Serial; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * @author kami on 2024-11-10 15:55:50 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@Builder +@Slf4j +@AllArgsConstructor +@NoArgsConstructor(force = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ClueInfo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 修改的信息 + */ + @Builder.Default + List toUpdate = new ArrayList<>(); + /** + * 新增的信息 + */ + @Builder.Default + List toInsert = new ArrayList<>(); + /** + * 隐藏的信息 + */ + @Builder.Default + List toHidden = new ArrayList<>(); + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java new file mode 100644 index 0000000..574ffc0 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/Default.java @@ -0,0 +1,43 @@ +package com.biutag.supervisiondata.pojo.constants; + +import lombok.experimental.UtilityClass; + +/** + * @author kami on 2024-11-09 16:33:11 + * @version 0.0.1 + * @since 1.8 + */ +@UtilityClass +public class Default { + + public static final String BIG_TAG_JJD = "涉相关警情人员"; + + public static final String SHR_TAG = "受害人"; + + public static final String WFR_TAG = "违法人"; + + public static final String BIG_TAG_SHWFR = "涉违法犯罪人员"; + + public static final String PETITION_CASE_TAG = "案件核查"; + + public static final String PETITION_12337_TAG = "12337"; + + public static final String PETITION_TAG = "信访投诉"; + + public static final String BIG_TAG_PETITION = "涉投诉举报信访人员"; + + public static final String BA_TAG = "从事特种职业-保安"; + + public static final String BIG_TAG_TRUBO = "涉矛盾纠纷"; + + public static final String FIGHT_BORN = "成长地区暴力警情高于平均水平"; + + public static final String FIGHT_MUCH = "高风险矛盾纠纷"; + + public static final String POINT_POEPLE = "特定人员"; + + public static final String NO_CONTROL = "专项排查关注人员"; + + public static final String CALL_REDIS = "call:point"; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/constants/ThreadConstants.java b/src/main/java/com/biutag/supervisiondata/pojo/constants/ThreadConstants.java new file mode 100644 index 0000000..37f8909 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/constants/ThreadConstants.java @@ -0,0 +1,16 @@ +package com.biutag.supervisiondata.pojo.constants; + +/** + * @author kami + * @version 1.0 + * @since 2022/7/8 17:16 + */ +public class ThreadConstants { + + private ThreadConstants(){} + + /** + * 链路id + */ + public static final String TRACE_ID = "trace_id"; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/CrazyLevelThree.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/CrazyLevelThree.java new file mode 100644 index 0000000..32ff74e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/CrazyLevelThree.java @@ -0,0 +1,28 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author kami on 2024-11-18 14:42:07 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class CrazyLevelThree implements Serializable { + + String xm; + + String sfzh; + + String lxdh; + + String jtdz; + + String wxjb; + + String hcqk; + + String tsqksm; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/Drug.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/Drug.java new file mode 100644 index 0000000..20513c9 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/Drug.java @@ -0,0 +1,22 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author kami on 2024-11-18 21:33:57 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class Drug implements Serializable { + + String xm; + + String sfzh; + + String lxdh; + + String gzdw; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/Extreme.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/Extreme.java new file mode 100644 index 0000000..14930a2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/Extreme.java @@ -0,0 +1,34 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.util.Date; + +/** + * @author kami on 2024-11-17 17:21:52 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class Extreme { + + String jjdbh; + + Date bjsj; + + String bjrxm; + + String bjrlxdh; + + String bjrzjhm; + + String jqbz; + + String bjnr; + + String cjqk; + + String gxdwdm; + + String gxdwmc; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/FightMan.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/FightMan.java new file mode 100644 index 0000000..ffccddc --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/FightMan.java @@ -0,0 +1,24 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author kami on 2024-11-15 19:18:30 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class FightMan implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + String gmsfhm; + + Integer fightCount; + + Integer dateCount; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/NoControl.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/NoControl.java new file mode 100644 index 0000000..1014906 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/NoControl.java @@ -0,0 +1,39 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author kami on 2024-11-18 14:31:42 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class NoControl implements Serializable { + /** + * 在押人员编号 + */ + String detNo; + + String name; + + String usedName; + + String idCardNo; + /** + * 出所事件 + */ + Date outDate; + + String crime; + /** + * 违法情况 + */ + String briefCase; + + String caseUnitId; + + String caseUnit; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/PointCall.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/PointCall.java new file mode 100644 index 0000000..b513e1d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/PointCall.java @@ -0,0 +1,33 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author kami on 2024-11-21 12:14:29 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class PointCall implements Serializable { + + String name; + + String mobiles; + + String idCode; + + String labels; + + Integer callCount; + + Integer noUsefulCallCount; + + String desc; + + String controlId; + + String controlName; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/PointType.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/PointType.java new file mode 100644 index 0000000..5d84b3e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/PointType.java @@ -0,0 +1,20 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.util.List; + +/** + * @author kami on 2024-11-15 17:28:46 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class PointType { + + String name; + + String code; + + List child; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/TaskParamDomain.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/TaskParamDomain.java new file mode 100644 index 0000000..f4ae0ce --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/TaskParamDomain.java @@ -0,0 +1,57 @@ +package com.biutag.supervisiondata.pojo.domain; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.*; +import lombok.extern.slf4j.Slf4j; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-12 10:35:12 + * @version 0.0.1 + * @since 1.8 + */ +public class TaskParamDomain { + + public TaskParamDomain(List persons, Map> map) { + this.map = map; + this.persons = persons; + List idCodes = persons.stream().map(RiskPersonal::getIdCode).filter(Objects::nonNull).toList(); + // 切割 每次查10000条 + this.idCards = IntStream.range(0, (idCodes.size() + 9999) / 10000) + .mapToObj(i -> idCodes.subList(i * 10000, Math.min((i + 1) * 10000, idCodes.size()))) + .toList(); + } + + @Getter + List persons; + @Getter + Map> map; + + @Getter + List> idCards; + + Map oldMap; + + public Map getOldMap(Integer modelId, boolean forceUpdate) { + if(forceUpdate) { + this.refreshMap(modelId); + } + if(this.oldMap == null) { + this.refreshMap(modelId); + } + return this.oldMap; + } + + private void refreshMap(Integer modelId) { + // 旧数据 + this.oldMap = Optional.ofNullable(this.map.get(modelId)).map(it -> it.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, Function.identity(), (oldValue, newValue) -> newValue))).orElse(new HashMap<>()); + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/domain/Violence.java b/src/main/java/com/biutag/supervisiondata/pojo/domain/Violence.java new file mode 100644 index 0000000..862fdfc --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/domain/Violence.java @@ -0,0 +1,36 @@ +package com.biutag.supervisiondata.pojo.domain; + +import lombok.Data; + +import java.util.Date; + +/** + * @author kami on 2024-11-17 16:02:12 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class Violence { + + String ajbh; + + String ajmc; + + String jyaq; + + Date barq; + + String xm; + + String xbmc; + + String zjhm; + + String ajlbmc; + + String wfss; + + String badwiddm; + + String badwidmc; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java new file mode 100644 index 0000000..25bd223 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/ads/GBaseSYRKXX.java @@ -0,0 +1,64 @@ +package com.biutag.supervisiondata.pojo.entity.ads; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * ads 实有人口信息 + * @author kami on 2024-11-08 19:54:52 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("ads_ssxx_syrkxx") +public class GBaseSYRKXX { + /** + * 公民身份号码 + */ + @TableField("gmsfhm") + String gmsfhm; + /** + * 姓名 + */ + @TableField("xm") + String xm; + /** + * 性别代码 + */ + @TableField("xbdm") + String xbdm; + /** + * 联系电话 + */ + @TableField("lxdh") + String lxdh; + /** + * 出生日期 + */ + @TableField("csrq") + Date csrq; + + /** + * 学历名称 + */ + @TableField("xlmc") + String xlmc; + /** + * 出生地代码 + */ + @TableField("csdxzqhdm") + String csdxzqhdm; + /** + * 出生地名称 + */ + @TableField("csdxzqhmc") + String csdxzqhmc; + @TableField("sspcsdm") + String sspcsdm; + @TableField("sspcsmc") + String sspcsmc; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseAJJBXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseAJJBXX.java new file mode 100644 index 0000000..6369f29 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseAJJBXX.java @@ -0,0 +1,49 @@ +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.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 案件基本信息 + * @author kami on 2024-11-10 14:47:22 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_asj_zfba_ajjbxx") +public class GBaseAJJBXX implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 案件编号 + */ + @TableField("ajbh") + String ajbh; + /** + * 办案单位ID + */ + @TableField("badwiddm") + String badwiddm; + /** + * 办案单位ID_描述 + */ + @TableField("badwidmc") + String badwidmc; + /** + * 案件类别名称 + */ + @TableField("ajlbmc") + String ajlbmc; + /** + * 报案日期 + */ + @TableField("barq") + Date barq; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAXX.java new file mode 100644 index 0000000..ca63771 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAXX.java @@ -0,0 +1,36 @@ +package com.biutag.supervisiondata.pojo.entity.dwd; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 保安信息 + * @author kami on 2024-11-12 17:59:40 + * @version 0.0.1 + * @since 1.8 + */ +@TableName("dwd_ry_nbgl_bacyryxxdjb") +@Setter +@Getter +public class GBaseBAXX implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + @TableField("xm") + String xm; + @TableField("sfzhm") + String sfzhm; + @TableField("zw") + String zw; + @TableField("ryztdm") + String ryztdm; + @TableField("ryztmc") + String ryztmc; + @TableField("rzsj") + String rzsj; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAYJ.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAYJ.java new file mode 100644 index 0000000..364fb62 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseBAYJ.java @@ -0,0 +1,36 @@ +package com.biutag.supervisiondata.pojo.entity.dwd; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 保安预警 + * @author kami on 2024-11-12 17:59:50 + * @version 0.0.1 + * @since 1.8 + */ +@TableName("dwd_ry_nbgl_bayyj") +@Setter +@Getter +public class GBaseBAYJ implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @TableField("xm") + String xm; + @TableField("sfzhm") + String sfzhm; + @TableField("zw") + String zw; + + @TableField("ryztmc") + String ryztmc; + @TableField("rzsj") + String rzsj; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseHY.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseHY.java new file mode 100644 index 0000000..0440c83 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseHY.java @@ -0,0 +1,56 @@ +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.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @author kami on 2024-11-13 15:13:08 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_ry_kxgxzyk_hydjxxb") +public class GBaseHY implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @TableField("xlzjdjzh") + String xlzjdjzh; + + /** + * ==1的 + */ + @TableField("yxbzdm") + String yxbzdm; + /** + * 男方身份号码 + */ + /** + * 女方身份号码 + */ + @TableField("nfsfhm") + String nfsfhm; + @TableField("nvfsfhm") + String nvfsfhm; + /** + * 登记日期 + */ + @TableField("djrq") + Date djrq; + /** + * 类型代码 + */ + @TableField("ywlxdmdm") + String ywlxdmdm; + /** + * 类型名称 + */ + @TableField("ywlxdmmc") + String ywlxdmmc; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseJJD.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseJJD.java new file mode 100644 index 0000000..400206f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseJJD.java @@ -0,0 +1,74 @@ +package com.biutag.supervisiondata.pojo.entity.dwd; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +@TableName("dwd_asj_zhtx_jjd") +@Setter +@Getter +public class GBaseJJD implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + @TableField("jjdbh") + private String jjdbh; + + // 管辖单位代码 + @TableField("gxdwdm") + private String gxdwdm; + + // 管辖单位名称 + @TableField("gxdwmc") + private String gxdwmc; + /** + * 报警人姓名 + */ + @TableField("bjrxm") + private String bjrxm; + /** + * 报警人性别 + */ + @TableField("bjrxb") + private String bjrxb; + /** + * 报警人联系电话 + */ + @TableField("bjrlxdh") + private String bjrlxdh; + + @TableField("bjdh") + String bjdh; + /** + * 报警人证件号码 + */ + @TableField("bjrzjhm") + private String bjrzjhm; + /** + * 警情性质名称 + */ + @TableField("jqxzmc") + private String jqxzmc; + @TableField("jqxzdm") + private String jqxzdm; + /** + * 报警内容 + */ + @TableField("bjnr") + private String bjnr; + /** + * 处警情况 + */ + @TableField("cjqk") + private String cjqk; + /** + * 报警时间 + */ + @TableField("bjsj") + private Date bjsj; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseSHRXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseSHRXX.java new file mode 100644 index 0000000..c419e67 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseSHRXX.java @@ -0,0 +1,47 @@ +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.Serial; +import java.io.Serializable; + +/** + * 受害人信息 + * @author kami on 2024-11-10 14:47:13 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_asj_zfba_shrxx") +public class GBaseSHRXX implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 公民身份号码 + */ + @TableField("gmsfhm") + String gmsfhm; + /** + * 姓名 + */ + @TableField("xm") + String xm; + /** + * 性别 + */ + @TableField("xbdm") + String xbdm; + /** + * 联系方式 + */ + @TableField("lxdh") + String lxdh; + /** + * 案件编号 + */ + @TableField("ajbh") + String ajbh; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseTbDZdrylb.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseTbDZdrylb.java new file mode 100644 index 0000000..f31b297 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseTbDZdrylb.java @@ -0,0 +1,20 @@ +package com.biutag.supervisiondata.pojo.entity.dwd; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author kami on 2024-11-20 16:19:23 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("tb_d_zdrylb") +public class GBaseTbDZdrylb { + + @TableField("`code`") + String code; + @TableField("`define`") + String define; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java new file mode 100644 index 0000000..b2c450a --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseWFRXX.java @@ -0,0 +1,52 @@ +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.Serial; +import java.io.Serializable; + +/** + * 违法人信息 + * @author kami on 2024-11-10 14:47:22 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_ry_zfba_wfryxx") +public class GBaseWFRXX implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 姓名 + */ + @TableField("xm") + String xm; + /** + * 性别代码 + */ + @TableField("xbdm") + String xbdm; + /** + * 证件号码 + */ + @TableField("zjhm") + String zjhm; + /** + * 联系方式 + */ + @TableField("lxdh") + String lxdh; + /** + * 案件编号 + */ + @TableField("ajbh") + String ajbh; + /** + * 罪名名称 + */ + @TableField("sxzm") + String sxzm; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDRY.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDRY.java new file mode 100644 index 0000000..e93e40f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDRY.java @@ -0,0 +1,107 @@ +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.Serial; +import java.io.Serializable; + +/** + * @author kami on 2024-11-14 19:00:53 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_ry_zddxgk_zdry") +public class GBaseZDRY implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 部级重点人员编号 + */ + @TableField("bjzdrybh") + String bjzdrybh; + + @TableField("xm") + String xm; + /** + * 性别代码 + */ + @TableField("xbdm") + String xbdm; + /** + * 身份证号 + */ + @TableField("sfzh") + String sfzh; + + /** + * 联系方式 + */ + @TableField("zdrylxfs") + String zdrylxfs; + /** + * 管辖单位 + */ + @TableField("gxdw") + String gxdw; + /** + * 管辖单位代码 + */ + @TableField("gxdwjgdm") + String gxdwjgdm; + /** + * 现住地派出所 + */ + @TableField("xzdpcs") + String xzdpcs; + /** + * 现住地派出所代码 + */ + @TableField("xzdpcsdm") + String xzdpcsdm; + + /** + * 现住地责任人 + */ + @TableField("xzdzrr") + String xzdzrr; + + /** + * 现住地责任人联系方式 + */ + @TableField("xzdzrrlxfs") + String xzdzrrlxfs; + + /** + * 重点人员细类 + */ + @TableField("zdryxl") + String zdryxl; + + /** + * 重点人员类别标记 + */ + @TableField("zdrylbbj") + String zdrylbbj; + + /** + * 记录变更时间 yyyyMMddHHmmss + */ + @TableField("jlbgsj") + String jlbgsj; + /** + * 在空状态代码 1 - 在控 + */ + @TableField("zkztdm") + String zkztdm; + + /** + * 在控人员级别代码 + */ + @TableField("zkryjbdm") + String zkryjbdm; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDXL.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDXL.java new file mode 100644 index 0000000..a00674b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZDXL.java @@ -0,0 +1,33 @@ +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.Serial; +import java.io.Serializable; + +/** + * @author kami on 2024-11-15 17:12:15 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_ry_zddxgk_zdryxl") +public class GBaseZDXL implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + @TableField("id") + String id; + /** + * 描述 + */ + @TableField("define") + String define; + /** + * 父级id + */ + @TableField("fjdid") + String fjdid; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZYRYXX.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZYRYXX.java new file mode 100644 index 0000000..346d81b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/dwd/GBaseZYRYXX.java @@ -0,0 +1,48 @@ +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.Serial; +import java.io.Serializable; + +/** + * 在押人员 + * @author kami on 2024-11-12 14:35:40 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("dwd_ry_jgzhxt_zyryxx") +public class GBaseZYRYXX implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + /** + * 编号 + */ + @TableField("det_no") + String detNo; + /** + * 证件号 + */ + @TableField("idcard_no") + String idCardNo; + /** + * 服刑事件 两位年 两位月两位日 + */ + @TableField("rslt_time") + String rsltTime; + + /** + * 监所id + */ + @TableField("prison_id") + String prisonId; + /** + * 监所名称 + */ + @TableField("prison_name") + String prisonName; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataCaseVerif.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataCaseVerif.java new file mode 100644 index 0000000..24873c6 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataCaseVerif.java @@ -0,0 +1,79 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + + +@Data +@TableName("data_case_verif") +public class DataCaseVerif { + + // 样本源头编号 + @TableId(value = "originId") + private String originId; + + // 问题发现时间 + @TableField("discovery_time") + private LocalDateTime discoveryTime; + + // 问题发生时间 + @TableField("happen_time") + private LocalDateTime happenTime; + + // 问题来源 + @TableField("problem_sources") + private String problemSources; + + // 投诉人姓名 + @TableField("responder_name") + private String responderName; + + // 投诉人电话 + @TableField("responder_phone") + private String responderPhone; + + // 业务类型 + @TableField("business_type_name") + private String businessTypeName; + + // 涉及问题 + @TableField("involve_problem") + private String involveProblem; + + // 涉及警种 + @TableField("police_type_name") + private String policeTypeName; + + // 涉及单位 二级 + private String secondDepartId; + + private String secondDepartName; + + // 所对 + private String thirdDepartId; + + private String thirdDepartName; + + // 事情简述 + @TableField("thing_desc") + private String thingDesc; + + // + @TableField("create_time") + private LocalDateTime createTime; + + // 分发状态 + private String distributionState; + + // 是否属实 + @TableField("is_real") + private Integer isReal; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetition12337.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetition12337.java new file mode 100644 index 0000000..cd1155b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetition12337.java @@ -0,0 +1,605 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +@TableName(value ="data_petition_12337") +@Data +public class DataPetition12337 implements Serializable { + /** + * 唯一编号 + */ + @TableId(value = "only_id") + private String onlyId; + + /** + * 外网线索编号 + */ + @TableField(value = "external_id") + private String externalId; + + /** + * 内网线索编号 + */ + @TableField(value = "inner_id") + private String innerId; + + /** + * 单机版线索编号 + */ + @TableField(value = "stand_alone") + private String standAlone; + + /** + * 信息受理登记时间 + */ + @TableField(value = "discover_time") + private LocalDateTime discoverTime; + + /** + * 线索来源 + */ + @TableField(value = "letter_source") + private String letterSource; + + /** + * 举报人姓名 + */ + @TableField(value = "name") + private String name; + + /** + * 手机号码 + */ + @TableField(value = "phone") + private String phone; + + /** + * 身份证号 + */ + @TableField(value = "id_code") + private String idCode; + + /** + * 举报人(省) + */ + @TableField(value = "reporter_provincial") + private String reporterProvincial; + + /** + * 举报人(市) + */ + @TableField(value = "reporter_city") + private String reporterCity; + + /** + * 举报人(县) + */ + @TableField(value = "reporter_county") + private String reporterCounty; + + /** + * 现住地详址 + */ + @TableField(value = "address") + private String address; + + /** + * 是否政法干警 + */ + @TableField(value = "is_law_police") + private String isLawPolice; + + /** + * 被举报人姓名 + */ + @TableField(value = "reported_name") + private String reportedName; + + /** + * 所属系统 + */ + @TableField(value = "belong_system") + private String belongSystem; + + /** + * 人员类别 + */ + @TableField(value = "person_type") + private String personType; + + /** + * 被举报人所在地(省) + */ + @TableField(value = "reported_provincial") + private String reportedProvincial; + + /** + * 被举报人所在地(市) + */ + @TableField(value = "reported_city") + private String reportedCity; + + /** + * 被举报人所在地(县) + */ + @TableField(value = "reported_county") + private String reportedCounty; + + /** + * 单位名称 + */ + @TableField(value = "org_name") + private String orgName; + + /** + * 单位所属层级 + */ + @TableField(value = "org_level") + private String orgLevel; + + /** + * 具体职务 + */ + @TableField(value = "job_name") + private String jobName; + + /** + * 职级 + */ + @TableField(value = "job_level") + private String jobLevel; + + /** + * 被举报单位名称 + */ + @TableField(value = "reported_org_name") + private String reportedOrgName; + + /** + * 被举报单位所属系统 + */ + @TableField(value = "reported_org_belong") + private String reportedOrgBelong; + + /** + * 被举报单位所在地(省) + */ + @TableField(value = "reported_org_provincial") + private String reportedOrgProvincial; + + /** + * 被举报单位所在地(市) + */ + @TableField(value = "reported_org_city") + private String reportedOrgCity; + + /** + * 被举报单位所在地(县) + */ + @TableField(value = "reported_org_county") + private String reportedOrgCounty; + + /** + * 被举报单位单位所属层级 + */ + @TableField(value = "reported_org_level") + private String reportedOrgLevel; + + /** + * 涉嫌违纪问题项目 + */ + @TableField(value = "against_pro_project") + private String againstProProject; + + /** + * 涉嫌贪污贿赂类犯罪 + */ + @TableField(value = "corruption_guilt") + private String corruptionGuilt; + + /** + * 涉嫌渎职类犯罪 + */ + @TableField(value = "omission_guilt") + private String omissionGuilt; + + /** + * 涉嫌侵犯公民人身权利类犯罪 + */ + @TableField(value = "invade_entitlement_guilt") + private String invadeEntitlementGuilt; + + /** + * 涉嫌侵犯财产类犯罪 + */ + @TableField(value = "invade_finance_guilt") + private String invadeFinanceGuilt; + + /** + * 其他 + */ + @TableField(value = "other_guilt") + private String otherGuilt; + + /** + * 顽瘴痼疾项目 + */ + @TableField(value = "hard_pro_project") + private String hardProProject; + + /** + * 涉嫌违纪违法事项 + */ + @TableField(value = "wjwf_project") + private String wjwfProject; + + /** + * 转办时间 + */ + @TableField(value = "pass_time") + private String passTime; + + /** + * 转办单位 + */ + @TableField(value = "pass_org") + private String passOrg; + + /** + * 核查时间 + */ + @TableField(value = "review_time") + private String reviewTime; + + /** + * 核查单位 + */ + @TableField(value = "review_org") + private String reviewOrg; + + /** + * 核查人 + */ + @TableField(value = "review_person_name") + private String reviewPersonName; + + /** + * 核查人联系方式 + */ + @TableField(value = "review_person_phone") + private String reviewPersonPhone; + + /** + * 被核查人类别 + */ + @TableField(value = "reviewed_person_type") + private String reviewedPersonType; + + /** + * 被核查人是否属于领导班子成员 + */ + @TableField(value = "reviewed_person_isleader") + private String reviewedPersonIsleader; + + /** + * 是否核查完结 + */ + @TableField(value = "reviewed_isover") + private String reviewedIsover; + + /** + * 核查简要情况 + */ + @TableField(value = "review_des") + private String reviewDes; + + /** + * 办理结果 + */ + @TableField(value = "process_result") + private String processResult; + + /** + * 是否进行线索初核 + */ + @TableField(value = "is_first_view") + private String isFirstView; + + /** + * 核查组组长 + */ + @TableField(value = "review_leader") + private String reviewLeader; + + /** + * (核查组组长)联系方式 + */ + @TableField(value = "review_leader_phone") + private String reviewLeaderPhone; + + /** + * 初核情况 + */ + @TableField(value = "first_view_des") + private String firstViewDes; + + /** + * 是否立案审查调查 + */ + @TableField(value = "is_register_case") + private String isRegisterCase; + + /** + * 立案审查调查情况 + */ + @TableField(value = "register_case_des") + private String registerCaseDes; + + /** + * 是否处分处理 + */ + @TableField(value = "is_punish") + private String isPunish; + + /** + * 处理结论形态 + */ + @TableField(value = "process_res_type") + private String processResType; + + /** + * 处理结论结果 + */ + @TableField(value = "process_res_des") + private String processResDes; + + /** + * 处分处理情况 + */ + @TableField(value = "punish_des") + private String punishDes; + + /** + * 是否适用自查从宽政策 + */ + @TableField(value = "is_tolerant") + private String isTolerant; + + /** + * 是否办结 + */ + @TableField(value = "is_over") + private String isOver; + + /** + * 联系时间 + */ + @TableField(value = "contact_time") + private String contactTime; + + /** + * 联系单位 + */ + @TableField(value = "contact_org") + private String contactOrg; + + /** + * 联系人 + */ + @TableField(value = "contact_person_name") + private String contactPersonName; + + /** + * 联系方式 + */ + @TableField(value = "contact_type") + private String contactType; + + /** + * 与举报人联系沟通详情 + */ + @TableField(value = "contact_reporter_des") + private String contactReporterDes; + + /** + * 超期未反馈原因 + */ + @TableField(value = "overtime_reason") + private String overtimeReason; + + /** + * 是否申请异议 + */ + @TableField(value = "is_dissent") + private String isDissent; + + /** + * 目标省份 + */ + @TableField(value = "aim_provincial") + private String aimProvincial; + + /** + * 申请人 + */ + @TableField(value = "apply_person_name") + private String applyPersonName; + + /** + * 联系方式 + */ + @TableField(value = "apply_person_phone") + private String applyPersonPhone; + + /** + * 申请原因 + */ + @TableField(value = "apply_reason") + private String applyReason; + + /** + * 异议处理方式 + */ + @TableField(value = "dissent_handle") + private String dissentHandle; + + /** + * 处理说明 + */ + @TableField(value = "dissent_handle_explain") + private String dissentHandleExplain; + + /** + * 是否存在附件 + */ + @TableField(value = "is_annex") + private String isAnnex; + + /** + * 附件文件名 + */ + @TableField(value = "annex_name") + private String annexName; + + /** + * 线索举报时间 + */ + @TableField(value = "report_time") + private String reportTime; + + /** + * 导入时间 + */ + @TableField(value = "enter_time") + private String enterTime; + + /** + * 分发时间 + */ + @TableField(value = "distribute_time") + private String distributeTime; + + /** + * 是否违纪违法线索 + */ + @TableField(value = "is_against_clue") + private String isAgainstClue; + + /** + * 是否涉法涉诉线索 + */ + @TableField(value = "is_appeal_clue") + private String isAppealClue; + + /** + * 是否范围外线索 + */ + @TableField(value = "is_overround_clue") + private String isOverroundClue; + + /** + * 是否无效线索 + */ + @TableField(value = "is_invalid_clue") + private String isInvalidClue; + + /** + * 是否重点线索 + */ + @TableField(value = "is_important_clue") + private String isImportantClue; + + /** + * 线索是否重复 + */ + @TableField(value = "is_repeat_clue") + private String isRepeatClue; + + /** + * 重复线索组别 + */ + @TableField(value = "repeat_clue_type") + private String repeatClueType; + + /** + * 线索是否进行了机筛 + */ + @TableField(value = "is_machine") + private String isMachine; + + /** + * 机筛线索时间 + */ + @TableField(value = "machine_tme") + private String machineTme; + + /** + * 线索是否经过人工筛查 + */ + @TableField(value = "is_person") + private String isPerson; + + /** + * 人工筛查线索时间 + */ + @TableField(value = "person_time") + private String personTime; + + /** + * 是否关注线索 + */ + @TableField(value = "is_care") + private String isCare; + + /** + * 关注时间 + */ + @TableField(value = "care_time") + private String careTime; + + /** + * 操作时间 + */ + @TableField(value = "handle_time") + private String handleTime; + + /** + * 二级机构id + */ + @TableField(value = "second_depart_id") + private String secondDepartId; + + /** + * 二级机构名字 + */ + @TableField(value = "second_depart_name") + private String secondDepartName; + + /** + * 三级机构id + */ + @TableField(value = "third_depart_id") + private String thirdDepartId; + + /** + * 三级机构简称 + */ + @TableField(value = "third_depart_name") + private String thirdDepartName; + + + /** + * 下发状态 + */ + @TableField(value = "distributionState") + private String distributionState; + + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetitionComplaint.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetitionComplaint.java new file mode 100644 index 0000000..7b55ee2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/DataPetitionComplaint.java @@ -0,0 +1,93 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + * 信访投诉 + */ +@Setter +@Getter +public class DataPetitionComplaint { + + // 信件编号 + @TableId + private String originId; + + // 投诉渠道 + @TableField("channel_for_filing_complaints") + private String channelForFilingComplaints; + + // 受理层级 + @TableField("acceptance_level") + private String acceptanceLevel; + + // 登记时间 + private LocalDateTime discoveryTime; + + // 投诉人 + @TableField("responder_name") + private String responderName; + + // 投诉人电话 + @TableField("responder_phone") + private String responderPhone; + @TableField("responder_id_code") + private String responderIdCode; + + // 初重信访 + @TableField("initial_petition") + private String initialPetition; + + // 缠访闹访 + @TableField("entanglement_visits") + private Boolean entanglementVisits; + + // 群众集访 + @TableField("mass_visits") + private Boolean massVisits; + + // 涉嫌问题 + @TableField("involve_problem") + private String involveProblem; + + // 业务类别 + @TableField("business_type_name") + private String businessTypeName; + + // 涉及警种名称 + @TableField("police_type_name") + private String policeTypeName; + + // 具体内容 + @TableField("thing_desc") + private String thingDesc; + + + //--------------------- + + // 涉及单位 二级 + private String secondDepartId; + + private String secondDepartName; + + // 所对 + private String thirdDepartId; + + private String thirdDepartName; + + private LocalDateTime createTime; + + private LocalDateTime updateTime; + + // 来源 + private String problemSourcesCode; + + // 分发状态 + private String distributionState; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/Model.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/Model.java new file mode 100644 index 0000000..4f1d567 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/Model.java @@ -0,0 +1,96 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Setter +@Getter +public class Model { + + // + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + // + @TableField("model_name") + private String modelName; + + private Integer classId; + + // + @TableField("icon") + private String icon; + + // + @TableField("remarks") + private String remarks; + + // 分发方式 + @TableField("distribution_method") + private String distributionMethod; + + // 分发周期 + @TableField("distribution_cycle") + private String distributionCycle; + + // 分发周期 周 + private String distributionCycleDayOfWeek; + + // 分发周期 时间 + private String distributionCycleTime; + + // 分发周期,cron 表达式 + private String distributionCycleExpression; + + // 限时 + @TableField("time_limit") + private String timeLimit; + + // + @TableField("max_sign_duration") + private Integer maxSignDuration; + + // + @TableField("max_handle_duration") + private Integer maxHandleDuration; + + // + @TableField("max_extension_duration") + private Integer maxExtensionDuration; + + // + @TableField("distribution_flow") + private String distributionFlow; + + @TableField("approval_flow") + private String approvalFlow; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + @TableField("create_time") + private LocalDateTime createTime; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss") + @TableField("update_time") + private LocalDateTime updateTime; + + private String createDepartId; + + private String createDepartName; + + // 建模方式 + private String modelingMethod; + + // 模型数据类型 + private String modelDataType; + + @TableField("model_sql") + private String modelSql; + + private Integer riskScoreRuleId; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java new file mode 100644 index 0000000..1f4d248 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskModelTaskClue.java @@ -0,0 +1,108 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-11 11:37:50 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("risk_model_task_clue") +public class RiskModelTaskClue implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 模型id + */ + @TableField("`model_id`") + Integer modelId; + + /** + * 姓名 + */ + @TableField("`name`") + String name; + + /** + * 证件号码 + */ + @TableField("id_code") + String idCode; + + // 预警内容 + @TableField("thing_desc") + private String thingDesc; + + // 状态 默认 0-未分发 1-已分发 2-已处理 + @TableField("distribution_state") + private Integer distributionState; + /** + * 任务id + */ + @TableField("task_id") + Integer taskId; + /** + * 原始id + */ + @TableField("source_id") + String sourceId; + /** + * 案件id,“,”分割 + */ + @TableField("case_ids") + String caseIds; + /** + * 问题id + */ + @TableField("negative_id") + String negative_id; + /** + * 风险原因 + */ + @TableField("risk_reason") + String riskReason; + /** + * 数据详情 JSON + */ + @TableField("data") + String data; + /** + * 分数 + */ + @TableField("score") + Integer score; + /** + * 发生时间 + */ + @TableField("event_time") + LocalDateTime eventTime; + /** + * 创建时间 + */ + @TableField("create_time") + LocalDateTime createTime; + /** + * 修改时间 + */ + @TableField("update_time") + LocalDateTime updateTime; + + /** + * 逻辑删除键 + */ + Integer del; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonal.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonal.java new file mode 100644 index 0000000..c5d6fee --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonal.java @@ -0,0 +1,96 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author kami on 2024-11-08 18:53:08 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("risk_personal") +public class RiskPersonal implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 姓名 + */ + @TableField("`name`") + String name; + /** + * 性别男1女2 + */ + @TableField("gender") + String gender; + /** + * 年龄 + */ + @TableField("age") + Integer age; + + /** + * 证件号码 + */ + @TableField("id_code") + String idCode; + /** + * 手机号码 + */ + @TableField("mobile_number") + String mobileNumber; + /** + * 大标签预览 + */ + @TableField("tags") + String tags; + /** + * 风险指数 + */ + @TableField("risk_score") + Double rickScore; + /** + * 管控部门编号 + */ + @TableField("control_depart_id") + String controlDepartId; + /** + * 管控部门名称 + */ + @TableField("control_depart_name") + String controlDepartName; + + /** + * 管控时间 + */ + @TableField("control_time") + LocalDateTime controlTime; + /** + * 创建时间 + */ + @TableField("create_time") + LocalDateTime createTime; + /** + * 异常信息 + */ + @TableField("error_msg") + String errorMsg; + /** + * 逻辑删除键 + */ + @TableLogic(value = "0", delval = "1") + Integer del; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalControlRecord.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalControlRecord.java new file mode 100644 index 0000000..15dbea7 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalControlRecord.java @@ -0,0 +1,77 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-10 14:38:57 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("risk_personal_control_record") +public class RiskPersonalControlRecord implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 姓名 + */ + @TableField("`name`") + String name; + /** + * 证件号码 + */ + @TableField("id_code") + String idCode; + + /** + * 管控标签 + */ + @TableField("control_tag") + String controlTag; + + /** + * 管控部门编号 + */ + @TableField("control_depart_id") + String controlDepartId; + /** + * 管控部门名称 + */ + @TableField("control_depart_name") + String controlDepartName; + + /** + * 管控时间 + */ + @TableField("control_time") + LocalDateTime controlTime; + /** + * 案件编号 + */ + @TableField("case_id") + String caseId; + + /** + * 创建时间 + */ + @TableField("create_time") + LocalDateTime createTime; + + /** + * 逻辑删除键 + */ + Integer del; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java new file mode 100644 index 0000000..af1f5c2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskPersonalTag.java @@ -0,0 +1,63 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-09 16:04:10 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("risk_personal_tag") +public class RiskPersonalTag implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 姓名 + */ + @TableField("`name`") + String name; + /** + * 证件号码 + */ + @TableField("id_code") + String idCode; + /** + * 大标签 + */ + @TableField("big_tag") + String bigTag; + /** + * 小标签 + */ + @TableField("small_tag") + String smallTag; + /** + * 标签时间 + */ + @TableField("tag_time") + LocalDateTime tagTime; + /** + * 创建时间 + */ + @TableField("create_time") + LocalDateTime createTime; + /** + * 逻辑删除键 + */ + @TableLogic(value = "0", delval = "1") + Integer del; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskScoreRule.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskScoreRule.java new file mode 100644 index 0000000..8abf1b4 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskScoreRule.java @@ -0,0 +1,58 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Setter +@Getter +public class RiskScoreRule { + + // + @TableId(type = IdType.AUTO) + private Integer id; + + // + @TableField("pid") + private Integer pid; + + // 风险因素 + @TableField("risk_name") + private String riskName; + + // 分值 + @TableField("score") + private Double score; + + // 规则描述 + @TableField("rule_desc") + private String ruleDesc; + + // 权重 + @TableField("weight") + private Integer weight; + + // 状态 + @TableField("status") + private Boolean status; + + // 更新时间 + @TableField("update_time") + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm") + private LocalDateTime updateTime; + + // 创建时间 + @TableField("create_time") + private LocalDateTime createTime; + + private Integer sortId; + + private Integer level; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTask.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTask.java new file mode 100644 index 0000000..0fa23a8 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTask.java @@ -0,0 +1,75 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-11 11:34:46 + * @version 0.0.1 + * @since 1.8 + */ +@Data +@TableName("risk_task") +public class RiskTask implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 模型id + */ + @TableField("model_id") + Integer modelId; + + /** + * 扫秒条数 + */ + @TableField("scan_size") + Integer scanSize; + + /** + * 新增条数 + */ + @TableField("insert_size") + Integer insertSize; + + /** + * 修改条数 + */ + @TableField("update_size") + Integer updateSize; + + /** + * 开始时间 + */ + @TableField("start_time") + LocalDateTime startTime; + /** + * 结束时间 + */ + @TableField("end_time") + LocalDateTime endTime; + /** + * 0 进行中 1 已完成 -1 失败 + */ + @TableField("state") + Integer state; + /** + * 异常信息 + */ + @TableField("err_msg") + String errMsg; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTest.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTest.java new file mode 100644 index 0000000..9f8f007 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/RiskTest.java @@ -0,0 +1,29 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author kami on 2024-11-13 16:18:01 + * @version 0.0.1 + * @since 1.8 + */ +@Data +public class RiskTest implements Serializable { + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @TableField("`name`") + String name; +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupDepart.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupDepart.java new file mode 100644 index 0000000..dde9c2a --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupDepart.java @@ -0,0 +1,85 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class SupDepart { + + // + @TableId + private String id; + + // + @TableField("type") + private String type; + + // + @TableField("category") + private String category; + + // + @TableField("code") + private String code; + + // + @TableField("name") + private String name; + + // + @TableField("short_name") + private String shortName; + + // + @TableField("domain_name") + private String domainName; + + // + @TableField("pid") + private String pid; + + // + @TableField("level") + private Integer level; + + // + @TableField("path_trace") + private String pathTrace; + + // + @TableField("is_hide") + private String isHide; + + // + @TableField("status") + private String status; + + // + @TableField("order_no") + private Integer orderNo; + + // + @TableField("version") + private String version; + + // + @TableField("status_updated_at") + private String statusUpdatedAt; + + // + @TableField("created_at") + private String createdAt; + + // + @TableField("updated_at") + private String updatedAt; + + private Boolean firstHost; + + // + private String statisticsGroupId; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupExternalDepart.java b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupExternalDepart.java new file mode 100644 index 0000000..1907c09 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/entity/mine/SupExternalDepart.java @@ -0,0 +1,63 @@ +package com.biutag.supervisiondata.pojo.entity.mine; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Setter +@Getter +public class SupExternalDepart { + + // id + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + // 外部单位id + @TableField("external_id") + private String externalId; + + // 外部单位名称 + @TableField("external_name") + private String externalName; + + // 外部来源 + @TableField("source") + private String source; + + // 内部单位id + @TableField("internal_id") + private String internalId; + + // 内部单位名称 + @TableField("internal_name") + private String internalName; + + // 内部单位短名称 + @TableField("internal_short_name") + private String internalShortName; + + // 单位级别 + @TableField("level") + private Integer level; + + // 上级单位id + @TableField("pid") + private String pid; + + // 状态:0-启用,1-禁用 + @TableField("status") + private Integer status; + + // 创建时间 + @TableField("create_time") + private LocalDateTime createTime; + + // 更新时间 + @TableField("update_time") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/enums/Charge.java b/src/main/java/com/biutag/supervisiondata/pojo/enums/Charge.java new file mode 100644 index 0000000..871566b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/enums/Charge.java @@ -0,0 +1,49 @@ +package com.biutag.supervisiondata.pojo.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * @author kami on 2024-11-12 11:07:06 + * @version 0.0.1 + * @since 1.8 + */ +@AllArgsConstructor +@Getter +@Slf4j +public enum Charge { + + KILL("故意杀人", null,"涉故意杀人"), + DRUGS("贩卖毒品", null,"涉贩卖毒品"), + FIRE("放火", null,"涉放火"), + BOOM("爆炸", null,"涉爆炸"), + POISON("投毒", null,"涉投毒"), + RAPE("强奸", "未遂","涉强奸"), + ROB("抢劫", "未遂","涉抢劫"); + + private final String title; + + private final String unEqu; + + private final String desc; + + + + public static String contains(String desc) { + Charge en = null; + for (Charge enums : values()) { + if (desc.contains(enums.getTitle())) { + en = enums; + } + } + if(en == null) { + return null; + } + if(en.getUnEqu() != null && !desc.contains(en.getUnEqu())) { + return en.getDesc(); + } + return null; + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/enums/Dispute.java b/src/main/java/com/biutag/supervisiondata/pojo/enums/Dispute.java new file mode 100644 index 0000000..838e6f3 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/enums/Dispute.java @@ -0,0 +1,41 @@ +package com.biutag.supervisiondata.pojo.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * @author kami on 2024-11-15 12:08:18 + * @version 0.0.1 + * @since 1.8 + */ +@AllArgsConstructor +@Getter +@Slf4j +public enum Dispute { + + LOVE("情感", "涉情感纠纷"), + HOUSE1("房地产", "涉房产纠纷"), + HOUSE2("房屋", "涉房产纠纷"), + HOSPITAL("医患", "涉医患纠纷"), + MONEY("债务", "涉债务纠纷"), + TUDI("土地", "涉土地纠纷"), + MONEY2("劳资", "涉劳资纠纷"), + HOME("家庭暴力", "涉家庭暴力纠纷"), + NEIBER("邻里纠纷", "涉邻里纠纷纠纷"); + + private final String title; + + private final String desc; + + + + public static String contains(String desc) { + for (Dispute enums : values()) { + if (desc.contains(enums.getTitle())) { + return enums.getDesc(); + } + } + return null; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/pojo/enums/Edu.java b/src/main/java/com/biutag/supervisiondata/pojo/enums/Edu.java new file mode 100644 index 0000000..6a890e9 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/pojo/enums/Edu.java @@ -0,0 +1,36 @@ +package com.biutag.supervisiondata.pojo.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * @author kami on 2024-06-19 13:52:23 + * @version 0.0.1 + * @since 1.8 + */ +@AllArgsConstructor +@Getter +@Slf4j +public enum Edu { + + LOW("小学及以下", 3), + MIDDLE("初中/高中", 2), + HEIGHT("中专/大专", 1); + + private final String desc; + + private final Integer score; + + + + public static Integer contains(String desc) { + for (Edu enums : values()) { + if (enums.getDesc().equals(desc)) { + return enums.getScore(); + } + } + log.info("未找到该类型:{}", desc); + return 0; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/DataCaseVerifRepository.java b/src/main/java/com/biutag/supervisiondata/repository/DataCaseVerifRepository.java new file mode 100644 index 0000000..fb2731f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/DataCaseVerifRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.DataCaseVerifMapper; +import com.biutag.supervisiondata.pojo.entity.mine.DataCaseVerif; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-14 15:54:00 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class DataCaseVerifRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/DataPetition12337Repository.java b/src/main/java/com/biutag/supervisiondata/repository/DataPetition12337Repository.java new file mode 100644 index 0000000..0c650ca --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/DataPetition12337Repository.java @@ -0,0 +1,21 @@ +package com.biutag.supervisiondata.repository; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.DataPetition12337Mapper; +import com.biutag.supervisiondata.pojo.entity.mine.DataPetition12337; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-14 15:52:20 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class DataPetition12337Repository extends ServiceImpl { + +} + + + + diff --git a/src/main/java/com/biutag/supervisiondata/repository/DataPetitionComplaintRepository.java b/src/main/java/com/biutag/supervisiondata/repository/DataPetitionComplaintRepository.java new file mode 100644 index 0000000..2b71d92 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/DataPetitionComplaintRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.DataPetitionComplaintMapper; +import com.biutag.supervisiondata.pojo.entity.mine.DataPetitionComplaint; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-14 15:52:20 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class DataPetitionComplaintRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseAJJBXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseAJJBXXRepository.java new file mode 100644 index 0000000..9026def --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseAJJBXXRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseAJJBXXMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-10 15:21:56 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseAJJBXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseBAXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseBAXXRepository.java new file mode 100644 index 0000000..1f8fa83 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseBAXXRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseBAXXMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseBAXX; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-10 15:21:56 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseBAXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseBAYJRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseBAYJRepository.java new file mode 100644 index 0000000..eadc7c3 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseBAYJRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseBAYJMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseBAYJ; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-10 15:21:56 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseBAYJRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseHYRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseHYRepository.java new file mode 100644 index 0000000..81e5d3d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseHYRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseHYMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseHY; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-13 15:18:16 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseHYRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseJJDRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseJJDRepository.java new file mode 100644 index 0000000..96ac4ae --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseJJDRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseJJDMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-09 10:41:45 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseJJDRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseSHRXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseSHRXXRepository.java new file mode 100644 index 0000000..f3626a5 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseSHRXXRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseSHRXXMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseSHRXX; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-10 15:21:56 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseSHRXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseSYRKXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseSYRKXXRepository.java new file mode 100644 index 0000000..e14454f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseSYRKXXRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.ads.GBaseSYRKXXMapper; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-09 10:41:45 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseSYRKXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseTbDZdrylbRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseTbDZdrylbRepository.java new file mode 100644 index 0000000..922f64a --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseTbDZdrylbRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseTbDZdrylbMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseTbDZdrylb; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-20 16:22:26 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseTbDZdrylbRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseWFRXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseWFRXXRepository.java new file mode 100644 index 0000000..3fdcb40 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseWFRXXRepository.java @@ -0,0 +1,16 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseWFRXXMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-10 15:21:56 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseWFRXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseZDRYRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseZDRYRepository.java new file mode 100644 index 0000000..2b0d7b3 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseZDRYRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseZDRYMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-15 17:18:05 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseZDRYRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseZDXLRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseZDXLRepository.java new file mode 100644 index 0000000..8ba2688 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseZDXLRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseZDXLMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDXL; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-15 17:17:02 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseZDXLRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/GBaseZYRYXXRepository.java b/src/main/java/com/biutag/supervisiondata/repository/GBaseZYRYXXRepository.java new file mode 100644 index 0000000..832a1c5 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/GBaseZYRYXXRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.dwd.GBaseZYRYXXMapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZYRYXX; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-10 15:21:56 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class GBaseZYRYXXRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/ModelRepository.java b/src/main/java/com/biutag/supervisiondata/repository/ModelRepository.java new file mode 100644 index 0000000..b011a8b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/ModelRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.ModelMapper; +import com.biutag.supervisiondata.pojo.entity.mine.Model; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-18 19:50:06 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class ModelRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskModelTaskClueRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskModelTaskClueRepository.java new file mode 100644 index 0000000..a7651cc --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskModelTaskClueRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.RiskModelTaskClueMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-13 13:25:57 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class RiskModelTaskClueRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskPersonalRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskPersonalRepository.java new file mode 100644 index 0000000..4756921 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskPersonalRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.RiskPersonalMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-09 10:41:45 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class RiskPersonalRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskPersonalTagRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskPersonalTagRepository.java new file mode 100644 index 0000000..7efb65f --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskPersonalTagRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.RiskPersonalTagMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-09 16:07:02 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class RiskPersonalTagRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskScoreRuleRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskScoreRuleRepository.java new file mode 100644 index 0000000..1e9c4a5 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskScoreRuleRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.RiskScoreRuleMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskScoreRule; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-18 19:37:16 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class RiskScoreRuleRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java new file mode 100644 index 0000000..4ccf5ce --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskTaskRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.RiskTaskMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-11 14:10:01 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class RiskTaskRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/RiskTestRepository.java b/src/main/java/com/biutag/supervisiondata/repository/RiskTestRepository.java new file mode 100644 index 0000000..c927df2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/RiskTestRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.RiskTestMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTest; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-13 16:20:42 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class RiskTestRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/SupDepartRepository.java b/src/main/java/com/biutag/supervisiondata/repository/SupDepartRepository.java new file mode 100644 index 0000000..d6880ec --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/SupDepartRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.SupDepartMapper; +import com.biutag.supervisiondata.pojo.entity.mine.SupDepart; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-22 15:01:47 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class SupDepartRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/repository/SupExternalDepartRepository.java b/src/main/java/com/biutag/supervisiondata/repository/SupExternalDepartRepository.java new file mode 100644 index 0000000..de66b6b --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/repository/SupExternalDepartRepository.java @@ -0,0 +1,15 @@ +package com.biutag.supervisiondata.repository; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.mapper.mine.SupExternalDepartMapper; +import com.biutag.supervisiondata.pojo.entity.mine.SupExternalDepart; +import org.springframework.stereotype.Service; + +/** + * @author kami on 2024-11-22 17:05:07 + * @version 0.0.1 + * @since 1.8 + */ +@Service +public class SupExternalDepartRepository extends ServiceImpl { +} diff --git a/src/main/java/com/biutag/supervisiondata/rest/ApiController.java b/src/main/java/com/biutag/supervisiondata/rest/ApiController.java new file mode 100644 index 0000000..95d65c5 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/rest/ApiController.java @@ -0,0 +1,51 @@ +package com.biutag.supervisiondata.rest; + +import com.biutag.supervisiondata.common.interfaces.CompletableFutureUtil; +import com.biutag.supervisiondata.common.response.RS; +import com.biutag.supervisiondata.lock.LocalLock; +import com.biutag.supervisiondata.service.RiskScoreRuleService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author kami on 2024-11-19 15:32:09 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@RestController +@RequestMapping("/api") +@AllArgsConstructor +public class ApiController { + + private final RiskScoreRuleService riskScoreRuleService; + + @GetMapping("/score") + public RS score(String idCodes) { + if(LocalLock.scoreLock){ + return RS.error("正在进行中"); + } + LocalLock.scoreLock = true; + CompletableFutureUtil.runSync(() -> { + try { + if(idCodes == null) { + riskScoreRuleService.runScore(new ArrayList<>()); + } else { + riskScoreRuleService.runScore(List.of(idCodes.split(","))); + } + + } catch (Exception e) { + log.error("", e); + } finally { + LocalLock.scoreLock = false; + } + }); + return RS.success(); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/DictService.java b/src/main/java/com/biutag/supervisiondata/service/DictService.java new file mode 100644 index 0000000..79c0149 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/DictService.java @@ -0,0 +1,17 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDXL; + +import java.util.Map; + +/** + * @author kami on 2024-11-15 17:24:29 + * @version 0.0.1 + * @since 1.8 + */ +public interface DictService { + /** + * 同步重点人员细类 + */ + Map syncPointType(); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/GBaseBAService.java b/src/main/java/com/biutag/supervisiondata/service/GBaseBAService.java new file mode 100644 index 0000000..1c995f8 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/GBaseBAService.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +/** + * @author kami on 2024-11-12 18:12:20 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseBAService { + + void baModelTask(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java b/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java new file mode 100644 index 0000000..3fb95d6 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/GBaseJJDService.java @@ -0,0 +1,17 @@ +package com.biutag.supervisiondata.service; + +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-09 14:48:35 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseJJDService { + /** + * 拉取新数据并保存 + * @param start 接警开始范围 + * @param end 接警结束范围 + */ + void pullAndSave(LocalDateTime start, LocalDateTime end); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java b/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java new file mode 100644 index 0000000..7655fce --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/GBaseSHRWFRService.java @@ -0,0 +1,16 @@ +package com.biutag.supervisiondata.service; + +import java.time.LocalDateTime; + +/** + * 受害人 违法人 逻辑层 + * @author kami on 2024-11-10 15:24:25 + * @version 0.0.1 + * @since 1.8 + */ +public interface GBaseSHRWFRService { + /** + * 拉取和转存 + */ + void pullAndSave(LocalDateTime start, LocalDateTime end); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/HabitService.java b/src/main/java/com/biutag/supervisiondata/service/HabitService.java new file mode 100644 index 0000000..f679f3e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/HabitService.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +/** + * @author kami on 2024-11-13 11:11:49 + * @version 0.0.1 + * @since 1.8 + */ +public interface HabitService { + + void habitModelTask(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/MarriageService.java b/src/main/java/com/biutag/supervisiondata/service/MarriageService.java new file mode 100644 index 0000000..a522a7a --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/MarriageService.java @@ -0,0 +1,14 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +/** + * 婚姻 + * @author kami on 2024-11-13 15:20:36 + * @version 0.0.1 + * @since 1.8 + */ +public interface MarriageService { + + void marriageModelTask(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/NoControlService.java b/src/main/java/com/biutag/supervisiondata/service/NoControlService.java new file mode 100644 index 0000000..3942847 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/NoControlService.java @@ -0,0 +1,16 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +/** + * @author kami on 2024-11-18 14:06:06 + * @version 0.0.1 + * @since 1.8 + */ +public interface NoControlService { + /** + * 同步管控不到位 + * @param domain 数据 + */ + void syncNoControlData(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/PetitionService.java b/src/main/java/com/biutag/supervisiondata/service/PetitionService.java new file mode 100644 index 0000000..6ca82e5 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/PetitionService.java @@ -0,0 +1,17 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-14 16:01:27 + * @version 0.0.1 + * @since 1.8 + */ +public interface PetitionService { + + void personPullAndSave(LocalDateTime start,LocalDateTime end); + + void petitionModelTask(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/PointService.java b/src/main/java/com/biutag/supervisiondata/service/PointService.java new file mode 100644 index 0000000..20ad22e --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/PointService.java @@ -0,0 +1,31 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +import java.time.LocalDateTime; + +/** + * @author kami on 2024-11-15 18:04:09 + * @version 0.0.1 + * @since 1.8 + */ +public interface PointService { + + void personPullAndSave(LocalDateTime start, LocalDateTime end); + + void syncScore(TaskParamDomain domain); + + /** + * 同步暴力人员 + * @param domain domain + */ + void syncViolence(TaskParamDomain domain); + + void syncKillSelf(TaskParamDomain domain); + + void syncDrug(TaskParamDomain domain); + + void syncControlNoPower(TaskParamDomain domain); + + void syncPointCall(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/PoliceService.java b/src/main/java/com/biutag/supervisiondata/service/PoliceService.java new file mode 100644 index 0000000..920eea1 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/PoliceService.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; + +/** + * @author kami on 2024-11-12 19:39:55 + * @version 0.0.1 + * @since 1.8 + */ +public interface PoliceService { + + void contradictModelTask(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java b/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java new file mode 100644 index 0000000..61c659d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/RiskModelTaskClueService.java @@ -0,0 +1,16 @@ +package com.biutag.supervisiondata.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; + +import java.util.List; + +/** + * @author kami on 2024-11-11 14:11:31 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskModelTaskClueService { + + void saveClues(List list); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskPersonalControlRecordService.java b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalControlRecordService.java new file mode 100644 index 0000000..f6fd1f2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalControlRecordService.java @@ -0,0 +1,17 @@ +package com.biutag.supervisiondata.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalControlRecord; + +import java.util.List; + +/** + * @author kami on 2024-11-20 10:07:01 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskPersonalControlRecordService extends IService { + + void batchInsert(List alliances); + +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java new file mode 100644 index 0000000..ff5fd3c --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalService.java @@ -0,0 +1,32 @@ +package com.biutag.supervisiondata.service; + +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 java.util.List; + +/** + * @author kami on 2024-11-09 16:14:12 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskPersonalService { + /** + * 格式化并保存 + * @param list 人员列表 + * @param bigTag 大标签 + */ + void formatAndSave(List list, String bigTag); + + void batchInsert3(List alliances); + + /** + * 修改分 + * @param personals 集合 + */ + void updateBatchScore(List personals); + + void fixed(); + +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskPersonalTagService.java b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalTagService.java new file mode 100644 index 0000000..a5cf917 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/RiskPersonalTagService.java @@ -0,0 +1,21 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; + +import java.util.List; + +/** + * @author kami on 2024-11-09 16:08:25 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskPersonalTagService { + /** + * 新增标签入库 + * @param tags 标签集合 + * @param bitTag 大标签 + */ + void saveBatchTag(List tags, String bitTag); + +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskScoreRuleService.java b/src/main/java/com/biutag/supervisiondata/service/RiskScoreRuleService.java new file mode 100644 index 0000000..f62f6c2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/RiskScoreRuleService.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata.service; + +import java.util.List; + +/** + * @author kami on 2024-11-18 19:38:02 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskScoreRuleService { + + void runScore(List idCodes); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java b/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java new file mode 100644 index 0000000..7990f02 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/RiskTaskService.java @@ -0,0 +1,50 @@ +package com.biutag.supervisiondata.service; + +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; + +import java.util.List; +import java.util.Map; + +/** + * @author kami on 2024-11-11 14:14:32 + * @version 0.0.1 + * @since 1.8 + */ +public interface RiskTaskService { + + /** + * 信息模型任务 + * @param domain 参数 + */ + void infoModelTask(TaskParamDomain domain); + /** + * 学历模型任务 + * @param domain 参数 + */ + void eduModelTask(TaskParamDomain domain); + + /** + * 违法人员和执法办案警情 + * @param domain 参数 + */ + void caseModelTask(TaskParamDomain domain); + /** + * (三)行为因素 + * @param domain 参数 + */ + void behavior(TaskParamDomain domain); + + /** + * 风险地区 + * @param domain 参数 + */ + void riskAreaModelTask(TaskParamDomain domain); + + /** + * 高战斗人群 + * @param domain 参数 + */ + void heightFight(TaskParamDomain domain); +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/DictServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/DictServiceImpl.java new file mode 100644 index 0000000..9e321ef --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/DictServiceImpl.java @@ -0,0 +1,38 @@ +package com.biutag.supervisiondata.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDXL; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.repository.GBaseZDXLRepository; +import com.biutag.supervisiondata.service.DictService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-11-15 17:24:40 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class DictServiceImpl implements DictService { + + private final GBaseZDXLRepository zdxlRepository; + + @Override + public Map syncPointType() { + List xlList = zdxlRepository.list(new LambdaQueryWrapper() + .select(GBaseZDXL::getId, GBaseZDXL::getDefine, GBaseZDXL::getFjdid)); + Map map = xlList.stream().collect(Collectors.toMap(GBaseZDXL::getId, Function.identity(), (oldValue, newValue) -> newValue)); + return map; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java new file mode 100644 index 0000000..f82bb72 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseBAServiceImpl.java @@ -0,0 +1,195 @@ +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.constants.Default; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseBAXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseBAYJ; +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.repository.GBaseBAXXRepository; +import com.biutag.supervisiondata.repository.GBaseBAYJRepository; +import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository; +import com.biutag.supervisiondata.repository.RiskTaskRepository; +import com.biutag.supervisiondata.service.GBaseBAService; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +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.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-11-12 18:12:30 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class GBaseBAServiceImpl implements GBaseBAService { + + private final GBaseBAXXRepository gBaseBAXXRepository; + + private final GBaseBAYJRepository gBaseBAYJRepository; + + private final RiskTaskRepository riskTaskRepository; + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final RiskModelTaskClueRepository clueRepository; + + @Override + public void baModelTask(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 37); + riskTaskRepository.save(task); + + List xxList = getXX(domain); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + + Map> map = xxList.stream().collect(Collectors.groupingBy(GBaseBAXX::getSfzhm)); + Map personMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + log.info("开干"); + for (Map.Entry> entry : map.entrySet()) { + GBaseBAXX tmp = entry.getValue().getFirst(); + if (tmp.getRyztdm() == null) { + continue; + } + if(entry.getValue() ==null || entry.getValue().isEmpty()) { + continue; + } + LocalDate date; + try { + if (tmp.getRzsj().indexOf("-") != -1) { + date = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); + } else if(tmp.getRzsj().indexOf(".") != -1) { + date = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy.M.d")); + } else { + date = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy年MM月dd日")); + } + } catch (Exception e) { + date = LocalDate.of(1991, 1, 2); + } + + for (GBaseBAXX gBaseBAXX : entry.getValue()) { + LocalDate t; + try { + if (gBaseBAXX.getRzsj().indexOf("-") != -1) { + t = LocalDate.parse(gBaseBAXX.getRzsj(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); + } else if(tmp.getRzsj().indexOf(".") != -1) { + t = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy.M.d")); + } else { + t = LocalDate.parse(tmp.getRzsj(), DateTimeFormatter.ofPattern("yyyy年MM月dd日")); + } + } catch (Exception e) { + t = LocalDate.of(1991, 1, 1); + } + if (t.isAfter(date)) { + tmp = gBaseBAXX; + date = t; + } + } + RiskModelTaskClue old = oldMap.get(tmp.getSfzhm()); + if (tmp.getRyztdm().equals("1")) { + // 离职 + if (old != null) { + RiskModelTaskClue clue = new RiskModelTaskClue(); + clue.setId(old.getId()); + clue.setDel(1); + toUpdate.add(clue); + } + continue; + } + if (old == null) { + LocalDateTime eventTime = null; + if(date.isAfter(LocalDate.of(1991, 1, 5))) { + eventTime = LocalDateTime.of(date.getYear(), date.getMonth(),date.getDayOfMonth(),0 ,0,0); + } + RiskModelTaskClue clue = createClue(task.getModelId(), 2, personMap.get(tmp.getSfzhm()), task.getId(), Default.BA_TAG, "发现该人员正任职保安人员,属于特种职业,增加风险分2分。",eventTime); + toInsert.add(clue); + } + } + log.info("数据库操作阶段"); + // 新增 + if (!toInsert.isEmpty()) { + riskModelTaskClueService.saveClues(toInsert); + } + // 修改 + if (!toUpdate.isEmpty()) { + log.info("修改线索条数 | {}", toUpdate.size()); + clueRepository.updateBatchById(toUpdate); + } + + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(toUpdate.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(updateTask); + } + + RiskModelTaskClue createClue(Integer modelId, Integer score, RiskPersonal person, Integer taskId, String reason, String data, LocalDateTime eventTime) { + RiskModelTaskClue clue = new RiskModelTaskClue(); + clue.setModelId(modelId); + clue.setScore(score); + clue.setName(person.getName()); + clue.setIdCode(person.getIdCode()); + clue.setTaskId(taskId); + clue.setRiskReason(reason); + clue.setData(data); + clue.setCreateTime(LocalDateTime.now()); + clue.setUpdateTime(LocalDateTime.now()); + clue.setEventTime(eventTime); + return clue; + } + + List getXX(TaskParamDomain domain) { + List list = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + list.addAll(gBaseBAXXRepository.list(new LambdaQueryWrapper() + .select(GBaseBAXX::getXm, GBaseBAXX::getSfzhm, GBaseBAXX::getZw, GBaseBAXX::getRyztmc, GBaseBAXX::getRyztdm, GBaseBAXX::getRzsj) + .in(GBaseBAXX::getSfzhm, idCard))); + } + return list; + } + + List getYJ(TaskParamDomain domain) { + List list = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + List tmp = gBaseBAYJRepository.list(new LambdaQueryWrapper() + .select(GBaseBAYJ::getXm, GBaseBAYJ::getSfzhm, GBaseBAYJ::getZw, GBaseBAYJ::getRyztmc, GBaseBAYJ::getRyztmc, GBaseBAYJ::getRzsj) + .in(GBaseBAYJ::getSfzhm, idCard)); + for (GBaseBAYJ gBaseBAYJ : tmp) { + + } + } + return list; + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java new file mode 100644 index 0000000..9581306 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseJJDServiceImpl.java @@ -0,0 +1,268 @@ +package com.biutag.supervisiondata.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.repository.GBaseJJDRepository; +import com.biutag.supervisiondata.repository.GBaseSYRKXXRepository; +import com.biutag.supervisiondata.service.GBaseJJDService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.util.AgeUtil; +import com.biutag.supervisiondata.util.PatternUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-09 14:48:55 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class GBaseJJDServiceImpl implements GBaseJJDService { + + private final GBaseJJDRepository gBaseJJDRepository; + + private final GBaseSYRKXXRepository gBaseSYRKXXRepository; + + private final RiskPersonalService riskPersonalService; + + @Override + public void pullAndSave(LocalDateTime start, LocalDateTime end) { + // 获取接警数据 + List result = gBaseJJDRepository.getBaseMapper().selectDataToRisk(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + log.info("总条数 | {}条", result.size()); + + List personals = new ArrayList<>(); + // 身份证和手机号都为空数量 + int noneCount = 0; + // 未核实到信息数据 + int infoCount = 0; + + int ok = 0; + // 过滤数据 + List idCodes1 = new ArrayList<>(); + List mobiles1 = new ArrayList<>(); + + Map> jjdMap = new HashMap<>(); + Map> jjdMMap = new HashMap<>(); + for (GBaseJJD item : result) { + RiskPersonal person = createPerson(item); + if(person.getIdCode() != null) { + personals.add(person); + List jjd = Optional.ofNullable(jjdMap.get(person.getIdCode())).orElse(new ArrayList<>()); + jjd.add(item); + jjdMap.put(person.getIdCode(), jjd); + idCodes1.add(person.getIdCode()); + continue; + } + String idCards = PatternUtil.takeIdCard(item.getCjqk()); + if(!idCards.isEmpty()) { + person.setIdCode(idCards); + String [] strs = idCards.split(","); + for (String s : strs) { + idCodes1.add(s); + List jjd = Optional.ofNullable(jjdMap.get(s)).orElse(new ArrayList<>()); + jjd.add(item); + jjdMap.put(person.getIdCode(), jjd); + } + } else if(item.getBjrlxdh() == null) { + noneCount++; + continue; + } else { + mobiles1.add(item.getBjrlxdh()); + List jjd = Optional.ofNullable(jjdMap.get(item.getBjrlxdh())).orElse(new ArrayList<>()); + jjd.add(item); + jjdMMap.put(item.getBjrlxdh(), jjd); + } + personals.add(person); + } + // 去重 + List idCodes2 = idCodes1.stream().distinct().collect(Collectors.toList()); + List mobiles2 = mobiles1.stream().distinct().collect(Collectors.toList()); + + // 切割 + List> idCodes = IntStream.range(0, (idCodes2.size() + 9999) / 10000) + .mapToObj(i -> idCodes2.subList(i * 10000, Math.min((i + 1) * 10000, idCodes2.size()))) + .collect(Collectors.toList()); + List> mobiles = IntStream.range(0, (mobiles2.size() + 9999) / 10000) + .mapToObj(i -> mobiles2.subList(i * 10000, Math.min((i + 1) * 10000, mobiles2.size()))) + .collect(Collectors.toList()); + // 查询数据 + log.info("开始根据身份证实用人口信息补全 =》 {}", idCodes.size()); + int count = 0; + // 身份证查到的人 + List sFms = new ArrayList<>(); + // 手机号查到的人 + List lXfs = new ArrayList<>(); + for (List idCode : idCodes) { + List list = gBaseSYRKXXRepository.list(new LambdaQueryWrapper() + .in(GBaseSYRKXX::getGmsfhm, idCode)); + sFms.addAll(list); + count++; + log.info("身份证进度 | {}", count); + } + log.info("开始根据手机号实用人口信息补全 =》 {}", mobiles.size()); + for (List mobile : mobiles) { + List list = gBaseSYRKXXRepository.list(new LambdaQueryWrapper() + .in(GBaseSYRKXX::getLxdh, mobile)); + lXfs.addAll(list); + count++; + log.info("手机号进度 | {}", count); + } + Map idCodeMap = sFms.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + Map> mobileMap = lXfs.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); + // 开始补全 + LocalDate today = LocalDate.now(); + GBaseSYRKXX info = null; + List xxxInfo; + for (RiskPersonal personal : personals) { + if(personal.getIdCode() != null) { + // 多张身份证存入异常信息 + String [] strs = personal.getIdCode().split(","); + personal.setIdCode(null); + xxxInfo = new ArrayList<>(); + for (String str : strs) { + info = idCodeMap.get(str); + if(info != null) { + xxxInfo.add(info); + } + } + if(strs.length ==1 && !xxxInfo.isEmpty()) { + info = xxxInfo.getFirst(); + } else { + info = compare(xxxInfo, personal.getName()); + } + if(info == null) { + personal.setErrorMsg(personal.getIdCode()); + } + } + if(personal.getMobileNumber() != null && info == null) { + xxxInfo = mobileMap.get(personal.getMobileNumber()); + if(xxxInfo == null || xxxInfo.isEmpty()) { + infoCount ++; + } else { + info = compare(xxxInfo, personal.getName()); + } + if(info == null && xxxInfo != null) { + StringBuilder tmp = new StringBuilder(); + for (GBaseSYRKXX gBaseSYRKXX : xxxInfo) { + if(gBaseSYRKXX.getGmsfhm()!= null) { + tmp.append(gBaseSYRKXX.getGmsfhm()).append("\n"); + } + } + personal.setErrorMsg(tmp.substring(0, tmp.length()-1)); + } + } + if(info != null) { + personal.setName(info.getXm()); + personal.setIdCode(info.getGmsfhm()); + personal.setMobileNumber(info.getLxdh()); + personal.setGender(info.getXbdm()); + personal.setAge(Optional.ofNullable(AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); + if(personal.getAge() == null ){ + try { + LocalDate localDate = info.getCsrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + int age = localDate.until(today).getYears(); + personal.setAge(age); + } catch (Exception e) { + log.error("发现一例没有出生日期"); + personal.setAge(-1); + } + } + ok++; + } + } + for (RiskPersonal personal : personals) { + List jjds = jjdMap.get(personal.getIdCode()); + if(jjds == null) { + jjds = jjdMMap.get(Optional.ofNullable(personal.getMobileNumber()).orElse("")); + } + if(jjds == null) { + continue; + } + GBaseJJD tmp = null; + for (GBaseJJD jjd : jjds) { + if(tmp == null) { + tmp = jjd; + continue; + } + try { + LocalDateTime time = jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + if(time.isAfter(jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())) { + tmp = jjd; + } + } catch (Exception e) { + log.info("报警时间处理异常"); + } + } + if(tmp == null) { + continue; + } + personal.setControlDepartId(tmp.getGxdwdm()); + personal.setControlDepartName(tmp.getGxdwmc()); + // 如果有报警时间,暂时填报警时间 处理标签回正 + try { + LocalDateTime time = tmp.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + personal.setCreateTime(time); + personal.setControlTime(time); + } catch (Exception e) { + log.info("报警时间处理异常"); + } + } + riskPersonalService.formatAndSave(personals, Default.BIG_TAG_JJD); + log.info("未提取信息人数: {}\n异常信息人数: {}\nok人数: {}", noneCount, infoCount, ok); + } + + /** + * 多身份证对比名称 + * @param infos 信息 + * @param name 名称 + * @return 正确信息 + */ + GBaseSYRKXX compare(List infos, String name) { + GBaseSYRKXX info = null; + for (GBaseSYRKXX gBaseSYRKXX : infos) { + if(gBaseSYRKXX.getXm().equals(name)) { + info=gBaseSYRKXX; + break; + } + } + return info; + } + + RiskPersonal createPerson(GBaseJJD item) { + RiskPersonal person = new RiskPersonal(); + person.setName(item.getBjrxm()); + person.setMobileNumber(item.getBjrlxdh()); + person.setControlDepartId(item.getGxdwdm()); + person.setControlDepartName(item.getGxdwmc()); + person.setGender(item.getBjrxb()); + person.setIdCode(item.getBjrzjhm()); + // 如果有报警时间,暂时填报警时间 处理标签回正 + try { + LocalDateTime time = item.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + person.setCreateTime(time); + person.setControlTime(time); + } catch (Exception e) { + log.info("报警时间处理异常"); + } + // 这里暂时将小标签放到预览属性 处理标签回正 + person.setTags(item.getJqxzmc()); + return person; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java new file mode 100644 index 0000000..455f4c1 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/GBaseSHRWFRServiceImpl.java @@ -0,0 +1,281 @@ +package com.biutag.supervisiondata.service.impl; + +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.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseSHRXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.repository.GBaseAJJBXXRepository; +import com.biutag.supervisiondata.repository.GBaseSHRXXRepository; +import com.biutag.supervisiondata.repository.GBaseSYRKXXRepository; +import com.biutag.supervisiondata.repository.GBaseWFRXXRepository; +import com.biutag.supervisiondata.service.GBaseSHRWFRService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.util.AgeUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-10 15:24:52 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class GBaseSHRWFRServiceImpl implements GBaseSHRWFRService { + + private final GBaseSHRXXRepository shrxxRepository; + + private final GBaseWFRXXRepository wfrxxRepository; + + private final GBaseSYRKXXRepository gBaseSYRKXXRepository; + + private final GBaseAJJBXXRepository ajjbxxRepository; + + private final RiskPersonalService riskPersonalService; + + @Override + public void pullAndSave(LocalDateTime start, LocalDateTime end) { + List shrList = new ArrayList<>(); + List wxrList = new ArrayList<>(); + + // 统计出所有的案件编号批量查询 + List ajNos = new ArrayList<>(); + // 手机号 + List mobiles = new ArrayList<>(); + // 身份证 + List idCards = new ArrayList<>(); + // 分别拉取受害人和违法人信息 + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> { + List shrTmp = shrxxRepository.getBaseMapper().selectDataToRisk(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + for (GBaseSHRXX gBaseSHRXX : shrTmp) { + if(gBaseSHRXX.getGmsfhm() != null) { + idCards.add(gBaseSHRXX.getGmsfhm()); + } else if(gBaseSHRXX.getLxdh() != null) { + mobiles.add(gBaseSHRXX.getLxdh()); + } else { + continue; + } + shrList.add(gBaseSHRXX); + ajNos.add(gBaseSHRXX.getAjbh()); + } + }), + CompletableFutureUtil.runSyncObject(() -> { + List wfrTmp = wfrxxRepository.getBaseMapper().selectDataToRisk(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + for (GBaseWFRXX gBaseWFRXX : wfrTmp) { + if(gBaseWFRXX.getZjhm() != null) { + idCards.add(gBaseWFRXX.getZjhm()); + } else if(gBaseWFRXX.getLxdh() != null) { + mobiles.add(gBaseWFRXX.getLxdh()); + } else { + continue; + } + wxrList.add(gBaseWFRXX); + ajNos.add(gBaseWFRXX.getAjbh()); + } + }) + ).join(); + + List distinctAJ = ajNos.stream().distinct().toList(); + // 切割 每次查10000条 + List> ajs = IntStream.range(0, (distinctAJ.size() + 9999) / 10000) + .mapToObj(i -> distinctAJ.subList(i * 10000, Math.min((i + 1) * 10000, distinctAJ.size()))) + .toList(); + + List idCards2 = idCards.stream().distinct().toList(); + List mobiles2 = mobiles.stream().distinct().toList(); + + List xxList = new ArrayList<>(); + for (List aj : ajs) { + xxList.addAll(ajjbxxRepository.list(new LambdaQueryWrapper() + .select(GBaseAJJBXX::getAjbh, GBaseAJJBXX::getBadwidmc, GBaseAJJBXX::getBadwiddm, GBaseAJJBXX::getBarq) + .in(GBaseAJJBXX::getAjbh, aj))); + } + // 案件转map方便提取 + Map xxMap = xxList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue)); + + // 人员信息查询 + // 身份证查到的人 + List sFms = new ArrayList<>(); + // 手机号查到的人 + List lXfs = new ArrayList<>(); + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> { + List> idCode = IntStream.range(0, (idCards2.size() + 9999) / 10000) + .mapToObj(i -> idCards2.subList(i * 10000, Math.min((i + 1) * 10000, idCards2.size()))) + .toList(); + int count = 0; + log.info("身份证开始: {}", idCode.size()); + for (List arr : idCode) { + List list = gBaseSYRKXXRepository.list(new LambdaQueryWrapper() + .in(GBaseSYRKXX::getGmsfhm, arr)); + sFms.addAll(list); + count++; + log.info("身份证进度 | {}", count); + } + }), + CompletableFutureUtil.runSyncObject(() -> { + List> mobile = IntStream.range(0, (mobiles2.size() + 9999) / 10000) + .mapToObj(i -> mobiles2.subList(i * 10000, Math.min((i + 1) * 10000, mobiles2.size()))) + .toList(); + int count = 0; + log.info("手机号开始: {}", mobile.size()); + for (List arr : mobile) { + List list = gBaseSYRKXXRepository.list(new LambdaQueryWrapper() + .in(GBaseSYRKXX::getLxdh, arr)); + lXfs.addAll(list); + count++; + log.info("手机号进度 | {}", count); + } + }) + ).join(); + + Map idCodeMap = sFms.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + Map> mobileMap = lXfs.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); + List personals = new ArrayList<>(); + + Map> shrMap = new HashMap<>(); + for (GBaseSHRXX gBaseSHRXX : shrList) { + GBaseAJJBXX ajjbxx = xxMap.get(gBaseSHRXX.getAjbh()); + if(ajjbxx == null) { + continue; + } + GBaseSYRKXX rkxx = null; + if(gBaseSHRXX.getGmsfhm() != null) { + rkxx = idCodeMap.get(gBaseSHRXX.getGmsfhm()); + } + if(gBaseSHRXX.getLxdh() != null && rkxx == null) { + List rkxxList = mobileMap.get(gBaseSHRXX.getLxdh()); + if(rkxxList != null) { + rkxx = compare(rkxxList, gBaseSHRXX.getXm()); + } + } + if(rkxx != null) { + RiskPersonal person = createPerson(Default.SHR_TAG, ajjbxx, rkxx); + if(person.getIdCode() != null) { + List tmp = Optional.ofNullable(shrMap.get(person.getIdCode())).orElse(new ArrayList<>()); + tmp.add(ajjbxx); + shrMap.put(person.getIdCode(), tmp); + } + personals.add(person); + } + } + for (GBaseWFRXX gBaseWFRXX : wxrList) { + GBaseAJJBXX ajjbxx = xxMap.get(gBaseWFRXX.getAjbh()); + if(ajjbxx == null) { + continue; + } + GBaseSYRKXX rkxx = null; + if(gBaseWFRXX.getZjhm() != null) { + rkxx = idCodeMap.get(gBaseWFRXX.getZjhm()); + } + if(gBaseWFRXX.getLxdh() != null && rkxx == null) { + List rkxxList = mobileMap.get(gBaseWFRXX.getLxdh()); + if(rkxxList != null) { + rkxx = compare(rkxxList, gBaseWFRXX.getXm()); + } + } + if(rkxx != null) { + RiskPersonal person = createPerson(Default.WFR_TAG, ajjbxx, rkxx); + List tmp = Optional.ofNullable(shrMap.get(person.getIdCode())).orElse(new ArrayList<>()); + tmp.add(ajjbxx); + shrMap.put(person.getIdCode(), tmp); + personals.add(person); + } + } + for (RiskPersonal personal : personals) { + List tmp = shrMap.get(personal.getIdCode()); + if(tmp == null || tmp.isEmpty()) { + continue; + } + GBaseAJJBXX jjx = null; + for (GBaseAJJBXX gBaseAJJBXX : tmp) { + if(jjx == null) { + jjx = gBaseAJJBXX; + continue; + } + try { + LocalDateTime time = gBaseAJJBXX.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + if(time.isAfter(jjx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime())) { + jjx = gBaseAJJBXX; + } + } catch (Exception e) { + log.info("报警时间处理异常"); + } + } + if(jjx == null) { + continue; + } + personal.setControlDepartId(jjx.getBadwiddm()); + personal.setControlDepartName(jjx.getBadwidmc()); + // 如果有报警时间,暂时填报警时间 处理标签回正 + try { + LocalDateTime time = jjx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + personal.setCreateTime(time); + personal.setControlTime(time); + } catch (Exception e) { + log.info("报警时间处理异常"); + } + } + log.info("人数: {}", personals.size()); + riskPersonalService.formatAndSave(personals, Default.BIG_TAG_SHWFR); + } + + /** + * 多身份证对比名称 + * @param infos 信息 + * @param name 名称 + * @return 正确信息 + */ + GBaseSYRKXX compare(List infos, String name) { + GBaseSYRKXX info = null; + for (GBaseSYRKXX gBaseSYRKXX : infos) { + if(gBaseSYRKXX.getXm().equals(name)) { + info=gBaseSYRKXX; + break; + } + } + return info; + } + + RiskPersonal createPerson(String tag, GBaseAJJBXX ajjbxx, GBaseSYRKXX rkxx) { + RiskPersonal personal = new RiskPersonal(); + personal.setIdCode(rkxx.getGmsfhm()); + personal.setName(rkxx.getXm()); + personal.setGender(rkxx.getXbdm()); + personal.setMobileNumber(rkxx.getLxdh()); + personal.setControlDepartId(ajjbxx.getBadwiddm()); + personal.setControlDepartName(ajjbxx.getBadwidmc()); + // 如果有报警时间,暂时填报警时间 处理标签回正 + try { + LocalDateTime time = ajjbxx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + personal.setCreateTime(time); + personal.setControlTime(time); + } catch (Exception e) { + log.info("报警时间处理异常"); + } + personal.setAge(Optional.ofNullable(AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); + // 这里暂时将小标签放到预览属性 处理标签回正 + personal.setTags(tag); + return personal; + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java new file mode 100644 index 0000000..f374409 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/HabitServiceImpl.java @@ -0,0 +1,252 @@ +package com.biutag.supervisiondata.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.pojo.ClueData; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +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.RiskTask; +import com.biutag.supervisiondata.repository.*; +import com.biutag.supervisiondata.service.HabitService; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import com.biutag.supervisiondata.service.RiskPersonalControlRecordService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.util.BhUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-13 11:11:56 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class HabitServiceImpl implements HabitService { + + private final GBaseAJJBXXRepository gBaseAJJBXXRepository; + + private final GBaseWFRXXRepository gBaseWFRXXRepository; + + private final RiskTaskRepository riskTaskRepository; + + private final RiskPersonalControlRecordService recordRepository; + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final RiskPersonalService riskPersonalService; + + private final RiskPersonalControlRecordService controlRecordService; + + private final RiskPersonalRepository personalRepository; + + @Override + public void habitModelTask(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 36); + riskTaskRepository.save(task); + Date d = Date.from(LocalDateTime.of(2024, 1, 1, 0, 0, 0).atZone(ZoneId.systemDefault()).toInstant()); + List ajjbxxList = gBaseAJJBXXRepository.list(new LambdaQueryWrapper() + .select(GBaseAJJBXX::getAjbh, GBaseAJJBXX::getBadwidmc, GBaseAJJBXX::getBadwiddm, GBaseAJJBXX::getBarq, GBaseAJJBXX::getAjlbmc) + .ge(GBaseAJJBXX::getBarq, d)); + log.info("总案件数:{}", ajjbxxList.size()); + // 过滤案件类别 + List targetAjList = new ArrayList<>(); + List ajNos = new ArrayList<>(); + for (GBaseAJJBXX gBaseAJJBXX : ajjbxxList) { + if (gBaseAJJBXX.getAjlbmc() == null) { + continue; + } + if (gBaseAJJBXX.getAjlbmc().contains("酒后驾驶") || gBaseAJJBXX.getAjlbmc().contains("赌博") + || gBaseAJJBXX.getAjlbmc().contains("嫖娼") || gBaseAJJBXX.getAjlbmc().contains("招嫖") + || gBaseAJJBXX.getAjlbmc().contains("嫖宿")) { + if (gBaseAJJBXX.getAjlbmc().contains("幼女")) { + continue; + } + targetAjList.add(gBaseAJJBXX); + ajNos.add(gBaseAJJBXX.getAjbh()); + } + } + log.info("共计案件:{}条", ajNos.size()); + List> ajNo = IntStream.range(0, (ajNos.size() + 9999) / 10000) + .mapToObj(i -> ajNos.subList(i * 10000, Math.min((i + 1) * 10000, ajNos.size()))) + .toList(); + + List wfrList = new ArrayList<>(); + for (List aj : ajNo) { + wfrList.addAll(gBaseWFRXXRepository.list(new LambdaQueryWrapper() + .select(GBaseWFRXX::getAjbh, GBaseWFRXX::getZjhm) + .in(GBaseWFRXX::getAjbh, aj))); + } + // 违法信息 + Map> wfrMap = wfrList.stream().filter(it -> it.getZjhm() != null).collect(Collectors.groupingBy(GBaseWFRXX::getZjhm)); + // 案件信息 + Map ajMap = targetAjList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue)); + + List oldList = Optional.ofNullable(domain.getMap().get(36)).orElse(new ArrayList<>()); + // 人员的旧线索 + Map> clueMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + + log.info("开始遍历人员"); + List clues; + Map clueTmpMap; + List dataList; + // 新增数据源 + Map> insertDataMap = new HashMap<>(); + // 管控记录需要的id + List controlIdCodes = new ArrayList<>(); + log.info("map大小:{}", wfrMap.size()); + for (RiskPersonal person : domain.getPersons()) { + List wfTmp = wfrMap.get(person.getIdCode()); + if (wfTmp == null) { + continue; + } + // 该人员旧的线索 + clues = Optional.ofNullable(clueMap.get(person.getIdCode())).orElse(new ArrayList<>()); + clueTmpMap = clues.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (oldValue, newValue) -> newValue)); + dataList = new ArrayList<>(); + for (GBaseWFRXX gBaseWFRXX : wfTmp) { + GBaseAJJBXX aj = ajMap.get(gBaseWFRXX.getAjbh()); + if (aj == null) { + continue; + } + // 通过案件编号获取查看是否有入库记录 + RiskModelTaskClue clue = clueTmpMap.get(BhUtil.ajBh(aj.getAjbh())); + if (clue != null) { + continue; + } + // 没有旧记录 + ClueData data = ClueData.builder() + .id(aj.getAjbh()) + .departId(aj.getBadwiddm()) + .departName(aj.getBadwidmc()) + .name(person.getName()) + .idCode(person.getIdCode()) + .tag(aj.getAjlbmc()) + .personId(person.getId()) + .sourceData("结合案件信息和违法人信息相关数据,发现该人员有:"+aj.getAjlbmc()+"类型的案件,案件编号为:"+aj.getAjbh()+",属于存在不良嗜好,增加风险分1分(存在涉赌、涉酒、涉黄不良嗜好的,每项+1分,最高3分)") + .build(); + try { + data.setEventTime(aj.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.error("报案日期转LocalDateTime异常"); + } + dataList.add(data); + } + if (!dataList.isEmpty()) { + insertDataMap.put(person.getIdCode(), dataList); + controlIdCodes.add(person.getIdCode()); + } + } + // 创建新数据 + List toInsert = new ArrayList<>(); + List toUpdatePersonal = new ArrayList<>(); + List toInsertRecord = new ArrayList<>(); + List oldRecords = recordRepository.list(new LambdaQueryWrapper() + .select(RiskPersonalControlRecord::getIdCode, RiskPersonalControlRecord::getControlTime) + .in(RiskPersonalControlRecord::getIdCode, controlIdCodes)); + + Map> oldRecordMap = oldRecords.stream().collect(Collectors.groupingBy(RiskPersonalControlRecord::getIdCode)); + // 遍历生成实体 + for (Map.Entry> entry : insertDataMap.entrySet()) { + List records = Optional.ofNullable(oldRecordMap.get(entry.getKey())).orElse(new ArrayList<>()); + ClueData clue = entry.getValue().getFirst(); + for (ClueData clueData : entry.getValue()) { + // 理论上说之前过滤过clue,不需要再判断control是否存在了 + toInsertRecord.add(createControlRecord(clueData)); + toInsert.add(createClue(task.getModelId(), 1, task.getId(), clueData)); + } + // 修改人员当前管控单位 + if(!records.isEmpty()) { + RiskPersonalControlRecord last = null; + for (RiskPersonalControlRecord record : records) { + if(last == null) { + last = record; + continue; + } + if(last.getControlTime().isBefore(record.getControlTime())) { + last = record; + } + } + if(last != null && last.getId() == null) { + RiskPersonal person = new RiskPersonal(); + person.setId(clue.getPersonId()); + person.setControlDepartId(last.getControlDepartId()); + person.setControlDepartName(last.getControlDepartName()); + person.setControlTime(last.getControlTime()); + toUpdatePersonal.add(person); + } + } + } + log.info("开始进行数据库操作"); + if(!toInsert.isEmpty()) { + riskModelTaskClueService.saveClues(toInsert); + } + if(!toInsertRecord.isEmpty()) { + controlRecordService.batchInsert(toInsertRecord); + } + if(!toUpdatePersonal.isEmpty()) { + log.info("修改人数: {}", toUpdatePersonal.size()); + personalRepository.updateBatchById(toUpdatePersonal); + } + + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(toUpdatePersonal.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(updateTask); + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + RiskPersonalControlRecord createControlRecord(ClueData data) { + RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); + controlRecord.setName(data.getName()); + controlRecord.setIdCode(data.getIdCode()); + controlRecord.setCreateTime(LocalDateTime.now()); + controlRecord.setControlTime(data.getEventTime()); + controlRecord.setControlDepartId(data.getDepartId()); + controlRecord.setControlDepartName(data.getDepartName()); + controlRecord.setControlTag(data.getTag()); + controlRecord.setCaseId(BhUtil.ajBh(data.getId())); + return controlRecord; + } + + 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; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java new file mode 100644 index 0000000..c3a4b9d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/MarriageServiceImpl.java @@ -0,0 +1,192 @@ +package com.biutag.supervisiondata.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.pojo.ClueData; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseHY; +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.repository.GBaseHYRepository; +import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository; +import com.biutag.supervisiondata.repository.RiskTaskRepository; +import com.biutag.supervisiondata.service.MarriageService; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import com.biutag.supervisiondata.util.BhUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-11-13 15:20:43 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class MarriageServiceImpl implements MarriageService { + + private final RiskTaskRepository riskTaskRepository; + + private final RiskModelTaskClueRepository clueRepository; + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final GBaseHYRepository hyRepository; + + @Override + public void marriageModelTask(TaskParamDomain domain) { + // 婚姻不用管管控 + // clue 应该要看结婚状态 + RiskTask task = createTask(domain.getPersons().size(), 39); + riskTaskRepository.save(task); + 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); + } + + // 每个人应该是最新的婚姻登记为标准 + Map> manMap = new HashMap<>(); + Map> femanMap = new HashMap<>(); + for (GBaseHY gBaseHY : hyList) { + List tmp = Optional.ofNullable(manMap.get(gBaseHY.getNfsfhm())).orElse(new ArrayList<>()); + tmp.add(gBaseHY); + manMap.put(gBaseHY.getNfsfhm(), tmp); + + List tmp2 = Optional.ofNullable(femanMap.get(gBaseHY.getNvfsfhm())).orElse(new ArrayList<>()); + tmp2.add(gBaseHY); + femanMap.put(gBaseHY.getNvfsfhm(), tmp2); + } + + log.info("男性数据:{}", manMap.size()); + log.info("女性数据:{}", femanMap.size()); + // 旧线索 + List oldClues = Optional.ofNullable(domain.getMap().get(39)).orElse(new ArrayList<>()); + Map oldClueMap = oldClues.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + // 遍历了 + List toInsertData = new ArrayList<>(); + List toUpdateData = new ArrayList<>(); + for (RiskPersonal person : domain.getPersons()) { + List tmpList = manMap.get(person.getIdCode()); + if(tmpList == null) { + tmpList = femanMap.get(person.getIdCode()); + } + if(tmpList == null) { + continue; + } + // 找到最新的婚姻登记 + GBaseHY last = null; + for (GBaseHY gBaseHY : tmpList) { + if(gBaseHY.getDjrq() == null) { + log.error("没有登记日期"); + continue; + } + if(last == null) { + last = gBaseHY; + continue; + } + if(gBaseHY.getDjrq().getTime() > last.getDjrq().getTime()) { + last = gBaseHY; + } + } + count++; + // 看看是不是离婚 + if(last == null || last.getYwlxdmdm() == null) { + continue; + } + if(last.getYwlxdmdm().toUpperCase().contains("IB") || last.getYwlxdmdm().toUpperCase().contains("ICB")) { + // 离婚 如果旧数据不存在就要新增 + RiskModelTaskClue clue = oldClueMap.get(person.getIdCode()); + if(clue == null) { + ClueData data = ClueData.builder() + .personId(person.getId()) + .tag(last.getYwlxdmmc()) + .id(last.getXlzjdjzh()) + .idCode(person.getIdCode()) + .name(person.getName()) + .sourceData("根据该人员最新的婚姻登记信息,发现该人员登记为离婚,存在感情失意的可能,增加风险分3分") + .build(); + data.setEventTime(last.getDjrq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + toInsertData.add(data); + } + } else if(last.getYwlxdmdm().toUpperCase().contains("IA") || last.getYwlxdmdm().toUpperCase().contains("ICA")) { + // 结婚 如果旧数据存在就要修改为0 + RiskModelTaskClue clue = oldClueMap.get(person.getIdCode()); + if(clue != null) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(clue.getId()); + update.setDel(1); + toUpdateData.add(update); + } + } + } + List toInsert = new ArrayList<>(); + log.info("插入数据条数: {}", toInsertData.size()); + for (ClueData toInsertDatum : toInsertData) { + toInsert.add(createClue(task.getModelId(), 3, task.getId(), toInsertDatum)); + } + + if(!toInsertData.isEmpty()) { + riskModelTaskClueService.saveClues(toInsert); + } + if(!toUpdateData.isEmpty()) { + log.info("修改线索 | {}", toUpdateData.size()); + clueRepository.updateBatchById(toUpdateData); + } + + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(toUpdateData.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(updateTask); + + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + 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; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java new file mode 100644 index 0000000..ee74460 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/NoControlServiceImpl.java @@ -0,0 +1,302 @@ +package com.biutag.supervisiondata.service.impl; + +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.*; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; +import com.biutag.supervisiondata.pojo.entity.mine.RiskTask; +import com.biutag.supervisiondata.repository.GBaseZDRYRepository; +import com.biutag.supervisiondata.repository.RiskPersonalRepository; +import com.biutag.supervisiondata.repository.RiskTaskRepository; +import com.biutag.supervisiondata.service.NoControlService; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.service.RiskPersonalTagService; +import com.biutag.supervisiondata.util.AgeUtil; +import com.biutag.supervisiondata.util.BhUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-11-18 14:06:17 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class NoControlServiceImpl implements NoControlService { + + private final GBaseZDRYRepository zdryRepository; + + private final RiskTaskRepository riskTaskRepository; + + private final RiskPersonalTagService tagService; + + private final RiskPersonalRepository personalRepository; + + private final RiskModelTaskClueService clueService; + + @Override + public void syncNoControlData(TaskParamDomain domain) { + // 婚姻不用管管控 + // clue 应该要看结婚状态 + RiskTask task = createTask(domain.getPersons().size(), 45); + riskTaskRepository.save(task); + RiskTask task2 = createTask(domain.getPersons().size(), 47); + riskTaskRepository.save(task2); + + List clueData = new ArrayList<>(); + Map idCodes = new HashMap<>(); + Map mobiles = new HashMap<>(); + for (RiskPersonal person : domain.getPersons()) { + idCodes.put(person.getIdCode(), person); + mobiles.put(person.getMobileNumber(), person); + } + + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> clueData.addAll(crazyControl(idCodes, mobiles))), + CompletableFutureUtil.runSyncObject(() -> clueData.addAll(violenceControl(idCodes))), + CompletableFutureUtil.runSyncObject(() -> clueData.addAll(zyControl(idCodes))), + CompletableFutureUtil.runSyncObject(() -> clueData.addAll(crazyLevelThreeControl(idCodes, mobiles))) + ).join(); + List tags = new ArrayList<>(); + List toUpdate = new ArrayList<>(); + List clues = new ArrayList<>(); + + for (ClueData clueDatum : clueData) { + RiskPersonal personal = idCodes.get(clueDatum.getIdCode()); + 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))); + personal.setTags(personal.getTags().concat(",".concat(Default.NO_CONTROL))); + idCodes.put(clueDatum.getIdCode(), personal); + toUpdate.add(newOne); + } + RiskPersonalTag tag = new RiskPersonalTag(); + tag.setBigTag(Default.NO_CONTROL); + tag.setTagTime(Optional.ofNullable(clueDatum.getEventTime()).orElse(LocalDateTime.now())); + tag.setName(clueDatum.getName()); + tag.setIdCode(clueDatum.getIdCode()); + tag.setSmallTag(clueDatum.getTag()); + tag.setCreateTime(LocalDateTime.now()); + tags.add(tag); + if(clueDatum.getTag().equals("神疾病三级以上人员管控不到位")) { + clues.add(createClue(task2.getModelId(), 3, task.getId(), clueDatum)); + } else { + clues.add(createClue(task.getModelId(), 5, task.getId(), clueDatum)); + } + + } + if(!tags.isEmpty()) { + tagService.saveBatchTag(tags, Default.NO_CONTROL); + } + if(!toUpdate.isEmpty()) { + log.info("修改人数:{}", toUpdate.size()); + personalRepository.updateBatchById(toUpdate); + } + if(!clues.isEmpty()) { + clueService.saveClues(clues); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(clues.size()); + updateTask.setUpdateSize(toUpdate.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(updateTask); + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + 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 crazyControl(Map idCodes, Map mobiles) { + // 精神病人属于重点人员,发现多起警情 疑似存在管控不到位的现象 + List extremeList = zdryRepository.getBaseMapper().syncPointNoControlCrazy(); + List clueData = new ArrayList<>(); + for (Extreme extreme : extremeList) { + RiskPersonal person = null; + if (extreme.getBjrzjhm() != null) { + person = idCodes.get(extreme.getBjrzjhm()); + } + if(person == null && extreme.getBjrlxdh() != null) { + person = mobiles.get(extreme.getBjrlxdh()); + } + if(person == null) { + continue; + } + ClueData data = ClueData.builder() + .id(BhUtil.jjdBh(extreme.getJjdbh())) + .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("")) + .departName(extreme.getGxdwmc()) + .departId(extreme.getGxdwdm()) + .build(); + try { + data.setEventTime(extreme.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.error("报案时间异常"); + } + clueData.add(data); + } + return clueData; + } + + List violenceControl(Map idCodes) { + // 故意犯罪并作出刑事判决人员(排除仍在羁押状态的)、公安机关查处吸毒人员(排除仍在羁押状态的), 发现在重点人员中 未纳入或未按要求落实双列管 + List violences = zdryRepository.getBaseMapper().syncPointNoControl(); + List clueData = new ArrayList<>(); + for (Violence violence : violences) { + RiskPersonal person = null; + if (violence.getZjhm() != null) { + person = idCodes.get(violence.getZjhm()); + } + if(person == null) { + continue; + } + ClueData data = ClueData.builder() + .id(BhUtil.ajBh(violence.getAjbh())) + .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("")) + .departName(violence.getBadwidmc()) + .departId(violence.getBadwiddm()) + .build(); + try { + data.setEventTime(violence.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.error("报案时间异常"); + } + clueData.add(data); + } + return clueData; + } + + List zyControl(Map idCodes) { + // 看守所故意犯罪刑满释放不满5年人员, 发现在重点人员中 未纳入或未按要求落实双列管 + List noControls = zdryRepository.getBaseMapper().syncPointZDRYNoControl(); + List clueData = new ArrayList<>(); + for (NoControl noControl : noControls) { + RiskPersonal person = null; + if (noControl.getIdCardNo() != null) { + person = idCodes.get(noControl.getIdCardNo()); + } + if(person == null) { + continue; + } + ClueData data = ClueData.builder() + .id(BhUtil.zyBh(noControl.getDetNo())) + .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("")) + .departName(noControl.getCaseUnit()) + .departId(noControl.getCaseUnitId()) + .build(); + try { + data.setEventTime(noControl.getOutDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.error("出监狱时间异常"); + } + clueData.add(data); + } + return clueData; + } + + List crazyLevelThreeControl(Map idCodes,Map mobiles) { + // 卫健委精神疾病三级以上人员,发现在重点人员中 未纳入或未按要求落实双列管 + List crazyLevelThreeList = zdryRepository.getBaseMapper().syncCrazyLevelThree(); + List clueData = new ArrayList<>(); + for (CrazyLevelThree crazyLevelThree : crazyLevelThreeList) { + RiskPersonal person = null; + if (crazyLevelThree.getSfzh() != null) { + person = idCodes.get(crazyLevelThree.getSfzh()); + } + if(person == null && crazyLevelThree.getLxdh() != null) { + person = mobiles.get(crazyLevelThree.getLxdh()); + } + if(person == null) { + continue; + } + clueData.add(ClueData.builder() + .id("") + .idCode(person.getIdCode()) + .name(person.getName()) + .personId(person.getId()) + .tag("神疾病三级以上人员管控不到位") + .sourceData("卫健委精神疾病三级以上人员,发现在重点人员中 未纳入或未按要求落实双列管"+Optional.ofNullable(crazyLevelThree.getTsqksm()).map(it -> ",备注:"+it).orElse("")) + .build()); + } + return clueData; + } + + RiskPersonal createPerson(String idCode, String name, String mobile, String controlDepartId, String controlDepartName, Date controlTime) { + RiskPersonal personal = new RiskPersonal(); + personal.setIdCode(idCode); + personal.setName(name); + personal.setMobileNumber(mobile); + personal.setControlDepartId(controlDepartId); + personal.setControlDepartName(controlDepartName); + // 如果有报警时间,暂时填报警时间 处理标签回正 + try { + LocalDateTime time = controlTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime(); + personal.setCreateTime(time); + personal.setControlTime(time); + } catch (Exception e) { + log.info("报警时间处理异常"); + } + try { + int gender = idCode.length() == 18 ? Integer.valueOf(idCode.substring(16, 17)) : Integer.valueOf(idCode.substring(14, 15)); + // 结果0男1女 余数偶女奇男 + personal.setGender(gender % 2 == 0 ? "2" : "1"); + } catch (Exception e) { + log.info("性别异常"); + } + personal.setAge(Optional.ofNullable(AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); + // 这里暂时将小标签放到预览属性 处理标签回正 + return personal; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java new file mode 100644 index 0000000..77352ac --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PetitionServiceImpl.java @@ -0,0 +1,573 @@ +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; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.mine.*; +import com.biutag.supervisiondata.repository.*; +import com.biutag.supervisiondata.service.PetitionService; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.util.AgeUtil; +import com.biutag.supervisiondata.util.BhUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-14 16:01:37 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class PetitionServiceImpl implements PetitionService { + + private final DataPetition12337Repository petition12337Repository; + + private final DataPetitionComplaintRepository complaintRepository; + + private final DataCaseVerifRepository dataCaseVerifRepository; + + private final GBaseSYRKXXRepository syrkxxRepository; + + private final RiskTaskRepository riskTaskRepository; + + private final RiskPersonalService riskPersonalService; + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final RiskModelTaskClueRepository clueRepository; + + @Override + public void personPullAndSave(LocalDateTime start, LocalDateTime end) { + List personals1 = new ArrayList<>(); + List personals2= new ArrayList<>(); + List personals3= new ArrayList<>(); + List idCards = new ArrayList<>(); + List idCards_b = new ArrayList<>(); + List mobiles = new ArrayList<>(); + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> { + List list = petition12337Repository.list(new LambdaQueryWrapper() + .select(DataPetition12337::getName, DataPetition12337::getIdCode, DataPetition12337::getPhone,DataPetition12337::getThirdDepartId, DataPetition12337::getThirdDepartName, DataPetition12337::getDiscoverTime).between(DataPetition12337::getDiscoverTime, start, end) + .isNotNull(DataPetition12337::getIdCode)); + for (DataPetition12337 data : list) { + RiskPersonal person = new RiskPersonal(); + person.setIdCode(data.getIdCode()); + person.setName(data.getName()); + person.setMobileNumber(data.getPhone()); + person.setTags(Default.PETITION_12337_TAG); + person.setControlDepartId(data.getThirdDepartId()); + person.setControlDepartName(data.getThirdDepartName()); + person.setControlTime(data.getDiscoverTime()); + personals1.add(person); + idCards.add(data.getIdCode()); + } + }), + CompletableFutureUtil.runSyncObject(() -> { + List list = complaintRepository.list(new LambdaQueryWrapper() + .select(DataPetitionComplaint::getResponderName, DataPetitionComplaint::getResponderPhone, DataPetitionComplaint::getResponderName,DataPetitionComplaint::getThirdDepartId, DataPetitionComplaint::getThirdDepartName, DataPetitionComplaint::getDiscoveryTime).between(DataPetitionComplaint::getResponderIdCode, start, end) + .isNotNull(DataPetitionComplaint::getResponderIdCode)); + for (DataPetitionComplaint data : list) { + RiskPersonal person = new RiskPersonal(); + person.setIdCode(data.getResponderIdCode()); + person.setName(data.getResponderName()); + person.setMobileNumber(data.getResponderPhone()); + person.setTags(Default.PETITION_TAG); + person.setControlDepartId(data.getThirdDepartId()); + person.setControlDepartName(data.getThirdDepartName()); + person.setControlTime(data.getDiscoveryTime()); + personals2.add(person); + idCards_b.add(data.getResponderIdCode()); + } + }), + CompletableFutureUtil.runSyncObject(() -> { + List list = dataCaseVerifRepository.list(new LambdaQueryWrapper() + .select(DataCaseVerif::getResponderName, DataCaseVerif::getResponderPhone,DataCaseVerif::getThirdDepartId, DataCaseVerif::getThirdDepartName, DataCaseVerif::getDiscoveryTime).between(DataCaseVerif::getDiscoveryTime, start, end) + .isNotNull(DataCaseVerif::getResponderPhone)); + for (DataCaseVerif data : list) { + RiskPersonal person = new RiskPersonal(); + person.setName(data.getResponderName()); + person.setMobileNumber(data.getResponderPhone()); + person.setTags(Default.PETITION_CASE_TAG); + person.setControlDepartId(data.getThirdDepartId()); + person.setControlDepartName(data.getThirdDepartName()); + person.setControlTime(data.getDiscoveryTime()); + personals3.add(person); + mobiles.add(data.getResponderPhone()); + } + }) + ).join(); + log.info("{} | {} | {}",idCards.size(), idCards_b.size(), mobiles.size()); + idCards.addAll(idCards_b); + List idCards2 = idCards.stream().distinct().toList(); + List mobiles2 = mobiles.stream().distinct().toList(); + + log.info("证件数: {}", idCards.size()); + log.info("手机数: {}", mobiles.size()); + + List xxList = new ArrayList<>(); + List xxMobileList = new ArrayList<>(); + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> { + List> idCodes = IntStream.range(0, (idCards2.size() + 9999) / 10000) + .mapToObj(i -> idCards2.subList(i * 10000, Math.min((i + 1) * 10000, idCards2.size()))) + .toList(); + int count = idCodes.size(); + for (List idCode : idCodes) { + count--; + xxList.addAll(syrkxxRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getLxdh, GBaseSYRKXX::getXlmc, GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getXm, GBaseSYRKXX::getCsrq, GBaseSYRKXX::getXbdm) + .in(GBaseSYRKXX::getGmsfhm, idCode))); + log.info("身份证进度 | {}", count); + } + + }), + CompletableFutureUtil.runSyncObject(() -> { + List> phones = IntStream.range(0, (mobiles2.size() + 9999) / 10000) + .mapToObj(i -> mobiles2.subList(i * 10000, Math.min((i + 1) * 10000, mobiles2.size()))) + .toList(); + int count = phones.size(); + for (List phone : phones) { + count--; + xxMobileList.addAll(syrkxxRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getLxdh, GBaseSYRKXX::getXlmc, GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getXm, GBaseSYRKXX::getCsrq, GBaseSYRKXX::getXbdm) + .in(GBaseSYRKXX::getLxdh, phone))); + log.info("手机进度 | {}", count); + } + }) + ).join(); + Map map = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + Map> mobileMap = xxMobileList.stream().collect(Collectors.groupingBy(GBaseSYRKXX::getLxdh)); + List toInsert = new ArrayList<>(); + for (RiskPersonal personal : personals1) { + GBaseSYRKXX xx = map.get(personal.getIdCode()); + if(xx == null) { + personal = checkPerson(personal); + if(personal != null) { + toInsert.add(personal); + } + continue; + } + personal.setGender(xx.getXbdm()); + if(xx.getLxdh() != null) { + personal.setMobileNumber(xx.getLxdh()); + } + personal.setName(xx.getXm()); + personal.setAge(Optional.ofNullable(AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); + if(personal.getAge() <= 6) { + continue; + } + toInsert.add(personal); + } + for (RiskPersonal personal : personals2) { + GBaseSYRKXX xx = map.get(personal.getIdCode()); + if(xx == null) { + personal = checkPerson(personal); + if(personal != null) { + toInsert.add(personal); + } + continue; + } + personal.setGender(xx.getXbdm()); + if(xx.getLxdh() != null) { + personal.setMobileNumber(xx.getLxdh()); + } + personal.setName(xx.getXm()); + personal.setAge(Optional.ofNullable(AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); + if(personal.getAge() <= 6) { + continue; + } + toInsert.add(personal); + } + for (RiskPersonal personal : personals3) { + List xx = mobileMap.get(personal.getMobileNumber()); + if(xx == null) { + continue; + } + GBaseSYRKXX info = null; + if(xx.size() ==1) { + info = xx.getFirst(); + } else { + info = compare(xx, personal.getName()); + } + if(info == null) { + continue; + } + personal.setIdCode(info.getGmsfhm()); + personal.setGender(info.getXbdm()); + if(info.getLxdh() != null) { + personal.setMobileNumber(info.getLxdh()); + } + personal.setName(info.getXm()); + personal.setAge(Optional.ofNullable(AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now())).orElse(-1)); + if(personal.getAge() <= 6) { + continue; + } + toInsert.add(personal); + } + + log.info("人员开始入库 {}", toInsert.size()); + riskPersonalService.formatAndSave(toInsert, Default.BIG_TAG_PETITION); + } + + @Override + public void petitionModelTask(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 40); + riskTaskRepository.save(task); + + LocalDateTime time = LocalDateTime.now().minusMonths(12); + List pList1 = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + pList1.addAll(petition12337Repository.list(new LambdaQueryWrapper() + .select(DataPetition12337::getOnlyId, DataPetition12337::getName, DataPetition12337::getIdCode, DataPetition12337::getPhone,DataPetition12337::getThirdDepartId, DataPetition12337::getThirdDepartName, DataPetition12337::getDiscoverTime, DataPetition12337::getReviewDes).ge(DataPetition12337::getDiscoverTime, time) + .in(DataPetition12337::getIdCode, idCard))); + } + + List pList2 = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + pList2.addAll(complaintRepository.list(new LambdaQueryWrapper() + .select(DataPetitionComplaint::getOriginId, DataPetitionComplaint::getResponderName, DataPetitionComplaint::getResponderPhone, DataPetitionComplaint::getResponderName,DataPetitionComplaint::getThirdDepartId, DataPetitionComplaint::getThirdDepartName, DataPetitionComplaint::getDiscoveryTime, DataPetitionComplaint::getThingDesc).ge(DataPetitionComplaint::getDiscoveryTime, time) + .in(DataPetitionComplaint::getResponderPhone, idCard))); + } + + List pList3 = new ArrayList<>(); + List mobiles = domain.getPersons().stream().map(RiskPersonal::getMobileNumber).distinct().toList(); + List> doubleMobile = IntStream.range(0, (mobiles.size() + 9999) / 10000) + .mapToObj(i -> mobiles.subList(i * 10000, Math.min((i + 1) * 10000, mobiles.size()))) + .toList(); + for (List mobile : doubleMobile) { + pList3.addAll(dataCaseVerifRepository.list(new LambdaQueryWrapper() + .select(DataCaseVerif::getOriginId, DataCaseVerif::getResponderName, DataCaseVerif::getResponderPhone,DataCaseVerif::getThirdDepartId, DataCaseVerif::getThirdDepartName, DataCaseVerif::getDiscoveryTime, DataCaseVerif::getThingDesc).ge(DataCaseVerif::getDiscoveryTime, time) + .in(DataCaseVerif::getResponderPhone, mobile))); + } + // 先搞定这个电话号码的 + Map> man = domain.getPersons().stream().filter(item -> item.getMobileNumber() != null).collect(Collectors.groupingBy(RiskPersonal::getMobileNumber)); + Map idCodeMan = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + + List data = new ArrayList<>(); + for (DataCaseVerif dataCaseVerif : pList3) { + List list = man.get(dataCaseVerif.getResponderPhone()); + RiskPersonal person = comparePerson(list, dataCaseVerif.getResponderName()); + if(person == null) { + continue; + } + data.add(ClueData.builder() + .id(dataCaseVerif.getOriginId()) + .tag(Default.PETITION_CASE_TAG) + .personId(person.getId()) + .departId(dataCaseVerif.getThirdDepartId()) + .departName(dataCaseVerif.getThirdDepartName()) + .eventTime(dataCaseVerif.getDiscoveryTime()) + .idCode(person.getIdCode()) + .name(person.getName()) + .sourceData("该人员在近12个月内有诉求不满或长期未化解的情况,增加风险分2分,具体情况为:"+dataCaseVerif.getThingDesc()) + .build()); + } + + for (DataPetition12337 item : pList1) { + RiskPersonal person = idCodeMan.get(item.getIdCode()); + if(person == null) { + continue; + } + data.add(ClueData.builder() + .id(item.getOnlyId()) + .tag(Default.PETITION_12337_TAG) + .personId(person.getId()) + .departId(item.getThirdDepartId()) + .departName(item.getThirdDepartName()) + .eventTime(item.getDiscoverTime()) + .idCode(person.getIdCode()) + .name(person.getName()) + .sourceData("该人员在近12个月内有诉求不满或长期未化解的情况,增加风险分2分,具体情况为:"+item.getReviewDes()) + .build()); + } + + for (DataPetitionComplaint item : pList2) { + RiskPersonal person = idCodeMan.get(item.getResponderIdCode()); + if(person == null) { + continue; + } + data.add(ClueData.builder() + .id(item.getOriginId()) + .tag(Default.PETITION_TAG) + .personId(person.getId()) + .departId(item.getThirdDepartId()) + .departName(item.getThirdDepartName()) + .eventTime(item.getDiscoveryTime()) + .idCode(person.getIdCode()) + .name(person.getName()) + .sourceData("该人员在近12个月内有诉求不满或长期未化解的情况,增加风险分2分,具体情况为:"+item.getThingDesc()) + .build()); + } + + // 数据部分 + List toUpdates = new ArrayList<>(); + List toInsert = new ArrayList<>(); + List touUpdatePerson = new ArrayList<>(); + List toInsertRecrod = new ArrayList<>(); + + + // 操作前查询之前的数据,可能要合并 + List oldList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + List oldResults = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + for (RiskModelTaskClue clue : oldList) { + if(clue.getEventTime().isBefore(time)) { + // 再见了兄弟 + RiskModelTaskClue clue1 = new RiskModelTaskClue(); + clue1.setId(clue.getId()); + clue1.setDel(1); + toUpdates.add(clue1); + } else { + oldResults.add(clue); + } + } + + + Map> oldMap = oldResults.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + + Map> clueMap = data.stream().collect(Collectors.groupingBy(ClueData::getIdCode)); + // 按季度计分 + for (Map.Entry> entry : clueMap.entrySet()) { + List oldClues = Optional.ofNullable(oldMap.get(entry.getKey())).orElse(new ArrayList<>()); + // - 先筛选出老记录,如果已经入库过了,新增的就删除 + Map oldClueMap = oldClues.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (oldValue, newValue) -> newValue)); + // 胜利者将继续进行筛选 + List winner = new ArrayList<>(); + + // 人员的管控信息 + boolean updatePeople = false; + RiskPersonal person = idCodeMan.get(entry.getKey()); + + for (ClueData clueData : entry.getValue()) { + // 找不到旧编号才继续 + if(oldClueMap.get(BhUtil.petBh(clueData.getId())) == null) { + winner.add(createClue(task.getModelId(), 2, task.getId(), clueData)); + if(person.getControlTime() != null && person.getControlTime().isBefore(clueData.getEventTime())) { + updatePeople = true; + person.setControlTime(clueData.getEventTime()); + person.setControlDepartId(clueData.getDepartId()); + person.setControlDepartName(clueData.getDepartName()); + } + toInsertRecrod.add(createControlRecord(clueData)); + } + } + if(updatePeople) { + RiskPersonal updatePerson = new RiskPersonal(); + updatePerson.setId(person.getId()); + updatePerson.setControlTime(person.getControlTime()); + updatePerson.setControlDepartId(person.getControlDepartId()); + updatePerson.setControlDepartName(person.getControlDepartName()); + touUpdatePerson.add(updatePerson); + } + // - 结合新旧数据,从新计算季度,季度最晚的算分 + oldClues.addAll(winner); + Map> winnerMap = new WeakHashMap<>(); + // 去年季度 + Map> lastWinnerMap = new WeakHashMap<>(); + int year = time.getYear(); + for (RiskModelTaskClue oldClue : oldClues) { + int month = oldClue.getEventTime().getMonthValue(); + int theYear = oldClue.getEventTime().getYear(); + int session = month / 3; + if(theYear != year) { + List list = Optional.ofNullable(lastWinnerMap.get(session)).orElse(new ArrayList<>()); + list.add(oldClue); + lastWinnerMap.put(session, list); + } else { + List list = Optional.ofNullable(winnerMap.get(session)).orElse(new ArrayList<>()); + list.add(oldClue); + winnerMap.put(session, list); + } + } + + // - 上季度排序 + for (Map.Entry> entities : lastWinnerMap.entrySet()) { + List list = entities.getValue(); + list.sort(Comparator.comparing(RiskModelTaskClue::getEventTime, Comparator.reverseOrder())); + RiskModelTaskClue clue = list.getFirst(); + int years = clue.getEventTime().getYear(); + String [] str = clue.getRiskReason().split("-"); + if(clue.getId() != null) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(clue.getId()); + update.setScore(2); + update.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度"); + toUpdates.add(update); + } else { + clue.setScore(2); + clue.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度"); + toInsert.add(clue); + } + list.remove(0); + for (RiskModelTaskClue riskModelTaskClue : list) { + years = riskModelTaskClue.getEventTime().getYear(); + str = riskModelTaskClue.getRiskReason().split("-"); + if(riskModelTaskClue.getId() != null) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(riskModelTaskClue.getId()); + update.setScore(0); + update.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度季度(已合并到本季度最后)"); + toUpdates.add(update); + } else { + riskModelTaskClue.setScore(0); + riskModelTaskClue.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度季度(已合并到本季度最后)"); + toInsert.add(riskModelTaskClue); + } + } + } + + // - 本季度排序 + for (Map.Entry> entities : winnerMap.entrySet()) { + List list = entities.getValue(); + list.sort(Comparator.comparing(RiskModelTaskClue::getEventTime, Comparator.reverseOrder())); + RiskModelTaskClue clue = list.getFirst(); + int years = clue.getEventTime().getYear(); + String [] str = clue.getRiskReason().split("-"); + if(clue.getId() != null) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(clue.getId()); + update.setScore(2); + update.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度"); + toUpdates.add(update); + } else { + clue.setScore(2); + clue.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度"); + toInsert.add(clue); + } + list.remove(0); + for (RiskModelTaskClue riskModelTaskClue : list) { + years = riskModelTaskClue.getEventTime().getYear(); + str = riskModelTaskClue.getRiskReason().split("-"); + if(riskModelTaskClue.getId() != null) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(riskModelTaskClue.getId()); + update.setScore(0); + update.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度季度(已合并到本季度最后)"); + toUpdates.add(update); + } else { + riskModelTaskClue.setScore(0); + riskModelTaskClue.setRiskReason(str[0] + "-" + years+"年"+(entities.getKey()+1)+"季度季度(已合并到本季度最后)"); + toInsert.add(riskModelTaskClue); + } + } + } + } + if(!toInsert.isEmpty()) { + riskModelTaskClueService.saveClues(toInsert); + } + + if(!toUpdates.isEmpty()) { + log.info("修改线索数 | {}", toUpdates.size()); + clueRepository.updateBatchById(toUpdates); + } + + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(toUpdates.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(updateTask); + } + + GBaseSYRKXX compare(List infos, String name) { + GBaseSYRKXX info = null; + for (GBaseSYRKXX gBaseSYRKXX : infos) { + if(gBaseSYRKXX.getXm().equals(name)) { + info=gBaseSYRKXX; + break; + } + } + return info; + } + + RiskPersonal comparePerson(List infos, String name) { + RiskPersonal info = null; + for (RiskPersonal gBaseSYRKXX : infos) { + if(gBaseSYRKXX.getName().equals(name)) { + info=gBaseSYRKXX; + break; + } + } + return info; + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + 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.petBh(data.getId())); + data.setPersonId(null); + clue.setRiskReason(data.getTag()); + return clue; + } + + RiskPersonalControlRecord createControlRecord(ClueData data) { + RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); + controlRecord.setName(data.getName()); + controlRecord.setIdCode(data.getIdCode()); + controlRecord.setCreateTime(LocalDateTime.now()); + controlRecord.setControlTime(data.getEventTime()); + controlRecord.setControlDepartId(data.getDepartId()); + controlRecord.setControlDepartName(data.getDepartName()); + controlRecord.setControlTag(data.getTag()); + controlRecord.setCaseId(BhUtil.ajBh(data.getId())); + return controlRecord; + } + + RiskPersonal checkPerson(RiskPersonal personal) { + if(personal.getName()== null ||personal.getIdCode() == null || personal.getName().isEmpty() || personal.getIdCode().isEmpty()) { + return null; + } + try{ + int age = AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now()); + if(age <= 6) { + return null; + } + personal.setAge(age); + } catch (Exception e) { + return null; + } + if(personal.getGender() == null) { + try{ + int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15)); + // 结果0男1女 余数偶女奇男 + personal.setGender(gender % 2 == 0 ?"2":"1"); + } catch (Exception e) { + return null; + } + } + return personal; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java new file mode 100644 index 0000000..9b8e078 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PointServiceImpl.java @@ -0,0 +1,599 @@ +package com.biutag.supervisiondata.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.config.cache.RedisDao; +import com.biutag.supervisiondata.mapper.mine.SupDepartMapper; +import com.biutag.supervisiondata.mapper.mine.SupExternalDepartMapper; +import com.biutag.supervisiondata.pojo.ClueData; +import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.domain.*; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseTbDZdrylb; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDRY; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseZDXL; +import com.biutag.supervisiondata.pojo.entity.mine.*; +import com.biutag.supervisiondata.repository.*; +import com.biutag.supervisiondata.service.PointService; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.util.AgeUtil; +import com.biutag.supervisiondata.util.BhUtil; +import com.biutag.supervisiondata.util.PatternUtil; +import com.biutag.supervisiondata.util.TxtUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.awt.*; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-11-15 18:04:18 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class PointServiceImpl implements PointService { + + private final GBaseZDRYRepository zdryRepository; + + private final GBaseZDXLRepository zdxlRepository; + + private final RiskPersonalService riskPersonalService; + + private final RiskModelTaskClueService modelTaskClueService; + + private final RiskTaskRepository taskRepository; + + private final SupDepartMapper supDepartMapper; + + @Override + public void personPullAndSave(LocalDateTime start, LocalDateTime end) { + riskPersonalService.formatAndSave(getPersons(), Default.POINT_POEPLE); + } + + @Override + public void syncScore(TaskParamDomain domain) { + List persons = getPersons(); + RiskTask task = createTask(persons.size(), 43); + taskRepository.save(task); + + List clues = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + Map> oldClueMap = clues.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + Map> map = persons.stream().collect(Collectors.groupingBy(RiskPersonal::getIdCode)); + + List toInsert = new ArrayList<>(); + + for (Map.Entry> entry : map.entrySet()) { + List olds = oldClueMap.get(entry.getKey()); + if (olds == null) { + // 全部增加 + for (RiskPersonal personal : entry.getValue()) { + toInsert.add(createClue(task.getModelId(), 5, task.getId(), ClueData.builder() + .tag(personal.getTags()) + .name(personal.getName()) + .idCode(personal.getIdCode()) + .eventTime(Optional.ofNullable(personal.getControlTime()).orElse(LocalDateTime.now())) + .departId(personal.getControlDepartId()) + .departName(personal.getControlDepartName()) + .sourceData("该人员存在标签:" + personal.getTags() + ",属于特定人员,增加风险分5分") + .build())); + } + continue; + } + Map clueMap = olds.stream().collect(Collectors.toMap(RiskModelTaskClue::getRiskReason, Function.identity(), (oldValue, newValue) -> newValue)); + for (RiskPersonal personal : entry.getValue()) { + if (clueMap.get(personal.getTags()) == null) { + toInsert.add(createClue(task.getModelId(), 5, task.getId(), ClueData.builder() + .tag(personal.getTags()) + .name(personal.getName()) + .idCode(personal.getIdCode()) + .eventTime(Optional.ofNullable(personal.getControlTime()).orElse(LocalDateTime.now())) + .departId(personal.getControlDepartId()) + .departName(personal.getControlDepartName()) + .sourceData("该人员存在标签:" + personal.getTags() + ",属于特定人员,增加风险分5分") + .build())); + } + } + } + if (!toInsert.isEmpty()) { + modelTaskClueService.saveClues(toInsert); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); + } + + @Override + public void syncViolence(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 44); + taskRepository.save(task); + Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + + List list = zdryRepository.getBaseMapper().syncViolencePerson(); + + Map> map = new HashMap<>(); + + List olds = Optional.ofNullable(domain.getMap().get(task.getId())).orElse(new ArrayList<>()); + Map> maps = olds.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + List toInsert = new ArrayList<>(); + for (Violence violence : list) { + if (violence.getZjhm() == null || personalMap.get(violence.getZjhm()) == null) { + continue; + } + Map old = Optional.ofNullable(map.get(violence.getZjhm())).orElse(new HashMap<>()); + if (old.get(violence.getAjbh()) != null) { + continue; + } + + List oldClues = Optional.ofNullable(maps.get(violence.getZjhm())).orElse(new ArrayList<>()); + Map oldMap = oldClues.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (oldValue, newValue) -> newValue)); + if (oldMap.get(BhUtil.ajBh(violence.getAjbh())) != null) { + continue; + } + 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()) + .personId(person.getId()) + .idCode(person.getIdCode()) + .sourceData(JSON.toJSONString(violence)) + .sourceData("通过核查案件信息,发现该人员有暴力伤害行为,案件编号为:" + violence.getAjbh() + Optional.ofNullable(violence.getWfss()).map(it -> ",具体情况为:" + it).orElse("")) + .tag(violence.getAjlbmc()) + .build(); + if (violence.getBadwiddm() != null) { + data.setDepartId(violence.getBadwiddm()); + data.setDepartId(violence.getBadwidmc()); + } + try { + data.setEventTime(violence.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + } + toInsert.add(createClue2(task.getModelId(), 5, task.getId(), data)); + } + + if (!toInsert.isEmpty()) { + modelTaskClueService.saveClues(toInsert); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); + } + + @Override + public void syncKillSelf(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 46); + taskRepository.save(task); + Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + List list = zdryRepository.getBaseMapper().syncKillSelf(); + List olds = Optional.ofNullable(domain.getMap().get(task.getId())).orElse(new ArrayList<>()); + Map> maps = olds.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + List toInsert = new ArrayList<>(); + for (Extreme extreme : list) { + if (extreme.getBjrzjhm() == null || personalMap.get(extreme.getBjrzjhm()) == null) { + continue; + } + List oldClues = Optional.ofNullable(maps.get(extreme.getBjrzjhm())).orElse(new ArrayList<>()); + Map oldMap = oldClues.stream().collect(Collectors.toMap(RiskModelTaskClue::getCaseIds, Function.identity(), (oldValue, newValue) -> newValue)); + if (oldMap.get(BhUtil.jjdBh(extreme.getJjdbh())) != null) { + continue; + } + RiskPersonal person = personalMap.get(extreme.getBjrzjhm()); + ClueData data = ClueData.builder() + .name(person.getName()) + .id(extreme.getJjdbh()) + .personId(person.getId()) + .idCode(person.getIdCode()) + .sourceData("通过核查案件信息,发现该人员有近3个月,每出现一次扬言滋事、自杀等行为,接警单编号为:" + extreme.getJjdbh() + Optional.ofNullable(extreme.getBjnr()).map(it -> ",具体情况为:" + it).orElse("") + Optional.ofNullable(extreme.getCjqk()).map(it -> ",处警情况为:" + it).orElse("")) + .tag("扬言滋事、自杀等行为") + .build(); + if (extreme.getGxdwdm() != null) { + data.setDepartId(extreme.getGxdwdm()); + data.setDepartName(extreme.getGxdwmc()); + } + try { + data.setEventTime(extreme.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + } + toInsert.add(createClue2(task.getModelId(), 10, task.getId(), data)); + } + + if (!toInsert.isEmpty()) { + modelTaskClueService.saveClues(toInsert); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); + } + + @Override + public void syncDrug(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 47); + taskRepository.save(task); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + Map idCode = new HashMap<>(); + List list = zdryRepository.getBaseMapper().selectDrugMan(); + Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); + List toInsert = new ArrayList<>(); + for (Drug drug : list) { + RiskPersonal personal = personalMap.get(drug.getSfzh()); + if (personal == null) continue; + if (idCode.get(drug.getSfzh()) != null) continue; + if (oldMap.get(drug.getSfzh()) != null) continue; + + idCode.put(drug.getSfzh(), 1); + ClueData data = ClueData.builder() + .name(personal.getName()) + .id(personal.getId().toString()) + .idCode(personal.getIdCode()) + .tag("涉药人员") + .personId(personal.getId()) + .sourceData("发现该人员于" + drug.getGzdw() + "工作,属于特种工种中的涉药人员,增加风险分2分") + .build(); + toInsert.add(createClue(task.getModelId(), 2, task.getId(), data)); + } + if (!toInsert.isEmpty()) { + log.info("增加涉药人员:{}", toInsert.size()); + modelTaskClueService.saveClues(toInsert); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); + } + + @Override + public void syncControlNoPower(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 48); + taskRepository.save(task); + Map oldMap = domain.getOldMap(task.getModelId(), true); + Map idCode = new HashMap<>(); + List list = zdryRepository.getBaseMapper().noPower(); + + Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (old, newVal) -> newVal)); + List toInsert = new ArrayList<>(); + for (GBaseZDRY gBaseZDRY : list) { + RiskPersonal personal = personalMap.get(gBaseZDRY.getSfzh()); + if (personal == null) continue; + if (idCode.get(gBaseZDRY.getSfzh()) != null) continue; + if (oldMap.get(gBaseZDRY.getSfzh()) != null) continue; + idCode.put(gBaseZDRY.getSfzh(), 1); + + ClueData data = ClueData.builder() + .name(personal.getName()) + .id(personal.getId().toString()) + .idCode(personal.getIdCode()) + .tag("特定对象日常管控不到位") + .departId(gBaseZDRY.getXzdpcsdm()) + .departName(gBaseZDRY.getXzdpcs()) + .personId(personal.getId()) + .eventTime(LocalDateTime.of(2024, 10, 7, 12, 11, 23)) + .sourceData("发现该人员属于重点人员,该人员的管控民警所管控的重点人员达到100人以上\n属于未落实日常管控要求,增加风险分4分") + .build(); + toInsert.add(createClue(task.getModelId(), 4, task.getId(), data)); + } + if (!toInsert.isEmpty()) { + log.info("增加特定对象日常管控不到位人员:{}", toInsert.size()); + modelTaskClueService.saveClues(toInsert); + } + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + taskRepository.updateById(updateTask); + } + + private final GBaseJJDRepository jjdRepository; + + private final RiskTestRepository riskTestRepository; + + @Override + public void syncPointCall(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 50); + taskRepository.save(task); + // 获取接警数据 + List result = jjdRepository.getBaseMapper().selectPointCall(); + List person = getPersons(); + Map map = new HashMap<>(); + Map noUseMap = new HashMap<>(); + + 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)); + RedisDao.getInstance().removeListAll(Default.CALL_REDIS); + List tmp = new ArrayList<>(); + for (Map.Entry> entry : aMAP.entrySet()) { + if (entry.getValue().getFirst().getMobileNumber() == null) { + continue; + } + RiskPersonal personal = entry.getValue().getFirst(); + String[] str = personal.getMobileNumber().split(","); + int num = 0; + int noUsefulNum = 0; + StringBuilder mobile = new StringBuilder(); + for (String s : str) { + if (s.contains("无") || s.equals("00000000") || s.equals("1")) { + continue; + } + mobile.append(s).append(","); + int count = Optional.ofNullable(map.get(s)).orElse(0); + num += count; + + int count2 = Optional.ofNullable(noUseMap.get(s)).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 (!tmp.isEmpty()) { + riskTestRepository.saveBatch(tmp); + } + + if (!toInsert.isEmpty()) { + log.info("增加特定对象日常管控不到位人员:{}", toInsert.size()); + modelTaskClueService.saveClues(toInsert); + } + + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(0); + 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); + 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("point"); + data.setPersonId(null); + clue.setRiskReason(data.getTag()); + return clue; + } + + RiskModelTaskClue createClue2(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(data.getPersonId()); + clue.setRiskReason(data.getTag()); + return clue; + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + SupDepart findLevelThreeDepart(SupDepart supDepart, Map departMap) { + if(supDepart == null){ + return null; + } + if(supDepart.getLevel() == 3) { + return supDepart; + } + supDepart = departMap.get(supDepart.getPid()); + return findLevelThreeDepart(supDepart, departMap); + } + + private final GBaseTbDZdrylbRepository zdrylbRepository; + + private final SupExternalDepartRepository externalDepartRepository; + + List getPersons() { + 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) + .ge(SupDepart::getLevel, 3)); + + Map supExternalDepartMap = new WeakHashMap<>(); + List externalDeparts = new ArrayList<>(); + + Map lbMap = new WeakHashMap<>(); + Map supDepartCodeMap = new WeakHashMap<>(); + Map supDepartIdMap = new WeakHashMap<>(); + + for (SupDepart supDepart : supDeparts) { + supDepartCodeMap.put(supDepart.getCode(), supDepart); + supDepartIdMap.put(supDepart.getId(), supDepart); + } + + for (GBaseTbDZdrylb lb : lbList) { + if (lb.getCode().startsWith("0")) { + lbMap.put(Integer.valueOf(lb.getCode().replaceFirst("0", "")), lb.getDefine()); + } else { + lbMap.put(Integer.valueOf(lb.getCode()), lb.getDefine()); + } + } + + List list = zdryRepository.getBaseMapper().syncPointPeople(); + log.info("重点人员查询人数: {}", list.size()); + List personals = new ArrayList<>(); + LocalDate date = LocalDate.now(); + Map> map = new HashMap<>(); + int zdCount = 0; + int noDepartCount = 0; + for (GBaseZDRY ry : list) { + List codes = PatternUtil.takeMarkPosition(ry.getZdrylbbj()); + if (codes.isEmpty()) { + continue; + } + List sb = new ArrayList<>(); + for (Integer index : codes) { + String lbName = lbMap.get(index); + if (lbName.isEmpty()) { + continue; + } + sb.add(lbName); + } + if (sb.isEmpty()) { + continue; + } + zdCount++; + sb = sb.stream().distinct().toList(); + Map tmp = Optional.ofNullable(map.get(ry.getSfzh())).orElse(new HashMap<>()); + + SupDepart depart = supDepartCodeMap.get(ry.getGxdwjgdm()); + depart = findLevelThreeDepart(depart, supDepartIdMap); + Integer exist = supExternalDepartMap.get(ry.getGxdwjgdm()); + 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); + } + if(depart == null) { + noDepartCount++; + } + for (String s : sb) { + if (tmp.get(s) != null) { + continue; + } + tmp.put(s, 1); + RiskPersonal personal = new RiskPersonal(); + personal.setTags(s); + personal.setCreateTime(LocalDateTime.now()); + personal.setIdCode(ry.getSfzh()); + personal.setName(ry.getXm()); + + personal.setControlDepartName(Optional.ofNullable(depart).map(SupDepart::getShortName).orElse(ry.getGxdw())); + personal.setControlDepartId(Optional.ofNullable(depart).map(SupDepart::getId).orElse(ry.getGxdwjgdm())); + try { + personal.setControlTime(LocalDateTime.parse(ry.getJlbgsj(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + } catch (Exception e) { + } + // 基本信息 + try { + personal.setAge(AgeUtil.idCard2Age(personal.getIdCode(), date)); + int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15)); + // 结果0男1女 余数偶女奇男 + personal.setGender(gender % 2 == 0 ? "2" : "1"); + } catch (Exception e) { + } + if (ry.getZdrylxfs() != null) { +// personal.setMobileNumber(ry.getZdrylxfs().length() > 20 ? "" : ry.getZdrylxfs()); + personal.setMobileNumber(ry.getZdrylxfs()); + } + personals.add(personal); + } + map.put(ry.getSfzh(), tmp); + } + log.info("重点人员入库数:{} 未匹配到本地组织机构数:{}",zdCount, noDepartCount); + externalDepartRepository.saveBatch(externalDeparts); + return personals; + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/PoliceServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/PoliceServiceImpl.java new file mode 100644 index 0000000..bc1a75d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/PoliceServiceImpl.java @@ -0,0 +1,229 @@ +package com.biutag.supervisiondata.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseBAXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +import com.biutag.supervisiondata.pojo.entity.mine.*; +import com.biutag.supervisiondata.pojo.enums.Dispute; +import com.biutag.supervisiondata.repository.GBaseJJDRepository; +import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository; +import com.biutag.supervisiondata.repository.RiskPersonalRepository; +import com.biutag.supervisiondata.repository.RiskTaskRepository; +import com.biutag.supervisiondata.service.*; +import com.biutag.supervisiondata.util.BhUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 情感、房地产、房屋、医患、债务、土地、劳资、家庭暴力、邻里纠纷 + * @author kami on 2024-11-12 19:40:02 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class PoliceServiceImpl implements PoliceService { + + private final GBaseJJDRepository jjdRepository; + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final RiskPersonalTagService tagService; + + private final RiskPersonalService riskPersonalService; + + private final RiskPersonalControlRecordService controlRecordService; + + private final RiskPersonalRepository riskPersonalRepository; + + private final RiskTaskRepository riskTaskRepository; + + private final RiskModelTaskClueRepository taskClueRepository; + + @Override + public void contradictModelTask(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 38); + riskTaskRepository.save(task); + List jjds = new ArrayList<>(); + + for (List idCard : domain.getIdCards()) { + jjds.addAll(jjdRepository.list(new LambdaQueryWrapper() + .select(GBaseJJD::getJjdbh, GBaseJJD::getBjsj, GBaseJJD::getGxdwdm, GBaseJJD::getGxdwmc, GBaseJJD::getJqxzmc, GBaseJJD::getBjrzjhm) + .in(GBaseJJD::getBjrzjhm, idCard))); + } + + List result = new ArrayList<>(); + // 过滤警情 + for (GBaseJJD jjd : jjds) { + if(jjd.getJqxzmc()==null) { + continue; + } + // 情感、房地产、房屋、医患、债务、土地、劳资、家庭暴力、邻里纠纷 + if(jjd.getJqxzmc().contains("情感") || jjd.getJqxzmc().contains("房地产") + || jjd.getJqxzmc().contains("房屋") || jjd.getJqxzmc().contains("医患") + || jjd.getJqxzmc().contains("债务") || jjd.getJqxzmc().contains("土地") + || jjd.getJqxzmc().contains("劳资") || jjd.getJqxzmc().contains("家庭暴力") + || jjd.getJqxzmc().contains("邻里纠纷")) { + result.add(jjd); + } + } + + log.info("警情:{}", result.size()); + // 旧数据 + List oldList = Optional.ofNullable(domain.getMap().get(38)).orElse(new ArrayList<>()); + List updateClueList = new ArrayList<>(); + LocalDateTime timeLimit = LocalDateTime.now().minusMonths(12); + Map> map = new HashMap<>(); + for (RiskModelTaskClue clue : oldList) { + if(clue.getEventTime().isBefore(timeLimit)) { + RiskModelTaskClue up = new RiskModelTaskClue(); + up.setId(clue.getId()); + up.setDel(1); + updateClueList.add(up); + } + List tmp = Optional.ofNullable(map.get(clue.getIdCode())).orElse(new ArrayList<>()); + tmp.add(clue); + map.put(clue.getIdCode(), tmp); + } + + Map personMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + // ******* 数据操作 ******* + List toInsert = new ArrayList<>(); + List controlRecords = new ArrayList<>(); + List toUpdatePerson = new ArrayList<>(); + List toInsertTags = new ArrayList<>(); + // ******* 数据操作 ******* + // 开始 + for (GBaseJJD jjd : result) { + List tmp = Optional.ofNullable(map.get(jjd.getBjrzjhm())).orElse(new ArrayList<>()); + RiskPersonal person = personMap.get(jjd.getBjrzjhm()); + if(person == null) { + continue; + } + boolean insert = true; + for (RiskModelTaskClue clue : tmp) { + if(clue.getCaseIds().equals(BhUtil.jjdBh(jjd.getJjdbh()))) { + insert = false; + break; + } + } + if(insert) { + toInsert.add(createClue(task.getModelId(), 1, person, task.getId(), jjd, "通过对近12个月的警情筛查,发现该人员涉及:"+jjd.getJqxzmc()+"的警情,接警单编号为:"+jjd.getJjdbh()+",该警情属于矛盾纠纷,增加风险分1分(发生一起增加1分,最高10分)")); + RiskPersonalControlRecord tmpRecord = createControlRecord(person, jjd, toInsert.getLast().getRiskReason()); + controlRecords.add(tmpRecord); + if(person.getControlTime() == null || tmpRecord.getControlTime().isAfter(person.getControlTime())) { + RiskPersonal personToUpdate = getRiskPersonal(person, tmpRecord); + toUpdatePerson.add(personToUpdate); + toInsertTags.add(createTag(Dispute.contains(jjd.getJqxzmc()), toInsert.getLast().getEventTime(), person)); + } + } + } + if(!toInsert.isEmpty()) { + log.info("新增线索:{}",toInsert.size()); + riskModelTaskClueService.saveClues(toInsert); + } + if(!controlRecords.isEmpty()) { + log.info("新增管控记录:{}",controlRecords.size()); + controlRecordService.batchInsert(controlRecords); + } + if(!toUpdatePerson.isEmpty()) { + log.info("修改风险人员:{}",toUpdatePerson.size()); + riskPersonalRepository.updateBatchById(toUpdatePerson, 5000); + } + + if(!toInsertTags.isEmpty()) { + log.info("操作新增标签数据:{}",toInsertTags.size()); + tagService.saveBatchTag(toInsertTags, Default.BIG_TAG_TRUBO); + } + + if(!updateClueList.isEmpty()) { + taskClueRepository.updateBatchById(updateClueList, 10000); + } + + RiskTask updateTask = new RiskTask(); + updateTask.setId(task.getId()); + updateTask.setInsertSize(toInsert.size()); + updateTask.setUpdateSize(toUpdatePerson.size()); + updateTask.setState(1); + updateTask.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(updateTask); + } + + private static RiskPersonal getRiskPersonal(RiskPersonal person, RiskPersonalControlRecord tmpRecord) { + RiskPersonal personToUpdate = new RiskPersonal(); + personToUpdate.setId(person.getId()); + personToUpdate.setControlTime(tmpRecord.getControlTime()); + personToUpdate.setControlDepartName(tmpRecord.getControlDepartName()); + personToUpdate.setControlDepartId(tmpRecord.getControlDepartId()); + if(person.getTags().indexOf(Default.BIG_TAG_TRUBO) == -1) { + personToUpdate.setTags(person.getTags().concat(",".concat(Default.BIG_TAG_TRUBO))); + } + return personToUpdate; + } + + RiskModelTaskClue createClue(Integer modelId, Integer score, RiskPersonal person, Integer taskId,GBaseJJD jjd, String data) { + RiskModelTaskClue clue = new RiskModelTaskClue(); + clue.setModelId(modelId); + clue.setScore(score); + clue.setName(person.getName()); + clue.setIdCode(person.getIdCode()); + clue.setTaskId(taskId); + clue.setRiskReason(jjd.getJqxzmc()); + clue.setData(data); + clue.setEventTime(jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + clue.setCreateTime(LocalDateTime.now()); + clue.setUpdateTime(LocalDateTime.now()); + clue.setCaseIds(BhUtil.jjdBh(jjd.getJjdbh())); + return clue; + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + RiskPersonalControlRecord createControlRecord(RiskPersonal person, GBaseJJD jjd, String tag) { + RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); + controlRecord.setName(person.getName()); + controlRecord.setIdCode(person.getIdCode()); + controlRecord.setCreateTime(LocalDateTime.now()); + try { + controlRecord.setControlTime(jjd.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.info("报警时间转换异常"); + } + controlRecord.setControlDepartId(jjd.getGxdwdm()); + controlRecord.setControlDepartName(jjd.getGxdwmc()); + controlRecord.setControlTag(tag); + controlRecord.setCaseId(BhUtil.jjdBh(jjd.getJjdbh())); + return controlRecord; + } + + RiskPersonalTag createTag(String tag, LocalDateTime eventTime, RiskPersonal personal) { + RiskPersonalTag personalTag = new RiskPersonalTag(); + personalTag.setTagTime(eventTime); + personalTag.setBigTag(Default.BIG_TAG_TRUBO); + personalTag.setSmallTag(tag); + personalTag.setIdCode(personal.getIdCode()); + personalTag.setName(personal.getName()); + personalTag.setCreateTime(LocalDateTime.now()); + return personalTag; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java new file mode 100644 index 0000000..507f4d2 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskModelTaskClueServiceImpl.java @@ -0,0 +1,90 @@ +package com.biutag.supervisiondata.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalControlRecord; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalTag; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-11 14:11:44 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class RiskModelTaskClueServiceImpl implements RiskModelTaskClueService { + + @Qualifier("chaosBean") + private final DataSource dataSource; + + public Connection getConnection() throws SQLException { + return dataSource.getConnection(); + } + + + @Override + public void saveClues(List list) { + List> control = IntStream.range(0, (list.size() + 9999) / 10000) + .mapToObj(i -> list.subList(i * 10000, Math.min((i + 1) * 10000, list.size()))) + .collect(Collectors.toList()); + for (List record : control) { + try { + batchInsert(record); + } catch (Exception e) { + log.error("", e); + } + } + } + + 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) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(sql)) { + connection.setAutoCommit(false); + alliances.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, it.getModelId()); + prepareStatement.setObject(2, Optional.ofNullable(it.getName()).orElse("")); + prepareStatement.setObject(3, Optional.ofNullable(it.getIdCode()).orElse("")); + prepareStatement.setObject(4, it.getTaskId()); + prepareStatement.setObject(5, it.getSourceId()); + prepareStatement.setObject(6, Optional.ofNullable(it.getRiskReason()).orElse("")); + prepareStatement.setObject(7, Optional.ofNullable(it.getData()).orElse("")); + prepareStatement.setObject(8, Optional.ofNullable(it.getScore()).orElse(0)); + prepareStatement.setObject(9, Optional.ofNullable(it.getEventTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(10, Optional.ofNullable(it.getCreateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(11, Optional.ofNullable(it.getUpdateTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(12, Optional.ofNullable(it.getCaseIds()).orElse("")); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据保存失败"); + } + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalControlRecordImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalControlRecordImpl.java new file mode 100644 index 0000000..c442714 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalControlRecordImpl.java @@ -0,0 +1,67 @@ +package com.biutag.supervisiondata.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.biutag.supervisiondata.common.exception.BusinessException; +import com.biutag.supervisiondata.common.response.StatusCode; +import com.biutag.supervisiondata.mapper.mine.RiskPersonalControlRecordMapper; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonalControlRecord; +import com.biutag.supervisiondata.service.RiskPersonalControlRecordService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Optional; + +/** + * @author kami on 2024-11-20 10:08:08 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class RiskPersonalControlRecordImpl extends ServiceImpl implements RiskPersonalControlRecordService { + + @Override + public void batchInsert(List records) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(sql)) { + connection.setAutoCommit(false); + records.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, Optional.ofNullable(it.getName()).orElse("")); + prepareStatement.setObject(2, Optional.ofNullable(it.getIdCode()).orElse("")); + prepareStatement.setObject(3, Optional.ofNullable(it.getControlDepartId()).orElse("")); + prepareStatement.setObject(4, Optional.ofNullable(it.getControlDepartName()).orElse("")); + prepareStatement.setObject(5, Optional.ofNullable(it.getControlTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(6, Optional.ofNullable(it.getControlTag()).orElse("")); + prepareStatement.setObject(7, it.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据保存失败"); + } + } + + final String sql = "INSERT INTO risk_personal_control_record(name, id_code, control_depart_id, control_depart_name, control_time, control_tag, create_time) VALUES(?,?,?,?,?,?,?)"; + + @Qualifier("chaosBean") + private final DataSource dataSource; + + public Connection getConnection() throws SQLException { + return dataSource.getConnection(); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java new file mode 100644 index 0000000..814a2b7 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalServiceImpl.java @@ -0,0 +1,267 @@ +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.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.service.RiskPersonalService; +import com.biutag.supervisiondata.service.RiskPersonalTagService; +import com.biutag.supervisiondata.util.AgeUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-09 16:14:25 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class RiskPersonalServiceImpl implements RiskPersonalService { + + private final RiskPersonalRepository repository; + + private final RiskPersonalTagService tagService; + + @Qualifier("chaosBean") + private final DataSource dataSource; + + + @Override + public void formatAndSave(List list, String bigTag) { + List searchOldCode = new ArrayList<>(); + list.stream().map(RiskPersonal::getIdCode).distinct().forEach(searchOldCode::add); + // 速度是割出来的 + List> olds = IntStream.range(0, (searchOldCode.size() + 9999) / 10000) + .mapToObj(i -> searchOldCode.subList(i * 10000, Math.min((i + 1) * 10000, searchOldCode.size()))) + .collect(Collectors.toList()); + + List oldPerson = new ArrayList<>(); + for (List old : olds) { + oldPerson.addAll(repository.list(new LambdaQueryWrapper() + .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)); + // 新增 + List data = new ArrayList<>(); + // 修改 + List updateData = new ArrayList<>(); + List tags = new ArrayList<>(); + + 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) { + // 两个数据回正 + tmp.setTags(bigTag); + tmp.setCreateTime(LocalDateTime.now()); + data.add(tmp); + continue; + } + RiskPersonal update = new RiskPersonal(); + update.setId(oldPersonal.getId()); + if(oldPersonal.getTags().indexOf(bigTag) == -1) { + update.setTags(oldPersonal.getTags().concat(",".concat(bigTag))); + updateData.add(update); + } + } + log.info("保存长度: {}", data.size()); + if(!data.isEmpty()) { + List> persons = IntStream.range(0, (data.size() + 9999) / 10000) + .mapToObj(i -> data.subList(i * 10000, Math.min((i + 1) * 10000, data.size()))) + .collect(Collectors.toList()); + for (List person : persons) { + try { + batchInsert(person); + } catch (Exception e) { + log.error("", e); + } + } + } + + if(!tags.isEmpty()) { + log.info("开始操作待操作标签:{}", tags.size()); + tagService.saveBatchTag(tags, bigTag); + } + + if(!updateData.isEmpty()) { + log.info("开始修改: {}", updateData.size()); + repository.updateBatchById(updateData, 5000); + } + } + + public Connection getConnection() throws SQLException { + return dataSource.getConnection(); + } + + final String sql = "INSERT INTO risk_personal(name, gender, age, id_code, mobile_number, control_depart_id, control_depart_name, control_time, create_time, tags, error_msg) VALUES(?,?,?,?,?,?,?,?,?,?,?)"; + + final String sql3 = "INSERT INTO risk_personal_control_record(name, id_code, control_depart_id, control_depart_name, control_time, control_tag, create_time) VALUES(?,?,?,?,?,?,?)"; + + + public void batchInsert(List alliances) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(sql)) { + connection.setAutoCommit(false); + alliances.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, Optional.ofNullable(it.getName()).orElse("")); + prepareStatement.setObject(2, Optional.ofNullable(it.getGender()).orElse("-1")); + prepareStatement.setObject(3, Optional.ofNullable(it.getAge()).orElse(-1)); + prepareStatement.setObject(4, Optional.ofNullable(it.getIdCode()).orElse("")); + prepareStatement.setObject(5, Optional.ofNullable(it.getMobileNumber()).orElse("")); + prepareStatement.setObject(6, Optional.ofNullable(it.getControlDepartId()).orElse("")); + prepareStatement.setObject(7, Optional.ofNullable(it.getControlDepartName()).orElse("")); + prepareStatement.setObject(8, Optional.ofNullable(it.getControlTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(9, it.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + prepareStatement.setObject(10, Optional.ofNullable(it.getTags()).orElse("")); + prepareStatement.setObject(11, Optional.ofNullable(it.getErrorMsg()).orElse("")); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据保存失败"); + } + } + + @Override + public void batchInsert3(List alliances) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(sql3)) { + connection.setAutoCommit(false); + alliances.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, Optional.ofNullable(it.getName()).orElse("")); + prepareStatement.setObject(2, Optional.ofNullable(it.getIdCode()).orElse("")); + prepareStatement.setObject(3, Optional.ofNullable(it.getControlDepartId()).orElse("")); + prepareStatement.setObject(4, Optional.ofNullable(it.getControlDepartName()).orElse("")); + prepareStatement.setObject(5, Optional.ofNullable(it.getControlTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(6, Optional.ofNullable(it.getControlTag()).orElse("")); + prepareStatement.setObject(7, it.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据保存失败"); + } + } + + @Override + public void updateBatchScore(List personals) { + List> list = IntStream.range(0, (personals.size() + 9999) / 10000) + .mapToObj(i -> personals.subList(i * 10000, Math.min((i + 1) * 10000, personals.size()))) + .toList(); + log.info("开始批量修改: {}", list.size()); + int count = list.size(); + for (List riskPersonals : list) { + batchUpdateData(riskPersonals); + count--; + log.info("进度:{}", count); + } + } + + final String updateSQL = "UPDATE risk_personal SET risk_score = ? WHERE id = ?"; + + + void batchUpdateData(List personals) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(updateSQL)) { + connection.setAutoCommit(false); + personals.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, Optional.ofNullable(it.getRickScore()).orElse(0.0)); + prepareStatement.setObject(2, it.getId()); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据修改失败"); + } + } + + @Override + public void fixed() { + List personals = repository.list(); + List del = new ArrayList<>(); + for (RiskPersonal personal : personals) { + boolean up = false; + if(personal.getAge() == -1) { + try{ + int age = AgeUtil.idCard2Age(personal.getIdCode(), LocalDate.now()); + personal.setAge(age); + up = true; + } catch (Exception e) { + del.add(personal.getId()); + } + } + if(personal.getAge() <= 6) { + del.add(personal.getId()); + } + if(personal.getGender().equals("-1")) { + try{ + int gender = personal.getIdCode().length() == 18 ? Integer.valueOf(personal.getIdCode().substring(16, 17)) : Integer.valueOf(personal.getIdCode().substring(14, 15)); + // 结果0男1女 余数偶女奇男 + personal.setGender(gender % 2 == 0 ?"2":"1"); + up = true; + } catch (Exception e) { + del.add(personal.getId()); + } + } + if(up) { + repository.updateById(personal); + } + } + log.info("总数: {}", del.size()); + for (Integer i : del) { + repository.removeById(i); + } + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalTagServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalTagServiceImpl.java new file mode 100644 index 0000000..3de96af --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskPersonalTagServiceImpl.java @@ -0,0 +1,161 @@ +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.pojo.entity.mine.RiskPersonalTag; +import com.biutag.supervisiondata.repository.RiskPersonalTagRepository; +import com.biutag.supervisiondata.service.RiskPersonalTagService; +import jakarta.annotation.Resource; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-09 16:08:40 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class RiskPersonalTagServiceImpl implements RiskPersonalTagService { + + private final RiskPersonalTagRepository tagRepository; + + @Qualifier("chaosBean") + private final DataSource dataSource; + + @Override + public void saveBatchTag(List tags, String bitTag) { + Map> map = tags.stream().collect(Collectors.groupingBy(RiskPersonalTag::getIdCode)); + // 标签要插入的人员 + List idCodes = new ArrayList<>(); + for (Map.Entry> entry : map.entrySet()) { + idCodes.add(entry.getKey()); + } + List oldTags = tagRepository.list(new LambdaQueryWrapper().eq(RiskPersonalTag::getBigTag, bitTag) + .in(RiskPersonalTag::getIdCode, idCodes)); + Map> oldTagMap = oldTags.stream().collect(Collectors.groupingBy(RiskPersonalTag::getIdCode)); + + List toInsert = new ArrayList<>(); + List toUpdate = new ArrayList<>(); + // 剔重 + for (Map.Entry> entry : map.entrySet()) { + // 新增先剔重 + Map distinct = new HashMap<>(); + for (RiskPersonalTag personalTag : entry.getValue()) { + RiskPersonalTag tmp = distinct.get(personalTag.getSmallTag()); + if(tmp == null) { + distinct.put(personalTag.getSmallTag(), personalTag); + continue; + } + if(tmp.getTagTime().isBefore(personalTag.getTagTime())) { + distinct.put(personalTag.getSmallTag(), personalTag); + } + } + // 剔重后的数据 + List tmpList = distinct.values().stream().toList(); + + List olds = Optional.ofNullable(oldTagMap.get(entry.getKey())).orElse(new ArrayList<>()); + if(olds.isEmpty()) { + toInsert.addAll(entry.getValue()); + continue; + } + Map old = olds.stream().collect(Collectors.toMap(RiskPersonalTag::getSmallTag, Function.identity(), (oldValue, newValue) -> newValue)); + for (RiskPersonalTag personalTag : tmpList) { + RiskPersonalTag oldTag = old.get(personalTag.getSmallTag()); + if(oldTag == null) { + toInsert.add(personalTag); + continue; + } + if(oldTag.getTagTime().isBefore(personalTag.getTagTime())) { + RiskPersonalTag update = new RiskPersonalTag(); + update.setId(oldTag.getId()); + update.setTagTime(personalTag.getTagTime()); + toUpdate.add(update); + } + } + } + + if(!toInsert.isEmpty()) { + log.info("开始插入标签数据:{}", toInsert.size()); + List> batches = IntStream.range(0, (toInsert.size() + 9999) / 10000) + .mapToObj(i -> toInsert.subList(i * 10000, Math.min((i + 1) * 10000, toInsert.size()))) + .toList(); + for (List batch : batches) { + batchInsert(batch); + } + } + if(!toUpdate.isEmpty()) { + log.info("开始修改标签数据:{}", toUpdate.size()); + batchUpdate(toUpdate); + } + + } + + public void batchInsert(List tags) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(sql)) { + connection.setAutoCommit(false); + tags.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, Optional.ofNullable(it.getName()).orElse("")); + prepareStatement.setObject(2, Optional.ofNullable(it.getIdCode()).orElse("")); + prepareStatement.setObject(3, Optional.ofNullable(it.getBigTag()).orElse("")); + prepareStatement.setObject(4, Optional.ofNullable(it.getSmallTag()).orElse("")); + prepareStatement.setObject(5, Optional.ofNullable(it.getTagTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(6, it.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据保存失败"); + } + } + + public void batchUpdate(List tags) { + try (Connection connection = getConnection(); + PreparedStatement prepareStatement = connection.prepareStatement(updateSQL)) { + connection.setAutoCommit(false); + tags.stream().forEachOrdered(it -> { + try { + prepareStatement.setObject(1, Optional.ofNullable(it.getTagTime()).map(item -> item.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))).orElse(null)); + prepareStatement.setObject(2, it.getId()); + prepareStatement.addBatch(); + } catch (SQLException e) { + log.error("", e); + } + }); + prepareStatement.executeBatch(); + connection.commit(); + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException(StatusCode.BUSINESS, "数据修改失败"); + } + } + + public Connection getConnection() throws SQLException { + return dataSource.getConnection(); + } + + final String sql = "INSERT INTO risk_personal_tag(name, id_code, big_tag, small_tag, tag_time, create_time) VALUES(?,?,?,?,?,?)"; + + final String updateSQL = "UPDATE risk_personal_tag SET tag_time = ? WHERE id = ?"; +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java new file mode 100644 index 0000000..4746c27 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskScoreRuleServiceImpl.java @@ -0,0 +1,121 @@ +package com.biutag.supervisiondata.service.impl; + +import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.biutag.supervisiondata.pojo.entity.mine.Model; +import com.biutag.supervisiondata.pojo.entity.mine.RiskModelTaskClue; +import com.biutag.supervisiondata.pojo.entity.mine.RiskPersonal; +import com.biutag.supervisiondata.pojo.entity.mine.RiskScoreRule; +import com.biutag.supervisiondata.repository.ModelRepository; +import com.biutag.supervisiondata.repository.RiskModelTaskClueRepository; +import com.biutag.supervisiondata.repository.RiskPersonalRepository; +import com.biutag.supervisiondata.repository.RiskScoreRuleRepository; +import com.biutag.supervisiondata.service.RiskPersonalControlRecordService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.service.RiskScoreRuleService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @author kami on 2024-11-18 19:38:10 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class RiskScoreRuleServiceImpl implements RiskScoreRuleService { + + private final RiskPersonalRepository personalRepository; + + private final RiskScoreRuleRepository riskScoreRuleRepository; + + private final ModelRepository modelRepository; + + private final RiskModelTaskClueRepository riskModelTaskClueRepository; + + private final RiskPersonalService riskPersonalService; + + @Override + public void runScore(List idCodes) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .select(RiskPersonal::getIdCode, RiskPersonal::getId, RiskPersonal::getRickScore); + if(idCodes != null && !idCodes.isEmpty()) { + queryWrapper.in(RiskPersonal::getIdCode, idCodes); + } + + List riskPersonals = personalRepository.list(queryWrapper); + List rules = riskScoreRuleRepository.list(new LambdaQueryWrapper<>()); + + List rulesV1 = rules.stream().filter(item -> item.getLevel() == 1).toList(); + Map> ruleMap = rules.stream().filter(item -> item.getLevel() == 2).collect(Collectors.groupingBy(RiskScoreRule::getPid)); + + List models = modelRepository.list(new LambdaQueryWrapper() + .select(Model::getId, Model::getRiskScoreRuleId)); + Map modelMap = models.stream().collect(Collectors.toMap(Model::getRiskScoreRuleId, Function.identity(), (oldValue, newValue) -> newValue)); + + List clues = riskModelTaskClueRepository.list(new LambdaQueryWrapper() + .select(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getModelId, RiskModelTaskClue::getScore) + .eq(RiskModelTaskClue::getDel, 0)); + + Map>> clueMap = new HashMap<>(); + for (RiskModelTaskClue clue : clues) { + Map> tmp = Optional.ofNullable(clueMap.get(clue.getIdCode())).orElse(new HashMap<>()); + List list = Optional.ofNullable(tmp.get(clue.getModelId())).orElse(new ArrayList<>()); + list.add(clue); + tmp.put(clue.getModelId(), list); + clueMap.put(clue.getIdCode(), tmp); + } + List toUpdates = new ArrayList<>(); + int count = 0; + int size = riskPersonals.size(); + RiskPersonal update; + for (RiskPersonal person : riskPersonals) { + BigDecimal total = new BigDecimal("0.0"); + for (RiskScoreRule rule : rulesV1) { + List r = Optional.ofNullable(ruleMap.get(rule.getId())).orElse(new ArrayList<>()); + BigDecimal score = new BigDecimal("0.00"); + for (RiskScoreRule riskScoreRule : r) { + Model model = modelMap.get(riskScoreRule.getId()); + if(model == null) { + continue; + } + Map> tmp = clueMap.get(person.getIdCode()); + if(tmp == null) { + continue; + } + List temp = tmp.get(model.getId()); + if(temp == null) { + continue; + } + Integer ruleScore = temp.stream().mapToInt(RiskModelTaskClue::getScore).sum(); + BigDecimal n2 = new BigDecimal(Double.toString(Math.min(ruleScore.doubleValue(), riskScoreRule.getScore()))); + score=score.add(n2); + } + BigDecimal ruleScore = new BigDecimal(Double.toString(rule.getScore())); + BigDecimal weight = new BigDecimal(Integer.toString(rule.getWeight())); + score = score.multiply(weight).divide(ruleScore, 2, RoundingMode.UP); + total = total.add(score); + } + if(person.getRickScore().compareTo(total.doubleValue()) != 0) { + update = new RiskPersonal(); + update.setId(person.getId()); + update.setRickScore(total.doubleValue()); + toUpdates.add(update); + } + count++; + if(count%1000 == 0) { + log.info("已完成打分: {},共计:{}", count,size); + } + } + riskPersonalService.updateBatchScore(toUpdates); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java b/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java new file mode 100644 index 0000000..7f4cc56 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/service/impl/RiskTaskServiceImpl.java @@ -0,0 +1,887 @@ +package com.biutag.supervisiondata.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +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.ClueInfo; +import com.biutag.supervisiondata.pojo.constants.Default; +import com.biutag.supervisiondata.pojo.domain.FightMan; +import com.biutag.supervisiondata.pojo.domain.TaskParamDomain; +import com.biutag.supervisiondata.pojo.entity.ads.GBaseSYRKXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseAJJBXX; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseJJD; +import com.biutag.supervisiondata.pojo.entity.dwd.GBaseWFRXX; +import com.biutag.supervisiondata.pojo.entity.mine.*; +import com.biutag.supervisiondata.pojo.enums.Charge; +import com.biutag.supervisiondata.pojo.enums.Edu; +import com.biutag.supervisiondata.repository.*; +import com.biutag.supervisiondata.service.RiskModelTaskClueService; +import com.biutag.supervisiondata.service.RiskPersonalControlRecordService; +import com.biutag.supervisiondata.service.RiskPersonalService; +import com.biutag.supervisiondata.service.RiskTaskService; +import com.biutag.supervisiondata.util.AgeUtil; +import com.biutag.supervisiondata.util.BhUtil; +import com.biutag.supervisiondata.util.PatternUtil; +import com.biutag.supervisiondata.util.TxtUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * @author kami on 2024-11-11 14:14:39 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@Service +@AllArgsConstructor +public class RiskTaskServiceImpl implements RiskTaskService { + + private final RiskTaskRepository riskTaskRepository; + + private final GBaseJJDRepository jjdRepository; + + private final GBaseSYRKXXRepository syrkxxRepository; + + private final GBaseWFRXXRepository wfrxxRepository; + + private final GBaseAJJBXXRepository ajjbxxRepository; + + private final RiskPersonalRepository riskPersonalRepository; + + private final RiskPersonalControlRecordService controlRecordRepository; + + private final RiskModelTaskClueRepository clueRepository; + + private final RiskModelTaskClueService riskModelTaskClueService; + + private final RiskPersonalService riskPersonalService; + + private final RiskPersonalControlRecordService controlRecordService; + + @Override + public void infoModelTask(TaskParamDomain domain) { + RiskTask ageTask = createTask(domain.getPersons().size(), 33); + RiskTask genderTask = createTask(domain.getPersons().size(), 32); + riskTaskRepository.save(ageTask); + riskTaskRepository.save(genderTask); + + ClueInfo[] infos = new ClueInfo[2]; + CompletableFuture.allOf( + CompletableFutureUtil.runSyncObject(() -> infos[0] = ageModel(domain, ageTask)), + CompletableFutureUtil.runSyncObject(() -> infos[1] = genderModel(domain, genderTask)) + ).join(); + + RiskTask ageUpdate = new RiskTask(); + ageUpdate.setId(ageTask.getId()); + int size = 0; + if (!infos[0].getToHidden().isEmpty()) { + size = infos[0].getToHidden().size(); + } + ageUpdate.setUpdateSize(size); + if (!infos[0].getToInsert().isEmpty()) { + size = infos[0].getToInsert().size(); + } + ageUpdate.setInsertSize(size); + ageUpdate.setState(1); + ageUpdate.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(ageUpdate); + + RiskTask genderUpdate = new RiskTask(); + genderUpdate.setId(genderTask.getId()); + genderUpdate.setUpdateSize(0); + if (!infos[1].getToInsert().isEmpty()) { + size = infos[1].getToInsert().size(); + } + genderUpdate.setInsertSize(size); + genderUpdate.setState(1); + genderUpdate.setEndTime(LocalDateTime.now()); + List clues = new ArrayList<>(); + clues.addAll(infos[0].getToInsert()); + clues.addAll(infos[1].getToInsert()); + riskModelTaskClueService.saveClues(clues); + if(!infos[0].getToHidden().isEmpty()) { + clueRepository.updateBatchById(infos[0].getToHidden()); + } + riskTaskRepository.updateById(ageUpdate); + } + + @Override + public void eduModelTask(TaskParamDomain domain) { + RiskTask eduTask = createTask(domain.getPersons().size(), 34); + riskTaskRepository.save(eduTask); + + List xxList = new ArrayList<>(); + int count = 0; + log.info("开始查学历 | {}", domain.getIdCards().size()); + for (List idCard : domain.getIdCards()) { + count++; + xxList.addAll(syrkxxRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getXlmc) + .in(GBaseSYRKXX::getGmsfhm, idCard))); + log.info("学历进度 | {}", count); + } + // 日常转map + Map xxMap = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + // 旧数据 + Map oldMap = domain.getOldMap(34, true); + + List toUpdate = new ArrayList<>(); + List toInsert = new ArrayList<>(); + log.info("开始遍历学历"); + for (RiskPersonal person : domain.getPersons()) { + if (xxMap.get(person.getIdCode()) == null) { + continue; + } + GBaseSYRKXX xx = xxMap.get(person.getIdCode()); + if (xx.getXlmc() == null) { + continue; + } + String edu = switch (xx.getXlmc()) { + case "小学教育", "文盲", "小学毕业", "小学肄业" -> "小学及以下"; + case "初中毕业", "初级中等教育", "初中肄业", "普通高中结业", "普通高级中学教育", "普通高中毕业", "普通高中肄业" -> + "初中/高中"; + case "中等专科结业", "中等专科教育", "大学专科毕业", "技工学校肄业", "大学专科结业", "中等专业毕业" -> + "中专/大专"; + default -> null; + }; + if (edu == null) { + continue; + } + RiskModelTaskClue old = oldMap.get(person.getIdCode()); + if (old != null && old.getRiskReason().equals(edu)) { + continue; + } + Integer score = Edu.contains(edu); + if (old == null) { + //创建新的 + toInsert.add(createClue(eduTask.getModelId(), score, eduTask.getId(), ClueData.builder() + .name(person.getName()) + .idCode(person.getIdCode()) + .tag(edu) + .sourceData("该人员的学历为"+xx.getXlmc()+",属于"+edu+",增加风险分"+score+"分") + .eventTime(LocalDateTime.now()) + .personId(person.getId()) + .build(), "edu"+person.getId().toString())); + continue; + } + RiskModelTaskClue tmp = new RiskModelTaskClue(); + tmp.setId(old.getId()); + tmp.setRiskReason(edu); + tmp.setData("该人员的学历为"+xx.getXlmc()+",属于"+edu+",增加风险分"+score+"分"); + tmp.setScore(Edu.contains(edu)); + toUpdate.add(tmp); + } + RiskTask eduUpdate = new RiskTask(); + eduUpdate.setId(eduTask.getId()); + int size = 0; + if (!toInsert.isEmpty()) { + size = toInsert.size(); + riskModelTaskClueService.saveClues(toInsert); + log.info("批量新增学历完成"); + } + eduUpdate.setInsertSize(size); + if (!toUpdate.isEmpty()) { + clueRepository.updateBatchById(toUpdate, 10000); + size = toUpdate.size(); + log.info("批量修改学历完成"); + } + eduUpdate.setState(1); + eduUpdate.setUpdateSize(size); + eduUpdate.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(eduUpdate); + } + + @Override + public void caseModelTask(TaskParamDomain domain) { + RiskTask caseTask = createTask(domain.getPersons().size(), 35); + riskTaskRepository.save(caseTask); + // 1 - 违法信息 + List wfxxList = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + wfxxList.addAll(wfrxxRepository.list(new LambdaQueryWrapper() + .select(GBaseWFRXX::getAjbh, GBaseWFRXX::getZjhm, GBaseWFRXX::getSxzm) + .in(GBaseWFRXX::getZjhm, idCard))); + } + log.info("违法数量: {}", wfxxList.size()); + + // 1 - 信息转map 2 - 案件编号list + Map> xxMap = new HashMap<>(); + List ajIdList = new ArrayList<>(); + for (GBaseWFRXX gBaseWFRXX : wfxxList) { + if (gBaseWFRXX.getSxzm() == null) { + continue; + } + String charge = chargeContain(gBaseWFRXX.getSxzm()); + if (charge == null) { + continue; + } + ajIdList.add(gBaseWFRXX.getAjbh()); + List tmp = Optional.ofNullable(xxMap.get(gBaseWFRXX.getZjhm())).orElse(new ArrayList<>()); + tmp.add(gBaseWFRXX); + xxMap.put(gBaseWFRXX.getZjhm(), tmp); + } + // 切割 每次查10000条 + List> ajs = IntStream.range(0, (ajIdList.size() + 9999) / 10000) + .mapToObj(i -> ajIdList.subList(i * 10000, Math.min((i + 1) * 10000, ajIdList.size()))) + .toList(); + + List xxList = new ArrayList<>(); + // 查案件基本信息 + for (List aj : ajs) { + xxList.addAll(ajjbxxRepository.list(new LambdaQueryWrapper() + .select(GBaseAJJBXX::getAjbh, GBaseAJJBXX::getBadwidmc, GBaseAJJBXX::getBadwiddm, GBaseAJJBXX::getBarq) + .in(GBaseAJJBXX::getAjbh, aj))); + } + // 案件转map方便提取 + Map ajxxMap = xxList.stream().collect(Collectors.toMap(GBaseAJJBXX::getAjbh, Function.identity(), (oldValue, newValue) -> newValue)); + + // 管控部门记录 + List controlRecords = new ArrayList<>(); + for (List idCard : domain.getIdCards()) { + controlRecords.addAll(controlRecordRepository.list(new LambdaQueryWrapper() + .in(RiskPersonalControlRecord::getIdCode, idCard))); + } + // 转map + Map> controlMap = Optional.of(controlRecords).filter(it -> !it.isEmpty()) + .map(it -> it.stream().collect(Collectors.groupingBy(RiskPersonalControlRecord::getIdCode))) + .orElse(new HashMap<>()); + + Map oldMap = domain.getOldMap(35, true); + // ************** 要动的表 ************** + List toInsertControl = new ArrayList<>(); + List toUpdatePerson = new ArrayList<>(); + List toInsertClue = new ArrayList<>(); + List toUpdateClue = new ArrayList<>(); + // ************** ************** + Map bHMap; + for (RiskPersonal person : domain.getPersons()) { + List tmp = xxMap.get(person.getIdCode()); + // 案件编号 + StringBuilder caseNo = new StringBuilder(); + // 原因 + StringBuilder reason = new StringBuilder(); + List controls = controlMap.get(person.getIdCode()); + if (controls == null || controls.isEmpty()) { + bHMap = new HashMap<>(); + controls = new ArrayList<>(); + } else { + bHMap = controls.stream().collect(Collectors.toMap(RiskPersonalControlRecord::getCaseId, Function.identity(), (oldValue, newValue) -> newValue)); + } + List tmpRecords = new ArrayList<>(); + // 如果没有违法 + if (tmp == null || tmp.isEmpty()) { + continue; + } + for (GBaseWFRXX gBaseWFRXX : tmp) { + if (gBaseWFRXX.getSxzm() == null) { + continue; + } + caseNo.append(gBaseWFRXX.getAjbh()).append(","); + reason.append(chargeContain(gBaseWFRXX.getSxzm())).append(","); + RiskPersonalControlRecord record = bHMap.get(BhUtil.ajBh(gBaseWFRXX.getAjbh())); + if (record == null) { + //如果没有管控记录 新建 + GBaseAJJBXX ajxx = ajxxMap.get(gBaseWFRXX.getAjbh()); + if (ajxx == null) { + continue; + } + RiskPersonalControlRecord controlRecord = createControlRecord(person, ajxx, gBaseWFRXX); + toInsertControl.add(controlRecord); + tmpRecords.add(controlRecord); + } + } + controls.addAll(tmpRecords); + RiskPersonalControlRecord last = null; + for (RiskPersonalControlRecord riskPersonalControlRecord : controls) { + if (riskPersonalControlRecord == null) { + continue; + } + if (last == null) { + last = riskPersonalControlRecord; + continue; + } + if (riskPersonalControlRecord.getControlTime().isAfter(last.getControlTime())) { + last = riskPersonalControlRecord; + } + } + if (last != null && last.getId() == null) { + // 说明不是老数据 修改风险人员管控 + RiskPersonal p = new RiskPersonal(); + p.setId(person.getId()); + p.setControlDepartName(last.getControlDepartName()); + p.setControlDepartId(last.getControlDepartId()); + p.setControlTime(last.getControlTime()); + toUpdatePerson.add(p); + } + // 记录中的案件编号 + RiskModelTaskClue old = oldMap.get(person.getIdCode()); + String caseIds = Optional.ofNullable(old).map(RiskModelTaskClue::getCaseIds).orElse(""); + String[] oldCase = caseIds.split(","); + if (oldCase.length == caseNo.toString().split(",").length - 1) { + // 涉及案件和老的长度一致,说明没有新增事件 + continue; + } + if (old != null) { + // 将旧的作废 + RiskModelTaskClue updateClue = new RiskModelTaskClue(); + updateClue.setId(old.getId()); + updateClue.setDel(1); + toUpdateClue.add(updateClue); + continue; + } + RiskModelTaskClue clue = new RiskModelTaskClue(); + clue.setModelId(caseTask.getModelId()); + clue.setScore(5); + clue.setName(person.getName()); + clue.setIdCode(person.getIdCode()); + clue.setTaskId(caseTask.getId()); + StringBuilder data = new StringBuilder(); + if (!reason.isEmpty()) { + clue.setRiskReason(reason.substring(0, reason.length() - 1)); + data.append("发现该人员涉嫌以下罪名:"+clue.getRiskReason()); + } + if (!caseNo.isEmpty()) { + clue.setCaseIds(caseNo.substring(0, caseNo.length() - 1)); + data.append(",相关案件编号为:").append(clue.getCaseIds()); + } + if(!data.isEmpty()) { + data.append(",属于涉严重暴力犯罪前科人员,增加风险分5分"); + } + if (last != null && last.getControlTime() != null) { + clue.setEventTime(last.getControlTime()); + } + clue.setData(data.toString()); + clue.setCreateTime(LocalDateTime.now()); + clue.setUpdateTime(LocalDateTime.now()); + toInsertClue.add(clue); + } + RiskTask caseUpdate = new RiskTask(); + caseUpdate.setId(caseTask.getId()); + if (!toInsertClue.isEmpty()) { + riskModelTaskClueService.saveClues(toInsertClue); + } + if (!toUpdateClue.isEmpty()) { + clueRepository.updateBatchById(toUpdateClue); + } + if (!toUpdatePerson.isEmpty()) { + riskPersonalRepository.updateBatchById(toUpdatePerson); + } + controlRecordService.batchInsert(toInsertControl); + caseUpdate.setState(1); + caseUpdate.setInsertSize(toInsertClue.size()); + caseUpdate.setUpdateSize(toUpdateClue.size()); + caseUpdate.setEndTime(LocalDateTime.now()); + riskTaskRepository.updateById(caseUpdate); + } + + @Override + public void behavior(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 20); + riskTaskRepository.save(task); + + LocalDateTime end = LocalDateTime.now(); + LocalDateTime start = end.minusMonths(3); + // 获取接警数据 + List result = jjdRepository.getBaseMapper().selectDataToRisk(start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), + end.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + log.info("总条数 | {}条", result.size()); + + List jjdList = new ArrayList<>(); + for (GBaseJJD jjd : result) { + if (jjd.getJqxzmc().contains("扬言实施放火") || jjd.getJqxzmc().contains("扬言爆炸") + || jjd.getJqxzmc().contains("扬言放火") || jjd.getJqxzmc().contains("扬言投放危险物品") + || jjd.getJqxzmc().contains("扬言杀人") || jjd.getJqxzmc().contains("扬言冲撞") + || jjd.getJqxzmc().contains("扬言伤人") || jjd.getJqxzmc().contains("其他扬言极端") + || jjd.getJqxzmc().contains("自杀")) { + jjdList.add(jjd); + } + } + Map idNumberMap = new HashMap<>(); + Map mobileMap = new HashMap<>(); + for (RiskPersonal person : domain.getPersons()) { + idNumberMap.put(person.getIdCode(), person); + if (person.getMobileNumber() != null && !person.getMobileNumber().isEmpty()) { + mobileMap.put(person.getMobileNumber(), person); + } + } + List clueData = new ArrayList<>(); + for (GBaseJJD gBaseJJD : jjdList) { + RiskPersonal person = null; + if (gBaseJJD.getBjrzjhm() != null) { + person = idNumberMap.get(gBaseJJD.getBjrzjhm()); + } + if (person == null && gBaseJJD.getBjrlxdh() != null) { + person = mobileMap.get(gBaseJJD.getBjrlxdh()); + } + if (person == null) { + String idCards = PatternUtil.takeIdCard(gBaseJJD.getCjqk()); + if (idCards == null) { + continue; + } + String[] cardArr = idCards.split(","); + for (String s : cardArr) { + person = idNumberMap.get(s); + if (person != null) { + clueData.add(ClueData.builder() + .id(gBaseJJD.getJjdbh()) + .name(person.getName()) + .idCode(person.getIdCode()) + .tag(JSONObject.of("jqxzmc", gBaseJJD.getJqxzmc(), "cjqk", gBaseJJD.getCjqk()).toJSONString()) + .departName(gBaseJJD.getGxdwmc()) + .departId(gBaseJJD.getGxdwdm()) + .personId(person.getId()) + .eventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()) + .build()); + } + } + continue; + } + ClueData data = ClueData.builder() + .id(gBaseJJD.getJjdbh()) + .name(person.getName()) + .idCode(person.getIdCode()) + .tag(JSONObject.of("jqxzmc", gBaseJJD.getJqxzmc(), "cjqk", gBaseJJD.getCjqk()).toJSONString()) + .departName(gBaseJJD.getGxdwmc()) + .departId(gBaseJJD.getGxdwdm()) + .personId(person.getId()) + .build(); + try { + data.setEventTime(gBaseJJD.getBjsj().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.error("报案日期转LocalDateTime异常"); + } + clueData.add(data); + } + List toInsert = new ArrayList<>(); + Map> toInsertMap = new HashMap<>(); + + List oldList = Optional.ofNullable(domain.getMap().get(20)).orElse(new ArrayList<>()); + Map> oldMap = oldList.stream().collect(Collectors.groupingBy(RiskModelTaskClue::getIdCode)); + for (ClueData clueDatum : clueData) { + List tmpList = oldMap.get(clueDatum.getIdCode()); + if (tmpList == null || tmpList.isEmpty()) { + toInsert.add(createClue(task.getId(), 10, task.getId(), clueDatum, BhUtil.jjdBh(clueDatum.getId()))); + List tmp = Optional.ofNullable(toInsertMap.get(clueDatum.getIdCode())).orElse(new ArrayList<>()); + tmp.add(createControlRecord(clueDatum)); + toInsertMap.put(clueDatum.getIdCode(), tmp); + continue; + } + boolean exist = false; + for (RiskModelTaskClue clue : tmpList) { + if (clue.getCaseIds().equals(BhUtil.jjdBh(clueDatum.getId()))) { + exist = true; + break; + } + } + if (!exist) { + toInsert.add(createClue(task.getId(), 10, task.getId(), clueDatum, BhUtil.jjdBh(clueDatum.getId()))); + List tmp = Optional.ofNullable(toInsertMap.get(clueDatum.getIdCode())).orElse(new ArrayList<>()); + tmp.add(createControlRecord(clueDatum)); + toInsertMap.put(clueDatum.getIdCode(), tmp); + } + } + StringBuilder sb = new StringBuilder(); + for (RiskModelTaskClue clue : toInsert) { + sb.append(JSON.toJSONString(clue)).append("\n"); + } + TxtUtil.write(sb.toString(), "/work/test.txt"); + } + + @Override + public void riskAreaModelTask(TaskParamDomain domain) { + RiskTask task = createTask(domain.getPersons().size(), 41); + riskTaskRepository.save(task); + List> idCards = new ArrayList<>(); + // 旧的clue + List oldClueList = Optional.ofNullable(domain.getMap().get(task.getModelId())).orElse(new ArrayList<>()); + Map map = oldClueList.stream().collect(Collectors.toMap(RiskModelTaskClue::getIdCode, RiskModelTaskClue::getIdCode, (oldValue, newValue) -> newValue)); + Map personMap = new HashMap<>(); + // 将旧clue的人剔除出去,一个人的出生地一般不会变 + for (RiskPersonal person : domain.getPersons()) { + if(map.get(person.getIdCode()) != null) { + continue; + } + if(idCards.isEmpty() || idCards.getLast().size() >= 10000) { + idCards.add(new ArrayList<>()); + } + idCards.getLast().add(person.getIdCode()); + personMap.put(person.getIdCode(), person); + } + if(idCards.isEmpty()) { + RiskTask endTask = endTask(task.getId()); + endTask.setInsertSize(0); + endTask.setUpdateSize(0); + endTask.setErrMsg("没有新增数据"); + return; + } + + List xxList = new ArrayList<>(); + List area = List.of("431122", "431322", "433127", "431382", "430525", "430722"); + int count = idCards.size(); + for (List idCard : idCards) { + count--; + xxList.addAll(syrkxxRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getXm, GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getCsdxzqhdm, GBaseSYRKXX::getCsdxzqhmc) + .in(GBaseSYRKXX::getCsdxzqhdm, area) + .in(GBaseSYRKXX::getGmsfhm, idCard))); + log.info("地区进度 | {}", count); + } + + if(xxList.isEmpty()) { + RiskTask endTask = endTask(task.getId()); + endTask.setInsertSize(0); + endTask.setUpdateSize(0); + endTask.setErrMsg("没有新增数据"); + return; + } + + List toInsert = new ArrayList<>(); + // 新增 + for (GBaseSYRKXX gBaseSYRKXX : xxList) { + RiskPersonal person = personMap.get(gBaseSYRKXX.getGmsfhm()); + toInsert.add(createClue(task.getModelId(), 2, task.getId(), ClueData.builder() + .id(BhUtil.sfBh(person.getId().toString())) + .name(person.getName()) + .idCode(person.getIdCode()) + .personId(person.getId()) + .eventTime(LocalDateTime.now()) + .sourceData("发现该人员在"+gBaseSYRKXX.getCsdxzqhmc()+"成长,该地区暴力警情情况较多,增加风险分2分") + .tag(Default.FIGHT_BORN) + .build(), "area___"+person.getId().toString())); + } + if(!toInsert.isEmpty()) { + log.info("开始操作新增项:{}", toInsert.size()); + riskModelTaskClueService.saveClues(toInsert); + } + RiskTask endTask = endTask(task.getId()); + endTask.setInsertSize(toInsert.size()); + endTask.setUpdateSize(0); + riskTaskRepository.updateById(endTask); + } + + @Override + public void heightFight(TaskParamDomain domain) { + // 战斗过的用户 + List xxList = syrkxxRepository.getBaseMapper().selectHeightFight("2024-01-01 00:00:00"); + log.info("用户数 : {}", xxList.size()); + Map syrkxxMap = xxList.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + + RiskTask task = createTask(xxList.size(), 42); + riskTaskRepository.save(task); + + List idCodes = xxList.stream().map(GBaseSYRKXX::getGmsfhm).distinct().toList(); + log.info("查询用户数 : {}", idCodes.size()); + + List fightMans = syrkxxRepository.getBaseMapper().selectListByIdCode(idCodes); + log.info("fightman : {}", fightMans.size()); + + Map personalMap = domain.getPersons().stream().collect(Collectors.toMap(RiskPersonal::getIdCode, Function.identity(), (oldValue, newValue) -> newValue)); + + Map oldMap = domain.getOldMap(task.getModelId(), true); + + List toUpdates = new ArrayList<>(); + List toInsert = new ArrayList<>(); + List toInsertPeople = new ArrayList<>(); + + Map fightManMap = new HashMap<>(); + List manList = new ArrayList<>(); + int count = 0; + for (FightMan fightMan : fightMans) { + if(fightMan.getFightCount() < 5) { + continue; + } + count++; + RiskModelTaskClue old = oldMap.get(fightMan.getGmsfhm()); + if(old != null) { + RiskModelTaskClue update = new RiskModelTaskClue(); + update.setId(old.getId()); + update.setData("该人员在近期发生"+fightMan.getFightCount()+"起矛盾纠纷,属于高频次矛盾纠纷发生人员,增加风险分3分"); + toUpdates.add(update); + continue; + } + // 看看人员信息是否存在,决定需要增加人员不 + RiskPersonal person = personalMap.get(fightMan.getGmsfhm()); + if(person == null) { + fightManMap.put(fightMan.getGmsfhm(), fightMan); + manList.add(fightMan.getGmsfhm()); + continue; + } + RiskModelTaskClue clue = createClue(task.getModelId(),3, person,task.getId(), Default.FIGHT_MUCH, "该人员在近期发生"+fightMan.getFightCount()+"起矛盾纠纷,属于高频次矛盾纠纷发生人员,增加风险分3分"); + toInsert.add(clue); + person.setId(null); + person.setTags(Default.FIGHT_MUCH); + toInsertPeople.add(person); + } + log.info("大于等于5的个数 : {}", count); + + + List list = syrkxxRepository.list(new LambdaQueryWrapper() + .select(GBaseSYRKXX::getGmsfhm, GBaseSYRKXX::getXm, GBaseSYRKXX::getLxdh, GBaseSYRKXX::getSspcsmc, GBaseSYRKXX::getSspcsdm) + .in(GBaseSYRKXX::getGmsfhm, manList)); + + Map map = list.stream().collect(Collectors.toMap(GBaseSYRKXX::getGmsfhm, Function.identity(), (oldValue, newValue) -> newValue)); + for (Map.Entry s : fightManMap.entrySet()) { + GBaseSYRKXX xx = map.get(s.getKey()); + if(xx == null) { + xx = syrkxxMap.get(s.getKey()); + } + if(xx == null) { + continue; + } + RiskPersonal personal = createPerson(xx, Default.FIGHT_MUCH); + toInsertPeople.add(personal); + + RiskModelTaskClue clue = createClue(task.getModelId(),3, personal,task.getId(), Default.FIGHT_MUCH, "该人员在近期发生"+s.getValue().getFightCount()+"起矛盾纠纷,属于高频次矛盾纠纷发生人员,增加风险分3分"); + toInsert.add(clue); + } + + if(!toInsertPeople.isEmpty()) { + log.info("新增人员 | {}", toInsertPeople.size()); + riskPersonalService.formatAndSave(toInsertPeople, Default.FIGHT_MUCH); + } + + if(!toUpdates.isEmpty()) { + log.info("修改线索 | {}", toUpdates.size()); + clueRepository.updateBatchById(toUpdates); + } + if(!toInsert.isEmpty()) { + log.info("新增线索 | {}", toInsert.size()); + riskModelTaskClueService.saveClues(toInsert); + } + + RiskTask endTask = endTask(task.getId()); + endTask.setInsertSize(toInsert.size()); + endTask.setUpdateSize(toUpdates.size()); + endTask.setUpdateSize(0); + riskTaskRepository.updateById(endTask); + } + + /** + * 年龄模型 + * + * @param domain 参数 + * @param task 任务 + * @return 筛选出来的用户 + */ + ClueInfo ageModel(TaskParamDomain domain, RiskTask task) { + List taskClue = new ArrayList<>(); + List toHidden = new ArrayList<>(); + Map oldMap = domain.getOldMap(task.getModelId(), true); + LocalDate now = LocalDate.now(); + for (RiskPersonal person : domain.getPersons()) { + if (person.getIdCode() == null) { + continue; + } + RiskModelTaskClue old = oldMap.get(person.getIdCode()); + Integer age = AgeUtil.idCard2Age(person.getIdCode(), now); + if (age == null) { + continue; + } + // 符合条件但是又没有旧数据 | 新增 + if (age >= 16 && age <= 34) { + RiskModelTaskClue clue = createClue(33, 1, person, task.getId(), "年龄处于16岁至34岁之间", "该人员年龄为"+age+",属于16岁至34岁之间,增加风险分1分"); + taskClue.add(clue); + if (old != null) { + RiskModelTaskClue hidden = new RiskModelTaskClue(); + hidden.setId(old.getId()); + hidden.setDel(0); + toHidden.add(hidden); + } + continue; + } + if (age >= 35 && age <= 55) { + RiskModelTaskClue clue = createClue(33, 2, person, task.getId(), "年龄处于35岁至55岁之间", "该人员年龄为"+age+",属于35岁至55岁之间,增加风险分2分"); + taskClue.add(clue); + if (old != null) { + RiskModelTaskClue hidden = new RiskModelTaskClue(); + hidden.setId(old.getId()); + hidden.setDel(0); + toHidden.add(hidden); + } + } +// if (age >= 75) { +// RiskModelTaskClue clue = createClue(33, -1, person, task.getId(), "年龄处于75岁以上"); +// taskClue.add(clue); +// if (old != null) { +// RiskModelTaskClue hidden = new RiskModelTaskClue(); +// hidden.setId(old.getId()); +// hidden.setDel(0); +// toHidden.add(hidden); +// } +// } + } + return ClueInfo.builder() + .toHidden(toHidden) + .toInsert(taskClue) + .build(); + } + + /** + * 性别模型 + * + * @param domain 参数 + * @param task 任务 + * @return 筛选出来的用户 + */ + ClueInfo genderModel(TaskParamDomain domain, RiskTask task) { + List taskClue = new ArrayList<>(); + Map oldMap = domain.getOldMap(task.getModelId(), true); + + for (RiskPersonal person : domain.getPersons()) { + if (person.getGender() == null) { + continue; + } + if (!person.getGender().equals("1")) { + continue; + } + if (oldMap.get(person.getIdCode()) != null) { + continue; + } + RiskModelTaskClue clue = createClue(32, 1, person, task.getId(), "性别为男性", "该人员性别为男性,增加风险分1分"); + taskClue.add(clue); + } + return ClueInfo.builder().toInsert(taskClue).build(); + } + + RiskModelTaskClue createClue(Integer modelId, Integer score, RiskPersonal person, Integer taskId, String reason, String data) { + RiskModelTaskClue clue = new RiskModelTaskClue(); + clue.setModelId(modelId); + clue.setScore(score); + clue.setName(person.getName()); + clue.setIdCode(person.getIdCode()); + clue.setTaskId(taskId); + clue.setRiskReason(reason); + clue.setData(data); + clue.setCreateTime(LocalDateTime.now()); + clue.setUpdateTime(LocalDateTime.now()); + clue.setEventTime(LocalDateTime.now()); + return clue; + } + + RiskModelTaskClue createClue(Integer modelId, Integer score, Integer taskId, ClueData data, String caseId) { + 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(caseId); + data.setPersonId(null); + clue.setRiskReason(data.getTag()); + return clue; + } + + RiskTask createTask(Integer size, Integer modelId) { + RiskTask task = new RiskTask(); + task.setModelId(modelId); + task.setStartTime(LocalDateTime.now()); + task.setState(0); + task.setScanSize(size); + return task; + } + + RiskTask endTask(Integer id) { + RiskTask task = new RiskTask(); + task.setId(id); + task.setEndTime(LocalDateTime.now()); + task.setState(1); + return task; + } + + + RiskPersonalControlRecord createControlRecord(ClueData data) { + RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); + controlRecord.setName(data.getName()); + controlRecord.setIdCode(data.getIdCode()); + controlRecord.setCreateTime(LocalDateTime.now()); + controlRecord.setControlTime(data.getEventTime()); + controlRecord.setControlDepartId(data.getDepartId()); + controlRecord.setControlDepartName(data.getDepartName()); + controlRecord.setControlTag(data.getTag()); + controlRecord.setCaseId(BhUtil.ajBh(data.getId())); + return controlRecord; + } + + RiskPersonalControlRecord createControlRecord(RiskPersonal person, GBaseAJJBXX ajxx, GBaseWFRXX gBaseWFRXX) { + RiskPersonalControlRecord controlRecord = new RiskPersonalControlRecord(); + controlRecord.setName(person.getName()); + controlRecord.setIdCode(person.getIdCode()); + controlRecord.setCreateTime(LocalDateTime.now()); + try { + controlRecord.setControlTime(ajxx.getBarq().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()); + } catch (Exception e) { + log.info("报案日期转化异常"); + } + controlRecord.setControlDepartId(ajxx.getBadwiddm()); + controlRecord.setControlDepartName(ajxx.getBadwidmc()); + controlRecord.setControlTag(gBaseWFRXX.getSxzm()); + controlRecord.setCaseId("aj___" + gBaseWFRXX.getAjbh()); + return controlRecord; + } + + /** + * 判断罪名 + * + * @param charge 罪名 + * @return 罪名 + */ + String chargeContain(String charge) { + String res = Charge.contains(charge); + if (res != null) { + return res; + } + if (charge.contains("故意伤害") && (charge.contains("重伤") || + charge.contains("死亡"))) { + return "涉故意伤害致人重伤或死亡"; + } + return null; + } + + RiskPersonal createPerson(GBaseSYRKXX xx, String tag) { + RiskPersonal person = new RiskPersonal(); + person.setName(xx.getXm()); + person.setMobileNumber(xx.getLxdh()); + person.setIdCode(xx.getGmsfhm()); + person.setControlDepartId(xx.getSspcsdm()); + person.setControlDepartName(xx.getSspcsmc()); + try{ + int age = AgeUtil.idCard2Age(person.getIdCode(), LocalDate.now()); + if(age <= 6) { + return null; + } + person.setAge(age); + } catch (Exception e) { + return null; + } + if(person.getGender() == null) { + try{ + int gender = person.getIdCode().length() == 18 ? Integer.valueOf(person.getIdCode().substring(16, 17)) : Integer.valueOf(person.getIdCode().substring(14, 15)); + // 结果0男1女 余数偶女奇男 + person.setGender(gender % 2 == 0 ?"2":"1"); + } catch (Exception e) { + return null; + } + } + person.setCreateTime(LocalDateTime.now()); + person.setControlTime(LocalDateTime.now()); + person.setTags(tag); + return person; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/task/TaskService.java b/src/main/java/com/biutag/supervisiondata/task/TaskService.java new file mode 100644 index 0000000..189c20d --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/task/TaskService.java @@ -0,0 +1,22 @@ +package com.biutag.supervisiondata.task; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + + +/** + * @author kami on 2024-07-25 10:52:39 + * @version 0.0.1 + * @since 1.8 + */ +@Component +@Slf4j +public class TaskService { + + + @Scheduled(cron = "0 0/10 * * * ?") + public void ageModel() { + } + +} diff --git a/src/main/java/com/biutag/supervisiondata/util/AgeUtil.java b/src/main/java/com/biutag/supervisiondata/util/AgeUtil.java new file mode 100644 index 0000000..ce473e8 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/util/AgeUtil.java @@ -0,0 +1,35 @@ +package com.biutag.supervisiondata.util; + +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * @author kami on 2024-11-11 14:25:33 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@UtilityClass +public class AgeUtil { + + /** + * 身份证提取年龄 + * @param idNumber 证件号 + * @param now 当前日期 + * @return + */ + public static Integer idCard2Age(String idNumber, LocalDate now) { + try { + String bornDate = idNumber.length() == 15 ? "19".concat(idNumber.substring(6, 12)) : + idNumber.substring(6, 14); + LocalDate d = LocalDate.parse(bornDate, DateTimeFormatter.ofPattern("yyyyMMdd")); + return d.until(now).getYears(); + } catch (Exception e) { + log.info("身份证转年龄异常"); + } + return null; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/util/BhUtil.java b/src/main/java/com/biutag/supervisiondata/util/BhUtil.java new file mode 100644 index 0000000..37464a7 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/util/BhUtil.java @@ -0,0 +1,42 @@ +package com.biutag.supervisiondata.util; + +import lombok.experimental.UtilityClass; + +/** + * @author kami on 2024-11-13 13:21:38 + * @version 0.0.1 + * @since 1.8 + */ +@UtilityClass +public class BhUtil { + + private static final String AJ_PIX = "aj___"; + + private static final String JJ_PIX = "jjd___"; + + private static final String PET_PIX = "pet___"; + + private static final String SF_PIX = "sf___"; + + private static final String ZY_PIX = "zy___"; + + public static String ajBh(String id) { + return AJ_PIX+id; + } + + public static String jjdBh(String id) { + return JJ_PIX+id; + } + + public static String petBh(String id) { + return PET_PIX+id; + } + + public static String sfBh(String id) { + return SF_PIX+id; + } + + public static String zyBh(String id) { + return ZY_PIX+id; + } +} diff --git a/src/main/java/com/biutag/supervisiondata/util/PatternUtil.java b/src/main/java/com/biutag/supervisiondata/util/PatternUtil.java new file mode 100644 index 0000000..6147baf --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/util/PatternUtil.java @@ -0,0 +1,55 @@ +package com.biutag.supervisiondata.util; + +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author kami on 2024-11-08 20:18:20 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@UtilityClass +public class PatternUtil { + + private static final Pattern ID_CARD = Pattern.compile("\\d{17}[\\d|x|X]|\\d{15}"); + + private static final Pattern MARK = Pattern.compile("1"); + + public static String takeIdCard(String content) { + StringBuilder str = new StringBuilder(); + if(content == null) { + return str.toString(); + } + Matcher IdCardNumber = ID_CARD.matcher(content); + while (IdCardNumber.find()) { + str.append(IdCardNumber.group()).append(","); + } + if(str.isEmpty()) { + return str.toString(); + } + return str.substring(0, str.length()-1); + } + + public static List takeMarkPosition(String content) { + List indexes = new ArrayList<>(); + if(content == null) { + return indexes; + } + Matcher code = MARK.matcher(content); + while (code.find()) { + indexes.add(code.start()+1); + } + return indexes; + } + + public static void main(String[] args) { + String test = "00001100101"; + log.info("{}", takeMarkPosition(test)); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/util/RandomUtil.java b/src/main/java/com/biutag/supervisiondata/util/RandomUtil.java new file mode 100644 index 0000000..f993cbf --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/util/RandomUtil.java @@ -0,0 +1,89 @@ +package com.biutag.supervisiondata.util; + +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ThreadLocalRandom; + +/** + * 随机数工具类 + */ +@Slf4j +@UtilityClass +public class RandomUtil { + private static final String ALL_CHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*"; + private static final String LETTER_CHAR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + private static final String NUMBER_CHAR = "0123456789"; + + /** + * 获取定长的随机数,包含大小写、数字 + * @param length 随机数长度 + * @return 随机字符串 + */ + public static String generateString(int length) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + sb.append(ALL_CHAR.charAt(ThreadLocalRandom.current().nextInt(ALL_CHAR.length()))); + } + return sb.toString(); + } + + /** + * 获取定长的随机数,包含大小写字母 + * + * @param length 随机数长度 + * @return 随机字符串 + */ + public static String generateMixString(int length) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + sb.append(LETTER_CHAR.charAt(ThreadLocalRandom.current().nextInt(LETTER_CHAR.length()))); + } + return sb.toString(); + } + + /** + * 获取定长的随机数,只包含小写字母 + * @param length 随机数长度 + * @return 随机字符串 + */ + public static String generateLowerString(int length) { + return generateMixString(length).toLowerCase(); + } + + /** + * 获取定长的随机数,只包含大写字母 + * @param length 随机数长度 + * @return 随机字符串 + */ + public static String generateUpperString(int length) { + return generateMixString(length).toUpperCase(); + } + + /** + * 获取定长的随机数,只包含数字 + * @param length 随机数长度 + * @return 随机字符串 + */ + public static String generateNumberString(int length) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + sb.append(NUMBER_CHAR.charAt(ThreadLocalRandom.current().nextInt(NUMBER_CHAR.length()))); + } + return sb.toString(); + } + + /** + * 获取定长的随机数,只包含大写字母 + * + * @param length 随机数长度 + * @return + */ + public static String generateUpperStringFast(int length) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + sb.append(LETTER_CHAR.charAt(ThreadLocalRandom.current().nextInt(length))); + } + return sb.toString(); + } +} diff --git a/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java b/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java new file mode 100644 index 0000000..c153059 --- /dev/null +++ b/src/main/java/com/biutag/supervisiondata/util/TxtUtil.java @@ -0,0 +1,33 @@ +package com.biutag.supervisiondata.util; + +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Date; + +/** + * @author kami on 2024-07-15 15:47:40 + * @version 0.0.1 + * @since 1.8 + */ +@Slf4j +@UtilityClass +public class TxtUtil { + + public static void write(String str, String path) { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(path))) { + bw.write(str); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + log.info("{}", Date.from(LocalDateTime.of(2024,1,1,0,0,0).atZone(ZoneId.systemDefault()).toInstant())); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..c22c243 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,85 @@ +server: + port: 8567 + +spring: + application: + name: supervision-data + threads: + virtual: + enabled: true + jackson: + date-format: yyyy-MM-dd HH:mm:ss + default-property-inclusion: non_null + time-zone: GMT+8 + servlet: + multipart: + max-file-size: 1024MB + max-request-size: 1024MB + file-size-threshold: 0 + datasource: + mine: + jdbc-url: jdbc:mysql://65.47.6.109:3306/negative?useSSL=false&rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2b8 +# jdbc-url: jdbc:mysql://172.31.217.20:31868/negative?useSSL=false&rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2b8 + username: root + password: ip12341234 + driver-class-name: com.mysql.cj.jdbc.Driver + type: com.zaxxer.hikari.HikariDataSource + hikari: + minimum-idle: 5 + idle-timeout: 30000 + max-lifetime: 30000 + connection-timeout: 30000 + connection-test-query: SELECT 1 + dwd: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.gbase.jdbc.Driver + jdbc-url: jdbc:gbase://65.47.16.209:5258/csga_dwd + username: csga_wdpc + password: csga_wdpc@123 + hikari: + minimum-idle: 5 + idle-timeout: 30000 + max-lifetime: 30000 + connection-timeout: 30000 + connection-test-query: SELECT 1 + ads: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.gbase.jdbc.Driver + jdbc-url: jdbc:gbase://65.47.16.209:5258/csga_ads + username: csga_wdpc + password: csga_wdpc@123 + hikari: + minimum-idle: 5 + idle-timeout: 30000 + max-lifetime: 30000 + connection-timeout: 30000 + connection-test-query: SELECT 1 + data: + redis: + host: 65.47.6.109 + # 端口,默认为6379 + port: 6379 + password: ip1234!@#$ + database: 0 + lettuce: + pool: + max-active: 500 + max-wait: 3000 + max-idle: 500 + min-idle: 20 + +# Log +logging: + level: + com: + biutag: + supervisiondata: + service: debug + + +management: + endpoint: + web: + exposure: + include: 'health ' + diff --git a/src/main/resources/lib/gbase-connector-java-8.3.81.53-build52.8-bin.jar b/src/main/resources/lib/gbase-connector-java-8.3.81.53-build52.8-bin.jar new file mode 100644 index 0000000000000000000000000000000000000000..778cd3972244cb7e354ba31af6b0fb693b604a07 GIT binary patch literal 786598 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�rhHu=GieSz)`wQp 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 )XHu&^m@ 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
NLB5_p~Wcx9**}fWufsd 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�&o%vKMs#`0s?3CNY;NYD+tKc}Ry66*c)}cc|tH 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 z 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�DWME)qHsyT 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 kfGYbzrNHN10w2~%ez^>+7L#IF + + logs + + + + + + + + + + + + ${log.colorPattern} + UTF-8 + + + + + + + ${log.path}/info/info.%d{yyyy-MM-dd}.log + ${log.maxHistory} + + + ${log.pattern} + + + INFO + ACCEPT + DENY + + + + + + ${log.path}/error/error.%d{yyyy-MM-dd}.log + ${log.maxHistory} + + + ${log.pattern} + + + ERROR + ACCEPT + DENY + + + + + + + + + + + + + + diff --git a/src/main/resources/mapper/ads/GBaseSYRKXXMapper.xml b/src/main/resources/mapper/ads/GBaseSYRKXXMapper.xml new file mode 100644 index 0000000..f142eb6 --- /dev/null +++ b/src/main/resources/mapper/ads/GBaseSYRKXXMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseAJJBXXMapper.xml b/src/main/resources/mapper/dwd/GBaseAJJBXXMapper.xml new file mode 100644 index 0000000..d0b43c0 --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseAJJBXXMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseBAXXMapper.xml b/src/main/resources/mapper/dwd/GBaseBAXXMapper.xml new file mode 100644 index 0000000..a301acf --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseBAXXMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseBAYJMapper.xml b/src/main/resources/mapper/dwd/GBaseBAYJMapper.xml new file mode 100644 index 0000000..f086454 --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseBAYJMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseHYMapper.xml b/src/main/resources/mapper/dwd/GBaseHYMapper.xml new file mode 100644 index 0000000..299c05a --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseHYMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseJJDMapper.xml b/src/main/resources/mapper/dwd/GBaseJJDMapper.xml new file mode 100644 index 0000000..0844dd4 --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseJJDMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseSHRXXMapper.xml b/src/main/resources/mapper/dwd/GBaseSHRXXMapper.xml new file mode 100644 index 0000000..19cc0fa --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseSHRXXMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseTbDZdrylbMapper.xml b/src/main/resources/mapper/dwd/GBaseTbDZdrylbMapper.xml new file mode 100644 index 0000000..975a6da --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseTbDZdrylbMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseWFRXXMapper.xml b/src/main/resources/mapper/dwd/GBaseWFRXXMapper.xml new file mode 100644 index 0000000..b9cff50 --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseWFRXXMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseZDRYMapper.xml b/src/main/resources/mapper/dwd/GBaseZDRYMapper.xml new file mode 100644 index 0000000..c53e490 --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseZDRYMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseZDXLMapper.xml b/src/main/resources/mapper/dwd/GBaseZDXLMapper.xml new file mode 100644 index 0000000..9e5dcab --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseZDXLMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/dwd/GBaseZYRYXXMapper.xml b/src/main/resources/mapper/dwd/GBaseZYRYXXMapper.xml new file mode 100644 index 0000000..c1c030b --- /dev/null +++ b/src/main/resources/mapper/dwd/GBaseZYRYXXMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/DataCaseVerifMapper.xml b/src/main/resources/mapper/mine/DataCaseVerifMapper.xml new file mode 100644 index 0000000..daf7c7c --- /dev/null +++ b/src/main/resources/mapper/mine/DataCaseVerifMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/DataPetition12337Mapper.xml b/src/main/resources/mapper/mine/DataPetition12337Mapper.xml new file mode 100644 index 0000000..d638046 --- /dev/null +++ b/src/main/resources/mapper/mine/DataPetition12337Mapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/DataPetitionComplaintMapper.xml b/src/main/resources/mapper/mine/DataPetitionComplaintMapper.xml new file mode 100644 index 0000000..612f198 --- /dev/null +++ b/src/main/resources/mapper/mine/DataPetitionComplaintMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/ModelMapper.xml b/src/main/resources/mapper/mine/ModelMapper.xml new file mode 100644 index 0000000..0533a04 --- /dev/null +++ b/src/main/resources/mapper/mine/ModelMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskModelTaskClueMapper.xml b/src/main/resources/mapper/mine/RiskModelTaskClueMapper.xml new file mode 100644 index 0000000..9b41428 --- /dev/null +++ b/src/main/resources/mapper/mine/RiskModelTaskClueMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskPersonalControlRecordMapper.xml b/src/main/resources/mapper/mine/RiskPersonalControlRecordMapper.xml new file mode 100644 index 0000000..b9db295 --- /dev/null +++ b/src/main/resources/mapper/mine/RiskPersonalControlRecordMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskPersonalMapper.xml b/src/main/resources/mapper/mine/RiskPersonalMapper.xml new file mode 100644 index 0000000..41a72a6 --- /dev/null +++ b/src/main/resources/mapper/mine/RiskPersonalMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskPersonalTagMapper.xml b/src/main/resources/mapper/mine/RiskPersonalTagMapper.xml new file mode 100644 index 0000000..5fa3036 --- /dev/null +++ b/src/main/resources/mapper/mine/RiskPersonalTagMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskScoreRuleMapper.xml b/src/main/resources/mapper/mine/RiskScoreRuleMapper.xml new file mode 100644 index 0000000..1956ac5 --- /dev/null +++ b/src/main/resources/mapper/mine/RiskScoreRuleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskTaskMapper.xml b/src/main/resources/mapper/mine/RiskTaskMapper.xml new file mode 100644 index 0000000..86a99df --- /dev/null +++ b/src/main/resources/mapper/mine/RiskTaskMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/RiskTestMapper.xml b/src/main/resources/mapper/mine/RiskTestMapper.xml new file mode 100644 index 0000000..5ea035e --- /dev/null +++ b/src/main/resources/mapper/mine/RiskTestMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/SupDepartMapper.xml b/src/main/resources/mapper/mine/SupDepartMapper.xml new file mode 100644 index 0000000..c6bcd76 --- /dev/null +++ b/src/main/resources/mapper/mine/SupDepartMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/mapper/mine/SupExternalDepartMapper.xml b/src/main/resources/mapper/mine/SupExternalDepartMapper.xml new file mode 100644 index 0000000..b5052f9 --- /dev/null +++ b/src/main/resources/mapper/mine/SupExternalDepartMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/test/java/com/biutag/supervisiondata/SupervisionDataApplicationTests.java b/src/test/java/com/biutag/supervisiondata/SupervisionDataApplicationTests.java new file mode 100644 index 0000000..24a0e21 --- /dev/null +++ b/src/test/java/com/biutag/supervisiondata/SupervisionDataApplicationTests.java @@ -0,0 +1,13 @@ +package com.biutag.supervisiondata; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SupervisionDataApplicationTests { + + @Test + void contextLoads() { + } + +}