Save last downloaded report name
This commit is contained in:
parent
4bd58624ed
commit
2c0525d28d
4 changed files with 53 additions and 24 deletions
|
|
@ -22,9 +22,6 @@ public interface UserPackageMapper {
|
||||||
void updatePackageStatus(@Param("packageId") Long packageId,
|
void updatePackageStatus(@Param("packageId") Long packageId,
|
||||||
@Param("status") String status);
|
@Param("status") String status);
|
||||||
|
|
||||||
void updatePackageLastDownloadedReport(@Param("id") Long id,
|
|
||||||
@Param("fileName") String fileName);
|
|
||||||
|
|
||||||
void updatePackageOnMonitoringSuccess(@Param("id") Long id,
|
void updatePackageOnMonitoringSuccess(@Param("id") Long id,
|
||||||
@Param("monitoringAt") LocalDateTime monitoringAt);
|
@Param("monitoringAt") LocalDateTime monitoringAt);
|
||||||
|
|
||||||
|
|
@ -51,4 +48,6 @@ public interface UserPackageMapper {
|
||||||
@Param("packageName") String packageName);
|
@Param("packageName") String packageName);
|
||||||
|
|
||||||
void setRejectedStatus(@Param("id") Long id, @Param("status") String status);
|
void setRejectedStatus(@Param("id") Long id, @Param("status") String status);
|
||||||
|
|
||||||
|
void updatePackageLastDownloadedReport(@Param("json") String json);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ 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.UserPackageLegalData;
|
||||||
import ru.nbch.credit_tracker.model.UserPackagePhoneData;
|
import ru.nbch.credit_tracker.model.UserPackagePhoneData;
|
||||||
|
import ru.nbch.credit_tracker.service.signal.PackageRecordsService;
|
||||||
import ru.nbch.credit_tracker.utils.CTUtil;
|
import ru.nbch.credit_tracker.utils.CTUtil;
|
||||||
import ru.nbch.credit_tracker.utils.CtFileUtils;
|
import ru.nbch.credit_tracker.utils.CtFileUtils;
|
||||||
import ru.nbch.credit_tracker.utils.ZipUtils;
|
import ru.nbch.credit_tracker.utils.ZipUtils;
|
||||||
|
|
@ -50,13 +51,16 @@ public class SignalKafkaEventWriterService {
|
||||||
|
|
||||||
private final BlockingQueue<SignalKafkaEvent> signalEventsQueue;
|
private final BlockingQueue<SignalKafkaEvent> signalEventsQueue;
|
||||||
private final UserPackageMapper userPackageMapper;
|
private final UserPackageMapper userPackageMapper;
|
||||||
|
private final PackageRecordsService packageRecordsService;
|
||||||
private final CreditTrackerSettings config;
|
private final CreditTrackerSettings config;
|
||||||
|
|
||||||
public SignalKafkaEventWriterService(@Qualifier("signalKafkaEventQueue") BlockingQueue<SignalKafkaEvent> signalEventsQueue,
|
public SignalKafkaEventWriterService(@Qualifier("signalKafkaEventQueue") BlockingQueue<SignalKafkaEvent> signalEventsQueue,
|
||||||
UserPackageMapper userPackageMapper,
|
UserPackageMapper userPackageMapper,
|
||||||
|
PackageRecordsService packageRecordsService,
|
||||||
CreditTrackerSettings config) {
|
CreditTrackerSettings config) {
|
||||||
this.signalEventsQueue = signalEventsQueue;
|
this.signalEventsQueue = signalEventsQueue;
|
||||||
this.userPackageMapper = userPackageMapper;
|
this.userPackageMapper = userPackageMapper;
|
||||||
|
this.packageRecordsService = packageRecordsService;
|
||||||
this.config = config;
|
this.config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,15 +137,18 @@ public class SignalKafkaEventWriterService {
|
||||||
* Упаковывает все результирующие xml в архив
|
* Упаковывает все результирующие xml в архив
|
||||||
*/
|
*/
|
||||||
private void rotate() {
|
private void rotate() {
|
||||||
|
List<UserPackage> packagesToUpdate = new ArrayList<>();
|
||||||
List<UserPackage> userPackages = userPackageMapper.findAllPackagesByStatus(Status.ON_MONITORING.name());
|
List<UserPackage> userPackages = userPackageMapper.findAllPackagesByStatus(Status.ON_MONITORING.name());
|
||||||
for (UserPackage userPackage : userPackages) {
|
for (UserPackage userPackage : userPackages) {
|
||||||
try {
|
try {
|
||||||
movedAndZip(userPackage);
|
String reportName = movedAndZip(userPackage);
|
||||||
|
userPackage.setLastDownloadedReport(reportName);
|
||||||
|
packagesToUpdate.add(userPackage);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("Error while rotating user package {}", userPackage.getPackageName(), e);
|
log.error("Error while rotating user package {}", userPackage.getPackageName(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO update signals_user_packages
|
packageRecordsService.updatePackageLastDownloadedReport(packagesToUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeStart(Path filePath, IUserPackageData userPackageData) {
|
private void writeStart(Path filePath, IUserPackageData userPackageData) {
|
||||||
|
|
@ -160,7 +167,8 @@ public class SignalKafkaEventWriterService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void movedAndZip(UserPackage userPackage) throws IOException {
|
private String movedAndZip(UserPackage userPackage) throws IOException {
|
||||||
|
String finalName = "";
|
||||||
String commonMembercode = userPackage.getUserId().substring(0, 6);
|
String commonMembercode = userPackage.getUserId().substring(0, 6);
|
||||||
Path tmpFilePath = Path.of(config.getLoadDir(),
|
Path tmpFilePath = Path.of(config.getLoadDir(),
|
||||||
"tmp", commonMembercode, userPackage.getPackageName())
|
"tmp", commonMembercode, userPackage.getPackageName())
|
||||||
|
|
@ -177,12 +185,12 @@ public class SignalKafkaEventWriterService {
|
||||||
Files.createDirectories(rootReportPath);
|
Files.createDirectories(rootReportPath);
|
||||||
}
|
}
|
||||||
LocalDateTime newReportDate = LocalDateTime.now();
|
LocalDateTime newReportDate = LocalDateTime.now();
|
||||||
Path responsePath = rootReportPath.resolve(
|
finalName = String.format("%s_%s_%s.xml",
|
||||||
String.format("%s_%s_%s.xml",
|
commonMembercode,
|
||||||
commonMembercode,
|
userPackage.getPackageName(),
|
||||||
userPackage.getPackageName(),
|
newReportDate.format(CTUtil.responseReportDateTimeFormatter));
|
||||||
newReportDate.format(CTUtil.responseReportDateTimeFormatter))
|
|
||||||
);
|
Path responsePath = rootReportPath.resolve(finalName);
|
||||||
|
|
||||||
Files.move(tmpFilePath, responsePath, StandardCopyOption.REPLACE_EXISTING);
|
Files.move(tmpFilePath, responsePath, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
|
||||||
|
|
@ -190,6 +198,8 @@ public class SignalKafkaEventWriterService {
|
||||||
log.info("New report file by path: {}", zipFile);
|
log.info("New report file by path: {}", zipFile);
|
||||||
CtFileUtils.deleteQuietly(responsePath);
|
CtFileUtils.deleteQuietly(responsePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return finalName.replace("xml", "zip");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeNpPart(Path filePath, SignalKafkaEvent event) {
|
private void writeNpPart(Path filePath, SignalKafkaEvent event) {
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import ru.nbch.credit_tracker.entities.app.LegalsMap;
|
import ru.nbch.credit_tracker.entities.app.*;
|
||||||
import ru.nbch.credit_tracker.entities.app.PackagesRecordsMap;
|
import ru.nbch.credit_tracker.mapper.signal.*;
|
||||||
import ru.nbch.credit_tracker.entities.app.PhonesMap;
|
|
||||||
import ru.nbch.credit_tracker.entities.app.SignalLegalFidMap;
|
|
||||||
import ru.nbch.credit_tracker.mapper.signal.LegalsFidMapMapper;
|
|
||||||
import ru.nbch.credit_tracker.mapper.signal.LegalsMapMapper;
|
|
||||||
import ru.nbch.credit_tracker.mapper.signal.PackagesRecordsMapper;
|
|
||||||
import ru.nbch.credit_tracker.mapper.signal.PhonesMapMapper;
|
|
||||||
import ru.nbch.credit_tracker.model.FlagData;
|
import ru.nbch.credit_tracker.model.FlagData;
|
||||||
import ru.nbch.credit_tracker.model.SubjectProfile;
|
import ru.nbch.credit_tracker.model.SubjectProfile;
|
||||||
import ru.nbch.credit_tracker.model.UserPackageLegalData;
|
import ru.nbch.credit_tracker.model.UserPackageLegalData;
|
||||||
|
|
@ -37,17 +31,19 @@ public class PackageRecordsService {
|
||||||
private final PackagesRecordsMapper packagesRecordsMapper;
|
private final PackagesRecordsMapper packagesRecordsMapper;
|
||||||
private final LegalsFidMapMapper legalsFidMapMapper;
|
private final LegalsFidMapMapper legalsFidMapMapper;
|
||||||
private final ObjectMapper entityToJsonMapper;
|
private final ObjectMapper entityToJsonMapper;
|
||||||
|
private final UserPackageMapper userPackageMapper;
|
||||||
|
|
||||||
public PackageRecordsService(PhonesMapMapper phonesMapMapper,
|
public PackageRecordsService(PhonesMapMapper phonesMapMapper,
|
||||||
LegalsMapMapper legalsMapMapper,
|
LegalsMapMapper legalsMapMapper,
|
||||||
PackagesRecordsMapper packagesRecordsMapper,
|
PackagesRecordsMapper packagesRecordsMapper,
|
||||||
LegalsFidMapMapper legalsFidMapMapper,
|
LegalsFidMapMapper legalsFidMapMapper,
|
||||||
ObjectMapper entityToJsonMapper) {
|
ObjectMapper entityToJsonMapper, UserPackageMapper userPackageMapper) {
|
||||||
this.phonesMapMapper = phonesMapMapper;
|
this.phonesMapMapper = phonesMapMapper;
|
||||||
this.legalsMapMapper = legalsMapMapper;
|
this.legalsMapMapper = legalsMapMapper;
|
||||||
this.packagesRecordsMapper = packagesRecordsMapper;
|
this.packagesRecordsMapper = packagesRecordsMapper;
|
||||||
this.legalsFidMapMapper = legalsFidMapMapper;
|
this.legalsFidMapMapper = legalsFidMapMapper;
|
||||||
this.entityToJsonMapper = entityToJsonMapper;
|
this.entityToJsonMapper = entityToJsonMapper;
|
||||||
|
this.userPackageMapper = userPackageMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Long, PhonesMap> findCachedPhones(List<SubjectProfile> subjects) {
|
public Map<Long, PhonesMap> findCachedPhones(List<SubjectProfile> subjects) {
|
||||||
|
|
@ -239,6 +235,20 @@ public class PackageRecordsService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updatePackageLastDownloadedReport(List<UserPackage> packages) {
|
||||||
|
try {
|
||||||
|
String json = entityToJsonMapper.writeValueAsString(packages.stream()
|
||||||
|
.filter(Objects::nonNull)
|
||||||
|
.map(userPackage -> new HashMap<String, Object>() {{
|
||||||
|
put("id", userPackage.getId());
|
||||||
|
put("last_downloaded_report", userPackage.getLastDownloadedReport());
|
||||||
|
}}).toList());
|
||||||
|
userPackageMapper.updatePackageLastDownloadedReport(json);
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public record InnRegnumPair(Long inn, Long regNum) {
|
public record InnRegnumPair(Long inn, Long regNum) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,10 +83,20 @@
|
||||||
</foreach>
|
</foreach>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updatePackageLastDownloadedReport">
|
<update id="updatePackageLastDownloadedReport" parameterType="string">
|
||||||
|
WITH src AS (
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
last_downloaded_report
|
||||||
|
FROM json_to_recordset(#{json}::json) AS t(
|
||||||
|
id bigint,
|
||||||
|
last_downloaded_report text
|
||||||
|
)
|
||||||
|
)
|
||||||
UPDATE signals_user_packages
|
UPDATE signals_user_packages
|
||||||
SET last_downloaded_report = #{fileName}
|
SET last_downloaded_report = src.last_downloaded_report
|
||||||
WHERE id = #{id}
|
FROM src
|
||||||
|
WHERE signals_user_packages.id = src.id
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="updatePackageOnMonitoringSuccess">
|
<update id="updatePackageOnMonitoringSuccess">
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue