diff --git a/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java b/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java index dc1c88e46..f55da6c56 100644 --- a/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java +++ b/src/main/java/com/zhgd/xmgl/enums/ParamEnum.java @@ -725,6 +725,4 @@ public class ParamEnum { this.desc = desc; } } - - } diff --git a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/controller/MechanicalEquipmentPositionDataController.java b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/controller/MechanicalEquipmentPositionDataController.java index 3490ff5ca..efa93f297 100644 --- a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/controller/MechanicalEquipmentPositionDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/controller/MechanicalEquipmentPositionDataController.java @@ -1,27 +1,23 @@ package com.zhgd.xmgl.modules.mechanicalequipmentposition.controller; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiImplicitParams; - -import java.util.HashMap; - -import springfox.documentation.annotations.ApiIgnore; - -import java.util.List; - +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.jeecg.common.api.vo.Result; -import org.apache.commons.collections.MapUtils; import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionData; import com.zhgd.xmgl.modules.mechanicalequipmentposition.service.IMechanicalEquipmentPositionDataService; - -import org.simpleframework.xml.core.Validate; -import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; - +import org.apache.commons.collections.MapUtils; +import org.simpleframework.xml.core.Validate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; + +import java.util.HashMap; +import java.util.List; /** @@ -125,4 +121,19 @@ public class MechanicalEquipmentPositionDataController { return result; } + @ApiOperation(value = "外部添加机械设备定位-实时和报警数据信息", notes = "外部添加机械设备定位-实时和报警数据信息", httpMethod = "POST") + @ApiImplicitParams({ + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = true, dataType = "String"), + }) + @PostMapping(value = "/addData") + public Result addData(@ApiIgnore @RequestBody HashMap paramMap) { + log.info("外部添加机械设备定位-实时和报警数据信息:{}", JSON.toJSONString(paramMap)); + try { + mechanicalEquipmentPositionDataService.addData(paramMap); + } catch (Exception e) { + return Result.ok(e.getMessage()); + } + return Result.ok(); + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionAlarm.java b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionAlarm.java index a5dfbe53d..a50e7b59e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionAlarm.java +++ b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionAlarm.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Date; 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 lombok.Data; diff --git a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionData.java b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionData.java index 667961c6d..b5bc1bc06 100644 --- a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionData.java +++ b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/MechanicalEquipmentPositionData.java @@ -69,7 +69,7 @@ public class MechanicalEquipmentPositionData implements Serializable { * 工作状态 */ @Excel(name = "工作状态", width = 15) - @ApiModelProperty(value = "工作状态") + @ApiModelProperty(value = "工作状态(1:ACC开(工作状态),2:ACC关(怠速状态)") private java.lang.Integer workStatus; /** * 设备电量 diff --git a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/vo/PositionAddData.java b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/vo/PositionAddData.java new file mode 100644 index 000000000..502e8088a --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/entity/vo/PositionAddData.java @@ -0,0 +1,55 @@ +package com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.vo; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class PositionAddData { + /* +code=200的情况 +{"Altitude":0,"Code":200,"Direction":121,"Speed":0,"Time":"2024-03-10 04:52:19","deviceid":61136981730,"devicename":61136981730,"lat":"22.734326","lon":"114.243999","stralarm":"拆除报警","strstatus":"ACC关","supplyvoltage":"0.00","voltagepercent":22} + +Speed:速度 +Time:当前时间 +deviceid:设备id +devicename:设备名称 +lon:经度 +lat:纬度 +stralarm:拆除报警信息 +strstatus:工作状态(ACC开为工作状态,ACC关为怠速状态) +supplyvoltage:设备电压(根据电压值计算电量百分比,3.7-4.2(0%-100%)) +voltagepercent:设备电量 + + +code=704,解析平台重启后回补数据,在外面封装了一层,里面内容一样 +{"Code":704,"Items":[{"Altitude":0,"Code":200,"Direction":121,"Speed":0,"Time":"2024-03-10 04:49:19","deviceid":61136981730,"devicename":61136981730,"lat":"22.734326","lon":"114.243999","stralarm":"拆除报警","strstatus":"ACC关","supplyvoltage":"3.70","voltagepercent":0}],"Type":1} + + */ + @JsonProperty("Altitude") + private Long altitude; + @JsonProperty("Code") + private Long code; + @JsonProperty("Direction") + private Long direction; + @JsonProperty("Speed") + private Long speed; + @JsonProperty("Time") + private String time; + @JsonProperty("deviceid") + private Long deviceid; + @JsonProperty("devicename") + private Long devicename; + @JsonProperty("lat") + private String lat; + @JsonProperty("lon") + private String lon; + @JsonProperty("stralarm") + private String stralarm; + @JsonProperty("strstatus") + private String strstatus; + @JsonProperty("supplyvoltage") + private String supplyvoltage; + @JsonProperty("voltagepercent") + private Long voltagepercent; + +} diff --git a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/IMechanicalEquipmentPositionDataService.java b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/IMechanicalEquipmentPositionDataService.java index 54685b4c2..f28c57e1c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/IMechanicalEquipmentPositionDataService.java +++ b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/IMechanicalEquipmentPositionDataService.java @@ -24,4 +24,6 @@ public interface IMechanicalEquipmentPositionDataService extends IService paramMap); } diff --git a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/impl/MechanicalEquipmentPositionDataServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/impl/MechanicalEquipmentPositionDataServiceImpl.java index 2b3395ed3..4402fd2ed 100644 --- a/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/impl/MechanicalEquipmentPositionDataServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/mechanicalequipmentposition/service/impl/MechanicalEquipmentPositionDataServiceImpl.java @@ -1,23 +1,38 @@ package com.zhgd.xmgl.modules.mechanicalequipmentposition.service.impl; -import com.zhgd.jeecg.common.execption.OpenAlertException; -import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionData; -import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDataMapper; -import com.zhgd.xmgl.modules.mechanicalequipmentposition.service.IMechanicalEquipmentPositionDataService; -import org.springframework.stereotype.Service; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.zhgd.jeecg.common.system.query.QueryGenerator; -import com.zhgd.xmgl.util.PageUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.zhgd.jeecg.common.execption.OpenAlertException; +import com.zhgd.jeecg.common.system.query.QueryGenerator; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionAlarm; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionData; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionDev; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.vo.PositionAddData; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionAlarmMapper; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDataMapper; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDevMapper; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.service.IMechanicalEquipmentPositionDataService; +import com.zhgd.xmgl.util.PageUtil; +import com.zhgd.xmgl.util.RefUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.Date; import java.util.HashMap; import java.util.List; - -import com.zhgd.xmgl.util.RefUtil; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.beans.factory.annotation.Autowired; +import java.util.Objects; /** * @Description: 机械设备定位-实时数据 @@ -27,9 +42,14 @@ import org.springframework.beans.factory.annotation.Autowired; */ @Service @Transactional(rollbackFor = Exception.class) +@Slf4j public class MechanicalEquipmentPositionDataServiceImpl extends ServiceImpl implements IMechanicalEquipmentPositionDataService { @Autowired private MechanicalEquipmentPositionDataMapper mechanicalEquipmentPositionDataMapper; + @Autowired + private MechanicalEquipmentPositionDevMapper mechanicalEquipmentPositionDevMapper; + @Autowired + private MechanicalEquipmentPositionAlarmMapper alarmMapper; @Override public IPage queryPageList(HashMap paramMap) { @@ -77,5 +97,82 @@ public class MechanicalEquipmentPositionDataServiceImpl extends ServiceImpl paramMap) { + Integer code = MapUtils.getInteger(paramMap, "Code"); + if (Objects.equals(code, 200)) { + PositionAddData data = JSONObject.parseObject(JSON.toJSONString(paramMap), PositionAddData.class); + insertData(data); + } else if (Objects.equals(code, 704)) { + //code=704,解析平台重启后回补数据,在外面封装了一层,里面内容一样 + JSONObject jo = JSON.parseObject(JSON.toJSONString(paramMap)); + JSONArray jaItems = jo.getJSONArray("Items"); + StringBuilder sb = new StringBuilder(); + if (jaItems.size() != 0) { + for (int i = 0; i < jaItems.size(); i++) { + JSONObject joItem = jaItems.getJSONObject(i); + PositionAddData data = JSON.parseObject(joItem.toJSONString(), PositionAddData.class); + try { + insertData(data); + } catch (OpenAlertException e) { + sb.append(e.getMessage()); + } + + } + } + if (StrUtil.isNotBlank(sb.toString())) { + throw new OpenAlertException(sb.toString()); + } + } + } + + private void insertData(PositionAddData data) { + MechanicalEquipmentPositionDev dev = mechanicalEquipmentPositionDevMapper.selectOne(new LambdaQueryWrapper() + .eq(MechanicalEquipmentPositionDev::getDevSn, data.getDeviceid())); + if (dev == null) { + log.error("设备编号不正确:{}", data.getDeviceid()); + throw new OpenAlertException(Convert.toStr("设备编号不正确:" + data.getDeviceid()) + ","); + } + + dev.setHeartbeatTime(new Date()); + mechanicalEquipmentPositionDevMapper.updateById(dev); + MechanicalEquipmentPositionData positionData = new MechanicalEquipmentPositionData(); + positionData.setDevSn(dev.getDevSn()); + positionData.setLatitude(Convert.toDouble(data.getLat())); + positionData.setLongitude(Convert.toDouble(data.getLon())); + positionData.setUploadTime(DateUtil.parseDateTime(data.getTime())); + positionData.setSpeed(Convert.toDouble(data.getSpeed())); + positionData.setWorkStatus(getWorkStatus(data.getStrstatus())); + positionData.setEquipmentPower(Convert.toDouble(data.getVoltagepercent())); + positionData.setEquipmentVoltage(Convert.toDouble(data.getSupplyvoltage())); + positionData.setProjectSn(dev.getProjectSn()); + baseMapper.insert(positionData); + + if (StrUtil.isNotBlank(data.getStralarm())) { + //插入报警 + MechanicalEquipmentPositionAlarm alarm = new MechanicalEquipmentPositionAlarm(); + alarm.setDevSn(dev.getDevSn()); + alarm.setEquipmentName(dev.getEquipmentName()); + alarm.setAlarmTime(positionData.getUploadTime()); + alarm.setAlarmInfo(data.getStralarm()); + alarm.setProjectSn(dev.getProjectSn()); + alarmMapper.insert(alarm); + } + } + + private Integer getWorkStatus(String strstatus) { + if (StrUtil.isBlank(strstatus)) { + return null; + } + switch (strstatus) { + case "ACC开": + return 1; + case "ACC关": + return 2; + } + return null; + } + } diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml index eb4bb5be4..075253190 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/mapper/xml/SafetyHatDevMapper.xml @@ -13,14 +13,12 @@ diff --git a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java index 976cafabf..8e19a3b54 100644 --- a/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/safetyhat/service/impl/SafetyHatDevServiceImpl.java @@ -1,7 +1,6 @@ package com.zhgd.xmgl.modules.safetyhat.service.impl; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -13,7 +12,6 @@ import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.xmgl.modules.safetyhat.entity.SafetyHatDev; import com.zhgd.xmgl.modules.safetyhat.mapper.SafetyHatDevMapper; import com.zhgd.xmgl.modules.safetyhat.service.ISafetyHatDevService; -import com.zhgd.xmgl.modules.vehicleposition.entity.VehiclePositionDev; import com.zhgd.xmgl.modules.vehicleposition.entity.vo.CountVehiclePositionDevVo; import com.zhgd.xmgl.util.PageUtil; import com.zhgd.xmgl.util.RefUtil; @@ -63,7 +61,8 @@ public class SafetyHatDevServiceImpl extends ServiceImpl qw.lt(alias + RefUtil.fieldNameUlc(SafetyHatDev::getHeartbeatTime), dateTime).or() + .isNull(alias + RefUtil.fieldNameUlc(SafetyHatDev::getHeartbeatTime))); } } return queryWrapper; diff --git a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java index 126690262..b08538100 100644 --- a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java +++ b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java @@ -332,6 +332,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/xmgl/safetyHatData/add").permitAll() .antMatchers("/xmgl/safetyHatDayRecord/saveData").permitAll() .antMatchers("/xmgl/safetyHatAlarm/add").permitAll() + .antMatchers("/xmgl/mechanicalEquipmentPositionData/addData").permitAll() .antMatchers(HttpMethod.OPTIONS, "/**").anonymous() .anyRequest().authenticated() // 剩下所有的验证都需要验证. .and() diff --git a/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java b/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java new file mode 100644 index 000000000..4a70746fa --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/task/MechanicalEquipmentPositionDayRecordTask.java @@ -0,0 +1,86 @@ +package com.zhgd.xmgl.task; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionData; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionDayRecord; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.entity.MechanicalEquipmentPositionDev; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDataMapper; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDayRecordMapper; +import com.zhgd.xmgl.modules.mechanicalequipmentposition.mapper.MechanicalEquipmentPositionDevMapper; +import com.zhgd.xmgl.modules.project.service.IProjectService; +import com.zhgd.xmgl.util.TiandituUtil; +import lombok.extern.slf4j.Slf4j; +import net.javacrumbs.shedlock.core.SchedulerLock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 机械设备定位task + */ +@Slf4j +@RestController +@RequestMapping("xmgl/task") +public class MechanicalEquipmentPositionDayRecordTask { + @Autowired + IProjectService projectService; + @Autowired + MechanicalEquipmentPositionDayRecordMapper mechanicalEquipmentPositionDayRecordMapper; + @Autowired + MechanicalEquipmentPositionDataMapper mechanicalEquipmentPositionDataMapper; + @Autowired + MechanicalEquipmentPositionDevMapper mechanicalEquipmentPositionDevMapper; + + /** + * 每天计算一次轨迹距离 + */ + @SchedulerLock(name = "getHelmet", lockAtMostFor = 1000 * 60 * 60, lockAtLeastFor = 1000 * 60 * 7) + @Scheduled(cron = "0 0 2 * * ?") + @RequestMapping("") + public void getHelmet() { + log.info("每天计算一次昨日的轨迹距离,开始任务"); + List devList = mechanicalEquipmentPositionDevMapper.selectList(null); + for (MechanicalEquipmentPositionDev dev : devList) { + DateTime yesterday = DateUtil.offsetDay(DateUtil.date(), -1); + List dataList = mechanicalEquipmentPositionDataMapper.selectList(new LambdaQueryWrapper() + .eq(MechanicalEquipmentPositionData::getDevSn, dev.getDevSn()) + .ge(MechanicalEquipmentPositionData::getUploadTime, DateUtil.formatDateTime(DateUtil.beginOfDay(yesterday))) + .le(MechanicalEquipmentPositionData::getUploadTime, DateUtil.formatDateTime(DateUtil.endOfDay(yesterday))) + ); + MechanicalEquipmentPositionDayRecord dayRecord = new MechanicalEquipmentPositionDayRecord(); + dayRecord.setDevSn(dev.getDevSn()); + if (dataList.size() > 1) { + dayRecord.setTrackDistanceDay(TiandituUtil.getDistance(getPoint(dataList.get(0)), getPoint(dataList.get(dataList.size() - 1)), getMid(dataList), 0)); + } else { + dayRecord.setTrackDistanceDay(0D); + } + dayRecord.setDay(DateUtil.formatDate(yesterday)); + dayRecord.setProjectSn(dev.getProjectSn()); + mechanicalEquipmentPositionDayRecordMapper.insert(dayRecord); + + } + } + + private String getMid(List dataList) { + List subList = dataList.subList(1, dataList.size() - 1); + StringBuilder sb = new StringBuilder(); + for (MechanicalEquipmentPositionData data : subList) { + sb.append(getPoint(data)); + sb.append(";"); + } + List pointList = subList.stream().map(data -> getPoint(data)).collect(Collectors.toList()); + return StrUtil.join(";", pointList); + } + + private String getPoint(MechanicalEquipmentPositionData mechanicalEquipmentPositionData) { + return mechanicalEquipmentPositionData.getLongitude() + "," + mechanicalEquipmentPositionData.getLatitude(); + } + +} diff --git a/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java b/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java new file mode 100644 index 000000000..094963d0c --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/util/TiandituUtil.java @@ -0,0 +1,34 @@ +package com.zhgd.xmgl.util; + +import cn.hutool.core.convert.Convert; +import cn.hutool.http.HttpUtil; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class TiandituUtil { + static Pattern pattern = Pattern.compile("(.*)"); + + /** + * 查询轨迹距离 + * + * @param orig string 起点经纬度 是 -180,-90,180,90。 + * @param dest string 终点经纬度 是 -180,-90,180,90。 + * @param mid 途径点经纬度字符串 否 途径点字符串格式:116.35506,39.92277;116.35506,39.92277两个坐标之间以分号隔开,坐标xy之间用逗号隔开(都是半角)。 + * @param style 导航路线类型 默认0 (0:最快路线,1:最短路线,2:避开高速,3:步行) 0-3。 + * @return + */ + public static Double getDistance(String orig, String dest, String mid, Integer style) { + String key = "000c3ade82b69dee54ac334e750cfac0"; + String url = "http://api.tianditu.gov.cn/drive?postStr={\"orig\":\"" + orig + "\",\"dest\":\"" + dest + "\",\"mid\":\"" + mid + "\",\"style\":\"" + style + "\"}&type=search&tk=" + key; + String rs = HttpUtil.get(url); + Matcher matcher = pattern.matcher(rs); + matcher.find(); + return Convert.toDouble(matcher.group(0)); + } + + public static void main(String[] args) { + Double distance = getDistance("116.35506,39.92277", "116.40332,39.90025", "116.35506,39.92277;116.35506,39.92277", 0); + System.out.println(distance); + } +}