Browse Source

Merge remote-tracking branch 'origin/develop' into develop

develop
wangsixiang 8 months ago
parent
commit
b92dc32649
  1. 17
      zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java
  2. 51
      zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java
  3. 13
      zc-business/src/main/java/com/zc/business/controller/StatusController.java
  4. 2
      zc-business/src/main/java/com/zc/business/domain/DcEvent.java
  5. 101
      zc-business/src/main/java/com/zc/business/domain/Status.java
  6. 40
      zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java
  7. 15
      zc-business/src/main/resources/mapper/business/StatusMapper.xml

17
zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java

@ -17,10 +17,7 @@ import javax.annotation.Resource;
import java.text.ParseException; import java.text.ParseException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* *
@ -56,7 +53,7 @@ public class DcTrafficFlowWarning {
DateTimeFormatter formatterStr = DateTimeFormatter.ofPattern(UniversalEnum.PURE_CHINESE_CHARACTER_TIME_FORMATS_YEARS_MONTH_DAY.getValue()); DateTimeFormatter formatterStr = DateTimeFormatter.ofPattern(UniversalEnum.PURE_CHINESE_CHARACTER_TIME_FORMATS_YEARS_MONTH_DAY.getValue());
String formattedDate = dateAfterSevenDays.format(formatter); String formattedDate = dateAfterSevenDays.format(formatter);
String formattedDateStr = dateAfterSevenDays.format(formatterStr); String formattedDateStr = dateAfterSevenDays.format(formatterStr);
// String formattedDate ="2024-05-01"; // String formattedDate ="2024-05-01";
for (DcHolidays holidays : dcHolidaysList) { for (DcHolidays holidays : dcHolidaysList) {
String vacation = holidays.getVacation(); String vacation = holidays.getVacation();
@ -72,12 +69,12 @@ public class DcTrafficFlowWarning {
String[] date = vacation1.split(UniversalEnum.THERE_S_A_LOT_GOING_ON.getValue()); String[] date = vacation1.split(UniversalEnum.THERE_S_A_LOT_GOING_ON.getValue());
Map<String, Map<String, List<Map<String, String>>>> mapListOne = new HashMap<>(); Map<String, Map<String, List<Map<String, String>>>> mapListOne = new LinkedHashMap<>();
Map<String, List<Map<String, String>>> map = new HashMap<>(); Map<String, List<Map<String, String>>> map = new LinkedHashMap<>();
Map<String, List<Map<String, String>>> map2 = new HashMap<>(); Map<String, List<Map<String, String>>> map2 = new LinkedHashMap<>();
Map<String, List<Map<String, String>>> map3 = new HashMap<>(); Map<String, List<Map<String, String>>> map3 = new LinkedHashMap<>();
Map<String, List<Map<String, String>>> map4 = new HashMap<>(); Map<String, List<Map<String, String>>> map4 = new LinkedHashMap<>();
for (int i1 = UniversalEnum.ZERO.getNumber(); i1 < date.length; i1++) { for (int i1 = UniversalEnum.ZERO.getNumber(); i1 < date.length; i1++) {
//交通流 //交通流
List<Map<String, String>> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow(date[i1], UniversalEnum.ONE.getValue(), UniversalEnum.FOUR.getValue()); List<Map<String, String>> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow(date[i1], UniversalEnum.ONE.getValue(), UniversalEnum.FOUR.getValue());

51
zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java

@ -2,6 +2,7 @@ package com.zc.business.controller;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@ -24,6 +25,8 @@ import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
@ -31,6 +34,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
@ -42,6 +46,7 @@ import java.util.stream.Collectors;
* *
* @author xiepufeng * @author xiepufeng
*/ */
//@Component
@Api(tags = "交通数据统计") @Api(tags = "交通数据统计")
@RestController @RestController
@RequestMapping("/business/traffic-statistics") @RequestMapping("/business/traffic-statistics")
@ -521,7 +526,27 @@ public AjaxResult realTimeTrafficFlow(String startDate, String direction,String
endDate = String.valueOf(year); endDate = String.valueOf(year);
} }
List<Map<String, Object>> thisYearList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(startDate,direction,periodType); List<Map<String, Object>> thisYearList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(startDate,direction,periodType);
Map<String,List<Map<String, Object>>> thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> item.get("groupTime").toString())); Map<String,List<Map<String, Object>>> thisYearData = new HashMap<>();
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm");
if (UniversalEnum.FOUR.getValue().equals(periodType)){
thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> {
LocalDateTime dateTime = LocalDateTime.parse(item.get("groupTime").toString(), inputFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("HH时");
return outputFormatter.format(dateTime);
}));
} else if (UniversalEnum.THREE.getValue().equals(periodType)){
thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> {
LocalDateTime dateTime = LocalDateTime.parse(item.get("groupTime").toString(), inputFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("M月d日");
return dateTime.format(outputFormatter);
}));
} else if (UniversalEnum.ONE.getValue().equals(periodType)){
thisYearData = thisYearList.stream().collect(Collectors.groupingBy(item -> {
LocalDateTime dateTime = LocalDateTime.parse(item.get("groupTime").toString(), inputFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("M月");
return dateTime.format(outputFormatter);
}));
}
List<Map<String, Object>> lastYearList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(endDate,direction,periodType); List<Map<String, Object>> lastYearList = dcGantryMetricsStatisticsDataService.passIndicatorTimeDistribution(endDate,direction,periodType);
Map<String,List<Map<String, Object>>> lastYearData = lastYearList.stream().collect(Collectors.groupingBy(item -> item.get("groupTime").toString())); Map<String,List<Map<String, Object>>> lastYearData = lastYearList.stream().collect(Collectors.groupingBy(item -> item.get("groupTime").toString()));
@ -533,20 +558,36 @@ public AjaxResult realTimeTrafficFlow(String startDate, String direction,String
allKey.addAll(lastYearData.keySet()); allKey.addAll(lastYearData.keySet());
} }
for (String key : allKey) { List<String> keyList = new ArrayList<>(allKey);
Collections.sort(keyList);
for (String key : keyList) {
PassIndicatorTimeDistribution passIndicatorTimeDistribution = new PassIndicatorTimeDistribution(); PassIndicatorTimeDistribution passIndicatorTimeDistribution = new PassIndicatorTimeDistribution();
passIndicatorTimeDistribution.setTime(key); passIndicatorTimeDistribution.setTime(key);
if (thisYearData != null && thisYearData.containsKey(key)){ if (thisYearData != null && thisYearData.containsKey(key)){
Map<String, Object> sectionData = thisYearData.get(key).get(UniversalEnum.ZERO.getNumber()); Map<String, Object> sectionData = thisYearData.get(key).get(UniversalEnum.ZERO.getNumber());
passIndicatorTimeDistribution.setCrowdingRate(sectionData.get("crowdingRate").toString()); passIndicatorTimeDistribution.setCrowdingRate(sectionData.get("crowdingRate").toString());
passIndicatorTimeDistribution.setSaturationRate(sectionData.get("saturationRate").toString());
if (sectionData.get("saturationRate") instanceof Double){
double saturationRate = (Double)sectionData.get("saturationRate");
passIndicatorTimeDistribution.setSaturationRate(String.format("%.4f", saturationRate));
} else {
passIndicatorTimeDistribution.setSaturationRate("0");
}
// passIndicatorTimeDistribution.setSaturationRate(sectionData.get("saturationRate").toString());
passIndicatorTimeDistribution.setTrafficCompositionRate(sectionData.get("trafficCompositionRate").toString()); passIndicatorTimeDistribution.setTrafficCompositionRate(sectionData.get("trafficCompositionRate").toString());
} }
if (lastYearData != null && lastYearData.containsKey(key)){ if (lastYearData != null && lastYearData.containsKey(key)){
Map<String, Object> sectionData = lastYearData.get(key).get(UniversalEnum.ZERO.getNumber()); Map<String, Object> sectionData = lastYearData.get(key).get(UniversalEnum.ZERO.getNumber());
passIndicatorTimeDistribution.setCrowdingRateLastYear(sectionData.get("crowdingRate").toString()); passIndicatorTimeDistribution.setCrowdingRateLastYear(sectionData.get("crowdingRate").toString());
passIndicatorTimeDistribution.setSaturationRateLastYear(sectionData.get("saturationRate").toString()); // passIndicatorTimeDistribution.setSaturationRateLastYear(sectionData.get("saturationRate").toString());
if (sectionData.get("saturationRate") instanceof Double){
double saturationRate = (Double)sectionData.get("saturationRate");
passIndicatorTimeDistribution.setSaturationRateLastYear(String.format("%.4f", saturationRate));
} else {
passIndicatorTimeDistribution.setSaturationRateLastYear("0");
}
passIndicatorTimeDistribution.setTrafficCompositionRateLastYear(sectionData.get("trafficCompositionRate").toString()); passIndicatorTimeDistribution.setTrafficCompositionRateLastYear(sectionData.get("trafficCompositionRate").toString());
} }
list.add(passIndicatorTimeDistribution); list.add(passIndicatorTimeDistribution);
@ -704,7 +745,7 @@ public AjaxResult realTimeTrafficFlow(String startDate, String direction,String
// 将获取到的交通指标数据封装为成功的结果并返回 // 将获取到的交通指标数据封装为成功的结果并返回
return AjaxResult.success(jsonArray); return AjaxResult.success(jsonArray);
} }
// @Scheduled(cron = "0/30 * * * * ?")
@ApiOperation("获取当前拥堵路段") @ApiOperation("获取当前拥堵路段")
@GetMapping("/current/getTheCurrentCongestedSection") @GetMapping("/current/getTheCurrentCongestedSection")
public AjaxResult getTheCurrentCongestedSection() throws HttpException, IOException { public AjaxResult getTheCurrentCongestedSection() throws HttpException, IOException {

13
zc-business/src/main/java/com/zc/business/controller/StatusController.java

@ -53,7 +53,10 @@ public class StatusController extends BaseController {
@GetMapping ("/tablist") @GetMapping ("/tablist")
public TableDataInfo getTabList(Status status) public TableDataInfo getTabList(Status status)
{ {
//startPage(); if (status.getDeviceName()!=null) {
status.setDeviceName(status.getDeviceName().replaceAll(UniversalEnum.BLANK_SPACE.getValue(),UniversalEnum.PLUS_SIGN.getValue()));
}
startPage();
status.setTypes(status.getType().split(UniversalEnum.COMMA.getValue())); status.setTypes(status.getType().split(UniversalEnum.COMMA.getValue()));
List<Status> listStatus = statusService.listStatusByTypes(status); List<Status> listStatus = statusService.listStatusByTypes(status);
return getDataTable(listStatus); return getDataTable(listStatus);
@ -68,6 +71,9 @@ public class StatusController extends BaseController {
@PostMapping("/export") @PostMapping("/export")
public void export(HttpServletResponse response, Status status) public void export(HttpServletResponse response, Status status)
{ {
if (status.getDeviceName()!=null) {
status.setDeviceName(status.getDeviceName().replaceAll(UniversalEnum.BLANK_SPACE.getValue(),UniversalEnum.PLUS_SIGN.getValue()));
}
status.setTypes(status.getType().split(UniversalEnum.COMMA.getValue())); status.setTypes(status.getType().split(UniversalEnum.COMMA.getValue()));
List<Status> listStatus = statusService.export(status); List<Status> listStatus = statusService.export(status);
ExcelUtil<Status> util = new ExcelUtil<>(Status.class); ExcelUtil<Status> util = new ExcelUtil<>(Status.class);
@ -78,6 +84,9 @@ public class StatusController extends BaseController {
@ApiOperation("设备状态柱状图按时间和类型") @ApiOperation("设备状态柱状图按时间和类型")
@GetMapping("/list") @GetMapping("/list")
public AjaxResult getStatusList(Status status) { public AjaxResult getStatusList(Status status) {
if (status.getDeviceName()!=null) {
status.setDeviceName(status.getDeviceName().replaceAll(UniversalEnum.BLANK_SPACE.getValue(),UniversalEnum.PLUS_SIGN.getValue()));
}
LocalDateTime todayStart = status.getStartTime().truncatedTo(ChronoUnit.DAYS); LocalDateTime todayStart = status.getStartTime().truncatedTo(ChronoUnit.DAYS);
LocalDateTime currentTime = status.getTime().truncatedTo(ChronoUnit.DAYS).plusDays(UniversalEnum.ONE.getNumber()); LocalDateTime currentTime = status.getTime().truncatedTo(ChronoUnit.DAYS).plusDays(UniversalEnum.ONE.getNumber());
status.setStartTime(todayStart); status.setStartTime(todayStart);
@ -91,7 +100,7 @@ public class StatusController extends BaseController {
for (String type : types) { for (String type : types) {
Map<String, String> collect = statuses.stream().filter(item -> Objects.equals(item.getType(), type)) Map<String, String> collect = statuses.stream().filter(item -> Objects.equals(item.getType(), type))
.collect(Collectors.toMap( .collect(Collectors.toMap(
item -> item.getTime().getYear() + UniversalEnum.SHORT_BAR.getNumber() + item.getTime().getMonthValue() + UniversalEnum.SHORT_BAR.getValue() + item.getTime().getDayOfMonth(), item -> item.getTime().getYear() + UniversalEnum.SHORT_BAR.getValue() + item.getTime().getMonthValue() + UniversalEnum.SHORT_BAR.getValue() + item.getTime().getDayOfMonth(),
Status::getSuccessRate Status::getSuccessRate
)); ));
maps.put(type, collect); maps.put(type, collect);

2
zc-business/src/main/java/com/zc/business/domain/DcEvent.java

@ -189,7 +189,7 @@ public class DcEvent {
* 2-关联事件 * 2-关联事件
*/ */
@ApiModelProperty("事件性质 * 1-首发事件* 2-关联事件") @ApiModelProperty("事件性质 * 1-首发事件* 2-关联事件")
@Excel(name = "事件性质") @Excel(name = "事件性质", readConverterExp = "1=首发事件,2=关联事件" )
private Long eventNature; private Long eventNature;
/** /**

101
zc-business/src/main/java/com/zc/business/domain/Status.java

@ -11,6 +11,45 @@ import java.time.LocalDateTime;
* @Date 2024/01/04 * @Date 2024/01/04
*/ */
public class Status { public class Status {
private long id;
@Excel(name = "设备桩号")
private String deviceNo;
@Excel(name = "设备名称")
private String deviceName;
@Excel(name = "状态")
private String deviceStatus;
//@Excel(name = "使用状态")
private Integer useState;
private Integer pageNum;
private Integer pageSize;
private Long deviceId;
private String sectionId;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@Excel(name = "设备IP")
private String deviceIp;
private String successRate;
private String lostRate;
@Excel(name = "方向")
private String direction;
@Excel(name = "厂家")
private String production;
// @Excel(name = "型号")
private String model;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime time;
//@Excel(name = "网段")
private String network;
private String content;
//@Excel(name = "类型")
private String type;
private String[] types;
private String orderByField;
private String orderDirection;
public String getDeviceIp() { public String getDeviceIp() {
return deviceIp; return deviceIp;
} }
@ -18,11 +57,12 @@ public class Status {
public void setDeviceIp(String deviceIp) { public void setDeviceIp(String deviceIp) {
this.deviceIp = deviceIp; this.deviceIp = deviceIp;
} }
public LocalDateTime getStartTime() { public LocalDateTime getStartTime() {
return startTime; return startTime;
} }
public Status(long id, String deviceNo, String deviceName, String deviceStatus, String sectionId, LocalDateTime time, LocalDateTime startTime, String deviceIp, String successRate, String lostRate, String direction, String production, String model, String network, String content, String type,Integer pageNum, Integer pageSize) { public Status(long id, String deviceNo, String deviceName, String deviceStatus, String sectionId, LocalDateTime time, LocalDateTime startTime, String deviceIp, String successRate, String lostRate, String direction, String production, String model, String network, String content, String type, Integer pageNum, Integer pageSize) {
this.id = id; this.id = id;
this.deviceNo = deviceNo; this.deviceNo = deviceNo;
this.deviceName = deviceName; this.deviceName = deviceName;
@ -110,31 +150,6 @@ public class Status {
this.deviceStatus = deviceStatus; this.deviceStatus = deviceStatus;
} }
private long id;
@Excel(name = "设备桩号")
private String deviceNo;
@Excel(name = "设备类型")
private String deviceName;
@Excel(name = "状态")
private String deviceStatus;
//@Excel(name = "使用状态")
private Integer useState;
private Integer pageNum;
private Integer pageSize;
private Long deviceId;
private String sectionId;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss")
@Excel(name = "监测时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime time;
public String getSuccessRate() { public String getSuccessRate() {
return successRate; return successRate;
} }
@ -150,22 +165,6 @@ public class Status {
public void setLostRate(String lostRate) { public void setLostRate(String lostRate) {
this.lostRate = lostRate; this.lostRate = lostRate;
} }
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@Excel(name = "设备IP")
private String deviceIp;
private String successRate;
private String lostRate;
@Excel(name = "方向")
private String direction;
@Excel(name = "厂家")
private String production;
public String getDirection() { public String getDirection() {
return direction; return direction;
@ -215,10 +214,6 @@ public class Status {
this.deviceId = deviceId; this.deviceId = deviceId;
} }
// @Excel(name = "型号")
private String model;
public String getType() { public String getType() {
return type; return type;
} }
@ -227,20 +222,6 @@ public class Status {
this.type = type; this.type = type;
} }
//@Excel(name = "网段")
private String network;
private String content;
//@Excel(name = "类型")
private String type;
private String[] types;
private String orderByField;
private String orderDirection;
public Integer getUseState() { public Integer getUseState() {
return useState; return useState;
} }

40
zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java

@ -933,44 +933,52 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
for (Object object : jsonArray) { for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object; JSONObject jsonObject = (JSONObject) object;
Integer asOneRoad = jsonObject.getInteger("as_one_road"); Integer asOneRoad = jsonObject.getInteger("as_one_road");
double endPileNo = jsonObject.getDouble("end_pile_no"); if (jsonObject.getDouble("end_pile_no")!=null){
double endPileNo = jsonObject.getDouble("end_pile_no");
String endMark = formatNumber(endPileNo);
jsonObject.put("endMark", endMark);//结束桩号
}
double startPileNo = jsonObject.getDouble("start_pile_no"); double startPileNo = jsonObject.getDouble("start_pile_no");
String stakeMark = formatNumber(startPileNo); String stakeMark = formatNumber(startPileNo);
String endMark = formatNumber(endPileNo); jsonObject.put("stakeMark", stakeMark);//
jsonObject.put("stakeMark", stakeMark);//当前拥堵距离
jsonObject.put("endMark", endMark);//当前拥堵距离
//as_one_road //as_one_road
//是否为同一条路,1-是,0-否 //是否为同一条路,1-是,0-否
if (asOneRoad == UniversalEnum.ZERO.getNumber()) { if (asOneRoad == UniversalEnum.ZERO.getNumber()) {
String string = jsonObject.getString("list_link_info"); String string = jsonObject.getString("list_link_info");
JSONArray jsonlist = JSON.parseArray(string); JSONArray jsonlist = JSON.parseArray(string);
JSONObject o = (JSONObject) jsonlist.get(0); JSONObject o = (JSONObject) jsonlist.get(UniversalEnum.ZERO.getNumber());
String string1 = o.getString("firstPoint"); String string1 = o.getString("firstPoint");
String string2 = o.getString("lastPoint"); String string2 = o.getString("lastPoint");
String lngLats = o.getString("lngLats"); String lngLats = o.getString("lngLats");
String[] lngLatsString = lngLats.split(";"); String[] lngLatsString = lngLats.split(";");
double s = Double.parseDouble(lngLatsString[0].split(",")[0]); double s = Double.parseDouble(lngLatsString[UniversalEnum.ZERO.getNumber()].split(",")[UniversalEnum.ZERO.getNumber()]);
double s2 = Double.parseDouble(lngLatsString[0].split(",")[1]); double s2 = Double.parseDouble(lngLatsString[UniversalEnum.ZERO.getNumber()].split(",")[UniversalEnum.ONE.getNumber()]);
double s3 = Double.parseDouble(lngLatsString[lngLatsString.length - 1].split(",")[0]); double s3 = Double.parseDouble(lngLatsString[lngLatsString.length - UniversalEnum.ONE.getNumber()].split(",")[UniversalEnum.ZERO.getNumber()]);
double s4 = Double.parseDouble(lngLatsString[lngLatsString.length - 1].split(",")[1]); double s4 = Double.parseDouble(lngLatsString[lngLatsString.length - UniversalEnum.ONE.getNumber()].split(",")[UniversalEnum.ONE.getNumber()]);
double distanceM = calculateDistance(s2, s, s4, s3) * 1000; double distanceM = calculateDistance(s2, s, s4, s3);
// System.out.printf("最大距离为: %.2f 米%n", distanceM); // System.out.printf("最大距离为: %.2f 米%n", distanceM);
jsonObject.put("max_jam_dist", distanceM);//最大拥堵距离 jsonObject.put("max_jam_dist", distanceM);//最大拥堵距离
double endMake = startPileNo +Double.parseDouble(String.format("%.3f", distanceM));
String endmark = formatNumber(endMake);
jsonObject.put("endMark", endmark);//结束桩号
String[] split = string1.split(","); String[] split = string1.split(",");
double firstLon = Double.parseDouble(split[0]); double firstLon = Double.parseDouble(split[UniversalEnum.ZERO.getNumber()]);
double firstLat = Double.parseDouble(split[1]); double firstLat = Double.parseDouble(split[UniversalEnum.ONE.getNumber()]);
String[] split2 = string2.split(","); String[] split2 = string2.split(",");
double lastLon = Double.parseDouble(split2[0]); double lastLon = Double.parseDouble(split2[UniversalEnum.ZERO.getNumber()]);
double lastLat = Double.parseDouble(split2[1]); double lastLat = Double.parseDouble(split2[UniversalEnum.ONE.getNumber()]);
//double firstLat = 35.38524527319016; //double firstLat = 35.38524527319016;
// double firstLon = 118.39808642864227; // double firstLon = 118.39808642864227;
//double lastLat = 35.386351346969604; //double lastLat = 35.386351346969604;
// double lastLon = 118.4038907289505; // double lastLon = 118.4038907289505;
double distanceKm = calculateDistance(firstLat, firstLon, lastLat, lastLon); double distanceKm = calculateDistance(firstLat, firstLon, lastLat, lastLon);
double distanceMeters = distanceKm * 1000; // 将距离转换为米 double distanceMeters = distanceKm * UniversalEnum.THOUSAND.getNumber(); // 将距离转换为米
//System.out.printf("两点之间的距离为: %.2f 米%n", distanceMeters); //System.out.printf("两点之间的距离为: %.2f 米%n", distanceMeters);
jsonObject.put("jam_dist", distanceMeters);//当前拥堵距离 jsonObject.put("jam_dist", distanceMeters);//当前拥堵距离

15
zc-business/src/main/resources/mapper/business/StatusMapper.xml

@ -187,10 +187,19 @@
<if test="status.useState != null and status.useState != 0"> <if test="status.useState != null and status.useState != 0">
AND d.use_state = #{status.useState} AND d.use_state = #{status.useState}
</if> </if>
<if test="status.deviceName != null and status.deviceName != ''">
AND s.device_name like concat('%', #{status.deviceName}, '%')
</if>
<if test="status.direction != null">
AND d.direction = #{status.direction}
</if>
</where> </where>
<if test="status.orderByField != null and status.orderDirection != null"> <if test="status.orderByField != null and status.orderDirection != null">
ORDER BY ${status.orderByField} ${status.orderDirection} ORDER BY ${status.orderByField} ${status.orderDirection}
</if> </if>
<!-- <if test="status.pageNum != null and status.pageSize != null">-->
<!-- LIMIT #{status.pageSize} OFFSET #{status.pageNum}-->
<!-- </if>-->
</select> </select>
@ -223,6 +232,12 @@
<if test="status.useState != null and status.useState != 0"> <if test="status.useState != null and status.useState != 0">
AND d.use_state = #{status.useState} AND d.use_state = #{status.useState}
</if> </if>
<if test="status.deviceName != null and status.deviceName != ''">
AND s.device_name like concat('%', #{status.deviceName}, '%')
</if>
<if test="status.direction != null">
AND d.direction = #{status.direction}
</if>
GROUP BY GROUP BY
d.child_type, d.child_type,
d.device_type, d.device_type,

Loading…
Cancel
Save