提交 05a5010f 作者: 方治民

合并分支 'dev_fzm' 到 'merge_dev'

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

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