Use packageId to load data for counting flags and finding fids
This commit is contained in:
parent
69dbb5ea6e
commit
933e91365d
5 changed files with 71 additions and 23 deletions
|
|
@ -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<PhoneService.FidsPhoneData> phoneFidsData = signalService.registerSubjectsFidAndDebts(monitoringRequest, packageId);
|
||||
List<PhoneService.FidsPhoneData> 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) {
|
||||
|
|
|
|||
|
|
@ -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<SignalService.SubjectData> findSubjectsData(@Param("packageId") Integer packageId);
|
||||
|
||||
SignalService.PackageData findPackageData(@Param("id") Integer id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<PhoneService.FidsPhoneData> registerSubjectsFidAndDebts(MonitoringRequest request, Integer packageId) {
|
||||
List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(request.getSubjects().getSubject());
|
||||
public List<PhoneService.FidsPhoneData> registerSubjectsFidAndDebts(Integer packageId) {
|
||||
List<SubjectData> subjects = mapper.findSubjectsData(packageId);
|
||||
List<PhoneService.FidsPhoneData> 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<PhoneService.FidsPhoneData> fids) {
|
||||
public Signals buildSignals(Integer packageId, List<PhoneService.FidsPhoneData> fids) {
|
||||
PackageData packageData = mapper.findPackageData(packageId);
|
||||
Signals signals = new Signals();
|
||||
signals.setOnline("2"); // Всегда=2 (только онлайн-сигналы)
|
||||
signals.setId(request.getUserId().substring(0, 6) + "_" + request.getPackageName()); // <MEMBERCODE>_<PackageName>
|
||||
signals.setId(packageData.getUserId().substring(0, 6) + "_" + packageData.getPackageName()); // <MEMBERCODE>_<PackageName>
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<FidsPhoneData> findFidsPhoneData(List<Subject> subjects) {
|
||||
public List<FidsPhoneData> findFidsPhoneData(List<SignalService.SubjectData> subjects) {
|
||||
List<FidsPhoneData> 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,17 @@
|
|||
|
||||
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.SignalMapper">
|
||||
|
||||
<resultMap id="subjectDataResultMap" type="ru.nbch.credit_tracker.service.SignalService$SubjectData">
|
||||
<result property="id" column="id" />
|
||||
<result property="subjectId" column="subject_id" />
|
||||
<result property="phone" column="phone" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="packageDataResultMap" type="ru.nbch.credit_tracker.service.SignalService$PackageData">
|
||||
<result property="userId" column="membercode" />
|
||||
<result property="packageName" column="package_name" />
|
||||
</resultMap>
|
||||
|
||||
<select id="isPackageNotUnique" resultType="boolean">
|
||||
SELECT COUNT(*) > 0
|
||||
FROM signals_user_packages
|
||||
|
|
@ -33,13 +44,25 @@
|
|||
<update id="registerSubjectsFidAndDebts">
|
||||
UPDATE signals_phone_fid_map
|
||||
SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}
|
||||
WHERE package_id = #{packageId} AND subject_id = #{id}
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="setPackageStatus">
|
||||
UPDATE signals_user_packages
|
||||
SET status = #{status}
|
||||
WHERE membercode = #{request.userId} AND package_name = #{request.packageName}
|
||||
WHERE id = #{packageId}
|
||||
</update>
|
||||
|
||||
<select id="findSubjectsData" resultMap="subjectDataResultMap" resultType="java.util.List">
|
||||
SELECT id, subject_id, phone
|
||||
FROM signals_phone_fid_map
|
||||
WHERE package_id = #{packageId}
|
||||
</select>
|
||||
|
||||
<select id="findPackageData" resultMap="packageDataResultMap" resultType="ru.nbch.credit_tracker.service.SignalService$PackageData">
|
||||
SELECT membercode, package_name
|
||||
FROM signals_user_packages
|
||||
WHERE id = #{id} LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Add table
Reference in a new issue