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 >= #{liveLocation.startTime} </if> <if test="liveLocation.endTime!=null and liveLocation.endTime!=''"> and record_time <= #{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 >= #{liveLocation.startTime} </if> <if test="liveLocation.endTime!=null and liveLocation.endTime!=''"> and sl.record_time <= #{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