From 7c2c09439da3dccf1e032e89e1cb950b8fa1cc26 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Tue, 01 Mar 2022 20:09:57 +0800
Subject: [PATCH] 健康证,合同基础接口编写
---
src/main/java/org/springblade/modules/attendance/controller/AttendanceController.java | 337 ++++++++++++++++++++++++++++---------------------------
1 files changed, 173 insertions(+), 164 deletions(-)
diff --git a/src/main/java/org/springblade/modules/attendance/controller/AttendanceController.java b/src/main/java/org/springblade/modules/attendance/controller/AttendanceController.java
index 1cdb7ac..24ccdf4 100644
--- a/src/main/java/org/springblade/modules/attendance/controller/AttendanceController.java
+++ b/src/main/java/org/springblade/modules/attendance/controller/AttendanceController.java
@@ -1,5 +1,6 @@
package org.springblade.modules.attendance.controller;
+import bsh.ParseException;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
@@ -18,12 +19,16 @@
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.entity.DictBiz;
+import org.springblade.modules.system.entity.User;
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.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
/**
@@ -44,7 +49,7 @@
private final IDictBizService iDictBizService;
- private final IUserService iUserService;
+ private final IUserService userService;
/**
* 详情
@@ -98,169 +103,173 @@
// }
-// /**
-// * 新增
-// */
-// @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<DictBiz> 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);
-// }
+ /**
+ * 打卡(洪城义警app)
+ * @param response
+ * @param attendance
+ * @return
+ */
+ @PostMapping("/AppSave")
+ public R AppSave(@Valid AttendanceVO 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");
+ //先查询用户信息
+ User user = new User();
+ user.setCardid(attendance.getIdCardNo());
+ user.setStatus(1);
+ user.setIsDeleted(0);
+ User user1 = userService.getOne(Condition.getQueryWrapper(user));
+ if (null!=user1) {
+ attendance.setUserId(user1.getId());
+ attendance.setClockTime(new Date());
+ //查询当前考勤人员的部门信息
+ attendance.setDeptId(Long.parseLong(user1.getDeptId()));
+ //获取当前日期是礼拜几
+ attendance.setWeek(new SimpleDateFormat("EEEE").format(new Date()));
+ //获取打卡时间标准
+ List<DictBiz> 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 = attendance.getClockTime().getTime();
+
+ //判断上午上班之前半小时前打卡为无效打卡
+ if (time - (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime() - 30 * 60 * 1000) < 0) {
+ attendance.setClockType(1);
+ attendance.setAttendanceType(5);
+ 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(1);
+ attendance.setAttendanceType(1);
+ 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.getUserId());
+ if (null != attendanceNow) {
+ if (attendanceNow.getAttendanceType().equals(1) || attendanceNow.getClockType().equals(2)) {
+ //下班早退
+ attendance.setClockType(2);
+ attendance.setAttendanceType(3);
+ }
+ if (attendanceNow.getAttendanceType().equals(5)) {
+ //上班迟到
+ attendance.setClockType(1);
+ attendance.setAttendanceType(2);
+ }
+ } else {
+ //上班迟到
+ attendance.setClockType(1);
+ attendance.setAttendanceType(2);
+ }
+ 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(2);
+ attendance.setAttendanceType(1);
+ 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(1);
+ attendance.setAttendanceType(5);
+ 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(1);
+ attendance.setAttendanceType(1);
+ 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.getUserId());
+ if (null != attendanceNow) {
+ if (attendanceNow.getAttendanceType().equals(1) && attendanceNow.getClockType().equals(1)) {
+ //下班早退
+ attendance.setClockType(2);
+ attendance.setAttendanceType(3);
+ }
+ if (attendanceNow.getClockType().equals(2)) {
+ //下班早退
+ attendance.setClockType(2);
+ attendance.setAttendanceType(3);
+ }
+ if (attendanceNow.getAttendanceType().equals(5)) {
+ //上班迟到
+ attendance.setClockType(1);
+ attendance.setAttendanceType(2);
+ }
+ } else {
+ //上班迟到
+ attendance.setClockType(1);
+ attendance.setAttendanceType(2);
+ }
+ 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(2);
+ attendance.setAttendanceType(1);
+ 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(2);
+ attendance.setAttendanceType(5);
+ return R.status(attendanceService.save(attendance));
+ }
+
+ } catch (java.text.ParseException e) {
+ e.printStackTrace();
+ }
+ }
+ return R.status(false);
+ }
/**
* 修改
--
Gitblit v1.9.3