LinkTrafPrcsController.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.utic.ptis.server.controller;
  2. import com.utic.common.utils.TimeUtils;
  3. import com.utic.ptis.server.service.*;
  4. import lombok.RequiredArgsConstructor;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.util.StopWatch;
  8. @Slf4j
  9. @Controller
  10. @RequiredArgsConstructor
  11. public class LinkTrafPrcsController implements AbstractProcessController {
  12. private final LinkTrafPrcsTime prcsTime;
  13. private final LinkRepositoryService repositoryService;
  14. private final LinkTrafDeleteService trafDeleteService;
  15. private final LinkTrafCollectService trafCollectService;
  16. private final LinkTrafFusionService trafFusionService;
  17. private final LinkTrafMissingService trafMissingService;
  18. private final LinkTrafSaveService trafSaveService;
  19. private String statTime;
  20. private String fromTime;
  21. private String toTime;
  22. public void initialize() {
  23. String currTime = TimeUtils.getCurrentTimeString();
  24. this.statTime = TimeUtils.getTime(TimeUtils.TYPE_PRCS_15MIN);
  25. this.fromTime = this.statTime;
  26. this.toTime = TimeUtils.getToTime(this.fromTime, TimeUtils.TYPE_PRCS_15MIN);
  27. String funcName = String.format("%45s", "LinkTrafPrcsController.initialize");
  28. log.info("[SCHEDULING] {}: ..05M, {}, {}, {}, {}", funcName, currTime, this.statTime, this.fromTime, this.toTime);
  29. /*
  30. * 가공에 사용되는 시각 정보를 초기화 한다.
  31. * 데이터 처리를 위해 현재 가공시각을 재설정한다.
  32. */
  33. this.prcsTime.init();
  34. this.repositoryService.getFusionInfo().init();
  35. log.info("[PROCESSING]Current/Current_5M/Current_5M_Prcs: {}/{}/{}", this.prcsTime.getCurrTime(), this.prcsTime.getCurrFiveMin(), this.prcsTime.getPrcsFiveMin());
  36. log.info("[PROCESSING] Current_5M_Prcs/Start/End: {}/{}/{}", this.prcsTime.getPrcsFiveMin(), this.prcsTime.getPrcsFiveMinFrom(), this.prcsTime.getPrcsFiveMinTo());
  37. log.info("[PROCESSING] Current_5M_Prcs/Week/Quarter: {}/{}/{}/{}", this.prcsTime.getPrcsFiveMin(), this.prcsTime.getPrcsDayWeek(), this.prcsTime.getPrcsDayQuater(), this.prcsTime.getPrcsDayWeekCd());
  38. log.info("[PROCESSING] 15M:PrcsTM/Start/End/Run: {}/{}/{}/{}", this.prcsTime.getStat15MinTime(), this.prcsTime.getStat15MinFrom(), this.prcsTime.getStat15MinTo(), this.prcsTime.isStat15Min());
  39. log.info("[PROCESSING] Hour:PrcsTM/Start/End/Run: {}/{}/{}/{}", this.prcsTime.getStatHourTime(), this.prcsTime.getStatHourFrom(), this.prcsTime.getStatHourTo(), this.prcsTime.isStatHour());
  40. log.info("[PROCESSING] Day:PrcsTM/Start/End/Run: {}/{}/{}/{}", this.prcsTime.getStatDayTime(), this.prcsTime.getStatDayFrom(), this.prcsTime.getStatDayTo(), this.prcsTime.isStatDay());
  41. log.info("[PROCESSING] Month:PrcsTM/Start/End/Run: {}/{}/{}/{}", this.prcsTime.getStatMonTime(), this.prcsTime.getStatMonFrom(), this.prcsTime.getStatMonTo(), this.prcsTime.isStatMon());
  42. log.info("[PROCESSING] Year:PrcsTM/Start/End/Run: {}/{}/{}/{}", this.prcsTime.getStatYearTime(), this.prcsTime.getStatYearFrom(), this.prcsTime.getStatYearTo(), this.prcsTime.isStatYear());
  43. }
  44. public void run() {
  45. if (this.prcsTime.isProcessing()) {
  46. log.error("Previous processing is not completed.");
  47. }
  48. StopWatch stopWatch = new StopWatch();
  49. stopWatch.start("LinkTrafPrcsController");
  50. log.info("[TRAFFIC---] LinkTrafPrcsController: START.");
  51. // 가공 시작
  52. this.prcsTime.setProcessing(true);
  53. // 가공처리 작업을 수행하기 위한 초기화 작업을 수행한다.
  54. initialize();
  55. // 0. 소통정보 저장할 테이블 삭제
  56. this.trafDeleteService.processing();
  57. // 1. 수집원별 링크 원시 교통정보 조회
  58. this.trafCollectService.processing();
  59. // 2. 가공방식에 따른 퓨전 소통정보 생서
  60. this.trafFusionService.processing();
  61. // 3. 결측처리
  62. this.trafMissingService.processing();
  63. // 4. 소통정보 저장 테이블 삭제 작업 완료 대기
  64. this.trafDeleteService.waitForComplete();
  65. // 5. 소통정보 저장
  66. this.trafSaveService.processing();
  67. stopWatch.stop();
  68. log.info("[TRAFFIC---] LinkTrafPrcsController: ..END. {} ms", stopWatch.getTotalTimeMillis());
  69. }
  70. }