Advertisement
TriplePi

Untitled

Mar 4th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 32.58 KB | None | 0 0
  1. package ru.baccasoft.nnsupport.controllers;
  2.  
  3. import io.swagger.annotations.ApiOperation;
  4. import io.swagger.annotations.ApiParam;
  5. import org.joda.time.DateTime;
  6. import org.joda.time.format.DateTimeFormat;
  7. import org.springframework.http.HttpHeaders;
  8. import org.springframework.http.HttpStatus;
  9. import org.springframework.http.ResponseEntity;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.bind.annotation.RestController;
  14. import org.xhtmlrenderer.pdf.ITextRenderer;
  15. import ru.baccasoft.nnsupport.controllers.dto.*;
  16. import ru.baccasoft.nnsupport.data.repositories.ReportRepository;
  17. import ru.baccasoft.nnsupport.domain.models.*;
  18. import ru.baccasoft.nnsupport.domain.services.*;
  19. import ru.baccasoft.nnsupport.domain.services.models.Email;
  20.  
  21. import javax.inject.Inject;
  22. import javax.servlet.ServletResponse;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.File;
  25. import java.io.FileOutputStream;
  26. import java.util.ArrayList;
  27. import java.util.Arrays;
  28. import java.util.List;
  29. import java.util.stream.Collectors;
  30.  
  31. @RestController
  32. @RequestMapping("/api/report")
  33. public class ReportController {
  34.  
  35.     private static final String DATETIME_PATTERN = "dd-MM-yyyy";
  36.  
  37.     @Inject
  38.     private UserSettingsService userSettingsService;
  39.  
  40.     @Inject
  41.     private FileService fileService;
  42.  
  43.     @Inject
  44.     private DownloadService downloadService;
  45.  
  46.     @Inject
  47.     private ReportService reportService;
  48.  
  49.     @Inject
  50.     private EmailService emailService;
  51.  
  52.     @Inject
  53.     private ReportRepository reportRepository;
  54.  
  55.  
  56.     private static final String EMAIL_TEXT =
  57.             "Данное письмо сформировано автоматически. Просьба не отвечать на данное сообщение.\n\n" +
  58.                     "Служба технической поддержки\n" +
  59.                     "nn-support@baccasoft.ru\n" +
  60.                     "www.baccasoft.ru";
  61.  
  62.     @ApiOperation(
  63.             value = "Получение отчёта по статистике",
  64.             notes = "Получение отчёта по статистике",
  65.             response = StatisticsReportDTO.class,
  66.             responseContainer = "List"
  67.     )
  68.     @RequestMapping(value = "/statistics", method = RequestMethod.GET)
  69.     public List<StatisticsReportDTO> getStatReport(
  70.             ServletResponse response,
  71.             @ApiParam(value = "Начальная дата, для которой необходимо получить статистику в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom") String strDateFrom,
  72.             @ApiParam(value = "Конечная дата, для которой необходимо получить статистику в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo") String strDateTo
  73.     ) {
  74.  
  75.         DateTime dateFrom = DateTime.parse(strDateFrom, DateTimeFormat.forPattern(DATETIME_PATTERN));
  76.         DateTime dateTo = DateTime.parse(strDateTo, DateTimeFormat.forPattern(DATETIME_PATTERN));
  77.  
  78.         return reportService
  79.                 .getStatisticsReport(dateFrom, dateTo)
  80.                 .stream()
  81.                 .map(record -> {
  82.                     StatisticsReportDTO dto = new StatisticsReportDTO();
  83.  
  84.                     dto.period = record.getPeriod();
  85.                     dto.userId = record.getUserId();
  86.                     dto.openAppAmount = record.getOpenAppAmount();
  87.                     dto.userName = record.getUserName();
  88.                     dto.syncAmount = record.getSyncAmount();
  89.                     dto.newTasksAmount = record.getNewTasksAmount();
  90.                     dto.newInstructionsAmount = record.getNewInstructionsAmount();
  91.                     dto.completedTasksAmount = record.getCompletedTasksAmount();
  92.                     dto.successfulTasks = record.getSuccessfulTasks();
  93.                     dto.failedTasks = record.getFailedTasks();
  94.  
  95.                     return dto;
  96.                 })
  97.                 .collect(Collectors.toList());
  98.     }
  99.  
  100.     @ApiOperation(
  101.             value = "Получение файла отчёта по статистике",
  102.             notes = "Формирует и выгружает файл отчёта по статистике."
  103.     )
  104.     @RequestMapping(value = "/statistics/file", method = RequestMethod.GET)
  105.     public void getStatReportFile(
  106.             ServletResponse response,
  107.             @ApiParam(value = "Начальная дата, для которой необходимо получить статистику в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom") String strDateFrom,
  108.             @ApiParam(value = "Конечная дата, для которой необходимо получить статистику в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo") String strDateTo
  109.     ) {
  110.         DateTime dateFrom = DateTime.parse(strDateFrom, DateTimeFormat.forPattern("dd-MM-yyyy"));
  111.         DateTime dateTo = DateTime.parse(strDateTo, DateTimeFormat.forPattern("dd-MM-yyyy"));
  112.  
  113.         String filename;
  114.  
  115.         if (dateFrom.equals(dateTo)) {
  116.             filename = String.format("stat_report_%s.pdf", dateFrom.toString("yyyyMMdd"));
  117.         } else {
  118.             filename = String.format("stat_report_%s_%s.pdf", dateFrom.toString("yyyyMMdd"), dateTo.toString("yyyyMMdd"));
  119.         }
  120.  
  121.         HttpServletResponse httpServletResponse = (HttpServletResponse) response;
  122.  
  123.         ITextRenderer pdfFile = new ITextRenderer();
  124.         reportService.getStatisticsReportFile(dateFrom, dateTo, pdfFile);
  125.         downloadService.downloadFile(httpServletResponse, pdfFile, filename);
  126.     }
  127.  
  128.     @RequestMapping(value = "/statistics/email", method = RequestMethod.GET)
  129.     public ResponseEntity<GetStatReportEmailDTO> getStatReportEmail(
  130.             ServletResponse response,
  131.             @ApiParam(value = "Начальная дата, для которой необходимо получить статистику в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom") String strDateFrom,
  132.             @ApiParam(value = "Конечная дата, для которой необходимо получить статистику в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo") String strDateTo
  133.     ) {
  134.         DateTime dateFrom = DateTime.parse(strDateFrom, DateTimeFormat.forPattern(DATETIME_PATTERN));
  135.         DateTime dateTo = DateTime.parse(strDateTo, DateTimeFormat.forPattern(DATETIME_PATTERN));
  136.  
  137.         ITextRenderer pdfFile = new ITextRenderer();
  138.         reportService.getStatisticsReportFile(dateFrom, dateTo, pdfFile);
  139.  
  140.         String tempFileName = fileService.createTemporaryFile();
  141.  
  142.         try {
  143.             FileOutputStream fos = new FileOutputStream(tempFileName);
  144.             pdfFile.createPDF(fos);
  145.             fos.flush();
  146.         } catch (Exception e) {
  147.             e.printStackTrace();
  148.             return new ResponseEntity<>(null, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
  149.         }
  150.  
  151.         GetStatReportEmailDTO dto = new GetStatReportEmailDTO();
  152.  
  153.         Email email = new Email();
  154.         email.to = userSettingsService.getStatisticsMailTo();
  155.         email.subject = "Отчёт по статистике";
  156.         email.text = EMAIL_TEXT;
  157.  
  158.         String filename;
  159.  
  160.         if (dateFrom.equals(dateTo))
  161.             filename = String.format("stat_report_%s.pdf", dateFrom.toString("yyyyMMdd"));
  162.         else
  163.             filename = String.format("stat_report_%s_%s.pdf", dateFrom.toString("yyyyMMdd"), dateTo.toString("yyyyMMdd"));
  164.  
  165.         Email.Attachment attachment = new Email.Attachment();
  166.         attachment.fileAttachment = new File(tempFileName);
  167.         attachment.attachmentName = filename;
  168.         email.attachments = new ArrayList<>();
  169.  
  170.         email.attachments.add(attachment);
  171.  
  172.         dto.status = emailService.sendEmail(email).toString();
  173.         dto.destination = Arrays.asList(email.to);
  174.  
  175.         return new ResponseEntity<>(dto, new HttpHeaders(), HttpStatus.OK);
  176.     }
  177.  
  178.     @ApiOperation(
  179.             value = "Получение отчёта по синхронизации",
  180.             notes = "Получение отчёта по синхронизации",
  181.             response = SyncReportDTO.class,
  182.             responseContainer = "List"
  183.     )
  184.     @RequestMapping(value = "/synchronization", method = RequestMethod.GET)
  185.     public List<SyncReportDTO> getSyncReport(
  186.             ServletResponse response,
  187.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по синхронизациям, в формате " + DATETIME_PATTERN) @RequestParam(value = "date") String strDate,
  188.             @ApiParam(value = "Идентификатор пользователя") @RequestParam(value = "user_id") Long userId
  189.     ) {
  190.  
  191.         DateTime date = DateTime.parse(strDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  192.  
  193.         return reportService.getSynchronizationReport(date, userId)
  194.                 .stream()
  195.                 .map(record -> {
  196.                     SyncReportDTO dto = new SyncReportDTO();
  197.  
  198.                     dto.sessionId = record.getSessionId();
  199.                     dto.syncGroup = record.getSyncGroup();
  200.                     dto.status = record.getStatus();
  201.                     dto.fullName = record.getFullName();
  202.                     dto.userId = record.getUserId();
  203.                     dto.deviceId = record.getDeviceId();
  204.                     dto.timeStart = record.getTimeStart().toString("yyyy-MM-dd HH:mm:ss.SSS");
  205.                     dto.timeEnd = record.getTimeEnd().toString("yyyy-MM-dd HH:mm:ss.SSS");
  206.                     dto.duration = record.getDuration();
  207.  
  208.                     return dto;
  209.                 })
  210.                 .collect(Collectors.toList());
  211.     }
  212.  
  213.     @ApiOperation(
  214.             value = "Получение отчёта по мониторингу сервисов",
  215.             notes = "Получение отчёта по мониторингу сервисов",
  216.             response = WebMethodValidationRecordDTO.class,
  217.             responseContainer = "List"
  218.     )
  219.     @RequestMapping(value = "/web-method-validation", method = RequestMethod.GET)
  220.     public List<WebMethodValidationRecordDTO> getKasudServiceValidationReport(
  221.             ServletResponse response,
  222.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по мониторингу сервисов, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom") String strFromDate,
  223.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по мониторингу сервисов, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo") String strToDate,
  224.             @ApiParam(value = "Поле фильтрации по сервисам") @RequestParam(value = "serviceId", required = false) Integer serviceId,
  225.             @ApiParam(value = "Поле фильтрации по успешности проверки") @RequestParam(value = "failedOnly", required = false, defaultValue = "false") Boolean failedOnly,
  226.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  227.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  228.     ) {
  229.  
  230.         DateTime dateFrom = DateTime.parse(strFromDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  231.         DateTime dateTo = DateTime.parse(strToDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  232.  
  233.         return reportService
  234.                 .getWebMethodValidationReport(dateFrom, dateTo, serviceId, failedOnly, pageNumber, pageSize)
  235.                 .stream()
  236.                 .map(record -> {
  237.  
  238.                     WebMethodValidationRecordDTO dto = new WebMethodValidationRecordDTO();
  239.  
  240.                     dto.serviceName = record.getServiceName();
  241.                     dto.timestamp = record.getDate();
  242.                     dto.status = record.getStatus().toString();
  243.                     dto.duration = record.getDuration();
  244.                     dto.validationInfo = record.getValidationInfo();
  245.  
  246.                     return dto;
  247.                 })
  248.                 .collect(Collectors.toList());
  249.  
  250.     }
  251.  
  252.     @ApiOperation(
  253.             value = "Выгрузка pdf файла по мониторингу сервисов",
  254.             notes = "Выгрузка pdf файла по мониторингу сервисов"
  255.     )
  256.     @RequestMapping(value = "/web-method-validation/file", method = RequestMethod.GET)
  257.     public void getValidationReportFile(
  258.             ServletResponse response,
  259.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по мониторингу сервисов, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom") String strFromDate,
  260.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по мониторингу сервисов, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo") String strToDate,
  261.             @ApiParam(value = "Поле фильтрации по сервисам") @RequestParam(value = "serviceId", required = false) Integer serviceId,
  262.             @ApiParam(value = "Поле фильтрации по успешности проверки") @RequestParam(value = "failedOnly", required = false, defaultValue = "false") Boolean failedOnly
  263.     ) {
  264.  
  265.         DateTime dateFrom = DateTime.parse(strFromDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  266.         DateTime dateTo = DateTime.parse(strToDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  267.  
  268.         ITextRenderer pdfFile = reportService.getWebMethodValidationReportFile(dateFrom, dateTo, serviceId, failedOnly);
  269.  
  270.         String filename;
  271.  
  272.         if (dateFrom.equals(dateTo))
  273.             filename = String.format("validation_report_%s.pdf", dateFrom.toString("yyyyMMdd"));
  274.         else
  275.             filename = String.format("validation_report_%s_%s.pdf", dateFrom.toString("yyyyMMdd"), dateTo.toString("yyyyMMdd"));
  276.  
  277.         HttpServletResponse httpServletResponse = (HttpServletResponse) response;
  278.         downloadService.downloadFile(httpServletResponse, pdfFile, filename);
  279.     }
  280.  
  281.     @RequestMapping(value = "/log", method = RequestMethod.GET)
  282.     public List<LogReportDTO> getLogReport() {
  283.  
  284.         // todo: stub
  285.  
  286.         return new ArrayList<>();
  287.     }
  288.  
  289.     @RequestMapping(value = "/userDoc", method = RequestMethod.GET)
  290.     public List<UserDocReportDTO> getUserDocReport() {
  291.  
  292.         // todo: stub
  293.  
  294.         return new ArrayList<>();
  295.     }
  296.  
  297.     @ApiOperation(
  298.             value = "Отчет по действиям пользователей",
  299.             notes = "Отчет по действиям пользователей",
  300.             response = UserActionRecord.class,
  301.             responseContainer = "List"
  302.     )
  303.     @RequestMapping(value = "/user-actions", method = RequestMethod.GET)
  304.     public List<UserActionRecord> getUserActions(
  305.             ServletResponse response,
  306.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по действиям пользователей, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom", required = false) String strFromDate,
  307.             @ApiParam(value = "Дата, для которой необходимо получить отчёт по действиям пользователей, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo", required = false) String strToDate,
  308.             @ApiParam(value = "Поле фильтрации по пользователям") @RequestParam(value = "userId", required = false) Integer userId,
  309.             @ApiParam(value = "Поле фильтрации по контексту") @RequestParam(value = "searchString", required = false) String searchString,
  310.             @ApiParam(value = "Поле фильтрации по действиям") @RequestParam(value = "id", required = false) String actionId,
  311.             @ApiParam(value = "Поле фильтрации по поручениям") @RequestParam(value = "instructionId", required = false) Integer instructionId,
  312.             @ApiParam(value = "Поле фильтрации по документам") @RequestParam(value = "documentId", required = false) Integer documentId,
  313.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  314.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  315.     ) {
  316.  
  317.         DateTime dateFrom = null;
  318.         DateTime dateTo = null;
  319.  
  320.         if (strFromDate != null)
  321.             dateFrom = DateTime.parse(strFromDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  322.         if (strToDate != null)
  323.             dateTo = DateTime.parse(strToDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  324.  
  325.  
  326.         return reportRepository.getUserActionsByFilter(dateFrom, dateTo, userId, searchString, instructionId, documentId, actionId, pageNumber, pageSize);
  327.     }
  328.  
  329.     @ApiOperation(
  330.             value = "Отчет по логам с устройств пользователей",
  331.             notes = "Отчет по логам с устройств пользователей",
  332.             response = DeviceLogRecord.class,
  333.             responseContainer = "List"
  334.     )
  335.     @RequestMapping(value = "/device-logs", method = RequestMethod.GET)
  336.     public List<DeviceLogRecord> getDeviseLogs(
  337.             ServletResponse response,
  338.             @ApiParam(value = "Дата, для которой необходимо получить логи с устройств пользователей, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateFrom", required = false) String strFromDate,
  339.             @ApiParam(value = "Дата, для которой необходимо получить логи с устройств пользователей, в формате " + DATETIME_PATTERN) @RequestParam(value = "dateTo", required = false) String strToDate,
  340.             @ApiParam(value = "Поле фильтрации по пользователям") @RequestParam(value = "userId", required = false) Integer userId,
  341.             @ApiParam(value = "Поле фильтрации по статусу") @RequestParam(value = "status", required = false) String status,
  342.             @ApiParam(value = "Поле фильтрации по контексту") @RequestParam(value = "contextString", required = false) String contextString,
  343.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  344.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  345.     ) {
  346.  
  347.         DateTime dateFrom = null;
  348.         DateTime dateTo = null;
  349.  
  350.         if (strFromDate != null)
  351.             dateFrom = DateTime.parse(strFromDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  352.         if (strToDate != null)
  353.             dateTo = DateTime.parse(strToDate, DateTimeFormat.forPattern("dd-MM-yyyy"));
  354.  
  355.         return reportRepository.getDeviceLogsByFilter(dateFrom, dateTo, userId, status, contextString, pageNumber, pageSize);
  356.  
  357.     }
  358.  
  359.     @ApiOperation(
  360.             value = "Выборка документов",
  361.             notes = "Выборка документов",
  362.             response = DocumentRecord.class,
  363.             responseContainer = "List"
  364.     )
  365.     @RequestMapping(value = "/documents", method = RequestMethod.GET)
  366.     public List<DocumentRecord> getDocuments(
  367.             ServletResponse response,
  368.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  369.             @ApiParam(value = "Поле для фильтрации по id документа") @RequestParam(value = "documentId", required = false) Integer documentId,
  370.             @ApiParam(value = "Поле для фильтрации по контексту документа") @RequestParam(value = "searchString", required = false) String searchString,
  371.             @ApiParam(value = "Поле для фильтрации по номеру документа") @RequestParam(value = "documentNumber", required = false) String documentNumber,
  372.             @ApiParam(value = "Поле для фильтрации по регистрационному номеру") @RequestParam(value = "regNumber", required = false) String regNumber,
  373.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  374.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  375.     ) {
  376.         return reportRepository.getDocumentsByFilter(deviceId, documentId, searchString, documentNumber, regNumber, pageNumber, pageSize);
  377.     }
  378.  
  379.  
  380.     @ApiOperation(
  381.             value = "Выборка устройств, на которые отправлен документ",
  382.             notes = "Выборка устройств, на которые отправлен документ",
  383.             response = DeviceRecord.class,
  384.             responseContainer = "List"
  385.     )
  386.     @RequestMapping(value = "/documents/devices", method = RequestMethod.GET)
  387.     public List<DeviceRecord> getDevices(
  388.             ServletResponse response,
  389.             @ApiParam(value = "Поле для фильтрации по id документа") @RequestParam(value = "documentId") Integer documentId,
  390.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  391.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  392.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  393.     ) {
  394.         return reportRepository.getDevicesByDocumentId(documentId, deviceId, pageNumber, pageSize);
  395.     }
  396.  
  397.     @ApiOperation(
  398.             value = "Выборка связанных с документом вложений",
  399.             notes = "Выборка связанных с документом вложений",
  400.             response = AttachmentRecord.class,
  401.             responseContainer = "List"
  402.     )
  403.     @RequestMapping(value = "/documents/attachments", method = RequestMethod.GET)
  404.     public List<AttachmentRecord> getAttachments(
  405.             ServletResponse response,
  406.             @ApiParam(value = "Поле для фильтрации по id документа") @RequestParam(value = "documentId") Integer documentId,
  407.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  408.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  409.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  410.     ) {
  411.         return reportRepository.getAttachmentsByDocumentId(documentId, deviceId, pageNumber, pageSize);
  412.     }
  413.  
  414.     @ApiOperation(
  415.             value = "Выборка этапов по документу",
  416.             notes = "Выборка этапов по документу",
  417.             response = StageRecord.class,
  418.             responseContainer = "List"
  419.     )
  420.     @RequestMapping(value = "/documents/stages", method = RequestMethod.GET)
  421.     public List<StageRecord> getDocumentStages(
  422.             ServletResponse response,
  423.             @ApiParam(value = "Поле для фильтрации по id документа") @RequestParam(value = "documentId") Integer documentId,
  424.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  425.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  426.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  427.     ) {
  428.         return reportRepository.getStagesByDocumentId(documentId, deviceId, pageNumber, pageSize);
  429.     }
  430.  
  431.     @ApiOperation(
  432.             value = "Выборка поручений",
  433.             notes = "Выборка поручений",
  434.             response = InstructionRecord.class,
  435.             responseContainer = "List"
  436.     )
  437.     @RequestMapping(value = "/instructions", method = RequestMethod.GET)
  438.     public List<InstructionRecord> getInstructions(
  439.             ServletResponse response,
  440.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  441.             @ApiParam(value = "Поле для фильтрации по id поручения") @RequestParam(value = "instructionId", required = false) Integer instructionId,
  442.             @ApiParam(value = "Поле для фильтрации по контексту документа") @RequestParam(value = "searchString", required = false) String searchString,
  443.             @ApiParam(value = "Поле для фильтрации по номеру поручения") @RequestParam(value = "instructionNumber", required = false) String instructionNumber,
  444.             @ApiParam(value = "Поле для фильтрации по id документа") @RequestParam(value = "documentId", required = false) Integer documentId,
  445.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  446.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  447.     ) {
  448.         return reportRepository.getInstructionsByFilter(deviceId, instructionId, searchString, instructionNumber, documentId, pageNumber, pageSize);
  449.     }
  450.  
  451.     @ApiOperation(
  452.             value = "Выборка устройств, на которые отправлено поручение",
  453.             notes = "Выборка устройств, на которые отправлено поручение",
  454.             response = DeviceRecord.class,
  455.             responseContainer = "List"
  456.     )
  457.     @RequestMapping(value = "/instructions/devices", method = RequestMethod.GET)
  458.     public List<DeviceRecord> getInstructionDevices(
  459.             ServletResponse response,
  460.             @ApiParam(value = "Поле для фильтрации по id поручения") @RequestParam(value = "instructionId") Integer instructionId,
  461.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  462.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  463.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  464.     ) {
  465.         return reportRepository.getDevicesByInstructionId(instructionId, deviceId, pageNumber, pageSize);
  466.     }
  467.  
  468.     @ApiOperation(
  469.             value = "Выборка связанных с поручением вложений",
  470.             notes = "Выборка связанных с поручением вложений",
  471.             response = AttachmentRecord.class,
  472.             responseContainer = "List"
  473.     )
  474.     @RequestMapping(value = "/instructions/attachments", method = RequestMethod.GET)
  475.     public List<AttachmentRecord> getInstructionAttachments(
  476.             ServletResponse response,
  477.             @ApiParam(value = "Поле для фильтрации по id поручения") @RequestParam(value = "instructionId") Integer instructionId,
  478.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  479.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  480.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  481.     ) {
  482.         return reportRepository.getAttachmentsByInstructionId(instructionId, deviceId, pageNumber, pageSize);
  483.     }
  484.  
  485.     @ApiOperation(
  486.             value = "Выборка задач",
  487.             notes = "Выборка задач",
  488.             response = TaskRecord.class,
  489.             responseContainer = "List"
  490.     )
  491.     @RequestMapping(value = "/tasks", method = RequestMethod.GET)
  492.     public List<TaskRecord> getTasks(
  493.             ServletResponse response,
  494.             @ApiParam(value = "Поле для фильтрации по id задачи") @RequestParam(value = "taskId", required = false) Integer taskId,
  495.             @ApiParam(value = "Поле для фильтрации по id пользователя") @RequestParam(value = "ownerId", required = false) Integer ownerId,
  496.             @ApiParam(value = "Поле для фильтрации по workId ") @RequestParam(value = "workId", required = false) Integer workId,
  497.             @ApiParam(value = "Поле для фильтрации по subworkId ") @RequestParam(value = "subworkId", required = false) Integer subworkId,
  498.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  499.             @ApiParam(value = "Поле для фильтрации по id документа") @RequestParam(value = "documentId", required = false) Integer documentId,
  500.             @ApiParam(value = "Поле для фильтрации по id поручения") @RequestParam(value = "instructionId", required = false) Integer instructionId,
  501.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  502.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  503.     ) {
  504.         return reportRepository.getTasksByFilter(deviceId, taskId, ownerId, workId, subworkId, documentId, instructionId, pageNumber, pageSize);
  505.     }
  506.  
  507.     @ApiOperation(
  508.             value = "Выборка устройств, связанных с задачами",
  509.             notes = "Выборка устройств, связанных с задачами",
  510.             response = TaskDeviceRecord.class,
  511.             responseContainer = "List"
  512.     )
  513.     @RequestMapping(value = "/tasks/devices", method = RequestMethod.GET)
  514.     public List<TaskDeviceRecord> getTaskDevices(
  515.             ServletResponse response,
  516.             @ApiParam(value = "Поле для фильтрации по id задачи") @RequestParam(value = "taskId") Integer taskId,
  517.             @ApiParam(value = "Поле для фильтрации по id пользователя") @RequestParam(value = "ownerId") Integer ownerId,
  518.             @ApiParam(value = "Поле для фильтрации по workId ") @RequestParam(value = "workId") Integer workId,
  519.             @ApiParam(value = "Поле для фильтрации по subworkId ") @RequestParam(value = "subworkId") Integer subworkId,
  520.             @ApiParam(value = "Поле для фильтрации по id устройства") @RequestParam(value = "deviceId", required = false) Integer deviceId,
  521.             @ApiParam(value = "Номер страницы отчета") @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
  522.             @ApiParam(value = "Количество строк на одной странице отчета") @RequestParam(value = "pageSize", defaultValue = "15") Integer pageSize
  523.  
  524.     ) {
  525.         return reportRepository.getTaskDevicesByFilter(taskId, ownerId, workId, subworkId, deviceId, pageNumber, pageSize);
  526.     }
  527.  
  528.  
  529. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement