ialbert 2025-11-20 18:43:04 +03:00
parent 04601b618b
commit 69746d2b5e
4 changed files with 46 additions and 7 deletions

View file

@ -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<UserPackage> INSTANCE = Comparator
.comparingInt((ToIntFunction<UserPackage>) 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;
}
}
}

View file

@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import ru.nbch.credit_tracker.component.MonitoringRequestValidator; import ru.nbch.credit_tracker.component.MonitoringRequestValidator;
import ru.nbch.credit_tracker.component.comparator.DeletePackageStatusComparator; 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.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.app.UserPackage; import ru.nbch.credit_tracker.entities.app.UserPackage;
import ru.nbch.credit_tracker.entities.user_request.active_packages.MonitoringActivePackagesRequest; import ru.nbch.credit_tracker.entities.user_request.active_packages.MonitoringActivePackagesRequest;
@ -225,19 +226,31 @@ public class SignalFacadeV3 {
public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) { public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) {
try { 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); 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); 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); 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); 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); throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName);
} }

View file

@ -66,7 +66,7 @@ public class UserPackageService {
} }
public List<UserPackage> findByMemberCodeAndPackageName(String memberCode, String packageName) { public List<UserPackage> findByMemberCodeAndPackageName(String memberCode, String packageName) {
return mapper.findByMemberCodeAndPackageName(memberCode, packageName); return mapper.findByMemberCodeAndPackageName(memberCode.substring(0, 6), packageName);
} }
public List<UserPackage> findAllPackagesByStatus(Status status) { public List<UserPackage> findAllPackagesByStatus(Status status) {

View file

@ -120,7 +120,7 @@
<select id="findByMemberCodeAndPackageName" resultMap="packageDataResultMap"> <select id="findByMemberCodeAndPackageName" resultMap="packageDataResultMap">
SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report, monitoring_at SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report, monitoring_at
FROM signals_user_packages FROM signals_user_packages
WHERE membercode = #{memberCode} AND package_name = #{packageName} WHERE LEFT(membercode, 6) = #{memberCode} AND package_name = #{packageName}
</select> </select>
</mapper> </mapper>