Bladeren bron

fix 新增考勤范围设置

Administrator 4 jaren geleden
bovenliggende
commit
5ff24427f8

+ 7 - 0
boman-common/boman-common-core/pom.xml

@@ -16,6 +16,13 @@
     </description>
 
     <dependencies>
+
+        <!--计算经纬度-->
+        <dependency>
+              <groupId>org.gavaghan</groupId>
+              <artifactId>geodesy</artifactId>
+              <version>1.1.3</version>
+        </dependency>
     	<!-- SpringCloud Openfeign -->
         <dependency>
             <groupId>org.springframework.cloud</groupId>

+ 29 - 0
boman-common/boman-common-core/src/main/java/com/boman/common/core/utils/LatLgtUtil.java

@@ -0,0 +1,29 @@
+package com.boman.common.core.utils;
+
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GeodeticCalculator;
+import org.gavaghan.geodesy.GeodeticCurve;
+import org.gavaghan.geodesy.GlobalCoordinates;
+
+/**
+ * @author tjf
+ * @Date: 2021/06/04/11:41
+ */
+public class LatLgtUtil {
+
+
+    /**
+     * 传入两组经纬度,计算出距离
+     * @param gpsFrom
+     * @param gpsTo
+     * @param ellipsoid Ellipsoid.Sphere(百度)/Ellipsoid.WGS84
+     * @return
+     */
+    public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){
+
+        //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
+        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
+
+        return geoCurve.getEllipsoidalDistance();
+    }
+}

+ 101 - 0
boman-modules/boman-system/src/main/java/com/boman/system/controller/AttendanceSetController.java

@@ -0,0 +1,101 @@
+package com.boman.system.controller;
+
+import java.util.List;
+
+import com.boman.common.core.utils.poi.ExcelUtil;
+import com.boman.common.core.web.controller.BaseController;
+import com.boman.common.core.web.domain.AjaxResult;
+import com.boman.common.core.web.page.TableDataInfo;
+import com.boman.common.log.annotation.Log;
+import com.boman.common.log.enums.BusinessType;
+import com.boman.common.security.annotation.PreAuthorize;
+import com.boman.system.domain.AttendanceSet;
+import com.boman.system.service.IAttendanceSetService;
+import org.gavaghan.geodesy.GlobalCoordinates;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 考勤设置Controller
+ * 
+ * @author ruoyi
+ * @date 2021-06-04
+ */
+@RestController
+@RequestMapping("/attendance/set")
+public class AttendanceSetController extends BaseController
+{
+    @Autowired
+    private IAttendanceSetService attendanceSetService;
+
+    /**
+     * 查询考勤设置列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(AttendanceSet attendanceSet)
+    {
+        startPage();
+        List<AttendanceSet> list = attendanceSetService.selectAttendanceSetList(attendanceSet);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 获取考勤设置详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return AjaxResult.success(attendanceSetService.selectAttendanceSetById(id));
+    }
+
+    /**
+     * 新增考勤设置
+     */
+    @Log(title = "考勤设置", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody AttendanceSet attendanceSet)
+    {
+        return toAjax(attendanceSetService.insertAttendanceSet(attendanceSet));
+    }
+
+    /**
+     * 修改考勤设置
+     */
+    @Log(title = "考勤设置", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody AttendanceSet attendanceSet)
+    {
+        return toAjax(attendanceSetService.updateAttendanceSet(attendanceSet));
+    }
+
+    /**
+     * 删除考勤设置
+     */
+    @Log(title = "考勤设置", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(attendanceSetService.deleteAttendanceSetByIds(ids));
+    }
+
+
+    /**
+     * 功能描述: 根据传入的经纬度计算是否在设置的范围之内
+     *
+     * @param globalCoordinates 经纬度对象
+     * @return com.boman.common.core.web.domain.AjaxResult
+     */
+    @PostMapping("/distanceMeter")
+    public AjaxResult getDistanceMeter(@RequestBody GlobalCoordinates globalCoordinates) {
+        return AjaxResult.success(attendanceSetService.getDistanceMeter(globalCoordinates));
+    }
+}

+ 111 - 0
boman-modules/boman-system/src/main/java/com/boman/system/domain/AttendanceSet.java

