etreschenkov 2026-02-11 12:30:20 +03:00
parent f9e3af2dd6
commit 6c99e6408e
6 changed files with 42 additions and 7 deletions

View file

@ -16,6 +16,7 @@ services:
- XMX=4G - XMX=4G
- XMS=1G - XMS=1G
- TZ=Europe/Moscow - TZ=Europe/Moscow
- ${JVM_EXTRA_OPTS:-} \
- APM_SERVICE_NAME=${APM_SERVICE_NAME}-${APP_JAR} - APM_SERVICE_NAME=${APM_SERVICE_NAME}-${APP_JAR}
- APM_SERVER_URLS=${APM_SERVER_URLS} - APM_SERVER_URLS=${APM_SERVER_URLS}
- APM_ENVIRONMENT=${APM_ENVIRONMENT} - APM_ENVIRONMENT=${APM_ENVIRONMENT}

View file

@ -9,6 +9,8 @@ import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.FileUrlResource; import org.springframework.core.io.FileUrlResource;
@ -46,7 +48,6 @@ import ru.nbch.credit_tracker.service.task.PipelinePackageOrchestrator;
import ru.nbch.credit_tracker.service.task.SetupParam; import ru.nbch.credit_tracker.service.task.SetupParam;
import ru.nbch.credit_tracker.service.task.impl.PipelineMode; import ru.nbch.credit_tracker.service.task.impl.PipelineMode;
import ru.nbch.credit_tracker.service.task.impl.Saver; import ru.nbch.credit_tracker.service.task.impl.Saver;
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.EnumUtil; import ru.nbch.credit_tracker.utils.EnumUtil;
import ru.nbch.credit_tracker.utils.LogUtil; import ru.nbch.credit_tracker.utils.LogUtil;
@ -68,6 +69,7 @@ public class SignalFacadeV3 {
private final ExecutorService pipelineExecutorService; private final ExecutorService pipelineExecutorService;
private final ExecutorService saverExecutorService; private final ExecutorService saverExecutorService;
private final PipelinePackageOrchestrator pipelineOrchestrator; private final PipelinePackageOrchestrator pipelineOrchestrator;
private final Pattern DOWNLOAD_FILE_PATTERN = Pattern.compile("^(?<member>[A-Za-z0-9]{6})_(?<package>[A-Za-z0-9_]+)_(?<ts>\\d{4}-\\d{2}-\\d{2}T\\d{2}-\\d{2}-\\d{2})(?:\\.xml)?\\.zip$");
public SignalFacadeV3(MonitoringRequestValidator monitoringRequestValidator, public SignalFacadeV3(MonitoringRequestValidator monitoringRequestValidator,
CreditTrackerSettings config, CreditTrackerSettings config,
@ -330,11 +332,24 @@ public class SignalFacadeV3 {
public ResponseEntity<Resource> downloadFile(String fileName) { public ResponseEntity<Resource> downloadFile(String fileName) {
try { try {
String memberCode = CTUtil.getMemberCodeFromFileName(fileName); Matcher matcher = DOWNLOAD_FILE_PATTERN.matcher(fileName);
if (memberCode == null) { String packageName = null;
if (matcher.matches()) {
packageName = matcher.group("package");
}
if (packageName == null) {
throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError, fileName); throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError, fileName);
} }
String dirPath = config.getLoadDir() + File.separator + memberCode; UserPackage userPackage = userPackageService.findByPackageName(packageName);
if (userPackage == null) {
throw clientExcp(SignalError.ERROR_014, XmlErrorFormat.MonitoringDownloadError, fileName);
}
String dirPath = config.getLoadDir() +
File.separator + "tmp" +
File.separator + userPackage.getUserId() +
File.separator + userPackage.getPackageName();
File folder = new File(dirPath); File folder = new File(dirPath);
if (folder.exists() && folder.isDirectory()) { if (folder.exists() && folder.isDirectory()) {

View file

@ -32,6 +32,7 @@ public interface UserPackageMapper {
List<UserPackage> findAllPackagesByStatus(@Param("statuses") String... statuses); List<UserPackage> findAllPackagesByStatus(@Param("statuses") String... statuses);
List<UserPackage> findAllPackagesByUserId(@Param("userId") String userId); List<UserPackage> findAllPackagesByUserId(@Param("userId") String userId);
UserPackage findByPackageName(@Param("packageName") String packageName);
List<UserPackage> findOnMonitoringPackages(); List<UserPackage> findOnMonitoringPackages();
List<UserPackage> findByMemberCodeAndPackageName(@Param("memberCode") String memberCode, List<UserPackage> findByMemberCodeAndPackageName(@Param("memberCode") String memberCode,
@Param("packageName") String packageName); @Param("packageName") String packageName);

View file

@ -59,6 +59,10 @@ public class UserPackageService {
return userPackageMapper.findUserPackages(userId.substring(0, 6), Arrays.asList(Status.ON_MONITORING.name(), Status.NO_FID.name())); return userPackageMapper.findUserPackages(userId.substring(0, 6), Arrays.asList(Status.ON_MONITORING.name(), Status.NO_FID.name()));
} }
public UserPackage findByPackageName(String packageName) {
return userPackageMapper.findByPackageName(packageName);
}
public void setFidChanged(List<Long> id) { public void setFidChanged(List<Long> id) {
userPackageMapper.setFidChanged(id); userPackageMapper.setFidChanged(id);
} }

View file

@ -91,9 +91,6 @@ public class MonitoringService {
List<UserPackage> packages = userPackageMapper.findAllPackagesByStatus(Status.ON_MONITORING.name(), List<UserPackage> packages = userPackageMapper.findAllPackagesByStatus(Status.ON_MONITORING.name(),
Status.PROCESSING_REPEATED.name()); Status.PROCESSING_REPEATED.name());
for (UserPackage userPackage : packages) { for (UserPackage userPackage : packages) {
if (!userPackage.getPackageName().equals("MY_BATCH_TEST_0209_01")) {
continue;
}
MDC.put("ru.nbch.credit_tracker.log.mdc.key", "[" + userPackage.getPackageName() + "]"); MDC.put("ru.nbch.credit_tracker.log.mdc.key", "[" + userPackage.getPackageName() + "]");
processPackage(userPackage); processPackage(userPackage);
MDC.remove("ru.nbch.credit_tracker.log.mdc.key"); MDC.remove("ru.nbch.credit_tracker.log.mdc.key");

View file

@ -131,6 +131,23 @@
LIMIT 1 LIMIT 1
</select> </select>
<select id="findByPackageName" resultMap="packageDataResultMap">
SELECT id,
membercode,
package_name,
created_at,
status,
deactivated_at,
last_downloaded_report,
monitoring_at,
last_searched_at,
reject_status,
signal_types
FROM signals_user_packages
WHERE package_name = #{packageName}
LIMIT 1
</select>
<select id="findForRepeatedPackages" resultMap="packageDataResultMap"> <select id="findForRepeatedPackages" resultMap="packageDataResultMap">
SELECT id, SELECT id,
membercode, membercode,