提交 33192def 作者: 涂茂林

feat:区域信息实时查询

上级 6411c95b
......@@ -51,6 +51,9 @@ public class District implements Serializable {
@Comment("区域信息名称")
private String name;
@Comment("地图id")
private Integer mapId;
@Comment("风险等级")
private String riskGrade;
......
......@@ -29,20 +29,20 @@ public class HistoryRouteConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = 2386493816691457426L;
@ApiModelProperty(value = "地图id", example = "1", required = true)
@ApiModelProperty(value = "地图id", example = "10019", required = true)
@NotNull(message = "请选择地图")
private Long mapId;
@ApiModelProperty(value = "用户id", example = "1", required = true)
@ApiModelProperty(value = "用户id", example = "1522770547178475520", required = true)
@NotNull(message = "请选择员工")
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")
@NotNull(message = "请选择开始时间")
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")
@NotNull(message = "请选择结束时间")
private LocalDateTime endTime;
......
......@@ -2,12 +2,14 @@
package com.yiring.app.param.district;
import com.yiring.app.domain.district.District;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.*;
import org.hibernate.validator.constraints.Length;
import org.locationtech.jts.geom.Geometry;
......@@ -33,9 +35,14 @@ public class DistrictAddParam implements Serializable {
@Length(max = 10, message = "区域名称不能超过10个字符")
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 = "风险等级不能为空")
@Length(min = 6, max = 7, message = "请选择正确的颜色")
@Pattern(regexp = RegEx.COLOUR_RGB, message = "颜色格式不正确")
private String riskGrade;
@ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true)
......@@ -54,6 +61,7 @@ public class DistrictAddParam implements Serializable {
return District
.builder()
.name(name)
.mapId(mapId)
.deleted(false)
.riskGrade(riskGrade)
.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 @@
package com.yiring.app.param.district;
import com.yiring.app.domain.district.District;
import com.yiring.common.constant.RegEx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
......@@ -38,8 +40,12 @@ public class DistrictModifyParam implements Serializable {
@Length(max = 10, message = "区域名称不能超过10个字符")
private String name;
@ApiModelProperty(value = "地图id", example = "1")
private Integer mapId;
@ApiModelProperty(value = "风险等级", example = "1", required = true)
@Length(min = 6, max = 7, message = "请选择正确的颜色")
@Pattern(regexp = RegEx.COLOUR_RGB, message = "颜色格式不正确")
private String riskGrade;
@ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true)
......
......@@ -2,7 +2,9 @@
package com.yiring.app.service.district;
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.vo.district.DistrictUserVo;
import com.yiring.app.vo.district.DistrictVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
......@@ -42,4 +44,11 @@ public interface DistrictService {
* @return 区域信息
*/
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;
import com.yiring.app.domain.district.District;
import com.yiring.app.domain.district.DistrictRepository;
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.service.district.DistrictService;
import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.district.DistrictUserVo;
import com.yiring.app.vo.district.DistrictVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.util.Commons;
import com.yiring.common.vo.PageVo;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -90,4 +96,20 @@ public class DistrictServiceImpl implements DistrictService {
PageVo<DistrictVo> pageVo = PageVo.build(voList, voList.size());
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;
* @version 1.0
* @date 2022/4/27 9:10
*/
@ApiModel("DistrictVo")
@ApiModel("区域信息")
@Data
@Builder
@NoArgsConstructor
......
......@@ -2,8 +2,10 @@
package com.yiring.app.web.district;
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.service.district.DistrictService;
import com.yiring.app.vo.district.DistrictUserVo;
import com.yiring.app.vo.district.DistrictVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
......@@ -60,4 +62,10 @@ public class DistrictController {
}
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 {
* 报警规则的时间格式
*/
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论