StatisticsServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.example.cinema.blImpl.statistics;
  2. import com.example.cinema.bl.statistics.StatisticsService;
  3. import com.example.cinema.data.statistics.StatisticsMapper;
  4. import com.example.cinema.po.AudiencePrice;
  5. import com.example.cinema.po.MovieScheduleTime;
  6. import com.example.cinema.po.MovieTotalBoxOffice;
  7. import com.example.cinema.vo.AudiencePriceVO;
  8. import com.example.cinema.vo.MovieScheduleTimeVO;
  9. import com.example.cinema.vo.MovieTotalBoxOfficeVO;
  10. import com.example.cinema.vo.ResponseVO;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.text.SimpleDateFormat;
  14. import java.util.ArrayList;
  15. import java.util.Calendar;
  16. import java.util.Date;
  17. import java.util.List;
  18. /**
  19. * @author fjj
  20. * @date 2019/4/16 1:34 PM
  21. */
  22. @Service
  23. public class StatisticsServiceImpl implements StatisticsService {
  24. @Autowired
  25. private StatisticsMapper statisticsMapper;
  26. @Override
  27. public ResponseVO getScheduleRateByDate(Date date) {
  28. try{
  29. Date requireDate = date;
  30. if(requireDate == null){
  31. requireDate = new Date();
  32. }
  33. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  34. requireDate = simpleDateFormat.parse(simpleDateFormat.format(requireDate));
  35. Date nextDate = getNumDayAfterDate(requireDate, 1);
  36. return ResponseVO.buildSuccess(movieScheduleTimeList2MovieScheduleTimeVOList(statisticsMapper.selectMovieScheduleTimes(requireDate, nextDate)));
  37. }catch (Exception e){
  38. e.printStackTrace();
  39. return ResponseVO.buildFailure("失败");
  40. }
  41. }
  42. @Override
  43. public ResponseVO getTotalBoxOffice() {
  44. try {
  45. return ResponseVO.buildSuccess(movieTotalBoxOfficeList2MovieTotalBoxOfficeVOList(statisticsMapper.selectMovieTotalBoxOffice()));
  46. }catch (Exception e){
  47. e.printStackTrace();
  48. return ResponseVO.buildFailure("失败");
  49. }
  50. }
  51. @Override
  52. public ResponseVO getAudiencePriceSevenDays() {
  53. try {
  54. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  55. Date today = simpleDateFormat.parse(simpleDateFormat.format(new Date()));
  56. Date startDate = getNumDayAfterDate(today, -6);
  57. List<AudiencePriceVO> audiencePriceVOList = new ArrayList<>();
  58. for(int i = 0; i < 7; i++){
  59. AudiencePriceVO audiencePriceVO = new AudiencePriceVO();
  60. Date date = getNumDayAfterDate(startDate, i);
  61. audiencePriceVO.setDate(date);
  62. List<AudiencePrice> audiencePriceList = statisticsMapper.selectAudiencePrice(date, getNumDayAfterDate(date, 1));
  63. double totalPrice = audiencePriceList.stream().mapToDouble(item -> item.getTotalPrice()).sum();
  64. audiencePriceVO.setPrice(Double.parseDouble(String.format("%.2f", audiencePriceList.size() == 0 ? 0 : totalPrice / audiencePriceList.size())));
  65. audiencePriceVOList.add(audiencePriceVO);
  66. }
  67. return ResponseVO.buildSuccess(audiencePriceVOList);
  68. }catch (Exception e){
  69. e.printStackTrace();
  70. return ResponseVO.buildFailure("失败");
  71. }
  72. }
  73. @Override
  74. public ResponseVO getMoviePlacingRateByDate(Date date) {
  75. //要求见接口说明
  76. return null;
  77. }
  78. @Override
  79. public ResponseVO getPopularMovies(int days, int movieNum) {
  80. //要求见接口说明
  81. return null;
  82. }
  83. /**
  84. * 获得num天后的日期
  85. * @param oldDate
  86. * @param num
  87. * @return
  88. */
  89. Date getNumDayAfterDate(Date oldDate, int num){
  90. Calendar calendarTime = Calendar.getInstance();
  91. calendarTime.setTime(oldDate);
  92. calendarTime.add(Calendar.DAY_OF_YEAR, num);
  93. return calendarTime.getTime();
  94. }
  95. private List<MovieScheduleTimeVO> movieScheduleTimeList2MovieScheduleTimeVOList(List<MovieScheduleTime> movieScheduleTimeList){
  96. List<MovieScheduleTimeVO> movieScheduleTimeVOList = new ArrayList<>();
  97. for(MovieScheduleTime movieScheduleTime : movieScheduleTimeList){
  98. movieScheduleTimeVOList.add(new MovieScheduleTimeVO(movieScheduleTime));
  99. }
  100. return movieScheduleTimeVOList;
  101. }
  102. private List<MovieTotalBoxOfficeVO> movieTotalBoxOfficeList2MovieTotalBoxOfficeVOList(List<MovieTotalBoxOffice> movieTotalBoxOfficeList){
  103. List<MovieTotalBoxOfficeVO> movieTotalBoxOfficeVOList = new ArrayList<>();
  104. for(MovieTotalBoxOffice movieTotalBoxOffice : movieTotalBoxOfficeList){
  105. movieTotalBoxOfficeVOList.add(new MovieTotalBoxOfficeVO(movieTotalBoxOffice));
  106. }
  107. return movieTotalBoxOfficeVOList;
  108. }
  109. }