提交 33192def 作者: 涂茂林

feat:区域信息实时查询

上级 6411c95b
...@@ -51,6 +51,9 @@ public class District implements Serializable { ...@@ -51,6 +51,9 @@ public class District implements Serializable {
@Comment("区域信息名称") @Comment("区域信息名称")
private String name; private String name;
@Comment("地图id")
private Integer mapId;
@Comment("风险等级") @Comment("风险等级")
private String riskGrade; private String riskGrade;
......
...@@ -29,20 +29,20 @@ public class HistoryRouteConditionParam implements Serializable { ...@@ -29,20 +29,20 @@ public class HistoryRouteConditionParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 2386493816691457426L; private static final long serialVersionUID = 2386493816691457426L;
@ApiModelProperty(value = "地图id", example = "1", required = true) @ApiModelProperty(value = "地图id", example = "10019", required = true)
@NotNull(message = "请选择地图") @NotNull(message = "请选择地图")
private Long mapId; private Long mapId;
@ApiModelProperty(value = "用户id", example = "1", required = true) @ApiModelProperty(value = "用户id", example = "1522770547178475520", required = true)
@NotNull(message = "请选择员工") @NotNull(message = "请选择员工")
private Long userId; private Long userId;
@ApiModelProperty(value = "开始时间", example = "2022-05-06 14:00:00", required = true) @ApiModelProperty(value = "开始时间", example = "2022-05-01 14:00:00", required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "请选择开始时间") @NotNull(message = "请选择开始时间")
private LocalDateTime beginTime; private LocalDateTime beginTime;
@ApiModelProperty(value = "结束时间", example = "2022-05-06 14:05:00", required = true) @ApiModelProperty(value = "结束时间", example = "2022-05-20 14:05:00", required = true)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull(message = "请选择结束时间") @NotNull(message = "请选择结束时间")
private LocalDateTime endTime; private LocalDateTime endTime;
......
...@@ -2,12 +2,14 @@ ...@@ -2,12 +2,14 @@
package com.yiring.app.param.district; package com.yiring.app.param.district;
import com.yiring.app.domain.district.District; import com.yiring.app.domain.district.District;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.*; import lombok.*;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
...@@ -33,9 +35,14 @@ public class DistrictAddParam implements Serializable { ...@@ -33,9 +35,14 @@ public class DistrictAddParam implements Serializable {
@Length(max = 10, message = "区域名称不能超过10个字符") @Length(max = 10, message = "区域名称不能超过10个字符")
private String name; private String name;
@ApiModelProperty(value = "风险等级", example = "1", required = true) @ApiModelProperty(value = "地图id", example = "1", required = true)
@NotNull(message = "地图id不能为空")
private Integer mapId;
@ApiModelProperty(value = "风险等级", example = "#FF0000", required = true)
@NotEmpty(message = "风险等级不能为空") @NotEmpty(message = "风险等级不能为空")
@Length(min = 6, max = 7, message = "请选择正确的颜色") @Length(min = 6, max = 7, message = "请选择正确的颜色")
@Pattern(regexp = RegEx.COLOUR_RGB, message = "颜色格式不正确")
private String riskGrade; private String riskGrade;
@ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true) @ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true)
...@@ -54,6 +61,7 @@ public class DistrictAddParam implements Serializable { ...@@ -54,6 +61,7 @@ public class DistrictAddParam implements Serializable {
return District return District
.builder() .builder()
.name(name) .name(name)
.mapId(mapId)
.deleted(false) .deleted(false)
.riskGrade(riskGrade) .riskGrade(riskGrade)
.debouncingDuration(debouncingDuration) .debouncingDuration(debouncingDuration)
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.district;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/19 15:57
*/
@ApiModel("区域查询条件")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DistrictConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = 5749083087928117992L;
@ApiModelProperty(value = "地图id", example = "1")
private Integer mapId;
}
...@@ -2,11 +2,13 @@ ...@@ -2,11 +2,13 @@
package com.yiring.app.param.district; package com.yiring.app.param.district;
import com.yiring.app.domain.district.District; import com.yiring.app.domain.district.District;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
...@@ -38,8 +40,12 @@ public class DistrictModifyParam implements Serializable { ...@@ -38,8 +40,12 @@ public class DistrictModifyParam implements Serializable {
@Length(max = 10, message = "区域名称不能超过10个字符") @Length(max = 10, message = "区域名称不能超过10个字符")
private String name; private String name;
@ApiModelProperty(value = "地图id", example = "1")
private Integer mapId;
@ApiModelProperty(value = "风险等级", example = "1", required = true) @ApiModelProperty(value = "风险等级", example = "1", required = true)
@Length(min = 6, max = 7, message = "请选择正确的颜色") @Length(min = 6, max = 7, message = "请选择正确的颜色")
@Pattern(regexp = RegEx.COLOUR_RGB, message = "颜色格式不正确")
private String riskGrade; private String riskGrade;
@ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true) @ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true)
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
package com.yiring.app.service.district; package com.yiring.app.service.district;
import com.yiring.app.param.district.DistrictAddParam; import com.yiring.app.param.district.DistrictAddParam;
import com.yiring.app.param.district.DistrictConditionParam;
import com.yiring.app.param.district.DistrictModifyParam; import com.yiring.app.param.district.DistrictModifyParam;
import com.yiring.app.vo.district.DistrictUserVo;
import com.yiring.app.vo.district.DistrictVo; import com.yiring.app.vo.district.DistrictVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
...@@ -42,4 +44,11 @@ public interface DistrictService { ...@@ -42,4 +44,11 @@ public interface DistrictService {
* @return 区域信息 * @return 区域信息
*/ */
Result<PageVo<DistrictVo>> findByNameLike(String name); Result<PageVo<DistrictVo>> findByNameLike(String name);
/**
* 查询实时围栏列表信息
* @param param 条件
* @return 区域列表
*/
Result<PageVo<DistrictUserVo>> findList(DistrictConditionParam param);
} }
...@@ -4,19 +4,25 @@ package com.yiring.app.service.district.impl; ...@@ -4,19 +4,25 @@ package com.yiring.app.service.district.impl;
import com.yiring.app.domain.district.District; import com.yiring.app.domain.district.District;
import com.yiring.app.domain.district.DistrictRepository; import com.yiring.app.domain.district.DistrictRepository;
import com.yiring.app.param.district.DistrictAddParam; import com.yiring.app.param.district.DistrictAddParam;
import com.yiring.app.param.district.DistrictConditionParam;
import com.yiring.app.param.district.DistrictModifyParam; import com.yiring.app.param.district.DistrictModifyParam;
import com.yiring.app.service.district.DistrictService; import com.yiring.app.service.district.DistrictService;
import com.yiring.app.util.JpaUtil; import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.district.DistrictUserVo;
import com.yiring.app.vo.district.DistrictVo; import com.yiring.app.vo.district.DistrictVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.util.Commons; import com.yiring.common.util.Commons;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -90,4 +96,20 @@ public class DistrictServiceImpl implements DistrictService { ...@@ -90,4 +96,20 @@ public class DistrictServiceImpl implements DistrictService {
PageVo<DistrictVo> pageVo = PageVo.build(voList, voList.size()); PageVo<DistrictVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public Result<PageVo<DistrictUserVo>> findList(DistrictConditionParam param) {
Specification<District> specification = (root, query, criteriaBuilder) -> {
ArrayList<Predicate> list = new ArrayList<>();
if (param.getMapId() != null) {
list.add(criteriaBuilder.equal(root.get(District.Fields.mapId), param.getMapId()));
}
Predicate[] array = list.toArray(new Predicate[0]);
return criteriaBuilder.and(array);
};
List<District> districtList = districtRepository.findAll(specification);
List<DistrictUserVo> voList = districtList.stream().map(DistrictUserVo::transform).collect(Collectors.toList());
PageVo<DistrictUserVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.district;
import com.yiring.app.domain.district.District;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/19 16:02
*/
@ApiModel("区域信息和区域内员工数量")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class DistrictUserVo implements Serializable {
@Serial
private static final long serialVersionUID = 3900485837172743182L;
@ApiModelProperty(value = "区域名称", example = "生产区域")
private String name;
@ApiModelProperty(value = "风险等级(区域颜色)", example = "f##0000")
private String riskGrade;
@ApiModelProperty(value = "空间信息", dataType = "java.lang.String")
private Geometry geometry;
@ApiModelProperty(value = "地图id", example = "1")
private Integer mapId;
@ApiModelProperty(value = "此区域的员工数量", example = "20")
private Integer userNum;
public static DistrictUserVo transform(District district) {
return DistrictUserVo
.builder()
.name(district.getName())
.riskGrade(district.getRiskGrade())
.geometry(district.getGeometry())
.mapId(builder().mapId)
.userNum(district.getTags().size())
.build();
}
}
...@@ -19,7 +19,7 @@ import lombok.NoArgsConstructor; ...@@ -19,7 +19,7 @@ import lombok.NoArgsConstructor;
* @version 1.0 * @version 1.0
* @date 2022/4/27 9:10 * @date 2022/4/27 9:10
*/ */
@ApiModel("DistrictVo") @ApiModel("区域信息")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -2,8 +2,10 @@ ...@@ -2,8 +2,10 @@
package com.yiring.app.web.district; package com.yiring.app.web.district;
import com.yiring.app.param.district.DistrictAddParam; import com.yiring.app.param.district.DistrictAddParam;
import com.yiring.app.param.district.DistrictConditionParam;
import com.yiring.app.param.district.DistrictModifyParam; import com.yiring.app.param.district.DistrictModifyParam;
import com.yiring.app.service.district.DistrictService; import com.yiring.app.service.district.DistrictService;
import com.yiring.app.vo.district.DistrictUserVo;
import com.yiring.app.vo.district.DistrictVo; import com.yiring.app.vo.district.DistrictVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
...@@ -60,4 +62,10 @@ public class DistrictController { ...@@ -60,4 +62,10 @@ public class DistrictController {
} }
return districtService.findByNameLike(name); return districtService.findByNameLike(name);
} }
@ApiOperation(value = "查询实时围栏列表")
@GetMapping("/findList")
public Result<PageVo<DistrictUserVo>> findList(@Valid DistrictConditionParam param) {
return districtService.findList(param);
}
} }
...@@ -27,4 +27,6 @@ public class RegEx { ...@@ -27,4 +27,6 @@ public class RegEx {
* 报警规则的时间格式 * 报警规则的时间格式
*/ */
public static final String TIME_RULE = "^星期[一二三四五六日]\\ (2[0-4]|[0-1]\\d)(\\:[0-5]\\d){2}$"; public static final String TIME_RULE = "^星期[一二三四五六日]\\ (2[0-4]|[0-1]\\d)(\\:[0-5]\\d){2}$";
public static final String COLOUR_RGB = "^#(\\d|[A-F a-f]){6}$";
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论