http://jira.mfd.msk:8088/browse/BKI-3198 Allow users get list of reports for packages in PROCESSING status

This commit is contained in:
Mikhail Trofimov 2025-09-09 11:33:23 +03:00
parent 53f36a47b0
commit 5acda45438
5 changed files with 23 additions and 2 deletions

View file

@ -304,7 +304,7 @@ public class SignalFacade {
public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) { public ResponseEntity<MonitoringReportListResponse> getReportList(String username, String packageName) {
try { try {
if (!signalService.isPackageExists(username, packageName)) { if (!signalService.hasActivePackages(username, packageName)) {
throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName); throw clientExcp(SignalError.ERROR_012, XmlErrorFormat.MonitoringReportListError, packageName);
} }

View file

@ -14,6 +14,8 @@ public interface UserPackageMapper {
boolean isPackageExists(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String status); boolean isPackageExists(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String status);
boolean hasActivePackages(@Param("userId") String userId, @Param("packageName") String packageName, @Param("statuses") List<String> statuses);
void deletePackage(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String newStatus, @Param("previousStatus") String previousStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt); void deletePackage(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String newStatus, @Param("previousStatus") String previousStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt);
Integer insertPackage(@Param("userPackage") UserPackage userPackage); Integer insertPackage(@Param("userPackage") UserPackage userPackage);
@ -27,5 +29,4 @@ public interface UserPackageMapper {
List<UserPackage> findUserPackages(@Param("userId") String userId, @Param("statuses") List<String> status); List<UserPackage> findUserPackages(@Param("userId") String userId, @Param("statuses") List<String> status);
List<UserPackage> findAllPackagesByStatus(@Param("status") String status); List<UserPackage> findAllPackagesByStatus(@Param("status") String status);
} }

View file

@ -290,6 +290,10 @@ public class SignalService {
return userPackageService.isPackageExists(username, packageName, Status.ON_MONITORING); return userPackageService.isPackageExists(username, packageName, Status.ON_MONITORING);
} }
public boolean hasActivePackages(String username, String packageName) {
return userPackageService.hasActivePackages(username, packageName, Status.ON_MONITORING, Status.PROCESSING);
}
public void deletePackage(String username, String packageName, LocalDateTime deactivatedAt) { public void deletePackage(String username, String packageName, LocalDateTime deactivatedAt) {
userPackageService.deletePackage(username, packageName, Status.DELETED, Status.ON_MONITORING, deactivatedAt); userPackageService.deletePackage(username, packageName, Status.DELETED, Status.ON_MONITORING, deactivatedAt);
} }

View file

@ -26,6 +26,10 @@ public class UserPackageService {
return mapper.isPackageExists(userId.substring(0, 6), packageName, status.name()); return mapper.isPackageExists(userId.substring(0, 6), packageName, status.name());
} }
public boolean hasActivePackages(String userId, String packageName, Status... status) {
return mapper.hasActivePackages(userId.substring(0, 6), packageName, Arrays.stream(status).map(Enum::name).toList());
}
public void deletePackage(String userId, String packageName, Status newStatus, Status previousStatus, LocalDateTime deactivatedAt) { public void deletePackage(String userId, String packageName, Status newStatus, Status previousStatus, LocalDateTime deactivatedAt) {
mapper.deletePackage(userId.substring(0, 6), packageName, newStatus.name(), previousStatus.name(), deactivatedAt); mapper.deletePackage(userId.substring(0, 6), packageName, newStatus.name(), previousStatus.name(), deactivatedAt);
} }

View file

@ -31,6 +31,18 @@
AND status = #{status} AND status = #{status}
</select> </select>
<select id="hasActivePackages" resultType="boolean">
SELECT COUNT(*) > 0
FROM signals_user_packages
WHERE membercode IS NOT NULL
AND LEFT(membercode, 6) = #{userId}
AND package_name = #{packageName}
AND status IN
<foreach item="status" collection="statuses" open="(" separator="," close=")">
#{status}
</foreach>
</select>
<update id="deletePackage"> <update id="deletePackage">
UPDATE signals_user_packages UPDATE signals_user_packages
SET status = #{status}, deactivated_at = #{deactivatedAt} SET status = #{status}, deactivated_at = #{deactivatedAt}