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> page(LiveLocationVo liveLocation, Query query) { IPage 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 detail(LiveLocation liveLocation) { LiveLocation detail = liveLocationService.getOne(Condition.getQueryWrapper(liveLocation)); return R.data(detail); } /** * 获取轨迹数据 * @param liveLocationVo 实时对象信息 * @return */ @GetMapping("/getLocusInfoList") public R> getLocusInfoList(LiveLocationVo liveLocationVo){ return R.data(liveLocationService.getLocusInfoList(liveLocationVo)); } /** * 首页实时定位 * @return */ @GetMapping("/getLiveLocationVoList") public R> getLiveLocationVoList(LiveLocationVo liveLocationVo){ return R.data(liveLocationService.getLiveLocationVoList(liveLocationVo)); } }