Added writing to xml for lp
This commit is contained in:
parent
a7a59c0c10
commit
61f2420ca4
6 changed files with 92 additions and 11 deletions
|
|
@ -0,0 +1,13 @@
|
||||||
|
package ru.nbch.credit_tracker.model;
|
||||||
|
|
||||||
|
public interface IUserPackageData {
|
||||||
|
Long getPackageId();
|
||||||
|
|
||||||
|
String getUserId();
|
||||||
|
|
||||||
|
String getSignalTypes();
|
||||||
|
|
||||||
|
String getSubjectId();
|
||||||
|
|
||||||
|
String getPackageName();
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,8 @@ import lombok.*;
|
||||||
import ru.nbch.credit_tracker.entities.external_request.kafka.PackageMessage;
|
import ru.nbch.credit_tracker.entities.external_request.kafka.PackageMessage;
|
||||||
import ru.nbch.credit_tracker.enums.EventType;
|
import ru.nbch.credit_tracker.enums.EventType;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@Builder
|
@Builder
|
||||||
|
|
@ -22,6 +24,7 @@ public class SignalKafkaEvent {
|
||||||
private String signalType;
|
private String signalType;
|
||||||
private String busCategory;
|
private String busCategory;
|
||||||
private Integer segment;
|
private Integer segment;
|
||||||
|
private LocalDateTime lastRejectedDate;
|
||||||
|
|
||||||
private boolean natural;
|
private boolean natural;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,11 @@ import lombok.*;
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class UserPackageLegalData {
|
public class UserPackageLegalData implements IUserPackageData {
|
||||||
private Long packageId;
|
private Long packageId;
|
||||||
private String signalTypes;
|
private String signalTypes;
|
||||||
private String subjectId;
|
private String subjectId;
|
||||||
|
private String userId;
|
||||||
private String packageName;
|
private String packageName;
|
||||||
|
|
||||||
private Long inn;
|
private Long inn;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import lombok.*;
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class UserPackagePhoneData {
|
public class UserPackagePhoneData implements IUserPackageData {
|
||||||
private Long packageId;
|
private Long packageId;
|
||||||
private String signalTypes;
|
private String signalTypes;
|
||||||
private Long phone;
|
private Long phone;
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
|
||||||
import ru.nbch.credit_tracker.service.signal.SegmentMapService;
|
import ru.nbch.credit_tracker.service.signal.SegmentMapService;
|
||||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -235,6 +236,7 @@ public class KafkaMonitoringService {
|
||||||
for (LegalsMap legalsMap : legalsMapList) {
|
for (LegalsMap legalsMap : legalsMapList) {
|
||||||
// флаги просрочек
|
// флаги просрочек
|
||||||
Integer flag90days = legalsMap.getFlag90days();
|
Integer flag90days = legalsMap.getFlag90days();
|
||||||
|
LocalDateTime lastRejectedDate = legalsMap.getLastRejectedDate();
|
||||||
|
|
||||||
// в userPackageLegalDataMap только нужные inn, regnum, те что не вошли в userPackageLegalDataList игнорируются
|
// в userPackageLegalDataMap только нужные inn, regnum, те что не вошли в userPackageLegalDataList игнорируются
|
||||||
List<UserPackageLegalData> userPackageLegalDataList = userPackageLegalDataMap.get(Pair.of(legalsMap.getInn(), legalsMap.getRegNUm()));
|
List<UserPackageLegalData> userPackageLegalDataList = userPackageLegalDataMap.get(Pair.of(legalsMap.getInn(), legalsMap.getRegNUm()));
|
||||||
|
|
@ -257,6 +259,7 @@ public class KafkaMonitoringService {
|
||||||
event.setFlag90days(flag90days);
|
event.setFlag90days(flag90days);
|
||||||
event.setSignalType(Integer.toString(signalType));
|
event.setSignalType(Integer.toString(signalType));
|
||||||
event.setBusCategory(signalType == 3 ? busCategory : null);
|
event.setBusCategory(signalType == 3 ? busCategory : null);
|
||||||
|
event.setLastRejectedDate(lastRejectedDate);
|
||||||
|
|
||||||
Integer segment = segmentMap.get(memberCode.substring(0, 6));
|
Integer segment = segmentMap.get(memberCode.substring(0, 6));
|
||||||
event.setSegment(segment != null ? segment : -1);
|
event.setSegment(segment != null ? segment : -1);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ import ru.nbch.credit_tracker.entities.external_request.kafka.PackageMessage;
|
||||||
import ru.nbch.credit_tracker.enums.EventType;
|
import ru.nbch.credit_tracker.enums.EventType;
|
||||||
import ru.nbch.credit_tracker.enums.Status;
|
import ru.nbch.credit_tracker.enums.Status;
|
||||||
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
|
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
|
||||||
|
import ru.nbch.credit_tracker.model.IUserPackageData;
|
||||||
import ru.nbch.credit_tracker.model.SignalKafkaEvent;
|
import ru.nbch.credit_tracker.model.SignalKafkaEvent;
|
||||||
|
import ru.nbch.credit_tracker.model.UserPackageLegalData;
|
||||||
import ru.nbch.credit_tracker.model.UserPackagePhoneData;
|
import ru.nbch.credit_tracker.model.UserPackagePhoneData;
|
||||||
import ru.nbch.credit_tracker.utils.error.ExceptionUtils;
|
import ru.nbch.credit_tracker.utils.error.ExceptionUtils;
|
||||||
|
|
||||||
|
|
@ -80,23 +82,35 @@ public class SignalKafkaEventWriterService {
|
||||||
* Записывает сигнал в xml для конкретного пакета
|
* Записывает сигнал в xml для конкретного пакета
|
||||||
*/
|
*/
|
||||||
private void writeSignal(SignalKafkaEvent event) {
|
private void writeSignal(SignalKafkaEvent event) {
|
||||||
UserPackagePhoneData packagePhoneData = event.getUserPackagePhoneData();
|
IUserPackageData userPackageData;
|
||||||
|
if (event.isNatural()) {
|
||||||
|
userPackageData = event.getUserPackagePhoneData();
|
||||||
|
} else {
|
||||||
|
userPackageData = event.getUserPackageLegalData();
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Path folder = Path.of(config.getLoadDir(),
|
Path folder = Path.of(config.getLoadDir(),
|
||||||
"tmp", packagePhoneData.getUserId(), packagePhoneData.getPackageName());
|
"tmp", userPackageData.getUserId(), userPackageData.getPackageName());
|
||||||
Files.createDirectories(folder);
|
Files.createDirectories(folder);
|
||||||
Path tmpFilePathWithExt = folder.resolve(packagePhoneData.getUserId() + "_" + packagePhoneData.getPackageName() + ".xml");
|
Path tmpFilePathWithExt = folder.resolve(userPackageData.getUserId() + "_" + userPackageData.getPackageName() + ".xml");
|
||||||
|
|
||||||
boolean exists = tmpFilePathWithExt.toFile().exists();
|
boolean exists = tmpFilePathWithExt.toFile().exists();
|
||||||
|
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
Files.createFile(tmpFilePathWithExt);
|
Files.createFile(tmpFilePathWithExt);
|
||||||
writeStart(tmpFilePathWithExt, event);
|
writeStart(tmpFilePathWithExt, userPackageData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.isNatural()) {
|
||||||
writeNpPart(tmpFilePathWithExt, event);
|
writeNpPart(tmpFilePathWithExt, event);
|
||||||
|
} else {
|
||||||
|
writeLpPart(tmpFilePathWithExt, event);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Report was not created for PackageId = {}, PackageName = {}. {}", packagePhoneData.getPackageId(), packagePhoneData.getPackageName(), ExceptionUtils.getStackTrace(e));
|
log.error("Report was not created for PackageId = {}, PackageName = {}. {}",
|
||||||
|
userPackageData.getPackageId(), userPackageData.getPackageName(), ExceptionUtils.getStackTrace(e)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,9 +132,8 @@ public class SignalKafkaEventWriterService {
|
||||||
// TODO update signals_user_packages
|
// TODO update signals_user_packages
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeStart(Path filePath, SignalKafkaEvent event) {
|
private void writeStart(Path filePath, IUserPackageData userPackageData) {
|
||||||
UserPackagePhoneData packagePhoneData = event.getUserPackagePhoneData();
|
String packageName = userPackageData.getPackageName();
|
||||||
String packageName = packagePhoneData.getPackageName();
|
|
||||||
|
|
||||||
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding,
|
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding,
|
||||||
StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
|
StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) {
|
||||||
|
|
@ -148,6 +161,7 @@ public class SignalKafkaEventWriterService {
|
||||||
String busCategory = event.getBusCategory();
|
String busCategory = event.getBusCategory();
|
||||||
LocalDateTime inquiryDate = message.getInquiryDate();
|
LocalDateTime inquiryDate = message.getInquiryDate();
|
||||||
String inquiryPurpose = message.getInquiryPurpose();
|
String inquiryPurpose = message.getInquiryPurpose();
|
||||||
|
Long inquiryAmount = message.getInquiryAmount();
|
||||||
Integer segment = event.getSegment();
|
Integer segment = event.getSegment();
|
||||||
|
|
||||||
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding, StandardOpenOption.APPEND)) {
|
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding, StandardOpenOption.APPEND)) {
|
||||||
|
|
@ -166,6 +180,7 @@ public class SignalKafkaEventWriterService {
|
||||||
|
|
||||||
writer.write(" <InquiryDate>" + formatter.format(inquiryDate) + "</InquiryDate>\n");
|
writer.write(" <InquiryDate>" + formatter.format(inquiryDate) + "</InquiryDate>\n");
|
||||||
writer.write(" <InquiryPurpose>" + escapeXml(inquiryPurpose) + "</InquiryPurpose>\n");
|
writer.write(" <InquiryPurpose>" + escapeXml(inquiryPurpose) + "</InquiryPurpose>\n");
|
||||||
|
writer.write(" <InquiryAmount>" + inquiryAmount + "</InquiryAmount>\n");
|
||||||
writer.write(" <Segment>" + segment + "</Segment>\n");
|
writer.write(" <Segment>" + segment + "</Segment>\n");
|
||||||
writer.write(" </Signal>\n");
|
writer.write(" </Signal>\n");
|
||||||
writer.write(" </Signals>\n");
|
writer.write(" </Signals>\n");
|
||||||
|
|
@ -175,6 +190,52 @@ public class SignalKafkaEventWriterService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void writeLpPart(Path filePath, SignalKafkaEvent event) {
|
||||||
|
UserPackageLegalData packageLegalData = event.getUserPackageLegalData();
|
||||||
|
|
||||||
|
String id = packageLegalData.getSubjectId();
|
||||||
|
Long inn = packageLegalData.getInn();
|
||||||
|
Long regNum = packageLegalData.getRegNum();
|
||||||
|
Integer flag90days = event.getFlag90days();
|
||||||
|
LocalDateTime lastRejectedDate = event.getLastRejectedDate();
|
||||||
|
|
||||||
|
PackageMessage message = event.getPackageMessage();
|
||||||
|
String signalType = event.getSignalType();
|
||||||
|
String busCategory = event.getBusCategory();
|
||||||
|
LocalDateTime inquiryDate = message.getInquiryDate();
|
||||||
|
Integer inquiryType = message.getInquiryType();
|
||||||
|
String inquiryPurpose = message.getInquiryPurpose();
|
||||||
|
Long inquiryAmount = message.getInquiryAmount();
|
||||||
|
Integer segment = event.getSegment();
|
||||||
|
|
||||||
|
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding, StandardOpenOption.APPEND)) {
|
||||||
|
writer.write(" <Subject>\n");
|
||||||
|
writer.write(" <Id>" + escapeXml(id) + "</Id>\n");
|
||||||
|
writer.write(" <Inn>" + inn + "</Inn>\n");
|
||||||
|
writer.write(" <RegNum>" + regNum + "</RegNum>\n");
|
||||||
|
writer.write(" <Flag90_12>" + flag90days + "</Flag90_12>\n");
|
||||||
|
writer.write(" <LastRejectedDate>" + formatter.format(lastRejectedDate) + "</LastRejectedDate>\n");
|
||||||
|
writer.write(" <Signals>\n");
|
||||||
|
writer.write(" <Signal>\n");
|
||||||
|
writer.write(" <SignalType>" + escapeXml(signalType) + "</SignalType>\n");
|
||||||
|
|
||||||
|
if (busCategory != null) {
|
||||||
|
writer.write(" <BusCategory>" + escapeXml(busCategory) + "</BusCategory>\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.write(" <InquiryDate>" + formatter.format(inquiryDate) + "</InquiryDate>\n");
|
||||||
|
writer.write(" <InquiryType>" + inquiryType + "</InquiryType>\n");
|
||||||
|
writer.write(" <InquiryPurpose>" + escapeXml(inquiryPurpose) + "</InquiryPurpose>\n");
|
||||||
|
writer.write(" <InquiryAmount>" + inquiryAmount + "</InquiryAmount>\n");
|
||||||
|
writer.write(" <Segment>" + segment + "</Segment>\n");
|
||||||
|
writer.write(" </Signal>\n");
|
||||||
|
writer.write(" </Signals>\n");
|
||||||
|
writer.write(" </Subject>\n");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Unable to write lp part of file {}", filePath, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void writeEnd(Path filePath) {
|
private void writeEnd(Path filePath) {
|
||||||
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding, StandardOpenOption.APPEND)) {
|
try (BufferedWriter writer = Files.newBufferedWriter(filePath, encoding, StandardOpenOption.APPEND)) {
|
||||||
writer.write(" </Subjects>\n");
|
writer.write(" </Subjects>\n");
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue