From 69746d2b5edf76bb888382d2d262a79bdda5519e Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 20 Nov 2025 18:43:04 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/BKI-3281 --- .../ReportListPackageStatusComparator.java | 26 +++++++++++++++++++ .../credit_tracker/facade/SignalFacadeV3.java | 23 ++++++++++++---- .../service/signal/UserPackageService.java | 2 +- .../mapper/signal/UserPackageMapper.xml | 2 +- 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 src/main/java/ru/nbch/credit_tracker/component/comparator/ReportListPackageStatusComparator.java diff --git a/src/main/java/ru/nbch/credit_tracker/component/comparator/ReportListPackageStatusComparator.java b/src/main/java/ru/nbch/credit_tracker/component/comparator/ReportListPackageStatusComparator.java new file mode 100644 index 0000000..a184def --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/component/comparator/ReportListPackageStatusComparator.java @@ -0,0 +1,26 @@ +package ru.nbch.credit_tracker.component.comparator; + +import java.util.Comparator; +import java.util.function.ToIntFunction; +import ru.nbch.credit_tracker.entities.app.UserPackage; +import ru.nbch.credit_tracker.enums.Status; + +public class ReportListPackageStatusComparator { + + public static Comparator INSTANCE = Comparator + .comparingInt((ToIntFunction) userPackage -> statusToInt(userPackage.getStatus())) + .thenComparingLong(UserPackage::getId); + + public static int statusToInt(String str) { + try { + Status status = Status.valueOf(str); + return switch (status) { + case ON_MONITORING -> 1; + default -> -1; + }; + } catch (Throwable e) { + return -1; + } + } + +} diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java index d1ea8eb..288b96a 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacadeV3.java @@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import ru.nbch.credit_tracker.component.MonitoringRequestValidator; import ru.nbch.credit_tracker.component.comparator.DeletePackageStatusComparator; +import ru.nbch.credit_tracker.component.comparator.ReportListPackageStatusComparator; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.entities.app.UserPackage; import ru.nbch.credit_tracker.entities.user_request.active_packages.MonitoringActivePackagesRequest; @@ -225,19 +226,31 @@ public class SignalFacadeV3 { public ResponseEntity getReportList(String username, String packageName) { try { - if (signalService.isPackagesByStatusExist(username, packageName, Status.PROCESSING)) { + UserPackage userPackage = signalService + .findByMemberCodeAndPackageName(username, packageName) + .stream() + .max(ReportListPackageStatusComparator.INSTANCE) + .orElse(null); + if (userPackage == null) { + throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName); + } + Status status = EnumUtil.getEnum(Status.class, userPackage.getStatus()); + if (status == null) { + throw clientExcp(SignalError.ERROR_017, XmlErrorFormat.MonitoringReportListError); + } + if (status.equals(Status.PROCESSING)) { throw clientExcp(SignalError.ERROR_018, XmlErrorFormat.MonitoringReportListError, packageName); } - if (signalService.isPackagesByStatusExist(username, packageName, Status.REJECTED)) { + if (status.equals(Status.REJECTED)) { throw clientExcp(SignalError.ERROR_020, XmlErrorFormat.MonitoringReportListError, packageName); } - if (signalService.isPackagesByStatusExist(username, packageName, Status.ERROR)) { + if (status.equals(Status.ERROR)) { throw clientExcp(SignalError.ERROR_021, XmlErrorFormat.MonitoringReportListError, packageName); } - if (signalService.isPackagesByStatusExist(username, packageName, Status.DELETED)) { + if (status.equals(Status.DELETED)) { throw clientExcp(SignalError.ERROR_022, XmlErrorFormat.MonitoringReportListError, packageName); } - if (!signalService.isPackagesByStatusExist(username, packageName, Status.ON_MONITORING)) { + if (!status.equals(Status.ON_MONITORING)) { throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java b/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java index d97b24c..8595b52 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java @@ -66,7 +66,7 @@ public class UserPackageService { } public List findByMemberCodeAndPackageName(String memberCode, String packageName) { - return mapper.findByMemberCodeAndPackageName(memberCode, packageName); + return mapper.findByMemberCodeAndPackageName(memberCode.substring(0, 6), packageName); } public List findAllPackagesByStatus(Status status) { diff --git a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml index f3aca83..91b7b7b 100644 --- a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml @@ -120,7 +120,7 @@ \ No newline at end of file