/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.jfpt.healthcode.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.common.entity.HealthcodeExcel; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.jfpt.healthcode.entity.Healthcode; import org.springblade.jfpt.healthcode.service.IhealthcodeService; import org.springblade.jfpt.healthcode.vo.HealthcodeVO; import org.springblade.jfpt.healthcode.wrapper.healthcodeWrapper; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.text.SimpleDateFormat; import java.util.*; /** * 控制器 * * @author BladeX * @since 2020-07-19 */ @RestController @AllArgsConstructor @CrossOrigin @RequestMapping("healthcode/healthcode") @Api(value = "", tags = "接口") public class healthcodeController extends BladeController { private final IhealthcodeService ihealthcodeService; /** * 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入lx") public R detail(Healthcode healthcode) { Healthcode detail = ihealthcodeService.getOne(Condition.getQueryWrapper(healthcode)); return R.data(healthcodeWrapper.build().entityVO(detail)); } /** * 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入lx") public R> list(Healthcode healthcode, Query query) { IPage pages = ihealthcodeService.page(Condition.getPage(query), Condition.getQueryWrapper(healthcode)); return R.data(healthcodeWrapper.build().pageVO(pages)); } /** * 自定义健康码分页/健康码统计图表点击事件 * @param healthcodeVO 健康码对象 * @param query 分页对象(页码) * @return */ @GetMapping("/page") @ApiOperationSupport(order = 2) @ApiOperation(value = "自定义分页", notes = "传入lx") public R> page(HealthcodeVO healthcodeVO, Query query) { return R.data(ihealthcodeService.selectHealthcodeListPage(Condition.getPage(query),healthcodeVO)); } /** * 新增 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入lx") public R save(@Valid @RequestBody Healthcode healthcode) { return R.status(ihealthcodeService.save(healthcode)); } /** * 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入lx") public R update(@Valid @RequestBody Healthcode healthcode) { return R.status(ihealthcodeService.updateById(healthcode)); } /** * 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入lx") public R submit(@Valid @RequestBody Healthcode healthcode) { return R.status(ihealthcodeService.saveOrUpdate(healthcode)); } /** * 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 8) @ApiOperation(value = "删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(ihealthcodeService.removeByIds(Func.toLongList(ids))); } /** * 新增或修改 */ @PostMapping("/insterh") public R submit(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,sex, province, city, district, dtime); return R.success("录入成功"); } /** * 统计接口 */ @GetMapping("/selectCount") public R selectCount(Integer 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> 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()); System.out.println("times = " + times); 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); } 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(); } /** * 导出健康码数据表格 * @param healthcodeVO 查询条件 * @param response */ @GetMapping("/export-healthcode") public void exportHealthcode(HealthcodeVO healthcodeVO, HttpServletResponse response){ List list = ihealthcodeService.exportHealthcode(healthcodeVO); ExcelUtil.export(response, "健康码数据" + DateUtil.time(), "健康码数据表", list, HealthcodeExcel.class); } }