提交 52704c34 作者: 涂茂林

合并分支 'merge_dev' 到 'dev_tml'

Merge dev

查看合并请求 chemical-kesai/kshg-api!29
...@@ -36,7 +36,7 @@ dependencies { ...@@ -36,7 +36,7 @@ dependencies {
// Optional: Doc // Optional: Doc
implementation project(":basic-common:doc") implementation project(":basic-common:doc")
implementation "io.swagger:swagger-annotations:${swaggerAnnotationsVersion}" implementation "com.github.xiaoymin:knife4j-spring-boot-starter:${knife4jVersion}"
// Optional: Auth // Optional: Auth
implementation project(":basic-auth") implementation project(":basic-auth")
...@@ -78,4 +78,6 @@ dependencies { ...@@ -78,4 +78,6 @@ dependencies {
// xxl-job // xxl-job
implementation "com.xuxueli:xxl-job-core:${xxlJobVersion}" implementation "com.xuxueli:xxl-job-core:${xxlJobVersion}"
// minio
implementation "io.minio:minio:${minioVersion}"
} }
/* (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);
} }
...@@ -6,14 +6,15 @@ import com.yiring.auth.domain.user.User; ...@@ -6,14 +6,15 @@ import com.yiring.auth.domain.user.User;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import javax.persistence.Entity; import java.math.BigDecimal;
import javax.persistence.JoinColumn; import java.util.HashSet;
import javax.persistence.ManyToOne; import java.util.Set;
import javax.persistence.Table; import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.locationtech.jts.geom.Point;
/** /**
* *
...@@ -32,7 +33,7 @@ import org.hibernate.annotations.Comment; ...@@ -32,7 +33,7 @@ import org.hibernate.annotations.Comment;
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
@Entity @Entity
@Table(name = "BS_KEY_ALARM") @Table(name = "BS_KEY_ALARM")
@Comment("按键报警规则") @Comment("按键报警")
public class KeyAlarm extends BasicEntity implements Serializable { public class KeyAlarm extends BasicEntity implements Serializable {
@Serial @Serial
...@@ -47,6 +48,26 @@ public class KeyAlarm extends BasicEntity implements Serializable { ...@@ -47,6 +48,26 @@ public class KeyAlarm extends BasicEntity implements Serializable {
@Comment("负责人") @Comment("负责人")
User leader; User leader;
@Comment("标签编号")
String code;
@Comment("x")
BigDecimal x;
@Comment("y")
BigDecimal y;
@Comment("z")
BigDecimal z;
@Comment("坐标点信息")
Point point;
@Comment("报警状态") @Comment("报警状态")
Boolean enable; Boolean enable;
@Builder.Default
@OneToMany(mappedBy = "keyAlarm")
@Comment("推送消息记录")
Set<KeyAlarmLog> rules = new HashSet<>(0);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.key;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yiring.auth.domain.user.User;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment;
/**
* 报警规则推送记录
*
* @author LJ-2204
* @date 2022/5/12
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_KEY_ALARM_LOG")
@Comment("报警规则推送记录")
public class KeyAlarmLog extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 5837910859908195485L;
@ManyToOne
@JoinColumn(name = "alarm_id")
@JsonIgnore
@Comment("按键报警")
KeyAlarm keyAlarm;
@Comment("通知方式")
String types;
@Comment("接收状态")
Boolean status;
@ManyToOne
@JoinColumn(name = "leader_id")
@JsonIgnore
@Comment("负责人")
User user;
}
...@@ -13,5 +13,5 @@ import org.springframework.stereotype.Repository; ...@@ -13,5 +13,5 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public interface KeyAlarmRulesRepository public interface KeyAlarmLogRepository
extends JpaRepository<KeyAlarmRules, Serializable>, JpaSpecificationExecutor<KeyAlarmRules> {} extends JpaRepository<KeyAlarmLog, Serializable>, JpaSpecificationExecutor<KeyAlarmLog> {}
...@@ -33,13 +33,13 @@ import org.hibernate.annotations.Comment; ...@@ -33,13 +33,13 @@ import org.hibernate.annotations.Comment;
@Entity @Entity
@Table(name = "BS_KEY_ALARM_RULES") @Table(name = "BS_KEY_ALARM_RULES")
@Comment("按键报警规则") @Comment("按键报警规则")
public class KeyAlarmRules extends BasicEntity implements Serializable { public class KeyAlarmRule extends BasicEntity implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -302167871277966250L; private static final long serialVersionUID = -302167871277966250L;
@Comment("所属部门") @Comment("所属部门")
@ManyToOne @OneToOne
@JsonIgnore @JsonIgnore
@JoinColumn(name = "department_id") @JoinColumn(name = "department_id")
Department department; Department department;
...@@ -47,12 +47,7 @@ public class KeyAlarmRules extends BasicEntity implements Serializable { ...@@ -47,12 +47,7 @@ public class KeyAlarmRules extends BasicEntity implements Serializable {
@JsonIgnore @JsonIgnore
@Builder.Default @Builder.Default
@Comment("用户集合") @Comment("用户集合")
@ManyToMany(fetch = FetchType.EAGER) @OneToMany
@JoinTable(
name = "BS_KEY_ALARM_RULES_USERS",
joinColumns = { @JoinColumn(name = "key_id") },
inverseJoinColumns = { @JoinColumn(name = "user_id") }
)
Set<User> users = new HashSet<>(0); Set<User> users = new HashSet<>(0);
@Comment("推送类型") @Comment("推送类型")
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.key;
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
*
* @author LJ-2204
* @date 2022/5/6
*/
@Repository
public interface KeyAlarmRuleRepository
extends JpaRepository<KeyAlarmRule, Serializable>, JpaSpecificationExecutor<KeyAlarmRule> {}
...@@ -47,7 +47,7 @@ public class LocationAlarmRule extends BasicEntity implements Serializable { ...@@ -47,7 +47,7 @@ public class LocationAlarmRule extends BasicEntity implements Serializable {
private LocationFence locationFence; private LocationFence locationFence;
@Comment("接收人集合") @Comment("接收人集合")
@ManyToMany @OneToMany
@ToString.Exclude @ToString.Exclude
private Set<User> users; private Set<User> users;
......
...@@ -36,14 +36,18 @@ public interface LocationFenceRepository ...@@ -36,14 +36,18 @@ public interface LocationFenceRepository
* @param name 围栏名称 * @param name 围栏名称
* @return 围栏信息 * @return 围栏信息
*/ */
@Query("SELECT f FROM LocationFence f WHERE name like %?1% AND deleted = false") @Query("SELECT f FROM LocationFence f WHERE f.name like %?1% AND f.deleted = false")
List<LocationFence> findLikeName(String name); List<LocationFence> findLikeName(String name);
/** /**
* 查询空间信息在围栏内的围栏信息 * 查询空间信息在围栏内的围栏信息
* @param areaId 地图区域 id
* @param geometry 空间信息 * @param geometry 空间信息
* @return 围栏信息 * @return 围栏信息
*/ */
@Query(value = "select f.* from bs_location_fence f where st_contains(f.geometry, :geometry)", nativeQuery = true) @Query(
List<LocationFence> findByGeometryContains(Geometry geometry); value = "select f.* from bs_location_fence f where map_id = :areaId and st_contains(f.geometry, :geometry)",
nativeQuery = true
)
List<LocationFence> findByGeometryContains(Long areaId, Geometry geometry);
} }
...@@ -98,6 +98,9 @@ public class LocationLog implements Serializable { ...@@ -98,6 +98,9 @@ public class LocationLog implements Serializable {
@Comment("电量单位") @Comment("电量单位")
String voltUnit; String voltUnit;
@Comment("是否在厂区外")
Boolean out;
@Comment("原始数据") @Comment("原始数据")
@Type(type = "jsonb") @Type(type = "jsonb")
@Column(columnDefinition = "jsonb") @Column(columnDefinition = "jsonb")
......
...@@ -6,13 +6,11 @@ import com.yiring.common.annotation.FieldMapping; ...@@ -6,13 +6,11 @@ import com.yiring.common.annotation.FieldMapping;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Objects;
import javax.persistence.*; import javax.persistence.*;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants; import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import org.hibernate.Hibernate;
import org.hibernate.annotations.Comment; import org.hibernate.annotations.Comment;
import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Point;
...@@ -102,10 +100,13 @@ public class LocationTag extends BasicEntity implements Serializable { ...@@ -102,10 +100,13 @@ public class LocationTag extends BasicEntity implements Serializable {
@Comment("类型(1:内部/2:访客)") @Comment("类型(1:内部/2:访客)")
Integer category; Integer category;
@Comment("最定位坐标") @Comment("最定位坐标")
@Column(columnDefinition = "geometry(Point,4326)") @Column(columnDefinition = "geometry(Point,4326)")
Point point; Point point;
@Comment("是否在厂外")
Boolean out;
@SuppressWarnings({ "unused" }) @SuppressWarnings({ "unused" })
public enum Type { public enum Type {
BTT01("蓝牙人员定位卡"), BTT01("蓝牙人员定位卡"),
...@@ -121,17 +122,4 @@ public class LocationTag extends BasicEntity implements Serializable { ...@@ -121,17 +122,4 @@ public class LocationTag extends BasicEntity implements Serializable {
return this.text; return this.text;
} }
} }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
LocationTag that = (LocationTag) o;
return getId() != null && Objects.equals(getId(), that.getId());
}
@Override
public int hashCode() {
return getClass().hashCode();
}
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.yiring.app.domain.location; package com.yiring.app.domain.location;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType; import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import com.yiring.auth.domain.user.User;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
...@@ -52,6 +53,10 @@ public class LocationTurnover extends BasicEntity implements Serializable { ...@@ -52,6 +53,10 @@ public class LocationTurnover extends BasicEntity implements Serializable {
@Comment("定位时间") @Comment("定位时间")
LocalDateTime time; LocalDateTime time;
@Comment("用户")
@ManyToOne(fetch = FetchType.LAZY)
User user;
@Comment("进入") @Comment("进入")
Boolean enter; Boolean enter;
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.key;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.domain.key.KeyAlarm;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.FieldDefaults;
/**
* 部门信息控制器
*
* @author LJ-2204
* @date 2022/5/11
*/
@ExcelModel
@Data
@Builder
@FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmExportExcel implements Serializable {
@Serial
private static final long serialVersionUID = -3703974403333845088L;
@ExcelColumn(title = "地图位置")
Long areaId;
@ExcelColumn(title = "报警人员")
String realName;
@ExcelColumn(title = "工号")
String uuid;
@ExcelColumn(title = "报警时间")
LocalDateTime createTime;
@ExcelColumn(title = "结束时间")
LocalDateTime endTime;
@ExcelColumn(title = "报警类型")
String type;
@ExcelColumn(title = "报警接收人")
String receiver;
@ExcelColumn(title = "报警状态")
Boolean enable;
public static KeyAlarmExportExcel transform(KeyAlarm keyAlarm) {
return KeyAlarmExportExcel
.builder()
.areaId(keyAlarm.getAreaId())
.createTime(keyAlarm.getCreateTime())
.endTime(keyAlarm.getUpdateTime())
.type("按键报警")
.enable(keyAlarm.getEnable())
.build();
}
}
...@@ -3,7 +3,7 @@ package com.yiring.app.excel.key; ...@@ -3,7 +3,7 @@ package com.yiring.app.excel.key;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn; import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.github.liaochong.myexcel.core.annotation.ExcelModel; import com.github.liaochong.myexcel.core.annotation.ExcelModel;
import com.yiring.app.domain.key.KeyAlarmRules; import com.yiring.app.domain.key.KeyAlarmRule;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
...@@ -21,7 +21,7 @@ import lombok.experimental.FieldDefaults; ...@@ -21,7 +21,7 @@ import lombok.experimental.FieldDefaults;
@Data @Data
@Builder @Builder
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmRulesExportExcel implements Serializable { public class KeyAlarmRuleExportExcel implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -800228727313291675L; private static final long serialVersionUID = -800228727313291675L;
...@@ -35,8 +35,8 @@ public class KeyAlarmRulesExportExcel implements Serializable { ...@@ -35,8 +35,8 @@ public class KeyAlarmRulesExportExcel implements Serializable {
@ExcelColumn(title = "通知类型") @ExcelColumn(title = "通知类型")
String types; String types;
public static KeyAlarmRulesExportExcel transform(KeyAlarmRules keyAlarmRules) { public static KeyAlarmRuleExportExcel transform(KeyAlarmRule keyAlarmRule) {
Set<User> users = keyAlarmRules.getUsers(); Set<User> users = keyAlarmRule.getUsers();
StringBuilder userNames = new StringBuilder(); StringBuilder userNames = new StringBuilder();
for (User user : users) { for (User user : users) {
userNames.append(user.getRealName()); userNames.append(user.getRealName());
...@@ -44,11 +44,11 @@ public class KeyAlarmRulesExportExcel implements Serializable { ...@@ -44,11 +44,11 @@ public class KeyAlarmRulesExportExcel implements Serializable {
} }
String substring = userNames.substring(0, userNames.length() - 1); String substring = userNames.substring(0, userNames.length() - 1);
return KeyAlarmRulesExportExcel return KeyAlarmRuleExportExcel
.builder() .builder()
.deptName(keyAlarmRules.getDepartment().getName()) .deptName(keyAlarmRule.getDepartment().getName())
.userNames(substring) .userNames(substring)
.types(keyAlarmRules.getTypes()) .types(keyAlarmRule.getTypes())
.build(); .build();
} }
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.user; package com.yiring.app.excel.user;
import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn; import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import java.io.Serial; import java.io.Serial;
...@@ -49,10 +50,6 @@ public class UserImportExcel implements Serializable { ...@@ -49,10 +50,6 @@ public class UserImportExcel implements Serializable {
@ExcelColumn(title = "职位名称") @ExcelColumn(title = "职位名称")
String postName; String postName;
// 标签号
@ExcelColumn(title = "标签编号")
String code;
// 性别 // 性别
@ExcelColumn(title = "性别") @ExcelColumn(title = "性别")
Boolean gender; Boolean gender;
...@@ -66,7 +63,7 @@ public class UserImportExcel implements Serializable { ...@@ -66,7 +63,7 @@ public class UserImportExcel implements Serializable {
.builder() .builder()
.realName(userImportExcel.getRealName()) .realName(userImportExcel.getRealName())
.uuid(userImportExcel.getUuid()) .uuid(userImportExcel.getUuid())
.type(User.Type.valueOf(userImportExcel.getType())) .type(StrUtil.equals(userImportExcel.getType(), "员工") ? User.Type.EMPLOYEES : User.Type.GUEST)
.mobile(userImportExcel.getMobile()) .mobile(userImportExcel.getMobile())
.gender(userImportExcel.getGender()) .gender(userImportExcel.getGender())
.isSpecial(userImportExcel.getIsSpecial()) .isSpecial(userImportExcel.getIsSpecial())
......
...@@ -168,7 +168,7 @@ public class MockPositionMessageJob { ...@@ -168,7 +168,7 @@ public class MockPositionMessageJob {
private JSONObject mockKeyWarningMessage(JSONObject extra) { private JSONObject mockKeyWarningMessage(JSONObject extra) {
JSONObject params = new JSONObject(); JSONObject params = new JSONObject();
params.put("tagId", mockTag()); params.put("tagId", mockTag());
params.put("entityId", "1522770547178475520"); params.put("entityId", "4376");
params.put("areaId", mockAreaId()); params.put("areaId", mockAreaId());
params.put("raiseTime", System.currentTimeMillis()); params.put("raiseTime", System.currentTimeMillis());
params.put("x", 100); params.put("x", 100);
......
...@@ -14,11 +14,12 @@ import lombok.NoArgsConstructor; ...@@ -14,11 +14,12 @@ import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;
/** /**
* 报警类型的条件param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/27 14:28 * @date 2022/4/27 14:28
*/ */
@ApiModel("AlarmConditionParam(报警类型的条件param)") @ApiModel("AlarmConditionParam")
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
...@@ -18,11 +18,12 @@ import org.hibernate.validator.constraints.Length; ...@@ -18,11 +18,12 @@ import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;
/** /**
* 报警类型的添加param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/27 11:28 * @date 2022/4/27 11:28
*/ */
@ApiModel("AlarmTypeAddParam(报警类型的添加param)") @ApiModel("AlarmTypeAddParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -15,11 +15,12 @@ import lombok.NoArgsConstructor; ...@@ -15,11 +15,12 @@ import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
/** /**
* 报警类型修改param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/27 11:28 * @date 2022/4/27 11:28
*/ */
@ApiModel("AlarmTypeModifyParam(报警类型修改param)") @ApiModel("AlarmTypeModifyParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -14,11 +14,12 @@ import lombok.Data; ...@@ -14,11 +14,12 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 历史轨迹的条件param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/5/6 10:53 * @date 2022/5/6 10:53
*/ */
@ApiModel("HistoryRoute(历史轨迹的条件param)") @ApiModel("HistoryRoute")
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
...@@ -18,7 +18,7 @@ import org.locationtech.jts.geom.Geometry; ...@@ -18,7 +18,7 @@ import org.locationtech.jts.geom.Geometry;
* @version 1.0 * @version 1.0
* @date 2022/4/26 10:40 * @date 2022/4/26 10:40
*/ */
@ApiModel("DistrictAddParam(添加区域param)") @ApiModel("DistrictAddParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -20,7 +20,7 @@ import org.locationtech.jts.geom.Geometry; ...@@ -20,7 +20,7 @@ import org.locationtech.jts.geom.Geometry;
* @version 1.0 * @version 1.0
* @date 2022/4/26 10:40 * @date 2022/4/26 10:40
*/ */
@ApiModel("DistrictAddParam(添加区域param)") @ApiModel("DistrictAddParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.key;
import com.yiring.app.domain.key.KeyAlarm;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 按键报警
*
* @author LJ-2204
* @date 2022/5/12
*/
@ApiModel("KeyAlarmAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmAddParam implements Serializable {
@Serial
private static final long serialVersionUID = 6914927126284215967L;
@ApiModelProperty(value = "标签编号", example = "BTT88888888")
String tagId;
@ApiModelProperty(value = "报警人ID", example = "14433")
Long entityId;
@ApiModelProperty(value = "地图总图", example = "1")
Long areaId;
@ApiModelProperty(value = "推送时间", example = "")
LocalDateTime raiseTime;
@ApiModelProperty(value = "x", example = "1")
BigDecimal x;
@ApiModelProperty(value = "y", example = "1")
BigDecimal y;
@ApiModelProperty(value = "z", example = "1")
BigDecimal z;
public static KeyAlarm transform(KeyAlarmAddParam param) {
return KeyAlarm
.builder()
.areaId(param.areaId)
.code(param.getTagId())
.x(param.getX())
.y(param.getY())
.z(param.getZ())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.key;
import com.yiring.app.push.domain.PushMessage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 按键报警推送
*
* @author LJ-2204
* @date 2022/5/13
*/
@ApiModel("KeyAlarmLogFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmLogFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -7238582681776938388L;
@ApiModelProperty(value = "通知方式", example = "SMS/APP")
PushMessage.Type type;
@ApiModelProperty(value = "联系号码", example = "18888888888")
String mobile;
@ApiModelProperty(value = "接收状态", example = "T/F")
Boolean status;
}
...@@ -17,13 +17,13 @@ import lombok.experimental.FieldDefaults; ...@@ -17,13 +17,13 @@ import lombok.experimental.FieldDefaults;
* @date 2022/5/6 * @date 2022/5/6
*/ */
@ApiModel("KeyAlarmRulesAddParam") @ApiModel("KeyAlarmRuleAddParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmRulesAddParam implements Serializable { public class KeyAlarmRuleAddParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 758462772473378637L; private static final long serialVersionUID = 758462772473378637L;
......
...@@ -15,13 +15,13 @@ import lombok.experimental.FieldDefaults; ...@@ -15,13 +15,13 @@ import lombok.experimental.FieldDefaults;
* @date 2022/5/6 * @date 2022/5/6
*/ */
@ApiModel("KeyAlarmRulesExportParam") @ApiModel("KeyAlarmRuleExportParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmRulesExportParam implements Serializable { public class KeyAlarmRuleExportParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = -2940487513251067057L; private static final long serialVersionUID = -2940487513251067057L;
......
...@@ -16,13 +16,13 @@ import lombok.experimental.FieldDefaults; ...@@ -16,13 +16,13 @@ import lombok.experimental.FieldDefaults;
* @date 2022/5/6 * @date 2022/5/6
*/ */
@ApiModel("KeyAlarmRulesAddParam") @ApiModel("KeyAlarmRuleAddParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmRulesModifyParam implements Serializable { public class KeyAlarmRuleModifyParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 3526756145220971363L; private static final long serialVersionUID = 3526756145220971363L;
......
...@@ -15,13 +15,13 @@ import lombok.experimental.FieldDefaults; ...@@ -15,13 +15,13 @@ import lombok.experimental.FieldDefaults;
* @date 2022/5/7 * @date 2022/5/7
*/ */
@ApiModel("KeyAlarmRulesPageParam") @ApiModel("KeyAlarmRulePageParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmRulesPageParam implements Serializable { public class KeyAlarmRulePageParam implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 2876239519436815639L; private static final long serialVersionUID = 2876239519436815639L;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
package com.yiring.app.param.location.beacon; package com.yiring.app.param.location.beacon;
import com.yiring.app.domain.location.LocationBeacon; import com.yiring.app.domain.location.LocationBeacon;
import com.yiring.app.util.GeoUtils;
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;
...@@ -65,9 +66,13 @@ public class LocationBeaconAddParam implements Serializable { ...@@ -65,9 +66,13 @@ public class LocationBeaconAddParam implements Serializable {
.x(locationBeaconAddParam.getX()) .x(locationBeaconAddParam.getX())
.y(locationBeaconAddParam.getY()) .y(locationBeaconAddParam.getY())
.z(locationBeaconAddParam.getZ()) .z(locationBeaconAddParam.getZ())
// .point(GeoUtils.xyzToPoint( .point(
// locationBeaconAddParam.getPointX().doubleValue(),locationBeaconAddParam.getPointY().doubleValue(),locationBeaconAddParam.getPointZ().doubleValue() GeoUtils.xyzToPoint(
// )) locationBeaconAddParam.getX().doubleValue(),
locationBeaconAddParam.getY().doubleValue(),
locationBeaconAddParam.getZ().doubleValue()
)
)
.time(locationBeaconAddParam.getTime()) .time(locationBeaconAddParam.getTime())
.volt(locationBeaconAddParam.getVolt()) .volt(locationBeaconAddParam.getVolt())
.voltUnit(locationBeaconAddParam.getVoltUnit()) .voltUnit(locationBeaconAddParam.getVoltUnit())
......
...@@ -17,11 +17,12 @@ import org.hibernate.validator.constraints.Range; ...@@ -17,11 +17,12 @@ import org.hibernate.validator.constraints.Range;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
/** /**
* 添加围栏信息的param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/28 10:52 * @date 2022/4/28 10:52
*/ */
@ApiModel("LocationFenceAddParam(添加围栏信息的param)") @ApiModel("LocationFenceAddParam")
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
...@@ -11,11 +11,12 @@ import lombok.Data; ...@@ -11,11 +11,12 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 查询围栏信息的条件param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/28 13:35 * @date 2022/4/28 13:35
*/ */
@ApiModel("LocationFenceConditionParam(查询围栏信息的条件param)") @ApiModel("LocationFenceConditionParam")
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
...@@ -16,11 +16,12 @@ import org.hibernate.validator.constraints.Range; ...@@ -16,11 +16,12 @@ import org.hibernate.validator.constraints.Range;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
/** /**
* 修改围栏信息的param
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/28 10:52 * @date 2022/4/28 10:52
*/ */
@ApiModel("LocationFenceModifyParam(修改围栏信息的param)") @ApiModel("LocationFenceModifyParam")
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
...@@ -18,11 +18,12 @@ import lombok.NoArgsConstructor; ...@@ -18,11 +18,12 @@ import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;
/** /**
* 添加配置报警类别的报警规则,根据不同类型传入不同参数
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/28 16:16 * @date 2022/4/28 16:16
*/ */
@ApiModel("添加配置报警类别的报警规则,根据不同类型传入不同参数") @ApiModel("LocationFenceRuleAddParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -10,12 +10,13 @@ import javax.validation.constraints.NotNull; ...@@ -10,12 +10,13 @@ import javax.validation.constraints.NotNull;
import lombok.*; import lombok.*;
/** /**
* 修改配置报警类别的报警规则,根据不同类型传入不同参数
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/28 16:16 * @date 2022/4/28 16:16
*/ */
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel("修改配置报警类别的报警规则,根据不同类型传入不同参数") @ApiModel("LocationFenceRuleModifyParam")
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
......
...@@ -12,11 +12,12 @@ import lombok.Data; ...@@ -12,11 +12,12 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 报警规则,根据不同类型传入不同参数
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/29 14:12 * @date 2022/4/29 14:12
*/ */
@ApiModel("报警规则,根据不同类型传入不同参数") @ApiModel("RuleParam")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -6,11 +6,13 @@ import com.yiring.app.param.broadcast.BroadcastAudioFindParam; ...@@ -6,11 +6,13 @@ import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam; import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo; import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo; import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam; import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
/** /**
* 播报语音 * 播报语音
...@@ -55,4 +57,11 @@ public interface BroadcastAudioService { ...@@ -55,4 +57,11 @@ public interface BroadcastAudioService {
* @return Result<PageVo<BroadcastAudioIndexVo>> * @return Result<PageVo<BroadcastAudioIndexVo>>
*/ */
Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam); Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam);
/**
* 批量下载
* @param idsParam IdsParam
* @param response HttpServletResponse
*/
void download(IdsParam idsParam, HttpServletResponse response);
} }
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
package com.yiring.app.service.broadcast.impl; package com.yiring.app.service.broadcast.impl;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.yiring.app.domain.broadcast.BroadcastAudio; import com.yiring.app.domain.broadcast.BroadcastAudio;
import com.yiring.app.domain.broadcast.BroadcastAudioRepository; import com.yiring.app.domain.broadcast.BroadcastAudioRepository;
...@@ -9,8 +11,11 @@ import com.yiring.app.param.broadcast.BroadcastAudioAddParam; ...@@ -9,8 +11,11 @@ import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam; import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam; import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.service.broadcast.BroadcastAudioService; import com.yiring.app.service.broadcast.BroadcastAudioService;
import com.yiring.app.util.ZipUtils;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo; import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo; import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Minio;
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.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
...@@ -18,12 +23,17 @@ import com.yiring.common.param.IdParam; ...@@ -18,12 +23,17 @@ import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam; import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.List; import io.minio.GetObjectResponse;
import java.util.Optional; import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.Order; import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
...@@ -47,6 +57,9 @@ public class BroadcastAudioServiceImpl implements BroadcastAudioService { ...@@ -47,6 +57,9 @@ public class BroadcastAudioServiceImpl implements BroadcastAudioService {
@Resource @Resource
BroadcastAudioRepository broadcastAudioRepository; BroadcastAudioRepository broadcastAudioRepository;
@Resource
Minio minio;
@Override @Override
public Result<String> save(BroadcastAudioAddParam param) { public Result<String> save(BroadcastAudioAddParam param) {
broadcastAudioRepository.save(BroadcastAudioAddParam.transform(param)); broadcastAudioRepository.save(BroadcastAudioAddParam.transform(param));
...@@ -122,4 +135,37 @@ public class BroadcastAudioServiceImpl implements BroadcastAudioService { ...@@ -122,4 +135,37 @@ public class BroadcastAudioServiceImpl implements BroadcastAudioService {
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public void download(IdsParam idsParam, HttpServletResponse response) {
String[] split = idsParam.getIds().split(",");
Long[] ids = Convert.toLongArray(split);
List<BroadcastAudio> broadcastAudios = broadcastAudioRepository.findAllById(Arrays.asList(ids));
HashMap<String, File> map = new HashMap<>();
broadcastAudios.forEach(broadcastAudio -> {
String uri = broadcastAudio.getUri();
int i = uri.lastIndexOf("upload/");
uri = uri.substring(i);
try {
GetObjectResponse getObjectResponse = minio.getObject(uri);
File file = FileUtil.writeFromStream(getObjectResponse, FileUtil.createTempFile());
int j = uri.lastIndexOf(".");
uri = uri.substring(j);
map.put(broadcastAudio.getName() + uri, file);
} catch (Exception e) {
e.printStackTrace();
}
});
String fileName = URLEncoder.encode("音频文件.zip", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
try {
ZipUtils.packet(map, response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
} }
...@@ -76,11 +76,11 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -76,11 +76,11 @@ public class DepartmentServiceImpl implements DepartmentService {
@Override @Override
public Result<String> addDepartment(DepartmentAddParam departmentAddParam) { public Result<String> addDepartment(DepartmentAddParam departmentAddParam) {
// 查询用户相关信息 // 查询用户相关信息
Optional<User> userOptional = userRepository.findOne(
Example.of(User.builder().id(departmentAddParam.getLeaderId()).build())
);
Department department = DepartmentAddParam.transform(departmentAddParam); Department department = DepartmentAddParam.transform(departmentAddParam);
userOptional.ifPresent(department::setLeader); if (ObjectUtil.isNotEmpty(departmentAddParam.getLeaderId())) {
Optional<User> userOptional = userRepository.findById(departmentAddParam.getLeaderId());
userOptional.ifPresent(department::setLeader);
}
// 查询zy上级部门id // 查询zy上级部门id
Optional<Department> departmentOptional = departmentRepository.findOne( Optional<Department> departmentOptional = departmentRepository.findOne(
...@@ -157,13 +157,16 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -157,13 +157,16 @@ public class DepartmentServiceImpl implements DepartmentService {
@Override @Override
public void exportDepartment(DepartmentExportParam departmentExportParam, HttpServletResponse response) { public void exportDepartment(DepartmentExportParam departmentExportParam, HttpServletResponse response) {
List<Department> departments = departmentRepository.findAll( HashMap<String, Department> hashMap = getStringDepartmentHashMap();
Example.of(Department.builder().enable(departmentExportParam.getEnable()).build()) List<DepartmentExportExcel> departmentExportExcels = ListUtil.toList();
); hashMap.forEach((k, v) -> {
List<DepartmentExportExcel> departmentExportExcels = departments DepartmentExportExcel departmentExportExcel = DepartmentExportExcel.transform(v);
.stream() if (v.getEnable() == departmentExportParam.getEnable()) {
.map(DepartmentExportExcel::transform) departmentExportExcel.setName(k);
.collect(Collectors.toList()); departmentExportExcels.add(departmentExportExcel);
}
});
try ( try (
DefaultStreamExcelBuilder<DepartmentExportExcel> streamExcelBuilder = DefaultStreamExcelBuilder DefaultStreamExcelBuilder<DepartmentExportExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(DepartmentExportExcel.class) .of(DepartmentExportExcel.class)
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.key;
import com.yiring.app.param.key.KeyAlarmLogFindParam;
import com.yiring.app.vo.key.KeyAlarmLogVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* 按键报警推送
*
* @author LJ-2204
* @date 2022/5/13
*/
public interface KeyAlarmLogService {
/**
* 表格查询
* @param param KeyAlarmLogFindParam
* @param pageParam PageParam
* @return Result<PageVo<KeyAlarmLogVo>>
*/
Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam);
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.key; package com.yiring.app.service.key;
import com.yiring.app.param.key.KeyAlarmRulesAddParam; import com.yiring.app.param.key.KeyAlarmRuleAddParam;
import com.yiring.app.param.key.KeyAlarmRulesExportParam; import com.yiring.app.param.key.KeyAlarmRuleExportParam;
import com.yiring.app.param.key.KeyAlarmRulesModifyParam; import com.yiring.app.param.key.KeyAlarmRuleModifyParam;
import com.yiring.app.param.key.KeyAlarmRulesPageParam; import com.yiring.app.param.key.KeyAlarmRulePageParam;
import com.yiring.app.vo.key.KeyAlarmRulesVo; import com.yiring.app.vo.key.KeyAlarmRuleVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
...@@ -18,13 +18,13 @@ import javax.servlet.http.HttpServletResponse; ...@@ -18,13 +18,13 @@ import javax.servlet.http.HttpServletResponse;
* @author LJ-2204 * @author LJ-2204
* @date 2022/5/6 * @date 2022/5/6
*/ */
public interface KeyAlarmRulesService { public interface KeyAlarmRuleService {
/** /**
* 添加报警类型 * 添加报警类型
* @param keyAlarmRulesAddParam KeyAlarmRulesAddParam * @param keyAlarmRuleAddParam KeyAlarmRuleAddParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> add(KeyAlarmRulesAddParam keyAlarmRulesAddParam); Result<String> add(KeyAlarmRuleAddParam keyAlarmRuleAddParam);
/** /**
* 删除报警规则 * 删除报警规则
...@@ -35,23 +35,23 @@ public interface KeyAlarmRulesService { ...@@ -35,23 +35,23 @@ public interface KeyAlarmRulesService {
/** /**
* 修改报警规则 * 修改报警规则
* @param keyAlarmRulesModifyParam KeyAlarmRulesModifyParam * @param keyAlarmRuleModifyParam KeyAlarmRuleModifyParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> modify(KeyAlarmRulesModifyParam keyAlarmRulesModifyParam); Result<String> modify(KeyAlarmRuleModifyParam keyAlarmRuleModifyParam);
/** /**
* 导出 * 导出
* @param keyAlarmRulesExportParam KeyAlarmRulesExportParam * @param keyAlarmRuleExportParam KeyAlarmRuleExportParam
* @param response HttpServletResponse * @param response HttpServletResponse
*/ */
void export(KeyAlarmRulesExportParam keyAlarmRulesExportParam, HttpServletResponse response); void export(KeyAlarmRuleExportParam keyAlarmRuleExportParam, HttpServletResponse response);
/** /**
* 分页 * 分页
* @param keyAlarmRulesPageParam KeyAlarmRulesPageParam * @param keyAlarmRulePageParam KeyAlarmRulePageParam
* @param pageParam PageParam * @param pageParam PageParam
* @return Result<PageVo<KeyAlarmRulesVo>> * @return Result<PageVo<KeyAlarmRuleVo>>
*/ */
Result<PageVo<KeyAlarmRulesVo>> page(KeyAlarmRulesPageParam keyAlarmRulesPageParam, PageParam pageParam); Result<PageVo<KeyAlarmRuleVo>> page(KeyAlarmRulePageParam keyAlarmRulePageParam, PageParam pageParam);
} }
...@@ -6,6 +6,7 @@ import com.yiring.app.vo.key.KeyAlarmVo; ...@@ -6,6 +6,7 @@ import com.yiring.app.vo.key.KeyAlarmVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import javax.servlet.http.HttpServletResponse;
/** /**
* 部门信息控制器 * 部门信息控制器
...@@ -21,4 +22,11 @@ public interface KeyAlarmService { ...@@ -21,4 +22,11 @@ public interface KeyAlarmService {
* @return Result<PageVo<KeyAlarmVo>> * @return Result<PageVo<KeyAlarmVo>>
*/ */
Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam); Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam);
/**
* 导出
* @param param KeyAlarmFindParam
* @param response HttpServletResponse
*/
void export(KeyAlarmFindParam param, HttpServletResponse response);
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.key.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import com.yiring.app.domain.key.KeyAlarmLog;
import com.yiring.app.domain.key.KeyAlarmLogRepository;
import com.yiring.app.param.key.KeyAlarmLogFindParam;
import com.yiring.app.service.key.KeyAlarmLogService;
import com.yiring.app.vo.key.KeyAlarmLogVo;
import com.yiring.auth.domain.user.User;
import com.yiring.common.core.Result;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 按键报警推送
*
* @author LJ-2204
* @date 2022/5/13
*/
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class KeyAlarmLogServiceImpl implements KeyAlarmLogService {
@Resource
KeyAlarmLogRepository keyAlarmLogRepository;
@Override
public Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam) {
Specification<KeyAlarmLog> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (ObjectUtil.isNotEmpty(param.getMobile())) {
predicates.add(
cb.like(root.get(KeyAlarmLog.Fields.user).get(User.Fields.mobile), "%" + param.getMobile() + "%")
);
}
if (ObjectUtil.isNotEmpty(param.getStatus())) {
predicates.add(cb.equal(root.get(KeyAlarmLog.Fields.status), param.getStatus()));
}
if (ObjectUtil.isNotEmpty(param.getType())) {
predicates.add(cb.equal(root.get(KeyAlarmLog.Fields.types), param.getType()));
}
Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<KeyAlarmLog> keyAlarmLogs = keyAlarmLogRepository.findAll(specification, pageable);
List<KeyAlarmLogVo> keyAlarmLogVos = keyAlarmLogs
.getContent()
.stream()
.map(KeyAlarmLogVo::transform)
.collect(Collectors.toList());
PageVo<KeyAlarmLogVo> pageVo = PageVo.build(keyAlarmLogVos, keyAlarmLogs.getTotalElements());
return Result.ok(pageVo);
}
}
...@@ -4,10 +4,12 @@ package com.yiring.app.service.key.impl; ...@@ -4,10 +4,12 @@ package com.yiring.app.service.key.impl;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.domain.key.KeyAlarm; import com.yiring.app.domain.key.KeyAlarm;
import com.yiring.app.domain.key.KeyAlarmRepository; import com.yiring.app.domain.key.KeyAlarmRepository;
import com.yiring.app.domain.key.KeyAlarmRules; import com.yiring.app.domain.key.KeyAlarmRule;
import com.yiring.app.domain.key.KeyAlarmRulesRepository; import com.yiring.app.domain.key.KeyAlarmRuleRepository;
import com.yiring.app.excel.key.KeyAlarmExportExcel;
import com.yiring.app.param.key.KeyAlarmFindParam; import com.yiring.app.param.key.KeyAlarmFindParam;
import com.yiring.app.service.key.KeyAlarmService; import com.yiring.app.service.key.KeyAlarmService;
import com.yiring.app.vo.key.KeyAlarmVo; import com.yiring.app.vo.key.KeyAlarmVo;
...@@ -17,14 +19,20 @@ import com.yiring.common.core.Result; ...@@ -17,14 +19,20 @@ import com.yiring.common.core.Result;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.Order; import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
...@@ -48,7 +56,7 @@ public class KeyAlarmServiceImpl implements KeyAlarmService { ...@@ -48,7 +56,7 @@ public class KeyAlarmServiceImpl implements KeyAlarmService {
KeyAlarmRepository keyAlarmRepository; KeyAlarmRepository keyAlarmRepository;
@Resource @Resource
KeyAlarmRulesRepository keyAlarmRulesRepository; KeyAlarmRuleRepository keyAlarmRuleRepository;
@Override @Override
public Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam) { public Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam) {
...@@ -101,13 +109,13 @@ public class KeyAlarmServiceImpl implements KeyAlarmService { ...@@ -101,13 +109,13 @@ public class KeyAlarmServiceImpl implements KeyAlarmService {
.build(); .build();
keyAlarmVo.setUser(userVo); keyAlarmVo.setUser(userVo);
} }
Optional<KeyAlarmRules> keyAlarmRulesOptional = keyAlarmRulesRepository.findById( Optional<KeyAlarmRule> keyAlarmRuleOptional = keyAlarmRuleRepository.findById(
leader.getDepartment().getId() leader.getDepartment().getId()
); );
if (keyAlarmRulesOptional.isPresent()) { if (keyAlarmRuleOptional.isPresent()) {
KeyAlarmRules keyAlarmRules = keyAlarmRulesOptional.get(); KeyAlarmRule keyAlarmRule = keyAlarmRuleOptional.get();
Set<User> users = keyAlarmRules.getUsers(); Set<User> users = keyAlarmRule.getUsers();
List<String> names = users.stream().map(User::getRealName).collect(Collectors.toList()); List<String> names = users.stream().map(User::getRealName).collect(Collectors.toList());
keyAlarmVo.setReceiver(StrUtil.join(",", names)); keyAlarmVo.setReceiver(StrUtil.join(",", names));
} }
...@@ -119,4 +127,94 @@ public class KeyAlarmServiceImpl implements KeyAlarmService { ...@@ -119,4 +127,94 @@ public class KeyAlarmServiceImpl implements KeyAlarmService {
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public void export(KeyAlarmFindParam param, HttpServletResponse response) {
Specification<KeyAlarm> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (ObjectUtil.isNotEmpty(param.getAreaId())) {
predicates.add(cb.equal(root.get(KeyAlarm.Fields.areaId), param.getAreaId()));
}
if (ObjectUtil.isNotEmpty(param.getName())) {
predicates.add(
cb.like(root.get(KeyAlarm.Fields.leader).get(User.Fields.realName), "%" + param.getName() + "%")
);
}
if (ObjectUtil.isNotEmpty(param.getEnable())) {
predicates.add(cb.equal(root.get(KeyAlarm.Fields.enable), param.getEnable()));
}
if (ObjectUtil.isNotEmpty(param.getCreateTime())) {
predicates.add(cb.lessThan(root.get(BasicEntity.Fields.createTime), param.getCreateTime()));
}
if (ObjectUtil.isNotEmpty(param.getEndTime())) {
predicates.add(cb.greaterThan(root.get(BasicEntity.Fields.updateTime), param.getEndTime()));
}
Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
List<KeyAlarm> keyAlarms = keyAlarmRepository.findAll(specification);
List<KeyAlarmExportExcel> keyAlarmExportExcels = keyAlarms
.stream()
.map(keyAlarm -> {
KeyAlarmExportExcel keyAlarmExportExcel = KeyAlarmExportExcel.transform(keyAlarm);
User leader = keyAlarm.getLeader();
if (ObjectUtil.isNotEmpty(leader)) {
keyAlarmExportExcel.setRealName(leader.getRealName());
keyAlarmExportExcel.setUuid(leader.getUuid());
}
Optional<KeyAlarmRule> keyAlarmRuleOptional = keyAlarmRuleRepository.findById(
leader.getDepartment().getId()
);
if (keyAlarmRuleOptional.isPresent()) {
KeyAlarmRule keyAlarmRule = keyAlarmRuleOptional.get();
Set<User> users = keyAlarmRule.getUsers();
List<String> names = users.stream().map(User::getRealName).collect(Collectors.toList());
keyAlarmExportExcel.setReceiver(StrUtil.join(",", names));
}
return keyAlarmExportExcel;
})
.collect(Collectors.toList());
try (
DefaultStreamExcelBuilder<KeyAlarmExportExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(KeyAlarmExportExcel.class)
.threadPool(Executors.newFixedThreadPool(2))
.rowHeight(14)
.titleRowHeight(14)
.style(
"cell->vertical-align:center;text-align:center",
"title->vertical-align:center;text-align:center;font-weight:bold;font-family:等线"
)
.start()
) {
streamExcelBuilder.append(keyAlarmExportExcels);
String fileName = URLEncoder.encode("按键报警信息.xlsx", StandardCharsets.UTF_8);
response.setContentType("application/octet-stream");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
OutputStream out = response.getOutputStream();
Workbook workbook = streamExcelBuilder.fixedTitles().build();
workbook.write(out);
workbook.close();
out.flush();
out.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new RuntimeException("导出按键报警信息失败: " + e.getMessage());
}
}
} }
...@@ -6,12 +6,16 @@ import com.alibaba.fastjson.JSONArray; ...@@ -6,12 +6,16 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
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.domain.key.*;
import com.yiring.app.domain.location.*; import com.yiring.app.domain.location.*;
import com.yiring.app.domain.log.ZyRealtimeLog; import com.yiring.app.domain.log.ZyRealtimeLog;
import com.yiring.app.domain.log.ZyRealtimeLogRepository; import com.yiring.app.domain.log.ZyRealtimeLogRepository;
import com.yiring.app.param.key.KeyAlarmAddParam;
import com.yiring.app.service.message.PositionMessageService; import com.yiring.app.service.message.PositionMessageService;
import com.yiring.app.util.GeoUtils; import com.yiring.app.util.GeoUtils;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository;
import com.yiring.common.annotation.Times; import com.yiring.common.annotation.Times;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -63,6 +67,18 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -63,6 +67,18 @@ public class PositionMessageServiceImpl implements PositionMessageService {
@Resource @Resource
ZyRealtimeLogRepository zyRealtimeLogRepository; ZyRealtimeLogRepository zyRealtimeLogRepository;
@Resource
KeyAlarmRepository keyAlarmRepository;
@Resource
KeyAlarmLogRepository keyAlarmLogRepository;
@Resource
KeyAlarmRuleRepository keyAlarmRuleRepository;
@Resource
UserRepository userRepository;
@Times("Message Consume") @Times("Message Consume")
@Override @Override
public void consume(String message) { public void consume(String message) {
...@@ -137,6 +153,7 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -137,6 +153,7 @@ public class PositionMessageServiceImpl implements PositionMessageService {
.silent(data.getBoolean("silent")) .silent(data.getBoolean("silent"))
.volt(data.getInteger("volt")) .volt(data.getInteger("volt"))
.voltUnit(data.getString("voltUnit")) .voltUnit(data.getString("voltUnit"))
.out(data.getBoolean("out"))
.build(); .build();
// 获取定位卡当前绑定的用户 // 获取定位卡当前绑定的用户
...@@ -166,8 +183,8 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -166,8 +183,8 @@ public class PositionMessageServiceImpl implements PositionMessageService {
// 计算出入标记(围栏、区域) // 计算出入标记(围栏、区域)
List<LocationTurnover> turnovers = new ArrayList<>(); List<LocationTurnover> turnovers = new ArrayList<>();
// 查询定位在围栏内的围栏信息 // 查询定位在围栏内的围栏信息(同时根据地图区域查询,用来区分不同楼层的围栏)
List<LocationFence> fences = locationFenceRepository.findByGeometryContains(point); List<LocationFence> fences = locationFenceRepository.findByGeometryContains(locationLog.getAreaId(), point);
Set<Long> fenceIds = fences.stream().map(LocationFence::getId).collect(Collectors.toSet()); Set<Long> fenceIds = fences.stream().map(LocationFence::getId).collect(Collectors.toSet());
locationLog.setFences(new JSONArray().fluentAddAll(fenceIds)); locationLog.setFences(new JSONArray().fluentAddAll(fenceIds));
// 计算围栏进出 // 计算围栏进出
...@@ -201,18 +218,13 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -201,18 +218,13 @@ public class PositionMessageServiceImpl implements PositionMessageService {
.sourceId(fence.getId()) .sourceId(fence.getId())
.tag(id.getTag()) .tag(id.getTag())
.time(id.getTime()) .time(id.getTime())
.user(id.getTag().getUser())
.isLatest(true) .isLatest(true)
.build(); .build();
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. 判断是否触发围栏报警规则,触发则记录报警记录,同时记录报警记录触发所需推送的消息
...@@ -256,9 +268,13 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -256,9 +268,13 @@ public class PositionMessageServiceImpl implements PositionMessageService {
.sourceId(district.getId()) .sourceId(district.getId())
.tag(id.getTag()) .tag(id.getTag())
.time(id.getTime()) .time(id.getTime())
.user(id.getTag().getUser())
.isLatest(true) .isLatest(true)
.build(); .build();
turnovers.add(turnover); turnovers.add(turnover);
// 更新区域内的标签
district.setTags(resetInTags(tag, isEnter, district.getTags()));
} }
} }
} }
...@@ -267,14 +283,17 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -267,14 +283,17 @@ public class PositionMessageServiceImpl implements PositionMessageService {
locationLogRepository.saveAndFlush(locationLog); locationLogRepository.saveAndFlush(locationLog);
// 更新定位标签卡状态信息 // 更新定位标签卡状态信息
tag.setOut(locationLog.getOut());
tag.setPoint(locationLog.getPoint()); tag.setPoint(locationLog.getPoint());
tag.setVolt(locationLog.getVolt()); tag.setVolt(locationLog.getVolt());
tag.setVoltUnit(locationLog.getVoltUnit()); tag.setVoltUnit(locationLog.getVoltUnit());
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);
...@@ -378,6 +397,15 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -378,6 +397,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 消息内容
...@@ -403,5 +431,57 @@ public class PositionMessageServiceImpl implements PositionMessageService { ...@@ -403,5 +431,57 @@ public class PositionMessageServiceImpl implements PositionMessageService {
public void processKeyWarningMessage(JSONObject data) { public void processKeyWarningMessage(JSONObject data) {
// TODO // TODO
log.info("KeyWarning Message: {}", data); log.info("KeyWarning Message: {}", data);
KeyAlarmAddParam keyAlarmAddParam = data.toJavaObject(KeyAlarmAddParam.class);
KeyAlarm keyAlarm = KeyAlarmAddParam.transform(keyAlarmAddParam);
keyAlarm.setPoint(
GeoUtils.xyzToPoint(
keyAlarm.getX().doubleValue(),
keyAlarm.getY().doubleValue(),
keyAlarm.getZ().doubleValue()
)
);
Optional<User> userRepositoryOne = userRepository.findOne(
Example.of(User.builder().linkId(keyAlarmAddParam.getEntityId()).build())
);
if (userRepositoryOne.isEmpty()) {
// throw new RuntimeException("没找到该用户");
log.error("没找到该用户");
return;
}
User user = userRepositoryOne.get();
keyAlarm.setLeader(user);
keyAlarm.setEnable(true);
Optional<KeyAlarmRule> keyAlarmRuleOptional = keyAlarmRuleRepository.findOne(
Example.of(
KeyAlarmRule.builder().department(Department.builder().id(user.getDepartment().getId()).build()).build()
)
);
if (keyAlarmRuleOptional.isEmpty()) {
// throw new RuntimeException("该部门未设置报警规则");
log.error("该部门未设置报警规则");
return;
}
final KeyAlarm finalKeyAlarm = keyAlarmRepository.save(keyAlarm);
KeyAlarmRule keyAlarmRule = keyAlarmRuleOptional.get();
Set<User> users = keyAlarmRule.getUsers();
HashSet<KeyAlarmLog> keyAlarmLogs = new HashSet<>();
users.forEach(leader -> {
String[] split = keyAlarmRule.getTypes().split(",");
for (String type : split) {
keyAlarmLogs.add(
KeyAlarmLog.builder().status(false).user(leader).types(type).keyAlarm(finalKeyAlarm).build()
);
}
});
keyAlarmLogRepository.saveAll(keyAlarmLogs);
} }
} }
...@@ -435,12 +435,6 @@ public class UserAppServiceImpl implements UserAppService { ...@@ -435,12 +435,6 @@ public class UserAppServiceImpl implements UserAppService {
.filter(userImportExcel -> .filter(userImportExcel ->
userRepository.count(Example.of(User.builder().uuid(userImportExcel.getUuid()).build())) == 0 userRepository.count(Example.of(User.builder().uuid(userImportExcel.getUuid()).build())) == 0
) )
.filter(userImportExcel ->
locationTagRepository.count(
Example.of(LocationTag.builder().code(userImportExcel.getCode()).used(true).build())
) ==
0
)
.collect(Collectors.toList()); .collect(Collectors.toList());
userImportExcels.forEach(userImportExcel -> { userImportExcels.forEach(userImportExcel -> {
...@@ -476,14 +470,11 @@ public class UserAppServiceImpl implements UserAppService { ...@@ -476,14 +470,11 @@ public class UserAppServiceImpl implements UserAppService {
Object id = JSONUtil.parseObj(records.get(0)).get("id"); Object id = JSONUtil.parseObj(records.get(0)).get("id");
Post post = postMap.get(userImportExcel.getPostName()).get(0); Post post = postMap.get(userImportExcel.getPostName()).get(0);
user.setLinkId(Convert.toLong(id)); user.setLinkId(Convert.toLong(id));
user.setDepartment(department); user.setDepartment(department);
user.setPost(post); user.setPost(post);
User saveUser = userRepository.save(user); userRepository.save(user);
if (StrUtil.isNotEmpty(userImportExcel.getCode())) {
LocationTag locationTag = LocationTag.builder().code(userImportExcel.getCode()).user(saveUser).build();
locationTagRepository.save(locationTag);
}
}); });
return Result.ok(); return Result.ok();
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.util;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.LinkedList;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class ZipUtils {
/**
* 解压文件
* @param file 压缩文件
* @param targetDir 解压文件输出的目录
* @throws IOException IOException
*/
public static void unPacket(Path file, Path targetDir) throws IOException {
if (!Files.exists(targetDir)) {
Files.createDirectories(targetDir);
}
// 创建zip对象
try (ZipFile zipFile = new ZipFile(file.toFile())) {
// 读取zip流
try (ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(file))) {
ZipEntry zipEntry;
// 遍历每一个zip项
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
// 获取zip项目名称
String entryName = zipEntry.getName();
// 构建绝对路径
Path entryFile = targetDir.resolve(entryName);
if (zipEntry.isDirectory()) { // 文件夹
if (!Files.isDirectory(entryFile)) {
Files.createDirectories(entryFile);
}
} else { // 文件
// 读取zip项数据流
try (InputStream zipEntryInputStream = zipFile.getInputStream(zipEntry)) {
try (
OutputStream fileOutputStream = Files.newOutputStream(
entryFile,
StandardOpenOption.CREATE_NEW
)
) {
byte[] buffer = new byte[4096];
int length;
while ((length = zipEntryInputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, length);
}
fileOutputStream.flush();
}
}
}
}
}
}
}
/**
* 压缩指定的文件
* @param files Path[]
* @param zipFile Path
* @throws IOException IOException
*/
public static void packet(Path[] files, Path zipFile) throws IOException {
OutputStream outputStream = Files.newOutputStream(zipFile, StandardOpenOption.CREATE_NEW);
try (outputStream; ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
for (Path file : files) {
if (Files.isDirectory(file)) {
continue;
}
try (InputStream inputStream = Files.newInputStream(file)) {
// 创建一个压缩项,指定名称
ZipEntry zipEntry = new ZipEntry(file.getFileName().toString());
// 添加到压缩流
zipOutputStream.putNextEntry(zipEntry);
// 写入数据
int len;
byte[] buffer = new byte[1024 * 10];
while ((len = inputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
zipOutputStream.flush();
}
}
// 完成所有压缩项的添加
zipOutputStream.closeEntry();
}
}
/**
* 压缩指定的文件
* @param files Map<String, File>
* @param outputStream OutputStream
*/
public static void packet(Map<String, File> files, OutputStream outputStream) {
try (outputStream; ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
for (Map.Entry<String, File> file : files.entrySet()) {
String fileName = file.getKey();
File fileValue = file.getValue();
try (InputStream inputStream = new BufferedInputStream(new FileInputStream(fileValue))) {
// 创建一个压缩项,指定名称
ZipEntry zipEntry = new ZipEntry(fileName);
// 添加到压缩流
zipOutputStream.putNextEntry(zipEntry);
// 写入数据
int len;
byte[] buffer = new byte[1024 * 10];
while ((len = inputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
zipOutputStream.flush();
}
}
// 完成所有压缩项的添加
zipOutputStream.closeEntry();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 压缩指定的目录
* @param folder Path
* @param zipFile Path
* @throws IOException IOException
*/
public static void packet(Path folder, Path zipFile) throws IOException {
if (!Files.isDirectory(folder)) {
throw new IllegalArgumentException(folder + " 不是合法的文件夹");
}
OutputStream outputStream = Files.newOutputStream(zipFile, StandardOpenOption.CREATE_NEW);
LinkedList<String> path = new LinkedList<>();
try (outputStream; ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {
Files.walkFileTree(
folder,
new FileVisitor<>() {
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
if (!dir.equals(folder)) {
// 开始遍历目录
String folder = dir.getFileName().toString();
path.addLast(folder);
// 写入目录
ZipEntry zipEntry = new ZipEntry(path.stream().collect(Collectors.joining("/", "", "/")));
try {
zipOutputStream.putNextEntry(zipEntry);
zipOutputStream.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
// 开始遍历文件
try (InputStream inputStream = Files.newInputStream(file)) {
// 创建一个压缩项,指定名称
String fileName = path.size() > 0
? path.stream().collect(Collectors.joining("/", "", "")) +
"/" +
file.getFileName().toString()
: file.getFileName().toString();
ZipEntry zipEntry = new ZipEntry(fileName);
// 添加到压缩流
zipOutputStream.putNextEntry(zipEntry);
// 写入数据
int len;
byte[] buffer = new byte[1024 * 10];
while ((len = inputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
zipOutputStream.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
// 结束遍历目录
if (!path.isEmpty()) {
path.removeLast();
}
return FileVisitResult.CONTINUE;
}
}
);
zipOutputStream.closeEntry();
}
}
}
...@@ -20,7 +20,7 @@ import lombok.NoArgsConstructor; ...@@ -20,7 +20,7 @@ import lombok.NoArgsConstructor;
* @version 1.0 * @version 1.0
* @date 2022/4/27 11:55 * @date 2022/4/27 11:55
*/ */
@ApiModel("AlarmTypeVo(报警信息)") @ApiModel("报警信息")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -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 {
......
...@@ -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("DistrictVo")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.key;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.key.KeyAlarmLog;
import com.yiring.app.vo.user.UserVo;
import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 按键报警推送
*
* @author LJ-2204
* @date 2022/5/13
*/
@ApiModel("KeyAlarmLogVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmLogVo implements Serializable {
@Serial
private static final long serialVersionUID = 9135155632502530938L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "111")
Long id;
@ApiModelProperty(value = "用户", example = "111")
UserVo userVo;
@ApiModelProperty(value = "通知方式", example = "SMS/APP")
String type;
@ApiModelProperty(value = "接收状态", example = "T/F")
Boolean status;
@ApiModelProperty(value = "接收时间", example = "2011-11-11 22:22:22")
LocalDateTime updateTime;
public static KeyAlarmLogVo transform(KeyAlarmLog keyAlarmLog) {
KeyAlarmLogVo keyAlarmLogVo = KeyAlarmLogVo
.builder()
.id(keyAlarmLog.getId())
.type(keyAlarmLog.getTypes())
.status(keyAlarmLog.getStatus())
.updateTime(keyAlarmLog.getUpdateTime())
.build();
if (ObjectUtil.isNotEmpty(keyAlarmLog.getUser())) {
User user = keyAlarmLog.getUser();
keyAlarmLogVo.setUserVo(
UserVo.builder().id(user.getId()).realName(user.getRealName()).mobile(user.getMobile()).build()
);
}
return keyAlarmLogVo;
}
}
...@@ -3,7 +3,7 @@ package com.yiring.app.vo.key; ...@@ -3,7 +3,7 @@ package com.yiring.app.vo.key;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.key.KeyAlarmRules; import com.yiring.app.domain.key.KeyAlarmRule;
import com.yiring.app.vo.user.UserInfoVo; import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -23,13 +23,13 @@ import lombok.experimental.FieldDefaults; ...@@ -23,13 +23,13 @@ import lombok.experimental.FieldDefaults;
* @date 2022/5/7 * @date 2022/5/7
*/ */
@ApiModel("KeyAlarmRulesVo") @ApiModel("KeyAlarmRuleVo")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmRulesVo implements Serializable { public class KeyAlarmRuleVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 5083435104462641333L; private static final long serialVersionUID = 5083435104462641333L;
...@@ -51,17 +51,17 @@ public class KeyAlarmRulesVo implements Serializable { ...@@ -51,17 +51,17 @@ public class KeyAlarmRulesVo implements Serializable {
@ApiModelProperty(value = "推送类型", example = "111") @ApiModelProperty(value = "推送类型", example = "111")
String[] types; String[] types;
public static KeyAlarmRulesVo transform(KeyAlarmRules keyAlarmRules) { public static KeyAlarmRuleVo transform(KeyAlarmRule keyAlarmRule) {
Set<User> users = keyAlarmRules.getUsers(); Set<User> users = keyAlarmRule.getUsers();
List<UserInfoVo> userInfoVos = users.stream().map(UserInfoVo::transform).collect(Collectors.toList()); List<UserInfoVo> userInfoVos = users.stream().map(UserInfoVo::transform).collect(Collectors.toList());
return KeyAlarmRulesVo return KeyAlarmRuleVo
.builder() .builder()
.id(keyAlarmRules.getId()) .id(keyAlarmRule.getId())
.deptId(keyAlarmRules.getDepartment().getId()) .deptId(keyAlarmRule.getDepartment().getId())
.deptName(keyAlarmRules.getDepartment().getName()) .deptName(keyAlarmRule.getDepartment().getName())
.users(userInfoVos) .users(userInfoVos)
.types(keyAlarmRules.getTypes().split(",")) .types(keyAlarmRule.getTypes().split(","))
.build(); .build();
} }
} }
...@@ -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
......
...@@ -19,11 +19,12 @@ import lombok.Data; ...@@ -19,11 +19,12 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 修改配置报警类别的报警规则,根据不同类型传入不同参数
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/28 16:16 * @date 2022/4/28 16:16
*/ */
@ApiModel("修改配置报警类别的报警规则,根据不同类型传入不同参数") @ApiModel("LocationFenceRuleVo")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -14,11 +14,12 @@ import lombok.Data; ...@@ -14,11 +14,12 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/** /**
* 报警规则,根据不同类型传入不同参数
* @author tml * @author tml
* @version 1.0 * @version 1.0
* @date 2022/4/29 14:12 * @date 2022/4/29 14:12
*/ */
@ApiModel("报警规则,根据不同类型传入不同参数") @ApiModel("RuleVo")
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
......
...@@ -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
......
/* (C) 2021 YiRing, Inc. */ /* (C) 2021 YiRing, Inc. */
package com.yiring.app.web; package com.yiring.app.web;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.app.constant.Code; import com.yiring.app.constant.Code;
import com.yiring.app.exception.CodeException; import com.yiring.app.exception.CodeException;
import com.yiring.app.util.zy.ZyUtil; import com.yiring.app.util.zy.ZyUtil;
...@@ -23,10 +24,12 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -23,10 +24,12 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Hello") @SuppressWarnings({ "deprecation" })
@RequestMapping("/hello/") @ApiSupport(order = 0)
@Api(tags = "示例", description = "Example")
@RequestMapping("/example/")
@RestController @RestController
public class HelloController { public class ExampleController {
String text = "😎 Hello World"; String text = "😎 Hello World";
......
...@@ -20,7 +20,6 @@ import java.util.Objects; ...@@ -20,7 +20,6 @@ import java.util.Objects;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
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.validation.annotation.Validated;
...@@ -35,9 +34,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -35,9 +34,10 @@ import org.springframework.web.bind.annotation.RestController;
* @version 1.0 * @version 1.0
* @date 2022/4/27 14:18 * @date 2022/4/27 14:18
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "AlarmType(报警类型)") @SuppressWarnings({ "deprecation" })
@Api(tags = "报警类型", description = "AlarmType")
@RestController @RestController
@RequestMapping("/alarm/type") @RequestMapping("/alarm/type")
public class AlarmTypeController { public class AlarmTypeController {
......
...@@ -22,8 +22,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -22,8 +22,10 @@ import org.springframework.web.bind.annotation.RestController;
* @version 1.0 * @version 1.0
* @date 2022/5/6 10:36 * @date 2022/5/6 10:36
*/ */
@Api(tags = "HistoryRoute(历史轨迹)")
@Validated @Validated
@SuppressWarnings({ "deprecation" })
@Api(tags = "历史轨迹", description = "HistoryRoute")
@RestController @RestController
@RequestMapping("/history/route") @RequestMapping("/history/route")
public class HistoryRouteController { public class HistoryRouteController {
......
...@@ -9,7 +9,6 @@ import io.swagger.annotations.Api; ...@@ -9,7 +9,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -22,9 +21,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -22,9 +21,10 @@ import org.springframework.web.bind.annotation.RestController;
* @description: * @description:
* @date 2022/4/28 13:48 * @date 2022/4/28 13:48
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "小程序用户") @SuppressWarnings({ "deprecation" })
@Api(tags = "小程序用户", description = "AppletUser")
@RestController @RestController
@RequestMapping("/appUser/") @RequestMapping("/appUser/")
public class AppletUserController { public class AppletUserController {
......
...@@ -7,6 +7,7 @@ import com.yiring.app.param.broadcast.BroadcastAudioModifyParam; ...@@ -7,6 +7,7 @@ import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.service.broadcast.BroadcastAudioService; import com.yiring.app.service.broadcast.BroadcastAudioService;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo; import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo; import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam; import com.yiring.common.param.IndexParam;
...@@ -15,8 +16,9 @@ import com.yiring.common.vo.PageVo; ...@@ -15,8 +16,9 @@ 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 javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -27,9 +29,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -27,9 +29,9 @@ import org.springframework.web.bind.annotation.*;
* @date 2022/5/7 * @date 2022/5/7
*/ */
@Slf4j
@Api(tags = "播报音频")
@Validated @Validated
@SuppressWarnings({ "deprecation" })
@Api(tags = "播报音频", description = "BroadcastAudio")
@RestController @RestController
@RequestMapping("/broadcast/audio") @RequestMapping("/broadcast/audio")
public class BroadcastAudioController { public class BroadcastAudioController {
...@@ -67,7 +69,9 @@ public class BroadcastAudioController { ...@@ -67,7 +69,9 @@ public class BroadcastAudioController {
return broadcastAudioService.index(indexParam); return broadcastAudioService.index(indexParam);
} }
@ApiOperation("批量下载") @ApiOperation(value = "批量下载", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping("download") @GetMapping("download")
public void download() {} public void download(@Valid IdsParam idsParam, HttpServletResponse response) {
broadcastAudioService.download(idsParam, response);
}
} }
...@@ -17,7 +17,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -17,7 +17,6 @@ import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Point;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
...@@ -33,9 +32,10 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -33,9 +32,10 @@ import org.springframework.web.multipart.MultipartFile;
* @description: * @description:
* @date 2022/5/6 10:15 * @date 2022/5/6 10:15
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "Broadcast(播报设备管理)") @SuppressWarnings({ "deprecation" })
@Api(tags = "播报设备管理", description = "Broadcast")
@RestController @RestController
@RequestMapping("/broadcast/") @RequestMapping("/broadcast/")
public class BroadcastController { public class BroadcastController {
......
...@@ -17,7 +17,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -17,7 +17,7 @@ import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -28,9 +28,9 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -28,9 +28,9 @@ import org.springframework.web.multipart.MultipartFile;
* @date 2022/4/19 * @date 2022/4/19
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "部门信息") @SuppressWarnings({ "deprecation" })
@Api(tags = "部门信息", description = "Department")
@RestController @RestController
@RequestMapping("/dept/") @RequestMapping("/dept/")
public class DepartmentController { public class DepartmentController {
...@@ -56,7 +56,7 @@ public class DepartmentController { ...@@ -56,7 +56,7 @@ public class DepartmentController {
return departmentService.findDepartmentInfo(idParam); return departmentService.findDepartmentInfo(idParam);
} }
@ApiOperation("部门导出") @ApiOperation(value = "部门导出", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping("exportDepartment") @GetMapping("exportDepartment")
public void exportDepartment(@Valid DepartmentExportParam departmentExportParam, HttpServletResponse response) { public void exportDepartment(@Valid DepartmentExportParam departmentExportParam, HttpServletResponse response) {
departmentService.exportDepartment(departmentExportParam, response); departmentService.exportDepartment(departmentExportParam, response);
......
...@@ -15,7 +15,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -15,7 +15,6 @@ import io.swagger.annotations.ApiOperation;
import java.util.ArrayList; import java.util.ArrayList;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -28,9 +27,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -28,9 +27,10 @@ import org.springframework.web.bind.annotation.RestController;
* @author tzl * @author tzl
* 2022/4/13 17:10 * 2022/4/13 17:10
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "Dict") @SuppressWarnings({ "deprecation" })
@Api(tags = "数据字典", description = "Dict")
@RestController @RestController
@RequestMapping("/Dict/") @RequestMapping("/Dict/")
public class DictController { public class DictController {
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
package com.yiring.app.web.dict; package com.yiring.app.web.dict;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -14,9 +13,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -14,9 +13,9 @@ import org.springframework.web.bind.annotation.RestController;
* 2022/4/14 15:14 * 2022/4/14 15:14
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "DictType") @SuppressWarnings({ "deprecation" })
@Api(tags = "数据字典类型", description = "DictType")
@RestController @RestController
@RequestMapping("/DictType/") @RequestMapping("/DictType/")
public class DictTypeController { public class DictTypeController {
......
...@@ -13,7 +13,6 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -13,7 +13,6 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -23,9 +22,10 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,9 +22,10 @@ import org.springframework.web.bind.annotation.*;
* @version 1.0 * @version 1.0
* @date 2022/4/26 10:15 * @date 2022/4/26 10:15
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "District(区域管理)") @SuppressWarnings({ "deprecation" })
@Api(tags = "区域管理", description = "District")
@RestController @RestController
@RequestMapping("/district/") @RequestMapping("/district/")
public class DistrictController { public class DistrictController {
......
...@@ -12,7 +12,6 @@ import io.swagger.annotations.Api; ...@@ -12,7 +12,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -25,9 +24,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -25,9 +24,10 @@ import org.springframework.web.bind.annotation.RestController;
* @description: * @description:
* @date 2022/5/5 15:18 * @date 2022/5/5 15:18
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "Icon(图标管理)") @SuppressWarnings({ "deprecation" })
@Api(tags = "图标管理", description = "Icon")
@RestController @RestController
@RequestMapping("/icon/") @RequestMapping("/icon/")
public class IconController { public class IconController {
......
...@@ -10,7 +10,7 @@ import com.yiring.common.vo.PageVo; ...@@ -10,7 +10,7 @@ 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 javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -23,9 +23,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -23,9 +23,9 @@ import org.springframework.web.bind.annotation.RestController;
* @date 2022/5/10 * @date 2022/5/10
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "按键报警") @SuppressWarnings({ "deprecation" })
@Api(tags = "按键报警", description = "KeyAlarm")
@RestController @RestController
@RequestMapping("/key/alarm") @RequestMapping("/key/alarm")
public class KeyAlarmController { public class KeyAlarmController {
...@@ -38,4 +38,10 @@ public class KeyAlarmController { ...@@ -38,4 +38,10 @@ public class KeyAlarmController {
public Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam) { public Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam) {
return keyAlarmService.page(param, pageParam); return keyAlarmService.page(param, pageParam);
} }
@ApiOperation("导出")
@GetMapping
public void export(KeyAlarmFindParam param, HttpServletResponse response) {
keyAlarmService.export(param, response);
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.key;
import com.yiring.app.param.key.KeyAlarmLogFindParam;
import com.yiring.app.service.key.KeyAlarmLogService;
import com.yiring.app.vo.key.KeyAlarmLogVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 按键报警推送信息
*
* @author LJ-2204
* @date 2022/5/13
*/
@Validated
@SuppressWarnings({ "deprecation" })
@Api(tags = "按键报警推送", description = "KeyAlarmLog")
@RestController
@RequestMapping("/key/alarm/log")
public class KeyAlarmLogController {
@Resource
KeyAlarmLogService keyAlarmLogService;
@ApiOperation("表格查询")
@GetMapping("page")
public Result<PageVo<KeyAlarmLogVo>> page(KeyAlarmLogFindParam param, PageParam pageParam) {
return keyAlarmLogService.page(param, pageParam);
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.key; package com.yiring.app.web.key;
import com.yiring.app.param.key.KeyAlarmRulesAddParam; import com.yiring.app.param.key.KeyAlarmRuleAddParam;
import com.yiring.app.param.key.KeyAlarmRulesExportParam; import com.yiring.app.param.key.KeyAlarmRuleExportParam;
import com.yiring.app.param.key.KeyAlarmRulesModifyParam; import com.yiring.app.param.key.KeyAlarmRuleModifyParam;
import com.yiring.app.param.key.KeyAlarmRulesPageParam; import com.yiring.app.param.key.KeyAlarmRulePageParam;
import com.yiring.app.service.key.KeyAlarmRulesService; import com.yiring.app.service.key.KeyAlarmRuleService;
import com.yiring.app.vo.key.KeyAlarmRulesVo; import com.yiring.app.vo.key.KeyAlarmRuleVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
...@@ -15,7 +15,6 @@ import io.swagger.annotations.Api; ...@@ -15,7 +15,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -26,43 +25,43 @@ import org.springframework.web.bind.annotation.*; ...@@ -26,43 +25,43 @@ import org.springframework.web.bind.annotation.*;
* @date 2022/5/6 * @date 2022/5/6
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "按键报警规则") @SuppressWarnings({ "deprecation" })
@Api(tags = "按键报警规则", description = "KeyAlarmRule")
@RestController @RestController
@RequestMapping("/key/alarm/rules") @RequestMapping("/key/alarm/rules")
public class KeyAlarmRulesController { public class KeyAlarmRuleController {
@Resource @Resource
KeyAlarmRulesService keyAlarmRulesService; KeyAlarmRuleService keyAlarmRuleService;
@ApiOperation("新增报警规则") @ApiOperation("新增报警规则")
@PostMapping("add") @PostMapping("add")
public Result<String> add(KeyAlarmRulesAddParam keyAlarmRulesAddParam) { public Result<String> add(KeyAlarmRuleAddParam keyAlarmRuleAddParam) {
return keyAlarmRulesService.add(keyAlarmRulesAddParam); return keyAlarmRuleService.add(keyAlarmRuleAddParam);
} }
@ApiOperation("删除报警规则") @ApiOperation("删除报警规则")
@DeleteMapping("delete") @DeleteMapping("delete")
public Result<String> delete(IdParam idParam) { public Result<String> delete(IdParam idParam) {
return keyAlarmRulesService.delete(idParam); return keyAlarmRuleService.delete(idParam);
} }
@ApiOperation("更新报警规则") @ApiOperation("更新报警规则")
@PutMapping("modify") @PutMapping("modify")
public Result<String> modify(KeyAlarmRulesModifyParam keyAlarmRulesModifyParam) { public Result<String> modify(KeyAlarmRuleModifyParam keyAlarmRuleModifyParam) {
return keyAlarmRulesService.modify(keyAlarmRulesModifyParam); return keyAlarmRuleService.modify(keyAlarmRuleModifyParam);
} }
@ApiOperation("导出") @ApiOperation("导出")
@GetMapping("export") @GetMapping("export")
public void export(KeyAlarmRulesExportParam keyAlarmRulesExportParam, HttpServletResponse response) { public void export(KeyAlarmRuleExportParam keyAlarmRuleExportParam, HttpServletResponse response) {
keyAlarmRulesService.export(keyAlarmRulesExportParam, response); keyAlarmRuleService.export(keyAlarmRuleExportParam, response);
} }
@ApiOperation("表格查询") @ApiOperation("表格查询")
@GetMapping("page") @GetMapping("page")
public Result<PageVo<KeyAlarmRulesVo>> page(KeyAlarmRulesPageParam keyAlarmRulesPageParam, PageParam pageParam) { public Result<PageVo<KeyAlarmRuleVo>> page(KeyAlarmRulePageParam keyAlarmRulePageParam, PageParam pageParam) {
return keyAlarmRulesService.page(keyAlarmRulesPageParam, pageParam); return keyAlarmRuleService.page(keyAlarmRulePageParam, pageParam);
} }
} }
...@@ -13,7 +13,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -13,7 +13,6 @@ import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -27,9 +26,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -27,9 +26,9 @@ import org.springframework.web.bind.annotation.RestController;
* @date 2022/4/27 * @date 2022/4/27
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "定位信标") @SuppressWarnings({ "deprecation" })
@Api(tags = "定位信标", description = "LocationBeacon")
@RestController @RestController
@RequestMapping("/location/beacon/") @RequestMapping("/location/beacon/")
public class LocationBeaconController { public class LocationBeaconController {
......
...@@ -19,7 +19,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -19,7 +19,6 @@ import io.swagger.annotations.ApiOperation;
import java.util.Objects; import java.util.Objects;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -32,11 +31,12 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -32,11 +31,12 @@ import org.springframework.web.bind.annotation.RestController;
* @version 1.0 * @version 1.0
* @date 2022/4/28 11:50 * @date 2022/4/28 11:50
*/ */
@RestController
@Api(tags = "Fence(围栏信息)")
@Validated @Validated
@Slf4j @SuppressWarnings({ "deprecation" })
@RequestMapping("location/fence") @Api(tags = "围栏信息", description = "LocationFence")
@RestController
@RequestMapping("/location/fence")
public class LocationFenceController { public class LocationFenceController {
@Resource @Resource
......
...@@ -20,7 +20,6 @@ import java.util.Objects; ...@@ -20,7 +20,6 @@ import java.util.Objects;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
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.validation.annotation.Validated;
...@@ -31,9 +30,10 @@ import org.springframework.web.bind.annotation.*; ...@@ -31,9 +30,10 @@ import org.springframework.web.bind.annotation.*;
* @version 1.0 * @version 1.0
* @date 2022/5/5 14:19 * @date 2022/5/5 14:19
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "AlarmRule(电子围栏报警规则,配置报警给谁)") @SuppressWarnings({ "deprecation" })
@Api(tags = "电子围栏报警规则,配置报警给谁", description = "AlarmRule")
@RestController @RestController
@RequestMapping("/alarm/rule") @RequestMapping("/alarm/rule")
public class LocationAlarmRuleController { public class LocationAlarmRuleController {
......
...@@ -13,7 +13,6 @@ import io.swagger.annotations.Api; ...@@ -13,7 +13,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -25,9 +24,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -25,9 +24,10 @@ import org.springframework.web.bind.annotation.RestController;
* @version 1.0 * @version 1.0
* @date 2022/4/29 9:05 * @date 2022/4/29 9:05
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "FenceRule(电子围栏报警规则,什么情况下会报警)") @SuppressWarnings({ "deprecation" })
@Api(tags = "电子围栏报警规则,什么情况下会报警", description = "FenceRule")
@RestController @RestController
@RequestMapping("/location/rule") @RequestMapping("/location/rule")
public class LocationFenceRuleController { public class LocationFenceRuleController {
......
...@@ -14,7 +14,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -14,7 +14,6 @@ import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -25,9 +24,9 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -25,9 +24,9 @@ import org.springframework.web.multipart.MultipartFile;
* @date 2022/4/13 * @date 2022/4/13
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "定位标签") @SuppressWarnings({ "deprecation" })
@Api(tags = "定位标签", description = "LocationTag")
@RestController @RestController
@RequestMapping("/location/tag/") @RequestMapping("/location/tag/")
public class LocationTagController { public class LocationTagController {
......
...@@ -12,7 +12,6 @@ import io.swagger.annotations.Api; ...@@ -12,7 +12,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PutMapping;
...@@ -26,9 +25,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -26,9 +25,9 @@ import org.springframework.web.bind.annotation.RestController;
* @date 2022/4/27 * @date 2022/4/27
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "标签分配") @SuppressWarnings({ "deprecation" })
@Api(tags = "标签分配", description = "LocationTagType")
@RestController @RestController
@RequestMapping("/location/tag/type") @RequestMapping("/location/tag/type")
public class LocationTagTypeController { public class LocationTagTypeController {
......
...@@ -12,10 +12,8 @@ import com.yiring.common.core.Status; ...@@ -12,10 +12,8 @@ import com.yiring.common.core.Status;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import java.io.Serializable;
import java.util.List; import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -28,9 +26,10 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -28,9 +26,10 @@ import org.springframework.web.bind.annotation.RestController;
* @version 1.0 * @version 1.0
* @date 2022/4/24 13:48 * @date 2022/4/24 13:48
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "Map(地图)") @SuppressWarnings({ "deprecation" })
@Api(tags = "地图", description = "Map")
@RestController @RestController
@RequestMapping("/map/") @RequestMapping("/map/")
public class MapController { public class MapController {
...@@ -40,7 +39,7 @@ public class MapController { ...@@ -40,7 +39,7 @@ public class MapController {
@GetMapping("/mapSelect") @GetMapping("/mapSelect")
@ApiImplicitParams({ @ApiImplicitParam(value = "orgId", required = true, name = "orgId") }) @ApiImplicitParams({ @ApiImplicitParam(value = "orgId", required = true, name = "orgId") })
public Result<Serializable> fail(String orgId) { public Result<MapVo> select(String orgId) {
String login = ZyUtil.openLogin(); String login = ZyUtil.openLogin();
JSONObject jsonObject = mapClient.selectMap(orgId, "bearer " + login); JSONObject jsonObject = mapClient.selectMap(orgId, "bearer " + login);
// if (ObjectUtil.isNotNull(jsonObject.getJSONArray("data"))) { // if (ObjectUtil.isNotNull(jsonObject.getJSONArray("data"))) {
......
...@@ -19,7 +19,6 @@ import io.swagger.annotations.ApiOperation; ...@@ -19,7 +19,6 @@ import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -29,9 +28,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -29,9 +28,9 @@ import org.springframework.web.bind.annotation.*;
* @date 2022/4/12 * @date 2022/4/12
*/ */
@Slf4j
@Validated @Validated
@Api(tags = "职位信息") @SuppressWarnings({ "deprecation" })
@Api(tags = "职位信息", description = "Post")
@RestController @RestController
@RequestMapping("/post/") @RequestMapping("/post/")
public class PostController { public class PostController {
......
...@@ -31,8 +31,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -31,8 +31,9 @@ import org.springframework.web.bind.annotation.*;
*/ */
@Slf4j @Slf4j
@Validated @Validated
@SuppressWarnings({ "deprecation" })
@Api(tags = "事故点管理", description = "AccidentSpot")
@RestController @RestController
@Api(tags = "AccidentSpot(事故点管理)")
@RequestMapping("/accident/spot") @RequestMapping("/accident/spot")
public class AccidentSpotController { public class AccidentSpotController {
......
...@@ -16,6 +16,7 @@ import io.swagger.annotations.Api; ...@@ -16,6 +16,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
...@@ -23,7 +24,10 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,7 +24,10 @@ import org.springframework.web.bind.annotation.*;
* @version 1.0 * @version 1.0
* @date 2022/5/9 10:19 * @date 2022/5/9 10:19
*/ */
@Api(tags = "EvacuationZone(撤离区)")
@Validated
@SuppressWarnings({ "deprecation" })
@Api(tags = "撤离区", description = "EvacuationZone")
@RestController @RestController
@RequestMapping("/evacuation/zone") @RequestMapping("/evacuation/zone")
public class EvacuationZoneController { public class EvacuationZoneController {
......
...@@ -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));
} }
} }
...@@ -17,6 +17,7 @@ import javax.annotation.Resource; ...@@ -17,6 +17,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
...@@ -31,7 +32,8 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -31,7 +32,8 @@ import org.springframework.web.multipart.MultipartFile;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "人员管理") @SuppressWarnings({ "deprecation" })
@Api(tags = "人员管理", description = "user")
@RestController @RestController
@RequestMapping("/user/app/") @RequestMapping("/user/app/")
public class UserAppController { public class UserAppController {
...@@ -69,7 +71,7 @@ public class UserAppController { ...@@ -69,7 +71,7 @@ public class UserAppController {
return userService.deleteUser(idsParam); return userService.deleteUser(idsParam);
} }
@ApiOperation("用户导出") @ApiOperation(value = "用户导出", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@GetMapping("exportUser") @GetMapping("exportUser")
public void exportUser(@Valid UserFindParam userFindParam, HttpServletResponse response) { public void exportUser(@Valid UserFindParam userFindParam, HttpServletResponse response) {
userService.exportUser(userFindParam, response); userService.exportUser(userFindParam, response);
......
...@@ -35,7 +35,8 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -35,7 +35,8 @@ import org.springframework.web.multipart.MultipartFile;
*/ */
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Video(监控设备)") @SuppressWarnings({ "deprecation" })
@Api(tags = "监控设备", description = "Video")
@RestController @RestController
@RequestMapping("/video/") @RequestMapping("/video/")
public class VideoController { public class VideoController {
......
...@@ -28,10 +28,11 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -28,10 +28,11 @@ import org.springframework.web.bind.annotation.RestController;
* 2022/4/11 17:02 * 2022/4/11 17:02
*/ */
@Slf4j @Slf4j
@Api(tags = "Car(车辆)")
@Validated @Validated
@RestController @SuppressWarnings({ "deprecation" })
@Api(tags = "车辆", description = "Car")
@RequestMapping("/Car/") @RequestMapping("/Car/")
@RestController
public class CarController { public class CarController {
@Resource @Resource
......
...@@ -30,7 +30,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -30,7 +30,8 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Invitation(邀请)") @SuppressWarnings({ "deprecation" })
@Api(tags = "邀请", description = "Invitation")
@RestController @RestController
@RequestMapping("/invitation/") @RequestMapping("/invitation/")
public class InvitationController { public class InvitationController {
......
...@@ -31,7 +31,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -31,7 +31,8 @@ import org.springframework.web.bind.annotation.RestController;
*/ */
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Visitor(访客)") @SuppressWarnings({ "deprecation" })
@Api(tags = "访客", description = "Visitor")
@RestController @RestController
@RequestMapping("/visitor/") @RequestMapping("/visitor/")
public class VisitorController { public class VisitorController {
......
...@@ -9,8 +9,8 @@ dependencies { ...@@ -9,8 +9,8 @@ dependencies {
// 本地依赖 // 本地依赖
implementation fileTree(dir: project.rootDir.getPath() + '\\libs', includes: ['*jar']) implementation fileTree(dir: project.rootDir.getPath() + '\\libs', includes: ['*jar'])
// swagger annotations // swagger(knife4j)
implementation "io.swagger:swagger-annotations:${swaggerAnnotationsVersion}" implementation "com.github.xiaoymin:knife4j-spring-boot-starter:${knife4jVersion}"
// sa-token // sa-token
implementation "cn.dev33:sa-token-spring-boot-starter:${saTokenVersion}" implementation "cn.dev33:sa-token-spring-boot-starter:${saTokenVersion}"
......
...@@ -5,6 +5,7 @@ import com.yiring.auth.param.user.UserFindParam; ...@@ -5,6 +5,7 @@ import com.yiring.auth.param.user.UserFindParam;
import com.yiring.auth.param.user.UserSaveParam; import com.yiring.auth.param.user.UserSaveParam;
import com.yiring.auth.vo.user.UserVo; import com.yiring.auth.vo.user.UserVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -29,4 +30,11 @@ public interface UserService { ...@@ -29,4 +30,11 @@ public interface UserService {
* @return Result<PageVo<UserVo>> * @return Result<PageVo<UserVo>>
*/ */
Result<PageVo<UserVo>> page(UserFindParam param, PageParam pageParam); Result<PageVo<UserVo>> page(UserFindParam param, PageParam pageParam);
/**
* 重置密码
* @param idParam IdParam
* @return Result<String>
*/
Result<String> reset(IdParam idParam);
} }
...@@ -12,10 +12,13 @@ import com.yiring.auth.param.user.UserSaveParam; ...@@ -12,10 +12,13 @@ import com.yiring.auth.param.user.UserSaveParam;
import com.yiring.auth.service.user.UserService; import com.yiring.auth.service.user.UserService;
import com.yiring.auth.vo.user.UserVo; import com.yiring.auth.vo.user.UserVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.domain.BasicEntity; import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaBuilder;
...@@ -87,4 +90,18 @@ public class UserServiceImpl implements UserService { ...@@ -87,4 +90,18 @@ public class UserServiceImpl implements UserService {
PageVo<UserVo> pageVo = PageVo.build(userVos, users.getTotalElements()); PageVo<UserVo> pageVo = PageVo.build(userVos, users.getTotalElements());
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public Result<String> reset(IdParam idParam) {
Optional<User> userOptional = userRepository.findById(idParam.getId());
if (userOptional.isPresent()) {
User user = userOptional.get();
user.setPassword("123456");
userRepository.save(user);
return Result.ok();
}
return Result.no(Status.BAD_REQUEST);
}
} }
...@@ -4,6 +4,7 @@ package com.yiring.auth.web.auth; ...@@ -4,6 +4,7 @@ package com.yiring.auth.web.auth;
import cn.dev33.satoken.secure.SaSecureUtil; import cn.dev33.satoken.secure.SaSecureUtil;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.auth.domain.user.User; import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository; import com.yiring.auth.domain.user.UserRepository;
import com.yiring.auth.param.auth.LoginParam; import com.yiring.auth.param.auth.LoginParam;
...@@ -36,7 +37,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -36,7 +37,9 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Auth") @SuppressWarnings({ "deprecation" })
@ApiSupport(order = -99)
@Api(tags = "身份认证", description = "Auth")
@RestController @RestController
@RequestMapping("/auth/") @RequestMapping("/auth/")
public class AuthController { public class AuthController {
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.web.permission; package com.yiring.auth.web.permission;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.auth.domain.permission.Permission; import com.yiring.auth.domain.permission.Permission;
import com.yiring.auth.domain.permission.PermissionRepository; import com.yiring.auth.domain.permission.PermissionRepository;
import com.yiring.auth.param.permission.PermissionParam; import com.yiring.auth.param.permission.PermissionParam;
...@@ -38,7 +39,9 @@ import org.springframework.web.bind.annotation.*; ...@@ -38,7 +39,9 @@ import org.springframework.web.bind.annotation.*;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Permission") @SuppressWarnings({ "deprecation" })
@ApiSupport(order = -97)
@Api(tags = "权限管理", description = "Permission")
@RestController @RestController
@RequestMapping("/manage/permission/") @RequestMapping("/manage/permission/")
public class PermissionController { public class PermissionController {
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.web.role; package com.yiring.auth.web.role;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.auth.domain.permission.Permission; import com.yiring.auth.domain.permission.Permission;
import com.yiring.auth.domain.permission.PermissionRepository; import com.yiring.auth.domain.permission.PermissionRepository;
import com.yiring.auth.domain.role.Role; import com.yiring.auth.domain.role.Role;
...@@ -40,7 +41,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -40,7 +41,9 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Role") @SuppressWarnings({ "deprecation" })
@ApiSupport(order = -96)
@Api(tags = "角色管理", description = "Role")
@RestController @RestController
@RequestMapping("/manage/role/") @RequestMapping("/manage/role/")
public class RoleController { public class RoleController {
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.web.user; package com.yiring.auth.web.user;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.auth.domain.permission.Permission; import com.yiring.auth.domain.permission.Permission;
import com.yiring.auth.domain.role.Role; import com.yiring.auth.domain.role.Role;
import com.yiring.auth.domain.role.RoleRepository; import com.yiring.auth.domain.role.RoleRepository;
...@@ -46,7 +47,9 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -46,7 +47,9 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "User") @SuppressWarnings({ "deprecation" })
@ApiSupport(order = -95)
@Api(tags = "用户管理", description = "User")
@RestController @RestController
@RequestMapping("/user/") @RequestMapping("/user/")
public class UserController { public class UserController {
...@@ -145,4 +148,10 @@ public class UserController { ...@@ -145,4 +148,10 @@ public class UserController {
public Result<String> add(@Valid UserSaveParam param) { public Result<String> add(@Valid UserSaveParam param) {
return userService.add(param); return userService.add(param);
} }
@ApiOperation("重置密码")
@PostMapping("reset")
public Result<String> reset(@Valid IdParam idParam) {
return userService.reset(idParam);
}
} }
...@@ -3,8 +3,8 @@ dependencies { ...@@ -3,8 +3,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-web'
// swagger // swagger(knife4j)
implementation "io.swagger:swagger-annotations:${swaggerAnnotationsVersion}" implementation "com.github.xiaoymin:knife4j-spring-boot-starter:${knife4jVersion}"
// minio // minio
implementation "io.minio:minio:${minioVersion}" implementation "io.minio:minio:${minioVersion}"
......
...@@ -3,6 +3,7 @@ package com.yiring.common.web; ...@@ -3,6 +3,7 @@ package com.yiring.common.web;
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.yiring.common.core.Minio; import com.yiring.common.core.Minio;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
...@@ -15,10 +16,7 @@ import java.time.format.DateTimeFormatter; ...@@ -15,10 +16,7 @@ import java.time.format.DateTimeFormatter;
import javax.annotation.Resource; import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
...@@ -27,7 +25,9 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -27,7 +25,9 @@ import org.springframework.web.multipart.MultipartFile;
@Slf4j @Slf4j
@Validated @Validated
@Api(tags = "Minio") @SuppressWarnings({ "deprecation" })
@ApiSupport(order = -98)
@Api(tags = "文件管理", description = "file")
@RestController @RestController
@RequestMapping("/common/minio/") @RequestMapping("/common/minio/")
public class MinioController { public class MinioController {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论