From ffb62aac389a6ac596fe8d0d44d4e242beeea0f2 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 10 Mar 2022 11:46:31 +0800
Subject: [PATCH] 考勤查询接口修改,电子围栏自定义新增、修改,查询一个点是否在电子围栏内接口新增

---
 src/main/java/org/springblade/modules/attendance/mapper/AttendanceMapper.xml                 |    6 +-
 src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java                    |   10 +++
 src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml             |   36 ++++++++++++
 src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java |   34 +++++++++++
 src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java            |   21 +++++++
 src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java    |   32 +++++++++-
 src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java          |   20 ++++++
 src/main/java/org/springblade/modules/attendance/entity/Attendance.java                      |    7 ++
 src/main/resources/application.yml                                                           |    1 
 9 files changed, 159 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/springblade/modules/attendance/entity/Attendance.java b/src/main/java/org/springblade/modules/attendance/entity/Attendance.java
index 8f24065..dd97ca9 100644
--- a/src/main/java/org/springblade/modules/attendance/entity/Attendance.java
+++ b/src/main/java/org/springblade/modules/attendance/entity/Attendance.java
@@ -68,7 +68,7 @@
 	private Integer clockType;
 
 	/**
-	* 考勤类型 1:正常 2:迟到 3:早退 4:外勤
+	* 考勤类型 1:正常 2:迟到 3:早退
 	*/
 	private Integer attendanceType;
 
@@ -83,4 +83,9 @@
 	 */
 	private String address;
 
+	/**
+	 * 是否为外勤打卡
+	 */
+	private Integer legwork;
+
 }
diff --git a/src/main/java/org/springblade/modules/attendance/mapper/AttendanceMapper.xml b/src/main/java/org/springblade/modules/attendance/mapper/AttendanceMapper.xml
index 7b08a66..8f26f9d 100644
--- a/src/main/java/org/springblade/modules/attendance/mapper/AttendanceMapper.xml
+++ b/src/main/java/org/springblade/modules/attendance/mapper/AttendanceMapper.xml
@@ -39,6 +39,9 @@
         <if test="attendance.clockType!=null">
             and sa.clock_type = #{attendance.clockType}
         </if>
+        <if test="attendance.legwork!=null">
+            and sa.legwork = #{attendance.legwork}
+        </if>
         <if test="attendance.beginTime!=null and attendance.beginTime!=''">
             and date_format(sa.clock_time,'%Y-%m-%d')&gt;=#{attendance.beginTime}
         </if>
@@ -57,7 +60,6 @@
         case when sa.attendance_type=1 then '正常'
         when sa.attendance_type=2 then '迟到'
         when sa.attendance_type=3 then '早退'
-        when sa.attendance_type=4 then '外勤'
         else '无效打卡' end as attendanceType
          from sys_attendance sa
         left join blade_user bu on bu.id = sa.user_id
@@ -94,8 +96,6 @@
         number = #{number}
             and
         to_days(now())=to_days(clock_time)
-            and
-        is_deleted=0
     </select>
 
     <!--查询当前时间之前最新的一条数据-->
diff --git a/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java b/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java
index b9ad3e0..1325d6b 100644
--- a/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java
+++ b/src/main/java/org/springblade/modules/electronrail/controller/ElectronRailController.java
@@ -63,8 +63,15 @@
 		//设置时间
 		electronRail.setCreateTime(new Date());
 		electronRail.setUpdateTime(new Date());
-		//返回
-		return R.data(electronRailService.save(electronRail));
+		if (null!=electronRail.getCoordinate() && !electronRail.getCoordinate().equals("")) {
+			//替换逗号为空格
+			String sNull = electronRail.getCoordinate().replaceAll(",", " ");
+			//替换分号为逗号
+			String replaceAll = sNull.replaceAll(";", ",");
+			electronRail.setCoordinate("'POLYGON((" + replaceAll + "))'");
+		}
+		//自定义新增
+		return R.data(electronRailService.saveElectRailInfo(electronRail));
 	}
 
 
@@ -75,8 +82,15 @@
 	public R update(@RequestBody ElectronRail electronRail) {
 		//设置更新时间
 		electronRail.setUpdateTime(new Date());
-		//修改并返回
-		return R.data(electronRailService.updateById(electronRail));
+		if (null!=electronRail.getCoordinate() && !electronRail.getCoordinate().equals("")) {
+			//替换逗号为空格
+			String sNull = electronRail.getCoordinate().replaceAll(",", " ");
+			//替换分号为逗号
+			String replaceAll = sNull.replaceAll(";", ",");
+			electronRail.setCoordinate("'POLYGON((" + replaceAll + "))'");
+		}
+		//自定义修改并返回
+		return R.data(electronRailService.updateElectronRailInfo(electronRail));
 	}
 
 	/**
@@ -96,5 +110,15 @@
 		return R.status(electronRailService.removeByIds(Func.toLongList(ids)));
 	}
 
+	/**
+	 * 判断一个点是否在区域内
+	 * @param electronRail
+	 * @return
+	 */
+	@GetMapping("/isOnArea")
+	public R isOnArea(ElectronRailVO electronRail){
+		return R.data(electronRailService.isOnArea(electronRail));
+	}
+
 
 }
diff --git a/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java
index 3a0bf8d..2ff4a70 100644
--- a/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java
+++ b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.java
@@ -25,4 +25,25 @@
 	 * @return
 	 */
 	List<ElectronRailVO> selectElectronRailPage(IPage<ElectronRailVO> page, @Param("electronRail") ElectronRailVO electronRail);
