nnnjjj123
2021-01-28 71b6b716361c52af290493d365a328fc1a3467e2
src/main/java/org/springblade/modules/healthcode/controller/healthcodeController.java
@@ -35,6 +35,9 @@
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 *  控制器
@@ -118,11 +121,152 @@
    * 新增或修改
    */
   @PostMapping("/insterh")
   public R submit(String type, String jname, String province, String city, String district, String dtime, HttpServletResponse response) {
   public R insterh(String type, String sex, String province, String city, String district, String dtime, HttpServletResponse response) {
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
      response.setHeader("Access-Control-Allow-Credentials","true");
      ihealthcodeService.insert(type, jname, province, city, district, dtime);
      ihealthcodeService.insert(type, sex, province, city, district, dtime);
      return R.success("录入成功");
   }
   /**
    * 统计接口
    */
   @PostMapping("/selectCount")
   public R selectCount(String type, HttpServletResponse response) {
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
      response.setHeader("Access-Control-Allow-Credentials","true");
      List<Map<String, Object>> list = new ArrayList<>();
      Date now = new Date();
      Date time = new Date(now.getYear(), now.getMonth(), now.getDate());
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
      Calendar cal = Calendar.getInstance();
      cal.setTime(time);
      // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
      int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
      if (1 == dayWeek) {
         cal.add(Calendar.DAY_OF_MONTH, -1);
      }
      switch(type){
         case "0" :
            //日
            String times = sdf.format(cal.getTime());
            list=ihealthcodeService.selectCountr(times);
            break;
         case "1" :
            System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期
            // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
            cal.setFirstDayOfWeek(Calendar.MONDAY);
            // 获得当前日期是一个星期的第几天
            int day = cal.get(Calendar.DAY_OF_WEEK);
            // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
            cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
            cal.set(Calendar.HOUR, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            String beginTime = sdf.format(cal.getTime());
            Date mondayDate = cal.getTime();
            cal.add(Calendar.DATE, 6);
            cal.set(Calendar.HOUR, 23);
            cal.set(Calendar.MINUTE, 59);
            cal.set(Calendar.SECOND, 59);
            String endTime = sdf.format(cal.getTime());
            Date sundayDate = cal.getTime();
             list = ihealthcodeService.selectCountz(beginTime, endTime);
            //周
            break;
         default :
            //月
            Date d = new Date();
            // 月初
            System.out.println("月初" + sdf.format(getMonthStart(d)));
            String beginTimes = sdf.format(getMonthStart(d));
            // 月末
            System.out.println("月末" + sdf.format(getMonthEnd(d)));
            String endTimes = sdf.format(getMonthEnd(d));
            list = ihealthcodeService.selectCountz(beginTimes, endTimes);
      }
      return R.data(list);
   }
//      Date now = new Date();
//      Date time = new Date(now.getYear(), now.getMonth(), now.getDate());
//      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
//      Calendar cal = Calendar.getInstance();
//      cal.setTime(time);
//      // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
//      int dayWeek = cal.get(Calendar.DAY_OF_WEEK);// 获得当前日期是一个星期的第几天
//      if (1 == dayWeek) {
//         cal.add(Calendar.DAY_OF_MONTH, -1);
//      }
//      System.out.println("要计算日期为:" + sdf.format(cal.getTime())); // 输出要计算日期
//      // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
//      cal.setFirstDayOfWeek(Calendar.MONDAY);
//      // 获得当前日期是一个星期的第几天
//      int day = cal.get(Calendar.DAY_OF_WEEK);
//      // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
//      cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
//      cal.set(Calendar.HOUR, 0);
//      cal.set(Calendar.MINUTE, 0);
//      cal.set(Calendar.SECOND, 0);
//      String imptimeBegin = sdf.format(cal.getTime());
//      Date mondayDate = cal.getTime();
//      System.out.println("所在周星期一的日期:" + imptimeBegin);
//
//      cal.add(Calendar.DATE, 6);
//      cal.set(Calendar.HOUR, 23);
//      cal.set(Calendar.MINUTE, 59);
//      cal.set(Calendar.SECOND, 59);
//
//      String imptimeEnd = sdf.format(cal.getTime());
//      Date sundayDate = cal.getTime();
//      System.out.println("所在周星期日的日期:" + imptimeEnd);
//
//      DateFormat datetimeDf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//      System.out.println("星期一的开始:"+datetimeDf.format(mondayDate));
//      System.out.println("星期天的结束:"+datetimeDf.format(sundayDate));
//
//      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//      Date d = new Date();
//      // 月初
//      System.out.println("月初" + sdf.format(getMonthStart(d)));
//      // 月末
//      System.out.println("月末" + sdf.format(getMonthEnd(d)));
   private static Date getMonthStart(Date date) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      int index = calendar.get(Calendar.DAY_OF_MONTH);
      calendar.add(Calendar.DATE, (1 - index));
      return calendar.getTime();
   }
   private static Date getMonthEnd(Date date) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      calendar.add(Calendar.MONTH, 1);
      int index = calendar.get(Calendar.DAY_OF_MONTH);
      calendar.add(Calendar.DATE, (-index));
      return calendar.getTime();
   }
}