From aa8ecde02d63168e11cdd693c84cd4de5fe2e04e Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Mon, 17 May 2021 20:26:25 +0800
Subject: [PATCH] 1.考勤打卡接口修改,根据坐标判断是否在多边形区域内 2.考勤打卡接口修改,根据打卡时间判断打卡的状态
---
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.xml | 9 +
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/impl/EnclosureServiceImpl.java | 16 ++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java | 9 +
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java | 6
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java | 7
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/IEnclosureService.java | 9 +
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml | 11 +
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java | 3
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java | 370 ++++++++++++++++++++++++++++++++++++++++++++++
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.java | 9 +
10 files changed, 447 insertions(+), 2 deletions(-)
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java
index f1a3b5f..e755c57 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/controller/AttendanceController.java
@@ -35,7 +35,12 @@
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.jfpt.attendance.excel.AttendanceExcel;
+import org.springblade.jfpt.attendance.util.PointMapUtil;
import org.springblade.jfpt.attendance.wrapper.AttendanceWrapper;
+import org.springblade.jfpt.enclosure.entity.Enclosure;
+import org.springblade.jfpt.enclosure.service.IEnclosureService;
+import org.springblade.system.entity.DictBiz;
+import org.springblade.system.feign.IDictBizClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.vo.UserVO;
import org.springframework.web.bind.annotation.*;
@@ -46,8 +51,12 @@
import org.springblade.core.boot.ctrl.BladeController;
import springfox.documentation.annotations.ApiIgnore;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.logging.SimpleFormatter;
/**
* 控制器
@@ -62,6 +71,10 @@
public class AttendanceController extends BladeController {
private final IAttendanceService attendanceService;
+
+ private final IEnclosureService iEnclosureService;
+
+ private final IDictBizClient iDictBizService;
/**
* 详情
@@ -114,7 +127,362 @@
@ApiOperationSupport(order = 4)
@ApiOperation(value = "新增", notes = "传入attendance")
public R AppSave(@Valid Attendance attendance) {
- return R.status(attendanceService.save(attendance));
+ System.out.println("attendance = " + attendance);
+ Enclosure enclosure = new Enclosure();
+ enclosure.setAnumber(attendance.getNumber());
+ //查询当前处警人员的电子围栏信息
+ Boolean onArea = iEnclosureService.isOnArea(attendance.getJd(),attendance.getWd(),enclosure);
+ //判断是否在所在区域打卡,返回数据
+ if (onArea){
+ //查询当前考勤人员的部门信息
+ //获取打卡时间标准
+ R<List<DictBiz>> attendanceType = iDictBizService.getList("attendanceStandard");
+ List<DictBiz> dictBizList = attendanceType.getData();
+ //定义打卡时间标准,上午,下午
+ 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";
+ //查询当前人员当天打卡信息
+ List<Attendance> attendanceList = attendanceService.selAttendanceListNow(attendance.getNumber());
+ //判断打卡时间
+ try {
+ long time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(attendance.getClocktime()).getTime();
+ //当天第一次打卡
+ if(attendanceList.size()==0){
+ //当天还没有打卡,即为当天第一个打卡
+
+ //判断打卡时间是上午还是下午
+ if (time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()+30*60*1000)>0){
+ //下午
+ //正常上班
+ if (time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()<=0){
+ //正常上班
+ attendance.setClocktype("0");
+ attendance.setAttendancetype("0");
+ }
+ //迟到
+ 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.setClocktype("0");
+ attendance.setAttendancetype("1");
+ }
+
+ //正常下班
+ 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");
+ }
+
+ //加班
+ if (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));
+ }else {
+ //上午
+ //正常上班
+ if (time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime()<=0){
+ //正常上午上班
+ attendance.setClocktype("0");
+ attendance.setAttendancetype("0");
+ }
+ //迟到
+ 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.setClocktype("0");
+ attendance.setAttendancetype("1");
+ }
+
+
+ //正常下班
+ 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(attendanceList.size()==1){
+ //判断第一次打卡的时间范围,上午还是下午
+ long time1 = 0;
+ try {
+ time1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(attendanceList.get(0).getClocktime()).getTime();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ //上午下班时间的半个小时后
+ if (time1-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()+30*60*1000)>0) {
+ //下午
+ //更新上班信息
+ if (time - new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime() <= 0) {
+ //更新上班时间
+ //正常上班
+ attendance.setAttendancetype("0");
+ attendance.setId(attendanceList.get(0).getId());
+ //更新考勤消息
+ return R.status(attendanceService.updateById(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.setAttendancetype("2");
+ attendance.setClocktype("1");
+ //新增考勤消息
+ return R.status(attendanceService.save(attendance));
+ }
+
+ //正常下班
+ if (time - (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonOfDutyTime).getTime()+30*60*1000) <= 0
+ && time - new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonOfDutyTime).getTime() >= 0
+ ) {
+ //新增下班
+ attendance.setAttendancetype("0");
+ attendance.setClocktype("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.setAttendancetype("加班");
+ attendance.setId(attendanceList.get(0).getId());
+ //更新考勤消息
+ return R.status(attendanceService.updateById(attendance));
+ }
+
+
+ }else {
+ //上午
+ //更新
+ if (time - new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonWorkTime).getTime() <= 0) {
+ //更新上班时间
+ //正常上班
+ attendance.setAttendancetype("0");
+ attendance.setId(attendanceList.get(0).getId());
+ //更新考勤消息
+ return R.status(attendanceService.updateById(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.setAttendancetype("2");
+ attendance.setClocktype("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.setAttendancetype("2");
+ attendance.setClocktype("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.setAttendancetype("0");
+ attendance.setClocktype("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.setAttendancetype("0");
+ attendance.setClocktype("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(forenoonOfDutyTime).getTime()+30*60*1000)>0
+ ){
+ //上班
+ attendance.setAttendancetype("0");
+ attendance.setClocktype("0");
+ //新增考勤信息
+ return R.status(attendanceService.save(attendance));
+ }
+ }
+ }
+ //第三次打卡
+ if (attendanceList.size()==2){
+ //第三次记录打卡如果时间范围在上午的在早退时间及下班后的半小时范围内,则更新上一次打卡记录
+ 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()+30*60*1000)<0
+ ){
+ Attendance attendance1 = attendanceList.get(1);
+ attendance1.setClocktime(attendance.getClocktime());
+ //更新打卡信息
+ return R.status(attendanceService.updateById(attendance1));
+ }
+ //第三次打卡记录时间返回在上午下班半小时后到下午上班
+ if(time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()<=0
+ && time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()+30*60*1000)>=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){
+ //判断第二次是否已经打卡上班
+ if (attendanceList.get(1).getClocktype().equals("0")){
+ //修改打卡信息
+ attendance.setClocktype("1");
+ attendance.setAttendancetype("2");
+ return R.status(attendanceService.save(attendance));
+ }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("2");
+ return R.status(attendanceService.save(attendance));
+ }
+ }
+ //第四次打卡
+ if (attendanceList.size()==3){
+ //第四次打卡记录时间返回在上午下班半小时后到下午上班
+ if(time-new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(afternoonWorkTime).getTime()<=0
+ && time-(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(forenoonOfDutyTime).getTime()+30*60*1000)>=0){
+ Attendance attendance2 = attendanceList.get(2);
+ attendance2.setClocktime(attendance.getClocktime());
+ //更新正常打卡信息
+ return R.status(attendanceService.updateById(attendance2));
+ }
+ //第四次打卡记录时间返回在下午上班到下午下班之前
+ 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){
+ //判断第二次是否是早退或者迟到
+ //迟到
+ if (attendanceList.get(2).getAttendancetype().equals("1")){
+ //新增下班早退打卡信息
+ attendance.setClocktype("1");
+ attendance.setAttendancetype("2");
+ return R.status(attendanceService.save(attendance));
+ }else {
+ //早退
+ //更新上班早退打卡信息,只更新打卡时间,不更新考勤状态
+ Attendance attendance2 = attendanceList.get(2);
+ attendance2.setClocktime(attendance.getClocktime());
+ return R.status(attendanceService.updateById(attendance2));
+ }
+ }
+ //下午正常下班时间节点
+ 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){
+ //如果上一次为早退,则只更新信息
+ if (attendanceList.get(2).getAttendancetype().equals("2")) {
+ //修改打卡信息
+ Attendance attendance2 = attendanceList.get(2);
+ attendance2.setClocktime(attendance.getClocktime());
+ return R.status(attendanceService.updateById(attendance2));
+ }else {
+ //新增正常下班打卡信息
+ 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 attendance2 = attendanceList.get(2);
+ attendance2.setClocktime(attendance.getClocktime());
+ return R.status(attendanceService.updateById(attendance2));
+ }
+ }
+ //第五次打卡
+ if (attendanceList.size()==4){
+ //只有在下午下班后可以有新增加班考勤数据,其他情况则是更新第四次的记录
+ //第五次打卡记录时间返回在下午上班到下午下班后的30分钟之前
+// 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 attendance3 = attendanceList.get(3);
+// attendance3.setClocktime(attendance.getClocktime());
+// return R.status(attendanceService.updateById(attendance3));
+// }
+ Attendance attendance3 = attendanceList.get(3);
+ attendance3.setClocktime(attendance.getClocktime());
+ return R.status(attendanceService.updateById(attendance3));
+ //下午正常下班30分钟后时间节点
+// if (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));
+// }
+ }
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ }
+ return R.status(false);
}
/**
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java
index 2575727..a46ff1f 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/entity/Attendance.java
@@ -19,6 +19,8 @@
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
+import java.util.List;
+
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
@@ -93,6 +95,5 @@
@TableLogic
private Integer isDeleted;
-
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java
index ad26212..6352175 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.java
@@ -53,4 +53,10 @@
*/
List<AttendanceExcel> exportAttendane(String name,String beginTimes,String endTimes,String attendancetypes);
+ /**
+ * 查询当前考勤人员当天的考勤信息
+ * @param number 考勤人员编号
+ * @return
+ */
+ List<Attendance> selAttendanceListNow(String number);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml
index 5fb8e57..48fa344 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/mapper/AttendanceMapper.xml
@@ -55,5 +55,16 @@
</if>
</select>
+ <!--查询当前考勤人员当天的考勤信息-->
+ <select id="selAttendanceListNow" resultType="org.springblade.jfpt.attendance.entity.Attendance">
+ select * from sys_attendance
+ where
+ number = #{number}
+ and
+ to_days(now())=to_days(clockTime)
+ and
+ is_deleted=0
+ </select>
+
</mapper>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java
index e255b6b..6cbc508 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/IAttendanceService.java
@@ -48,4 +48,11 @@
* @return
*/
List<AttendanceExcel> exportAttendane(String name,String beginTimes,String endTimes,String attendancetypes);
+
+ /**
+ * 查询当前考勤人员当天的考勤信息
+ * @param number 考勤人员编号
+ * @return
+ */
+ List<Attendance> selAttendanceListNow(String number);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java
index 5943108..9f0c75d 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/attendance/service/impl/AttendanceServiceImpl.java
@@ -57,4 +57,13 @@
return userList;
}
+ /**
+ * 查询当前考勤人员当天的考勤信息
+ * @param number 考勤人员编号
+ * @return
+ */
+ @Override
+ public List<Attendance> selAttendanceListNow(String number) {
+ return baseMapper.selAttendanceListNow(number);
+ }
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.java
index cdedd06..ce464c4 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.java
@@ -56,4 +56,13 @@
* @param anumber 处警人员编号
*/
void deleteByAnumber(String anumber);
+
+ /**
+ * 判断打卡点是否在电子围栏内
+ * @param jd 经度
+ * @param wd 纬度
+ * @param enclosure 电子围栏信息
+ * @return
+ */
+ int isOnArea(@Param("jd") String jd, @Param("wd") String wd, @Param("enclosure") Enclosure enclosure);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.xml b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.xml
index 8f91d0e..8424c50 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.xml
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/mapper/EnclosureMapper.xml
@@ -41,4 +41,13 @@
delete from sys_enclosure where anumber = #{anumber}
</delete>
+ <!--判断打卡点是否在电子围栏内-->
+ <select id="isOnArea" resultType="java.lang.Integer">
+ select ifnull(count(*),0) count from sys_enclosure
+ where
+ MBRWithin(ST_GeomFromText('POINT(${jd} ${wd})'),coordinate)
+ and
+ anumber=#{enclosure.anumber}
+ </select>
+
</mapper>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/IEnclosureService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/IEnclosureService.java
index 1c35ca6..bdef069 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/IEnclosureService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/IEnclosureService.java
@@ -55,4 +55,13 @@
* @param anumber 处警人员编号
*/
void deleteByAnumber(String anumber);
+
+ /**
+ * 判断打卡点是否在电子围栏内
+ * @param jd 经度
+ * @param wd 纬度
+ * @param enclosure 电子围栏信息
+ * @return
+ */
+ Boolean isOnArea(String jd, String wd, Enclosure enclosure);
}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/impl/EnclosureServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/impl/EnclosureServiceImpl.java
index 864ede0..8894d4e 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/impl/EnclosureServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/enclosure/service/impl/EnclosureServiceImpl.java
@@ -75,4 +75,20 @@
public void deleteByAnumber(String anumber) {
baseMapper.deleteByAnumber(anumber);
}
+
+ /**
+ * 判断打卡点是否在电子围栏内
+ * @param jd 经度
+ * @param wd 纬度
+ * @param enclosure 电子围栏信息
+ * @return
+ */
+ @Override
+ public Boolean isOnArea(String jd, String wd, Enclosure enclosure) {
+ int onArea = baseMapper.isOnArea(jd, wd, enclosure);
+ if (onArea>0){
+ return true;
+ }
+ return false;
+ }
}
--
Gitblit v1.9.3