提交 05a5010f 作者: 方治民

合并分支 'dev_fzm' 到 'merge_dev'

feat: 新增实时统计区域内标签、接口文档使用不当问题修复

查看合并请求 chemical-kesai/kshg-api!25
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.district;
import com.yiring.app.domain.location.LocationTag;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldNameConstants;
......@@ -75,4 +78,10 @@ public class District implements Serializable {
@Comment(value = "是否删除")
@Column(nullable = false)
Boolean deleted;
@ToString.Exclude
@Comment("区域中的标签集合")
@Builder.Default
@ManyToMany(fetch = FetchType.LAZY)
Set<LocationTag> tags = new HashSet<>(0);
}
......@@ -223,13 +223,7 @@ public class PositionMessageServiceImpl implements PositionMessageService {
turnovers.add(turnover);
// 更新围栏内的标签
Set<LocationTag> tags = fence.getTags();
if (Boolean.TRUE.equals(isEnter)) {
tags.add(id.getTag());
} else {
tags.remove(id.getTag());
}
fence.setTags(tags);
fence.setTags(resetInTags(tag, isEnter, fence.getTags()));
// 有人员进出围栏,需要检查是否触发围栏报警规则
// TODO: 通过定时任务调度异步实现,提高定位消息消费能力
// 1. 判断是否触发围栏报警规则,触发则记录报警记录,同时记录报警记录触发所需推送的消息
......@@ -276,6 +270,9 @@ public class PositionMessageServiceImpl implements PositionMessageService {
.isLatest(true)
.build();
turnovers.add(turnover);
// 更新区域内的标签
district.setTags(resetInTags(tag, isEnter, district.getTags()));
}
}
}
......@@ -291,8 +288,10 @@ public class PositionMessageServiceImpl implements PositionMessageService {
tag.setSilent(locationLog.getSilent());
locationTagRepository.save(tag);
// 更新围栏记录的标签数据
// 更新围栏的标签数据
locationFenceRepository.saveAll(fences);
// 更新区域内的标签数据
districtRepository.saveAll(districts);
// 写入围栏/区域进出记录
locationTurnoverRepository.saveAll(turnovers);
......@@ -396,6 +395,15 @@ public class PositionMessageServiceImpl implements PositionMessageService {
}
}
public Set<LocationTag> resetInTags(LocationTag tag, Boolean enter, Set<LocationTag> tags) {
if (Boolean.TRUE.equals(enter)) {
tags.add(tag);
} else {
tags.remove(tag);
}
return tags;
}
/**
* 处理低电量报警消息
* @param data 消息内容
......
......@@ -14,13 +14,14 @@ import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Point;
/**
* 历史轨迹信息VO
* @author tml
* @version 1.0
* @date 2022/5/6 14:18
*/
@Data
@Builder
@ApiModel("历史轨迹信息VO")
@ApiModel("HistoryRouteVo")
@NoArgsConstructor
@AllArgsConstructor
public class HistoryRouteVo implements Serializable {
......
......@@ -20,11 +20,12 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 围栏信息VO
* @author tml
* @version 1.0
* @date 2022/4/28 11:07
*/
@ApiModel("围栏信息VO")
@ApiModel("LocationFenceVo")
@Data
@Builder
@AllArgsConstructor
......
......@@ -15,6 +15,7 @@ import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* 事故点VO
* @author tml
* @version 1.0
* @date 2022/5/7 11:25
......@@ -23,7 +24,7 @@ import org.locationtech.jts.geom.Geometry;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("事故点VO")
@ApiModel("AccidentSpotVo")
public class AccidentSpotVo implements Serializable {
@Serial
......
......@@ -19,6 +19,7 @@ import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
......@@ -28,6 +29,7 @@ import javax.validation.Valid;
import org.locationtech.jts.geom.Geometry;
import org.springframework.data.domain.Sort;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
......@@ -35,8 +37,10 @@ import org.springframework.web.bind.annotation.*;
* @version 1.0
* @date 2022/5/10 14:08
*/
@Validated
@SuppressWarnings({ "deprecation" })
@Api(tags = "演练计划", description = "RehearsalPlan")
@RestController
@Api(tags = "RehearsalPlan(演练计划)")
@RequestMapping("/rehearsal/plan")
public class RehearsalPlanController {
......@@ -123,11 +127,11 @@ public class RehearsalPlanController {
}
@GetMapping("/get")
public List<LocationTag> get() {
public Result<ArrayList<LocationTag>> get() {
Optional<AccidentSpot> optional = accidentSpotRepository.findById(1524292027951353856L);
Geometry geometry = optional.get().getGeometry();
List<LocationTag> inArea = locationTagRepository.findInArea(geometry);
System.out.println(inArea);
return inArea;
return Result.ok(new ArrayList<>(inArea));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论