@@ -0,0 +1,111 @@
+package com.boman.system.domain;
+
+import com.boman.common.core.annotation.Excel;
+import com.boman.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 考勤设置对象 attendance_set
+ * 
+ * @author ruoyi
+ * @date 2021-06-04
+ */
+public class AttendanceSet extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 编号 */
+    private Long id;
+
+    /** 考勤地址 */
+    @Excel(name = "考勤地址")
+    private String attendanceAdd;
+
+    /** 经度 */
+    @Excel(name = "经度")
+    private String lgt;
+
+    /** 纬度 */
+    @Excel(name = "纬度")
+    private String lat;
+
+    /** 范围(米) */
+    @Excel(name = "范围(米)")
+    private String range;
+
+    /** 是否删除 */
+    @Excel(name = "是否删除")
+    private String isDel;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setAttendanceAdd(String attendanceAdd) 
+    {
+        this.attendanceAdd = attendanceAdd;
+    }
+
+    public String getAttendanceAdd() 
+    {
+        return attendanceAdd;
+    }
+    public void setLgt(String lgt) 
+    {
+        this.lgt = lgt;
+    }
+
+    public String getLgt() 
+    {
+        return lgt;
+    }
+    public void setLat(String lat) 
+    {
+        this.lat = lat;
+    }
+
+    public String getLat() 
+    {
+        return lat;
+    }
+    public void setRange(String range) 
+    {
+        this.range = range;
+    }
+
+    public String getRange() 
+    {
+        return range;
+    }
+    public void setIsDel(String isDel) 
+    {
+        this.isDel = isDel;
+    }
+
+    public String getIsDel() 
+    {
+        return isDel;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("attendanceAdd", getAttendanceAdd())
+            .append("lgt", getLgt())
+            .append("lat", getLat())
+            .append("range", getRange())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("isDel", getIsDel())
+            .toString();
+    }
+}

+ 62 - 0
boman-modules/boman-system/src/main/java/com/boman/system/mapper/AttendanceSetMapper.java

