提交 12f455ab 作者: 17607474349

feat:

1、添加按键报警数据查询、导出
2、添加按键报警信息推送
3、添加推送信息数据查询
上级 6ceb4aca
...@@ -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}"
} }
...@@ -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;
......
/* (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())
......
...@@ -132,7 +132,7 @@ public class MockZyMessageJob { ...@@ -132,7 +132,7 @@ public class MockZyMessageJob {
private JSONObject mockKeyWarningMessage() { private JSONObject mockKeyWarningMessage() {
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);
......
/* (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())
......
...@@ -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());
}
}
} }
...@@ -4,17 +4,22 @@ package com.yiring.app.service.message.impl; ...@@ -4,17 +4,22 @@ package com.yiring.app.service.message.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
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.ZyMessageService; import com.yiring.app.service.message.ZyMessageService;
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;
import java.time.ZoneId; import java.time.ZoneId;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -51,6 +56,18 @@ public class ZyMessageServiceImpl implements ZyMessageService { ...@@ -51,6 +56,18 @@ public class ZyMessageServiceImpl implements ZyMessageService {
@Resource @Resource
ZyRealtimeLogRepository zyRealtimeLogRepository; ZyRealtimeLogRepository zyRealtimeLogRepository;
@Resource
KeyAlarmRepository keyAlarmRepository;
@Resource
KeyAlarmLogRepository keyAlarmLogRepository;
@Resource
KeyAlarmRuleRepository keyAlarmRuleRepository;
@Resource
UserRepository userRepository;
@Times @Times
@Override @Override
public void consume(String message) { public void consume(String message) {
...@@ -196,5 +213,57 @@ public class ZyMessageServiceImpl implements ZyMessageService { ...@@ -196,5 +213,57 @@ public class ZyMessageServiceImpl implements ZyMessageService {
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();
}
}
}
/* (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();
} }
} }
...@@ -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,10 @@ import com.yiring.common.vo.PageVo; ...@@ -15,8 +16,10 @@ 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 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.*;
...@@ -67,7 +70,9 @@ public class BroadcastAudioController { ...@@ -67,7 +70,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);
}
} }
...@@ -18,6 +18,7 @@ import javax.annotation.Resource; ...@@ -18,6 +18,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;
...@@ -56,7 +57,7 @@ public class DepartmentController { ...@@ -56,7 +57,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);
......
...@@ -10,6 +10,7 @@ import com.yiring.common.vo.PageVo; ...@@ -10,6 +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 javax.servlet.http.HttpServletResponse;
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.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -38,4 +39,10 @@ public class KeyAlarmController { ...@@ -38,4 +39,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 lombok.extern.slf4j.Slf4j;
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
*/
@Slf4j
@Validated
@Api(tags = "按键报警推送")
@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;
...@@ -31,38 +31,38 @@ import org.springframework.web.bind.annotation.*; ...@@ -31,38 +31,38 @@ import org.springframework.web.bind.annotation.*;
@Api(tags = "按键报警规则") @Api(tags = "按键报警规则")
@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);
} }
} }
...@@ -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;
...@@ -69,7 +70,7 @@ public class UserAppController { ...@@ -69,7 +70,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);
......
...@@ -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);
}
} }
...@@ -145,4 +145,10 @@ public class UserController { ...@@ -145,4 +145,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);
}
} }
...@@ -15,10 +15,7 @@ import java.time.format.DateTimeFormatter; ...@@ -15,10 +15,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;
/** /**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论