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 net.sf.json.JSONArray; 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> 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)); } /** * 获取指令接收人的轨迹数据 * * @param liveLocationVo 实时对象信息 * @return */ @GetMapping("/getDirectiveLocusInfoList") public R>> getDirectiveLocusInfoList(LiveLocationVo liveLocationVo) { return R.data(liveLocationService.getDirectiveLocusInfoList(liveLocationVo)); } /** * 首页实时定位 * * @return */ @GetMapping("/getLiveLocationVoList") public R> getLiveLocationVoList(LiveLocationVo liveLocationVo) { return R.data(liveLocationService.getLiveLocationVoList(liveLocationVo)); } /** * 获取指令接收人的定位信息 * * @param liveLocationVo 定位数据信息 * @return */ @GetMapping("/getDirectiveLiveLocationVoList") public R> 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); String a = "[" + s + "]"; JSONArray jsonArray = JSONArray.fromObject(a); return R.data(jsonArray); } 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; } }