@@ -0,0 +1,62 @@
+package com.boman.system.mapper;
+
+import com.boman.system.domain.AttendanceSet;
+
+import java.util.List;
+
+/**
+ * 考勤设置Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2021-06-04
+ */
+public interface AttendanceSetMapper 
+{
+    /**
+     * 查询考勤设置
+     * 
+     * @param id 考勤设置ID
+     * @return 考勤设置
+     */
+    public AttendanceSet selectAttendanceSetById(Long id);
+
+    /**
+     * 查询考勤设置列表
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 考勤设置集合
+     */
+    public List<AttendanceSet> selectAttendanceSetList(AttendanceSet attendanceSet);
+
+    /**
+     * 新增考勤设置
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 结果
+     */
+    public int insertAttendanceSet(AttendanceSet attendanceSet);
+
+    /**
+     * 修改考勤设置
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 结果
+     */
+    public int updateAttendanceSet(AttendanceSet attendanceSet);
+
+    /**
+     * 删除考勤设置
+     * 
+     * @param id 考勤设置ID
+     * @return 结果
+     */
+    public int deleteAttendanceSetById(Long id);
+
+    /**
+     * 批量删除考勤设置
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteAttendanceSetByIds(Long[] ids);
+}

+ 72 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/IAttendanceSetService.java

@@ -0,0 +1,72 @@
+package com.boman.system.service;
+
+import com.boman.common.core.web.domain.AjaxResult;
+import com.boman.system.domain.AttendanceSet;
+import org.gavaghan.geodesy.GlobalCoordinates;
+
+import java.util.List;
+
+
+/**
+ * 考勤设置Service接口
+ * 
+ * @author ruoyi
+ * @date 2021-06-04
+ */
+public interface IAttendanceSetService 
+{
+    /**
+     * 查询考勤设置
+     * 
+     * @param id 考勤设置ID
+     * @return 考勤设置
+     */
+    public AttendanceSet selectAttendanceSetById(Long id);
+
+    /**
+     * 查询考勤设置列表
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 考勤设置集合
+     */
+    public List<AttendanceSet> selectAttendanceSetList(AttendanceSet attendanceSet);
+
+    /**
+     * 新增考勤设置
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 结果
+     */
+    public int insertAttendanceSet(AttendanceSet attendanceSet);
+
+    /**
+     * 修改考勤设置
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 结果
+     */
+    public int updateAttendanceSet(AttendanceSet attendanceSet);
+
+    /**
+     * 批量删除考勤设置
+     * 
+     * @param ids 需要删除的考勤设置ID
+     * @return 结果
+     */
+    public int deleteAttendanceSetByIds(Long[] ids);
+
+    /**
+     * 删除考勤设置信息
+     * 
+     * @param id 考勤设置ID
+     * @return 结果
+     */
+    public int deleteAttendanceSetById(Long id);
+
+    /**
+     * 根据传入的经纬度计算是否在设置的范围之内
+     * @param globalCoordinates
+     * @return
+     */
+    public AjaxResult getDistanceMeter(GlobalCoordinates globalCoordinates);
+}

+ 128 - 0
boman-modules/boman-system/src/main/java/com/boman/system/service/impl/AttendanceSetServiceImpl.java

@@ -0,0 +1,128 @@
+package com.boman.system.service.impl;
+
+import java.util.List;
+
+import com.boman.common.core.utils.DateUtils;
+import com.boman.common.core.utils.LatLgtUtil;
+import com.boman.common.core.web.domain.AjaxResult;
+import com.boman.system.domain.AttendanceSet;
+import com.boman.system.mapper.AttendanceSetMapper;
+import com.boman.system.service.IAttendanceSetService;
+import org.gavaghan.geodesy.Ellipsoid;
+import org.gavaghan.geodesy.GlobalCoordinates;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+/**
+ * 考勤设置Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2021-06-04
+ */
+@Service
+public class AttendanceSetServiceImpl implements IAttendanceSetService
+{
+    @Autowired
+    private AttendanceSetMapper attendanceSetMapper;
+
+    /**
+     * 查询考勤设置
+     * 
+     * @param id 考勤设置ID
+     * @return 考勤设置
+     */
+    @Override
+    public AttendanceSet selectAttendanceSetById(Long id)
+    {
+        return attendanceSetMapper.selectAttendanceSetById(id);
+    }
+
+    /**
+     * 查询考勤设置列表
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 考勤设置
+     */
+    @Override
+    public List<AttendanceSet> selectAttendanceSetList(AttendanceSet attendanceSet)
+    {
+        return attendanceSetMapper.selectAttendanceSetList(attendanceSet);
+    }
+
+    /**
+     * 新增考勤设置
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 结果
+     */
+    @Override
+    public int insertAttendanceSet(AttendanceSet attendanceSet)
+    {
+        attendanceSet.setCreateTime(DateUtils.getNowDate());
+        return attendanceSetMapper.insertAttendanceSet(attendanceSet);
+    }
+
+    /**
+     * 修改考勤设置
+     * 
+     * @param attendanceSet 考勤设置
+     * @return 结果
+     */
+    @Override
+    public int updateAttendanceSet(AttendanceSet attendanceSet)
+    {
+        attendanceSet.setUpdateTime(DateUtils.getNowDate());
+        return attendanceSetMapper.updateAttendanceSet(attendanceSet);
+    }
+
+    /**
+     * 批量删除考勤设置
+     * 
+     * @param ids 需要删除的考勤设置ID
+     * @return 结果
+     */
+    @Override
+    public int deleteAttendanceSetByIds(Long[] ids)
+    {
+        return attendanceSetMapper.deleteAttendanceSetByIds(ids);
+    }
+
+    /**
+     * 删除考勤设置信息
+     * 
+     * @param id 考勤设置ID
+     * @return 结果
+     */
+    @Override
+    public int deleteAttendanceSetById(Long id)
+    {
+        return attendanceSetMapper.deleteAttendanceSetById(id);
+    }
+
+    /**
+     * 根据传入的经纬度计算是否在设置的范围之内
+     * @param globalCoordinates
+     * @return
+     */
+    @Override
+    public AjaxResult getDistanceMeter(GlobalCoordinates globalCoordinates) {
+        AttendanceSet attendanceSet = new AttendanceSet();
+        List<AttendanceSet> attendanceSets = selectAttendanceSetList(attendanceSet);
+        if (attendanceSets.size() == 0){
+            return AjaxResult.error("当前没有设置考勤范围");
+        }
+        AttendanceSet attendanceSet1 = attendanceSets.get(0);
+        //经度
+        String lgt = attendanceSet1.getLgt();
+        //纬度
+        String lat = attendanceSet1.getLat();
+
+        GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(lat),Double.parseDouble(lgt));
+        double distanceMeter = LatLgtUtil.getDistanceMeter(globalCoordinates, target, Ellipsoid.Sphere);
+        double range = Double.parseDouble(attendanceSet1.getRange());
+        if (range > distanceMeter){
+            //在范围内
+            return AjaxResult.success();
+        }
+        return AjaxResult.error();
+    }
+}

