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