Added signals_segment_map table; complete data preparing for natural persons
This commit is contained in:
parent
ec93c4b726
commit
b9973f8cdd
6 changed files with 119 additions and 2 deletions
|
|
@ -0,0 +1,15 @@
|
||||||
|
package ru.nbch.credit_tracker.entities.app;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class SegmentMap {
|
||||||
|
private String memberCode;
|
||||||
|
private Integer segment;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package ru.nbch.credit_tracker.mapper.signal;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import ru.nbch.credit_tracker.entities.app.SegmentMap;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SegmentMapMapper {
|
||||||
|
|
||||||
|
List<SegmentMap> findAllSegmentMaps();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -15,6 +15,7 @@ import ru.nbch.credit_tracker.model.SignalKafkaEvent;
|
||||||
import ru.nbch.credit_tracker.model.UserPackagePhoneData;
|
import ru.nbch.credit_tracker.model.UserPackagePhoneData;
|
||||||
import ru.nbch.credit_tracker.service.nbch.SourceService;
|
import ru.nbch.credit_tracker.service.nbch.SourceService;
|
||||||
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
|
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
|
||||||
|
import ru.nbch.credit_tracker.service.signal.SegmentMapService;
|
||||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -34,16 +35,19 @@ public class KafkaMonitoringService {
|
||||||
|
|
||||||
private final PackageRecordsService packageRecordsService;
|
private final PackageRecordsService packageRecordsService;
|
||||||
private final SourceService sourceService;
|
private final SourceService sourceService;
|
||||||
|
private final SegmentMapService segmentMapService;
|
||||||
|
|
||||||
private final CreditTrackerSettings config;
|
private final CreditTrackerSettings config;
|
||||||
|
|
||||||
public KafkaMonitoringService(@Qualifier("signalKafkaEventQueue") BlockingQueue<SignalKafkaEvent> signalEventsQueue,
|
public KafkaMonitoringService(@Qualifier("signalKafkaEventQueue") BlockingQueue<SignalKafkaEvent> signalEventsQueue,
|
||||||
PackageRecordsService packageRecordsService,
|
PackageRecordsService packageRecordsService,
|
||||||
SourceService sourceService,
|
SourceService sourceService,
|
||||||
|
SegmentMapService segmentMapService,
|
||||||
CreditTrackerSettings config) {
|
CreditTrackerSettings config) {
|
||||||
this.signalEventsQueue = signalEventsQueue;
|
this.signalEventsQueue = signalEventsQueue;
|
||||||
this.packageRecordsService = packageRecordsService;
|
this.packageRecordsService = packageRecordsService;
|
||||||
this.sourceService = sourceService;
|
this.sourceService = sourceService;
|
||||||
|
this.segmentMapService = segmentMapService;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,6 +77,7 @@ public class KafkaMonitoringService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void process(List<PackageMessage> messages) {
|
private void process(List<PackageMessage> messages) {
|
||||||
|
Map<String, Integer> segmentMap = segmentMapService.loadSegmentMap();
|
||||||
List<Integer> fids = messages.stream().map(PackageMessage::getFid).collect(Collectors.toList());
|
List<Integer> fids = messages.stream().map(PackageMessage::getFid).collect(Collectors.toList());
|
||||||
List<String> memberCodes = messages.stream()
|
List<String> memberCodes = messages.stream()
|
||||||
.map(message -> message.getMemberCode().substring(0, 6))
|
.map(message -> message.getMemberCode().substring(0, 6))
|
||||||
|
|
@ -107,7 +112,7 @@ public class KafkaMonitoringService {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer signalType = CTUtil.checkBusCategory(busCategory);
|
int signalType = CTUtil.checkBusCategory(busCategory);
|
||||||
|
|
||||||
List<PhonesMap> phonesMapList = phonesDataMap.get(fid);
|
List<PhonesMap> phonesMapList = phonesDataMap.get(fid);
|
||||||
|
|
||||||
|
|
@ -131,10 +136,17 @@ public class KafkaMonitoringService {
|
||||||
String subjectId = userPackagePhoneData.getSubjectId();
|
String subjectId = userPackagePhoneData.getSubjectId();
|
||||||
String signalTypes = userPackagePhoneData.getSignalTypes();
|
String signalTypes = userPackagePhoneData.getSignalTypes();
|
||||||
|
|
||||||
if (signalTypes.contains(signalType.toString())) {
|
if (signalTypes.contains(Integer.toString(signalType))) {
|
||||||
SignalKafkaEvent event = new SignalKafkaEvent();
|
SignalKafkaEvent event = new SignalKafkaEvent();
|
||||||
event.setEventType(EventType.WRITE);
|
event.setEventType(EventType.WRITE);
|
||||||
event.setUserPackagePhoneData(userPackagePhoneData);
|
event.setUserPackagePhoneData(userPackagePhoneData);
|
||||||
|
event.setSubjectId(subjectId);
|
||||||
|
event.setFlagDebt5000(flagDebt5000);
|
||||||
|
event.setFlag90days(flag90days);
|
||||||
|
event.setSignalType(Integer.toString(signalType));
|
||||||
|
event.setBusCategory(signalType == 3 ? busCategory : null);
|
||||||
|
event.setSegment(segmentMap.get(memberCode.substring(0, 6)));
|
||||||
|
|
||||||
putToQueue(event);
|
putToQueue(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
package ru.nbch.credit_tracker.service.signal;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.nbch.credit_tracker.entities.app.SegmentMap;
|
||||||
|
import ru.nbch.credit_tracker.mapper.signal.SegmentMapMapper;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class SegmentMapService {
|
||||||
|
|
||||||
|
private final SegmentMapMapper mapper;
|
||||||
|
|
||||||
|
public SegmentMapService(SegmentMapMapper mapper) {
|
||||||
|
this.mapper = mapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> loadSegmentMap() {
|
||||||
|
// TODO guava cache
|
||||||
|
List<SegmentMap> segmentMaps = mapper.findAllSegmentMaps();
|
||||||
|
if (segmentMaps.isEmpty()) {
|
||||||
|
log.warn("No segmentMaps found");
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
return segmentMaps.stream()
|
||||||
|
.flatMap(item -> Arrays.stream(item.getMemberCode().split(",\\s*"))
|
||||||
|
.map(code -> Map.entry(code.trim(), item.getSegment()))
|
||||||
|
)
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
Map.Entry::getKey,
|
||||||
|
Map.Entry::getValue,
|
||||||
|
(existing, replacement) -> existing
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
|
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.SegmentMapMapper">
|
||||||
|
|
||||||
|
<resultMap id="appVersionResultMap" type="ru.nbch.credit_tracker.entities.app.AppVersion">
|
||||||
|
<result property="dbVersion" column="db_version"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="findAllSegmentMaps" resultType="ru.nbch.credit_tracker.entities.app.SegmentMap">
|
||||||
|
SELECT memberCode, segment
|
||||||
|
FROM signals_segment_map
|
||||||
|
</select>
|
||||||
|
</mapper>
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
alter table signals_user_packages
|
||||||
|
add subject_type smallint;
|
||||||
|
|
||||||
create index signals_phone_fid_map_phone_l_index
|
create index signals_phone_fid_map_phone_l_index
|
||||||
on signals_phone_fid_map (phone_l);
|
on signals_phone_fid_map (phone_l);
|
||||||
|
|
||||||
|
|
@ -16,6 +19,9 @@ CREATE TABLE signals_legal_fid_map
|
||||||
reg_num bigint
|
reg_num bigint
|
||||||
);
|
);
|
||||||
|
|
||||||
|
alter table signals_legal_fid_map
|
||||||
|
owner to credit_tracker_user;
|
||||||
|
|
||||||
-- будем искать данные по связке inn + reg_num
|
-- будем искать данные по связке inn + reg_num
|
||||||
create index signals_legal_fid_map_inn_reg_num_index
|
create index signals_legal_fid_map_inn_reg_num_index
|
||||||
on signals_legal_fid_map (inn, reg_num);
|
on signals_legal_fid_map (inn, reg_num);
|
||||||
|
|
@ -32,12 +38,26 @@ CREATE TABLE signals_legals_map
|
||||||
last_rejected_date timestamp
|
last_rejected_date timestamp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
alter table signals_legals_map
|
||||||
|
owner to credit_tracker_user;
|
||||||
|
|
||||||
create index signals_legals_map_fid_index
|
create index signals_legals_map_fid_index
|
||||||
on signals_legals_map (fid);
|
on signals_legals_map (fid);
|
||||||
|
|
||||||
ALTER TABLE signals_legals_map
|
ALTER TABLE signals_legals_map
|
||||||
ADD CONSTRAINT signals_legals_map_inn_reg_num_key UNIQUE (inn, reg_num);
|
ADD CONSTRAINT signals_legals_map_inn_reg_num_key UNIQUE (inn, reg_num);
|
||||||
|
|
||||||
|
CREATE TABLE signals_segment_map
|
||||||
|
(
|
||||||
|
memberСode text,
|
||||||
|
segment smallint
|
||||||
|
);
|
||||||
|
|
||||||
|
alter table signals_segment_map
|
||||||
|
owner to credit_tracker_user;
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO new fields for hits
|
||||||
UPDATE app_version
|
UPDATE app_version
|
||||||
SET db_version = '2.22'
|
SET db_version = '2.22'
|
||||||
WHERE db_version = '2.21';
|
WHERE db_version = '2.21';
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue