diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java index 81503c9..f060aea 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java @@ -154,7 +154,7 @@ public class SignalFacade { } // в отдельном потоке запускаем поиск фидов и расчет флагов просрочек - registerFidsAndDebts(monitoringRequest, packageId); + registerFidsAndDebts(packageId); return ResponseEntity.ok().body(new PathResource("D:\\folder_name\\legal.xml")); // TODO generate success response } @@ -218,19 +218,19 @@ public class SignalFacade { return null; } - private void registerFidsAndDebts(MonitoringRequest monitoringRequest, Integer packageId) { + private void registerFidsAndDebts(Integer packageId) { executor.execute(() -> { try { - List phoneFidsData = signalService.registerSubjectsFidAndDebts(monitoringRequest, packageId); + List phoneFidsData = signalService.registerSubjectsFidAndDebts(packageId); if (!phoneFidsData.isEmpty()) { - Signals signals = signalService.buildSignals(monitoringRequest, phoneFidsData); + Signals signals = signalService.buildSignals(packageId, phoneFidsData); // TODO validate xsd? String response = null; // response = signalRestService.update(signals); if (response == null) { - signalService.setPackageStatus(monitoringRequest, Status.ON_MONITORING); + signalService.setPackageStatus(packageId, Status.ON_MONITORING); } else { - signalService.setPackageStatus(monitoringRequest, Status.ERROR); + signalService.setPackageStatus(packageId, Status.ERROR); } } } catch (Exception e) { diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java index aeef50e..ba3ba23 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java @@ -4,6 +4,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest; import ru.nbch.credit_tracker.entities.monitoring_request.Subject; +import ru.nbch.credit_tracker.service.SignalService; import java.time.LocalDateTime; import java.util.List; @@ -19,7 +20,11 @@ public interface SignalMapper { void insertPackage(@Param("request") MonitoringRequest request, @Param("creadedAt") LocalDateTime creadedAt, @Param("status") String status); - void registerSubjectsFidAndDebts(@Param("id") String id, @Param("fid") Integer fid, @Param("flagDebt5000") Integer flagDebt5000, @Param("flag90") Integer flag90, @Param("packageId") Integer packageId); + void registerSubjectsFidAndDebts(@Param("id") Integer id, @Param("fid") Integer fid, @Param("flagDebt5000") Integer flagDebt5000, @Param("flag90") Integer flag90); - void setPackageStatus(@Param("request") MonitoringRequest request, @Param("status") String status); + void setPackageStatus(@Param("packageId") Integer packageId, @Param("status") String status); + + List findSubjectsData(@Param("packageId") Integer packageId); + + SignalService.PackageData findPackageData(@Param("id") Integer id); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java index 6654dfd..d12e200 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -1,5 +1,7 @@ package ru.nbch.credit_tracker.service; +import lombok.Getter; +import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest; @@ -50,11 +52,12 @@ public class SignalService { return packageId; } - public List registerSubjectsFidAndDebts(MonitoringRequest request, Integer packageId) { - List fidsPhoneDataList = phoneService.findFidsPhoneData(request.getSubjects().getSubject()); + public List registerSubjectsFidAndDebts(Integer packageId) { + List subjects = mapper.findSubjectsData(packageId); + List fidsPhoneDataList = phoneService.findFidsPhoneData(subjects); fidsPhoneDataList.forEach(phoneData -> { FlagsService.FlagsFidData flagsData = flagsService.findFlags(phoneData.getFid()); - mapper.registerSubjectsFidAndDebts(phoneData.getId(), phoneData.getFid(), flagsData.getFlagDebt5000(), flagsData.getFlag90days(), packageId); + mapper.registerSubjectsFidAndDebts(phoneData.getId(), phoneData.getFid(), flagsData.getFlagDebt5000(), flagsData.getFlag90days()); }); return fidsPhoneDataList; @@ -64,19 +67,20 @@ public class SignalService { mapper.insertPackage(request, LocalDateTime.now(), Status.REJECTED.name()); } - public void setPackageStatus(MonitoringRequest request, Status status) { - mapper.setPackageStatus(request, status.name()); + public void setPackageStatus(Integer packageId, Status status) { + mapper.setPackageStatus(packageId, status.name()); } - public Signals buildSignals(MonitoringRequest request, List fids) { + public Signals buildSignals(Integer packageId, List fids) { + PackageData packageData = mapper.findPackageData(packageId); Signals signals = new Signals(); signals.setOnline("2"); // Всегда=2 (только онлайн-сигналы) - signals.setId(request.getUserId().substring(0, 6) + "_" + request.getPackageName()); // _ + signals.setId(packageData.getUserId().substring(0, 6) + "_" + packageData.getPackageName()); // _ Auth auth = new Auth(); auth.setUser("test_user"); // TODO from properties // Внутренний логин НБКИ signals.setAuth(auth); for (PhoneService.FidsPhoneData fidData : fids) { - Person person = findPerson(fidData.getFid(), fidData.getId()); + Person person = findPerson(fidData.getFid(), fidData.getSubjectId()); if (person != null) { signals.getConditions().getPersons().getPerson().add(person); } @@ -145,4 +149,19 @@ public class SignalService { } return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); } + + @Getter + @Setter + public static class PackageData { + private String userId; + private String packageName; + } + + @Getter + @Setter + public static class SubjectData { + private Integer id; + private String subjectId; + private String phone; + } } diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java index 62f19b0..ce2ceb7 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java @@ -4,8 +4,8 @@ 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 ru.nbch.credit_tracker.service.SignalService; import java.util.ArrayList; import java.util.List; @@ -19,13 +19,13 @@ public class PhoneService { this.mapper = mapper; } - public List findFidsPhoneData(List subjects) { + public List findFidsPhoneData(List subjects) { List fidsPhoneDataList = new ArrayList<>(); subjects.forEach(subject -> { - String phone = "9" + subject.getClientId(); + String phone = "9" + subject.getPhone(); Integer fid = mapper.findFidByNumber(phone); if (fid != null) { - fidsPhoneDataList.add(new FidsPhoneData(fid, phone, subject.getId())); + fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), fid, phone, subject.getSubjectId())); } }); return fidsPhoneDataList; @@ -35,8 +35,9 @@ public class PhoneService { @Setter @AllArgsConstructor public static class FidsPhoneData { + private Integer id; private Integer fid; private String phone; - private String id; + private String subjectId; } } diff --git a/src/main/resources/mybatis/mapper/signal/SignalMapper.xml b/src/main/resources/mybatis/mapper/signal/SignalMapper.xml index 958403f..51fc988 100644 --- a/src/main/resources/mybatis/mapper/signal/SignalMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/SignalMapper.xml @@ -5,6 +5,17 @@ + + + + + + + + + + + + SELECT id, subject_id, phone + FROM signals_phone_fid_map + WHERE package_id = #{packageId} + + + + \ No newline at end of file