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));
|
}
|
|
/**
|
* 首页实时定位
|
* @return
|
*/
|
@GetMapping("/getLiveLocationVoList")
|
public R<List<LiveLocationVo>> getLiveLocationVoList(LiveLocationVo liveLocationVo){
|
return R.data(liveLocationService.getLiveLocationVoList(liveLocationVo));
|
}
|
|
}
|