提交 bede2f8e 作者: 方治民

Merge branch 'dev_lijing' of https://gitlab.yiring.com/chemical-kesai/kshg-api into dev_fzm

 Conflicts:
	app/src/main/java/com/yiring/app/service/location/tag/impl/LocationTagServiceImpl.java
	app/src/main/java/com/yiring/app/web/map/MapController.java
	basic-common/core/build.gradle
...@@ -67,5 +67,5 @@ public class AlarmType implements Serializable { ...@@ -67,5 +67,5 @@ public class AlarmType implements Serializable {
@Comment(value = "是否删除") @Comment(value = "是否删除")
@Column(nullable = false) @Column(nullable = false)
Boolean deleted; private Boolean deleted;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.broadcast;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Entity;
import javax.persistence.Table;
import lombok.*;
import lombok.experimental.FieldDefaults;
import lombok.experimental.FieldNameConstants;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.CreationTimestamp;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_BROADCAST_AUDIO")
@Comment("播报语音")
public class BroadcastAudio extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = -7232247536987652847L;
@Comment("语音名称")
String name;
@Comment("语音地址")
String uri;
@Comment("上传时间")
@CreationTimestamp
LocalDateTime uploadTime;
@Comment("备注")
String describe;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.broadcast;
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/7
*/
@Repository
public interface BroadcastAudioRepository
extends JpaRepository<BroadcastAudio, Serializable>, JpaSpecificationExecutor<BroadcastAudio> {}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.key; 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;
/** /**
* *
* *
...@@ -8,4 +22,31 @@ package com.yiring.app.domain.key; ...@@ -8,4 +22,31 @@ package com.yiring.app.domain.key;
* @date 2022/5/6 * @date 2022/5/6
*/ */
public class KeyAlarm {} @Getter
@Setter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "BS_KEY_ALARM")
@Comment("按键报警规则")
public class KeyAlarm extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = -6050505164664867107L;
@Comment("地图 ID")
Long areaId;
@ManyToOne
@JoinColumn(name = "leader_id")
@JsonIgnore
@Comment("负责人")
User leader;
@Comment("报警状态")
Boolean enable;
}
/* (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 KeyAlarmRepository extends JpaRepository<KeyAlarm, Serializable>, JpaSpecificationExecutor<KeyAlarm> {}
...@@ -35,6 +35,6 @@ public interface LocationFenceRepository ...@@ -35,6 +35,6 @@ public interface LocationFenceRepository
* @param name 围栏名称 * @param name 围栏名称
* @return 围栏信息 * @return 围栏信息
*/ */
@Query("SELECT f FROM LocationFence f WHERE name like %?1%") @Query("SELECT f FROM LocationFence f WHERE name like %?1% AND deleted = false")
List<LocationFence> findLikeName(String name); List<LocationFence> findLikeName(String name);
} }
...@@ -99,7 +99,7 @@ public class LocationTag extends BasicEntity implements Serializable { ...@@ -99,7 +99,7 @@ public class LocationTag extends BasicEntity implements Serializable {
String voltUnit; String voltUnit;
@FieldMapping @FieldMapping
@Comment("类型(1:内部/2:访客/3:承包商)") @Comment("类型(1:内部/2:访客)")
Integer category; Integer category;
@Comment("最后定位坐标") @Comment("最后定位坐标")
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.rehearsal;
import com.yiring.app.domain.video.Video;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.Where;
import org.locationtech.jts.geom.Geometry;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 10:16
*/
@Getter
@Setter
@ToString
@SuperBuilder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
@Entity
@Where(clause = "deleted = false")
@Table(name = "BS_ACCIDENT_SPOT")
@Comment("事故点信息")
@EntityListeners(AuditingEntityListener.class)
public class AccidentSpot extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 3599118033272730887L;
@Comment("事故点名称")
private String name;
@Comment("地图id")
private Long mapId;
@Comment("地图名称")
private String mapName;
@Comment("空间信息")
@Type(type = "jts_geometry")
@Column(columnDefinition = "geometry")
private Geometry geometry;
@Comment("摄像头")
@ManyToOne
@JoinColumn(name = "video_id")
private Video video;
@Comment("超时时间(秒)")
private Integer timeoutDuration;
@Comment("消抖时间(秒)")
private Integer threshold;
@Comment("是否启用")
private Boolean enable;
@Comment(value = "是否删除")
@Column(nullable = false)
private Boolean deleted;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.rehearsal;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 10:24
*/
@Repository
public interface AccidentSpotRepository
extends JpaRepository<AccidentSpot, Serializable>, JpaSpecificationExecutor<AccidentSpot> {
/**
* 查询名称是否存在
* @param name 事故点名称
* @return true:存在 false:不存在
*/
Boolean existsByName(String name);
/**
* 根据名称查询所有事故点
* @param name 事故点名称
* @return 事故点信息
*/
List<AccidentSpot> findAllByName(String name);
/**
* 根据名称全模糊查询
* @param name 名称
* @return 事故点信息
*/
@Query("SELECT a FROM AccidentSpot a WHERE a.name like %?1% AND a.deleted = false")
List<AccidentSpot> findLikeName(String name);
/**
* 批量启用
* @param ids 事故点id集
* @param now 当前时间
* @return 启用了多少条数据
*/
@Query("UPDATE AccidentSpot SET enable = true,updateTime = :now WHERE id in (:ids) AND deleted = false")
@Modifying
int batchEnable(@Param("ids") Set<Long> ids, @Param("now") LocalDateTime now);
/**
* 批量停用
* @param ids 事故点id集
* @param now 当前时间
* @return 停用了多少条数据
*/
@Query("UPDATE AccidentSpot SET enable = false ,updateTime = :now WHERE id in (:ids) AND deleted = false")
@Modifying
int batchUnEnable(@Param("ids") Set<Long> ids, @Param("now") LocalDateTime now);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.rehearsal;
import com.yiring.app.domain.video.Video;
import com.yiring.common.domain.BasicEntity;
import java.io.Serial;
import java.io.Serializable;
import javax.persistence.*;
import lombok.*;
import lombok.experimental.FieldNameConstants;
import lombok.experimental.SuperBuilder;
import org.hibernate.annotations.Comment;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.Where;
import org.locationtech.jts.geom.Geometry;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 9:14
*/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@FieldNameConstants
@Entity
@SuperBuilder(toBuilder = true)
@Where(clause = "deleted = false")
@Table(name = "BS_EVACUATION_ZONE")
@Comment("撤离区信息")
@EntityListeners(AuditingEntityListener.class)
public class EvacuationZone extends BasicEntity implements Serializable {
@Serial
private static final long serialVersionUID = 2069438753104654297L;
@Comment("撤离区名称")
private String name;
@Comment("地图id")
private Long mapId;
@Comment("地图名称")
private String mapName;
@Comment("空间信息")
@Type(type = "jts_geometry")
@Column(columnDefinition = "geometry")
private Geometry geometry;
@Comment("摄像头")
@ManyToOne
@JoinColumn(name = "video_id")
private Video video;
@Comment("超时时间(秒)")
private Integer timeoutDuration;
@Comment("消抖时间(秒)")
private Integer threshold;
@Comment("是否启用")
private Boolean enable;
@Comment(value = "是否删除")
@Column(nullable = false)
private Boolean deleted;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.domain.rehearsal;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 9:19
*/
@Repository
public interface EvacuationZoneRepository
extends JpaRepository<EvacuationZone, Serializable>, JpaSpecificationExecutor<EvacuationZone> {
/**
* 判断名称是否存在
* @param name 撤离区名称
* @return true:存在 false:不存在
*/
boolean existsByName(String name);
/**
* 根据名称查询
* @param name 撤离区名称
* @return 撤离区列表
*/
List<EvacuationZone> findAllByName(String name);
/**
* 批量删除
* @param ids id集
* @param now 当前时间
* @return 删除了多少条
*/
@Query("UPDATE EvacuationZone SET deleted = true, updateTime = :now WHERE id in (:ids)")
@Modifying
int removeMany(@Param("ids") Set<Long> ids, @Param("now") LocalDateTime now);
/**
* 名称模糊查询撤离区
* @param name 名称
* @return 撤离区列表
*/
@Query("SELECT e FROM EvacuationZone e WHERE e.deleted = false AND e.name like %?1%")
List<EvacuationZone> findLikeName(String name);
/**
* 批量启用或停用撤离区
* @param enable 启用或停用
* @param ids 撤离区id集
* @param now 当前时间
* @return 改变了几条
*/
@Query("UPDATE EvacuationZone SET enable = :enable, updateTime = :now WHERE id in (:ids) AND deleted = false")
@Modifying
int changeEnable(@Param("enable") boolean enable, @Param("ids") Set<Long> ids, @Param("now") LocalDateTime now);
}
...@@ -13,7 +13,7 @@ import lombok.Data; ...@@ -13,7 +13,7 @@ import lombok.Data;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * 部门导出
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/22 * @date 2022/4/22
...@@ -34,21 +34,21 @@ public class DepartmentExportExcel implements Serializable { ...@@ -34,21 +34,21 @@ public class DepartmentExportExcel implements Serializable {
@ExcelColumn(title = "负责人") @ExcelColumn(title = "负责人")
String realName; String realName;
@ExcelColumn(title = "手机号") @ExcelColumn(title = "手机号")
String mobile; String mobile;
@ExcelColumn(title = "是否启用") @ExcelColumn(title = "状态")
String enable; String enable;
public static DepartmentExportExcel transform(Department department) { public static DepartmentExportExcel transform(Department department) {
DepartmentExportExcel departmentExportExcel = DepartmentExportExcel DepartmentExportExcel departmentExportExcel = DepartmentExportExcel
.builder() .builder()
.name(department.getName()) .name(department.getName())
.mobile(department.getLeader().getMobile()) .enable(ObjectUtil.equals(department.getEnable(), true) ? "启用" : "禁用")
.enable(department.getEnable() ? "启用" : "禁用")
.build(); .build();
if (ObjectUtil.isNotEmpty(department.getLeader())) { if (ObjectUtil.isNotEmpty(department.getLeader())) {
departmentExportExcel.setRealName(department.getLeader().getRealName()); departmentExportExcel.setRealName(department.getLeader().getRealName());
departmentExportExcel.setMobile(department.getLeader().getMobile());
} }
return departmentExportExcel; return departmentExportExcel;
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.location.beacon; package com.yiring.app.excel.location.beacon;
import cn.hutool.core.date.LocalDateTimeUtil;
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.location.LocationBeacon; import com.yiring.app.domain.location.LocationBeacon;
...@@ -12,7 +13,7 @@ import lombok.Data; ...@@ -12,7 +13,7 @@ import lombok.Data;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * 信标导出
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/29 * @date 2022/4/29
...@@ -30,7 +31,18 @@ public class LocationBeaconExportExcel implements Serializable { ...@@ -30,7 +31,18 @@ public class LocationBeaconExportExcel implements Serializable {
@ExcelColumn(title = "编号") @ExcelColumn(title = "编号")
String code; String code;
@ExcelColumn(title = "最后更新时间")
String time;
@ExcelColumn(title = "图层")
Long areaId;
public static LocationBeaconExportExcel transform(LocationBeacon locationBeacon) { public static LocationBeaconExportExcel transform(LocationBeacon locationBeacon) {
return LocationBeaconExportExcel.builder().code(locationBeacon.getCode()).build(); return LocationBeaconExportExcel
.builder()
.code(locationBeacon.getCode())
.time(LocalDateTimeUtil.format(locationBeacon.getTime(), "yyyy-MM-dd HH:mm:ss"))
.areaId(locationBeacon.getAreaId())
.build();
} }
} }
...@@ -30,7 +30,7 @@ public class LocationTagImportExcel implements Serializable { ...@@ -30,7 +30,7 @@ public class LocationTagImportExcel implements Serializable {
String code; String code;
// 标签型号 // 标签型号
@ExcelColumn(title = "标签型号") @ExcelColumn(title = "标签类型")
String type; String type;
// 设备编码 // 设备编码
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.excel.post; package com.yiring.app.excel.post;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn; import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
...@@ -20,7 +20,7 @@ import lombok.experimental.FieldDefaults; ...@@ -20,7 +20,7 @@ import lombok.experimental.FieldDefaults;
@Data @Data
@Builder @Builder
@FieldDefaults(level = AccessLevel.PRIVATE) @FieldDefaults(level = AccessLevel.PRIVATE)
public class PostExcel { public class PostExportExcel {
/*@ExcelColumn(title = "编号") /*@ExcelColumn(title = "编号")
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
...@@ -38,8 +38,8 @@ public class PostExcel { ...@@ -38,8 +38,8 @@ public class PostExcel {
@ExcelColumn(title = "创建时间") @ExcelColumn(title = "创建时间")
String createTime; String createTime;
public static PostExcel transform(Post post) { public static PostExportExcel transform(Post post) {
return PostExcel return PostExportExcel
.builder() .builder()
.name(post.getName()) .name(post.getName())
.describe(post.getDescribe()) .describe(post.getDescribe())
......
...@@ -25,18 +25,17 @@ public class UserExportExcel implements Serializable { ...@@ -25,18 +25,17 @@ public class UserExportExcel implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 7104402721241163991L; private static final long serialVersionUID = 7104402721241163991L;
@ExcelColumn(title = "真实姓名") @ExcelColumn(title = "姓名")
String realName; String realName;
@ExcelColumn(title = "工号") @ExcelColumn(title = "工号")
String uuid; String uuid;
// 图标类型
@ExcelColumn(title = "图标类型") @ExcelColumn(title = "图标类型")
String type; String type;
// 手机号 // 手机号
@ExcelColumn(title = "手机号") @ExcelColumn(title = "手机号")
String mobile; String mobile;
// 部门id // 部门id
...@@ -48,7 +47,7 @@ public class UserExportExcel implements Serializable { ...@@ -48,7 +47,7 @@ public class UserExportExcel implements Serializable {
String postName; String postName;
// 标签号 // 标签号
@ExcelColumn(title = "标签号") @ExcelColumn(title = "标签号")
String code; String code;
// 性别 // 性别
...@@ -56,7 +55,7 @@ public class UserExportExcel implements Serializable { ...@@ -56,7 +55,7 @@ public class UserExportExcel implements Serializable {
Boolean gender; Boolean gender;
// 是否为特殊人员 // 是否为特殊人员
@ExcelColumn(title = "是否为特殊人员") @ExcelColumn(title = "特殊人员")
Boolean isSpecial; Boolean isSpecial;
public static UserExportExcel transform(UserVo userVo) { public static UserExportExcel transform(UserVo userVo) {
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.excel.user;
import com.github.liaochong.myexcel.core.annotation.ExcelColumn;
import java.io.Serial;
import java.io.Serializable;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 用户批量绑卡
*
* @author LJ-2204
* @date 2022/5/9
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserSendCardExcel implements Serializable {
@Serial
private static final long serialVersionUID = -6094419272413042366L;
// 姓名
@ExcelColumn(title = "姓名")
String realName;
// 工号
@ExcelColumn(title = "工号")
String uuid;
// 标签号
@ExcelColumn(title = "标签编号")
String code;
}
...@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
/** /**
* 部门信息控制器 * zy信标
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/28 * @date 2022/4/28
......
...@@ -6,7 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient; ...@@ -6,7 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
* 部门信息控制器 * zy用户
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/5/5 * @date 2022/5/5
...@@ -23,15 +23,15 @@ public interface UserClient { ...@@ -23,15 +23,15 @@ public interface UserClient {
@DeleteMapping(value = "/position/staff/delete/{id}") @DeleteMapping(value = "/position/staff/delete/{id}")
JSONObject delete(@PathVariable("id") String id, @RequestHeader("Authorization") String token); JSONObject delete(@PathVariable("id") String id, @RequestHeader("Authorization") String token);
@GetMapping(value = "position/staff/unbind/{id}") @GetMapping(value = "position/staff/unbind/{ids}")
JSONObject unbind( JSONObject unbind(
@PathVariable("id") Long id, @PathVariable("ids") String ids,
@RequestParam("orgId") Integer orgId, @RequestParam("orgId") Integer orgId,
@RequestHeader("Authorization") String token @RequestHeader("Authorization") String token
); );
@GetMapping(value = "position/staff/bindTag/{id}/{code}/1") @GetMapping(value = "position/staff/bindTag/{id}/{code}/1")
JSONObject unbind( JSONObject bindTag(
@PathVariable("id") Long id, @PathVariable("id") Long id,
@PathVariable("code") String code, @PathVariable("code") String code,
@RequestParam("orgId") Integer orgId, @RequestParam("orgId") Integer orgId,
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import com.yiring.app.domain.broadcast.BroadcastAudio;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioAddParam implements Serializable {
@Serial
private static final long serialVersionUID = 7174160141071642430L;
@ApiModelProperty(value = "语音名称", example = "警告张三", required = true)
@NotEmpty(message = "语音名称不能为空")
String name;
@ApiModelProperty(value = "语音地址", example = "uri", required = true)
@NotEmpty(message = "语音地址不能为空")
String uri;
@ApiModelProperty(value = "备注", example = "请输入备注信息")
String describe;
public static BroadcastAudio transform(BroadcastAudioAddParam param) {
return BroadcastAudio.builder().name(param.getName()).uri(param.getUri()).describe(param.getDescribe()).build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
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/7
*/
@ApiModel("BroadcastAudioFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -7396234032011169171L;
@ApiModelProperty(value = "音频名称", example = "张三爱唱歌")
String name;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.broadcast;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 播报语音
*
* @author LJ-2204
* @date 2022/5/7
*/
@ApiModel("BroadcastAudioModifyParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 6319295457926858655L;
@ApiModelProperty(value = "主键", example = "1", required = true)
@NotNull(message = "主键不能为空")
Long id;
@ApiModelProperty(value = "语音名称", example = "警告张三", required = true)
@NotEmpty(message = "语音名称不能为空")
String name;
@ApiModelProperty(value = "语音地址", example = "uri", required = true)
@NotEmpty(message = "语音地址不能为空")
String uri;
@ApiModelProperty(value = "备注", example = "请输入备注信息")
String describe;
}
...@@ -46,6 +46,9 @@ public class DepartmentModifyParam implements Serializable { ...@@ -46,6 +46,9 @@ public class DepartmentModifyParam implements Serializable {
@ApiModelProperty(value = "负责人", example = "1") @ApiModelProperty(value = "负责人", example = "1")
Long leaderId; Long leaderId;
@ApiModelProperty(value = "部门状态", example = "T/F")
Boolean enable;
public void transform(DepartmentModifyParam departmentModifyParam, Department department) { public void transform(DepartmentModifyParam departmentModifyParam, Department department) {
department.setPid(departmentModifyParam.getPid()); department.setPid(departmentModifyParam.getPid());
department.setName(departmentModifyParam.getName()); department.setName(departmentModifyParam.getName());
...@@ -53,5 +56,6 @@ public class DepartmentModifyParam implements Serializable { ...@@ -53,5 +56,6 @@ public class DepartmentModifyParam implements Serializable {
department.setLeader(User.builder().id(departmentModifyParam.getLeaderId()).build()); department.setLeader(User.builder().id(departmentModifyParam.getLeaderId()).build());
} }
department.setUpdateTime(LocalDateTimeUtil.now()); department.setUpdateTime(LocalDateTimeUtil.now());
department.setEnable(departmentModifyParam.getEnable());
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.key;
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/10
*/
@ApiModel("KeyAlarmFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -1011171442882543071L;
@ApiModelProperty(value = "地图总图", example = "1")
Long areaId;
@ApiModelProperty(value = "报警人员", example = "张三")
String name;
@ApiModelProperty(value = "报警状态", example = "T/F")
Boolean enable;
@ApiModelProperty(value = "开始时间", example = "2022-11-11 22:22:22")
LocalDateTime createTime;
@ApiModelProperty(value = "结束时间", example = "2022-11-11 22:22:22")
LocalDateTime endTime;
}
...@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -28,7 +29,7 @@ public class KeyAlarmRulesAddParam implements Serializable { ...@@ -28,7 +29,7 @@ public class KeyAlarmRulesAddParam implements Serializable {
private static final long serialVersionUID = 758462772473378637L; private static final long serialVersionUID = 758462772473378637L;
@ApiModelProperty(value = "部门id", example = "100", required = true) @ApiModelProperty(value = "部门id", example = "100", required = true)
@NotEmpty(message = "部门ID不能为空") @NotNull(message = "部门ID不能为空")
Long deptId; Long deptId;
@ApiModelProperty(value = "用户ids", example = "1111,2222", required = true) @ApiModelProperty(value = "用户ids", example = "1111,2222", required = true)
......
...@@ -48,7 +48,7 @@ public class LocationFenceModifyParam { ...@@ -48,7 +48,7 @@ public class LocationFenceModifyParam {
@Range(min = FenceTypeEnum.MIN, max = FenceTypeEnum.MAX, message = "请选择正确的围栏类别") @Range(min = FenceTypeEnum.MIN, max = FenceTypeEnum.MAX, message = "请选择正确的围栏类别")
private Integer fenceType; private Integer fenceType;
@ApiModelProperty(value = "空间信息", example = "1") @ApiModelProperty(value = "空间信息")
private Geometry geometry; private Geometry geometry;
@ApiModelProperty(value = "滞留时间(秒)", example = "1") @ApiModelProperty(value = "滞留时间(秒)", example = "1")
......
...@@ -10,7 +10,7 @@ import lombok.*; ...@@ -10,7 +10,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * 定位标签导出
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/27 * @date 2022/4/27
......
...@@ -34,4 +34,7 @@ public class LocationTagFindParam implements Serializable { ...@@ -34,4 +34,7 @@ public class LocationTagFindParam implements Serializable {
@ApiModelProperty(value = "状态", example = "true") @ApiModelProperty(value = "状态", example = "true")
Boolean silent; Boolean silent;
@ApiModelProperty(value = "绑卡状态", example = "true")
Boolean used;
} }
...@@ -30,5 +30,5 @@ public class LocationTagTypeFindParam implements Serializable { ...@@ -30,5 +30,5 @@ public class LocationTagTypeFindParam implements Serializable {
String code; String code;
@ApiModelProperty(value = "类别", example = "1内部/2访客") @ApiModelProperty(value = "类别", example = "1内部/2访客")
Integer category; String category;
} }
...@@ -10,7 +10,7 @@ import lombok.*; ...@@ -10,7 +10,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * 分配标签
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/28 * @date 2022/4/28
...@@ -32,5 +32,5 @@ public class LocationTagTypeSendParam implements Serializable { ...@@ -32,5 +32,5 @@ public class LocationTagTypeSendParam implements Serializable {
String ids; String ids;
@ApiModelProperty(value = "类别", example = "1内部/2访客") @ApiModelProperty(value = "类别", example = "1内部/2访客")
Integer category; String category;
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.rehearsal;
import com.yiring.app.domain.rehearsal.AccidentSpot;
import com.yiring.app.domain.video.Video;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 10:59
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("添加事故点参数")
public class AccidentSpotAddParam implements Serializable {
@Serial
private static final long serialVersionUID = 5678801405341645678L;
@ApiModelProperty(value = "事故点名称", example = "事故点1", required = true)
@NotEmpty(message = "事故点名称不能为空")
private String name;
@ApiModelProperty(value = "地图id", example = "1", required = true)
@NotNull(message = "地图id不能为空")
private Long mapId;
@ApiModelProperty(value = "地图名称", example = "总图", required = true)
@NotEmpty(message = "地图名称不能为空")
private String mapName;
@ApiModelProperty(value = "空间信息")
@NotNull(message = "空间信息不能为空")
private Geometry geometry;
@ApiModelProperty(value = "摄像头id", example = "1")
private Long videoId;
@ApiModelProperty(value = "超时时间(秒)", example = "100", required = true)
@NotNull(message = "超市时间不能为空")
private Integer timeoutDuration;
@ApiModelProperty(value = "消抖时间(秒)", example = "100", required = true)
@NotNull(message = "消抖时间不能为空")
private Integer threshold;
public AccidentSpot transform() {
Video video = Video.builder().id(videoId).build();
return AccidentSpot
.builder()
.name(name)
.mapId(mapId)
.mapName(mapName)
.geometry(geometry)
.video(video)
.timeoutDuration(timeoutDuration)
.threshold(threshold)
.enable(false)
.deleted(false)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.rehearsal;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 10:48
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("事故点查询条件")
public class AccidentSpotConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = 3434244613930014725L;
@ApiModelProperty(value = "事故点名称", example = "工作区域")
private String name;
@ApiModelProperty(value = "地图id", example = "1", required = true)
@NotNull(message = "请选择一个地图")
private Long mapId;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.rehearsal;
import com.yiring.app.domain.rehearsal.AccidentSpot;
import com.yiring.app.domain.video.Video;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 10:59
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("添加事故点参数")
public class AccidentSpotModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = 5678801405341645678L;
@ApiModelProperty(value = "事故点id", example = "1", required = true)
@NotNull(message = "请选择一个事故点id")
private Long id;
@ApiModelProperty(value = "事故点名称", example = "事故点1", required = true)
private String name;
@ApiModelProperty(value = "地图id", example = "1", required = true)
private Long mapId;
@ApiModelProperty(value = "地图名称", example = "总图", required = true)
private String mapName;
@ApiModelProperty(value = "空间信息")
private Geometry geometry;
@ApiModelProperty(value = "摄像头id", example = "1")
private Long videoId;
@ApiModelProperty(value = "超时时间(秒)", example = "100", required = true)
private Integer timeoutDuration;
@ApiModelProperty(value = "消抖时间(秒)", example = "100", required = true)
private Integer threshold;
public AccidentSpot transform() {
Video video = Video.builder().id(videoId).build();
return AccidentSpot
.builder()
.id(id)
.name(name)
.mapId(mapId)
.mapName(mapName)
.geometry(geometry)
.video(video)
.timeoutDuration(timeoutDuration)
.threshold(threshold)
.enable(false)
.deleted(false)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.rehearsal;
import com.yiring.app.domain.rehearsal.EvacuationZone;
import com.yiring.app.domain.video.Video;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 9:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("撤离区添加param")
public class EvacuationZoneAddParam implements Serializable {
@Serial
private static final long serialVersionUID = -7802093296111267529L;
@ApiModelProperty(value = "撤离区名称", example = "撤离区1", required = true)
@NotEmpty(message = "撤离区名称不能为空")
private String name;
@ApiModelProperty(value = "地图id", example = "1", required = true)
@NotNull(message = "地图id不能为空")
private Long mapId;
@ApiModelProperty(value = "地图名称", example = "总图", required = true)
@NotEmpty(message = "地图名称不能为空")
private String mapName;
@ApiModelProperty(value = "空间信息", required = true)
@NotNull(message = "空间信息不能为空")
private Geometry geometry;
@ApiModelProperty(value = "摄像头id", example = "1516223754600976384")
private Long videoId;
@ApiModelProperty(value = "超时时间(秒)", example = "20", required = true)
@NotNull(message = "超时时间不能为空")
private Integer timeoutDuration;
@ApiModelProperty(value = "消抖时间(秒)", example = "10", required = true)
@NotNull(message = "消抖时间不能为空")
private Integer threshold;
public EvacuationZone transform() {
Video video = Video.builder().id(videoId).build();
return EvacuationZone
.builder()
.name(name)
.mapId(mapId)
.mapName(mapName)
.geometry(geometry)
.video(video)
.timeoutDuration(timeoutDuration)
.threshold(threshold)
.enable(false)
.deleted(false)
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.rehearsal;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 9:46
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("撤离区查询条件param")
public class EvacuationZoneConditionParam implements Serializable {
@Serial
private static final long serialVersionUID = -5269335791931545685L;
@ApiModelProperty(value = "事故点名称", example = "工作区域")
private String name;
@ApiModelProperty(value = "地图id", example = "1", required = true)
@NotNull(message = "请选择一个地图")
private Long mapId;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.param.rehearsal;
import com.yiring.app.domain.rehearsal.EvacuationZone;
import com.yiring.app.domain.video.Video;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 9:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("撤离区修改param")
public class EvacuationZoneModifyParam implements Serializable {
@Serial
private static final long serialVersionUID = -7802093296111267529L;
@ApiModelProperty(value = "撤离区id", example = "1", required = true)
private Long id;
@ApiModelProperty(value = "撤离区名称", example = "撤离区1")
private String name;
@ApiModelProperty(value = "地图id", example = "1")
private Long mapId;
@ApiModelProperty(value = "地图名称", example = "总图")
private String mapName;
@ApiModelProperty(value = "空间信息")
private Geometry geometry;
@ApiModelProperty(value = "摄像头id", example = "1519550823770624000")
private Long videoId;
@ApiModelProperty(value = "超时时间(秒)", example = "20")
private Integer timeoutDuration;
@ApiModelProperty(value = "消抖时间(秒)", example = "10")
private Integer threshold;
public EvacuationZone transform() {
Video video = Video.builder().id(videoId).build();
return EvacuationZone
.builder()
.id(id)
.name(name)
.mapId(mapId)
.mapName(mapName)
.geometry(geometry)
.video(video)
.timeoutDuration(timeoutDuration)
.threshold(threshold)
.enable(false)
.deleted(false)
.build();
}
}
...@@ -10,7 +10,7 @@ import lombok.*; ...@@ -10,7 +10,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * zy标签
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/5/6 * @date 2022/5/6
...@@ -32,7 +32,7 @@ public class ZyLocationTagTypeSendParam implements Serializable { ...@@ -32,7 +32,7 @@ public class ZyLocationTagTypeSendParam implements Serializable {
Long[] ids; Long[] ids;
@ApiModelProperty(value = "类别", example = "1:内部/2:访客") @ApiModelProperty(value = "类别", example = "1:内部/2:访客")
Integer category; String category;
@ApiModelProperty(value = "工厂ID", example = "100") @ApiModelProperty(value = "工厂ID", example = "100")
Integer orgId; Integer orgId;
......
...@@ -9,7 +9,7 @@ import lombok.*; ...@@ -9,7 +9,7 @@ import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
/** /**
* 部门信息控制器 * zy用户
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/5/5 * @date 2022/5/5
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.broadcast;
import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* 播报语音
*
* @author LJ-2204
* @date 2022/5/7
*/
public interface BroadcastAudioService {
/**
* 添加播报语音
* @param param BroadcastAudioAddParam
* @return Result<String>
*/
Result<String> save(BroadcastAudioAddParam param);
/**
* 删除播报语音
* @param idParam IdParam
* @return Result<String>
*/
Result<String> delete(IdParam idParam);
/**
* 修改播报语音
* @param param BroadcastAudioModifyParam
* @return Result<String>
*/
Result<String> modify(BroadcastAudioModifyParam param);
/**
* 表格查询
* @param param BroadcastAudioFindParam
* @param pageParam PageParam
* @return Result<PageVo<BroadcastAudioVo>>
*/
Result<PageVo<BroadcastAudioVo>> page(BroadcastAudioFindParam param, PageParam pageParam);
/**
* 播报语音检索
* @param indexParam IndexParam
* @return Result<PageVo<BroadcastAudioIndexVo>>
*/
Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.broadcast.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import com.yiring.app.domain.broadcast.BroadcastAudio;
import com.yiring.app.domain.broadcast.BroadcastAudioRepository;
import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.service.broadcast.BroadcastAudioService;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.List;
import java.util.Optional;
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/7
*/
@Slf4j
@Transactional(rollbackFor = RuntimeException.class)
@Service
public class BroadcastAudioServiceImpl implements BroadcastAudioService {
@Resource
BroadcastAudioRepository broadcastAudioRepository;
@Override
public Result<String> save(BroadcastAudioAddParam param) {
broadcastAudioRepository.save(BroadcastAudioAddParam.transform(param));
return Result.ok();
}
@Override
public Result<String> delete(IdParam idParam) {
Optional<BroadcastAudio> byId = broadcastAudioRepository.findById(idParam.getId());
if (byId.isEmpty()) return Result.no(Status.BAD_REQUEST, "信息不存在");
BroadcastAudio broadcastAudio = byId.get();
broadcastAudioRepository.delete(broadcastAudio);
return Result.ok();
}
@Override
public Result<String> modify(BroadcastAudioModifyParam param) {
Optional<BroadcastAudio> byId = broadcastAudioRepository.findById(param.getId());
if (byId.isEmpty()) return Result.no(Status.BAD_REQUEST, "信息不存在");
BroadcastAudio broadcastAudio = byId.get();
broadcastAudio.setDescribe(param.getDescribe());
broadcastAudio.setName(param.getName());
broadcastAudio.setUri(param.getUri());
broadcastAudioRepository.save(broadcastAudio);
return Result.ok();
}
@Override
public Result<PageVo<BroadcastAudioVo>> page(BroadcastAudioFindParam param, PageParam pageParam) {
Specification<BroadcastAudio> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (ObjectUtil.isNotEmpty(param.getName())) {
predicates.add(cb.like(root.get(BroadcastAudio.Fields.name), "%" + param.getName() + "%"));
}
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<BroadcastAudio> broadcastAudios = broadcastAudioRepository.findAll(specification, pageable);
List<BroadcastAudioVo> broadcastAudioVos = broadcastAudios
.getContent()
.stream()
.map(BroadcastAudioVo::transform)
.collect(Collectors.toList());
PageVo<BroadcastAudioVo> pageVo = PageVo.build(broadcastAudioVos, broadcastAudios.getTotalElements());
return Result.ok(pageVo);
}
@Override
public Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam) {
Specification<BroadcastAudio> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
if (ObjectUtil.isNotEmpty(indexParam.getStr())) {
predicates.add(cb.like(root.get(BroadcastAudio.Fields.name), "%" + indexParam.getStr() + "%"));
}
Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
};
List<BroadcastAudio> broadcastAudios = broadcastAudioRepository.findAll(specification);
List<BroadcastAudioIndexVo> broadcastAudioIndexVos = broadcastAudios
.stream()
.map(BroadcastAudioIndexVo::transform)
.collect(Collectors.toList());
PageVo<BroadcastAudioIndexVo> pageVo = PageVo.build(broadcastAudioIndexVos, broadcastAudioIndexVos.size());
return Result.ok(pageVo);
}
}
...@@ -77,7 +77,7 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -77,7 +77,7 @@ public class DepartmentServiceImpl implements DepartmentService {
public Result<String> addDepartment(DepartmentAddParam departmentAddParam) { public Result<String> addDepartment(DepartmentAddParam departmentAddParam) {
// 查询用户相关信息 // 查询用户相关信息
Optional<User> userOptional = userRepository.findOne( Optional<User> userOptional = userRepository.findOne(
Example.of(User.builder().id(departmentAddParam.getId()).build()) Example.of(User.builder().id(departmentAddParam.getLeaderId()).build())
); );
Department department = DepartmentAddParam.transform(departmentAddParam); Department department = DepartmentAddParam.transform(departmentAddParam);
userOptional.ifPresent(department::setLeader); userOptional.ifPresent(department::setLeader);
...@@ -101,7 +101,7 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -101,7 +101,7 @@ public class DepartmentServiceImpl implements DepartmentService {
ZyUtil.clientLogin() ZyUtil.clientLogin()
); );
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) { if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg"))); return Result.no(Status.BAD_REQUEST, StrUtil.toString(jsonObject.get("msg")));
} }
ZyDepartmentFindParam zyDepartmentFindParam = ZyDepartmentFindParam ZyDepartmentFindParam zyDepartmentFindParam = ZyDepartmentFindParam
...@@ -205,7 +205,7 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -205,7 +205,7 @@ public class DepartmentServiceImpl implements DepartmentService {
JSONObject jsonObject = departmentClient.deptDelete(departmentOptional.get().getLinkId(), ZyUtil.clientLogin()); JSONObject jsonObject = departmentClient.deptDelete(departmentOptional.get().getLinkId(), ZyUtil.clientLogin());
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) { if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg"))); return Result.no(Status.BAD_REQUEST, StrUtil.toString(jsonObject.get("msg")));
} }
departmentRepository.deleteById(idParam.getId()); departmentRepository.deleteById(idParam.getId());
return Result.ok(); return Result.ok();
...@@ -250,6 +250,9 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -250,6 +250,9 @@ public class DepartmentServiceImpl implements DepartmentService {
return Result.no(Status.BAD_REQUEST); return Result.no(Status.BAD_REQUEST);
} }
Department department = departmentOptional.get();
departmentModifyParam.transform(departmentModifyParam, department);
Long linkId = pidDeptOptional.get().getLinkId(); Long linkId = pidDeptOptional.get().getLinkId();
ZyDepartmentModifyParam zyDepartmentModifyParam = ZyDepartmentModifyParam.transform( ZyDepartmentModifyParam zyDepartmentModifyParam = ZyDepartmentModifyParam.transform(
...@@ -263,11 +266,9 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -263,11 +266,9 @@ public class DepartmentServiceImpl implements DepartmentService {
); );
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) { if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg"))); return Result.no(Status.BAD_REQUEST, StrUtil.toString(jsonObject.get("msg")));
} }
Department department = departmentOptional.get();
departmentModifyParam.transform(departmentModifyParam, department);
departmentRepository.save(department); departmentRepository.save(department);
return Result.ok(); return Result.ok();
} }
...@@ -285,7 +286,7 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -285,7 +286,7 @@ public class DepartmentServiceImpl implements DepartmentService {
.read(inputStream); .read(inputStream);
} catch (IOException e) { } catch (IOException e) {
log.info(e.getMessage()); log.info(e.getMessage());
throw new RuntimeException("文件导入异常"); return Result.no(Status.BAD_REQUEST, "文件导入异常");
} }
// 拿到所有部门 // 拿到所有部门
...@@ -363,6 +364,7 @@ public class DepartmentServiceImpl implements DepartmentService { ...@@ -363,6 +364,7 @@ public class DepartmentServiceImpl implements DepartmentService {
return departmentVos return departmentVos
.stream() .stream()
.filter(departmentVo -> pid.equals(departmentVo.getPid())) .filter(departmentVo -> pid.equals(departmentVo.getPid()))
.sorted(Comparator.comparing(DepartmentVo::getCreateTime).reversed())
.peek(departmentVo -> { .peek(departmentVo -> {
departmentVo.setPName(pName); departmentVo.setPName(pName);
departmentVo.setChildList(getChildrenList(departmentVo.getId(), departmentVo.getName(), departmentVos)); departmentVo.setChildList(getChildrenList(departmentVo.getId(), departmentVo.getName(), departmentVos));
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.key;
import com.yiring.app.param.key.KeyAlarmFindParam;
import com.yiring.app.vo.key.KeyAlarmVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* 部门信息控制器
*
* @author LJ-2204
* @date 2022/5/10
*/
public interface KeyAlarmService {
/**
* 表格查询
* @param param KeyAlarmFindParam
* @param pageParam PageParam
* @return Result<PageVo<KeyAlarmVo>>
*/
Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.key.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.yiring.app.domain.key.KeyAlarm;
import com.yiring.app.domain.key.KeyAlarmRepository;
import com.yiring.app.domain.key.KeyAlarmRules;
import com.yiring.app.domain.key.KeyAlarmRulesRepository;
import com.yiring.app.param.key.KeyAlarmFindParam;
import com.yiring.app.service.key.KeyAlarmService;
import com.yiring.app.vo.key.KeyAlarmVo;
import com.yiring.app.vo.user.UserVo;
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.Optional;
import java.util.Set;
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/10
*/
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class KeyAlarmServiceImpl implements KeyAlarmService {
@Resource
KeyAlarmRepository keyAlarmRepository;
@Resource
KeyAlarmRulesRepository keyAlarmRulesRepository;
@Override
public Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam) {
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();
};
Pageable pageable = PageRequest.of(pageParam.getPageNo() - 1, pageParam.getPageSize());
Page<KeyAlarm> keyAlarms = keyAlarmRepository.findAll(specification, pageable);
List<KeyAlarmVo> keyAlarmVos = keyAlarms
.getContent()
.stream()
.map(keyAlarm -> {
KeyAlarmVo keyAlarmVo = KeyAlarmVo.transform(keyAlarm);
User leader = keyAlarm.getLeader();
if (ObjectUtil.isNotEmpty(leader)) {
UserVo userVo = UserVo
.builder()
.id(leader.getId())
.realName(leader.getRealName())
.uuid(leader.getUuid())
.departmentId(leader.getDepartment().getId())
.build();
keyAlarmVo.setUser(userVo);
}
Optional<KeyAlarmRules> keyAlarmRulesOptional = keyAlarmRulesRepository.findById(
leader.getDepartment().getId()
);
if (keyAlarmRulesOptional.isPresent()) {
KeyAlarmRules keyAlarmRules = keyAlarmRulesOptional.get();
Set<User> users = keyAlarmRules.getUsers();
List<String> names = users.stream().map(User::getRealName).collect(Collectors.toList());
keyAlarmVo.setReceiver(StrUtil.join(",", names));
}
return keyAlarmVo;
})
.collect(Collectors.toList());
PageVo<KeyAlarmVo> pageVo = PageVo.build(keyAlarmVos, keyAlarms.getTotalElements());
return Result.ok(pageVo);
}
}
...@@ -15,6 +15,7 @@ import com.yiring.app.param.location.beacon.LocationBeaconAddParam; ...@@ -15,6 +15,7 @@ import com.yiring.app.param.location.beacon.LocationBeaconAddParam;
import com.yiring.app.param.location.beacon.LocationBeaconExportParam; import com.yiring.app.param.location.beacon.LocationBeaconExportParam;
import com.yiring.app.param.location.beacon.LocationBeaconFindParam; import com.yiring.app.param.location.beacon.LocationBeaconFindParam;
import com.yiring.app.service.location.beacon.LocationBeaconService; import com.yiring.app.service.location.beacon.LocationBeaconService;
import com.yiring.app.util.GeoUtils;
import com.yiring.app.util.zy.ZyUtil; import com.yiring.app.util.zy.ZyUtil;
import com.yiring.app.vo.location.beacon.LocationBeaconVo; import com.yiring.app.vo.location.beacon.LocationBeaconVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
...@@ -191,8 +192,12 @@ public class LocationBeaconServiceImpl implements LocationBeaconService { ...@@ -191,8 +192,12 @@ public class LocationBeaconServiceImpl implements LocationBeaconService {
locationBeacon.setTime(locationBeaconAddParam.getTime()); locationBeacon.setTime(locationBeaconAddParam.getTime());
locationBeacon.setVolt(locationBeaconAddParam.getVolt()); locationBeacon.setVolt(locationBeaconAddParam.getVolt());
locationBeacon.setVoltUnit(locationBeaconAddParam.getVoltUnit()); locationBeacon.setVoltUnit(locationBeaconAddParam.getVoltUnit());
// locationBeacon.setPoint(GeoUtils.xyzToPoint( locationBeacon.setPoint(
// locationBeaconAddParam.getPointX().doubleValue(),locationBeaconAddParam.getPointY().doubleValue(),locationBeaconAddParam.getPointZ().doubleValue() GeoUtils.xyzToPoint(
// )); locationBeaconAddParam.getX().doubleValue(),
locationBeaconAddParam.getY().doubleValue(),
locationBeaconAddParam.getZ().doubleValue()
)
);
} }
} }
...@@ -4,6 +4,7 @@ package com.yiring.app.service.location.fence; ...@@ -4,6 +4,7 @@ package com.yiring.app.service.location.fence;
import com.yiring.app.param.location.fence.LocationFenceAddParam; import com.yiring.app.param.location.fence.LocationFenceAddParam;
import com.yiring.app.param.location.fence.LocationFenceConditionParam; import com.yiring.app.param.location.fence.LocationFenceConditionParam;
import com.yiring.app.param.location.fence.LocationFenceModifyParam; import com.yiring.app.param.location.fence.LocationFenceModifyParam;
import com.yiring.app.vo.CodeNameVo;
import com.yiring.app.vo.location.fence.LocationFenceSearchVo; import com.yiring.app.vo.location.fence.LocationFenceSearchVo;
import com.yiring.app.vo.location.fence.LocationFenceVo; import com.yiring.app.vo.location.fence.LocationFenceVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
...@@ -60,4 +61,10 @@ public interface LocationFenceService { ...@@ -60,4 +61,10 @@ public interface LocationFenceService {
* @return 围栏信息 * @return 围栏信息
*/ */
Result<PageVo<LocationFenceSearchVo>> findByNameLike(String name); Result<PageVo<LocationFenceSearchVo>> findByNameLike(String name);
/**
* 获取地图下拉框
* @return 地图下拉框
*/
Result<PageVo<CodeNameVo>> findMapList();
} }
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.location.fence.impl; package com.yiring.app.service.location.fence.impl;
import com.alibaba.fastjson.JSONArray;
import com.yiring.app.constant.RedisKey;
import com.yiring.app.domain.location.LocationFence; import com.yiring.app.domain.location.LocationFence;
import com.yiring.app.domain.location.LocationFenceRepository; import com.yiring.app.domain.location.LocationFenceRepository;
import com.yiring.app.param.location.fence.LocationFenceAddParam; import com.yiring.app.param.location.fence.LocationFenceAddParam;
...@@ -8,8 +10,11 @@ import com.yiring.app.param.location.fence.LocationFenceConditionParam; ...@@ -8,8 +10,11 @@ import com.yiring.app.param.location.fence.LocationFenceConditionParam;
import com.yiring.app.param.location.fence.LocationFenceModifyParam; import com.yiring.app.param.location.fence.LocationFenceModifyParam;
import com.yiring.app.service.location.fence.LocationFenceService; import com.yiring.app.service.location.fence.LocationFenceService;
import com.yiring.app.util.JpaUtil; import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.CodeNameVo;
import com.yiring.app.vo.location.fence.LocationFenceSearchVo; import com.yiring.app.vo.location.fence.LocationFenceSearchVo;
import com.yiring.app.vo.location.fence.LocationFenceVo; import com.yiring.app.vo.location.fence.LocationFenceVo;
import com.yiring.app.vo.map.MapVo;
import com.yiring.common.core.Redis;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam; import com.yiring.common.param.IdParam;
...@@ -42,6 +47,9 @@ public class LocationFenceServiceImpl implements LocationFenceService { ...@@ -42,6 +47,9 @@ public class LocationFenceServiceImpl implements LocationFenceService {
@Resource @Resource
private LocationFenceRepository locationFenceRepository; private LocationFenceRepository locationFenceRepository;
@Resource
private Redis redis;
@Override @Override
public Result<String> addLocationFence(LocationFenceAddParam param) { public Result<String> addLocationFence(LocationFenceAddParam param) {
Boolean exists = locationFenceRepository.existsByName(param.getName()); Boolean exists = locationFenceRepository.existsByName(param.getName());
...@@ -129,4 +137,17 @@ public class LocationFenceServiceImpl implements LocationFenceService { ...@@ -129,4 +137,17 @@ public class LocationFenceServiceImpl implements LocationFenceService {
PageVo<LocationFenceSearchVo> pageVo = PageVo.build(voList, voList.size()); PageVo<LocationFenceSearchVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public Result<PageVo<CodeNameVo>> findMapList() {
Object map = redis.get(RedisKey.ZY_MAP_AREAS);
String mapString = JSONArray.toJSONString(map);
List<MapVo.MapVoReuslt> mapVo = JSONArray.parseArray(mapString, MapVo.MapVoReuslt.class);
List<CodeNameVo> voList = mapVo
.stream()
.map(e -> new CodeNameVo(e.getId(), e.getName()))
.collect(Collectors.toList());
PageVo<CodeNameVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
} }
...@@ -358,6 +358,10 @@ public class LocationTagServiceImpl implements LocationTagService { ...@@ -358,6 +358,10 @@ public class LocationTagServiceImpl implements LocationTagService {
predicates.add(cb.equal(root.get(LocationTag.Fields.silent), locationTagFindParam.getSilent())); predicates.add(cb.equal(root.get(LocationTag.Fields.silent), locationTagFindParam.getSilent()));
} }
if (ObjectUtil.isNotEmpty(locationTagFindParam.getUsed())) {
predicates.add(cb.equal(root.get(LocationTag.Fields.used), locationTagFindParam.getUsed()));
}
Order order = cb.desc(root.get(BasicEntity.Fields.createTime)); Order order = cb.desc(root.get(BasicEntity.Fields.createTime));
return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction(); return cq.orderBy(order).where(predicates.toArray(new Predicate[0])).getRestriction();
......
...@@ -17,6 +17,7 @@ import com.yiring.app.service.location.tag.LocationTagTypeService; ...@@ -17,6 +17,7 @@ import com.yiring.app.service.location.tag.LocationTagTypeService;
import com.yiring.app.util.zy.ZyUtil; import com.yiring.app.util.zy.ZyUtil;
import com.yiring.app.vo.location.tag.LocationTagTypeVo; import com.yiring.app.vo.location.tag.LocationTagTypeVo;
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.PageParam; import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo; import com.yiring.common.vo.PageVo;
...@@ -34,7 +35,7 @@ import org.springframework.stereotype.Service; ...@@ -34,7 +35,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
/** /**
* 部门信息控制器 * 标签分配
* *
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/27 * @date 2022/4/27
...@@ -90,7 +91,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService { ...@@ -90,7 +91,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService {
ZyLocationTagTypeSendParam zyLocationTagTypeSendParam = ZyLocationTagTypeSendParam ZyLocationTagTypeSendParam zyLocationTagTypeSendParam = ZyLocationTagTypeSendParam
.builder() .builder()
.orgId(FACTORY_ID) .orgId(FACTORY_ID)
.category(locationtagtypeSendParam.getCategory()) .category(Convert.toStr(locationtagtypeSendParam.getCategory()))
.build(); .build();
String[] split = locationtagtypeSendParam.getIds().split(","); String[] split = locationtagtypeSendParam.getIds().split(",");
...@@ -107,7 +108,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService { ...@@ -107,7 +108,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService {
ZyUtil.manageLogin() ZyUtil.manageLogin()
); );
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) { if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg"))); return Result.no(Status.BAD_REQUEST, StrUtil.toString(jsonObject.get("msg")));
} }
Specification<LocationTag> specification = (root, cq, cb) -> { Specification<LocationTag> specification = (root, cq, cb) -> {
...@@ -125,7 +126,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService { ...@@ -125,7 +126,7 @@ public class LocationTagTypeServiceImpl implements LocationTagTypeService {
locationTags = locationTags =
locationTags locationTags
.stream() .stream()
.peek(locationTag -> locationTag.setCategory(locationtagtypeSendParam.getCategory())) .peek(locationTag -> locationTag.setCategory(Convert.toInt(locationtagtypeSendParam.getCategory())))
.collect(Collectors.toList()); .collect(Collectors.toList());
locationTagRepository.saveAll(locationTags); locationTagRepository.saveAll(locationTags);
return Result.ok(); return Result.ok();
......
...@@ -5,6 +5,7 @@ import cn.hutool.core.collection.ListUtil; ...@@ -5,6 +5,7 @@ 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.github.liaochong.myexcel.core.DefaultStreamExcelBuilder;
import com.yiring.app.excel.post.PostExportExcel;
import com.yiring.app.param.post.*; import com.yiring.app.param.post.*;
import com.yiring.app.service.post.PostService; import com.yiring.app.service.post.PostService;
import com.yiring.app.vo.post.PostIndexVo; import com.yiring.app.vo.post.PostIndexVo;
...@@ -12,7 +13,6 @@ import com.yiring.app.vo.post.PostInfoVo; ...@@ -12,7 +13,6 @@ import com.yiring.app.vo.post.PostInfoVo;
import com.yiring.app.vo.post.PostVo; import com.yiring.app.vo.post.PostVo;
import com.yiring.auth.domain.post.Post; import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.post.PostRepository; import com.yiring.auth.domain.post.PostRepository;
import com.yiring.auth.excel.post.PostExcel;
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;
...@@ -147,10 +147,13 @@ public class PostServiceImpl implements PostService { ...@@ -147,10 +147,13 @@ public class PostServiceImpl implements PostService {
}; };
List<Post> postList = postRepository.findAll(specification); List<Post> postList = postRepository.findAll(specification);
List<PostExcel> postExcels = postList.stream().map(PostExcel::transform).collect(Collectors.toList()); List<PostExportExcel> postExcels = postList
.stream()
.map(PostExportExcel::transform)
.collect(Collectors.toList());
try ( try (
DefaultStreamExcelBuilder<PostExcel> streamExcelBuilder = DefaultStreamExcelBuilder DefaultStreamExcelBuilder<PostExportExcel> streamExcelBuilder = DefaultStreamExcelBuilder
.of(PostExcel.class) .of(PostExportExcel.class)
.threadPool(Executors.newFixedThreadPool(2)) .threadPool(Executors.newFixedThreadPool(2))
.rowHeight(14) .rowHeight(14)
.titleRowHeight(14) .titleRowHeight(14)
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.rehearsal;
import com.yiring.app.param.rehearsal.AccidentSpotAddParam;
import com.yiring.app.param.rehearsal.AccidentSpotConditionParam;
import com.yiring.app.param.rehearsal.AccidentSpotModifyParam;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.rehearsal.AccidentSpotVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.Set;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 13:45
*/
public interface AccidentSpotService {
/**
* 添加一个事故点
* @param param 事故点信息
* @return 是否成功
*/
Result<String> addAccidentSpot(AccidentSpotAddParam param);
/**
* 修改一个事故点
* @param param 事故点信息
* @return 是否成功
*/
Result<String> modifyAccidentSpot(AccidentSpotModifyParam param);
/**
* 删除一个事故点
* @param param id
* @return 是否成功
*/
Result<String> removeAccidentSpot(IdParam param);
/**
* 根据id查询事故点信息
* @param param id
* @return 事故点信息
*/
Result<AccidentSpotVo> findById(IdParam param);
/**
* 根据条件查询事故点
* @param conditionParam 条件参数
* @param pageParam 分页参数
* @return 事故点信息
*/
Result<PageVo<AccidentSpotVo>> findByCondition(AccidentSpotConditionParam conditionParam, PageParam pageParam);
/**
* 模糊事故点下拉框
* @param name 事故点名称
* @return 事故点列表
*/
Result<PageVo<IdNameVo>> findAccidentList(String name);
/**
* 批量启用事故点
* @param ids 事故点id集
* @return 是否成功
*/
Result<String> batchEnable(Set<Long> ids);
/**
* 批量停用事故点
* @param ids 事故点集
* @return 是否成功
*/
Result<String> batchUnEnable(Set<Long> ids);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.rehearsal;
import com.yiring.app.param.rehearsal.EvacuationZoneAddParam;
import com.yiring.app.param.rehearsal.EvacuationZoneConditionParam;
import com.yiring.app.param.rehearsal.EvacuationZoneModifyParam;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.rehearsal.EvacuationZoneVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.util.Set;
import javax.validation.Valid;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 10:34
*/
public interface EvacuationZoneService {
/**
* 添加一个撤离区信息
* @param param 撤离区信息
* @return 是否成功
*/
Result<String> addOne(EvacuationZoneAddParam param);
/**
* 修改一条撤离区信息
* @param param 撤离区信息
* @return 是否成功
*/
Result<String> modifyOne(EvacuationZoneModifyParam param);
/**
* 删除一条撤离区信息
* @param idParam 撤离区信息id
* @return 是否成功
*/
Result<String> removeOne(IdParam idParam);
/**
* 删除多条撤离区信息
* @param ids 撤离区id集
* @return 成功删除了几条
*/
Result<String> removeMany(Set<Long> ids);
/**
* 查询撤离区下拉框
* @param name 撤离区名称
* @return 撤离区id和名称
*/
Result<PageVo<IdNameVo>> findEvacuationPullDown(String name);
/**
* 查询一条撤离区信息
* @param idParam 撤离区id
* @return 撤离区信息
*/
Result<EvacuationZoneVo> findOne(IdParam idParam);
/**
* 查询撤离区列表
* @param param 地图id和撤离区名称
* @return 撤离区信息
*/
Result<PageVo<EvacuationZoneVo>> findList(EvacuationZoneConditionParam param, PageParam pageParam);
/**
* 启用一个撤离区
* @param idParam 撤离区id
* @return 是否成功
*/
Result<String> enable(@Valid IdParam idParam);
/**
* 停用一个撤离区
* @param idParam 撤离区id
* @return 是否成功
*/
Result<String> unEnable(@Valid IdParam idParam);
/**
* 批量启用撤离区
* @param ids 撤离区id集
* @return 启用了几个撤离区
*/
Result<String> batchEnable(Set<Long> ids);
/**
* 批量停用撤离区
* @param ids 撤离区id集
* @return 停用了几个撤离区
*/
Result<String> batchUnEnable(Set<Long> ids);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.rehearsal.impl;
import com.yiring.app.domain.rehearsal.AccidentSpot;
import com.yiring.app.domain.rehearsal.AccidentSpotRepository;
import com.yiring.app.param.rehearsal.AccidentSpotAddParam;
import com.yiring.app.param.rehearsal.AccidentSpotConditionParam;
import com.yiring.app.param.rehearsal.AccidentSpotModifyParam;
import com.yiring.app.service.rehearsal.AccidentSpotService;
import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.rehearsal.AccidentSpotVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
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 tml
* @version 1.0
* @date 2022/5/7 14:02
*/
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class AccidentSpotServiceImpl implements AccidentSpotService {
@Resource
private AccidentSpotRepository accidentSpotRepository;
@Override
public Result<String> addAccidentSpot(AccidentSpotAddParam param) {
Boolean exists = accidentSpotRepository.existsByName(param.getName());
if (exists) {
return Result.no(Status.EXPECTATION_FAILED, "事故点名称已被占用");
}
AccidentSpot accidentSpot = param.transform();
accidentSpotRepository.saveAndFlush(accidentSpot);
return Result.ok();
}
@Override
public Result<String> modifyAccidentSpot(AccidentSpotModifyParam param) {
List<AccidentSpot> allByName = accidentSpotRepository.findAllByName(param.getName());
if (allByName.size() > 1) {
log.warn("AccidentSpotServiceImpl.modifyAccidentSpot时查询出两条事故点名称相同的数据,param:[{}]", param);
}
AccidentSpot accidentSpot = null;
for (AccidentSpot item : allByName) {
if (item.getId().equals(param.getId())) {
accidentSpot = item;
} else {
return Result.no(Status.EXPECTATION_FAILED, "事故点名称已被占用");
}
}
if (accidentSpot == null) {
Optional<AccidentSpot> optional = accidentSpotRepository.findById(param.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要修改的事故点不存在");
}
accidentSpot = optional.get();
}
JpaUtil.copyNotNullProperties(param, accidentSpot);
return Result.ok();
}
@Override
public Result<String> removeAccidentSpot(IdParam param) {
Optional<AccidentSpot> optional = accidentSpotRepository.findById(param.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要修改的事故点不存在");
}
optional.get().setDeleted(true);
return Result.ok();
}
@Override
public Result<AccidentSpotVo> findById(IdParam param) {
Optional<AccidentSpot> optional = accidentSpotRepository.findById(param.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要修改的事故点不存在");
}
AccidentSpotVo vo = AccidentSpotVo.transform(optional.get());
return Result.ok(vo);
}
@Override
public Result<PageVo<AccidentSpotVo>> findByCondition(
AccidentSpotConditionParam conditionParam,
PageParam pageParam
) {
Pageable pageable = PageParam.toPageable(pageParam);
Specification<AccidentSpot> specification = (root, query, criteriaBuilder) -> {
ArrayList<Predicate> list = new ArrayList<>();
if (conditionParam.getMapId() != null) {
list.add(criteriaBuilder.equal(root.get(AccidentSpot.Fields.mapId), conditionParam.getMapId()));
}
if (conditionParam.getName() != null) {
list.add(
criteriaBuilder.like(root.get(AccidentSpot.Fields.name), "%" + conditionParam.getName() + "%")
);
}
Predicate[] array = list.toArray(new Predicate[0]);
return criteriaBuilder.and(array);
};
Page<AccidentSpot> page = accidentSpotRepository.findAll(specification, pageable);
List<AccidentSpotVo> voList = page.get().map(AccidentSpotVo::transform).collect(Collectors.toList());
PageVo<AccidentSpotVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
@Override
public Result<PageVo<IdNameVo>> findAccidentList(String name) {
List<AccidentSpot> list = accidentSpotRepository.findLikeName(name);
List<IdNameVo> voList = list
.stream()
.map(e -> new IdNameVo(e.getId(), e.getName()))
.collect(Collectors.toList());
PageVo<IdNameVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
@Override
public Result<String> batchEnable(Set<Long> ids) {
int num = accidentSpotRepository.batchEnable(ids, LocalDateTime.now());
return Result.ok("启用了" + num + "个事故点");
}
@Override
public Result<String> batchUnEnable(Set<Long> ids) {
int num = accidentSpotRepository.batchUnEnable(ids, LocalDateTime.now());
return Result.ok("停用了" + num + "个事故点");
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.service.rehearsal.impl;
import com.yiring.app.domain.rehearsal.EvacuationZone;
import com.yiring.app.domain.rehearsal.EvacuationZoneRepository;
import com.yiring.app.param.rehearsal.EvacuationZoneAddParam;
import com.yiring.app.param.rehearsal.EvacuationZoneConditionParam;
import com.yiring.app.param.rehearsal.EvacuationZoneModifyParam;
import com.yiring.app.service.rehearsal.EvacuationZoneService;
import com.yiring.app.util.JpaUtil;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.rehearsal.EvacuationZoneVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.persistence.criteria.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
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 tml
* @version 1.0
* @date 2022/5/9 10:42
*/
@Service
@Transactional(rollbackFor = Exception.class)
@Slf4j
public class EvacuationZoneServiceImpl implements EvacuationZoneService {
@Resource
private EvacuationZoneRepository evacuationZoneRepository;
@Override
public Result<String> addOne(EvacuationZoneAddParam param) {
boolean exists = evacuationZoneRepository.existsByName(param.getName());
if (exists) {
return Result.no(Status.EXPECTATION_FAILED, "撤离区名称已存在");
}
evacuationZoneRepository.saveAndFlush(param.transform());
return Result.ok();
}
@Override
public Result<String> modifyOne(EvacuationZoneModifyParam param) {
List<EvacuationZone> allByName = evacuationZoneRepository.findAllByName(param.getName());
if (allByName.size() > 1) {
log.warn("EvacuationZoneServiceImpl.modifyOne查询到多条名称相同的撤离区信息,param:[{}]", param);
}
EvacuationZone evacuationZone = null;
for (EvacuationZone item : allByName) {
if (item.getId().equals(param.getId())) {
evacuationZone = item;
} else {
return Result.no(Status.EXPECTATION_FAILED, "撤离区名称已存在");
}
}
EvacuationZone transform = param.transform();
JpaUtil.copyNotNullProperties(transform, evacuationZone);
return Result.ok();
}
@Override
public Result<String> removeOne(IdParam idParam) {
Optional<EvacuationZone> optional = evacuationZoneRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要删除的撤离区不存在");
}
optional.get().setDeleted(true);
return Result.ok();
}
@Override
public Result<String> removeMany(Set<Long> ids) {
int num = evacuationZoneRepository.removeMany(ids, LocalDateTime.now());
return Result.ok("成功删除了" + num + "条撤离区信息");
}
@Override
public Result<PageVo<IdNameVo>> findEvacuationPullDown(String name) {
List<EvacuationZone> likeName = evacuationZoneRepository.findLikeName(name);
List<IdNameVo> voList = likeName
.stream()
.map(e -> new IdNameVo(e.getId(), e.getName()))
.collect(Collectors.toList());
PageVo<IdNameVo> pageVo = PageVo.build(voList, voList.size());
return Result.ok(pageVo);
}
@Override
public Result<EvacuationZoneVo> findOne(IdParam idParam) {
Optional<EvacuationZone> optional = evacuationZoneRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要查询的撤离区不存在");
}
EvacuationZoneVo vo = EvacuationZoneVo.transform(optional.get());
return Result.ok(vo);
}
@Override
public Result<PageVo<EvacuationZoneVo>> findList(EvacuationZoneConditionParam param, PageParam pageParam) {
Pageable pageable = PageParam.toPageable(pageParam);
Specification<EvacuationZone> specification = (root, query, criteriaBuilder) -> {
ArrayList<Predicate> list = new ArrayList<>();
if (param.getMapId() != null) {
list.add(criteriaBuilder.equal(root.get(EvacuationZone.Fields.mapId), param.getMapId()));
}
if (param.getName() != null) {
list.add(criteriaBuilder.like(root.get(EvacuationZone.Fields.name), "%" + param.getName() + "%"));
}
Predicate[] array = list.toArray(new Predicate[0]);
return criteriaBuilder.and(array);
};
Page<EvacuationZone> page = evacuationZoneRepository.findAll(specification, pageable);
List<EvacuationZoneVo> list = page.get().map(EvacuationZoneVo::transform).collect(Collectors.toList());
PageVo<EvacuationZoneVo> pageVo = PageVo.build(list, list.size());
return Result.ok(pageVo);
}
@Override
public Result<String> enable(IdParam idParam) {
Optional<EvacuationZone> optional = evacuationZoneRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要启用的撤离区不存在");
}
optional.get().setEnable(true);
return Result.ok();
}
@Override
public Result<String> unEnable(IdParam idParam) {
Optional<EvacuationZone> optional = evacuationZoneRepository.findById(idParam.getId());
if (optional.isEmpty()) {
return Result.no(Status.EXPECTATION_FAILED, "要停用的撤离区不存在");
}
optional.get().setEnable(false);
return Result.ok();
}
@Override
public Result<String> batchEnable(Set<Long> ids) {
int num = evacuationZoneRepository.changeEnable(true, ids, LocalDateTime.now());
return Result.ok("成功启用了" + num + "个撤离区");
}
@Override
public Result<String> batchUnEnable(Set<Long> ids) {
int num = evacuationZoneRepository.changeEnable(false, ids, LocalDateTime.now());
return Result.ok("成功停用了" + num + "个撤离区");
}
}
...@@ -18,7 +18,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -18,7 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/20 * @date 2022/4/20
*/ */
public interface UserService { public interface UserAppService {
/** /**
* 表格查询 * 表格查询
* @param userFindParam UserByNameParam * @param userFindParam UserByNameParam
...@@ -43,10 +43,10 @@ public interface UserService { ...@@ -43,10 +43,10 @@ public interface UserService {
/** /**
* 收卡 * 收卡
* @param idParam IdParam * @param idsParam IdsParam
* @return Result<String> * @return Result<String>
*/ */
Result<String> userUnBingTag(IdParam idParam); Result<String> userUnBingTag(IdsParam idsParam);
/** /**
* 删除用户 * 删除用户
...@@ -103,4 +103,11 @@ public interface UserService { ...@@ -103,4 +103,11 @@ public interface UserService {
* @return Result<PageVo<UserVo>> * @return Result<PageVo<UserVo>>
*/ */
Result<PageVo<UserVo>> findUser(UserFindParam userFindParam); Result<PageVo<UserVo>> findUser(UserFindParam userFindParam);
/**
* 批量发卡
* @param file MultipartFile
* @return Result<String>
*/
Result<String> batchSendCard(MultipartFile file);
} }
...@@ -14,13 +14,14 @@ import com.yiring.app.domain.location.LocationTag; ...@@ -14,13 +14,14 @@ import com.yiring.app.domain.location.LocationTag;
import com.yiring.app.domain.location.LocationTagRepository; import com.yiring.app.domain.location.LocationTagRepository;
import com.yiring.app.excel.user.UserExportExcel; import com.yiring.app.excel.user.UserExportExcel;
import com.yiring.app.excel.user.UserImportExcel; import com.yiring.app.excel.user.UserImportExcel;
import com.yiring.app.excel.user.UserSendCardExcel;
import com.yiring.app.feign.zy.user.UserClient; import com.yiring.app.feign.zy.user.UserClient;
import com.yiring.app.param.user.*; import com.yiring.app.param.user.*;
import com.yiring.app.param.zy.user.ZyUserAddParam; import com.yiring.app.param.zy.user.ZyUserAddParam;
import com.yiring.app.param.zy.user.ZyUserFindParam; import com.yiring.app.param.zy.user.ZyUserFindParam;
import com.yiring.app.param.zy.user.ZyUserModifyParam; import com.yiring.app.param.zy.user.ZyUserModifyParam;
import com.yiring.app.service.dept.DepartmentService; import com.yiring.app.service.dept.DepartmentService;
import com.yiring.app.service.user.UserService; import com.yiring.app.service.user.UserAppService;
import com.yiring.app.util.zy.ZyUtil; import com.yiring.app.util.zy.ZyUtil;
import com.yiring.app.vo.user.UserInfoVo; import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
...@@ -68,7 +69,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -68,7 +69,7 @@ import org.springframework.web.multipart.MultipartFile;
@Transactional(rollbackFor = RuntimeException.class) @Transactional(rollbackFor = RuntimeException.class)
@Service @Service
@Slf4j @Slf4j
public class UserServiceImpl implements UserService { public class UserAppServiceImpl implements UserAppService {
final Integer FACTORY_ID = 100; final Integer FACTORY_ID = 100;
...@@ -138,11 +139,11 @@ public class UserServiceImpl implements UserService { ...@@ -138,11 +139,11 @@ public class UserServiceImpl implements UserService {
throw new RuntimeException("已绑定其他用户 : " + locationTag.getUser().getRealName()); throw new RuntimeException("已绑定其他用户 : " + locationTag.getUser().getRealName());
} }
JSONObject jsonObject = userClient.unbind( JSONObject jsonObject = userClient.bindTag(
user.getLinkId(), user.getLinkId(),
userBingTagParam.getCode(), userBingTagParam.getCode(),
FACTORY_ID, FACTORY_ID,
ZyUtil.clientLogin() ZyUtil.manageLogin()
); );
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) { if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg"))); throw new RuntimeException(StrUtil.toString(jsonObject.get("msg")));
...@@ -155,8 +156,11 @@ public class UserServiceImpl implements UserService { ...@@ -155,8 +156,11 @@ public class UserServiceImpl implements UserService {
} }
@Override @Override
public Result<String> userUnBingTag(IdParam idParam) { public Result<String> userUnBingTag(IdsParam idsParam) {
Optional<User> userOptional = userRepository.findById(idParam.getId()); String[] split = idsParam.getIds().split(",");
Long[] ids = Convert.toLongArray(split);
for (Long id : ids) {
Optional<User> userOptional = userRepository.findById(id);
if (userOptional.isEmpty()) { if (userOptional.isEmpty()) {
return Result.no(Status.BAD_REQUEST, "员工不存在"); return Result.no(Status.BAD_REQUEST, "员工不存在");
...@@ -165,11 +169,15 @@ public class UserServiceImpl implements UserService { ...@@ -165,11 +169,15 @@ public class UserServiceImpl implements UserService {
User user = userOptional.get(); User user = userOptional.get();
Optional<LocationTag> locationTagOptional = locationTagRepository.findOne( Optional<LocationTag> locationTagOptional = locationTagRepository.findOne(
Example.of(LocationTag.builder().user(User.builder().id(idParam.getId()).build()).build()) Example.of(LocationTag.builder().user(User.builder().id(id).build()).build())
); );
if (locationTagOptional.isEmpty()) return Result.no(Status.BAD_REQUEST); if (locationTagOptional.isEmpty()) return Result.no(Status.BAD_REQUEST);
JSONObject jsonObject = userClient.unbind(user.getLinkId(), FACTORY_ID, ZyUtil.clientLogin()); JSONObject jsonObject = userClient.unbind(
Convert.toStr(user.getLinkId()),
FACTORY_ID,
ZyUtil.clientLogin()
);
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) { if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg"))); throw new RuntimeException(StrUtil.toString(jsonObject.get("msg")));
} }
...@@ -177,7 +185,7 @@ public class UserServiceImpl implements UserService { ...@@ -177,7 +185,7 @@ public class UserServiceImpl implements UserService {
locationTag.setUser(null); locationTag.setUser(null);
locationTag.setUsed(false); locationTag.setUsed(false);
locationTagRepository.save(locationTag); locationTagRepository.save(locationTag);
}
return Result.ok(); return Result.ok();
} }
...@@ -578,6 +586,75 @@ public class UserServiceImpl implements UserService { ...@@ -578,6 +586,75 @@ public class UserServiceImpl implements UserService {
return Result.ok(pageVo); return Result.ok(pageVo);
} }
@Override
public Result<String> batchSendCard(MultipartFile file) {
if (file.isEmpty()) return Result.no(Status.BAD_REQUEST, "请选择文件");
List<UserSendCardExcel> userSendCardExcels;
try (InputStream inputStream = file.getInputStream()) {
userSendCardExcels =
SaxExcelReader
.of(UserSendCardExcel.class)
.rowFilter(row -> row.getRowNum() > 0)
.ignoreBlankRow()
.read(inputStream);
} catch (IOException e) {
log.info(e.getMessage());
throw new RuntimeException("文件导入异常");
}
userSendCardExcels =
userSendCardExcels
.stream()
.filter(userSendCardExcel ->
userRepository.count(
Example.of(
User
.builder()
.realName(userSendCardExcel.getRealName())
.uuid(userSendCardExcel.getUuid())
.build()
)
) >
0
)
.filter(userSendCardExcel ->
locationTagRepository.count(Example.of(LocationTag.builder().user(null).used(false).build())) > 0
)
.collect(Collectors.toList());
userSendCardExcels.forEach(userSendCardExcel -> {
Optional<User> userOptional = userRepository.findOne(
Example.of(
User.builder().realName(userSendCardExcel.getRealName()).uuid(userSendCardExcel.getUuid()).build()
)
);
if (userOptional.isPresent()) {
User user = userOptional.get();
Optional<LocationTag> locationTagOptional = locationTagRepository.findOne(
Example.of(LocationTag.builder().code(userSendCardExcel.getCode()).build())
);
if (locationTagOptional.isPresent()) {
LocationTag locationTag = locationTagOptional.get();
JSONObject jsonObject = userClient.bindTag(
user.getLinkId(),
locationTag.getCode(),
FACTORY_ID,
ZyUtil.clientLogin()
);
if (!ObjectUtil.equals(jsonObject.get("code"), 200)) {
throw new RuntimeException(StrUtil.toString(jsonObject.get("msg")));
}
locationTag.setUser(User.builder().id(user.getId()).build());
locationTag.setUsed(true);
locationTagRepository.save(locationTag);
}
}
});
return Result.ok();
}
@NotNull @NotNull
private CriteriaQuery<UserVo> getUserVoCriteriaQuery(UserFindParam param) { private CriteriaQuery<UserVo> getUserVoCriteriaQuery(UserFindParam param) {
CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaBuilder cb = em.getCriteriaBuilder();
......
...@@ -297,7 +297,7 @@ public class VideoServiceImpl implements VideoService { ...@@ -297,7 +297,7 @@ public class VideoServiceImpl implements VideoService {
@Override @Override
public Result<String> importVideo(MultipartFile file) { public Result<String> importVideo(MultipartFile file) {
if (file.isEmpty()) { if (file.isEmpty()) {
throw new RuntimeException("请选择文件"); return Result.no(Status.BAD_REQUEST, "请选择文件");
} }
List<VideoImportExcel> videoImportExcels; List<VideoImportExcel> videoImportExcels;
try (InputStream inputStream = file.getInputStream()) { try (InputStream inputStream = file.getInputStream()) {
...@@ -309,7 +309,7 @@ public class VideoServiceImpl implements VideoService { ...@@ -309,7 +309,7 @@ public class VideoServiceImpl implements VideoService {
.read(inputStream); .read(inputStream);
} catch (IOException e) { } catch (IOException e) {
log.info(e.getMessage()); log.info(e.getMessage());
throw new RuntimeException("文件导入异常"); return Result.no(Status.BAD_REQUEST, "文件导入异常");
} }
List<Video> videos = videoImportExcels List<Video> videos = videoImportExcels
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.broadcast;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.broadcast.BroadcastAudio;
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/7
*/
@ApiModel("BroadcastAudioIndexVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioIndexVo implements Serializable {
@Serial
private static final long serialVersionUID = -2734529136001729248L;
@ApiModelProperty(value = "主键", example = "100")
@JsonSerialize(using = ToStringSerializer.class)
Long id;
@ApiModelProperty(value = "语音名称", example = "张三")
String name;
@ApiModelProperty(value = "语音地址", example = "uri")
String uri;
public static BroadcastAudioIndexVo transform(BroadcastAudio broadcastAudio) {
return BroadcastAudioIndexVo
.builder()
.id(broadcastAudio.getId())
.name(broadcastAudio.getName())
.uri(broadcastAudio.getUri())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.broadcast;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.broadcast.BroadcastAudio;
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/7
*/
@ApiModel("BroadcastAudioVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class BroadcastAudioVo implements Serializable {
@Serial
private static final long serialVersionUID = 1092099954728361919L;
@ApiModelProperty(value = "主键", example = "100")
@JsonSerialize(using = ToStringSerializer.class)
Long id;
@ApiModelProperty(value = "语音名称", example = "张三")
String name;
@ApiModelProperty(value = "语音地址", example = "uri")
String uri;
@ApiModelProperty(value = "上传时间", example = "2022-11-11 22:22:22")
LocalDateTime uploadTime;
@ApiModelProperty(value = "备注", example = "1")
String describe;
public static BroadcastAudioVo transform(BroadcastAudio broadcastAudio) {
return BroadcastAudioVo
.builder()
.id(broadcastAudio.getId())
.name(broadcastAudio.getName())
.uri(broadcastAudio.getUri())
.uploadTime(broadcastAudio.getUploadTime())
.describe(broadcastAudio.getDescribe())
.build();
}
}
...@@ -38,6 +38,7 @@ public class KeyAlarmRulesVo implements Serializable { ...@@ -38,6 +38,7 @@ public class KeyAlarmRulesVo implements Serializable {
@ApiModelProperty(value = "主键", example = "111") @ApiModelProperty(value = "主键", example = "111")
Long id; Long id;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "部门id", example = "111") @ApiModelProperty(value = "部门id", example = "111")
Long deptId; Long deptId;
...@@ -48,7 +49,7 @@ public class KeyAlarmRulesVo implements Serializable { ...@@ -48,7 +49,7 @@ public class KeyAlarmRulesVo implements Serializable {
List<UserInfoVo> users; List<UserInfoVo> users;
@ApiModelProperty(value = "推送类型", example = "111") @ApiModelProperty(value = "推送类型", example = "111")
String types; String[] types;
public static KeyAlarmRulesVo transform(KeyAlarmRules keyAlarmRules) { public static KeyAlarmRulesVo transform(KeyAlarmRules keyAlarmRules) {
Set<User> users = keyAlarmRules.getUsers(); Set<User> users = keyAlarmRules.getUsers();
...@@ -60,7 +61,7 @@ public class KeyAlarmRulesVo implements Serializable { ...@@ -60,7 +61,7 @@ public class KeyAlarmRulesVo implements Serializable {
.deptId(keyAlarmRules.getDepartment().getId()) .deptId(keyAlarmRules.getDepartment().getId())
.deptName(keyAlarmRules.getDepartment().getName()) .deptName(keyAlarmRules.getDepartment().getName())
.users(userInfoVos) .users(userInfoVos)
.types(keyAlarmRules.getTypes()) .types(keyAlarmRules.getTypes().split(","))
.build(); .build();
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.key;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiring.app.domain.key.KeyAlarm;
import com.yiring.app.vo.user.UserVo;
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/10
*/
@ApiModel("KeyAlarmVo")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class KeyAlarmVo implements Serializable {
@Serial
private static final long serialVersionUID = -4534979609749122415L;
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "主键", example = "111")
Long id;
@ApiModelProperty(value = "地图 ID", example = "1")
Long areaId;
@ApiModelProperty(value = "用户", example = "111")
UserVo user;
@ApiModelProperty(value = "报警时间", example = "2022-11-11 22:22:22")
LocalDateTime createTime;
@ApiModelProperty(value = "结束时间", example = "2022-11-11 22:22:22")
LocalDateTime endTime;
@ApiModelProperty(value = "报警类型", example = "按键报警")
String type;
@ApiModelProperty(value = "报警接收人", example = "张三、李四")
String receiver;
@ApiModelProperty(value = "报警状态", example = "T/F")
Boolean enable;
public static KeyAlarmVo transform(KeyAlarm keyAlarm) {
return KeyAlarmVo
.builder()
.id(keyAlarm.getId())
.areaId(keyAlarm.getAreaId())
.createTime(keyAlarm.getCreateTime())
.endTime(keyAlarm.getUpdateTime())
.type("按键报警")
.enable(keyAlarm.getEnable())
.build();
}
}
...@@ -11,6 +11,7 @@ import java.io.Serializable; ...@@ -11,6 +11,7 @@ import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import org.locationtech.jts.geom.Point;
/** /**
* 定位信标模型 * 定位信标模型
...@@ -40,6 +41,9 @@ public class LocationBeaconVo implements Serializable { ...@@ -40,6 +41,9 @@ public class LocationBeaconVo implements Serializable {
@ApiModelProperty(value = "最后一次在线时间", example = "BTI88888888") @ApiModelProperty(value = "最后一次在线时间", example = "BTI88888888")
LocalDateTime time; LocalDateTime time;
@ApiModelProperty(value = "坐标", example = "01010000805C8FC2F528D4734033333333335B7D400000000000000000")
Point point;
@JsonSerialize(using = ToStringSerializer.class) @JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty(value = "所属地图", example = "1:总图2:一层3:二层") @ApiModelProperty(value = "所属地图", example = "1:总图2:一层3:二层")
Long areaId; Long areaId;
...@@ -50,6 +54,7 @@ public class LocationBeaconVo implements Serializable { ...@@ -50,6 +54,7 @@ public class LocationBeaconVo implements Serializable {
.id(locationBeacon.getId()) .id(locationBeacon.getId())
.code(locationBeacon.getCode()) .code(locationBeacon.getCode())
.time(locationBeacon.getTime()) .time(locationBeacon.getTime())
.point(locationBeacon.getPoint())
.areaId(locationBeacon.getAreaId()) .areaId(locationBeacon.getAreaId())
.build(); .build();
} }
......
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.location.tag; package com.yiring.app.vo.location.tag;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
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;
...@@ -43,8 +44,8 @@ public class LocationTagTypeVo implements Serializable { ...@@ -43,8 +44,8 @@ public class LocationTagTypeVo implements Serializable {
@ApiModelProperty(value = "标签类型", example = "人员") @ApiModelProperty(value = "标签类型", example = "人员")
String tagType; String tagType;
@ApiModelProperty(value = "类型", example = "类型(1:内部/2:访客/3:承包商)") @ApiModelProperty(value = "类型", example = "类型(1:内部/2:访客)")
Integer category; String category;
public static LocationTagTypeVo transform(LocationTag locationTag) { public static LocationTagTypeVo transform(LocationTag locationTag) {
String entityType = StrUtil.equals(locationTag.getType().name(), "BTT02") ? "car" : "staff"; String entityType = StrUtil.equals(locationTag.getType().name(), "BTT02") ? "car" : "staff";
...@@ -54,7 +55,7 @@ public class LocationTagTypeVo implements Serializable { ...@@ -54,7 +55,7 @@ public class LocationTagTypeVo implements Serializable {
.code(locationTag.getCode()) .code(locationTag.getCode())
.type(locationTag.getType()) .type(locationTag.getType())
.tagType(entityType) .tagType(entityType)
.category(locationTag.getCategory()) .category(Convert.toStr(locationTag.getCategory()))
.build(); .build();
} }
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.rehearsal;
import com.yiring.app.domain.rehearsal.AccidentSpot;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 11:25
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("事故点VO")
public class AccidentSpotVo implements Serializable {
@Serial
private static final long serialVersionUID = -7696351020089245510L;
@ApiModelProperty(value = "事故点id", example = "1")
private Long id;
@ApiModelProperty(value = "事故点名称", example = "事故点1")
private String name;
@ApiModelProperty(value = "地图id", example = "1")
private Long mapId;
@ApiModelProperty(value = "地图名称", example = "总图")
private String mapName;
@ApiModelProperty(value = "空间信息")
private Geometry geometry;
@ApiModelProperty(value = "摄像头id", example = "1")
private Long videoId;
@ApiModelProperty(value = "摄像头名称", example = "摄像头1")
private String videoName;
@ApiModelProperty(value = "超时时间(秒)", example = "100")
private Integer timeoutDuration;
@ApiModelProperty(value = "消抖时间(秒)", example = "100")
private Integer threshold;
@ApiModelProperty(value = "是否启用(true:启用,false:停用)", example = "true")
private Boolean enable;
public static AccidentSpotVo transform(AccidentSpot accidentSpot) {
return AccidentSpotVo
.builder()
.id(accidentSpot.getId())
.name(accidentSpot.getName())
.mapId(accidentSpot.getMapId())
.mapName(accidentSpot.getMapName())
.geometry(accidentSpot.getGeometry())
.videoId(accidentSpot.getVideo().getId())
.videoName(accidentSpot.getVideo().getVideoName())
.timeoutDuration(accidentSpot.getTimeoutDuration())
.threshold(accidentSpot.getThreshold())
.enable(accidentSpot.getEnable())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.vo.rehearsal;
import com.yiring.app.domain.rehearsal.EvacuationZone;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serial;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.locationtech.jts.geom.Geometry;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 10:04
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ApiModel("撤离区VO")
public class EvacuationZoneVo implements Serializable {
@Serial
private static final long serialVersionUID = 919152196104921261L;
@ApiModelProperty(value = "撤离区id", example = "1")
private Long id;
@ApiModelProperty(value = "撤离区名称", example = "撤离区1")
private String name;
@ApiModelProperty(value = "地图id", example = "1")
private Long mapId;
@ApiModelProperty(value = "地图名称", example = "总图")
private String mapName;
@ApiModelProperty(value = "空间信息")
private Geometry geometry;
@ApiModelProperty(value = "摄像头id", example = "1")
private Long videoId;
@ApiModelProperty(value = "摄像头名称", example = "摄像头1")
private String videoName;
@ApiModelProperty(value = "超时时间(秒)", example = "100")
private Integer timeoutDuration;
@ApiModelProperty(value = "消抖时间(秒)", example = "100")
private Integer threshold;
@ApiModelProperty(value = "是否启用(true:启用,false:停用)", example = "true")
private Boolean enable;
public static EvacuationZoneVo transform(EvacuationZone evacuationZone) {
return EvacuationZoneVo
.builder()
.id(evacuationZone.getId())
.name(evacuationZone.getName())
.mapId(evacuationZone.getMapId())
.mapName(evacuationZone.getMapName())
.geometry(evacuationZone.getGeometry())
.videoId(evacuationZone.getVideo().getId())
.videoName(evacuationZone.getVideo().getVideoName())
.timeoutDuration(evacuationZone.getTimeoutDuration())
.threshold(evacuationZone.getThreshold())
.enable(evacuationZone.getEnable())
.build();
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.broadcast;
import com.yiring.app.param.broadcast.BroadcastAudioAddParam;
import com.yiring.app.param.broadcast.BroadcastAudioFindParam;
import com.yiring.app.param.broadcast.BroadcastAudioModifyParam;
import com.yiring.app.service.broadcast.BroadcastAudioService;
import com.yiring.app.vo.broadcast.BroadcastAudioIndexVo;
import com.yiring.app.vo.broadcast.BroadcastAudioVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IndexParam;
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 javax.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 播报音频
*
* @author LJ-2204
* @date 2022/5/7
*/
@Slf4j
@Api(tags = "播报音频")
@Validated
@RestController
@RequestMapping("/broadcast/audio")
public class BroadcastAudioController {
@Resource
BroadcastAudioService broadcastAudioService;
@ApiOperation("添加")
@PostMapping("save")
public Result<String> save(@Valid BroadcastAudioAddParam param) {
return broadcastAudioService.save(param);
}
@ApiOperation("删除")
@DeleteMapping("delete")
public Result<String> delete(IdParam idParam) {
return broadcastAudioService.delete(idParam);
}
@ApiOperation("修改")
@PutMapping("modify")
public Result<String> modify(@Valid BroadcastAudioModifyParam param) {
return broadcastAudioService.modify(param);
}
@ApiOperation("表格查询")
@GetMapping("page")
public Result<PageVo<BroadcastAudioVo>> page(@Valid BroadcastAudioFindParam param, PageParam pageParam) {
return broadcastAudioService.page(param, pageParam);
}
@ApiOperation("播报语音检索")
@GetMapping("index")
public Result<PageVo<BroadcastAudioIndexVo>> index(IndexParam indexParam) {
return broadcastAudioService.index(indexParam);
}
@ApiOperation("批量下载")
@GetMapping("download")
public void download() {}
}
...@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
/** /**
* 部门信息控制器 * 部门控制器
* @author LJ-2204 * @author LJ-2204
* @date 2022/4/19 * @date 2022/4/19
*/ */
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.key;
import com.yiring.app.param.key.KeyAlarmFindParam;
import com.yiring.app.service.key.KeyAlarmService;
import com.yiring.app.vo.key.KeyAlarmVo;
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/10
*/
@Slf4j
@Validated
@Api(tags = "按键报警")
@RestController
@RequestMapping("/key/alarm")
public class KeyAlarmController {
@Resource
KeyAlarmService keyAlarmService;
@ApiOperation("表格查询")
@GetMapping("page")
public Result<PageVo<KeyAlarmVo>> page(KeyAlarmFindParam param, PageParam pageParam) {
return keyAlarmService.page(param, pageParam);
}
}
...@@ -6,6 +6,7 @@ import com.yiring.app.param.location.fence.LocationFenceAddParam; ...@@ -6,6 +6,7 @@ import com.yiring.app.param.location.fence.LocationFenceAddParam;
import com.yiring.app.param.location.fence.LocationFenceConditionParam; import com.yiring.app.param.location.fence.LocationFenceConditionParam;
import com.yiring.app.param.location.fence.LocationFenceModifyParam; import com.yiring.app.param.location.fence.LocationFenceModifyParam;
import com.yiring.app.service.location.fence.LocationFenceService; import com.yiring.app.service.location.fence.LocationFenceService;
import com.yiring.app.vo.CodeNameVo;
import com.yiring.app.vo.location.fence.LocationFenceSearchVo; import com.yiring.app.vo.location.fence.LocationFenceSearchVo;
import com.yiring.app.vo.location.fence.LocationFenceVo; import com.yiring.app.vo.location.fence.LocationFenceVo;
import com.yiring.common.core.Result; import com.yiring.common.core.Result;
...@@ -21,7 +22,10 @@ import javax.validation.Valid; ...@@ -21,7 +22,10 @@ import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; 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.*; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/** /**
* @author tml * @author tml
...@@ -84,4 +88,10 @@ public class LocationFenceController { ...@@ -84,4 +88,10 @@ public class LocationFenceController {
} }
return locationFenceService.findByNameLike(name); return locationFenceService.findByNameLike(name);
} }
@ApiOperation("获取地图下拉框")
@PostMapping("/findMapList")
public Result<PageVo<CodeNameVo>> findMapList() {
return locationFenceService.findMapList();
}
} }
...@@ -12,6 +12,7 @@ import com.yiring.common.core.Status; ...@@ -12,6 +12,7 @@ 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 lombok.extern.slf4j.Slf4j;
...@@ -25,7 +26,6 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -25,7 +26,6 @@ import org.springframework.web.bind.annotation.RestController;
* *
* @author Administrator * @author Administrator
* @version 1.0 * @version 1.0
* @description:
* @date 2022/4/24 13:48 * @date 2022/4/24 13:48
*/ */
@Slf4j @Slf4j
...@@ -40,8 +40,8 @@ public class MapController { ...@@ -40,8 +40,8 @@ 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<MapVo> mapSelect(String orgId) { public Result<Serializable> fail(String orgId) {
String login = ZyUtil.clientLogin(); 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"))) {
// List<MapVo.MapVoReuslt> data = jsonObject.getJSONArray("data").toJavaList(MapVo.MapVoReuslt.class); // List<MapVo.MapVoReuslt> data = jsonObject.getJSONArray("data").toJavaList(MapVo.MapVoReuslt.class);
......
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.rehearsal;
import com.yiring.app.param.rehearsal.AccidentSpotAddParam;
import com.yiring.app.param.rehearsal.AccidentSpotConditionParam;
import com.yiring.app.param.rehearsal.AccidentSpotModifyParam;
import com.yiring.app.service.rehearsal.AccidentSpotService;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.rehearsal.AccidentSpotVo;
import com.yiring.common.core.Result;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import java.util.Objects;
import java.util.Set;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Sort;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @author tml
* @version 1.0
* @date 2022/5/7 10:44
*/
@Slf4j
@Validated
@RestController
@Api(tags = "AccidentSpot(事故点管理)")
@RequestMapping("/accident/spot")
public class AccidentSpotController {
@Resource
private AccidentSpotService accidentSpotService;
@ApiOperation(value = "添加一个事故点")
@PostMapping("/addAccidentSpot")
public Result<String> addAccidentSpot(@Valid @RequestBody AccidentSpotAddParam param) {
return accidentSpotService.addAccidentSpot(param);
}
@ApiOperation("修改一个事故点")
@PostMapping("/modifyAccidentSpot")
public Result<String> modifyAccidentSpot(@Valid @RequestBody AccidentSpotModifyParam param) {
return accidentSpotService.modifyAccidentSpot(param);
}
@ApiOperation("删除一个事故点")
@PostMapping("/removeAccidentSpot")
public Result<String> removeAccidentSpot(@Valid IdParam param) {
return accidentSpotService.removeAccidentSpot(param);
}
@ApiOperation("根据id查询事故点")
@GetMapping("/findById")
public Result<AccidentSpotVo> findById(@Valid IdParam param) {
return accidentSpotService.findById(param);
}
@ApiOperation("根据条件查询事故点")
@GetMapping("/findByCondition")
public Result<PageVo<AccidentSpotVo>> findByCondition(
@Valid AccidentSpotConditionParam conditionParam,
@Valid PageParam pageParam
) {
if (Objects.isNull(pageParam.getSortField())) {
pageParam.setSortField(BasicEntity.Fields.createTime);
pageParam.setSortOrder(Sort.Direction.DESC);
}
return accidentSpotService.findByCondition(conditionParam, pageParam);
}
@ApiOperation("事故点名下拉框")
@ApiImplicitParam(value = "事故点名(全模糊)", name = "name", example = "事故", required = true)
@GetMapping("/findAccidentList")
public Result<PageVo<IdNameVo>> findAccidentList(String name) {
if (name == null) {
name = "";
}
return accidentSpotService.findAccidentList(name);
}
@ApiOperation("批量启用")
@ApiImplicitParam(value = "事故点id集", example = "1,2,3", name = "ids")
@GetMapping("/batchEnable")
public Result<String> batchEnable(
@RequestParam(value = "ids", required = false) @NotEmpty(message = "请传入至少一个事故点") Set<Long> ids
) {
return accidentSpotService.batchEnable(ids);
}
@ApiOperation("批量停用")
@ApiImplicitParam(value = "事故点id集", example = "1,2,3", name = "ids")
@GetMapping("/batchUnEnable")
public Result<String> batchUnEnable(
@RequestParam(value = "ids", required = false) @NotEmpty(message = "请传入至少一个事故点") Set<Long> ids
) {
return accidentSpotService.batchUnEnable(ids);
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.app.web.rehearsal;
import com.yiring.app.param.rehearsal.EvacuationZoneAddParam;
import com.yiring.app.param.rehearsal.EvacuationZoneConditionParam;
import com.yiring.app.param.rehearsal.EvacuationZoneModifyParam;
import com.yiring.app.service.rehearsal.EvacuationZoneService;
import com.yiring.app.vo.IdNameVo;
import com.yiring.app.vo.rehearsal.EvacuationZoneVo;
import com.yiring.auth.param.IdsParam;
import com.yiring.common.core.Result;
import com.yiring.common.param.IdParam;
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 javax.validation.Valid;
import org.springframework.web.bind.annotation.*;
/**
* @author tml
* @version 1.0
* @date 2022/5/9 10:19
*/
@Api(tags = "EvacuationZone(撤离区)")
@RestController
@RequestMapping("/evacuation/zone")
public class EvacuationZoneController {
@Resource
private EvacuationZoneService evacuationZoneService;
@ApiOperation("添加一条撤离区信息")
@PostMapping("/addOne")
public Result<String> addOne(@Valid @RequestBody EvacuationZoneAddParam param) {
return evacuationZoneService.addOne(param);
}
@ApiOperation("修改一条撤离区信息")
@PostMapping("/modifyOne")
public Result<String> modifyOne(@Valid @RequestBody EvacuationZoneModifyParam param) {
return evacuationZoneService.modifyOne(param);
}
@ApiOperation("删除一条撤离区信息")
@PostMapping("removeOne")
public Result<String> removeOne(@Valid IdParam idParam) {
return evacuationZoneService.removeOne(idParam);
}
@ApiOperation("批量删除撤离区信息")
@PostMapping("/removeMany")
public Result<String> removeMany(@Valid IdsParam idsParam) {
return evacuationZoneService.removeMany(idsParam.toIds());
}
@ApiOperation("查询撤离区下拉框")
@GetMapping("/findEvacuationPullDown")
public Result<PageVo<IdNameVo>> findEvacuationPullDown(String name) {
return evacuationZoneService.findEvacuationPullDown(name);
}
@ApiOperation("查询一条撤离区信息")
@GetMapping("/findOne")
public Result<EvacuationZoneVo> findOne(@Valid IdParam idParam) {
return evacuationZoneService.findOne(idParam);
}
@ApiOperation("查询撤离区信息列表")
@GetMapping("/findList")
public Result<PageVo<EvacuationZoneVo>> findList(
@Valid EvacuationZoneConditionParam conditionParam,
@Valid PageParam pageParam
) {
return evacuationZoneService.findList(conditionParam, pageParam);
}
@ApiOperation("启用一个撤离区")
@PostMapping("/enable")
public Result<String> enable(@Valid IdParam idParam) {
return evacuationZoneService.enable(idParam);
}
@ApiOperation("停用一个撤离区")
@PostMapping("/unEnable")
public Result<String> unEnable(@Valid IdParam idParam) {
return evacuationZoneService.unEnable(idParam);
}
@ApiOperation("批量启用撤离区")
@PostMapping("/batchEnable")
public Result<String> batchEnable(@Valid IdsParam idsParam) {
return evacuationZoneService.batchEnable(idsParam.toIds());
}
@ApiOperation("批量停用撤离区")
@PostMapping("/batchUnEnable")
public Result<String> batchUnEnable(@Valid IdsParam idsParam) {
return evacuationZoneService.batchUnEnable(idsParam.toIds());
}
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
package com.yiring.app.web.user; package com.yiring.app.web.user;
import com.yiring.app.param.user.*; import com.yiring.app.param.user.*;
import com.yiring.app.service.user.UserService; import com.yiring.app.service.user.UserAppService;
import com.yiring.app.vo.user.UserInfoVo; import com.yiring.app.vo.user.UserInfoVo;
import com.yiring.app.vo.user.UserVo; import com.yiring.app.vo.user.UserVo;
import com.yiring.auth.param.IdsParam; import com.yiring.auth.param.IdsParam;
...@@ -37,7 +37,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -37,7 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
public class UserAppController { public class UserAppController {
@Resource @Resource
UserService userService; UserAppService userService;
@ApiOperation("表格查询") @ApiOperation("表格查询")
@GetMapping("findUserPage") @GetMapping("findUserPage")
...@@ -59,8 +59,8 @@ public class UserAppController { ...@@ -59,8 +59,8 @@ public class UserAppController {
@ApiOperation("收卡") @ApiOperation("收卡")
@PutMapping("userUnBingTag") @PutMapping("userUnBingTag")
public Result<String> userUnBingTag(@Valid IdParam idParam) { public Result<String> userUnBingTag(@Valid IdsParam idsParam) {
return userService.userUnBingTag(idParam); return userService.userUnBingTag(idsParam);
} }
@ApiOperation("逻辑删除用户") @ApiOperation("逻辑删除用户")
...@@ -110,4 +110,10 @@ public class UserAppController { ...@@ -110,4 +110,10 @@ public class UserAppController {
public Result<PageVo<UserVo>> findUser(@Valid UserFindParam userFindParam) { public Result<PageVo<UserVo>> findUser(@Valid UserFindParam userFindParam) {
return userService.findUser(userFindParam); return userService.findUser(userFindParam);
} }
@ApiOperation("批量发卡")
@PutMapping("batchSendCard")
public Result<String> batchSendCard(@RequestParam("file") MultipartFile file) {
return userService.batchSendCard(file);
}
} }
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.param.user;
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/10
*/
@ApiModel("UserFindParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserFindParam implements Serializable {
@Serial
private static final long serialVersionUID = -708988930160146138L;
@ApiModelProperty(value = "姓名", example = "张三")
String realName;
@ApiModelProperty(value = "部门ID", example = "100")
Long deptId;
@ApiModelProperty(value = "角色ID", example = "100")
String roles;
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.param.user;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.yiring.auth.domain.dept.Department;
import com.yiring.auth.domain.post.Post;
import com.yiring.auth.domain.role.Role;
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.util.HashSet;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.FieldDefaults;
/**
* 用户新增参数
*
* @author LJ-2204
* @date 2022/5/10
*/
@ApiModel("UserAddParam")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserSaveParam implements Serializable {
@Serial
private static final long serialVersionUID = 2256725474621511610L;
@ApiModelProperty(value = "用户昵称", example = "张三", required = true)
@NotEmpty(message = "用户昵称不能为空")
String realName;
@ApiModelProperty(value = "手机号码", example = "1888888888")
String mobile;
@ApiModelProperty(value = "用户名称", example = "admin", required = true)
@NotEmpty(message = "用户名称不能为空")
String username;
@ApiModelProperty(value = "性别", example = "0/1")
Boolean gender;
@ApiModelProperty(value = "职位", example = "100")
Long postId;
@ApiModelProperty(value = "归属部门", example = "1", required = true)
@NotNull(message = "归属部门不能为空")
Long deptId;
@ApiModelProperty(value = "邮箱", example = "zhansan@163.com")
String email;
@ApiModelProperty(value = "用户密码", example = "*******", required = true)
@NotEmpty(message = "用户密码不能为空")
String password;
@ApiModelProperty(value = "状态", example = "0/1")
Boolean enabled;
@ApiModelProperty(value = "角色id", example = "1,2,3", required = true)
@NotEmpty(message = "角色id不能为空")
String roles;
@ApiModelProperty(value = "备注", example = "请输入备注")
String introduction;
public static User transform(UserSaveParam param) {
User user = User
.builder()
.realName(param.getRealName())
.mobile(param.getMobile())
.username(param.getUsername())
.gender(param.getGender())
.department(Department.builder().id(param.getDeptId()).build())
.email(param.getEmail())
.password(param.getPassword())
.enabled(param.getEnabled())
.introduction(param.getIntroduction())
.build();
if (ObjectUtil.isNotEmpty(param.getPostId())) {
user.setPost(Post.builder().id(param.getPostId()).build());
}
if (ObjectUtil.isNotEmpty(param.getRoles())) {
String[] split = param.getRoles().split(",");
Long[] roles = Convert.toLongArray(split);
HashSet<Role> hashSet = new HashSet<>();
for (Long role : roles) {
hashSet.add(Role.builder().id(role).build());
}
user.setRoles(hashSet);
}
return user;
}
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.service.user;
import com.yiring.auth.param.user.UserFindParam;
import com.yiring.auth.param.user.UserSaveParam;
import com.yiring.auth.vo.user.UserVo;
import com.yiring.common.core.Result;
import com.yiring.common.param.PageParam;
import com.yiring.common.vo.PageVo;
/**
* 用户
*
* @author LJ-2204
* @date 2022/5/10
*/
public interface UserService {
/**
* 添加系统用户
* @param param UserSaveParam
* @return Result<String>
*/
Result<String> add(UserSaveParam param);
/**
* 分页查询
* @param param UserFindParam
* @param pageParam PageParam
* @return Result<PageVo<UserVo>>
*/
Result<PageVo<UserVo>> page(UserFindParam param, PageParam pageParam);
}
/* (C) 2022 YiRing, Inc. */
package com.yiring.auth.service.user.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository;
import com.yiring.auth.param.user.UserFindParam;
import com.yiring.auth.param.user.UserSaveParam;
import com.yiring.auth.service.user.UserService;
import com.yiring.auth.vo.user.UserVo;
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.CriteriaBuilder;
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/10
*/
@Transactional(rollbackFor = RuntimeException.class)
@Service
@Slf4j
public class UserServiceImpl implements UserService {
@Resource
UserRepository userRepository;
@Override
public Result<String> add(UserSaveParam param) {
userRepository.save(UserSaveParam.transform(param));
return Result.ok();
}
@Override
public Result<PageVo<UserVo>> page(UserFindParam param, PageParam pageParam) {
Specification<User> specification = (root, cq, cb) -> {
List<Predicate> predicates = ListUtil.toList();
predicates.add(cb.isNotNull(root.get(User.Fields.username)));
if (StrUtil.isNotEmpty(param.getRealName())) {
predicates.add(cb.like(root.get(User.Fields.realName), "%" + param.getRealName() + "%"));
}
if (ObjectUtil.isNotEmpty(param.getDeptId())) {
predicates.add(
cb.equal(root.get(User.Fields.department).get(BasicEntity.Fields.id), param.getDeptId())
);
}
if (ObjectUtil.isNotEmpty(param.getRoles())) {
CriteriaBuilder.In<Object> in = cb.in(root.get(User.Fields.post).get(BasicEntity.Fields.id));
String[] split = param.getRoles().split(",");
Long[] roles = Convert.toLongArray(split);
for (Long role : roles) in.value(role);
predicates.add(cb.and(in));
}
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<User> users = userRepository.findAll(specification, pageable);
List<UserVo> userVos = users.getContent().stream().map(UserVo::transform).collect(Collectors.toList());
PageVo<UserVo> pageVo = PageVo.build(userVos, users.getTotalElements());
return Result.ok(pageVo);
}
}
/* (C) 2022 YiRing, Inc. */ /* (C) 2022 YiRing, Inc. */
package com.yiring.auth.vo.user; package com.yiring.auth.vo.user;
import cn.hutool.core.util.ObjectUtil;
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.auth.domain.user.User;
import com.yiring.auth.vo.role.RoleVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Set;
import lombok.*; import lombok.*;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
...@@ -32,36 +36,45 @@ public class UserVo implements Serializable { ...@@ -32,36 +36,45 @@ public class UserVo implements Serializable {
@ApiModelProperty(value = "主键", example = "1") @ApiModelProperty(value = "主键", example = "1")
Long id; Long id;
@ApiModelProperty(value = "真实姓名", example = "超级用户") @ApiModelProperty(value = "姓名", example = "张三")
String realName; String realName;
@ApiModelProperty(value = "用户名", example = "admin") @ApiModelProperty(value = "工号", example = "1234566")
String username; String uuid;
@ApiModelProperty(value = "手机号", example = "13012345678") @ApiModelProperty(value = "部门ID", example = "100")
String mobile; Long deptId;
@ApiModelProperty(value = "邮箱", example = "developer@yiring.com")
String email;
@ApiModelProperty(value = "职称", example = "系统管理员")
String title;
@ApiModelProperty(value = "头像", example = "https://s1.ax1x.com/2022/03/30/qggJH0.jpg")
String avatar;
@ApiModelProperty(value = "是否启用", example = "true") @ApiModelProperty(value = "部门名称", example = "研发")
Boolean enabled; String deptName;
@ApiModelProperty(value = "是否删除", example = "false") @ApiModelProperty(value = "手机号", example = "13012345678")
Boolean deleted; String mobile;
@ApiModelProperty(value = "最后登录IP地址", example = "127.0.0.1") @ApiModelProperty(value = "角色", example = "系统管理员")
String lastLoginIp; Set<RoleVo> roles;
@ApiModelProperty(value = "最后登录时间", example = "2022-10-24 10:24:00") @ApiModelProperty(value = "最后登录时间", example = "2022-10-24 10:24:00")
LocalDateTime lastLoginTime; LocalDateTime lastLoginTime;
@ApiModelProperty(value = "最后登录时间", example = "2022-01-01 00:00:00") @ApiModelProperty(value = "状态", example = "true")
LocalDateTime createTime; Boolean enabled;
public static UserVo transform(User user) {
UserVo userVo = UserVo
.builder()
.id(user.getId())
.realName(user.getRealName())
.uuid(user.getUuid())
.mobile(user.getMobile())
.lastLoginTime(user.getLastLoginTime())
.enabled(user.getEnabled())
.deptName(user.getDepartment().getName())
.deptId(user.getDepartment().getId())
.build();
if (ObjectUtil.isNotEmpty(user.getRoles())) {}
return userVo;
}
} }
...@@ -7,6 +7,9 @@ import com.yiring.auth.domain.role.RoleRepository; ...@@ -7,6 +7,9 @@ import com.yiring.auth.domain.role.RoleRepository;
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.IdsParam; import com.yiring.auth.param.IdsParam;
import com.yiring.auth.param.user.UserFindParam;
import com.yiring.auth.param.user.UserSaveParam;
import com.yiring.auth.service.user.UserService;
import com.yiring.auth.util.Auths; import com.yiring.auth.util.Auths;
import com.yiring.auth.util.Permissions; import com.yiring.auth.util.Permissions;
import com.yiring.auth.vo.permission.MenuVo; import com.yiring.auth.vo.permission.MenuVo;
...@@ -27,8 +30,6 @@ import java.util.stream.Collectors; ...@@ -27,8 +30,6 @@ import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
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;
...@@ -59,6 +60,9 @@ public class UserController { ...@@ -59,6 +60,9 @@ public class UserController {
@Resource @Resource
RoleRepository roleRepository; RoleRepository roleRepository;
@Resource
UserService userService;
@ApiOperation(value = "获取登录用户信息") @ApiOperation(value = "获取登录用户信息")
@GetMapping("getUserInfo") @GetMapping("getUserInfo")
public Result<UserInfoVo> getUserInfo() { public Result<UserInfoVo> getUserInfo() {
...@@ -121,8 +125,9 @@ public class UserController { ...@@ -121,8 +125,9 @@ public class UserController {
@ApiOperation(value = "分页查询") @ApiOperation(value = "分页查询")
@GetMapping("/manage/page") @GetMapping("/manage/page")
public Result<PageVo<UserVo>> page(@Valid PageParam param) { public Result<PageVo<UserVo>> page(@Valid UserFindParam param, @Valid PageParam pageParam) {
Page<User> page = userRepository.findAll(PageParam.toPageable(param)); return userService.page(param, pageParam);
/* Page<User> page = userRepository.findAll(PageParam.toPageable(pageParam));
List<UserVo> data = page List<UserVo> data = page
.get() .get()
.map(role -> { .map(role -> {
...@@ -132,6 +137,12 @@ public class UserController { ...@@ -132,6 +137,12 @@ public class UserController {
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
PageVo<UserVo> vo = PageVo.build(data, page.getTotalElements()); PageVo<UserVo> vo = PageVo.build(data, page.getTotalElements());
return Result.ok(vo); return Result.ok(vo);*/
}
@ApiOperation("添加用户")
@PostMapping("add")
public Result<String> add(@Valid UserSaveParam param) {
return userService.add(param);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论