package org.springblade.modules.location.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiParam;
|
import liquibase.pro.packaged.S;
|
import lombok.AllArgsConstructor;
|
import okhttp3.OkHttpClient;
|
import okhttp3.Request;
|
import okhttp3.Response;
|
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) {
|
//先查询是否已有实时位置信息,如果有,则更新,没有则插入
|
LiveLocation liveLocationInfo = liveLocationService.getLiveLocationInfo(liveLocation);
|
boolean status = false;
|
if (null == liveLocationInfo){
|
//新增
|
liveLocation.setRecordTime(new Date());
|
status = liveLocationService.save(liveLocation);
|
}else {
|
//更新
|
liveLocationInfo.setRecordTime(new Date());
|
liveLocationInfo.setLongitude(liveLocation.getLongitude());
|
liveLocationInfo.setLatitude(liveLocation.getLatitude());
|
status = liveLocationService.updateById(liveLocationInfo);
|
}
|
|
if (status){
|
//新增轨迹
|
Locus locus = new Locus();
|
//封装数据
|
if (null!=liveLocationInfo){
|
locus.setLiveLocationId(liveLocationInfo.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));
|
}
|
|
|
/**
|
* 获取指令接收人的轨迹数据
|
* @param liveLocationVo 实时对象信息
|
* @return
|
*/
|
@GetMapping("/getDirectiveLocusInfoList")
|
public R<List<List<LocusVo>>> getDirectiveLocusInfoList(LiveLocationVo liveLocationVo){
|
return R.data(liveLocationService.getDirectiveLocusInfoList(liveLocationVo));
|
}
|
|
/**
|
* 首页实时定位
|
* @return
|
*/
|
@GetMapping("/getLiveLocationVoList")
|
public R<List<LiveLocationVo>> getLiveLocationVoList(LiveLocationVo liveLocationVo){
|
return R.data(liveLocationService.getLiveLocationVoList(liveLocationVo));
|
}
|
|
|
/**
|
* 获取指令接收人的定位信息
|
* @param liveLocationVo 定位数据信息
|
* @return
|
*/
|
@GetMapping("/getDirectiveLiveLocationVoList")
|
public R<List<LiveLocationVo>> getDirectiveLiveLocationVoList(LiveLocationVo liveLocationVo){
|
return R.data(liveLocationService.getDirectiveLiveLocationVoList(liveLocationVo));
|
}
|
|
/**
|
* 枪支定位
|
* @param
|
* @param
|
* @return
|
*/
|
@GetMapping("/Gun")
|
public R Gun(String hwysfzh, String szdw, String kssj, String jssj) {
|
String s = httpGetOne(hwysfzh, szdw, kssj, jssj);
|
return R.data(s);
|
}
|
|
|
|
public static String httpGetOne(String hwysfzh, String szdw, String kssj, String jssj) {
|
OkHttpClient client = new OkHttpClient();
|
Request request = new Request.Builder()
|
.url("http://47.49.36.190/api/investigate/gun?hwysfzh="+hwysfzh+"&szdw="+szdw+"&kssj="+kssj+"&jssj="+jssj)
|
.get()
|
.build();
|
try {
|
Response response = client.newCall(request).execute();
|
return response.body().string();
|
} catch (Exception e) {
|
|
}
|
return null;
|
}
|
|
}
|