package com.example.cinema.blImpl.statistics; import com.example.cinema.bl.statistics.StatisticsService; import com.example.cinema.data.statistics.StatisticsMapper; import com.example.cinema.po.AudiencePrice; import com.example.cinema.po.MovieScheduleTime; import com.example.cinema.po.MovieTotalBoxOffice; import com.example.cinema.vo.AudiencePriceVO; import com.example.cinema.vo.MovieScheduleTimeVO; import com.example.cinema.vo.MovieTotalBoxOfficeVO; import com.example.cinema.vo.ResponseVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author fjj * @date 2019/4/16 1:34 PM */ @Service public class StatisticsServiceImpl implements StatisticsService { @Autowired private StatisticsMapper statisticsMapper; @Override public ResponseVO getScheduleRateByDate(Date date) { try{ Date requireDate = date; if(requireDate == null){ requireDate = new Date(); } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); requireDate = simpleDateFormat.parse(simpleDateFormat.format(requireDate)); Date nextDate = getNumDayAfterDate(requireDate, 1); return ResponseVO.buildSuccess(movieScheduleTimeList2MovieScheduleTimeVOList(statisticsMapper.selectMovieScheduleTimes(requireDate, nextDate))); }catch (Exception e){ e.printStackTrace(); return ResponseVO.buildFailure("失败"); } } @Override public ResponseVO getTotalBoxOffice() { try { return ResponseVO.buildSuccess(movieTotalBoxOfficeList2MovieTotalBoxOfficeVOList(statisticsMapper.selectMovieTotalBoxOffice())); }catch (Exception e){ e.printStackTrace(); return ResponseVO.buildFailure("失败"); } } @Override public ResponseVO getAudiencePriceSevenDays() { try { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date today = simpleDateFormat.parse(simpleDateFormat.format(new Date())); Date startDate = getNumDayAfterDate(today, -6); List audiencePriceVOList = new ArrayList<>(); for(int i = 0; i < 7; i++){ AudiencePriceVO audiencePriceVO = new AudiencePriceVO(); Date date = getNumDayAfterDate(startDate, i); audiencePriceVO.setDate(date); List audiencePriceList = statisticsMapper.selectAudiencePrice(date, getNumDayAfterDate(date, 1)); double totalPrice = audiencePriceList.stream().mapToDouble(item -> item.getTotalPrice()).sum(); audiencePriceVO.setPrice(Double.parseDouble(String.format("%.2f", audiencePriceList.size() == 0 ? 0 : totalPrice / audiencePriceList.size()))); audiencePriceVOList.add(audiencePriceVO); } return ResponseVO.buildSuccess(audiencePriceVOList); }catch (Exception e){ e.printStackTrace(); return ResponseVO.buildFailure("失败"); } } @Override public ResponseVO getMoviePlacingRateByDate(Date date) { //要求见接口说明 return null; } @Override public ResponseVO getPopularMovies(int days, int movieNum) { //要求见接口说明 return null; } /** * 获得num天后的日期 * @param oldDate * @param num * @return */ Date getNumDayAfterDate(Date oldDate, int num){ Calendar calendarTime = Calendar.getInstance(); calendarTime.setTime(oldDate); calendarTime.add(Calendar.DAY_OF_YEAR, num); return calendarTime.getTime(); } private MovieScheduleTimeVO movieScheduleTime2MovieScheduleTimeVO(MovieScheduleTime movieScheduleTime){ if(movieScheduleTime != null){ MovieScheduleTimeVO movieScheduleTimeVO = new MovieScheduleTimeVO(); movieScheduleTimeVO.setMovieId(movieScheduleTime.getMovieId()); movieScheduleTimeVO.setTime(movieScheduleTime.getTime()); movieScheduleTimeVO.setName(movieScheduleTime.getName()); return movieScheduleTimeVO; } return null; } private List movieScheduleTimeList2MovieScheduleTimeVOList(List movieScheduleTimeList){ List movieScheduleTimeVOList = new ArrayList<>(); for(MovieScheduleTime movieScheduleTime : movieScheduleTimeList){ movieScheduleTimeVOList.add(movieScheduleTime2MovieScheduleTimeVO(movieScheduleTime)); } return movieScheduleTimeVOList; } private MovieTotalBoxOfficeVO movieTotalBoxOffice2MovieTotalBoxOfficeVO(MovieTotalBoxOffice movieTotalBoxOffice){ if(movieTotalBoxOffice != null){ MovieTotalBoxOfficeVO movieTotalBoxOfficeVO = new MovieTotalBoxOfficeVO(); movieTotalBoxOfficeVO.setMovieId(movieTotalBoxOffice.getMovieId()); movieTotalBoxOfficeVO.setBoxOffice(movieTotalBoxOffice.getBoxOffice()); movieTotalBoxOfficeVO.setName(movieTotalBoxOffice.getName()); return movieTotalBoxOfficeVO; } return null; } private List movieTotalBoxOfficeList2MovieTotalBoxOfficeVOList(List movieTotalBoxOfficeList){ List movieTotalBoxOfficeVOList = new ArrayList<>(); for(MovieTotalBoxOffice movieTotalBoxOffice : movieTotalBoxOfficeList){ movieTotalBoxOfficeVOList.add(movieTotalBoxOffice2MovieTotalBoxOfficeVO(movieTotalBoxOffice)); } return movieTotalBoxOfficeVOList; } }