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
|
return ResponseEntity.ok().body(new PathResource("D:\\folder_name\\legal.xml")); // TODO generate success response
|
||||||
}
|
}
|
||||||
|
|
@ -218,19 +218,19 @@ public class SignalFacade {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerFidsAndDebts(MonitoringRequest monitoringRequest, Integer packageId) {
|
private void registerFidsAndDebts(Integer packageId) {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
try {
|
try {
|
||||||
List<PhoneService.FidsPhoneData> phoneFidsData = signalService.registerSubjectsFidAndDebts(monitoringRequest, packageId);
|
List<PhoneService.FidsPhoneData> phoneFidsData = signalService.registerSubjectsFidAndDebts(packageId);
|
||||||
if (!phoneFidsData.isEmpty()) {
|
if (!phoneFidsData.isEmpty()) {
|
||||||
Signals signals = signalService.buildSignals(monitoringRequest, phoneFidsData);
|
Signals signals = signalService.buildSignals(packageId, phoneFidsData);
|
||||||
// TODO validate xsd?
|
// TODO validate xsd?
|
||||||
String response = null;
|
String response = null;
|
||||||
// response = signalRestService.update(signals);
|
// response = signalRestService.update(signals);
|
||||||
if (response == null) {
|
if (response == null) {
|
||||||
signalService.setPackageStatus(monitoringRequest, Status.ON_MONITORING);
|
signalService.setPackageStatus(packageId, Status.ON_MONITORING);
|
||||||
} else {
|
} else {
|
||||||
signalService.setPackageStatus(monitoringRequest, Status.ERROR);
|
signalService.setPackageStatus(packageId, Status.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
||||||
import ru.nbch.credit_tracker.entities.monitoring_request.Subject;
|
import ru.nbch.credit_tracker.entities.monitoring_request.Subject;
|
||||||
|
import ru.nbch.credit_tracker.service.SignalService;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
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 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;
|
package ru.nbch.credit_tracker.service;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
||||||
|
|
@ -50,11 +52,12 @@ public class SignalService {
|
||||||
return packageId;
|
return packageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<PhoneService.FidsPhoneData> registerSubjectsFidAndDebts(MonitoringRequest request, Integer packageId) {
|
public List<PhoneService.FidsPhoneData> registerSubjectsFidAndDebts(Integer packageId) {
|
||||||
List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(request.getSubjects().getSubject());
|
List<SubjectData> subjects = mapper.findSubjectsData(packageId);
|
||||||
|
List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(subjects);
|
||||||
fidsPhoneDataList.forEach(phoneData -> {
|
fidsPhoneDataList.forEach(phoneData -> {
|
||||||
FlagsService.FlagsFidData flagsData = flagsService.findFlags(phoneData.getFid());
|
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;
|
return fidsPhoneDataList;
|
||||||
|
|
@ -64,19 +67,20 @@ public class SignalService {
|
||||||
mapper.insertPackage(request, LocalDateTime.now(), Status.REJECTED.name());
|
mapper.insertPackage(request, LocalDateTime.now(), Status.REJECTED.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPackageStatus(MonitoringRequest request, Status status) {
|
public void setPackageStatus(Integer packageId, Status status) {
|
||||||
mapper.setPackageStatus(request, status.name());
|
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 signals = new Signals();
|
||||||
signals.setOnline("2"); // Всегда=2 (только онлайн-сигналы)
|
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 auth = new Auth();
|
||||||
auth.setUser("test_user"); // TODO from properties // Внутренний логин НБКИ
|
auth.setUser("test_user"); // TODO from properties // Внутренний логин НБКИ
|
||||||
signals.setAuth(auth);
|
signals.setAuth(auth);
|
||||||
for (PhoneService.FidsPhoneData fidData : fids) {
|
for (PhoneService.FidsPhoneData fidData : fids) {
|
||||||
Person person = findPerson(fidData.getFid(), fidData.getId());
|
Person person = findPerson(fidData.getFid(), fidData.getSubjectId());
|
||||||
if (person != null) {
|
if (person != null) {
|
||||||
signals.getConditions().getPersons().getPerson().add(person);
|
signals.getConditions().getPersons().getPerson().add(person);
|
||||||
}
|
}
|
||||||
|
|
@ -145,4 +149,19 @@ public class SignalService {
|
||||||
}
|
}
|
||||||
return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
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.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.springframework.stereotype.Service;
|
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.mapper.indic.PhoneMapper;
|
||||||
|
import ru.nbch.credit_tracker.service.SignalService;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -19,13 +19,13 @@ public class PhoneService {
|
||||||
this.mapper = mapper;
|
this.mapper = mapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FidsPhoneData> findFidsPhoneData(List<Subject> subjects) {
|
public List<FidsPhoneData> findFidsPhoneData(List<SignalService.SubjectData> subjects) {
|
||||||
List<FidsPhoneData> fidsPhoneDataList = new ArrayList<>();
|
List<FidsPhoneData> fidsPhoneDataList = new ArrayList<>();
|
||||||
subjects.forEach(subject -> {
|
subjects.forEach(subject -> {
|
||||||
String phone = "9" + subject.getClientId();
|
String phone = "9" + subject.getPhone();
|
||||||
Integer fid = mapper.findFidByNumber(phone);
|
Integer fid = mapper.findFidByNumber(phone);
|
||||||
if (fid != null) {
|
if (fid != null) {
|
||||||
fidsPhoneDataList.add(new FidsPhoneData(fid, phone, subject.getId()));
|
fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), fid, phone, subject.getSubjectId()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return fidsPhoneDataList;
|
return fidsPhoneDataList;
|
||||||
|
|
@ -35,8 +35,9 @@ public class PhoneService {
|
||||||
@Setter
|
@Setter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public static class FidsPhoneData {
|
public static class FidsPhoneData {
|
||||||
|
private Integer id;
|
||||||
private Integer fid;
|
private Integer fid;
|
||||||
private String phone;
|
private String phone;
|
||||||
private String id;
|
private String subjectId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,17 @@
|
||||||
|
|
||||||
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.SignalMapper">
|
<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 id="isPackageNotUnique" resultType="boolean">
|
||||||
SELECT COUNT(*) > 0
|
SELECT COUNT(*) > 0
|
||||||
FROM signals_user_packages
|
FROM signals_user_packages
|
||||||
|
|
@ -33,13 +44,25 @@
|
||||||
<update id="registerSubjectsFidAndDebts">
|
<update id="registerSubjectsFidAndDebts">
|
||||||
UPDATE signals_phone_fid_map
|
UPDATE signals_phone_fid_map
|
||||||
SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}
|
SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}
|
||||||
WHERE package_id = #{packageId} AND subject_id = #{id}
|
WHERE id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="setPackageStatus">
|
<update id="setPackageStatus">
|
||||||
UPDATE signals_user_packages
|
UPDATE signals_user_packages
|
||||||
SET status = #{status}
|
SET status = #{status}
|
||||||
WHERE membercode = #{request.userId} AND package_name = #{request.packageName}
|
WHERE id = #{packageId}
|
||||||
</update>
|
</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>
|
</mapper>
|
||||||
Loading…
Add table
Reference in a new issue