Added Fid registration for signals_phone_fid_map

This commit is contained in:
Mikhail Trofimov 2025-06-06 15:04:49 +03:00
parent e860950552
commit 122c6d2419
9 changed files with 97 additions and 8 deletions

View file

@ -38,10 +38,10 @@ public class ScoringDataSourceConfig {
try (Connection connection = dataSource.getConnection()) {
connection.isValid(3);
} catch (SQLException e) {
log.error("Unable to connect to Scoring url={}", config.getIndicDataSourceSettings().url(), e);
log.error("Unable to connect to Scoring url={}", config.getScoringDataSourceSettings().url(), e);
throw e;
}
log.info("Connected to Scoring: url={}", config.getIndicDataSourceSettings().url());
log.info("Connected to Scoring: url={}", config.getScoringDataSourceSettings().url());
return dataSource;
}

View file

@ -122,7 +122,8 @@ public class SignalFacade {
return getBadResponse(SignalError.ERROR_007);
}
signalService.registerPackage(monitoringRequest);
Integer packageId = signalService.registerPackage(monitoringRequest);
signalService.registerSubjects(monitoringRequest, packageId);
} catch (Exception e) {
log.error(e.getMessage(), e);
String errorPath = failureAnswerGenerator.generateFailureAnswer(SignalError.ERROR_100);

View file

@ -0,0 +1,9 @@
package ru.nbch.credit_tracker.mapper.indic;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface PhoneMapper {
Integer findFidByNumber(@Param("phone") String phone);
}

View file

@ -18,4 +18,6 @@ public interface SignalMapper {
void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Integer packageId);
void insertPackage(@Param("request") MonitoringRequest request, @Param("creadedAt") LocalDateTime creadedAt, @Param("status") String status);
void registerSubjectsFid(@Param("id") String id, @Param("fid") Integer fid, @Param("packageId") Integer packageId);
}

View file

@ -4,15 +4,20 @@ import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.SignalMapper;
import ru.nbch.credit_tracker.service.indic.PhoneService;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class SignalService {
private final SignalMapper mapper;
public SignalService(SignalMapper mapper) {
private final SignalMapper mapper;
private final PhoneService phoneService;
public SignalService(SignalMapper mapper, PhoneService phoneService) {
this.mapper = mapper;
this.phoneService = phoneService;
}
public boolean isPackageNotUnique(MonitoringRequest request) {
@ -20,12 +25,21 @@ public class SignalService {
return mapper.isPackageNotUnique(userId.substring(0, 6),request.getPackageName());
}
public void registerPackage(MonitoringRequest request) {
public Integer registerPackage(MonitoringRequest request) {
Integer packageId = mapper.registerPackage(request, LocalDateTime.now(), Status.PROCESSING.name());
mapper.registerSubjects(request.getSubjects().getSubject(), packageId);
return packageId;
}
public void rejectPackage(MonitoringRequest request) {
mapper.insertPackage(request, LocalDateTime.now(), Status.REJECTED.name());
}
public void registerSubjects(MonitoringRequest request, Integer packageId) {
List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(request.getSubjects().getSubject());
fidsPhoneDataList.forEach(phoneData -> {
mapper.registerSubjectsFid(phoneData.getId(), phoneData.getFid(), packageId);
});
}
}

View file

@ -0,0 +1,42 @@
package ru.nbch.credit_tracker.service.indic;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.monitoring_request.Subject;
import ru.nbch.credit_tracker.mapper.indic.PhoneMapper;
import java.util.ArrayList;
import java.util.List;
@Service
public class PhoneService {
private final PhoneMapper mapper;
public PhoneService(PhoneMapper mapper) {
this.mapper = mapper;
}
public List<FidsPhoneData> findFidsPhoneData(List<Subject> subjects) {
List<FidsPhoneData> fidsPhoneDataList = new ArrayList<>();
subjects.forEach(subject -> {
String phone = "9" + subject.getClientId();
Integer fid = mapper.findFidByNumber(phone);
if (fid != null) {
fidsPhoneDataList.add(new FidsPhoneData(fid, phone, subject.getId()));
}
});
return fidsPhoneDataList;
}
@Getter
@Setter
@AllArgsConstructor
public static class FidsPhoneData {
private Integer fid;
private String phone;
private String id;
}
}

View file

@ -4,8 +4,8 @@ spring.application.name=credit_tracker
# indic
ct.indic-data-source-settings.driver=com.ibm.db2.jcc.DB2Driver
ct.indic-data-source-settings.url=jdbc:db2://10.230.227.101:2668/cprosd22:currentSchema=INDIC;
ct.indic-data-source-settings.username=ros9appl
ct.indic-data-source-settings.password=R0s9Appl
ct.indic-data-source-settings.username=tester
ct.indic-data-source-settings.password=tester
# signal
ct.signal-data-source-settings.driver=org.postgresql.Driver

View file

@ -0,0 +1,15 @@
<?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.indic.PhoneMapper">
<select id="findFidByNumber" resultType="java.lang.Integer">
SELECT FID
FROM PHONE_NORM
WHERE NUMBER = #{phone}
ORDER BY FILE_SINCE_DT DESC, FID DESC
LIMIT 1
</select>
</mapper>

View file

@ -30,4 +30,10 @@
</foreach>
</insert>
<update id="registerSubjectsFid">
UPDATE signals_phone_fid_map
SET fid = #{fid}
WHERE package_id = #{packageId} AND subject_id = #{id}
</update>
</mapper>