MonthlyCustomersController.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package com.kmall.admin.controller.statistics;
  2. import com.kmall.admin.fromcomm.entity.SysUserEntity;
  3. import com.kmall.admin.service.statistics.MonthlyCustomersService;
  4. import com.kmall.common.utils.R;
  5. import org.apache.shiro.SecurityUtils;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestParam;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import java.text.ParseException;
  11. import java.text.SimpleDateFormat;
  12. import java.util.*;
  13. /**
  14. * @author zhangchuangbiao
  15. * @version 1.0
  16. * 2020-09-01 14:35
  17. */
  18. @RestController
  19. @RequestMapping("/monthly")
  20. public class MonthlyCustomersController {
  21. @Autowired
  22. private MonthlyCustomersService monthlyCustomersService;
  23. private void calculateDifferentMonth(List<String> monthList, String startMonth, String endMonth) throws ParseException {
  24. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  25. Calendar bef = Calendar.getInstance();
  26. Calendar aft = Calendar.getInstance();
  27. bef.setTime(sdf.parse(startMonth));
  28. aft.setTime(sdf.parse(endMonth));
  29. do {
  30. monthList.add(sdf.format(bef.getTime()));
  31. bef.add(Calendar.MONTH, 1);
  32. }
  33. while (bef.compareTo(aft) <= 0);
  34. }
  35. @RequestMapping("/customersQuery")
  36. public R queryMonthlyCustomers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  37. List<String> dateList = new ArrayList<>();
  38. try {
  39. calculateDifferentMonth(dateList, startMonth, endMonth);
  40. } catch (ParseException e) {
  41. e.printStackTrace();
  42. }
  43. String merchSn = null;
  44. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  45. if(!"1".equals(sysUser.getRoleType())){
  46. merchSn = sysUser.getMerchSn();
  47. }
  48. Map<String,Object> map = monthlyCustomersService.queryMonthlyCustomers(startMonth,endMonth,merchSn);
  49. Map<String, Object> returnMap = new HashMap<>();
  50. returnMap.put("dateList", dateList);
  51. returnMap.putAll(map);
  52. return R.ok(returnMap);
  53. }
  54. @RequestMapping("/customersQueryByWeek")
  55. public R queryWeeklyCustomers(@RequestParam("startWeek") String startWeek, @RequestParam("endWeek") String endWeek) throws ParseException {
  56. List<String> dateList = new ArrayList<>();
  57. try {
  58. calculateDifferentWeek(dateList, startWeek, endWeek);
  59. } catch (ParseException e) {
  60. e.printStackTrace();
  61. }
  62. String merchSn = null;
  63. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  64. if(!"1".equals(sysUser.getRoleType())){
  65. merchSn = sysUser.getMerchSn();
  66. }
  67. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  68. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  69. Calendar bef = Calendar.getInstance();
  70. Calendar aft = Calendar.getInstance();
  71. bef.setFirstDayOfWeek(Calendar.MONDAY);
  72. aft.setFirstDayOfWeek(Calendar.MONDAY);
  73. bef.setTime(sdf.parse(startWeek));
  74. aft.setTime(sdf.parse(endWeek));
  75. int befWeek = bef.get(Calendar.WEEK_OF_YEAR);
  76. int aftWeek = aft.get(Calendar.WEEK_OF_YEAR);
  77. if(befWeek<10){
  78. startWeek =weekSdf.format(bef.getTime())+"-0"+befWeek;
  79. }else{
  80. startWeek =weekSdf.format(bef.getTime())+"-"+befWeek;
  81. }
  82. if(aftWeek<10){
  83. endWeek =weekSdf.format(aft.getTime())+"-0"+aftWeek;
  84. }else{
  85. endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek;
  86. }
  87. Map<String,Object> map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn);
  88. Map<String, Object> returnMap = new HashMap<>();
  89. returnMap.put("dateList", dateList);
  90. returnMap.putAll(map);
  91. return R.ok(returnMap);
  92. }
  93. // todo
  94. private void calculateDifferentWeek(List<String> weekList, String startWeek, String endWeek) throws ParseException {
  95. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  96. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  97. Calendar bef = Calendar.getInstance();
  98. Calendar aft = Calendar.getInstance();
  99. bef.setFirstDayOfWeek(Calendar.MONDAY);
  100. aft.setFirstDayOfWeek(Calendar.MONDAY);
  101. bef.setTime(sdf.parse(startWeek));
  102. aft.setTime(sdf.parse(endWeek));
  103. do {
  104. int i = bef.get(Calendar.WEEK_OF_YEAR);
  105. if (i<10){
  106. weekList.add(weekSdf.format(bef.getTime())+"-0"+i);
  107. }else{
  108. weekList.add(weekSdf.format(bef.getTime())+"-"+i);
  109. }
  110. bef.set(Calendar.DAY_OF_MONTH,bef.get(Calendar.DAY_OF_MONTH)+7); //给当前时间增加一周
  111. }
  112. while (bef.compareTo(aft) <= 0);
  113. }
  114. }