package org.springblade.modules.attendance.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.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.modules.attendance.entity.Attendance; import org.springblade.modules.attendance.excel.AttendanceExcel; import org.springblade.modules.attendance.service.IAttendanceService; import org.springblade.modules.attendance.vo.AttendanceVO; import org.springblade.modules.attendance.wrapper.AttendanceWrapper; import org.springblade.modules.system.service.IDictBizService; import org.springblade.modules.system.service.IUserService; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.List; /** * 控制器 * * @author BladeX * @since 2021-03-03 */ @RestController @AllArgsConstructor @RequestMapping("/attendance") @Api(value = "", tags = "接口") public class AttendanceController extends BladeController { private final IAttendanceService attendanceService; // private final IEnclosureService iEnclosureService; private final IDictBizService iDictBizService; private final IUserService iUserService; /** * 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入attendance") public R detail(Attendance attendance) { Attendance detail = attendanceService.getOne(Condition.getQueryWrapper(attendance)); return R.data(detail); } /** * 分页 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入attendance") public R> list(Attendance attendance, Query query) { IPage pages = attendanceService.page(Condition.getPage(query), Condition.getQueryWrapper(attendance)); return R.data(AttendanceWrapper.build().pageVO(pages)); } /** * 自定义分页 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入attendance") public R> page(AttendanceVO attendance, Query query, Long department) { IPage pages = attendanceService.selectAttendancePage(Condition.getPage(query), department, attendance); return R.data(AttendanceWrapper.build().pageVO(pages)); } // /** // * 保安位置比对 // */ // @GetMapping("/positionThan") // public R positionThan(@Valid Attendance attendance, 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"); // Enclosure enclosure = new Enclosure(); // enclosure.setAnumber(attendance.getNumber()); // //查询当前处警人员的电子围栏信息 // Boolean onArea = iEnclosureService.isOnArea(attendance.getJd(),attendance.getWd(),enclosure); // if (onArea){ // return R.data(true); // } // return R.data(false); // } // /** // * 新增 // */ // @PostMapping("/AppSave") // @ApiOperationSupport(order = 4) // @ApiOperation(value = "新增", notes = "传入attendance") // public R AppSave(@Valid Attendance attendance, 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"); // Enclosure enclosure = new Enclosure(); // enclosure.setAnumber(attendance.getNumber()); // //查询当前处警人员的电子围栏信息 // Boolean onArea = iEnclosureService.isOnArea(attendance.getJd(),attendance.getWd(),enclosure); // //判断是否在所在区域打卡,返回数据 // if (onArea) { // //查询当前考勤人员的部门信息 // attendance.setDepartment(iUserService.selUserByCode(attendance.getNumber()).getDeptId()); // //获取当前日期是礼拜几 // attendance.setWeek(new SimpleDateFormat("EEEE").format(new Date())); // //获取打卡时间标准 // List dictBizList = iDictBizService.getList("attendanceStandard"); // //定义打卡时间标准,上午,下午 // StringBuilder forenoon = new StringBuilder(); // StringBuilder afternoon = new StringBuilder(); // String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); // for (DictBiz dictBiz : dictBizList) { // if (dictBiz.getDictValue().contains("上午")) { // forenoon = forenoon.append(dictBiz.getDictKey()); // } // if (dictBiz.getDictValue().contains("下午")) { // afternoon = afternoon.append(dictBiz.getDictKey()); // } // } // //上午打卡时间标准 // String forenoonWorkTime = format + " " + forenoon.toString().split("-")[0] + ":00"; // String forenoonOfDutyTime = format + " " + forenoon.toString().split("-")[1] + ":00"; // //下午打卡时间标准 // String afternoonWorkTime = format + " " + afternoon.toString().split("-")[0] + ":00"; // String afternoonOfDutyTime = format + " " + afternoon.toString().split("-")[1] + ":00"; // //判断打卡时间 // try { // long time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(attendance.getClockTime()).getTime(); // // //判断上午上班之前半小时前打卡为无效打卡 // if (time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime()-30*60*1000)<0){ // attendance.setClocktype("0"); // attendance.setAttendancetype("4"); // return R.status(attendanceService.save(attendance)); // } // // //上午上班半小时前到上班时间打卡为正常打卡 // if (time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime()-30*60*1000)>=0 // && time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime()<=0) { // attendance.setClocktype("0"); // attendance.setAttendancetype("0"); // return R.status(attendanceService.save(attendance)); // } // // //上午上班后到上班下班前打卡为正常打卡 // if (time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime()>0 // && time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()<0) { // //查询当前时间之前当前考勤人员的最新的一条考勤数据 // Attendance attendanceNow = attendanceService.selAttendanceNewNow(attendance.getNumber()); // if (null!=attendanceNow){ // if (attendanceNow.getAttendancetype().equals("0") || attendanceNow.getClocktype().equals("1")) { // //下班早退 // attendance.setClocktype("1"); // attendance.setAttendancetype("2"); // } // if (attendanceNow.getAttendancetype().equals("4")){ // //上班迟到 // attendance.setClocktype("0"); // attendance.setAttendancetype("1"); // } // }else { // //上班迟到 // attendance.setClocktype("0"); // attendance.setAttendancetype("1"); // } // return R.status(attendanceService.save(attendance)); // } // // //正常下班时间-下班半小时后 // if (time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()>=0 // && time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()+30*60*1000)<=0){ // //正常下班打卡 // attendance.setClocktype("1"); // attendance.setAttendancetype("0"); // return R.status(attendanceService.save(attendance)); // } // // //上午下班半小时后-下午上班之前半小時打卡为无效打卡 // if (time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()-30*60*1000)<0 // && time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()+30*60*1000)>0){ // //无效打卡 // attendance.setClocktype("0"); // attendance.setAttendancetype("4"); // return R.status(attendanceService.save(attendance)); // } // // //下午上班之前半小時-下午上班时间之前打卡为下午正常上班打卡 // if (time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()-30*60*1000)>=0 // && time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()<=0){ // //下午正常打卡 // attendance.setClocktype("0"); // attendance.setAttendancetype("0"); // return R.status(attendanceService.save(attendance)); // } // // //下午上班之后到下午下班之前 // if (time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()>0 // && time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonOfDutyTime).getTime()<0){ // //查询当前时间之前当前考勤人员的最新的一条考勤数据 // Attendance attendanceNow = attendanceService.selAttendanceNewNow(attendance.getNumber()); // if (null!=attendanceNow){ // if (attendanceNow.getAttendancetype().equals("0") && attendanceNow.getClocktype().equals("0")) { // //下班早退 // attendance.setClocktype("1"); // attendance.setAttendancetype("2"); // } // if (attendanceNow.getClocktype().equals("1")) { // //下班早退 // attendance.setClocktype("1"); // attendance.setAttendancetype("2"); // } // if (attendanceNow.getAttendancetype().equals("4")){ // //上班迟到 // attendance.setClocktype("0"); // attendance.setAttendancetype("1"); // } // }else { // //上班迟到 // attendance.setClocktype("0"); // attendance.setAttendancetype("1"); // } // return R.status(attendanceService.save(attendance)); // } // // //正常打下午下班卡 // if (time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonOfDutyTime).getTime()>=0 // && time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonOfDutyTime).getTime()+30*60*1000)<=0 // ){ // //下午正常下班打卡 // attendance.setClocktype("1"); // attendance.setAttendancetype("0"); // return R.status(attendanceService.save(attendance)); // } // // //打卡时间超过下午下班打卡时间后的半小时为无效打卡 // if (time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonOfDutyTime).getTime()+30*60*1000)>0){ // //下午下班打卡无效 // attendance.setClocktype("1"); // attendance.setAttendancetype("4"); // return R.status(attendanceService.save(attendance)); // } // // } catch (ParseException e) { // e.printStackTrace(); // } // } // return R.status(false); // } /** * 修改 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入attendance") public R update(@Valid @RequestBody Attendance attendance) { return R.status(attendanceService.updateById(attendance)); } /** * 新增或修改 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入attendance") public R submit(@Valid @RequestBody Attendance attendance) { return R.status(attendanceService.saveOrUpdate(attendance)); } /** * 删除 */ @PostMapping("/remove") @ApiOperationSupport(order = 8) @ApiOperation(value = "删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(attendanceService.removeByIds(Func.toLongList(ids))); } /** * 导出用户 */ @GetMapping("/export-Attendance") public void exportAttendane(String name, String beginTime, String endTime, String attendancetype, HttpServletResponse response) { String beginTimes = null; String endTimes = null; String attendancetypes = null; if (beginTime.equals("undefined ") && endTime.equals("undefined")) { beginTimes=null; endTimes=null; attendancetypes=attendancetype; } else if (attendancetype.equals("undefined")){ attendancetypes=null; } else { beginTimes=beginTime; endTimes=endTime; attendancetypes=attendancetype; } List list = attendanceService.exportAttendane(name, beginTimes, endTimes, attendancetypes); ExcelUtil.export(response, "考勤数据" + DateUtil.time(), "考勤数据表", list, AttendanceExcel.class); } }