This commit is contained in:
parent
3bdb16f8ef
commit
a9f9588258
8 changed files with 45 additions and 28 deletions
|
|
@ -1,12 +1,16 @@
|
||||||
package ru.nbch.credit_tracker.entities.app;
|
package ru.nbch.credit_tracker.entities.app;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
public class FlagDetail {
|
public class FlagDetail {
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
package ru.nbch.credit_tracker.entities.app;
|
package ru.nbch.credit_tracker.entities.app;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
|
//@Builder
|
||||||
public class Hit {
|
public class Hit {
|
||||||
private Long id;
|
private Long id;
|
||||||
|
private Long phone;
|
||||||
private Long packageId;
|
private Long packageId;
|
||||||
private String subjectId;
|
private String subjectId;
|
||||||
private Integer signalType;
|
private Integer signalType;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package ru.nbch.credit_tracker.service;
|
package ru.nbch.credit_tracker.service;
|
||||||
|
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.config.mdc.SetAndClearMdc;
|
import ru.nbch.credit_tracker.config.mdc.SetAndClearMdc;
|
||||||
|
|
@ -8,9 +9,6 @@ import ru.nbch.credit_tracker.entities.user_request.monitoring_request.Subject;
|
||||||
import ru.nbch.credit_tracker.enums.SignalError;
|
import ru.nbch.credit_tracker.enums.SignalError;
|
||||||
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
import ru.nbch.credit_tracker.enums.XmlErrorFormat;
|
||||||
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
import ru.nbch.credit_tracker.exceptions.SignalClientException;
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.clientExcp;
|
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.clientExcp;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|
@ -64,21 +62,21 @@ public class ValidationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean validatePhone(String input) {
|
private static boolean validatePhone(String input) {
|
||||||
if(input == null) {
|
if (input == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return Pattern.matches(phoneRegex, input);
|
return Pattern.matches(phoneRegex, input);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean validatePackageName(String input) {
|
private static boolean validatePackageName(String input) {
|
||||||
if(input == null) {
|
if (input == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return Pattern.matches(packageNameRegex, input);
|
return Pattern.matches(packageNameRegex, input);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean validateNPId(String input) {
|
private static boolean validateNPId(String input) {
|
||||||
if(input == null) {
|
if (input == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return Pattern.matches(npIdRegex, input);
|
return Pattern.matches(npIdRegex, input);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import java.util.function.BinaryOperator;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
|
import ru.nbch.credit_tracker.entities.app.PhoneFidMap;
|
||||||
import ru.nbch.credit_tracker.entities.indic.Name;
|
import ru.nbch.credit_tracker.entities.indic.Name;
|
||||||
|
|
@ -56,6 +57,10 @@ public class PhoneService2 {
|
||||||
List<Name> names = phoneRepository.findNameByPhones(phones);
|
List<Name> names = phoneRepository.findNameByPhones(phones);
|
||||||
|
|
||||||
return names.stream()
|
return names.stream()
|
||||||
|
.filter(name ->
|
||||||
|
StringUtils.isNotEmpty(name.getFirst()) &&
|
||||||
|
StringUtils.isNotEmpty(name.getLast())
|
||||||
|
)
|
||||||
.collect(Collectors.toMap(
|
.collect(Collectors.toMap(
|
||||||
Name::getNumber,
|
Name::getNumber,
|
||||||
Function.identity(),
|
Function.identity(),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.nbch.credit_tracker.service.signal;
|
package ru.nbch.credit_tracker.service.signal;
|
||||||
|
|
||||||
import jakarta.xml.bind.DatatypeConverter;
|
import jakarta.xml.bind.DatatypeConverter;
|
||||||
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
@ -274,7 +275,7 @@ public class SignalRestService {
|
||||||
*
|
*
|
||||||
* @return путь к разархивированному файлу. Пример: <loadDir>/tmp_folder/<package_id>/0001XX_MY_BATCH_204.1.online.2025-07-08T20-00-46.xml.gz.xml
|
* @return путь к разархивированному файлу. Пример: <loadDir>/tmp_folder/<package_id>/0001XX_MY_BATCH_204.1.online.2025-07-08T20-00-46.xml.gz.xml
|
||||||
*/
|
*/
|
||||||
public Optional<Path> downloadReport(UserPackage userPackage, String reportName) {
|
public Optional<Path> downloadReport(UserPackage userPackage, String reportName) throws IOException {
|
||||||
String url = DOWNLOAD_ONLINE_REPORT_URI + "?fNameReport=" + reportName;
|
String url = DOWNLOAD_ONLINE_REPORT_URI + "?fNameReport=" + reportName;
|
||||||
|
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
|
@ -290,8 +291,10 @@ public class SignalRestService {
|
||||||
);
|
);
|
||||||
Path targetFilePathWithExt = null;
|
Path targetFilePathWithExt = null;
|
||||||
if (response.getHeaders().getContentType().equals(MEDIA_TYPE_GZIP)) {
|
if (response.getHeaders().getContentType().equals(MEDIA_TYPE_GZIP)) {
|
||||||
targetFilePathWithExt = Path.of(config.getLoadDir(),
|
Path folder = Path.of(config.getLoadDir(),
|
||||||
"tmp", userPackage.getUserId().substring(0, 6), userPackage.getPackageName(), reportName + ".xml");
|
"tmp", userPackage.getUserId(), userPackage.getPackageName());
|
||||||
|
Files.createDirectories(folder);
|
||||||
|
targetFilePathWithExt = folder.resolve(reportName + ".xml");
|
||||||
ZipUtils.unpackGzip(targetFilePathWithExt, response.getBody());
|
ZipUtils.unpackGzip(targetFilePathWithExt, response.getBody());
|
||||||
} else if (isXmlError(response.getBody())){
|
} else if (isXmlError(response.getBody())){
|
||||||
SgnlReport error = staxProcessor.read(response.getBody(), SgnlReport.class);
|
SgnlReport error = staxProcessor.read(response.getBody(), SgnlReport.class);
|
||||||
|
|
|
||||||
|
|
@ -30,17 +30,20 @@
|
||||||
|
|
||||||
<insert id="updateCalcFlags" parameterType="string">
|
<insert id="updateCalcFlags" parameterType="string">
|
||||||
INSERT INTO signals_flags
|
INSERT INTO signals_flags
|
||||||
(map_id, fid, flag_debt5000, flag_90_12, calculated_at)
|
(map_id, subject_id, fid, phone, flag_debt5000, flag_90_12, calculated_at)
|
||||||
SELECT map_id, fid, flag_debt5000, flag_90_12, calculated_at
|
SELECT map_id, fid, flag_debt5000, flag_90_12, calculated_at
|
||||||
FROM json_to_recordset(#{json}::json) AS t(
|
FROM json_to_recordset(#{json}::json) AS t(
|
||||||
map_id bigint,
|
map_id bigint,
|
||||||
|
subject_id varchar(255),
|
||||||
fid int,
|
fid int,
|
||||||
|
phone text,
|
||||||
flag_debt5000 smallint,
|
flag_debt5000 smallint,
|
||||||
flag_90_12 smallint,
|
flag_90_12 smallint,
|
||||||
calculated_at timestamp)
|
calculated_at timestamp)
|
||||||
ON CONFLICT (map_id) DO UPDATE
|
ON CONFLICT (map_id) DO UPDATE
|
||||||
SET
|
SET subject_id = EXCLUDED.subject_id,
|
||||||
fid = EXCLUDED.fid,
|
fid = EXCLUDED.fid,
|
||||||
|
phone = EXCLUDED.phone,
|
||||||
flag_debt5000 = EXCLUDED.flag_debt5000,
|
flag_debt5000 = EXCLUDED.flag_debt5000,
|
||||||
flag_90_12 = EXCLUDED.flag_90_12,
|
flag_90_12 = EXCLUDED.flag_90_12,
|
||||||
calculated_at = EXCLUDED.calculated_at;
|
calculated_at = EXCLUDED.calculated_at;
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@
|
||||||
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.HitsMapper">
|
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.HitsMapper">
|
||||||
|
|
||||||
<insert id="insertHits" parameterType="java.util.List">
|
<insert id="insertHits" parameterType="java.util.List">
|
||||||
INSERT INTO signals_hits (package_id, subject_id, signal_type, response_sent_at, report_file_name)
|
INSERT INTO signals_hits (package_id, subject_id, phone, signal_type, response_sent_at, report_file_name)
|
||||||
values
|
values
|
||||||
<foreach collection="hits" item="hit" separator=",">
|
<foreach collection="hits" item="hit" separator=",">
|
||||||
(#{hit.packageId}, #{hit.subjectId}, #{hit.signalType}, #{hit.responseSentAt}, #{hit.reportFileName})
|
(#{hit.packageId}, #{hit.subjectId}, #{hit.phone}, #{hit.signalType}, #{hit.responseSentAt}, #{hit.reportFileName})
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,9 @@ alter table signals_user_packages
|
||||||
alter table signals_phone_fid_map
|
alter table signals_phone_fid_map
|
||||||
add SEARCHED_AT timestamp;
|
add SEARCHED_AT timestamp;
|
||||||
|
|
||||||
|
alter table signals_hits
|
||||||
|
add PHONE bigint;
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE signals_flags (
|
CREATE TABLE signals_flags (
|
||||||
ID SERIAL PRIMARY KEY,
|
ID SERIAL PRIMARY KEY,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue