智慧保安后台管理项目备份
Administrator
2021-07-21 0eeeac73d40f04fdd49e8ffcb7c00988cf68040c
押运人员,车辆,枪支实时位置,轨迹接口新增
1 files modified
14 files added
713 ■■■■■ changed files
src/main/java/org/springblade/modules/location/controller/LiveLocationController.java 152 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/controller/LocusController.java 87 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/entity/LiveLocation.java 63 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/entity/Locus.java 56 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/mapper/LiveLocationMapper.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/mapper/LiveLocationMapper.xml 63 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/mapper/LocusMapper.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/mapper/LocusMapper.xml 27 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/service/LiveLocationService.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/service/LocusService.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/service/impl/LiveLocationServiceImpl.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/service/impl/LocusServiceImpl.java 39 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/vo/LiveLocationVo.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/vo/LocusVo.java 14 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 2 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/location/controller/LiveLocationController.java
New file
@@ -0,0 +1,152 @@
package org.springblade.modules.location.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.location.entity.LiveLocation;
import org.springblade.modules.location.entity.Locus;
import org.springblade.modules.location.service.LiveLocationService;
import org.springblade.modules.location.service.LocusService;
import org.springblade.modules.location.vo.LiveLocationVo;
import org.springblade.modules.location.vo.LocusVo;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
 * @author zhongrj
 * @time 2021-07-21
 * @desc 实时位置控制层
 */
@RestController
@AllArgsConstructor
@RequestMapping("/liveLocation")
public class LiveLocationController {
    private final LiveLocationService liveLocationService;
    private final LocusService locusService;
    /**
     * 自定义分页
     * @param query page,size
     * @param liveLocation 实时位置信息对象
     */
    @GetMapping("/page")
    public R<IPage<LiveLocationVo>> page(LiveLocationVo liveLocation, Query query) {
        IPage<LiveLocationVo> pages = liveLocationService.selectLiveLocationPage(Condition.getPage(query), liveLocation);
        return R.data(pages);
    }
    /**
     * 新增
     * @param liveLocation 实时位置信息对象
     */
    @PostMapping("/save")
    @ApiOperation(value = "新增", notes = "传入liveLocation")
    public R save(@RequestBody LiveLocation liveLocation) {
        return R.status(liveLocationService.save(liveLocation));
    }
    /**
     * 实时位置信息新增,同时新增到轨迹表中
     * @param liveLocation 实时位置信息对象
     */
    @PostMapping("/saveLiveLocationAndLocus")
    @ApiOperation(value = "新增", notes = "传入liveLocation")
    public R saveLiveLocationAndLocus(@RequestBody LiveLocation liveLocation) {
        //先查询是否已有实时位置信息,如果有,则更新,没有则插入
        LiveLocationVo liveLocationVo = liveLocationService.selectLiveLocationInfo(liveLocation);
        boolean status = false;
        if (null == liveLocationVo){
            //新增
            liveLocation.setRecordTime(new Date());
            status = liveLocationService.save(liveLocation);
        }else {
            //更新
            liveLocationVo.setRecordTime(new Date());
            status = liveLocationService.updateById(liveLocationVo);
        }
        if (status){
            //新增轨迹
            Locus locus = new Locus();
            //封装数据
            if (null!=liveLocationVo){
                locus.setLiveLocationId(liveLocationVo.getId());
            }else {
                locus.setLiveLocationId(liveLocation.getId());
            }
            if (null!= liveLocation.getLatitude() && null!=liveLocation.getLongitude()){
                locus.setLatitude(liveLocation.getLatitude());
                locus.setLongitude(liveLocation.getLongitude());
            }
            locus.setRecordTime(new Date());
            //新增轨迹
            boolean save1 = locusService.save(locus);
            if (save1){
                //返回数据
                return R.status(true);
            }
        }
        //返回数据
        return R.status(false);
    }
    /**
     * 修改
     * @param liveLocation 实时位置信息对象
     */
    @PostMapping("/update")
    public R update(@RequestBody LiveLocation liveLocation) {
        return R.status(liveLocationService.updateById(liveLocation));
    }
    /**
     * 新增或修改
     * @param liveLocation 实时位置信息对象
     */
    @PostMapping("/submit")
    public R submit(@RequestBody LiveLocation liveLocation) {
        return R.status(liveLocationService.saveOrUpdate(liveLocation));
    }
    /**
     * 删除
     * @param ids 实时位置信息ids 数组
     */
    @PostMapping("/remove")
    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
        return R.status(liveLocationService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 详情
     * @param liveLocation 实时位置信息对象
     */
    @GetMapping("/detail")
    @ApiOperation(value = "详情", notes = "传入liveLocation")
    public R<LiveLocation> detail(LiveLocation liveLocation) {
        LiveLocation detail = liveLocationService.getOne(Condition.getQueryWrapper(liveLocation));
        return R.data(detail);
    }
    /**
     * 获取轨迹数据
     * @param liveLocationVo 实时对象信息
     * @return
     */
    @GetMapping("/getLocusInfoList")
    public R<List<LocusVo>> getLocusInfoList(LiveLocationVo liveLocationVo){
        return R.data(liveLocationService.getLocusInfoList(liveLocationVo));
    }
}
src/main/java/org/springblade/modules/location/controller/LocusController.java
New file
@@ -0,0 +1,87 @@
package org.springblade.modules.location.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.location.entity.Locus;
import org.springblade.modules.location.service.LocusService;
import org.springblade.modules.location.vo.LocusVo;
import org.springframework.web.bind.annotation.*;
/**
 * @author zhongrj
 * @time 2021-07-06
 * @desc 轨迹管理控制层
 */
@RestController
@AllArgsConstructor
@RequestMapping("/locus")
public class LocusController {
    private final LocusService locusService;
    /**
     * 自定义分页
     * @param query page,size
     * @param locus 轨迹信息对象
     */
    @GetMapping("/page")
    public R<IPage<LocusVo>> page(LocusVo locus, Query query) {
        IPage<LocusVo> pages = locusService.selectLocusPage(Condition.getPage(query), locus);
        return R.data(pages);
    }
    /**
     * 新增
     * @param locus 轨迹信息对象
     */
    @PostMapping("/save")
    @ApiOperation(value = "新增", notes = "传入locus")
    public R save(@RequestBody Locus locus) {
        return R.status(locusService.save(locus));
    }
    /**
     * 修改
     * @param locus 轨迹信息对象
     */
    @PostMapping("/update")
    public R update(@RequestBody Locus locus) {
        return R.status(locusService.updateById(locus));
    }
    /**
     * 新增或修改
     * @param locus 轨迹信息对象
     */
    @PostMapping("/submit")
    public R submit(@RequestBody Locus locus) {
        return R.status(locusService.saveOrUpdate(locus));
    }
    /**
     * 删除
     * @param ids 轨迹信息ids 数组
     */
    @PostMapping("/remove")
    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
        return R.status(locusService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 详情
     * @param locus 轨迹信息对象
     */
    @GetMapping("/detail")
    @ApiOperation(value = "详情", notes = "传入locus")
    public R<LocusVo> detail(Locus locus) {
        LocusVo detail = locusService.selectLocusInfo(locus);
        return R.data(detail);
    }
}
src/main/java/org/springblade/modules/location/entity/LiveLocation.java
New file
@@ -0,0 +1,63 @@
package org.springblade.modules.location.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * 实时位置实体类
 * @author zhongrj
 * @time 2021-07-21
 */
@Data
@TableName("sys_live_location")
public class LiveLocation implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 实时位置主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 类型  1:押运人员  2:押运车辆  3:枪支
     */
    @TableField("type")
    private Integer type;
    /**
     * 押运人员/车辆/枪支id
     */
    @TableField("worker_id")
    private Long workerId;
    /**
     * 记录时间/上传时间
     */
    @TableField("record_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recordTime;
    /**
     * 经度
     */
    private String longitude;
    /**
     * 纬度
     */
    private String latitude;
}
src/main/java/org/springblade/modules/location/entity/Locus.java
New file
@@ -0,0 +1,56 @@
package org.springblade.modules.location.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * 轨迹实体类
 * @author zhongrj
 * @time 2021-07-21
 */
@Data
@TableName("sys_locus")
public class Locus implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 轨迹主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 实时位置id
     */
    @TableField("live_location_id")
    private Long liveLocationId;
    /**
     * 记录时间/上传时间
     */
    @TableField("record_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recordTime;
    /**
     * 经度
     */
    private String longitude;
    /**
     * 纬度
     */
    private String latitude;
}
src/main/java/org/springblade/modules/location/mapper/LiveLocationMapper.java
New file
@@ -0,0 +1,40 @@
package org.springblade.modules.location.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.location.entity.LiveLocation;
import org.springblade.modules.location.vo.LiveLocationVo;
import org.springblade.modules.location.vo.LocusVo;
import java.util.List;
/**
 * 实时位置Mapper 接口
 * @author zhongrj
 */
public interface LiveLocationMapper extends BaseMapper<LiveLocation> {
    /**
     * 自定义分页
     *
     * @param page   分页
     * @param liveLocation 实体
     * @return
     */
    List<LiveLocationVo> selectLiveLocationPage(IPage page, @Param("liveLocation") LiveLocationVo liveLocation);
    /**
     * 详情
     * @param liveLocation 实时位置信息对象
     * @return
     */
    LiveLocationVo selectLiveLocationInfo(@Param("liveLocation") LiveLocation liveLocation);
    /**
     * 获取轨迹数据
     * @param liveLocationVo 实时对象信息
     * @return
     */
    List<LocusVo> getLocusInfoList(@Param("liveLocation") LiveLocationVo liveLocationVo);
}
src/main/java/org/springblade/modules/location/mapper/LiveLocationMapper.xml
New file
@@ -0,0 +1,63 @@
<?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="org.springblade.modules.location.mapper.LiveLocationMapper">
    <!--实时位置分页信息-->
    <select id="selectLiveLocationPage" resultType="org.springblade.modules.location.vo.LiveLocationVo">
        SELECT
            *
        FROM
            sys_live_location
        WHERE
            1=1
        <if test="liveLocation.startTime!=null and liveLocation.startTime!=''">
            and record_time &gt;= #{liveLocation.startTime}
        </if>
        <if test="liveLocation.endTime!=null and liveLocation.endTime!=''">
            and record_time &lt;= #{liveLocation.endTime}
        </if>
    </select>
    <!--实时位置详情信息-->
    <select id="selectLiveLocationInfo" resultType="org.springblade.modules.location.vo.LiveLocationVo">
        SELECT
            *
        FROM
            sys_live_location
        WHERE
            1=1
        <if test="liveLocation.type!=null">
            and type = #{liveLocation.type}
        </if>
        <if test="liveLocation.workerId!=null and liveLocation.workerId!=''">
            and worker_id = #{liveLocation.workerId}
        </if>
    </select>
    <!--获取轨迹数据-->
    <select id="getLocusInfoList" resultType="org.springblade.modules.location.vo.LocusVo">
        select
            sl.*
        from
            sys_locus sl
        left join
            sys_live_location sll
        on
            sll.id = sl.live_location_id
        where
            1=1
        <if test="liveLocation.type!=null and liveLocation.type!=''">
            and sll.type = #{liveLocation.type}
        </if>
        <if test="liveLocation.workerId!=null and liveLocation.workerId!=''">
            and sll.worker_id = #{liveLocation.workerId}
        </if>
        <if test="liveLocation.startTime!=null and liveLocation.startTime!=''">
            and sl.record_time &gt;= #{liveLocation.startTime}
        </if>
        <if test="liveLocation.endTime!=null and liveLocation.endTime!=''">
            and sl.record_time &lt;= #{liveLocation.endTime}
        </if>
    </select>
</mapper>
src/main/java/org/springblade/modules/location/mapper/LocusMapper.java
New file
@@ -0,0 +1,32 @@
package org.springblade.modules.location.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.location.entity.Locus;
import org.springblade.modules.location.vo.LocusVo;
import java.util.List;
/**
 * 轨迹Mapper 接口
 * @author zhongrj
 */
public interface LocusMapper extends BaseMapper<Locus> {
    /**
     * 自定义分页
     *
     * @param page   分页
     * @param locus 实体
     * @return
     */
    List<LocusVo> selectLocusPage(IPage page, @Param("locus") LocusVo locus);
    /**
     * 详情
     * @param locus 轨迹信息对象
     * @return
     */
    LocusVo selectLocusInfo(@Param("locus") Locus locus);
}
src/main/java/org/springblade/modules/location/mapper/LocusMapper.xml
New file
@@ -0,0 +1,27 @@
<?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="org.springblade.modules.location.mapper.LocusMapper">
    <!--轨迹分页信息-->
    <select id="selectLocusPage" resultType="org.springblade.modules.location.vo.LocusVo">
        SELECT
            *
        FROM
            sys_locus
        WHERE
            1=1
    </select>
    <!--轨迹详情信息-->
    <select id="selectLocusInfo" resultType="org.springblade.modules.location.vo.LocusVo">
        SELECT
            *
        FROM
            sys_locus
        WHERE
            1=1
        <if test="locus.id!=null">
            and id = #{locus.id}
        </if>
    </select>
</mapper>
src/main/java/org/springblade/modules/location/service/LiveLocationService.java
New file
@@ -0,0 +1,38 @@
package org.springblade.modules.location.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.location.entity.LiveLocation;
import org.springblade.modules.location.vo.LiveLocationVo;
import org.springblade.modules.location.vo.LocusVo;
import java.util.List;
/**
 * @author zhongrj
 */
public interface LiveLocationService extends IService<LiveLocation> {
    /**
     * 实时位置详情
     * @param liveLocation 实时位置信息对象
     * @return
     */
    LiveLocationVo selectLiveLocationInfo(LiveLocation liveLocation);
    /**
     * 实时位置分页信息
     * @param page
     * @param liveLocation 实时位置信息对象
     * @return
     */
    IPage<LiveLocationVo> selectLiveLocationPage(IPage<LiveLocationVo> page, LiveLocationVo liveLocation);
    /**
     * 获取轨迹数据
     * @param liveLocationVo 实时对象信息
     * @return
     */
    List<LocusVo> getLocusInfoList(LiveLocationVo liveLocationVo);
}
src/main/java/org/springblade/modules/location/service/LocusService.java
New file
@@ -0,0 +1,24 @@
package org.springblade.modules.location.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.location.entity.Locus;
import org.springblade.modules.location.vo.LocusVo;
public interface LocusService extends IService<Locus> {
    /**
     * 详情
     * @param locus 轨迹信息对象
     * @return
     */
    LocusVo selectLocusInfo(Locus locus);
    /**
     * 分页
     * @param page
     * @param locus
     * @return
     */
    IPage<LocusVo> selectLocusPage(IPage<LocusVo> page, LocusVo locus);
}
src/main/java/org/springblade/modules/location/service/impl/LiveLocationServiceImpl.java
New file
@@ -0,0 +1,50 @@
package org.springblade.modules.location.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.modules.location.entity.LiveLocation;
import org.springblade.modules.location.mapper.LiveLocationMapper;
import org.springblade.modules.location.service.LiveLocationService;
import org.springblade.modules.location.vo.LiveLocationVo;
import org.springblade.modules.location.vo.LocusVo;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * 实时位置服务实现类
 * @author zhongrj
 */
@Service
public class LiveLocationServiceImpl extends ServiceImpl<LiveLocationMapper, LiveLocation> implements LiveLocationService {
    /**
     * 实时位置分页信息
     * @param page
     * @param liveLocation 实时位置信息对象
     * @return
     */
    @Override
    public IPage<LiveLocationVo> selectLiveLocationPage(IPage<LiveLocationVo> page, LiveLocationVo liveLocation) {
        return page.setRecords(baseMapper.selectLiveLocationPage(page, liveLocation));
    }
    /**
     * 详情
     * @param liveLocation 实时位置信息对象
     */
    @Override
    public LiveLocationVo selectLiveLocationInfo(LiveLocation liveLocation) {
        return baseMapper.selectLiveLocationInfo(liveLocation);
    }
    /**
     * 获取轨迹数据
     * @param liveLocationVo 实时对象信息
     * @return
     */
    @Override
    public List<LocusVo> getLocusInfoList(LiveLocationVo liveLocationVo) {
        return baseMapper.getLocusInfoList(liveLocationVo);
    }
}
src/main/java/org/springblade/modules/location/service/impl/LocusServiceImpl.java
New file
@@ -0,0 +1,39 @@
package org.springblade.modules.location.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.modules.location.entity.Locus;
import org.springblade.modules.location.mapper.LocusMapper;
import org.springblade.modules.location.service.LocusService;
import org.springblade.modules.location.vo.LocusVo;
import org.springframework.stereotype.Service;
/**
 * 轨迹服务实现类
 * @author zhongrj
 */
@Service
public class LocusServiceImpl extends ServiceImpl<LocusMapper, Locus> implements LocusService {
    /**
     * 轨迹列表信息
     * @param page
     * @param rquipage
     * @return
     */
    @Override
    public IPage<LocusVo> selectLocusPage(IPage<LocusVo> page, LocusVo rquipage) {
        return page.setRecords(baseMapper.selectLocusPage(page, rquipage));
    }
    /**
     * 详情
     * @param rquipage 轨迹信息对象
     */
    @Override
    public LocusVo selectLocusInfo(Locus rquipage) {
        return baseMapper.selectLocusInfo(rquipage);
    }
}
src/main/java/org/springblade/modules/location/vo/LiveLocationVo.java
New file
@@ -0,0 +1,26 @@
package org.springblade.modules.location.vo;
import lombok.Data;
import org.springblade.modules.location.entity.LiveLocation;
import java.io.Serializable;
/**
 * @author zhongrj
 * @since 2021-07-21
 */
@Data
public class LiveLocationVo extends LiveLocation implements Serializable {
    /**
     * 开始时间
     */
    private String startTime;
    /**
     * 结束时间
     */
    private String endTime;
}
src/main/java/org/springblade/modules/location/vo/LocusVo.java
New file
@@ -0,0 +1,14 @@
package org.springblade.modules.location.vo;
import lombok.Data;
import org.springblade.modules.location.entity.Locus;
import java.io.Serializable;
/**
 * @author zhongrj
 */
@Data
public class LocusVo extends Locus implements Serializable {
}
src/main/resources/application.yml
@@ -193,6 +193,8 @@
    #接口放行
    skip-url:
      - /blade-test/**
      - /liveLocation/**
      - /locus/**
    #授权认证配置
    auth:
      - method: ALL