+ 94 - 0
boman-modules/boman-system/src/main/resources/mapper/system/AttendanceSetMapper.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.boman.system.mapper.AttendanceSetMapper">
+    
+    <resultMap type="AttendanceSet" id="AttendanceSetResult">
+        <result property="id"    column="id"    />
+        <result property="attendanceAdd"    column="attendance_add"    />
+        <result property="lgt"    column="lgt"    />
+        <result property="lat"    column="lat"    />
+        <result property="range"    column="range"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="isDel"    column="is_del"    />
+    </resultMap>
+
+    <sql id="selectAttendanceSetVo">
+        select id, attendance_add, lgt, lat, range, create_by, create_time, update_by, update_time, is_del from attendance_set
+    </sql>
+
+    <select id="selectAttendanceSetList" parameterType="AttendanceSet" resultMap="AttendanceSetResult">
+        <include refid="selectAttendanceSetVo"/>
+        <where>
+            is_del = 'N'
+            <if test="attendanceAdd != null  and attendanceAdd != ''"> and attendance_add = #{attendanceAdd}</if>
+            <if test="lgt != null  and lgt != ''"> and lgt = #{lgt}</if>
+            <if test="lat != null  and lat != ''"> and lat = #{lat}</if>
+            <if test="range != null  and range != ''"> and range = #{range}</if>
+        </where>
+    </select>
+    
+    <select id="selectAttendanceSetById" parameterType="Long" resultMap="AttendanceSetResult">
+        <include refid="selectAttendanceSetVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertAttendanceSet" parameterType="AttendanceSet">
+        insert into attendance_set
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="attendanceAdd != null">attendance_add,</if>
+            <if test="lgt != null">lgt,</if>
+            <if test="lat != null">lat,</if>
+            <if test="range != null">range,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="isDel != null">is_del,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="attendanceAdd != null">#{attendanceAdd},</if>
+            <if test="lgt != null">#{lgt},</if>
+            <if test="lat != null">#{lat},</if>
+            <if test="range != null">#{range},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="isDel != null">#{isDel},</if>
+         </trim>
+    </insert>
+
+    <update id="updateAttendanceSet" parameterType="AttendanceSet">
+        update attendance_set
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="attendanceAdd != null">attendance_add = #{attendanceAdd},</if>
+            <if test="lgt != null">lgt = #{lgt},</if>
+            <if test="lat != null">lat = #{lat},</if>
+            <if test="range != null">range = #{range},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="isDel != null">is_del = #{isDel},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteAttendanceSetById" parameterType="Long">
+        delete from attendance_set where id = #{id}
+    </delete>
+
+    <delete id="deleteAttendanceSetByIds" parameterType="String">
+        delete from attendance_set where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 2 - 4
boman-web-core/src/main/java/com/boman/web/core/controller/AttendanceController.java

@@ -3,12 +3,10 @@ package com.boman.web.core.controller;
 import com.boman.common.core.web.domain.AjaxResult;
 import com.boman.web.core.service.attendance.AttendanceService;
 import com.boman.web.core.service.common.ICommonService;
+import org.gavaghan.geodesy.GlobalCoordinates;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 

+ 2 - 0
boman-web-core/src/main/java/com/boman/web/core/service/attendance/AttendanceService.java

@@ -1,6 +1,8 @@
 package com.boman.web.core.service.attendance;
 
 import com.alibaba.fastjson.JSONObject;
+import com.boman.common.core.web.domain.AjaxResult;
+import org.gavaghan.geodesy.GlobalCoordinates;
 
 import java.util.List;
 

+ 2 - 2
boman-web-core/src/main/java/com/boman/web/core/service/attendance/AttendanceServiceImpl.java

@@ -2,7 +2,9 @@ package com.boman.web.core.service.attendance;
 
 import com.alibaba.fastjson.JSONObject;
 import com.boman.common.core.utils.DateUtils;
+import com.boman.common.core.web.domain.AjaxResult;
 import com.boman.web.core.service.common.ICommonService;
+import org.gavaghan.geodesy.GlobalCoordinates;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -43,6 +45,4 @@ public class AttendanceServiceImpl implements AttendanceService {
         map.put(ATTENDANCE_NOW_TIME, yyyyMm);
         return commonService.getByMap(tableName, map);
     }
-
-
 }