+
+	/**
+	 * 自定义新增电子围栏信息
+	 * @param electronRail
+	 * @return
+	 */
+    boolean saveElectRailInfo(@Param("electronRail") ElectronRail electronRail);
+
+	/**
+	 * 自定义修改电子围栏信息
+	 * @param electronRail
+	 * @return
+	 */
+	boolean updateElectronRailInfo(@Param("electronRail") ElectronRail electronRail);
+
+	/**
+	 * 判断一个点是否在区域内
+	 * @param electronRail
+	 * @return
+	 */
+	int isOnArea(@Param("electronRail") ElectronRailVO electronRail);
 }
diff --git a/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml
index 292d64f..05de8ea 100644
--- a/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml
+++ b/src/main/java/org/springblade/modules/electronrail/mapper/ElectronRailMapper.xml
@@ -17,4 +17,40 @@
         </if>
     </select>
 
+    <!--自定义新增电子围栏数据-->
+    <insert id="saveElectRailInfo">
+        insert into sys_electron_rail
+        (name,type,company_id,
+        <if test="electronRail.coordinate!=null and electronRail.coordinate!=''">
+        coordinate,
+        </if>
+        create_time,update_time)
+        values
+        (#{electronRail.name},#{electronRail.type},#{electronRail.companyId},
+        <if test="electronRail.coordinate!=null and electronRail.coordinate!=''">
+        ST_GeomFromText(${electronRail.coordinate}),
+        </if>
+        #{electronRail.createTime},#{electronRail.updateTime})
+    </insert>
+
+    <!--自定义修改电子围栏数据-->
+    <update id="updateElectronRailInfo">
+        update sys_electron_rail set name = #{electronRail.name},
+                                    type = #{electronRail.type},
+                                    company_id = #{electronRail.companyId},
+                                    <if test="electronRail.coordinate!=null and electronRail.coordinate!=''">
+                                        coordinate = ST_GeomFromText(${electronRail.coordinate}),
+                                    </if>
+                                    update_time = #{electronRail.updateTime}
+        where id = #{electronRail.id}
+    </update>
+
+    <!--判断一个点是否在区域内-->
+    <select id="isOnArea" resultType="java.lang.Integer">
+        select ifnull(count(*),0) count from sys_electron_rail
+        where
+        MBRWithin(ST_GeomFromText('POINT(${electronRail.jd} ${electronRail.wd})'),coordinate)
+        and id = #{electronRail.id}
+    </select>
+
 </mapper>
diff --git a/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java b/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java
index 1936480..171d05c 100644
--- a/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java
+++ b/src/main/java/org/springblade/modules/electronrail/service/ElectronRailService.java
@@ -24,4 +24,24 @@
 	 */
 	IPage<ElectronRailVO> selectElectronRailPage(IPage<ElectronRailVO> page,ElectronRailVO electronRailVO);
 
+	/**
+	 * 自定义新增电子围栏信息
+	 * @param electronRail
+	 * @return
+	 */
+    boolean saveElectRailInfo(ElectronRail electronRail);
+
+	/**
+	 * 自定义修改电子围栏信息
+	 * @param electronRail
+	 * @return
+	 */
+	boolean updateElectronRailInfo(ElectronRail electronRail);
+
+	/**
+	 * 判断一个点是否在区域内
+	 * @param electronRail
+	 * @return
+	 */
+	boolean isOnArea(ElectronRailVO electronRail);
 }
diff --git a/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java b/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java
index a2687bf..a08b274 100644
--- a/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java
+++ b/src/main/java/org/springblade/modules/electronrail/service/impl/ElectronRailServiceImpl.java
@@ -62,4 +62,38 @@
 		}
 		return page.setRecords(railVOS);
 	}
+
+	/**
+	 * 自定义新增电子围栏信息
+	 * @param electronRail
+	 * @return
+	 */
+	@Override
+	public boolean saveElectRailInfo(ElectronRail electronRail) {
+		return baseMapper.saveElectRailInfo(electronRail);
+	}
+
+	/**
+	 * 自定义修改电子围栏信息
+	 * @param electronRail
+	 * @return
+	 */
+	@Override
+	public boolean updateElectronRailInfo(ElectronRail electronRail) {
+		return baseMapper.updateElectronRailInfo(electronRail);
+	}
+
+	/**
+	 * 判断一个点是否在区域内
+	 * @param electronRail
+	 * @return
+	 */
+	@Override
+	public boolean isOnArea(ElectronRailVO electronRail) {
+		int i = baseMapper.isOnArea(electronRail);
+		if (i>0){
+			return true;
+		}
+		return false;
+	}
 }
diff --git a/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java b/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java
index 61d38d5..985d3c4 100644
--- a/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java
+++ b/src/main/java/org/springblade/modules/electronrail/vo/ElectronRailVO.java
@@ -17,4 +17,14 @@
 	 * 单位名称
 	 */
 	private String companyName;
+
+	/**
+	 * 经度
+	 */
+	private String jd;
+
+	/**
+	 * 纬度
+	 */
+	private String wd;
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index bd7906f..77df676 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -224,6 +224,7 @@
       - /examSubjectChoices/getSubjectResultInfoBySimulate
       - /blade-user/getNotUpdatePwdInfo
       - /attendance/AppSave
+      - /electronRail/**
 
     #授权认证配置
     auth:

--
Gitblit v1.9.3